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