round 0
theta rho pi chi iota




round 0: before theta
A[0] = 0x0000000000000006
A[1] = 0x0000000000000000
A[2] = 0x0000000000000000
A[3] = 0x0000000000000000
A[4] = 0x0000000000000000
A[5] = 0x0000000000000000
A[6] = 0x0000000000000000
A[7] = 0x0000000000000000
A[8] = 0x8000000000000000
A[9] = 0x0000000000000000
A[10] = 0x0000000000000000
A[11] = 0x0000000000000000
A[12] = 0x0000000000000000
A[13] = 0x0000000000000000
A[14] = 0x0000000000000000
A[15] = 0x0000000000000000
A[16] = 0x0000000000000000
A[17] = 0x0000000000000000
A[18] = 0x0000000000000000
A[19] = 0x0000000000000000
A[20] = 0x0000000000000000
A[21] = 0x0000000000000000
A[22] = 0x0000000000000000
A[23] = 0x0000000000000000
A[24] = 0x0000000000000000



round 0: theta
C[0] = A[0] ^ A[5] ^ A[10] ^ A[15] ^ A[20]
= 0x0000000000000006 ^ 0x0000000000000000 ^ 0x0000000000000000 ^ 0x0000000000000000 ^ 0x0000000000000000
= 0x0000000000000006
C[1] = A[1] ^ A[6] ^ A[11] ^ A[16] ^ A[21]
= 0x0000000000000000 ^ 0x0000000000000000 ^ 0x0000000000000000 ^ 0x0000000000000000 ^ 0x0000000000000000
= 0x0000000000000000
C[2] = A[2] ^ A[7] ^ A[12] ^ A[17] ^ A[22]
= 0x0000000000000000 ^ 0x0000000000000000 ^ 0x0000000000000000 ^ 0x0000000000000000 ^ 0x0000000000000000
= 0x0000000000000000
C[3] = A[3] ^ A[8] ^ A[13] ^ A[18] ^ A[23]
= 0x0000000000000000 ^ 0x8000000000000000 ^ 0x0000000000000000 ^ 0x0000000000000000 ^ 0x0000000000000000
= 0x8000000000000000
C[4] = A[4] ^ A[9] ^ A[14] ^ A[19] ^ A[24]
= 0x0000000000000000 ^ 0x0000000000000000 ^ 0x0000000000000000 ^ 0x0000000000000000 ^ 0x0000000000000000
= 0x0000000000000000
D[0] = LeftRotation(C[1], 1) ^ C[4]
= LeftRotation(0x0000000000000000, 1) ^ 0x0000000000000000
= 0x0000000000000000 ^ 0x0000000000000000
= 0x0000000000000000
D[1] = LeftRotation(C[2], 1) ^ C[0]
= LeftRotation(0x0000000000000000, 1) ^ 0x0000000000000006
= 0x0000000000000000 ^ 0x0000000000000006
= 0x0000000000000006
D[2] = LeftRotation(C[3], 1) ^ C[1]
= LeftRotation(0x8000000000000000, 1) ^ 0x0000000000000000
= 0x0000000000000001 ^ 0x0000000000000000
= 0x0000000000000001
D[3] = LeftRotation(C[4], 1) ^ C[2]
= LeftRotation(0x0000000000000000, 1) ^ 0x0000000000000000
= 0x0000000000000000 ^ 0x0000000000000000
= 0x0000000000000000
D[4] = LeftRotation(C[0], 1) ^ C[3]
= LeftRotation(0x0000000000000006, 1) ^ 0x8000000000000000
= 0x000000000000000c ^ 0x8000000000000000
= 0x800000000000000c
A[0] = A[0] ^ D[0]
= 0x0000000000000006 ^ 0x0000000000000000
= 0x0000000000000006
A[5] = A[5] ^ D[0]
= 0x0000000000000000 ^ 0x0000000000000000
= 0x0000000000000000
A[10] = A[10] ^ D[0]
= 0x0000000000000000 ^ 0x0000000000000000
= 0x0000000000000000
A[15] = A[15] ^ D[0]
= 0x0000000000000000 ^ 0x0000000000000000
= 0x0000000000000000
A[20] = A[20] ^ D[0]
= 0x0000000000000000 ^ 0x0000000000000000
= 0x0000000000000000
A[1] = A[1] ^ D[1]
= 0x0000000000000000 ^ 0x0000000000000006
= 0x0000000000000006
A[6] = A[6] ^ D[1]
= 0x0000000000000000 ^ 0x0000000000000006
= 0x0000000000000006
A[11] = A[11] ^ D[1]
= 0x0000000000000000 ^ 0x0000000000000006
= 0x0000000000000006
A[16] = A[16] ^ D[1]
= 0x0000000000000000 ^ 0x0000000000000006
= 0x0000000000000006
A[21] = A[21] ^ D[1]
= 0x0000000000000000 ^ 0x0000000000000006
= 0x0000000000000006
A[2] = A[2] ^ D[2]
= 0x0000000000000000 ^ 0x0000000000000001
= 0x0000000000000001
A[7] = A[7] ^ D[2]
= 0x0000000000000000 ^ 0x0000000000000001
= 0x0000000000000001
A[12] = A[12] ^ D[2]
= 0x0000000000000000 ^ 0x0000000000000001
= 0x0000000000000001
A[17] = A[17] ^ D[2]
= 0x0000000000000000 ^ 0x0000000000000001
= 0x0000000000000001
A[22] = A[22] ^ D[2]
= 0x0000000000000000 ^ 0x0000000000000001
= 0x0000000000000001
A[3] = A[3] ^ D[3]
= 0x0000000000000000 ^ 0x0000000000000000
= 0x0000000000000000
A[8] = A[8] ^ D[3]
= 0x8000000000000000 ^ 0x0000000000000000
= 0x8000000000000000
A[13] = A[13] ^ D[3]
= 0x0000000000000000 ^ 0x0000000000000000
= 0x0000000000000000
A[18] = A[18] ^ D[3]
= 0x0000000000000000 ^ 0x0000000000000000
= 0x0000000000000000
A[23] = A[23] ^ D[3]
= 0x0000000000000000 ^ 0x0000000000000000
= 0x0000000000000000
A[4] = A[4] ^ D[4]
= 0x0000000000000000 ^ 0x800000000000000c
= 0x800000000000000c
A[9] = A[9] ^ D[4]
= 0x0000000000000000 ^ 0x800000000000000c
= 0x800000000000000c
A[14] = A[14] ^ D[4]
= 0x0000000000000000 ^ 0x800000000000000c
= 0x800000000000000c
A[19] = A[19] ^ D[4]
= 0x0000000000000000 ^ 0x800000000000000c
= 0x800000000000000c
A[24] = A[24] ^ D[4]
= 0x0000000000000000 ^ 0x800000000000000c
= 0x800000000000000c



