Crypto++  8.2
Free C++ class library of cryptographic schemes
keccak_simd.cpp
1 // keccak_simd.cpp - written and placed in the public domain by Jeffrey Walton.
2 //
3 // This source file uses intrinsics to gain access to SSE and
4 // NEON instructions. A separate source file is needed because
5 // additional CXXFLAGS are required to enable the appropriate
6 // instructions sets in some build configurations.
7 
8 // The XKCP package is provided by Guido Bertoni, Joan Daemen, Seth Hoffert,
9 // Michael Peeters, Gilles Van Assche, and Ronny Van Keer. The code was
10 // placed public domain by the authors.
11 
12 // KeccakF1600x2_SSE is ParallelHash128. The SSE2 ParallelHash128
13 // implementation was extracted from XKCP using the following command.
14 //
15 // gcc -I lib/common -I lib/low/KeccakP-1600/Optimized
16 // -I lib/low/KeccakP-1600-times2/SIMD128/SSE2ufull
17 // lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SIMD128.c -E
18 
19 #include "pch.h"
20 #include "config.h"
21 #include "keccak.h"
22 #include "misc.h"
23 
24 #if (CRYPTOPP_SSSE3_AVAILABLE)
25 # include <emmintrin.h>
26 # include <tmmintrin.h>
27 #endif
28 
29 // 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] = {W64LIT(0x0605040302010007), W64LIT(0x0E0D0C0B0A09080F)};
43 const word64 rho56[2] = {W64LIT(0x0007060504030201), W64LIT(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
Utility functions for the Crypto++ library.
Classes for Keccak message digests.
Library configuration file.
Precompiled header file.
Crypto++ library namespace.