Crypto++ 8.4 Free C++ class library of cryptographic schemes

keccak_simd.cpp
1 // keccak_simd.cpp - written and placed in the public domain by Jeffrey Walton.
2 //
3 // This source file uses intrinsics to gain access to SSE and
4 // NEON instructions. A separate source file is needed because
5 // additional CXXFLAGS are required to enable the appropriate
6 // instructions sets in some build configurations.
7
8 // The XKCP package is provided by Guido Bertoni, Joan Daemen, Seth Hoffert,
9 // Michael Peeters, Gilles Van Assche, and Ronny Van Keer. The code was
10 // placed public domain by the authors.
11
12 // KeccakF1600x2_SSE is ParallelHash128. The SSE2 ParallelHash128
13 // implementation was extracted from XKCP using the following command.
14 //
15 // gcc -I lib/common -I lib/low/KeccakP-1600/Optimized
16 // -I lib/low/KeccakP-1600-times2/SIMD128/SSE2ufull
17 // lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SIMD128.c -E
18
19 #include "pch.h"
20 #include "config.h"
21 #include "keccak.h"
22 #include "misc.h"
23
24 #if (CRYPTOPP_SSSE3_AVAILABLE)
25 # include <emmintrin.h>
26 # include <tmmintrin.h>
27 #endif
28
29 #if defined(__XOP__)
30 # include <ammintrin.h>
31 # if defined(__GNUC__)
32 # include <x86intrin.h>
33 # endif
34 #endif
35
36 // Squash MS LNK4221 and libtool warnings
37 extern const char KECCAK_SIMD_FNAME[] = __FILE__;
38
39 NAMESPACE_BEGIN(CryptoPP)
40
41 #if (CRYPTOPP_SSSE3_AVAILABLE)
42
43 // The Keccak ParallelHash128 core function
44 extern void KeccakF1600x2_SSE(word64 *state);
45
46 // The F1600 round constants
47 extern const word64 KeccakF1600Constants[24];
48
49 CRYPTOPP_ALIGN_DATA(16)
50 const word64
51 rho8[2] = {W64LIT(0x0605040302010007), W64LIT(0x0E0D0C0B0A09080F)};
52
53 CRYPTOPP_ALIGN_DATA(16)
54 const word64
55 rho56[2] = {W64LIT(0x0007060504030201), W64LIT(0x080F0E0D0C0B0A09)};
56
57 // Clang intrinsic casts, http://bugs.llvm.org/show_bug.cgi?id=20670
58 #define M128_CAST(x) ((__m128i *)(void *)(x))
59 #define CONST_M128_CAST(x) ((const __m128i *)(const void *)(x))
60
61 #if defined(__XOP__)
62 # define ROL64in128(a, o) _mm_roti_epi64((a), (o))
63 # define ROL64in128_8(a) ROL64in128((a), 8)
64 # define ROL64in128_56(a) ROL64in128((a), 56)
65 #else
66 # define ROL64in128(a, o) _mm_or_si128(_mm_slli_epi64((a), (o)), _mm_srli_epi64(a, 64-(o)))
67 # define ROL64in128_8(a) _mm_shuffle_epi8((a), _mm_load_si128(CONST_M128_CAST(rho8)))
68 # define ROL64in128_56(a) _mm_shuffle_epi8((a), _mm_load_si128(CONST_M128_CAST(rho56)))
69 #endif
70
71 // Damn Visual Studio is missing too many intrinsics...
72 inline __m128i SPLAT64(const word64 a)
73 {
74 #if defined(_MSC_VER)
75 double x; std::memcpy(&x, &a, 8);
76 return _mm_castpd_si128(_mm_loaddup_pd(&x));
77 #else
78 return _mm_set1_epi64x(a);
79 #endif
80 }
81
82 // The Keccak ParallelHash128 core function
83 void KeccakF1600x2_SSE(word64 *state)
84 {
85 __m128i Aba, Abe, Abi, Abo, Abu;
86 __m128i Aga, Age, Agi, Ago, Agu;
87 __m128i Aka, Ake, Aki, Ako, Aku;
88 __m128i Ama, Ame, Ami, Amo, Amu;
89 __m128i Asa, Ase, Asi, Aso, Asu;
90 __m128i Bba, Bbe, Bbi, Bbo, Bbu;
91 __m128i Bga, Bge, Bgi, Bgo, Bgu;
92 __m128i Bka, Bke, Bki, Bko, Bku;
93 __m128i Bma, Bme, Bmi, Bmo, Bmu;
94 __m128i Bsa, Bse, Bsi, Bso, Bsu;
95 __m128i Ca, Ce, Ci, Co, Cu;
96 __m128i Da, De, Di, Do, Du;
97 __m128i Eba, Ebe, Ebi, Ebo, Ebu;
98 __m128i Ega, Ege, Egi, Ego, Egu;
99 __m128i Eka, Eke, Eki, Eko, Eku;
100 __m128i Ema, Eme, Emi, Emo, Emu;
101 __m128i Esa, Ese, Esi, Eso, Esu;
102
103 __m128i* lanes = reinterpret_cast<__m128i*>(state);
104 Aba = _mm_loadu_si128(CONST_M128_CAST(lanes+ 0));
105 Abe = _mm_loadu_si128(CONST_M128_CAST(lanes+ 1));
106 Abi = _mm_loadu_si128(CONST_M128_CAST(lanes+ 2));
107 Abo = _mm_loadu_si128(CONST_M128_CAST(lanes+ 3));
108 Abu = _mm_loadu_si128(CONST_M128_CAST(lanes+ 4));
109 Aga = _mm_loadu_si128(CONST_M128_CAST(lanes+ 5));
110 Age = _mm_loadu_si128(CONST_M128_CAST(lanes+ 6));
111 Agi = _mm_loadu_si128(CONST_M128_CAST(lanes+ 7));
112 Ago = _mm_loadu_si128(CONST_M128_CAST(lanes+ 8));
113 Agu = _mm_loadu_si128(CONST_M128_CAST(lanes+ 9));
114 Aka = _mm_loadu_si128(CONST_M128_CAST(lanes+10));
115 Ake = _mm_loadu_si128(CONST_M128_CAST(lanes+11));
116 Aki = _mm_loadu_si128(CONST_M128_CAST(lanes+12));
117 Ako = _mm_loadu_si128(CONST_M128_CAST(lanes+13));
118 Aku = _mm_loadu_si128(CONST_M128_CAST(lanes+14));
119 Ama = _mm_loadu_si128(CONST_M128_CAST(lanes+15));
120 Ame = _mm_loadu_si128(CONST_M128_CAST(lanes+16));
121 Ami = _mm_loadu_si128(CONST_M128_CAST(lanes+17));
122 Amo = _mm_loadu_si128(CONST_M128_CAST(lanes+18));
123 Amu = _mm_loadu_si128(CONST_M128_CAST(lanes+19));
124 Asa = _mm_loadu_si128(CONST_M128_CAST(lanes+20));
125 Ase = _mm_loadu_si128(CONST_M128_CAST(lanes+21));
126 Asi = _mm_loadu_si128(CONST_M128_CAST(lanes+22));
127 Aso = _mm_loadu_si128(CONST_M128_CAST(lanes+23));
128 Asu = _mm_loadu_si128(CONST_M128_CAST(lanes+24));
129
130 Ca = _mm_xor_si128(Aba, _mm_xor_si128(Aga, _mm_xor_si128(Aka, _mm_xor_si128(Ama, Asa))));
131 Ce = _mm_xor_si128(Abe, _mm_xor_si128(Age, _mm_xor_si128(Ake, _mm_xor_si128(Ame, Ase))));
132 Ci = _mm_xor_si128(Abi, _mm_xor_si128(Agi, _mm_xor_si128(Aki, _mm_xor_si128(Ami, Asi))));
133 Co = _mm_xor_si128(Abo, _mm_xor_si128(Ago, _mm_xor_si128(Ako, _mm_xor_si128(Amo, Aso))));
134 Cu = _mm_xor_si128(Abu, _mm_xor_si128(Agu, _mm_xor_si128(Aku, _mm_xor_si128(Amu, Asu))));
135 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
136 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
137 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
138 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
139 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
140
141 Aba = _mm_xor_si128(Aba, Da);
142 Bba = Aba;
143 Age = _mm_xor_si128(Age, De);
144 Bbe = ROL64in128(Age, 44);
145 Aki = _mm_xor_si128(Aki, Di);
146 Bbi = ROL64in128(Aki, 43);
147 Eba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
148 Eba = _mm_xor_si128(Eba, SPLAT64(KeccakF1600Constants[0]));
149 Ca = Eba;
150 Amo = _mm_xor_si128(Amo, Do);
151 Bbo = ROL64in128(Amo, 21);
152 Ebe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
153 Ce = Ebe;
154 Asu = _mm_xor_si128(Asu, Du);
155 Bbu = ROL64in128(Asu, 14);
156 Ebi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
157 Ci = Ebi;
158 Ebo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
159 Co = Ebo;
160 Ebu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
161 Cu = Ebu;
162 Abo = _mm_xor_si128(Abo, Do);
163 Bga = ROL64in128(Abo, 28);
164 Agu = _mm_xor_si128(Agu, Du);
165 Bge = ROL64in128(Agu, 20);
166 Aka = _mm_xor_si128(Aka, Da);
167 Bgi = ROL64in128(Aka, 3);
168 Ega = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
169 Ca = _mm_xor_si128(Ca, Ega);
170 Ame = _mm_xor_si128(Ame, De);
171 Bgo = ROL64in128(Ame, 45);
172 Ege = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
173 Ce = _mm_xor_si128(Ce, Ege);
174 Asi = _mm_xor_si128(Asi, Di);
175 Bgu = ROL64in128(Asi, 61);
176 Egi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
177 Ci = _mm_xor_si128(Ci, Egi);
178 Ego = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
179 Co = _mm_xor_si128(Co, Ego);
180 Egu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
181 Cu = _mm_xor_si128(Cu, Egu);
182 Abe = _mm_xor_si128(Abe, De);
183 Bka = ROL64in128(Abe, 1);
184 Agi = _mm_xor_si128(Agi, Di);
185 Bke = ROL64in128(Agi, 6);
186 Ako = _mm_xor_si128(Ako, Do);
187 Bki = ROL64in128(Ako, 25);
188 Eka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
189 Ca = _mm_xor_si128(Ca, Eka);
190 Amu = _mm_xor_si128(Amu, Du);
191 Bko = ROL64in128_8(Amu);
192 Eke = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
193 Ce = _mm_xor_si128(Ce, Eke);
194 Asa = _mm_xor_si128(Asa, Da);
195 Bku = ROL64in128(Asa, 18);
196 Eki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
197 Ci = _mm_xor_si128(Ci, Eki);
198 Eko = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
199 Co = _mm_xor_si128(Co, Eko);
200 Eku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
201 Cu = _mm_xor_si128(Cu, Eku);
202 Abu = _mm_xor_si128(Abu, Du);
203 Bma = ROL64in128(Abu, 27);
204 Aga = _mm_xor_si128(Aga, Da);
205 Bme = ROL64in128(Aga, 36);
206 Ake = _mm_xor_si128(Ake, De);
207 Bmi = ROL64in128(Ake, 10);
208 Ema = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
209 Ca = _mm_xor_si128(Ca, Ema);
210 Ami = _mm_xor_si128(Ami, Di);
211 Bmo = ROL64in128(Ami, 15);
212 Eme = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
213 Ce = _mm_xor_si128(Ce, Eme);
214 Aso = _mm_xor_si128(Aso, Do);
215 Bmu = ROL64in128_56(Aso);
216 Emi = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
217 Ci = _mm_xor_si128(Ci, Emi);
218 Emo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
219 Co = _mm_xor_si128(Co, Emo);
220 Emu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
221 Cu = _mm_xor_si128(Cu, Emu);
222 Abi = _mm_xor_si128(Abi, Di);
223 Bsa = ROL64in128(Abi, 62);
224 Ago = _mm_xor_si128(Ago, Do);
225 Bse = ROL64in128(Ago, 55);
226 Aku = _mm_xor_si128(Aku, Du);
227 Bsi = ROL64in128(Aku, 39);
228 Esa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
229 Ca = _mm_xor_si128(Ca, Esa);
230 Ama = _mm_xor_si128(Ama, Da);
231 Bso = ROL64in128(Ama, 41);
232 Ese = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
233 Ce = _mm_xor_si128(Ce, Ese);
234 Ase = _mm_xor_si128(Ase, De);
235 Bsu = ROL64in128(Ase, 2);
236 Esi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
237 Ci = _mm_xor_si128(Ci, Esi);
238 Eso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
239 Co = _mm_xor_si128(Co, Eso);
240 Esu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
241 Cu = _mm_xor_si128(Cu, Esu);
242 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
243 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
244 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
245 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
246 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
247 Eba = _mm_xor_si128(Eba, Da);
248 Bba = Eba;
249 Ege = _mm_xor_si128(Ege, De);
250 Bbe = ROL64in128(Ege, 44);
251 Eki = _mm_xor_si128(Eki, Di);
252 Bbi = ROL64in128(Eki, 43);
253 Aba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
254 Aba = _mm_xor_si128(Aba, SPLAT64(KeccakF1600Constants[1]));
255 Ca = Aba;
256 Emo = _mm_xor_si128(Emo, Do);
257 Bbo = ROL64in128(Emo, 21);
258 Abe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
259 Ce = Abe;
260 Esu = _mm_xor_si128(Esu, Du);
261 Bbu = ROL64in128(Esu, 14);
262 Abi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
263 Ci = Abi;
264 Abo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
265 Co = Abo;
266 Abu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
267 Cu = Abu;
268 Ebo = _mm_xor_si128(Ebo, Do);
269 Bga = ROL64in128(Ebo, 28);
270 Egu = _mm_xor_si128(Egu, Du);
271 Bge = ROL64in128(Egu, 20);
272 Eka = _mm_xor_si128(Eka, Da);
273 Bgi = ROL64in128(Eka, 3);
274 Aga = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
275 Ca = _mm_xor_si128(Ca, Aga);
276 Eme = _mm_xor_si128(Eme, De);
277 Bgo = ROL64in128(Eme, 45);
278 Age = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
279 Ce = _mm_xor_si128(Ce, Age);
280 Esi = _mm_xor_si128(Esi, Di);
281 Bgu = ROL64in128(Esi, 61);
282 Agi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
283 Ci = _mm_xor_si128(Ci, Agi);
284 Ago = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
285 Co = _mm_xor_si128(Co, Ago);
286 Agu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
287 Cu = _mm_xor_si128(Cu, Agu);
288 Ebe = _mm_xor_si128(Ebe, De);
289 Bka = ROL64in128(Ebe, 1);
290 Egi = _mm_xor_si128(Egi, Di);
291 Bke = ROL64in128(Egi, 6);
292 Eko = _mm_xor_si128(Eko, Do);
293 Bki = ROL64in128(Eko, 25);
294 Aka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
295 Ca = _mm_xor_si128(Ca, Aka);
296 Emu = _mm_xor_si128(Emu, Du);
297 Bko = ROL64in128_8(Emu);
298 Ake = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
299 Ce = _mm_xor_si128(Ce, Ake);
300 Esa = _mm_xor_si128(Esa, Da);
301 Bku = ROL64in128(Esa, 18);
302 Aki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
303 Ci = _mm_xor_si128(Ci, Aki);
304 Ako = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
305 Co = _mm_xor_si128(Co, Ako);
306 Aku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
307 Cu = _mm_xor_si128(Cu, Aku);
308 Ebu = _mm_xor_si128(Ebu, Du);
309 Bma = ROL64in128(Ebu, 27);
310 Ega = _mm_xor_si128(Ega, Da);
311 Bme = ROL64in128(Ega, 36);
312 Eke = _mm_xor_si128(Eke, De);
313 Bmi = ROL64in128(Eke, 10);
314 Ama = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
315 Ca = _mm_xor_si128(Ca, Ama);
316 Emi = _mm_xor_si128(Emi, Di);
317 Bmo = ROL64in128(Emi, 15);
318 Ame = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
319 Ce = _mm_xor_si128(Ce, Ame);
320 Eso = _mm_xor_si128(Eso, Do);
321 Bmu = ROL64in128_56(Eso);
322 Ami = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
323 Ci = _mm_xor_si128(Ci, Ami);
324 Amo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
325 Co = _mm_xor_si128(Co, Amo);
326 Amu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
327 Cu = _mm_xor_si128(Cu, Amu);
328 Ebi = _mm_xor_si128(Ebi, Di);
329 Bsa = ROL64in128(Ebi, 62);
330 Ego = _mm_xor_si128(Ego, Do);
331 Bse = ROL64in128(Ego, 55);
332 Eku = _mm_xor_si128(Eku, Du);
333 Bsi = ROL64in128(Eku, 39);
334 Asa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
335 Ca = _mm_xor_si128(Ca, Asa);
336 Ema = _mm_xor_si128(Ema, Da);
337 Bso = ROL64in128(Ema, 41);
338 Ase = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
339 Ce = _mm_xor_si128(Ce, Ase);
340 Ese = _mm_xor_si128(Ese, De);
341 Bsu = ROL64in128(Ese, 2);
342 Asi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
343 Ci = _mm_xor_si128(Ci, Asi);
344 Aso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
345 Co = _mm_xor_si128(Co, Aso);
346 Asu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
347 Cu = _mm_xor_si128(Cu, Asu);
348 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
349 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
350 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
351 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
352 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
353 Aba = _mm_xor_si128(Aba, Da);
354 Bba = Aba;
355 Age = _mm_xor_si128(Age, De);
356 Bbe = ROL64in128(Age, 44);
357 Aki = _mm_xor_si128(Aki, Di);
358 Bbi = ROL64in128(Aki, 43);
359 Eba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
360 Eba = _mm_xor_si128(Eba, SPLAT64(KeccakF1600Constants[2]));
361 Ca = Eba;
362 Amo = _mm_xor_si128(Amo, Do);
363 Bbo = ROL64in128(Amo, 21);
364 Ebe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
365 Ce = Ebe;
366 Asu = _mm_xor_si128(Asu, Du);
367 Bbu = ROL64in128(Asu, 14);
368 Ebi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
369 Ci = Ebi;
370 Ebo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
371 Co = Ebo;
372 Ebu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
373 Cu = Ebu;
374 Abo = _mm_xor_si128(Abo, Do);
375 Bga = ROL64in128(Abo, 28);
376 Agu = _mm_xor_si128(Agu, Du);
377 Bge = ROL64in128(Agu, 20);
378 Aka = _mm_xor_si128(Aka, Da);
379 Bgi = ROL64in128(Aka, 3);
380 Ega = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
381 Ca = _mm_xor_si128(Ca, Ega);
382 Ame = _mm_xor_si128(Ame, De);
383 Bgo = ROL64in128(Ame, 45);
384 Ege = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
385 Ce = _mm_xor_si128(Ce, Ege);
386 Asi = _mm_xor_si128(Asi, Di);
387 Bgu = ROL64in128(Asi, 61);
388 Egi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
389 Ci = _mm_xor_si128(Ci, Egi);
390 Ego = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
391 Co = _mm_xor_si128(Co, Ego);
392 Egu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
393 Cu = _mm_xor_si128(Cu, Egu);
394 Abe = _mm_xor_si128(Abe, De);
395 Bka = ROL64in128(Abe, 1);
396 Agi = _mm_xor_si128(Agi, Di);
397 Bke = ROL64in128(Agi, 6);
398 Ako = _mm_xor_si128(Ako, Do);
399 Bki = ROL64in128(Ako, 25);
400 Eka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
401 Ca = _mm_xor_si128(Ca, Eka);
402 Amu = _mm_xor_si128(Amu, Du);
403 Bko = ROL64in128_8(Amu);
404 Eke = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
405 Ce = _mm_xor_si128(Ce, Eke);
406 Asa = _mm_xor_si128(Asa, Da);
407 Bku = ROL64in128(Asa, 18);
408 Eki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
409 Ci = _mm_xor_si128(Ci, Eki);
410 Eko = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
411 Co = _mm_xor_si128(Co, Eko);
412 Eku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
413 Cu = _mm_xor_si128(Cu, Eku);
414 Abu = _mm_xor_si128(Abu, Du);
415 Bma = ROL64in128(Abu, 27);
416 Aga = _mm_xor_si128(Aga, Da);
417 Bme = ROL64in128(Aga, 36);
418 Ake = _mm_xor_si128(Ake, De);
419 Bmi = ROL64in128(Ake, 10);
420 Ema = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
421 Ca = _mm_xor_si128(Ca, Ema);
422 Ami = _mm_xor_si128(Ami, Di);
423 Bmo = ROL64in128(Ami, 15);
424 Eme = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
425 Ce = _mm_xor_si128(Ce, Eme);
426 Aso = _mm_xor_si128(Aso, Do);
427 Bmu = ROL64in128_56(Aso);
428 Emi = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
429 Ci = _mm_xor_si128(Ci, Emi);
430 Emo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
431 Co = _mm_xor_si128(Co, Emo);
432 Emu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
433 Cu = _mm_xor_si128(Cu, Emu);
434 Abi = _mm_xor_si128(Abi, Di);
435 Bsa = ROL64in128(Abi, 62);
436 Ago = _mm_xor_si128(Ago, Do);
437 Bse = ROL64in128(Ago, 55);
438 Aku = _mm_xor_si128(Aku, Du);
439 Bsi = ROL64in128(Aku, 39);
440 Esa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
441 Ca = _mm_xor_si128(Ca, Esa);
442 Ama = _mm_xor_si128(Ama, Da);
443 Bso = ROL64in128(Ama, 41);
444 Ese = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
445 Ce = _mm_xor_si128(Ce, Ese);
446 Ase = _mm_xor_si128(Ase, De);
447 Bsu = ROL64in128(Ase, 2);
448 Esi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
449 Ci = _mm_xor_si128(Ci, Esi);
450 Eso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
451 Co = _mm_xor_si128(Co, Eso);
452 Esu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
453 Cu = _mm_xor_si128(Cu, Esu);
454 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
455 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
456 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
457 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
458 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
459 Eba = _mm_xor_si128(Eba, Da);
460 Bba = Eba;
461 Ege = _mm_xor_si128(Ege, De);
462 Bbe = ROL64in128(Ege, 44);
463 Eki = _mm_xor_si128(Eki, Di);
464 Bbi = ROL64in128(Eki, 43);
465 Aba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
466 Aba = _mm_xor_si128(Aba, SPLAT64(KeccakF1600Constants[3]));
467 Ca = Aba;
468 Emo = _mm_xor_si128(Emo, Do);
469 Bbo = ROL64in128(Emo, 21);
470 Abe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
471 Ce = Abe;
472 Esu = _mm_xor_si128(Esu, Du);
473 Bbu = ROL64in128(Esu, 14);
474 Abi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
475 Ci = Abi;
476 Abo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
477 Co = Abo;
478 Abu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
479 Cu = Abu;
480 Ebo = _mm_xor_si128(Ebo, Do);
481 Bga = ROL64in128(Ebo, 28);
482 Egu = _mm_xor_si128(Egu, Du);
483 Bge = ROL64in128(Egu, 20);
484 Eka = _mm_xor_si128(Eka, Da);
485 Bgi = ROL64in128(Eka, 3);
486 Aga = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
487 Ca = _mm_xor_si128(Ca, Aga);
488 Eme = _mm_xor_si128(Eme, De);
489 Bgo = ROL64in128(Eme, 45);
490 Age = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
491 Ce = _mm_xor_si128(Ce, Age);
492 Esi = _mm_xor_si128(Esi, Di);
493 Bgu = ROL64in128(Esi, 61);
494 Agi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
495 Ci = _mm_xor_si128(Ci, Agi);
496 Ago = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
497 Co = _mm_xor_si128(Co, Ago);
498 Agu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
499 Cu = _mm_xor_si128(Cu, Agu);
500 Ebe = _mm_xor_si128(Ebe, De);
501 Bka = ROL64in128(Ebe, 1);
502 Egi = _mm_xor_si128(Egi, Di);
503 Bke = ROL64in128(Egi, 6);
504 Eko = _mm_xor_si128(Eko, Do);
505 Bki = ROL64in128(Eko, 25);
506 Aka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
507 Ca = _mm_xor_si128(Ca, Aka);
508 Emu = _mm_xor_si128(Emu, Du);
509 Bko = ROL64in128_8(Emu);
510 Ake = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
511 Ce = _mm_xor_si128(Ce, Ake);
512 Esa = _mm_xor_si128(Esa, Da);
513 Bku = ROL64in128(Esa, 18);
514 Aki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
515 Ci = _mm_xor_si128(Ci, Aki);
516 Ako = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
517 Co = _mm_xor_si128(Co, Ako);
518 Aku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
519 Cu = _mm_xor_si128(Cu, Aku);
520 Ebu = _mm_xor_si128(Ebu, Du);
521 Bma = ROL64in128(Ebu, 27);
522 Ega = _mm_xor_si128(Ega, Da);
523 Bme = ROL64in128(Ega, 36);
524 Eke = _mm_xor_si128(Eke, De);
525 Bmi = ROL64in128(Eke, 10);
526 Ama = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
527 Ca = _mm_xor_si128(Ca, Ama);
528 Emi = _mm_xor_si128(Emi, Di);
529 Bmo = ROL64in128(Emi, 15);
530 Ame = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
531 Ce = _mm_xor_si128(Ce, Ame);
532 Eso = _mm_xor_si128(Eso, Do);
533 Bmu = ROL64in128_56(Eso);
534 Ami = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
535 Ci = _mm_xor_si128(Ci, Ami);
536 Amo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
537 Co = _mm_xor_si128(Co, Amo);
538 Amu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
539 Cu = _mm_xor_si128(Cu, Amu);
540 Ebi = _mm_xor_si128(Ebi, Di);
541 Bsa = ROL64in128(Ebi, 62);
542 Ego = _mm_xor_si128(Ego, Do);
543 Bse = ROL64in128(Ego, 55);
544 Eku = _mm_xor_si128(Eku, Du);
545 Bsi = ROL64in128(Eku, 39);
546 Asa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
547 Ca = _mm_xor_si128(Ca, Asa);
548 Ema = _mm_xor_si128(Ema, Da);
549 Bso = ROL64in128(Ema, 41);
550 Ase = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
551 Ce = _mm_xor_si128(Ce, Ase);
552 Ese = _mm_xor_si128(Ese, De);
553 Bsu = ROL64in128(Ese, 2);
554 Asi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
555 Ci = _mm_xor_si128(Ci, Asi);
556 Aso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
557 Co = _mm_xor_si128(Co, Aso);
558 Asu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
559 Cu = _mm_xor_si128(Cu, Asu);
560 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
561 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
562 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
563 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
564 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
565 Aba = _mm_xor_si128(Aba, Da);
566 Bba = Aba;
567 Age = _mm_xor_si128(Age, De);
568 Bbe = ROL64in128(Age, 44);
569 Aki = _mm_xor_si128(Aki, Di);
570 Bbi = ROL64in128(Aki, 43);
571 Eba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
572 Eba = _mm_xor_si128(Eba, SPLAT64(KeccakF1600Constants[4]));
573 Ca = Eba;
574 Amo = _mm_xor_si128(Amo, Do);
575 Bbo = ROL64in128(Amo, 21);
576 Ebe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
577 Ce = Ebe;
578 Asu = _mm_xor_si128(Asu, Du);
579 Bbu = ROL64in128(Asu, 14);
580 Ebi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
581 Ci = Ebi;
582 Ebo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
583 Co = Ebo;
584 Ebu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
585 Cu = Ebu;
586 Abo = _mm_xor_si128(Abo, Do);
587 Bga = ROL64in128(Abo, 28);
588 Agu = _mm_xor_si128(Agu, Du);
589 Bge = ROL64in128(Agu, 20);
590 Aka = _mm_xor_si128(Aka, Da);
591 Bgi = ROL64in128(Aka, 3);
592 Ega = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
593 Ca = _mm_xor_si128(Ca, Ega);
594 Ame = _mm_xor_si128(Ame, De);
595 Bgo = ROL64in128(Ame, 45);
596 Ege = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
597 Ce = _mm_xor_si128(Ce, Ege);
598 Asi = _mm_xor_si128(Asi, Di);
599 Bgu = ROL64in128(Asi, 61);
600 Egi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
601 Ci = _mm_xor_si128(Ci, Egi);
602 Ego = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
603 Co = _mm_xor_si128(Co, Ego);
604 Egu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
605 Cu = _mm_xor_si128(Cu, Egu);
606 Abe = _mm_xor_si128(Abe, De);
607 Bka = ROL64in128(Abe, 1);
608 Agi = _mm_xor_si128(Agi, Di);
609 Bke = ROL64in128(Agi, 6);
610 Ako = _mm_xor_si128(Ako, Do);
611 Bki = ROL64in128(Ako, 25);
612 Eka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
613 Ca = _mm_xor_si128(Ca, Eka);
614 Amu = _mm_xor_si128(Amu, Du);
615 Bko = ROL64in128_8(Amu);
616 Eke = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
617 Ce = _mm_xor_si128(Ce, Eke);
618 Asa = _mm_xor_si128(Asa, Da);
619 Bku = ROL64in128(Asa, 18);
620 Eki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
621 Ci = _mm_xor_si128(Ci, Eki);
622 Eko = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
623 Co = _mm_xor_si128(Co, Eko);
624 Eku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
625 Cu = _mm_xor_si128(Cu, Eku);
626 Abu = _mm_xor_si128(Abu, Du);
627 Bma = ROL64in128(Abu, 27);
628 Aga = _mm_xor_si128(Aga, Da);
629 Bme = ROL64in128(Aga, 36);
630 Ake = _mm_xor_si128(Ake, De);
631 Bmi = ROL64in128(Ake, 10);
632 Ema = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
633 Ca = _mm_xor_si128(Ca, Ema);
634 Ami = _mm_xor_si128(Ami, Di);
635 Bmo = ROL64in128(Ami, 15);
636 Eme = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
637 Ce = _mm_xor_si128(Ce, Eme);
638 Aso = _mm_xor_si128(Aso, Do);
639 Bmu = ROL64in128_56(Aso);
640 Emi = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
641 Ci = _mm_xor_si128(Ci, Emi);
642 Emo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
643 Co = _mm_xor_si128(Co, Emo);
644 Emu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
645 Cu = _mm_xor_si128(Cu, Emu);
646 Abi = _mm_xor_si128(Abi, Di);
647 Bsa = ROL64in128(Abi, 62);
648 Ago = _mm_xor_si128(Ago, Do);
649 Bse = ROL64in128(Ago, 55);
650 Aku = _mm_xor_si128(Aku, Du);
651 Bsi = ROL64in128(Aku, 39);
652 Esa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
653 Ca = _mm_xor_si128(Ca, Esa);
654 Ama = _mm_xor_si128(Ama, Da);
655 Bso = ROL64in128(Ama, 41);
656 Ese = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
657 Ce = _mm_xor_si128(Ce, Ese);
658 Ase = _mm_xor_si128(Ase, De);
659 Bsu = ROL64in128(Ase, 2);
660 Esi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
661 Ci = _mm_xor_si128(Ci, Esi);
662 Eso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
663 Co = _mm_xor_si128(Co, Eso);
664 Esu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
665 Cu = _mm_xor_si128(Cu, Esu);
666 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
667 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
668 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
669 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
670 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
671 Eba = _mm_xor_si128(Eba, Da);
672 Bba = Eba;
673 Ege = _mm_xor_si128(Ege, De);
674 Bbe = ROL64in128(Ege, 44);
675 Eki = _mm_xor_si128(Eki, Di);
676 Bbi = ROL64in128(Eki, 43);
677 Aba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
678 Aba = _mm_xor_si128(Aba, SPLAT64(KeccakF1600Constants[5]));
679 Ca = Aba;
680 Emo = _mm_xor_si128(Emo, Do);
681 Bbo = ROL64in128(Emo, 21);
682 Abe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
683 Ce = Abe;
684 Esu = _mm_xor_si128(Esu, Du);
685 Bbu = ROL64in128(Esu, 14);
686 Abi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
687 Ci = Abi;
688 Abo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
689 Co = Abo;
690 Abu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
691 Cu = Abu;
692 Ebo = _mm_xor_si128(Ebo, Do);
693 Bga = ROL64in128(Ebo, 28);
694 Egu = _mm_xor_si128(Egu, Du);
695 Bge = ROL64in128(Egu, 20);
696 Eka = _mm_xor_si128(Eka, Da);
697 Bgi = ROL64in128(Eka, 3);
698 Aga = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
699 Ca = _mm_xor_si128(Ca, Aga);
700 Eme = _mm_xor_si128(Eme, De);
701 Bgo = ROL64in128(Eme, 45);
702 Age = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
703 Ce = _mm_xor_si128(Ce, Age);
704 Esi = _mm_xor_si128(Esi, Di);
705 Bgu = ROL64in128(Esi, 61);
706 Agi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
707 Ci = _mm_xor_si128(Ci, Agi);
708 Ago = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
709 Co = _mm_xor_si128(Co, Ago);
710 Agu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
711 Cu = _mm_xor_si128(Cu, Agu);
712 Ebe = _mm_xor_si128(Ebe, De);
713 Bka = ROL64in128(Ebe, 1);
714 Egi = _mm_xor_si128(Egi, Di);
715 Bke = ROL64in128(Egi, 6);
716 Eko = _mm_xor_si128(Eko, Do);
717 Bki = ROL64in128(Eko, 25);
718 Aka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
719 Ca = _mm_xor_si128(Ca, Aka);
720 Emu = _mm_xor_si128(Emu, Du);
721 Bko = ROL64in128_8(Emu);
722 Ake = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
723 Ce = _mm_xor_si128(Ce, Ake);
724 Esa = _mm_xor_si128(Esa, Da);
725 Bku = ROL64in128(Esa, 18);
726 Aki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
727 Ci = _mm_xor_si128(Ci, Aki);
728 Ako = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
729 Co = _mm_xor_si128(Co, Ako);
730 Aku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
731 Cu = _mm_xor_si128(Cu, Aku);
732 Ebu = _mm_xor_si128(Ebu, Du);
733 Bma = ROL64in128(Ebu, 27);
734 Ega = _mm_xor_si128(Ega, Da);
735 Bme = ROL64in128(Ega, 36);
736 Eke = _mm_xor_si128(Eke, De);
737 Bmi = ROL64in128(Eke, 10);
738 Ama = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
739 Ca = _mm_xor_si128(Ca, Ama);
740 Emi = _mm_xor_si128(Emi, Di);
741 Bmo = ROL64in128(Emi, 15);
742 Ame = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
743 Ce = _mm_xor_si128(Ce, Ame);
744 Eso = _mm_xor_si128(Eso, Do);
745 Bmu = ROL64in128_56(Eso);
746 Ami = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
747 Ci = _mm_xor_si128(Ci, Ami);
748 Amo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
749 Co = _mm_xor_si128(Co, Amo);
750 Amu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
751 Cu = _mm_xor_si128(Cu, Amu);
752 Ebi = _mm_xor_si128(Ebi, Di);
753 Bsa = ROL64in128(Ebi, 62);
754 Ego = _mm_xor_si128(Ego, Do);
755 Bse = ROL64in128(Ego, 55);
756 Eku = _mm_xor_si128(Eku, Du);
757 Bsi = ROL64in128(Eku, 39);
758 Asa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
759 Ca = _mm_xor_si128(Ca, Asa);
760 Ema = _mm_xor_si128(Ema, Da);
761 Bso = ROL64in128(Ema, 41);
762 Ase = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
763 Ce = _mm_xor_si128(Ce, Ase);
764 Ese = _mm_xor_si128(Ese, De);
765 Bsu = ROL64in128(Ese, 2);
766 Asi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
767 Ci = _mm_xor_si128(Ci, Asi);
768 Aso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
769 Co = _mm_xor_si128(Co, Aso);
770 Asu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
771 Cu = _mm_xor_si128(Cu, Asu);
772 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
773 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
774 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
775 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
776 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
777 Aba = _mm_xor_si128(Aba, Da);
778 Bba = Aba;
779 Age = _mm_xor_si128(Age, De);
780 Bbe = ROL64in128(Age, 44);
781 Aki = _mm_xor_si128(Aki, Di);
782 Bbi = ROL64in128(Aki, 43);
783 Eba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
784 Eba = _mm_xor_si128(Eba, SPLAT64(KeccakF1600Constants[6]));
785 Ca = Eba;
786 Amo = _mm_xor_si128(Amo, Do);
787 Bbo = ROL64in128(Amo, 21);
788 Ebe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
789 Ce = Ebe;
790 Asu = _mm_xor_si128(Asu, Du);
791 Bbu = ROL64in128(Asu, 14);
792 Ebi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
793 Ci = Ebi;
794 Ebo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
795 Co = Ebo;
796 Ebu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
797 Cu = Ebu;
798 Abo = _mm_xor_si128(Abo, Do);
799 Bga = ROL64in128(Abo, 28);
800 Agu = _mm_xor_si128(Agu, Du);
801 Bge = ROL64in128(Agu, 20);
802 Aka = _mm_xor_si128(Aka, Da);
803 Bgi = ROL64in128(Aka, 3);
804 Ega = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
805 Ca = _mm_xor_si128(Ca, Ega);
806 Ame = _mm_xor_si128(Ame, De);
807 Bgo = ROL64in128(Ame, 45);
808 Ege = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
809 Ce = _mm_xor_si128(Ce, Ege);
810 Asi = _mm_xor_si128(Asi, Di);
811 Bgu = ROL64in128(Asi, 61);
812 Egi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
813 Ci = _mm_xor_si128(Ci, Egi);
814 Ego = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
815 Co = _mm_xor_si128(Co, Ego);
816 Egu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
817 Cu = _mm_xor_si128(Cu, Egu);
818 Abe = _mm_xor_si128(Abe, De);
819 Bka = ROL64in128(Abe, 1);
820 Agi = _mm_xor_si128(Agi, Di);
821 Bke = ROL64in128(Agi, 6);
822 Ako = _mm_xor_si128(Ako, Do);
823 Bki = ROL64in128(Ako, 25);
824 Eka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
825 Ca = _mm_xor_si128(Ca, Eka);
826 Amu = _mm_xor_si128(Amu, Du);
827 Bko = ROL64in128_8(Amu);
828 Eke = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
829 Ce = _mm_xor_si128(Ce, Eke);
830 Asa = _mm_xor_si128(Asa, Da);
831 Bku = ROL64in128(Asa, 18);
832 Eki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
833 Ci = _mm_xor_si128(Ci, Eki);
834 Eko = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
835 Co = _mm_xor_si128(Co, Eko);
836 Eku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
837 Cu = _mm_xor_si128(Cu, Eku);
838 Abu = _mm_xor_si128(Abu, Du);
839 Bma = ROL64in128(Abu, 27);
840 Aga = _mm_xor_si128(Aga, Da);
841 Bme = ROL64in128(Aga, 36);
842 Ake = _mm_xor_si128(Ake, De);
843 Bmi = ROL64in128(Ake, 10);
844 Ema = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
845 Ca = _mm_xor_si128(Ca, Ema);
846 Ami = _mm_xor_si128(Ami, Di);
847 Bmo = ROL64in128(Ami, 15);
848 Eme = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
849 Ce = _mm_xor_si128(Ce, Eme);
850 Aso = _mm_xor_si128(Aso, Do);
851 Bmu = ROL64in128_56(Aso);
852 Emi = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
853 Ci = _mm_xor_si128(Ci, Emi);
854 Emo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
855 Co = _mm_xor_si128(Co, Emo);
856 Emu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
857 Cu = _mm_xor_si128(Cu, Emu);
858 Abi = _mm_xor_si128(Abi, Di);
859 Bsa = ROL64in128(Abi, 62);
860 Ago = _mm_xor_si128(Ago, Do);
861 Bse = ROL64in128(Ago, 55);
862 Aku = _mm_xor_si128(Aku, Du);
863 Bsi = ROL64in128(Aku, 39);
864 Esa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
865 Ca = _mm_xor_si128(Ca, Esa);
866 Ama = _mm_xor_si128(Ama, Da);
867 Bso = ROL64in128(Ama, 41);
868 Ese = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
869 Ce = _mm_xor_si128(Ce, Ese);
870 Ase = _mm_xor_si128(Ase, De);
871 Bsu = ROL64in128(Ase, 2);
872 Esi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
873 Ci = _mm_xor_si128(Ci, Esi);
874 Eso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
875 Co = _mm_xor_si128(Co, Eso);
876 Esu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
877 Cu = _mm_xor_si128(Cu, Esu);
878 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
879 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
880 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
881 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
882 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
883 Eba = _mm_xor_si128(Eba, Da);
884 Bba = Eba;
885 Ege = _mm_xor_si128(Ege, De);
886 Bbe = ROL64in128(Ege, 44);
887 Eki = _mm_xor_si128(Eki, Di);
888 Bbi = ROL64in128(Eki, 43);
889 Aba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
890 Aba = _mm_xor_si128(Aba, SPLAT64(KeccakF1600Constants[7]));
891 Ca = Aba;
892 Emo = _mm_xor_si128(Emo, Do);
893 Bbo = ROL64in128(Emo, 21);
894 Abe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
895 Ce = Abe;
896 Esu = _mm_xor_si128(Esu, Du);
897 Bbu = ROL64in128(Esu, 14);
898 Abi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
899 Ci = Abi;
900 Abo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
901 Co = Abo;
902 Abu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
903 Cu = Abu;
904 Ebo = _mm_xor_si128(Ebo, Do);
905 Bga = ROL64in128(Ebo, 28);
906 Egu = _mm_xor_si128(Egu, Du);
907 Bge = ROL64in128(Egu, 20);
908 Eka = _mm_xor_si128(Eka, Da);
909 Bgi = ROL64in128(Eka, 3);
910 Aga = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
911 Ca = _mm_xor_si128(Ca, Aga);
912 Eme = _mm_xor_si128(Eme, De);
913 Bgo = ROL64in128(Eme, 45);
914 Age = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
915 Ce = _mm_xor_si128(Ce, Age);
916 Esi = _mm_xor_si128(Esi, Di);
917 Bgu = ROL64in128(Esi, 61);
918 Agi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
919 Ci = _mm_xor_si128(Ci, Agi);
920 Ago = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
921 Co = _mm_xor_si128(Co, Ago);
922 Agu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
923 Cu = _mm_xor_si128(Cu, Agu);
924 Ebe = _mm_xor_si128(Ebe, De);
925 Bka = ROL64in128(Ebe, 1);
926 Egi = _mm_xor_si128(Egi, Di);
927 Bke = ROL64in128(Egi, 6);
928 Eko = _mm_xor_si128(Eko, Do);
929 Bki = ROL64in128(Eko, 25);
930 Aka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
931 Ca = _mm_xor_si128(Ca, Aka);
932 Emu = _mm_xor_si128(Emu, Du);
933 Bko = ROL64in128_8(Emu);
934 Ake = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
935 Ce = _mm_xor_si128(Ce, Ake);
936 Esa = _mm_xor_si128(Esa, Da);
937 Bku = ROL64in128(Esa, 18);
938 Aki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
939 Ci = _mm_xor_si128(Ci, Aki);
940 Ako = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
941 Co = _mm_xor_si128(Co, Ako);
942 Aku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
943 Cu = _mm_xor_si128(Cu, Aku);
944 Ebu = _mm_xor_si128(Ebu, Du);
945 Bma = ROL64in128(Ebu, 27);
946 Ega = _mm_xor_si128(Ega, Da);
947 Bme = ROL64in128(Ega, 36);
948 Eke = _mm_xor_si128(Eke, De);
949 Bmi = ROL64in128(Eke, 10);
950 Ama = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
951 Ca = _mm_xor_si128(Ca, Ama);
952 Emi = _mm_xor_si128(Emi, Di);
953 Bmo = ROL64in128(Emi, 15);
954 Ame = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
955 Ce = _mm_xor_si128(Ce, Ame);
956 Eso = _mm_xor_si128(Eso, Do);
957 Bmu = ROL64in128_56(Eso);
958 Ami = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
959 Ci = _mm_xor_si128(Ci, Ami);
960 Amo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
961 Co = _mm_xor_si128(Co, Amo);
962 Amu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
963 Cu = _mm_xor_si128(Cu, Amu);
964 Ebi = _mm_xor_si128(Ebi, Di);
965 Bsa = ROL64in128(Ebi, 62);
966 Ego = _mm_xor_si128(Ego, Do);
967 Bse = ROL64in128(Ego, 55);
968 Eku = _mm_xor_si128(Eku, Du);
969 Bsi = ROL64in128(Eku, 39);
970 Asa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
971 Ca = _mm_xor_si128(Ca, Asa);
972 Ema = _mm_xor_si128(Ema, Da);
973 Bso = ROL64in128(Ema, 41);
974 Ase = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
975 Ce = _mm_xor_si128(Ce, Ase);
976 Ese = _mm_xor_si128(Ese, De);
977 Bsu = ROL64in128(Ese, 2);
978 Asi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
979 Ci = _mm_xor_si128(Ci, Asi);
980 Aso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
981 Co = _mm_xor_si128(Co, Aso);
982 Asu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
983 Cu = _mm_xor_si128(Cu, Asu);
984 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
985 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
986 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
987 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
988 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
989 Aba = _mm_xor_si128(Aba, Da);
990 Bba = Aba;
991 Age = _mm_xor_si128(Age, De);
992 Bbe = ROL64in128(Age, 44);
993 Aki = _mm_xor_si128(Aki, Di);
994 Bbi = ROL64in128(Aki, 43);
995 Eba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
996 Eba = _mm_xor_si128(Eba, SPLAT64(KeccakF1600Constants[8]));
997 Ca = Eba;
998 Amo = _mm_xor_si128(Amo, Do);
999 Bbo = ROL64in128(Amo, 21);
1000 Ebe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
1001 Ce = Ebe;
1002 Asu = _mm_xor_si128(Asu, Du);
1003 Bbu = ROL64in128(Asu, 14);
1004 Ebi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
1005 Ci = Ebi;
1006 Ebo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
1007 Co = Ebo;
1008 Ebu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
1009 Cu = Ebu;
1010 Abo = _mm_xor_si128(Abo, Do);
1011 Bga = ROL64in128(Abo, 28);
1012 Agu = _mm_xor_si128(Agu, Du);
1013 Bge = ROL64in128(Agu, 20);
1014 Aka = _mm_xor_si128(Aka, Da);
1015 Bgi = ROL64in128(Aka, 3);
1016 Ega = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
1017 Ca = _mm_xor_si128(Ca, Ega);
1018 Ame = _mm_xor_si128(Ame, De);
1019 Bgo = ROL64in128(Ame, 45);
1020 Ege = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
1021 Ce = _mm_xor_si128(Ce, Ege);
1022 Asi = _mm_xor_si128(Asi, Di);
1023 Bgu = ROL64in128(Asi, 61);
1024 Egi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
1025 Ci = _mm_xor_si128(Ci, Egi);
1026 Ego = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
1027 Co = _mm_xor_si128(Co, Ego);
1028 Egu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
1029 Cu = _mm_xor_si128(Cu, Egu);
1030 Abe = _mm_xor_si128(Abe, De);
1031 Bka = ROL64in128(Abe, 1);
1032 Agi = _mm_xor_si128(Agi, Di);
1033 Bke = ROL64in128(Agi, 6);
1034 Ako = _mm_xor_si128(Ako, Do);
1035 Bki = ROL64in128(Ako, 25);
1036 Eka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
1037 Ca = _mm_xor_si128(Ca, Eka);
1038 Amu = _mm_xor_si128(Amu, Du);
1039 Bko = ROL64in128_8(Amu);
1040 Eke = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
1041 Ce = _mm_xor_si128(Ce, Eke);
1042 Asa = _mm_xor_si128(Asa, Da);
1043 Bku = ROL64in128(Asa, 18);
1044 Eki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
1045 Ci = _mm_xor_si128(Ci, Eki);
1046 Eko = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
1047 Co = _mm_xor_si128(Co, Eko);
1048 Eku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
1049 Cu = _mm_xor_si128(Cu, Eku);
1050 Abu = _mm_xor_si128(Abu, Du);
1051 Bma = ROL64in128(Abu, 27);
1052 Aga = _mm_xor_si128(Aga, Da);
1053 Bme = ROL64in128(Aga, 36);
1054 Ake = _mm_xor_si128(Ake, De);
1055 Bmi = ROL64in128(Ake, 10);
1056 Ema = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
1057 Ca = _mm_xor_si128(Ca, Ema);
1058 Ami = _mm_xor_si128(Ami, Di);
1059 Bmo = ROL64in128(Ami, 15);
1060 Eme = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
1061 Ce = _mm_xor_si128(Ce, Eme);
1062 Aso = _mm_xor_si128(Aso, Do);
1063 Bmu = ROL64in128_56(Aso);
1064 Emi = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
1065 Ci = _mm_xor_si128(Ci, Emi);
1066 Emo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
1067 Co = _mm_xor_si128(Co, Emo);
1068 Emu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
1069 Cu = _mm_xor_si128(Cu, Emu);
1070 Abi = _mm_xor_si128(Abi, Di);
1071 Bsa = ROL64in128(Abi, 62);
1072 Ago = _mm_xor_si128(Ago, Do);
1073 Bse = ROL64in128(Ago, 55);
1074 Aku = _mm_xor_si128(Aku, Du);
1075 Bsi = ROL64in128(Aku, 39);
1076 Esa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
1077 Ca = _mm_xor_si128(Ca, Esa);
1078 Ama = _mm_xor_si128(Ama, Da);
1079 Bso = ROL64in128(Ama, 41);
1080 Ese = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
1081 Ce = _mm_xor_si128(Ce, Ese);
1082 Ase = _mm_xor_si128(Ase, De);
1083 Bsu = ROL64in128(Ase, 2);
1084 Esi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
1085 Ci = _mm_xor_si128(Ci, Esi);
1086 Eso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
1087 Co = _mm_xor_si128(Co, Eso);
1088 Esu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
1089 Cu = _mm_xor_si128(Cu, Esu);
1090 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
1091 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
1092 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
1093 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
1094 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
1095 Eba = _mm_xor_si128(Eba, Da);
1096 Bba = Eba;
1097 Ege = _mm_xor_si128(Ege, De);
1098 Bbe = ROL64in128(Ege, 44);
1099 Eki = _mm_xor_si128(Eki, Di);
1100 Bbi = ROL64in128(Eki, 43);
1101 Aba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
1102 Aba = _mm_xor_si128(Aba, SPLAT64(KeccakF1600Constants[9]));
1103 Ca = Aba;
1104 Emo = _mm_xor_si128(Emo, Do);
1105 Bbo = ROL64in128(Emo, 21);
1106 Abe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
1107 Ce = Abe;
1108 Esu = _mm_xor_si128(Esu, Du);
1109 Bbu = ROL64in128(Esu, 14);
1110 Abi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
1111 Ci = Abi;
1112 Abo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
1113 Co = Abo;
1114 Abu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
1115 Cu = Abu;
1116 Ebo = _mm_xor_si128(Ebo, Do);
1117 Bga = ROL64in128(Ebo, 28);
1118 Egu = _mm_xor_si128(Egu, Du);
1119 Bge = ROL64in128(Egu, 20);
1120 Eka = _mm_xor_si128(Eka, Da);
1121 Bgi = ROL64in128(Eka, 3);
1122 Aga = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
1123 Ca = _mm_xor_si128(Ca, Aga);
1124 Eme = _mm_xor_si128(Eme, De);
1125 Bgo = ROL64in128(Eme, 45);
1126 Age = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
1127 Ce = _mm_xor_si128(Ce, Age);
1128 Esi = _mm_xor_si128(Esi, Di);
1129 Bgu = ROL64in128(Esi, 61);
1130 Agi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
1131 Ci = _mm_xor_si128(Ci, Agi);
1132 Ago = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
1133 Co = _mm_xor_si128(Co, Ago);
1134 Agu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
1135 Cu = _mm_xor_si128(Cu, Agu);
1136 Ebe = _mm_xor_si128(Ebe, De);
1137 Bka = ROL64in128(Ebe, 1);
1138 Egi = _mm_xor_si128(Egi, Di);
1139 Bke = ROL64in128(Egi, 6);
1140 Eko = _mm_xor_si128(Eko, Do);
1141 Bki = ROL64in128(Eko, 25);
1142 Aka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
1143 Ca = _mm_xor_si128(Ca, Aka);
1144 Emu = _mm_xor_si128(Emu, Du);
1145 Bko = ROL64in128_8(Emu);
1146 Ake = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
1147 Ce = _mm_xor_si128(Ce, Ake);
1148 Esa = _mm_xor_si128(Esa, Da);
1149 Bku = ROL64in128(Esa, 18);
1150 Aki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
1151 Ci = _mm_xor_si128(Ci, Aki);
1152 Ako = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
1153 Co = _mm_xor_si128(Co, Ako);
1154 Aku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
1155 Cu = _mm_xor_si128(Cu, Aku);
1156 Ebu = _mm_xor_si128(Ebu, Du);
1157 Bma = ROL64in128(Ebu, 27);
1158 Ega = _mm_xor_si128(Ega, Da);
1159 Bme = ROL64in128(Ega, 36);
1160 Eke = _mm_xor_si128(Eke, De);
1161 Bmi = ROL64in128(Eke, 10);
1162 Ama = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
1163 Ca = _mm_xor_si128(Ca, Ama);
1164 Emi = _mm_xor_si128(Emi, Di);
1165 Bmo = ROL64in128(Emi, 15);
1166 Ame = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
1167 Ce = _mm_xor_si128(Ce, Ame);
1168 Eso = _mm_xor_si128(Eso, Do);
1169 Bmu = ROL64in128_56(Eso);
1170 Ami = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
1171 Ci = _mm_xor_si128(Ci, Ami);
1172 Amo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
1173 Co = _mm_xor_si128(Co, Amo);
1174 Amu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
1175 Cu = _mm_xor_si128(Cu, Amu);
1176 Ebi = _mm_xor_si128(Ebi, Di);
1177 Bsa = ROL64in128(Ebi, 62);
1178 Ego = _mm_xor_si128(Ego, Do);
1179 Bse = ROL64in128(Ego, 55);
1180 Eku = _mm_xor_si128(Eku, Du);
1181 Bsi = ROL64in128(Eku, 39);
1182 Asa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
1183 Ca = _mm_xor_si128(Ca, Asa);
1184 Ema = _mm_xor_si128(Ema, Da);
1185 Bso = ROL64in128(Ema, 41);
1186 Ase = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
1187 Ce = _mm_xor_si128(Ce, Ase);
1188 Ese = _mm_xor_si128(Ese, De);
1189 Bsu = ROL64in128(Ese, 2);
1190 Asi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
1191 Ci = _mm_xor_si128(Ci, Asi);
1192 Aso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
1193 Co = _mm_xor_si128(Co, Aso);
1194 Asu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
1195 Cu = _mm_xor_si128(Cu, Asu);
1196 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
1197 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
1198 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
1199 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
1200 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
1201 Aba = _mm_xor_si128(Aba, Da);
1202 Bba = Aba;
1203 Age = _mm_xor_si128(Age, De);
1204 Bbe = ROL64in128(Age, 44);
1205 Aki = _mm_xor_si128(Aki, Di);
1206 Bbi = ROL64in128(Aki, 43);
1207 Eba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
1208 Eba = _mm_xor_si128(Eba, SPLAT64(KeccakF1600Constants[10]));
1209 Ca = Eba;
1210 Amo = _mm_xor_si128(Amo, Do);
1211 Bbo = ROL64in128(Amo, 21);
1212 Ebe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
1213 Ce = Ebe;
1214 Asu = _mm_xor_si128(Asu, Du);
1215 Bbu = ROL64in128(Asu, 14);
1216 Ebi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
1217 Ci = Ebi;
1218 Ebo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
1219 Co = Ebo;
1220 Ebu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
1221 Cu = Ebu;
1222 Abo = _mm_xor_si128(Abo, Do);
1223 Bga = ROL64in128(Abo, 28);
1224 Agu = _mm_xor_si128(Agu, Du);
1225 Bge = ROL64in128(Agu, 20);
1226 Aka = _mm_xor_si128(Aka, Da);
1227 Bgi = ROL64in128(Aka, 3);
1228 Ega = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
1229 Ca = _mm_xor_si128(Ca, Ega);
1230 Ame = _mm_xor_si128(Ame, De);
1231 Bgo = ROL64in128(Ame, 45);
1232 Ege = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
1233 Ce = _mm_xor_si128(Ce, Ege);
1234 Asi = _mm_xor_si128(Asi, Di);
1235 Bgu = ROL64in128(Asi, 61);
1236 Egi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
1237 Ci = _mm_xor_si128(Ci, Egi);
1238 Ego = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
1239 Co = _mm_xor_si128(Co, Ego);
1240 Egu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
1241 Cu = _mm_xor_si128(Cu, Egu);
1242 Abe = _mm_xor_si128(Abe, De);
1243 Bka = ROL64in128(Abe, 1);
1244 Agi = _mm_xor_si128(Agi, Di);
1245 Bke = ROL64in128(Agi, 6);
1246 Ako = _mm_xor_si128(Ako, Do);
1247 Bki = ROL64in128(Ako, 25);
1248 Eka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
1249 Ca = _mm_xor_si128(Ca, Eka);
1250 Amu = _mm_xor_si128(Amu, Du);
1251 Bko = ROL64in128_8(Amu);
1252 Eke = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
1253 Ce = _mm_xor_si128(Ce, Eke);
1254 Asa = _mm_xor_si128(Asa, Da);
1255 Bku = ROL64in128(Asa, 18);
1256 Eki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
1257 Ci = _mm_xor_si128(Ci, Eki);
1258 Eko = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
1259 Co = _mm_xor_si128(Co, Eko);
1260 Eku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
1261 Cu = _mm_xor_si128(Cu, Eku);
1262 Abu = _mm_xor_si128(Abu, Du);
1263 Bma = ROL64in128(Abu, 27);
1264 Aga = _mm_xor_si128(Aga, Da);
1265 Bme = ROL64in128(Aga, 36);
1266 Ake = _mm_xor_si128(Ake, De);
1267 Bmi = ROL64in128(Ake, 10);
1268 Ema = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
1269 Ca = _mm_xor_si128(Ca, Ema);
1270 Ami = _mm_xor_si128(Ami, Di);
1271 Bmo = ROL64in128(Ami, 15);
1272 Eme = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
1273 Ce = _mm_xor_si128(Ce, Eme);
1274 Aso = _mm_xor_si128(Aso, Do);
1275 Bmu = ROL64in128_56(Aso);
1276 Emi = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
1277 Ci = _mm_xor_si128(Ci, Emi);
1278 Emo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
1279 Co = _mm_xor_si128(Co, Emo);
1280 Emu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
1281 Cu = _mm_xor_si128(Cu, Emu);
1282 Abi = _mm_xor_si128(Abi, Di);
1283 Bsa = ROL64in128(Abi, 62);
1284 Ago = _mm_xor_si128(Ago, Do);
1285 Bse = ROL64in128(Ago, 55);
1286 Aku = _mm_xor_si128(Aku, Du);
1287 Bsi = ROL64in128(Aku, 39);
1288 Esa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
1289 Ca = _mm_xor_si128(Ca, Esa);
1290 Ama = _mm_xor_si128(Ama, Da);
1291 Bso = ROL64in128(Ama, 41);
1292 Ese = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
1293 Ce = _mm_xor_si128(Ce, Ese);
1294 Ase = _mm_xor_si128(Ase, De);
1295 Bsu = ROL64in128(Ase, 2);
1296 Esi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
1297 Ci = _mm_xor_si128(Ci, Esi);
1298 Eso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
1299 Co = _mm_xor_si128(Co, Eso);
1300 Esu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
1301 Cu = _mm_xor_si128(Cu, Esu);
1302 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
1303 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
1304 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
1305 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
1306 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
1307 Eba = _mm_xor_si128(Eba, Da);
1308 Bba = Eba;
1309 Ege = _mm_xor_si128(Ege, De);
1310 Bbe = ROL64in128(Ege, 44);
1311 Eki = _mm_xor_si128(Eki, Di);
1312 Bbi = ROL64in128(Eki, 43);
1313 Aba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
1314 Aba = _mm_xor_si128(Aba, SPLAT64(KeccakF1600Constants[11]));
1315 Ca = Aba;
1316 Emo = _mm_xor_si128(Emo, Do);
1317 Bbo = ROL64in128(Emo, 21);
1318 Abe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
1319 Ce = Abe;
1320 Esu = _mm_xor_si128(Esu, Du);
1321 Bbu = ROL64in128(Esu, 14);
1322 Abi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
1323 Ci = Abi;
1324 Abo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
1325 Co = Abo;
1326 Abu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
1327 Cu = Abu;
1328 Ebo = _mm_xor_si128(Ebo, Do);
1329 Bga = ROL64in128(Ebo, 28);
1330 Egu = _mm_xor_si128(Egu, Du);
1331 Bge = ROL64in128(Egu, 20);
1332 Eka = _mm_xor_si128(Eka, Da);
1333 Bgi = ROL64in128(Eka, 3);
1334 Aga = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
1335 Ca = _mm_xor_si128(Ca, Aga);
1336 Eme = _mm_xor_si128(Eme, De);
1337 Bgo = ROL64in128(Eme, 45);
1338 Age = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
1339 Ce = _mm_xor_si128(Ce, Age);
1340 Esi = _mm_xor_si128(Esi, Di);
1341 Bgu = ROL64in128(Esi, 61);
1342 Agi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
1343 Ci = _mm_xor_si128(Ci, Agi);
1344 Ago = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
1345 Co = _mm_xor_si128(Co, Ago);
1346 Agu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
1347 Cu = _mm_xor_si128(Cu, Agu);
1348 Ebe = _mm_xor_si128(Ebe, De);
1349 Bka = ROL64in128(Ebe, 1);
1350 Egi = _mm_xor_si128(Egi, Di);
1351 Bke = ROL64in128(Egi, 6);
1352 Eko = _mm_xor_si128(Eko, Do);
1353 Bki = ROL64in128(Eko, 25);
1354 Aka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
1355 Ca = _mm_xor_si128(Ca, Aka);
1356 Emu = _mm_xor_si128(Emu, Du);
1357 Bko = ROL64in128_8(Emu);
1358 Ake = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
1359 Ce = _mm_xor_si128(Ce, Ake);
1360 Esa = _mm_xor_si128(Esa, Da);
1361 Bku = ROL64in128(Esa, 18);
1362 Aki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
1363 Ci = _mm_xor_si128(Ci, Aki);
1364 Ako = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
1365 Co = _mm_xor_si128(Co, Ako);
1366 Aku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
1367 Cu = _mm_xor_si128(Cu, Aku);
1368 Ebu = _mm_xor_si128(Ebu, Du);
1369 Bma = ROL64in128(Ebu, 27);
1370 Ega = _mm_xor_si128(Ega, Da);
1371 Bme = ROL64in128(Ega, 36);
1372 Eke = _mm_xor_si128(Eke, De);
1373 Bmi = ROL64in128(Eke, 10);
1374 Ama = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
1375 Ca = _mm_xor_si128(Ca, Ama);
1376 Emi = _mm_xor_si128(Emi, Di);
1377 Bmo = ROL64in128(Emi, 15);
1378 Ame = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
1379 Ce = _mm_xor_si128(Ce, Ame);
1380 Eso = _mm_xor_si128(Eso, Do);
1381 Bmu = ROL64in128_56(Eso);
1382 Ami = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
1383 Ci = _mm_xor_si128(Ci, Ami);
1384 Amo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
1385 Co = _mm_xor_si128(Co, Amo);
1386 Amu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
1387 Cu = _mm_xor_si128(Cu, Amu);
1388 Ebi = _mm_xor_si128(Ebi, Di);
1389 Bsa = ROL64in128(Ebi, 62);
1390 Ego = _mm_xor_si128(Ego, Do);
1391 Bse = ROL64in128(Ego, 55);
1392 Eku = _mm_xor_si128(Eku, Du);
1393 Bsi = ROL64in128(Eku, 39);
1394 Asa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
1395 Ca = _mm_xor_si128(Ca, Asa);
1396 Ema = _mm_xor_si128(Ema, Da);
1397 Bso = ROL64in128(Ema, 41);
1398 Ase = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
1399 Ce = _mm_xor_si128(Ce, Ase);
1400 Ese = _mm_xor_si128(Ese, De);
1401 Bsu = ROL64in128(Ese, 2);
1402 Asi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
1403 Ci = _mm_xor_si128(Ci, Asi);
1404 Aso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
1405 Co = _mm_xor_si128(Co, Aso);
1406 Asu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
1407 Cu = _mm_xor_si128(Cu, Asu);
1408 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
1409 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
1410 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
1411 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
1412 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
1413 Aba = _mm_xor_si128(Aba, Da);
1414 Bba = Aba;
1415 Age = _mm_xor_si128(Age, De);
1416 Bbe = ROL64in128(Age, 44);
1417 Aki = _mm_xor_si128(Aki, Di);
1418 Bbi = ROL64in128(Aki, 43);
1419 Eba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
1420 Eba = _mm_xor_si128(Eba, SPLAT64(KeccakF1600Constants[12]));
1421 Ca = Eba;
1422 Amo = _mm_xor_si128(Amo, Do);
1423 Bbo = ROL64in128(Amo, 21);
1424 Ebe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
1425 Ce = Ebe;
1426 Asu = _mm_xor_si128(Asu, Du);
1427 Bbu = ROL64in128(Asu, 14);
1428 Ebi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
1429 Ci = Ebi;
1430 Ebo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
1431 Co = Ebo;
1432 Ebu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
1433 Cu = Ebu;
1434 Abo = _mm_xor_si128(Abo, Do);
1435 Bga = ROL64in128(Abo, 28);
1436 Agu = _mm_xor_si128(Agu, Du);
1437 Bge = ROL64in128(Agu, 20);
1438 Aka = _mm_xor_si128(Aka, Da);
1439 Bgi = ROL64in128(Aka, 3);
1440 Ega = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
1441 Ca = _mm_xor_si128(Ca, Ega);
1442 Ame = _mm_xor_si128(Ame, De);
1443 Bgo = ROL64in128(Ame, 45);
1444 Ege = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
1445 Ce = _mm_xor_si128(Ce, Ege);
1446 Asi = _mm_xor_si128(Asi, Di);
1447 Bgu = ROL64in128(Asi, 61);
1448 Egi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
1449 Ci = _mm_xor_si128(Ci, Egi);
1450 Ego = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
1451 Co = _mm_xor_si128(Co, Ego);
1452 Egu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
1453 Cu = _mm_xor_si128(Cu, Egu);
1454 Abe = _mm_xor_si128(Abe, De);
1455 Bka = ROL64in128(Abe, 1);
1456 Agi = _mm_xor_si128(Agi, Di);
1457 Bke = ROL64in128(Agi, 6);
1458 Ako = _mm_xor_si128(Ako, Do);
1459 Bki = ROL64in128(Ako, 25);
1460 Eka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
1461 Ca = _mm_xor_si128(Ca, Eka);
1462 Amu = _mm_xor_si128(Amu, Du);
1463 Bko = ROL64in128_8(Amu);
1464 Eke = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
1465 Ce = _mm_xor_si128(Ce, Eke);
1466 Asa = _mm_xor_si128(Asa, Da);
1467 Bku = ROL64in128(Asa, 18);
1468 Eki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
1469 Ci = _mm_xor_si128(Ci, Eki);
1470 Eko = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
1471 Co = _mm_xor_si128(Co, Eko);
1472 Eku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
1473 Cu = _mm_xor_si128(Cu, Eku);
1474 Abu = _mm_xor_si128(Abu, Du);
1475 Bma = ROL64in128(Abu, 27);
1476 Aga = _mm_xor_si128(Aga, Da);
1477 Bme = ROL64in128(Aga, 36);
1478 Ake = _mm_xor_si128(Ake, De);
1479 Bmi = ROL64in128(Ake, 10);
1480 Ema = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
1481 Ca = _mm_xor_si128(Ca, Ema);
1482 Ami = _mm_xor_si128(Ami, Di);
1483 Bmo = ROL64in128(Ami, 15);
1484 Eme = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
1485 Ce = _mm_xor_si128(Ce, Eme);
1486 Aso = _mm_xor_si128(Aso, Do);
1487 Bmu = ROL64in128_56(Aso);
1488 Emi = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
1489 Ci = _mm_xor_si128(Ci, Emi);
1490 Emo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
1491 Co = _mm_xor_si128(Co, Emo);
1492 Emu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
1493 Cu = _mm_xor_si128(Cu, Emu);
1494 Abi = _mm_xor_si128(Abi, Di);
1495 Bsa = ROL64in128(Abi, 62);
1496 Ago = _mm_xor_si128(Ago, Do);
1497 Bse = ROL64in128(Ago, 55);
1498 Aku = _mm_xor_si128(Aku, Du);
1499 Bsi = ROL64in128(Aku, 39);
1500 Esa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
1501 Ca = _mm_xor_si128(Ca, Esa);
1502 Ama = _mm_xor_si128(Ama, Da);
1503 Bso = ROL64in128(Ama, 41);
1504 Ese = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
1505 Ce = _mm_xor_si128(Ce, Ese);
1506 Ase = _mm_xor_si128(Ase, De);
1507 Bsu = ROL64in128(Ase, 2);
1508 Esi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
1509 Ci = _mm_xor_si128(Ci, Esi);
1510 Eso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
1511 Co = _mm_xor_si128(Co, Eso);
1512 Esu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
1513 Cu = _mm_xor_si128(Cu, Esu);
1514 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
1515 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
1516 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
1517 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
1518 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
1519 Eba = _mm_xor_si128(Eba, Da);
1520 Bba = Eba;
1521 Ege = _mm_xor_si128(Ege, De);
1522 Bbe = ROL64in128(Ege, 44);
1523 Eki = _mm_xor_si128(Eki, Di);
1524 Bbi = ROL64in128(Eki, 43);
1525 Aba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
1526 Aba = _mm_xor_si128(Aba, SPLAT64(KeccakF1600Constants[13]));
1527 Ca = Aba;
1528 Emo = _mm_xor_si128(Emo, Do);
1529 Bbo = ROL64in128(Emo, 21);
1530 Abe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
1531 Ce = Abe;
1532 Esu = _mm_xor_si128(Esu, Du);
1533 Bbu = ROL64in128(Esu, 14);
1534 Abi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
1535 Ci = Abi;
1536 Abo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
1537 Co = Abo;
1538 Abu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
1539 Cu = Abu;
1540 Ebo = _mm_xor_si128(Ebo, Do);
1541 Bga = ROL64in128(Ebo, 28);
1542 Egu = _mm_xor_si128(Egu, Du);
1543 Bge = ROL64in128(Egu, 20);
1544 Eka = _mm_xor_si128(Eka, Da);
1545 Bgi = ROL64in128(Eka, 3);
1546 Aga = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
1547 Ca = _mm_xor_si128(Ca, Aga);
1548 Eme = _mm_xor_si128(Eme, De);
1549 Bgo = ROL64in128(Eme, 45);
1550 Age = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
1551 Ce = _mm_xor_si128(Ce, Age);
1552 Esi = _mm_xor_si128(Esi, Di);
1553 Bgu = ROL64in128(Esi, 61);
1554 Agi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
1555 Ci = _mm_xor_si128(Ci, Agi);
1556 Ago = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
1557 Co = _mm_xor_si128(Co, Ago);
1558 Agu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
1559 Cu = _mm_xor_si128(Cu, Agu);
1560 Ebe = _mm_xor_si128(Ebe, De);
1561 Bka = ROL64in128(Ebe, 1);
1562 Egi = _mm_xor_si128(Egi, Di);
1563 Bke = ROL64in128(Egi, 6);
1564 Eko = _mm_xor_si128(Eko, Do);
1565 Bki = ROL64in128(Eko, 25);
1566 Aka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
1567 Ca = _mm_xor_si128(Ca, Aka);
1568 Emu = _mm_xor_si128(Emu, Du);
1569 Bko = ROL64in128_8(Emu);
1570 Ake = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
1571 Ce = _mm_xor_si128(Ce, Ake);
1572 Esa = _mm_xor_si128(Esa, Da);
1573 Bku = ROL64in128(Esa, 18);
1574 Aki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
1575 Ci = _mm_xor_si128(Ci, Aki);
1576 Ako = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
1577 Co = _mm_xor_si128(Co, Ako);
1578 Aku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
1579 Cu = _mm_xor_si128(Cu, Aku);
1580 Ebu = _mm_xor_si128(Ebu, Du);
1581 Bma = ROL64in128(Ebu, 27);
1582 Ega = _mm_xor_si128(Ega, Da);
1583 Bme = ROL64in128(Ega, 36);
1584 Eke = _mm_xor_si128(Eke, De);
1585 Bmi = ROL64in128(Eke, 10);
1586 Ama = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
1587 Ca = _mm_xor_si128(Ca, Ama);
1588 Emi = _mm_xor_si128(Emi, Di);
1589 Bmo = ROL64in128(Emi, 15);
1590 Ame = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
1591 Ce = _mm_xor_si128(Ce, Ame);
1592 Eso = _mm_xor_si128(Eso, Do);
1593 Bmu = ROL64in128_56(Eso);
1594 Ami = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
1595 Ci = _mm_xor_si128(Ci, Ami);
1596 Amo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
1597 Co = _mm_xor_si128(Co, Amo);
1598 Amu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
1599 Cu = _mm_xor_si128(Cu, Amu);
1600 Ebi = _mm_xor_si128(Ebi, Di);
1601 Bsa = ROL64in128(Ebi, 62);
1602 Ego = _mm_xor_si128(Ego, Do);
1603 Bse = ROL64in128(Ego, 55);
1604 Eku = _mm_xor_si128(Eku, Du);
1605 Bsi = ROL64in128(Eku, 39);
1606 Asa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
1607 Ca = _mm_xor_si128(Ca, Asa);
1608 Ema = _mm_xor_si128(Ema, Da);
1609 Bso = ROL64in128(Ema, 41);
1610 Ase = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
1611 Ce = _mm_xor_si128(Ce, Ase);
1612 Ese = _mm_xor_si128(Ese, De);
1613 Bsu = ROL64in128(Ese, 2);
1614 Asi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
1615 Ci = _mm_xor_si128(Ci, Asi);
1616 Aso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
1617 Co = _mm_xor_si128(Co, Aso);
1618 Asu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
1619 Cu = _mm_xor_si128(Cu, Asu);
1620 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
1621 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
1622 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
1623 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
1624 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
1625 Aba = _mm_xor_si128(Aba, Da);
1626 Bba = Aba;
1627 Age = _mm_xor_si128(Age, De);
1628 Bbe = ROL64in128(Age, 44);
1629 Aki = _mm_xor_si128(Aki, Di);
1630 Bbi = ROL64in128(Aki, 43);
1631 Eba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
1632 Eba = _mm_xor_si128(Eba, SPLAT64(KeccakF1600Constants[14]));
1633 Ca = Eba;
1634 Amo = _mm_xor_si128(Amo, Do);
1635 Bbo = ROL64in128(Amo, 21);
1636 Ebe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
1637 Ce = Ebe;
1638 Asu = _mm_xor_si128(Asu, Du);
1639 Bbu = ROL64in128(Asu, 14);
1640 Ebi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
1641 Ci = Ebi;
1642 Ebo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
1643 Co = Ebo;
1644 Ebu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
1645 Cu = Ebu;
1646 Abo = _mm_xor_si128(Abo, Do);
1647 Bga = ROL64in128(Abo, 28);
1648 Agu = _mm_xor_si128(Agu, Du);
1649 Bge = ROL64in128(Agu, 20);
1650 Aka = _mm_xor_si128(Aka, Da);
1651 Bgi = ROL64in128(Aka, 3);
1652 Ega = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
1653 Ca = _mm_xor_si128(Ca, Ega);
1654 Ame = _mm_xor_si128(Ame, De);
1655 Bgo = ROL64in128(Ame, 45);
1656 Ege = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
1657 Ce = _mm_xor_si128(Ce, Ege);
1658 Asi = _mm_xor_si128(Asi, Di);
1659 Bgu = ROL64in128(Asi, 61);
1660 Egi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
1661 Ci = _mm_xor_si128(Ci, Egi);
1662 Ego = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
1663 Co = _mm_xor_si128(Co, Ego);
1664 Egu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
1665 Cu = _mm_xor_si128(Cu, Egu);
1666 Abe = _mm_xor_si128(Abe, De);
1667 Bka = ROL64in128(Abe, 1);
1668 Agi = _mm_xor_si128(Agi, Di);
1669 Bke = ROL64in128(Agi, 6);
1670 Ako = _mm_xor_si128(Ako, Do);
1671 Bki = ROL64in128(Ako, 25);
1672 Eka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
1673 Ca = _mm_xor_si128(Ca, Eka);
1674 Amu = _mm_xor_si128(Amu, Du);
1675 Bko = ROL64in128_8(Amu);
1676 Eke = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
1677 Ce = _mm_xor_si128(Ce, Eke);
1678 Asa = _mm_xor_si128(Asa, Da);
1679 Bku = ROL64in128(Asa, 18);
1680 Eki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
1681 Ci = _mm_xor_si128(Ci, Eki);
1682 Eko = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
1683 Co = _mm_xor_si128(Co, Eko);
1684 Eku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
1685 Cu = _mm_xor_si128(Cu, Eku);
1686 Abu = _mm_xor_si128(Abu, Du);
1687 Bma = ROL64in128(Abu, 27);
1688 Aga = _mm_xor_si128(Aga, Da);
1689 Bme = ROL64in128(Aga, 36);
1690 Ake = _mm_xor_si128(Ake, De);
1691 Bmi = ROL64in128(Ake, 10);
1692 Ema = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
1693 Ca = _mm_xor_si128(Ca, Ema);
1694 Ami = _mm_xor_si128(Ami, Di);
1695 Bmo = ROL64in128(Ami, 15);
1696 Eme = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
1697 Ce = _mm_xor_si128(Ce, Eme);
1698 Aso = _mm_xor_si128(Aso, Do);
1699 Bmu = ROL64in128_56(Aso);
1700 Emi = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
1701 Ci = _mm_xor_si128(Ci, Emi);
1702 Emo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
1703 Co = _mm_xor_si128(Co, Emo);
1704 Emu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
1705 Cu = _mm_xor_si128(Cu, Emu);
1706 Abi = _mm_xor_si128(Abi, Di);
1707 Bsa = ROL64in128(Abi, 62);
1708 Ago = _mm_xor_si128(Ago, Do);
1709 Bse = ROL64in128(Ago, 55);
1710 Aku = _mm_xor_si128(Aku, Du);
1711 Bsi = ROL64in128(Aku, 39);
1712 Esa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
1713 Ca = _mm_xor_si128(Ca, Esa);
1714 Ama = _mm_xor_si128(Ama, Da);
1715 Bso = ROL64in128(Ama, 41);
1716 Ese = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
1717 Ce = _mm_xor_si128(Ce, Ese);
1718 Ase = _mm_xor_si128(Ase, De);
1719 Bsu = ROL64in128(Ase, 2);
1720 Esi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
1721 Ci = _mm_xor_si128(Ci, Esi);
1722 Eso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
1723 Co = _mm_xor_si128(Co, Eso);
1724 Esu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
1725 Cu = _mm_xor_si128(Cu, Esu);
1726 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
1727 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
1728 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
1729 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
1730 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
1731 Eba = _mm_xor_si128(Eba, Da);
1732 Bba = Eba;
1733 Ege = _mm_xor_si128(Ege, De);
1734 Bbe = ROL64in128(Ege, 44);
1735 Eki = _mm_xor_si128(Eki, Di);
1736 Bbi = ROL64in128(Eki, 43);
1737 Aba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
1738 Aba = _mm_xor_si128(Aba, SPLAT64(KeccakF1600Constants[15]));
1739 Ca = Aba;
1740 Emo = _mm_xor_si128(Emo, Do);
1741 Bbo = ROL64in128(Emo, 21);
1742 Abe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
1743 Ce = Abe;
1744 Esu = _mm_xor_si128(Esu, Du);
1745 Bbu = ROL64in128(Esu, 14);
1746 Abi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
1747 Ci = Abi;
1748 Abo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
1749 Co = Abo;
1750 Abu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
1751 Cu = Abu;
1752 Ebo = _mm_xor_si128(Ebo, Do);
1753 Bga = ROL64in128(Ebo, 28);
1754 Egu = _mm_xor_si128(Egu, Du);
1755 Bge = ROL64in128(Egu, 20);
1756 Eka = _mm_xor_si128(Eka, Da);
1757 Bgi = ROL64in128(Eka, 3);
1758 Aga = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
1759 Ca = _mm_xor_si128(Ca, Aga);
1760 Eme = _mm_xor_si128(Eme, De);
1761 Bgo = ROL64in128(Eme, 45);
1762 Age = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
1763 Ce = _mm_xor_si128(Ce, Age);
1764 Esi = _mm_xor_si128(Esi, Di);
1765 Bgu = ROL64in128(Esi, 61);
1766 Agi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
1767 Ci = _mm_xor_si128(Ci, Agi);
1768 Ago = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
1769 Co = _mm_xor_si128(Co, Ago);
1770 Agu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
1771 Cu = _mm_xor_si128(Cu, Agu);
1772 Ebe = _mm_xor_si128(Ebe, De);
1773 Bka = ROL64in128(Ebe, 1);
1774 Egi = _mm_xor_si128(Egi, Di);
1775 Bke = ROL64in128(Egi, 6);
1776 Eko = _mm_xor_si128(Eko, Do);
1777 Bki = ROL64in128(Eko, 25);
1778 Aka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
1779 Ca = _mm_xor_si128(Ca, Aka);
1780 Emu = _mm_xor_si128(Emu, Du);
1781 Bko = ROL64in128_8(Emu);
1782 Ake = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
1783 Ce = _mm_xor_si128(Ce, Ake);
1784 Esa = _mm_xor_si128(Esa, Da);
1785 Bku = ROL64in128(Esa, 18);
1786 Aki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
1787 Ci = _mm_xor_si128(Ci, Aki);
1788 Ako = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
1789 Co = _mm_xor_si128(Co, Ako);
1790 Aku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
1791 Cu = _mm_xor_si128(Cu, Aku);
1792 Ebu = _mm_xor_si128(Ebu, Du);
1793 Bma = ROL64in128(Ebu, 27);
1794 Ega = _mm_xor_si128(Ega, Da);
1795 Bme = ROL64in128(Ega, 36);
1796 Eke = _mm_xor_si128(Eke, De);
1797 Bmi = ROL64in128(Eke, 10);
1798 Ama = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
1799 Ca = _mm_xor_si128(Ca, Ama);
1800 Emi = _mm_xor_si128(Emi, Di);
1801 Bmo = ROL64in128(Emi, 15);
1802 Ame = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
1803 Ce = _mm_xor_si128(Ce, Ame);
1804 Eso = _mm_xor_si128(Eso, Do);
1805 Bmu = ROL64in128_56(Eso);
1806 Ami = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
1807 Ci = _mm_xor_si128(Ci, Ami);
1808 Amo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
1809 Co = _mm_xor_si128(Co, Amo);
1810 Amu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
1811 Cu = _mm_xor_si128(Cu, Amu);
1812 Ebi = _mm_xor_si128(Ebi, Di);
1813 Bsa = ROL64in128(Ebi, 62);
1814 Ego = _mm_xor_si128(Ego, Do);
1815 Bse = ROL64in128(Ego, 55);
1816 Eku = _mm_xor_si128(Eku, Du);
1817 Bsi = ROL64in128(Eku, 39);
1818 Asa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
1819 Ca = _mm_xor_si128(Ca, Asa);
1820 Ema = _mm_xor_si128(Ema, Da);
1821 Bso = ROL64in128(Ema, 41);
1822 Ase = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
1823 Ce = _mm_xor_si128(Ce, Ase);
1824 Ese = _mm_xor_si128(Ese, De);
1825 Bsu = ROL64in128(Ese, 2);
1826 Asi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
1827 Ci = _mm_xor_si128(Ci, Asi);
1828 Aso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
1829 Co = _mm_xor_si128(Co, Aso);
1830 Asu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
1831 Cu = _mm_xor_si128(Cu, Asu);
1832 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
1833 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
1834 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
1835 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
1836 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
1837 Aba = _mm_xor_si128(Aba, Da);
1838 Bba = Aba;
1839 Age = _mm_xor_si128(Age, De);
1840 Bbe = ROL64in128(Age, 44);
1841 Aki = _mm_xor_si128(Aki, Di);
1842 Bbi = ROL64in128(Aki, 43);
1843 Eba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
1844 Eba = _mm_xor_si128(Eba, SPLAT64(KeccakF1600Constants[16]));
1845 Ca = Eba;
1846 Amo = _mm_xor_si128(Amo, Do);
1847 Bbo = ROL64in128(Amo, 21);
1848 Ebe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
1849 Ce = Ebe;
1850 Asu = _mm_xor_si128(Asu, Du);
1851 Bbu = ROL64in128(Asu, 14);
1852 Ebi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
1853 Ci = Ebi;
1854 Ebo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
1855 Co = Ebo;
1856 Ebu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
1857 Cu = Ebu;
1858 Abo = _mm_xor_si128(Abo, Do);
1859 Bga = ROL64in128(Abo, 28);
1860 Agu = _mm_xor_si128(Agu, Du);
1861 Bge = ROL64in128(Agu, 20);
1862 Aka = _mm_xor_si128(Aka, Da);
1863 Bgi = ROL64in128(Aka, 3);
1864 Ega = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
1865 Ca = _mm_xor_si128(Ca, Ega);
1866 Ame = _mm_xor_si128(Ame, De);
1867 Bgo = ROL64in128(Ame, 45);
1868 Ege = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
1869 Ce = _mm_xor_si128(Ce, Ege);
1870 Asi = _mm_xor_si128(Asi, Di);
1871 Bgu = ROL64in128(Asi, 61);
1872 Egi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
1873 Ci = _mm_xor_si128(Ci, Egi);
1874 Ego = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
1875 Co = _mm_xor_si128(Co, Ego);
1876 Egu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
1877 Cu = _mm_xor_si128(Cu, Egu);
1878 Abe = _mm_xor_si128(Abe, De);
1879 Bka = ROL64in128(Abe, 1);
1880 Agi = _mm_xor_si128(Agi, Di);
1881 Bke = ROL64in128(Agi, 6);
1882 Ako = _mm_xor_si128(Ako, Do);
1883 Bki = ROL64in128(Ako, 25);
1884 Eka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
1885 Ca = _mm_xor_si128(Ca, Eka);
1886 Amu = _mm_xor_si128(Amu, Du);
1887 Bko = ROL64in128_8(Amu);
1888 Eke = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
1889 Ce = _mm_xor_si128(Ce, Eke);
1890 Asa = _mm_xor_si128(Asa, Da);
1891 Bku = ROL64in128(Asa, 18);
1892 Eki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
1893 Ci = _mm_xor_si128(Ci, Eki);
1894 Eko = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
1895 Co = _mm_xor_si128(Co, Eko);
1896 Eku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
1897 Cu = _mm_xor_si128(Cu, Eku);
1898 Abu = _mm_xor_si128(Abu, Du);
1899 Bma = ROL64in128(Abu, 27);
1900 Aga = _mm_xor_si128(Aga, Da);
1901 Bme = ROL64in128(Aga, 36);
1902 Ake = _mm_xor_si128(Ake, De);
1903 Bmi = ROL64in128(Ake, 10);
1904 Ema = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
1905 Ca = _mm_xor_si128(Ca, Ema);
1906 Ami = _mm_xor_si128(Ami, Di);
1907 Bmo = ROL64in128(Ami, 15);
1908 Eme = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
1909 Ce = _mm_xor_si128(Ce, Eme);
1910 Aso = _mm_xor_si128(Aso, Do);
1911 Bmu = ROL64in128_56(Aso);
1912 Emi = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
1913 Ci = _mm_xor_si128(Ci, Emi);
1914 Emo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
1915 Co = _mm_xor_si128(Co, Emo);
1916 Emu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
1917 Cu = _mm_xor_si128(Cu, Emu);
1918 Abi = _mm_xor_si128(Abi, Di);
1919 Bsa = ROL64in128(Abi, 62);
1920 Ago = _mm_xor_si128(Ago, Do);
1921 Bse = ROL64in128(Ago, 55);
1922 Aku = _mm_xor_si128(Aku, Du);
1923 Bsi = ROL64in128(Aku, 39);
1924 Esa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
1925 Ca = _mm_xor_si128(Ca, Esa);
1926 Ama = _mm_xor_si128(Ama, Da);
1927 Bso = ROL64in128(Ama, 41);
1928 Ese = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
1929 Ce = _mm_xor_si128(Ce, Ese);
1930 Ase = _mm_xor_si128(Ase, De);
1931 Bsu = ROL64in128(Ase, 2);
1932 Esi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
1933 Ci = _mm_xor_si128(Ci, Esi);
1934 Eso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
1935 Co = _mm_xor_si128(Co, Eso);
1936 Esu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
1937 Cu = _mm_xor_si128(Cu, Esu);
1938 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
1939 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
1940 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
1941 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
1942 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
1943 Eba = _mm_xor_si128(Eba, Da);
1944 Bba = Eba;
1945 Ege = _mm_xor_si128(Ege, De);
1946 Bbe = ROL64in128(Ege, 44);
1947 Eki = _mm_xor_si128(Eki, Di);
1948 Bbi = ROL64in128(Eki, 43);
1949 Aba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
1950 Aba = _mm_xor_si128(Aba, SPLAT64(KeccakF1600Constants[17]));
1951 Ca = Aba;
1952 Emo = _mm_xor_si128(Emo, Do);
1953 Bbo = ROL64in128(Emo, 21);
1954 Abe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
1955 Ce = Abe;
1956 Esu = _mm_xor_si128(Esu, Du);
1957 Bbu = ROL64in128(Esu, 14);
1958 Abi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
1959 Ci = Abi;
1960 Abo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
1961 Co = Abo;
1962 Abu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
1963 Cu = Abu;
1964 Ebo = _mm_xor_si128(Ebo, Do);
1965 Bga = ROL64in128(Ebo, 28);
1966 Egu = _mm_xor_si128(Egu, Du);
1967 Bge = ROL64in128(Egu, 20);
1968 Eka = _mm_xor_si128(Eka, Da);
1969 Bgi = ROL64in128(Eka, 3);
1970 Aga = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
1971 Ca = _mm_xor_si128(Ca, Aga);
1972 Eme = _mm_xor_si128(Eme, De);
1973 Bgo = ROL64in128(Eme, 45);
1974 Age = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
1975 Ce = _mm_xor_si128(Ce, Age);
1976 Esi = _mm_xor_si128(Esi, Di);
1977 Bgu = ROL64in128(Esi, 61);
1978 Agi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
1979 Ci = _mm_xor_si128(Ci, Agi);
1980 Ago = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
1981 Co = _mm_xor_si128(Co, Ago);
1982 Agu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
1983 Cu = _mm_xor_si128(Cu, Agu);
1984 Ebe = _mm_xor_si128(Ebe, De);
1985 Bka = ROL64in128(Ebe, 1);
1986 Egi = _mm_xor_si128(Egi, Di);
1987 Bke = ROL64in128(Egi, 6);
1988 Eko = _mm_xor_si128(Eko, Do);
1989 Bki = ROL64in128(Eko, 25);
1990 Aka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
1991 Ca = _mm_xor_si128(Ca, Aka);
1992 Emu = _mm_xor_si128(Emu, Du);
1993 Bko = ROL64in128_8(Emu);
1994 Ake = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
1995 Ce = _mm_xor_si128(Ce, Ake);
1996 Esa = _mm_xor_si128(Esa, Da);
1997 Bku = ROL64in128(Esa, 18);
1998 Aki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
1999 Ci = _mm_xor_si128(Ci, Aki);
2000 Ako = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
2001 Co = _mm_xor_si128(Co, Ako);
2002 Aku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
2003 Cu = _mm_xor_si128(Cu, Aku);
2004 Ebu = _mm_xor_si128(Ebu, Du);
2005 Bma = ROL64in128(Ebu, 27);
2006 Ega = _mm_xor_si128(Ega, Da);
2007 Bme = ROL64in128(Ega, 36);
2008 Eke = _mm_xor_si128(Eke, De);
2009 Bmi = ROL64in128(Eke, 10);
2010 Ama = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
2011 Ca = _mm_xor_si128(Ca, Ama);
2012 Emi = _mm_xor_si128(Emi, Di);
2013 Bmo = ROL64in128(Emi, 15);
2014 Ame = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
2015 Ce = _mm_xor_si128(Ce, Ame);
2016 Eso = _mm_xor_si128(Eso, Do);
2017 Bmu = ROL64in128_56(Eso);
2018 Ami = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
2019 Ci = _mm_xor_si128(Ci, Ami);
2020 Amo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
2021 Co = _mm_xor_si128(Co, Amo);
2022 Amu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
2023 Cu = _mm_xor_si128(Cu, Amu);
2024 Ebi = _mm_xor_si128(Ebi, Di);
2025 Bsa = ROL64in128(Ebi, 62);
2026 Ego = _mm_xor_si128(Ego, Do);
2027 Bse = ROL64in128(Ego, 55);
2028 Eku = _mm_xor_si128(Eku, Du);
2029 Bsi = ROL64in128(Eku, 39);
2030 Asa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
2031 Ca = _mm_xor_si128(Ca, Asa);
2032 Ema = _mm_xor_si128(Ema, Da);
2033 Bso = ROL64in128(Ema, 41);
2034 Ase = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
2035 Ce = _mm_xor_si128(Ce, Ase);
2036 Ese = _mm_xor_si128(Ese, De);
2037 Bsu = ROL64in128(Ese, 2);
2038 Asi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
2039 Ci = _mm_xor_si128(Ci, Asi);
2040 Aso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
2041 Co = _mm_xor_si128(Co, Aso);
2042 Asu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
2043 Cu = _mm_xor_si128(Cu, Asu);
2044 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
2045 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
2046 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
2047 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
2048 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
2049 Aba = _mm_xor_si128(Aba, Da);
2050 Bba = Aba;
2051 Age = _mm_xor_si128(Age, De);
2052 Bbe = ROL64in128(Age, 44);
2053 Aki = _mm_xor_si128(Aki, Di);
2054 Bbi = ROL64in128(Aki, 43);
2055 Eba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
2056 Eba = _mm_xor_si128(Eba, SPLAT64(KeccakF1600Constants[18]));
2057 Ca = Eba;
2058 Amo = _mm_xor_si128(Amo, Do);
2059 Bbo = ROL64in128(Amo, 21);
2060 Ebe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
2061 Ce = Ebe;
2062 Asu = _mm_xor_si128(Asu, Du);
2063 Bbu = ROL64in128(Asu, 14);
2064 Ebi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
2065 Ci = Ebi;
2066 Ebo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
2067 Co = Ebo;
2068 Ebu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
2069 Cu = Ebu;
2070 Abo = _mm_xor_si128(Abo, Do);
2071 Bga = ROL64in128(Abo, 28);
2072 Agu = _mm_xor_si128(Agu, Du);
2073 Bge = ROL64in128(Agu, 20);
2074 Aka = _mm_xor_si128(Aka, Da);
2075 Bgi = ROL64in128(Aka, 3);
2076 Ega = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
2077 Ca = _mm_xor_si128(Ca, Ega);
2078 Ame = _mm_xor_si128(Ame, De);
2079 Bgo = ROL64in128(Ame, 45);
2080 Ege = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
2081 Ce = _mm_xor_si128(Ce, Ege);
2082 Asi = _mm_xor_si128(Asi, Di);
2083 Bgu = ROL64in128(Asi, 61);
2084 Egi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
2085 Ci = _mm_xor_si128(Ci, Egi);
2086 Ego = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
2087 Co = _mm_xor_si128(Co, Ego);
2088 Egu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
2089 Cu = _mm_xor_si128(Cu, Egu);
2090 Abe = _mm_xor_si128(Abe, De);
2091 Bka = ROL64in128(Abe, 1);
2092 Agi = _mm_xor_si128(Agi, Di);
2093 Bke = ROL64in128(Agi, 6);
2094 Ako = _mm_xor_si128(Ako, Do);
2095 Bki = ROL64in128(Ako, 25);
2096 Eka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
2097 Ca = _mm_xor_si128(Ca, Eka);
2098 Amu = _mm_xor_si128(Amu, Du);
2099 Bko = ROL64in128_8(Amu);
2100 Eke = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
2101 Ce = _mm_xor_si128(Ce, Eke);
2102 Asa = _mm_xor_si128(Asa, Da);
2103 Bku = ROL64in128(Asa, 18);
2104 Eki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
2105 Ci = _mm_xor_si128(Ci, Eki);
2106 Eko = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
2107 Co = _mm_xor_si128(Co, Eko);
2108 Eku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
2109 Cu = _mm_xor_si128(Cu, Eku);
2110 Abu = _mm_xor_si128(Abu, Du);
2111 Bma = ROL64in128(Abu, 27);
2112 Aga = _mm_xor_si128(Aga, Da);
2113 Bme = ROL64in128(Aga, 36);
2114 Ake = _mm_xor_si128(Ake, De);
2115 Bmi = ROL64in128(Ake, 10);
2116 Ema = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
2117 Ca = _mm_xor_si128(Ca, Ema);
2118 Ami = _mm_xor_si128(Ami, Di);
2119 Bmo = ROL64in128(Ami, 15);
2120 Eme = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
2121 Ce = _mm_xor_si128(Ce, Eme);
2122 Aso = _mm_xor_si128(Aso, Do);
2123 Bmu = ROL64in128_56(Aso);
2124 Emi = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
2125 Ci = _mm_xor_si128(Ci, Emi);
2126 Emo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
2127 Co = _mm_xor_si128(Co, Emo);
2128 Emu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
2129 Cu = _mm_xor_si128(Cu, Emu);
2130 Abi = _mm_xor_si128(Abi, Di);
2131 Bsa = ROL64in128(Abi, 62);
2132 Ago = _mm_xor_si128(Ago, Do);
2133 Bse = ROL64in128(Ago, 55);
2134 Aku = _mm_xor_si128(Aku, Du);
2135 Bsi = ROL64in128(Aku, 39);
2136 Esa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
2137 Ca = _mm_xor_si128(Ca, Esa);
2138 Ama = _mm_xor_si128(Ama, Da);
2139 Bso = ROL64in128(Ama, 41);
2140 Ese = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
2141 Ce = _mm_xor_si128(Ce, Ese);
2142 Ase = _mm_xor_si128(Ase, De);
2143 Bsu = ROL64in128(Ase, 2);
2144 Esi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
2145 Ci = _mm_xor_si128(Ci, Esi);
2146 Eso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
2147 Co = _mm_xor_si128(Co, Eso);
2148 Esu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
2149 Cu = _mm_xor_si128(Cu, Esu);
2150 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
2151 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
2152 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
2153 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
2154 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
2155 Eba = _mm_xor_si128(Eba, Da);
2156 Bba = Eba;
2157 Ege = _mm_xor_si128(Ege, De);
2158 Bbe = ROL64in128(Ege, 44);
2159 Eki = _mm_xor_si128(Eki, Di);
2160 Bbi = ROL64in128(Eki, 43);
2161 Aba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
2162 Aba = _mm_xor_si128(Aba, SPLAT64(KeccakF1600Constants[19]));
2163 Ca = Aba;
2164 Emo = _mm_xor_si128(Emo, Do);
2165 Bbo = ROL64in128(Emo, 21);
2166 Abe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
2167 Ce = Abe;
2168 Esu = _mm_xor_si128(Esu, Du);
2169 Bbu = ROL64in128(Esu, 14);
2170 Abi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
2171 Ci = Abi;
2172 Abo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
2173 Co = Abo;
2174 Abu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
2175 Cu = Abu;
2176 Ebo = _mm_xor_si128(Ebo, Do);
2177 Bga = ROL64in128(Ebo, 28);
2178 Egu = _mm_xor_si128(Egu, Du);
2179 Bge = ROL64in128(Egu, 20);
2180 Eka = _mm_xor_si128(Eka, Da);
2181 Bgi = ROL64in128(Eka, 3);
2182 Aga = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
2183 Ca = _mm_xor_si128(Ca, Aga);
2184 Eme = _mm_xor_si128(Eme, De);
2185 Bgo = ROL64in128(Eme, 45);
2186 Age = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
2187 Ce = _mm_xor_si128(Ce, Age);
2188 Esi = _mm_xor_si128(Esi, Di);
2189 Bgu = ROL64in128(Esi, 61);
2190 Agi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
2191 Ci = _mm_xor_si128(Ci, Agi);
2192 Ago = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
2193 Co = _mm_xor_si128(Co, Ago);
2194 Agu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
2195 Cu = _mm_xor_si128(Cu, Agu);
2196 Ebe = _mm_xor_si128(Ebe, De);
2197 Bka = ROL64in128(Ebe, 1);
2198 Egi = _mm_xor_si128(Egi, Di);
2199 Bke = ROL64in128(Egi, 6);
2200 Eko = _mm_xor_si128(Eko, Do);
2201 Bki = ROL64in128(Eko, 25);
2202 Aka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
2203 Ca = _mm_xor_si128(Ca, Aka);
2204 Emu = _mm_xor_si128(Emu, Du);
2205 Bko = ROL64in128_8(Emu);
2206 Ake = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
2207 Ce = _mm_xor_si128(Ce, Ake);
2208 Esa = _mm_xor_si128(Esa, Da);
2209 Bku = ROL64in128(Esa, 18);
2210 Aki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
2211 Ci = _mm_xor_si128(Ci, Aki);
2212 Ako = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
2213 Co = _mm_xor_si128(Co, Ako);
2214 Aku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
2215 Cu = _mm_xor_si128(Cu, Aku);
2216 Ebu = _mm_xor_si128(Ebu, Du);
2217 Bma = ROL64in128(Ebu, 27);
2218 Ega = _mm_xor_si128(Ega, Da);
2219 Bme = ROL64in128(Ega, 36);
2220 Eke = _mm_xor_si128(Eke, De);
2221 Bmi = ROL64in128(Eke, 10);
2222 Ama = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
2223 Ca = _mm_xor_si128(Ca, Ama);
2224 Emi = _mm_xor_si128(Emi, Di);
2225 Bmo = ROL64in128(Emi, 15);
2226 Ame = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
2227 Ce = _mm_xor_si128(Ce, Ame);
2228 Eso = _mm_xor_si128(Eso, Do);
2229 Bmu = ROL64in128_56(Eso);
2230 Ami = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
2231 Ci = _mm_xor_si128(Ci, Ami);
2232 Amo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
2233 Co = _mm_xor_si128(Co, Amo);
2234 Amu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
2235 Cu = _mm_xor_si128(Cu, Amu);
2236 Ebi = _mm_xor_si128(Ebi, Di);
2237 Bsa = ROL64in128(Ebi, 62);
2238 Ego = _mm_xor_si128(Ego, Do);
2239 Bse = ROL64in128(Ego, 55);
2240 Eku = _mm_xor_si128(Eku, Du);
2241 Bsi = ROL64in128(Eku, 39);
2242 Asa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
2243 Ca = _mm_xor_si128(Ca, Asa);
2244 Ema = _mm_xor_si128(Ema, Da);
2245 Bso = ROL64in128(Ema, 41);
2246 Ase = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
2247 Ce = _mm_xor_si128(Ce, Ase);
2248 Ese = _mm_xor_si128(Ese, De);
2249 Bsu = ROL64in128(Ese, 2);
2250 Asi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
2251 Ci = _mm_xor_si128(Ci, Asi);
2252 Aso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
2253 Co = _mm_xor_si128(Co, Aso);
2254 Asu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
2255 Cu = _mm_xor_si128(Cu, Asu);
2256 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
2257 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
2258 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
2259 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
2260 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
2261 Aba = _mm_xor_si128(Aba, Da);
2262 Bba = Aba;
2263 Age = _mm_xor_si128(Age, De);
2264 Bbe = ROL64in128(Age, 44);
2265 Aki = _mm_xor_si128(Aki, Di);
2266 Bbi = ROL64in128(Aki, 43);
2267 Eba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
2268 Eba = _mm_xor_si128(Eba, SPLAT64(KeccakF1600Constants[20]));
2269 Ca = Eba;
2270 Amo = _mm_xor_si128(Amo, Do);
2271 Bbo = ROL64in128(Amo, 21);
2272 Ebe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
2273 Ce = Ebe;
2274 Asu = _mm_xor_si128(Asu, Du);
2275 Bbu = ROL64in128(Asu, 14);
2276 Ebi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
2277 Ci = Ebi;
2278 Ebo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
2279 Co = Ebo;
2280 Ebu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
2281 Cu = Ebu;
2282 Abo = _mm_xor_si128(Abo, Do);
2283 Bga = ROL64in128(Abo, 28);
2284 Agu = _mm_xor_si128(Agu, Du);
2285 Bge = ROL64in128(Agu, 20);
2286 Aka = _mm_xor_si128(Aka, Da);
2287 Bgi = ROL64in128(Aka, 3);
2288 Ega = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
2289 Ca = _mm_xor_si128(Ca, Ega);
2290 Ame = _mm_xor_si128(Ame, De);
2291 Bgo = ROL64in128(Ame, 45);
2292 Ege = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
2293 Ce = _mm_xor_si128(Ce, Ege);
2294 Asi = _mm_xor_si128(Asi, Di);
2295 Bgu = ROL64in128(Asi, 61);
2296 Egi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
2297 Ci = _mm_xor_si128(Ci, Egi);
2298 Ego = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
2299 Co = _mm_xor_si128(Co, Ego);
2300 Egu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
2301 Cu = _mm_xor_si128(Cu, Egu);
2302 Abe = _mm_xor_si128(Abe, De);
2303 Bka = ROL64in128(Abe, 1);
2304 Agi = _mm_xor_si128(Agi, Di);
2305 Bke = ROL64in128(Agi, 6);
2306 Ako = _mm_xor_si128(Ako, Do);
2307 Bki = ROL64in128(Ako, 25);
2308 Eka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
2309 Ca = _mm_xor_si128(Ca, Eka);
2310 Amu = _mm_xor_si128(Amu, Du);
2311 Bko = ROL64in128_8(Amu);
2312 Eke = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
2313 Ce = _mm_xor_si128(Ce, Eke);
2314 Asa = _mm_xor_si128(Asa, Da);
2315 Bku = ROL64in128(Asa, 18);
2316 Eki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
2317 Ci = _mm_xor_si128(Ci, Eki);
2318 Eko = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
2319 Co = _mm_xor_si128(Co, Eko);
2320 Eku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
2321 Cu = _mm_xor_si128(Cu, Eku);
2322 Abu = _mm_xor_si128(Abu, Du);
2323 Bma = ROL64in128(Abu, 27);
2324 Aga = _mm_xor_si128(Aga, Da);
2325 Bme = ROL64in128(Aga, 36);
2326 Ake = _mm_xor_si128(Ake, De);
2327 Bmi = ROL64in128(Ake, 10);
2328 Ema = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
2329 Ca = _mm_xor_si128(Ca, Ema);
2330 Ami = _mm_xor_si128(Ami, Di);
2331 Bmo = ROL64in128(Ami, 15);
2332 Eme = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
2333 Ce = _mm_xor_si128(Ce, Eme);
2334 Aso = _mm_xor_si128(Aso, Do);
2335 Bmu = ROL64in128_56(Aso);
2336 Emi = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
2337 Ci = _mm_xor_si128(Ci, Emi);
2338 Emo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
2339 Co = _mm_xor_si128(Co, Emo);
2340 Emu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
2341 Cu = _mm_xor_si128(Cu, Emu);
2342 Abi = _mm_xor_si128(Abi, Di);
2343 Bsa = ROL64in128(Abi, 62);
2344 Ago = _mm_xor_si128(Ago, Do);
2345 Bse = ROL64in128(Ago, 55);
2346 Aku = _mm_xor_si128(Aku, Du);
2347 Bsi = ROL64in128(Aku, 39);
2348 Esa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
2349 Ca = _mm_xor_si128(Ca, Esa);
2350 Ama = _mm_xor_si128(Ama, Da);
2351 Bso = ROL64in128(Ama, 41);
2352 Ese = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
2353 Ce = _mm_xor_si128(Ce, Ese);
2354 Ase = _mm_xor_si128(Ase, De);
2355 Bsu = ROL64in128(Ase, 2);
2356 Esi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
2357 Ci = _mm_xor_si128(Ci, Esi);
2358 Eso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
2359 Co = _mm_xor_si128(Co, Eso);
2360 Esu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
2361 Cu = _mm_xor_si128(Cu, Esu);
2362 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
2363 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
2364 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
2365 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
2366 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
2367 Eba = _mm_xor_si128(Eba, Da);
2368 Bba = Eba;
2369 Ege = _mm_xor_si128(Ege, De);
2370 Bbe = ROL64in128(Ege, 44);
2371 Eki = _mm_xor_si128(Eki, Di);
2372 Bbi = ROL64in128(Eki, 43);
2373 Aba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
2374 Aba = _mm_xor_si128(Aba, SPLAT64(KeccakF1600Constants[21]));
2375 Ca = Aba;
2376 Emo = _mm_xor_si128(Emo, Do);
2377 Bbo = ROL64in128(Emo, 21);
2378 Abe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
2379 Ce = Abe;
2380 Esu = _mm_xor_si128(Esu, Du);
2381 Bbu = ROL64in128(Esu, 14);
2382 Abi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
2383 Ci = Abi;
2384 Abo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
2385 Co = Abo;
2386 Abu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
2387 Cu = Abu;
2388 Ebo = _mm_xor_si128(Ebo, Do);
2389 Bga = ROL64in128(Ebo, 28);
2390 Egu = _mm_xor_si128(Egu, Du);
2391 Bge = ROL64in128(Egu, 20);
2392 Eka = _mm_xor_si128(Eka, Da);
2393 Bgi = ROL64in128(Eka, 3);
2394 Aga = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
2395 Ca = _mm_xor_si128(Ca, Aga);
2396 Eme = _mm_xor_si128(Eme, De);
2397 Bgo = ROL64in128(Eme, 45);
2398 Age = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
2399 Ce = _mm_xor_si128(Ce, Age);
2400 Esi = _mm_xor_si128(Esi, Di);
2401 Bgu = ROL64in128(Esi, 61);
2402 Agi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
2403 Ci = _mm_xor_si128(Ci, Agi);
2404 Ago = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
2405 Co = _mm_xor_si128(Co, Ago);
2406 Agu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
2407 Cu = _mm_xor_si128(Cu, Agu);
2408 Ebe = _mm_xor_si128(Ebe, De);
2409 Bka = ROL64in128(Ebe, 1);
2410 Egi = _mm_xor_si128(Egi, Di);
2411 Bke = ROL64in128(Egi, 6);
2412 Eko = _mm_xor_si128(Eko, Do);
2413 Bki = ROL64in128(Eko, 25);
2414 Aka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
2415 Ca = _mm_xor_si128(Ca, Aka);
2416 Emu = _mm_xor_si128(Emu, Du);
2417 Bko = ROL64in128_8(Emu);
2418 Ake = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
2419 Ce = _mm_xor_si128(Ce, Ake);
2420 Esa = _mm_xor_si128(Esa, Da);
2421 Bku = ROL64in128(Esa, 18);
2422 Aki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
2423 Ci = _mm_xor_si128(Ci, Aki);
2424 Ako = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
2425 Co = _mm_xor_si128(Co, Ako);
2426 Aku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
2427 Cu = _mm_xor_si128(Cu, Aku);
2428 Ebu = _mm_xor_si128(Ebu, Du);
2429 Bma = ROL64in128(Ebu, 27);
2430 Ega = _mm_xor_si128(Ega, Da);
2431 Bme = ROL64in128(Ega, 36);
2432 Eke = _mm_xor_si128(Eke, De);
2433 Bmi = ROL64in128(Eke, 10);
2434 Ama = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
2435 Ca = _mm_xor_si128(Ca, Ama);
2436 Emi = _mm_xor_si128(Emi, Di);
2437 Bmo = ROL64in128(Emi, 15);
2438 Ame = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
2439 Ce = _mm_xor_si128(Ce, Ame);
2440 Eso = _mm_xor_si128(Eso, Do);
2441 Bmu = ROL64in128_56(Eso);
2442 Ami = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
2443 Ci = _mm_xor_si128(Ci, Ami);
2444 Amo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
2445 Co = _mm_xor_si128(Co, Amo);
2446 Amu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
2447 Cu = _mm_xor_si128(Cu, Amu);
2448 Ebi = _mm_xor_si128(Ebi, Di);
2449 Bsa = ROL64in128(Ebi, 62);
2450 Ego = _mm_xor_si128(Ego, Do);
2451 Bse = ROL64in128(Ego, 55);
2452 Eku = _mm_xor_si128(Eku, Du);
2453 Bsi = ROL64in128(Eku, 39);
2454 Asa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
2455 Ca = _mm_xor_si128(Ca, Asa);
2456 Ema = _mm_xor_si128(Ema, Da);
2457 Bso = ROL64in128(Ema, 41);
2458 Ase = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
2459 Ce = _mm_xor_si128(Ce, Ase);
2460 Ese = _mm_xor_si128(Ese, De);
2461 Bsu = ROL64in128(Ese, 2);
2462 Asi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
2463 Ci = _mm_xor_si128(Ci, Asi);
2464 Aso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
2465 Co = _mm_xor_si128(Co, Aso);
2466 Asu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
2467 Cu = _mm_xor_si128(Cu, Asu);
2468 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
2469 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
2470 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
2471 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
2472 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
2473 Aba = _mm_xor_si128(Aba, Da);
2474 Bba = Aba;
2475 Age = _mm_xor_si128(Age, De);
2476 Bbe = ROL64in128(Age, 44);
2477 Aki = _mm_xor_si128(Aki, Di);
2478 Bbi = ROL64in128(Aki, 43);
2479 Eba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
2480 Eba = _mm_xor_si128(Eba, SPLAT64(KeccakF1600Constants[22]));
2481 Ca = Eba;
2482 Amo = _mm_xor_si128(Amo, Do);
2483 Bbo = ROL64in128(Amo, 21);
2484 Ebe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
2485 Ce = Ebe;
2486 Asu = _mm_xor_si128(Asu, Du);
2487 Bbu = ROL64in128(Asu, 14);
2488 Ebi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
2489 Ci = Ebi;
2490 Ebo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
2491 Co = Ebo;
2492 Ebu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
2493 Cu = Ebu;
2494 Abo = _mm_xor_si128(Abo, Do);
2495 Bga = ROL64in128(Abo, 28);
2496 Agu = _mm_xor_si128(Agu, Du);
2497 Bge = ROL64in128(Agu, 20);
2498 Aka = _mm_xor_si128(Aka, Da);
2499 Bgi = ROL64in128(Aka, 3);
2500 Ega = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
2501 Ca = _mm_xor_si128(Ca, Ega);
2502 Ame = _mm_xor_si128(Ame, De);
2503 Bgo = ROL64in128(Ame, 45);
2504 Ege = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
2505 Ce = _mm_xor_si128(Ce, Ege);
2506 Asi = _mm_xor_si128(Asi, Di);
2507 Bgu = ROL64in128(Asi, 61);
2508 Egi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
2509 Ci = _mm_xor_si128(Ci, Egi);
2510 Ego = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
2511 Co = _mm_xor_si128(Co, Ego);
2512 Egu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
2513 Cu = _mm_xor_si128(Cu, Egu);
2514 Abe = _mm_xor_si128(Abe, De);
2515 Bka = ROL64in128(Abe, 1);
2516 Agi = _mm_xor_si128(Agi, Di);
2517 Bke = ROL64in128(Agi, 6);
2518 Ako = _mm_xor_si128(Ako, Do);
2519 Bki = ROL64in128(Ako, 25);
2520 Eka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
2521 Ca = _mm_xor_si128(Ca, Eka);
2522 Amu = _mm_xor_si128(Amu, Du);
2523 Bko = ROL64in128_8(Amu);
2524 Eke = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
2525 Ce = _mm_xor_si128(Ce, Eke);
2526 Asa = _mm_xor_si128(Asa, Da);
2527 Bku = ROL64in128(Asa, 18);
2528 Eki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
2529 Ci = _mm_xor_si128(Ci, Eki);
2530 Eko = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
2531 Co = _mm_xor_si128(Co, Eko);
2532 Eku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
2533 Cu = _mm_xor_si128(Cu, Eku);
2534 Abu = _mm_xor_si128(Abu, Du);
2535 Bma = ROL64in128(Abu, 27);
2536 Aga = _mm_xor_si128(Aga, Da);
2537 Bme = ROL64in128(Aga, 36);
2538 Ake = _mm_xor_si128(Ake, De);
2539 Bmi = ROL64in128(Ake, 10);
2540 Ema = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
2541 Ca = _mm_xor_si128(Ca, Ema);
2542 Ami = _mm_xor_si128(Ami, Di);
2543 Bmo = ROL64in128(Ami, 15);
2544 Eme = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
2545 Ce = _mm_xor_si128(Ce, Eme);
2546 Aso = _mm_xor_si128(Aso, Do);
2547 Bmu = ROL64in128_56(Aso);
2548 Emi = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
2549 Ci = _mm_xor_si128(Ci, Emi);
2550 Emo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
2551 Co = _mm_xor_si128(Co, Emo);
2552 Emu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
2553 Cu = _mm_xor_si128(Cu, Emu);
2554 Abi = _mm_xor_si128(Abi, Di);
2555 Bsa = ROL64in128(Abi, 62);
2556 Ago = _mm_xor_si128(Ago, Do);
2557 Bse = ROL64in128(Ago, 55);
2558 Aku = _mm_xor_si128(Aku, Du);
2559 Bsi = ROL64in128(Aku, 39);
2560 Esa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
2561 Ca = _mm_xor_si128(Ca, Esa);
2562 Ama = _mm_xor_si128(Ama, Da);
2563 Bso = ROL64in128(Ama, 41);
2564 Ese = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
2565 Ce = _mm_xor_si128(Ce, Ese);
2566 Ase = _mm_xor_si128(Ase, De);
2567 Bsu = ROL64in128(Ase, 2);
2568 Esi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
2569 Ci = _mm_xor_si128(Ci, Esi);
2570 Eso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
2571 Co = _mm_xor_si128(Co, Eso);
2572 Esu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
2573 Cu = _mm_xor_si128(Cu, Esu);
2574 Da = _mm_xor_si128(Cu, ROL64in128(Ce, 1));
2575 De = _mm_xor_si128(Ca, ROL64in128(Ci, 1));
2576 Di = _mm_xor_si128(Ce, ROL64in128(Co, 1));
2577 Do = _mm_xor_si128(Ci, ROL64in128(Cu, 1));
2578 Du = _mm_xor_si128(Co, ROL64in128(Ca, 1));
2579 Eba = _mm_xor_si128(Eba, Da);
2580 Bba = Eba;
2581 Ege = _mm_xor_si128(Ege, De);
2582 Bbe = ROL64in128(Ege, 44);
2583 Eki = _mm_xor_si128(Eki, Di);
2584 Bbi = ROL64in128(Eki, 43);
2585 Aba = _mm_xor_si128(Bba, _mm_andnot_si128(Bbe, Bbi));
2586 Aba = _mm_xor_si128(Aba, SPLAT64(KeccakF1600Constants[23]));
2587 Emo = _mm_xor_si128(Emo, Do);
2588 Bbo = ROL64in128(Emo, 21);
2589 Abe = _mm_xor_si128(Bbe, _mm_andnot_si128(Bbi, Bbo));
2590 Esu = _mm_xor_si128(Esu, Du);
2591 Bbu = ROL64in128(Esu, 14);
2592 Abi = _mm_xor_si128(Bbi, _mm_andnot_si128(Bbo, Bbu));
2593 Abo = _mm_xor_si128(Bbo, _mm_andnot_si128(Bbu, Bba));
2594 Abu = _mm_xor_si128(Bbu, _mm_andnot_si128(Bba, Bbe));
2595 Ebo = _mm_xor_si128(Ebo, Do);
2596 Bga = ROL64in128(Ebo, 28);
2597 Egu = _mm_xor_si128(Egu, Du);
2598 Bge = ROL64in128(Egu, 20);
2599 Eka = _mm_xor_si128(Eka, Da);
2600 Bgi = ROL64in128(Eka, 3);
2601 Aga = _mm_xor_si128(Bga, _mm_andnot_si128(Bge, Bgi));
2602 Eme = _mm_xor_si128(Eme, De);
2603 Bgo = ROL64in128(Eme, 45);
2604 Age = _mm_xor_si128(Bge, _mm_andnot_si128(Bgi, Bgo));
2605 Esi = _mm_xor_si128(Esi, Di);
2606 Bgu = ROL64in128(Esi, 61);
2607 Agi = _mm_xor_si128(Bgi, _mm_andnot_si128(Bgo, Bgu));
2608 Ago = _mm_xor_si128(Bgo, _mm_andnot_si128(Bgu, Bga));
2609 Agu = _mm_xor_si128(Bgu, _mm_andnot_si128(Bga, Bge));
2610 Ebe = _mm_xor_si128(Ebe, De);
2611 Bka = ROL64in128(Ebe, 1);
2612 Egi = _mm_xor_si128(Egi, Di);
2613 Bke = ROL64in128(Egi, 6);
2614 Eko = _mm_xor_si128(Eko, Do);
2615 Bki = ROL64in128(Eko, 25);
2616 Aka = _mm_xor_si128(Bka, _mm_andnot_si128(Bke, Bki));
2617 Emu = _mm_xor_si128(Emu, Du);
2618 Bko = ROL64in128_8(Emu);
2619 Ake = _mm_xor_si128(Bke, _mm_andnot_si128(Bki, Bko));
2620 Esa = _mm_xor_si128(Esa, Da);
2621 Bku = ROL64in128(Esa, 18);
2622 Aki = _mm_xor_si128(Bki, _mm_andnot_si128(Bko, Bku));
2623 Ako = _mm_xor_si128(Bko, _mm_andnot_si128(Bku, Bka));
2624 Aku = _mm_xor_si128(Bku, _mm_andnot_si128(Bka, Bke));
2625 Ebu = _mm_xor_si128(Ebu, Du);
2626 Bma = ROL64in128(Ebu, 27);
2627 Ega = _mm_xor_si128(Ega, Da);
2628 Bme = ROL64in128(Ega, 36);
2629 Eke = _mm_xor_si128(Eke, De);
2630 Bmi = ROL64in128(Eke, 10);
2631 Ama = _mm_xor_si128(Bma, _mm_andnot_si128(Bme, Bmi));
2632 Emi = _mm_xor_si128(Emi, Di);
2633 Bmo = ROL64in128(Emi, 15);
2634 Ame = _mm_xor_si128(Bme, _mm_andnot_si128(Bmi, Bmo));
2635 Eso = _mm_xor_si128(Eso, Do);
2636 Bmu = ROL64in128_56(Eso);
2637 Ami = _mm_xor_si128(Bmi, _mm_andnot_si128(Bmo, Bmu));
2638 Amo = _mm_xor_si128(Bmo, _mm_andnot_si128(Bmu, Bma));
2639 Amu = _mm_xor_si128(Bmu, _mm_andnot_si128(Bma, Bme));
2640 Ebi = _mm_xor_si128(Ebi, Di);
2641 Bsa = ROL64in128(Ebi, 62);
2642 Ego = _mm_xor_si128(Ego, Do);
2643 Bse = ROL64in128(Ego, 55);
2644 Eku = _mm_xor_si128(Eku, Du);
2645 Bsi = ROL64in128(Eku, 39);
2646 Asa = _mm_xor_si128(Bsa, _mm_andnot_si128(Bse, Bsi));
2647 Ema = _mm_xor_si128(Ema, Da);
2648 Bso = ROL64in128(Ema, 41);
2649 Ase = _mm_xor_si128(Bse, _mm_andnot_si128(Bsi, Bso));
2650 Ese = _mm_xor_si128(Ese, De);
2651 Bsu = ROL64in128(Ese, 2);
2652 Asi = _mm_xor_si128(Bsi, _mm_andnot_si128(Bso, Bsu));
2653 Aso = _mm_xor_si128(Bso, _mm_andnot_si128(Bsu, Bsa));
2654 Asu = _mm_xor_si128(Bsu, _mm_andnot_si128(Bsa, Bse));
2655
2656 _mm_storeu_si128(M128_CAST(lanes+ 0), Aba);
2657 _mm_storeu_si128(M128_CAST(lanes+ 1), Abe);
2658 _mm_storeu_si128(M128_CAST(lanes+ 2), Abi);
2659 _mm_storeu_si128(M128_CAST(lanes+ 3), Abo);
2660 _mm_storeu_si128(M128_CAST(lanes+ 4), Abu);
2661 _mm_storeu_si128(M128_CAST(lanes+ 5), Aga);
2662 _mm_storeu_si128(M128_CAST(lanes+ 6), Age);
2663 _mm_storeu_si128(M128_CAST(lanes+ 7), Agi);
2664 _mm_storeu_si128(M128_CAST(lanes+ 8), Ago);
2665 _mm_storeu_si128(M128_CAST(lanes+ 9), Agu);
2666 _mm_storeu_si128(M128_CAST(lanes+10), Aka);
2667 _mm_storeu_si128(M128_CAST(lanes+11), Ake);
2668 _mm_storeu_si128(M128_CAST(lanes+12), Aki);
2669 _mm_storeu_si128(M128_CAST(lanes+13), Ako);
2670 _mm_storeu_si128(M128_CAST(lanes+14), Aku);
2671 _mm_storeu_si128(M128_CAST(lanes+15), Ama);
2672 _mm_storeu_si128(M128_CAST(lanes+16), Ame);
2673 _mm_storeu_si128(M128_CAST(lanes+17), Ami);
2674 _mm_storeu_si128(M128_CAST(lanes+18), Amo);
2675 _mm_storeu_si128(M128_CAST(lanes+19), Amu);
2676 _mm_storeu_si128(M128_CAST(lanes+20), Asa);
2677 _mm_storeu_si128(M128_CAST(lanes+21), Ase);
2678 _mm_storeu_si128(M128_CAST(lanes+22), Asi);
2679 _mm_storeu_si128(M128_CAST(lanes+23), Aso);
2680 _mm_storeu_si128(M128_CAST(lanes+24), Asu);
2681 }
2682
2683 #endif
2684
2685 NAMESPACE_END
W64LIT
#define W64LIT(x)
Declare an unsigned word64.
Definition: config_int.h:119
M128_CAST
#define M128_CAST(x)
Clang workaround.
Definition: adv_simd.h:609
word64
unsigned long long word64
64-bit unsigned datatype
Definition: config_int.h:91
pch.h
Precompiled header file.
misc.h
Utility functions for the Crypto++ library.
keccak.h
Classes for Keccak message digests.
CryptoPP
Crypto++ library namespace.
config.h
Library configuration file.
CONST_M128_CAST
#define CONST_M128_CAST(x)
Clang workaround.
Definition: adv_simd.h:614