round 0: after theta
A[0] = 0x0000000000000006
A[1] = 0x0000000000000006
A[2] = 0x0000000000000001
A[3] = 0x0000000000000000
A[4] = 0x800000000000000c
A[5] = 0x0000000000000000
A[6] = 0x0000000000000006
A[7] = 0x0000000000000001
A[8] = 0x8000000000000000
A[9] = 0x800000000000000c
A[10] = 0x0000000000000000
A[11] = 0x0000000000000006
A[12] = 0x0000000000000001
A[13] = 0x0000000000000000
A[14] = 0x800000000000000c
A[15] = 0x0000000000000000
A[16] = 0x0000000000000006
A[17] = 0x0000000000000001
A[18] = 0x0000000000000000
A[19] = 0x800000000000000c
A[20] = 0x0000000000000000
A[21] = 0x0000000000000006
A[22] = 0x0000000000000001
A[23] = 0x0000000000000000
A[24] = 0x800000000000000c



round 0: rho
A[0] = LeftRotation(A[0] , 0)
= LeftRotation(0x0000000000000006, 0)
= 0x0000000000000006
A[1] = LeftRotation(A[1] , 1)
= LeftRotation(0x0000000000000006, 1)
= 0x000000000000000c
A[2] = LeftRotation(A[2] , 62)
= LeftRotation(0x0000000000000001, 62)
= 0x4000000000000000
A[3] = LeftRotation(A[3] , 28)
= LeftRotation(0x0000000000000000, 28)
= 0x0000000000000000
A[4] = LeftRotation(A[4] , 27)
= LeftRotation(0x800000000000000c, 27)
= 0x0000000064000000
A[5] = LeftRotation(A[5] , 36)
= LeftRotation(0x0000000000000000, 36)
= 0x0000000000000000
A[6] = LeftRotation(A[6] , 44)
= LeftRotation(0x0000000000000006, 44)
= 0x0000600000000000
A[7] = LeftRotation(A[7] , 6)
= LeftRotation(0x0000000000000001, 6)
= 0x0000000000000040
A[8] = LeftRotation(A[8] , 55)
= LeftRotation(0x8000000000000000, 55)
= 0x0040000000000000
A[9] = LeftRotation(A[9] , 20)
= LeftRotation(0x800000000000000c, 20)
= 0x0000000000c80000
A[10] = LeftRotation(A[10] , 3)
= LeftRotation(0x0000000000000000, 3)
= 0x0000000000000000
A[11] = LeftRotation(A[11] , 10)
= LeftRotation(0x0000000000000006, 10)
= 0x0000000000001800
A[12] = LeftRotation(A[12] , 43)
= LeftRotation(0x0000000000000001, 43)
= 0x0000080000000000
A[13] = LeftRotation(A[13] , 25)
= LeftRotation(0x0000000000000000, 25)
= 0x0000000000000000
A[14] = LeftRotation(A[14] , 39)
= LeftRotation(0x800000000000000c, 39)
= 0x0000064000000000
A[15] = LeftRotation(A[15] , 41)
= LeftRotation(0x0000000000000000, 41)
= 0x0000000000000000
A[16] = LeftRotation(A[16] , 45)
= LeftRotation(0x0000000000000006, 45)
= 0x0000c00000000000
A[17] = LeftRotation(A[17] , 15)
= LeftRotation(0x0000000000000001, 15)
= 0x0000000000008000
A[18] = LeftRotation(A[18] , 21)
= LeftRotation(0x0000000000000000, 21)
= 0x0000000000000000
A[19] = LeftRotation(A[19] , 8)
= LeftRotation(0x800000000000000c, 8)
= 0x0000000000000c80
A[20] = LeftRotation(A[20] , 18)
= LeftRotation(0x0000000000000000, 18)
= 0x0000000000000000
A[21] = LeftRotation(A[21] , 2)
= LeftRotation(0x0000000000000006, 2)
= 0x0000000000000018
A[22] = LeftRotation(A[22] , 61)
= LeftRotation(0x0000000000000001, 61)
= 0x2000000000000000
A[23] = LeftRotation(A[23] , 56)
= LeftRotation(0x0000000000000000, 56)
= 0x0000000000000000



