25 for (
int round = 24 - R; round < 24; round++)
28 C[0] = A[0 * 5 + 0] ^ A[1 * 5 + 0] ^ A[2 * 5 + 0] ^ A[3 * 5 + 0] ^ A[4 * 5 + 0];
29 C[1] = A[0 * 5 + 1] ^ A[1 * 5 + 1] ^ A[2 * 5 + 1] ^ A[3 * 5 + 1] ^ A[4 * 5 + 1];
30 C[2] = A[0 * 5 + 2] ^ A[1 * 5 + 2] ^ A[2 * 5 + 2] ^ A[3 * 5 + 2] ^ A[4 * 5 + 2];
31 C[3] = A[0 * 5 + 3] ^ A[1 * 5 + 3] ^ A[2 * 5 + 3] ^ A[3 * 5 + 3] ^ A[4 * 5 + 3];
32 C[4] = A[0 * 5 + 4] ^ A[1 * 5 + 4] ^ A[2 * 5 + 4] ^ A[3 * 5 + 4] ^ A[4 * 5 + 4];
40 uint64_t B00 = A[0 * 5 + 0] ^ D[0];
42 uint64_t B20 =
rotate_left(A[0 * 5 + 2] ^ D[2], 62);
44 uint64_t B15 =
rotate_left(A[0 * 5 + 4] ^ D[4], 27);
46 uint64_t B16 =
rotate_left(A[1 * 5 + 0] ^ D[0], 36);
49 uint64_t B21 =
rotate_left(A[1 * 5 + 3] ^ D[3], 55);
53 uint64_t B17 =
rotate_left(A[2 * 5 + 1] ^ D[1], 10);
55 uint64_t B12 =
rotate_left(A[2 * 5 + 3] ^ D[3], 25);
56 uint64_t B22 =
rotate_left(A[2 * 5 + 4] ^ D[4], 39);
58 uint64_t B23 =
rotate_left(A[3 * 5 + 0] ^ D[0], 41);
60 uint64_t B18 =
rotate_left(A[3 * 5 + 2] ^ D[2], 15);
64 uint64_t B14 =
rotate_left(A[4 * 5 + 0] ^ D[0], 18);
67 uint64_t B19 =
rotate_left(A[4 * 5 + 3] ^ D[3], 56);
70 A[0 * 5 + 0] = B00 ^ ((~B1) & B2);
71 A[0 * 5 + 1] = B1 ^ ((~B2) & B3);
72 A[0 * 5 + 2] = B2 ^ ((~B3) & B4);
73 A[0 * 5 + 3] = B3 ^ ((~B4) & B00);
74 A[0 * 5 + 4] = B4 ^ ((~B00) & B1);
76 A[1 * 5 + 0] = B5 ^ ((~B6) & B7);
77 A[1 * 5 + 1] = B6 ^ ((~B7) & B8);
78 A[1 * 5 + 2] = B7 ^ ((~B8) & B9);
79 A[1 * 5 + 3] = B8 ^ ((~B9) & B5);
80 A[1 * 5 + 4] = B9 ^ ((~B5) & B6);
82 A[2 * 5 + 0] = B10 ^ ((~B11) & B12);
83 A[2 * 5 + 1] = B11 ^ ((~B12) & B13);
84 A[2 * 5 + 2] = B12 ^ ((~B13) & B14);
85 A[2 * 5 + 3] = B13 ^ ((~B14) & B10);
86 A[2 * 5 + 4] = B14 ^ ((~B10) & B11);
88 A[3 * 5 + 0] = B15 ^ ((~B16) & B17);
89 A[3 * 5 + 1] = B16 ^ ((~B17) & B18);
90 A[3 * 5 + 2] = B17 ^ ((~B18) & B19);
91 A[3 * 5 + 3] = B18 ^ ((~B19) & B15);
92 A[3 * 5 + 4] = B19 ^ ((~B15) & B16);
94 A[4 * 5 + 0] = B20 ^ ((~B21) & B22);
95 A[4 * 5 + 1] = B21 ^ ((~B22) & B23);
96 A[4 * 5 + 2] = B22 ^ ((~B23) & B24);
97 A[4 * 5 + 3] = B23 ^ ((~B24) & B20);
98 A[4 * 5 + 4] = B24 ^ ((~B20) & B21);