round 0: after rho
A[0] = 0x0000000000000006
A[1] = 0x000000000000000c
A[2] = 0x4000000000000000
A[3] = 0x0000000000000000
A[4] = 0x0000000064000000
A[5] = 0x0000000000000000
A[6] = 0x0000600000000000
A[7] = 0x0000000000000040
A[8] = 0x0040000000000000
A[9] = 0x0000000000c80000
A[10] = 0x0000000000000000
A[11] = 0x0000000000001800
A[12] = 0x0000080000000000
A[13] = 0x0000000000000000
A[14] = 0x0000064000000000
A[15] = 0x0000000000000000
A[16] = 0x0000c00000000000
A[17] = 0x0000000000008000
A[18] = 0x0000000000000000
A[19] = 0x0000000000000c80
A[20] = 0x0000000000000000
A[21] = 0x0000000000000018
A[22] = 0x2000000000000000
A[23] = 0x0000000000000000
A[24] = 0x0000000000032000



round 0: pi
A1temp = A[1]
= 0x000000000000000c
A[1] = A[6]
= 0x0000600000000000
A[6] = A[9]
= 0x0000000000c80000
A[9] = A[22]
= 0x2000000000000000
A[22] = A[14]
= 0x0000064000000000
A[14] = A[20]
= 0x0000000000000000
A[20] = A[2]
= 0x4000000000000000
A[2] = A[12]
= 0x0000080000000000
A[12] = A[13]
= 0x0000000000000000
A[13] = A[19]
= 0x0000000000000c80
A[19] = A[23]
= 0x0000000000000000
A[23] = A[15]
= 0x0000000000000000
A[15] = A[4]
= 0x0000000064000000
A[4] = A[24]
= 0x0000000000032000
A[24] = A[21]
= 0x0000000000000018
A[21] = A[8]
= 0x0040000000000000
A[8] = A[16]
= 0x0000c00000000000
A[16] = A[5]
= 0x0000000000000000
A[5] = A[3]
= 0x0000000000000000
A[3] = A[18]
= 0x0000000000000000
A[18] = A[17]
= 0x0000000000008000
A[17] = A[11]
= 0x0000000000001800
A[11] = A[7]
= 0x0000000000000040
A[7] = A[10]
= 0x0000000000000000
A[10] = A1temp
= 0x000000000000000c



round 0: after pi
A[0] = 0x0000000000000006
A[1] = 0x0000600000000000
A[2] = 0x0000080000000000
A[3] = 0x0000000000000000
A[4] = 0x0000000000032000
A[5] = 0x0000000000000000
A[6] = 0x0000000000c80000
A[7] = 0x0000000000000000
A[8] = 0x0000c00000000000
A[9] = 0x2000000000000000
A[10] = 0x000000000000000c
A[11] = 0x0000000000000040
A[12] = 0x0000000000000000
A[13] = 0x0000000000000c80
A[14] = 0x0000000000000000
A[15] = 0x0000000064000000
A[16] = 0x0000000000000000
A[17] = 0x0000000000001800
A[18] = 0x0000000000008000
A[19] = 0x0000000000000000
A[20] = 0x4000000000000000
A[21] = 0x0040000000000000
A[22] = 0x0000064000000000
A[23] = 0x0000000000000000
A[24] = 0x0000000000000018



round 0: chi
A0temp = A[0]
= 0x0000000000000006
A1temp = A[1]
= 0x0000600000000000
A[0] = A[0] ^ (~A1temp & A[2])
= 0x0000000000000006 ^ (~0x0000600000000000 & 0x0000080000000000)
= 0x0000000000000006 ^ (0xffff9fffffffffff & 0x0000080000000000)
= 0x0000000000000006 ^ 0x0000080000000000
= 0x0000080000000006
A[1] = A[1] ^ (~A[2] & A[3])
= 0x0000600000000000 ^ (~0x0000080000000000 & 0x0000000000000000)
= 0x0000600000000000 ^ (0xfffff7ffffffffff & 0x0000000000000000)
= 0x0000600000000000 ^ 0x0000000000000000
= 0x0000600000000000
A[2] = A[2] ^ (~A[3] & A[4])
= 0x0000080000000000 ^ (~0x0000000000000000 & 0x0000000000032000)
= 0x0000080000000000 ^ (0xffffffffffffffff & 0x0000000000032000)
= 0x0000080000000000 ^ 0x0000000000032000
= 0x0000000000000000
A[3] = A[3] ^ (~A[4] & A0temp)
= 0x0000000000000000 ^ (~0x0000000000032000 & 0x0000000000000006)
= 0x0000000000000000 ^ (0xfffffffffffcdfff & 0x0000000000000006)
= 0x0000000000000000 ^ 0x0000000000000006
= 0x0000080000000000
A[4] = A[4] ^ (~A0temp & A1temp)
= 0x0000000000032000 ^ (~0x0000000000000006 & 0x0000600000000000)
= 0x0000000000032000 ^ (0xfffffffffffffff9 & 0x0000600000000000)
= 0x0000000000032000 ^ 0x0000600000000000
= 0x0000080000032000
A5temp = A[5]
= 0x0000000000000000
A6temp = A[6]
= 0x0000000000c80000
A[5] = A[5] ^ (~A6temp & A[7])
= 0x0000000000000000 ^ (~0x0000000000c80000 & 0x0000000000000000)
= 0x0000000000000000 ^ (0xffffffffff37ffff & 0x0000000000000000)
= 0x0000000000000000 ^ 0x0000000000000000
= 0x0000000000000000
A[6] = A[6] ^ (~A[7] & A[8])
= 0x0000000000c80000 ^ (~0x0000000000000000 & 0x0000c00000000000)
= 0x0000000000c80000 ^ (0xffffffffffffffff & 0x0000c00000000000)
= 0x0000000000c80000 ^ 0x0000c00000000000
= 0x0000000000c80000
A[7] = A[7] ^ (~A[8] & A[9])
= 0x0000000000000000 ^ (~0x0000c00000000000 & 0x2000000000000000)
= 0x0000000000000000 ^ (0xffff3fffffffffff & 0x2000000000000000)
= 0x0000000000000000 ^ 0x2000000000000000
= 0x0000000000000000
A[8] = A[8] ^ (~A[9] & A5temp)
= 0x0000c00000000000 ^ (~0x2000000000000000 & 0x0000000000000000)
= 0x0000c00000000000 ^ (0xdfffffffffffffff & 0x0000000000000000)
= 0x0000c00000000000 ^ 0x0000000000000000
= 0x0000c00000000000
A[9] = A[9] ^ (~A5temp & A6temp)
= 0x2000000000000000 ^ (~0x0000000000000000 & 0x0000000000c80000)
= 0x2000000000000000 ^ (0xffffffffffffffff & 0x0000000000c80000)
= 0x2000000000000000 ^ 0x0000000000c80000
= 0x2000000000000000
A10temp = A[10]
= 0x000000000000000c
A11temp = A[11]
= 0x0000000000000040
A[10] = A[10] ^ (~A11temp & A[12])
= 0x000000000000000c ^ (~0x0000000000000040 & 0x0000000000000000)
= 0x000000000000000c ^ (0xffffffffffffffbf & 0x0000000000000000)
= 0x000000000000000c ^ 0x0000000000000000
= 0x000000000000000c
A[11] = A[11] ^ (~A[12] & A[13])
= 0x0000000000000040 ^ (~0x0000000000000000 & 0x0000000000000c80)
= 0x0000000000000040 ^ (0xffffffffffffffff & 0x0000000000000c80)
= 0x0000000000000040 ^ 0x0000000000000c80
= 0x0000000000000040
A[12] = A[12] ^ (~A[13] & A[14])
= 0x0000000000000000 ^ (~0x0000000000000c80 & 0x0000000000000000)
= 0x0000000000000000 ^ (0xfffffffffffff37f & 0x0000000000000000)
= 0x0000000000000000 ^ 0x0000000000000000
= 0x0000000000000000
A[13] = A[13] ^ (~A[14] & A10temp)
= 0x0000000000000c80 ^ (~0x0000000000000000 & 0x000000000000000c)
= 0x0000000000000c80 ^ (0xffffffffffffffff & 0x000000000000000c)
= 0x0000000000000c80 ^ 0x000000000000000c
= 0x0000000000000c80
A[14] = A[14] ^ (~A10temp & A11temp)
= 0x0000000000000000 ^ (~0x000000000000000c & 0x0000000000000040)
= 0x0000000000000000 ^ (0xfffffffffffffff3 & 0x0000000000000040)
= 0x0000000000000000 ^ 0x0000000000000040
= 0x0000000000000000
A15temp = A[15]
= 0x0000000064000000
A16temp = A[16]
= 0x0000000000000000
A[15] = A[15] ^ (~A16temp & A[17])
= 0x0000000064000000 ^ (~0x0000000000000000 & 0x0000000000001800)
= 0x0000000064000000 ^ (0xffffffffffffffff & 0x0000000000001800)
= 0x0000000064000000 ^ 0x0000000000001800
= 0x0000000064001800
A[16] = A[16] ^ (~A[17] & A[18])
= 0x0000000000000000 ^ (~0x0000000000001800 & 0x0000000000008000)
= 0x0000000000000000 ^ (0xffffffffffffe7ff & 0x0000000000008000)
= 0x0000000000000000 ^ 0x0000000000008000
= 0x0000000000000000
A[17] = A[17] ^ (~A[18] & A[19])
= 0x0000000000001800 ^ (~0x0000000000008000 & 0x0000000000000000)
= 0x0000000000001800 ^ (0xffffffffffff7fff & 0x0000000000000000)
= 0x0000000000001800 ^ 0x0000000000000000
= 0x0000000000000000
A[18] = A[18] ^ (~A[19] & A15temp)
= 0x0000000000008000 ^ (~0x0000000000000000 & 0x0000000064000000)
= 0x0000000000008000 ^ (0xffffffffffffffff & 0x0000000064000000)
= 0x0000000000008000 ^ 0x0000000064000000
= 0x0000000000009800
A[19] = A[19] ^ (~A15temp & A16temp)
= 0x0000000000000000 ^ (~0x0000000064000000 & 0x0000000000000000)
= 0x0000000000000000 ^ (0xffffffff9bffffff & 0x0000000000000000)
= 0x0000000000000000 ^ 0x0000000000000000
= 0x0000000000001800
A20temp = A[20]
= 0x4000000000000000
A21temp = A[21]
= 0x0040000000000000
A[20] = A[20] ^ (~A21temp & A[22])
= 0x4000000000000000 ^ (~0x0040000000000000 & 0x0000064000000000)
= 0x4000000000000000 ^ (0xffbfffffffffffff & 0x0000064000000000)
= 0x4000000000000000 ^ 0x0000064000000000
= 0x4000064000000000
A[21] = A[21] ^ (~A[22] & A[23])
= 0x0040000000000000 ^ (~0x0000064000000000 & 0x0000000000000000)
= 0x0040000000000000 ^ (0xfffff9bfffffffff & 0x0000000000000000)
= 0x0040000000000000 ^ 0x0000000000000000
= 0x0040000000000000
A[22] = A[22] ^ (~A[23] & A[24])
= 0x0000064000000000 ^ (~0x0000000000000000 & 0x0000000000000018)
= 0x0000064000000000 ^ (0xffffffffffffffff & 0x0000000000000018)
= 0x0000064000000000 ^ 0x0000000000000018
= 0x0000000000000000
A[23] = A[23] ^ (~A[24] & A20temp)
= 0x0000000000000000 ^ (~0x0000000000000018 & 0x4000000000000000)
= 0x0000000000000000 ^ (0xffffffffffffffe7 & 0x4000000000000000)
= 0x0000000000000000 ^ 0x4000000000000000
= 0x0000064000000000
A[24] = A[24] ^ (~A20temp & A21temp)
= 0x0000000000000018 ^ (~0x4000000000000000 & 0x0040000000000000)
= 0x0000000000000018 ^ (0xbfffffffffffffff & 0x0040000000000000)
= 0x0000000000000018 ^ 0x0040000000000000
= 0x0000064000000018



round 0: after chi
A[0] = 0x0000080000000006
A[1] = 0x0000600000000000
A[2] = 0x0000080000032000
A[3] = 0x0000000000000006
A[4] = 0x0000600000032000
A[5] = 0x0000000000000000
A[6] = 0x0000c00000c80000
A[7] = 0x2000000000000000
A[8] = 0x0000c00000000000
A[9] = 0x2000000000c80000
A[10] = 0x000000000000000c
A[11] = 0x0000000000000cc0
A[12] = 0x0000000000000000
A[13] = 0x0000000000000c8c
A[14] = 0x0000000000000040
A[15] = 0x0000000064001800
A[16] = 0x0000000000008000
A[17] = 0x0000000000001800
A[18] = 0x0000000064008000
A[19] = 0x0000000000000000
A[20] = 0x4000064000000000
A[21] = 0x0040000000000000
A[22] = 0x0000064000000018
A[23] = 0x4000000000000000
A[24] = 0x0040000000000018



round 0: iota
A[0] = A[0] ^ rc[0]
= 0x0000080000000006 ^ 0x0000000000000001
= 0x0000080000000007



round 0: after iota
A[0] = 0x0000080000000007
A[1] = 0x0000600000000000
A[2] = 0x0000080000032000
A[3] = 0x0000000000000006
A[4] = 0x0000600000032000
A[5] = 0x0000000000000000
A[6] = 0x0000c00000c80000
A[7] = 0x2000000000000000
A[8] = 0x0000c00000000000
A[9] = 0x2000000000c80000
A[10] = 0x000000000000000c
A[11] = 0x0000000000000cc0
A[12] = 0x0000000000000000
A[13] = 0x0000000000000c8c
A[14] = 0x0000000000000040
A[15] = 0x0000000064001800
A[16] = 0x0000000000008000
A[17] = 0x0000000000001800
A[18] = 0x0000000064008000
A[19] = 0x0000000000000000
A[20] = 0x4000064000000000
A[21] = 0x0040000000000000
A[22] = 0x0000064000000018
A[23] = 0x4000000000000000
A[24] = 0x0040000000000018