staging: crypto: skein: cleanup >80 character lines
[linux-2.6/btrfs-unstable.git] / drivers / staging / skein / threefish1024Block.c
blobfe7517b2008c1e5a42088a4f01cb7729e26ce982
1 #include <linux/string.h>
2 #include <threefishApi.h>
5 void threefishEncrypt1024(struct threefish_key *keyCtx, u64 *input, u64 *output)
7 u64 b0 = input[0], b1 = input[1],
8 b2 = input[2], b3 = input[3],
9 b4 = input[4], b5 = input[5],
10 b6 = input[6], b7 = input[7],
11 b8 = input[8], b9 = input[9],
12 b10 = input[10], b11 = input[11],
13 b12 = input[12], b13 = input[13],
14 b14 = input[14], b15 = input[15];
15 u64 k0 = keyCtx->key[0], k1 = keyCtx->key[1],
16 k2 = keyCtx->key[2], k3 = keyCtx->key[3],
17 k4 = keyCtx->key[4], k5 = keyCtx->key[5],
18 k6 = keyCtx->key[6], k7 = keyCtx->key[7],
19 k8 = keyCtx->key[8], k9 = keyCtx->key[9],
20 k10 = keyCtx->key[10], k11 = keyCtx->key[11],
21 k12 = keyCtx->key[12], k13 = keyCtx->key[13],
22 k14 = keyCtx->key[14], k15 = keyCtx->key[15],
23 k16 = keyCtx->key[16];
24 u64 t0 = keyCtx->tweak[0], t1 = keyCtx->tweak[1],
25 t2 = keyCtx->tweak[2];
27 b1 += k1;
28 b0 += b1 + k0;
29 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0;
31 b3 += k3;
32 b2 += b3 + k2;
33 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2;
35 b5 += k5;
36 b4 += b5 + k4;
37 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4;
39 b7 += k7;
40 b6 += b7 + k6;
41 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6;
43 b9 += k9;
44 b8 += b9 + k8;
45 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8;
47 b11 += k11;
48 b10 += b11 + k10;
49 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10;
51 b13 += k13 + t0;
52 b12 += b13 + k12;
53 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12;
55 b15 += k15;
56 b14 += b15 + k14 + t1;
57 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14;
59 b0 += b9;
60 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0;
62 b2 += b13;
63 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2;
65 b6 += b11;
66 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6;
68 b4 += b15;
69 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4;
71 b10 += b7;
72 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10;
74 b12 += b3;
75 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12;
77 b14 += b5;
78 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14;
80 b8 += b1;
81 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8;
83 b0 += b7;
84 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0;
86 b2 += b5;
87 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2;
89 b4 += b3;
90 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4;
92 b6 += b1;
93 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6;
95 b12 += b15;
96 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12;
98 b14 += b13;
99 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14;
101 b8 += b11;
102 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8;
104 b10 += b9;
105 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10;
107 b0 += b15;
108 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0;
110 b2 += b11;
111 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2;
113 b6 += b13;
114 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6;
116 b4 += b9;
117 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4;
119 b14 += b1;
120 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14;
122 b8 += b5;
123 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8;
125 b10 += b3;
126 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10;
128 b12 += b7;
129 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12;
131 b1 += k2;
132 b0 += b1 + k1;
133 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0;
135 b3 += k4;
136 b2 += b3 + k3;
137 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2;
139 b5 += k6;
140 b4 += b5 + k5;
141 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4;
143 b7 += k8;
144 b6 += b7 + k7;
145 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6;
147 b9 += k10;
148 b8 += b9 + k9;
149 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8;
151 b11 += k12;
152 b10 += b11 + k11;
153 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10;
155 b13 += k14 + t1;
156 b12 += b13 + k13;
157 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12;
159 b15 += k16 + 1;
160 b14 += b15 + k15 + t2;
161 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14;
163 b0 += b9;
164 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0;
166 b2 += b13;
167 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2;
169 b6 += b11;
170 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6;
172 b4 += b15;
173 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4;
175 b10 += b7;
176 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10;
178 b12 += b3;
179 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12;
181 b14 += b5;
182 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14;
184 b8 += b1;
185 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8;
187 b0 += b7;
188 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0;
190 b2 += b5;
191 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2;
193 b4 += b3;
194 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4;
196 b6 += b1;
197 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6;
199 b12 += b15;
200 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12;
202 b14 += b13;
203 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14;
205 b8 += b11;
206 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8;
208 b10 += b9;
209 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10;
211 b0 += b15;
212 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0;
214 b2 += b11;
215 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2;
217 b6 += b13;
218 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6;
220 b4 += b9;
221 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4;
223 b14 += b1;
224 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14;
226 b8 += b5;
227 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8;
229 b10 += b3;
230 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10;
232 b12 += b7;
233 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12;
235 b1 += k3;
236 b0 += b1 + k2;
237 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0;
239 b3 += k5;
240 b2 += b3 + k4;
241 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2;
243 b5 += k7;
244 b4 += b5 + k6;
245 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4;
247 b7 += k9;
248 b6 += b7 + k8;
249 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6;
251 b9 += k11;
252 b8 += b9 + k10;
253 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8;
255 b11 += k13;
256 b10 += b11 + k12;
257 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10;
259 b13 += k15 + t2;
260 b12 += b13 + k14;
261 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12;
263 b15 += k0 + 2;
264 b14 += b15 + k16 + t0;
265 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14;
267 b0 += b9;
268 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0;
270 b2 += b13;
271 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2;
273 b6 += b11;
274 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6;
276 b4 += b15;
277 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4;
279 b10 += b7;
280 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10;
282 b12 += b3;
283 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12;
285 b14 += b5;
286 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14;
288 b8 += b1;
289 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8;
291 b0 += b7;
292 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0;
294 b2 += b5;
295 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2;
297 b4 += b3;
298 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4;
300 b6 += b1;
301 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6;
303 b12 += b15;
304 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12;
306 b14 += b13;
307 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14;
309 b8 += b11;
310 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8;
312 b10 += b9;
313 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10;
315 b0 += b15;
316 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0;
318 b2 += b11;
319 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2;
321 b6 += b13;
322 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6;
324 b4 += b9;
325 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4;
327 b14 += b1;
328 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14;
330 b8 += b5;
331 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8;
333 b10 += b3;
334 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10;
336 b12 += b7;
337 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12;
339 b1 += k4;
340 b0 += b1 + k3;
341 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0;
343 b3 += k6;
344 b2 += b3 + k5;
345 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2;
347 b5 += k8;
348 b4 += b5 + k7;
349 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4;
351 b7 += k10;
352 b6 += b7 + k9;
353 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6;
355 b9 += k12;
356 b8 += b9 + k11;
357 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8;
359 b11 += k14;
360 b10 += b11 + k13;
361 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10;
363 b13 += k16 + t0;
364 b12 += b13 + k15;
365 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12;
367 b15 += k1 + 3;
368 b14 += b15 + k0 + t1;
369 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14;
371 b0 += b9;
372 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0;
374 b2 += b13;
375 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2;
377 b6 += b11;
378 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6;
380 b4 += b15;
381 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4;
383 b10 += b7;
384 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10;
386 b12 += b3;
387 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12;
389 b14 += b5;
390 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14;
392 b8 += b1;
393 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8;
395 b0 += b7;
396 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0;
398 b2 += b5;
399 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2;
401 b4 += b3;
402 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4;
404 b6 += b1;
405 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6;
407 b12 += b15;
408 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12;
410 b14 += b13;
411 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14;
413 b8 += b11;
414 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8;
416 b10 += b9;
417 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10;
419 b0 += b15;
420 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0;
422 b2 += b11;
423 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2;
425 b6 += b13;
426 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6;
428 b4 += b9;
429 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4;
431 b14 += b1;
432 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14;
434 b8 += b5;
435 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8;
437 b10 += b3;
438 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10;
440 b12 += b7;
441 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12;
443 b1 += k5;
444 b0 += b1 + k4;
445 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0;
447 b3 += k7;
448 b2 += b3 + k6;
449 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2;
451 b5 += k9;
452 b4 += b5 + k8;
453 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4;
455 b7 += k11;
456 b6 += b7 + k10;
457 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6;
459 b9 += k13;
460 b8 += b9 + k12;
461 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8;
463 b11 += k15;
464 b10 += b11 + k14;
465 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10;
467 b13 += k0 + t1;
468 b12 += b13 + k16;
469 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12;
471 b15 += k2 + 4;
472 b14 += b15 + k1 + t2;
473 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14;
475 b0 += b9;
476 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0;
478 b2 += b13;
479 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2;
481 b6 += b11;
482 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6;
484 b4 += b15;
485 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4;
487 b10 += b7;
488 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10;
490 b12 += b3;
491 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12;
493 b14 += b5;
494 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14;
496 b8 += b1;
497 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8;
499 b0 += b7;
500 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0;
502 b2 += b5;
503 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2;
505 b4 += b3;
506 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4;
508 b6 += b1;
509 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6;
511 b12 += b15;
512 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12;
514 b14 += b13;
515 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14;
517 b8 += b11;
518 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8;
520 b10 += b9;
521 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10;
523 b0 += b15;
524 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0;
526 b2 += b11;
527 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2;
529 b6 += b13;
530 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6;
532 b4 += b9;
533 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4;
535 b14 += b1;
536 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14;
538 b8 += b5;
539 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8;
541 b10 += b3;
542 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10;
544 b12 += b7;
545 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12;
547 b1 += k6;
548 b0 += b1 + k5;
549 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0;
551 b3 += k8;
552 b2 += b3 + k7;
553 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2;
555 b5 += k10;
556 b4 += b5 + k9;
557 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4;
559 b7 += k12;
560 b6 += b7 + k11;
561 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6;
563 b9 += k14;
564 b8 += b9 + k13;
565 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8;
567 b11 += k16;
568 b10 += b11 + k15;
569 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10;
571 b13 += k1 + t2;
572 b12 += b13 + k0;
573 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12;
575 b15 += k3 + 5;
576 b14 += b15 + k2 + t0;
577 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14;
579 b0 += b9;
580 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0;
582 b2 += b13;
583 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2;
585 b6 += b11;
586 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6;
588 b4 += b15;
589 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4;
591 b10 += b7;
592 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10;
594 b12 += b3;
595 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12;
597 b14 += b5;
598 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14;
600 b8 += b1;
601 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8;
603 b0 += b7;
604 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0;
606 b2 += b5;
607 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2;
609 b4 += b3;
610 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4;
612 b6 += b1;
613 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6;
615 b12 += b15;
616 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12;
618 b14 += b13;
619 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14;
621 b8 += b11;
622 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8;
624 b10 += b9;
625 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10;
627 b0 += b15;
628 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0;
630 b2 += b11;
631 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2;
633 b6 += b13;
634 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6;
636 b4 += b9;
637 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4;
639 b14 += b1;
640 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14;
642 b8 += b5;
643 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8;
645 b10 += b3;
646 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10;
648 b12 += b7;
649 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12;
651 b1 += k7;
652 b0 += b1 + k6;
653 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0;
655 b3 += k9;
656 b2 += b3 + k8;
657 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2;
659 b5 += k11;
660 b4 += b5 + k10;
661 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4;
663 b7 += k13;
664 b6 += b7 + k12;
665 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6;
667 b9 += k15;
668 b8 += b9 + k14;
669 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8;
671 b11 += k0;
672 b10 += b11 + k16;
673 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10;
675 b13 += k2 + t0;
676 b12 += b13 + k1;
677 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12;
679 b15 += k4 + 6;
680 b14 += b15 + k3 + t1;
681 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14;
683 b0 += b9;
684 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0;
686 b2 += b13;
687 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2;
689 b6 += b11;
690 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6;
692 b4 += b15;
693 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4;
695 b10 += b7;
696 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10;
698 b12 += b3;
699 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12;
701 b14 += b5;
702 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14;
704 b8 += b1;
705 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8;
707 b0 += b7;
708 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0;
710 b2 += b5;
711 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2;
713 b4 += b3;
714 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4;
716 b6 += b1;
717 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6;
719 b12 += b15;
720 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12;
722 b14 += b13;
723 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14;
725 b8 += b11;
726 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8;
728 b10 += b9;
729 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10;
731 b0 += b15;
732 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0;
734 b2 += b11;
735 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2;
737 b6 += b13;
738 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6;
740 b4 += b9;
741 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4;
743 b14 += b1;
744 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14;
746 b8 += b5;
747 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8;
749 b10 += b3;
750 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10;
752 b12 += b7;
753 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12;
755 b1 += k8;
756 b0 += b1 + k7;
757 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0;
759 b3 += k10;
760 b2 += b3 + k9;
761 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2;
763 b5 += k12;
764 b4 += b5 + k11;
765 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4;
767 b7 += k14;
768 b6 += b7 + k13;
769 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6;
771 b9 += k16;
772 b8 += b9 + k15;
773 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8;
775 b11 += k1;
776 b10 += b11 + k0;
777 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10;
779 b13 += k3 + t1;
780 b12 += b13 + k2;
781 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12;
783 b15 += k5 + 7;
784 b14 += b15 + k4 + t2;
785 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14;
787 b0 += b9;
788 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0;
790 b2 += b13;
791 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2;
793 b6 += b11;
794 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6;
796 b4 += b15;
797 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4;
799 b10 += b7;
800 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10;
802 b12 += b3;
803 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12;
805 b14 += b5;
806 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14;
808 b8 += b1;
809 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8;
811 b0 += b7;
812 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0;
814 b2 += b5;
815 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2;
817 b4 += b3;
818 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4;
820 b6 += b1;
821 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6;
823 b12 += b15;
824 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12;
826 b14 += b13;
827 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14;
829 b8 += b11;
830 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8;
832 b10 += b9;
833 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10;
835 b0 += b15;
836 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0;
838 b2 += b11;
839 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2;
841 b6 += b13;
842 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6;
844 b4 += b9;
845 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4;
847 b14 += b1;
848 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14;
850 b8 += b5;
851 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8;
853 b10 += b3;
854 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10;
856 b12 += b7;
857 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12;
859 b1 += k9;
860 b0 += b1 + k8;
861 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0;
863 b3 += k11;
864 b2 += b3 + k10;
865 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2;
867 b5 += k13;
868 b4 += b5 + k12;
869 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4;
871 b7 += k15;
872 b6 += b7 + k14;
873 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6;
875 b9 += k0;
876 b8 += b9 + k16;
877 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8;
879 b11 += k2;
880 b10 += b11 + k1;
881 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10;
883 b13 += k4 + t2;
884 b12 += b13 + k3;
885 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12;
887 b15 += k6 + 8;
888 b14 += b15 + k5 + t0;
889 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14;
891 b0 += b9;
892 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0;
894 b2 += b13;
895 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2;
897 b6 += b11;
898 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6;
900 b4 += b15;
901 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4;
903 b10 += b7;
904 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10;
906 b12 += b3;
907 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12;
909 b14 += b5;
910 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14;
912 b8 += b1;
913 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8;
915 b0 += b7;
916 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0;
918 b2 += b5;
919 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2;
921 b4 += b3;
922 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4;
924 b6 += b1;
925 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6;
927 b12 += b15;
928 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12;
930 b14 += b13;
931 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14;
933 b8 += b11;
934 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8;
936 b10 += b9;
937 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10;
939 b0 += b15;
940 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0;
942 b2 += b11;
943 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2;
945 b6 += b13;
946 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6;
948 b4 += b9;
949 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4;
951 b14 += b1;
952 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14;
954 b8 += b5;
955 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8;
957 b10 += b3;
958 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10;
960 b12 += b7;
961 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12;
963 b1 += k10;
964 b0 += b1 + k9;
965 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0;
967 b3 += k12;
968 b2 += b3 + k11;
969 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2;
971 b5 += k14;
972 b4 += b5 + k13;
973 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4;
975 b7 += k16;
976 b6 += b7 + k15;
977 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6;
979 b9 += k1;
980 b8 += b9 + k0;
981 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8;
983 b11 += k3;
984 b10 += b11 + k2;
985 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10;
987 b13 += k5 + t0;
988 b12 += b13 + k4;
989 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12;
991 b15 += k7 + 9;
992 b14 += b15 + k6 + t1;
993 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14;
995 b0 += b9;
996 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0;
998 b2 += b13;
999 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2;
1001 b6 += b11;
1002 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6;
1004 b4 += b15;
1005 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4;
1007 b10 += b7;
1008 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10;
1010 b12 += b3;
1011 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12;
1013 b14 += b5;
1014 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14;
1016 b8 += b1;
1017 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8;
1019 b0 += b7;
1020 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0;
1022 b2 += b5;
1023 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2;
1025 b4 += b3;
1026 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4;
1028 b6 += b1;
1029 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6;
1031 b12 += b15;
1032 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12;
1034 b14 += b13;
1035 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14;
1037 b8 += b11;
1038 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8;
1040 b10 += b9;
1041 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10;
1043 b0 += b15;
1044 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0;
1046 b2 += b11;
1047 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2;
1049 b6 += b13;
1050 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6;
1052 b4 += b9;
1053 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4;
1055 b14 += b1;
1056 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14;
1058 b8 += b5;
1059 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8;
1061 b10 += b3;
1062 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10;
1064 b12 += b7;
1065 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12;
1067 b1 += k11;
1068 b0 += b1 + k10;
1069 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0;
1071 b3 += k13;
1072 b2 += b3 + k12;
1073 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2;
1075 b5 += k15;
1076 b4 += b5 + k14;
1077 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4;
1079 b7 += k0;
1080 b6 += b7 + k16;
1081 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6;
1083 b9 += k2;
1084 b8 += b9 + k1;
1085 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8;
1087 b11 += k4;
1088 b10 += b11 + k3;
1089 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10;
1091 b13 += k6 + t1;
1092 b12 += b13 + k5;
1093 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12;
1095 b15 += k8 + 10;
1096 b14 += b15 + k7 + t2;
1097 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14;
1099 b0 += b9;
1100 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0;
1102 b2 += b13;
1103 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2;
1105 b6 += b11;
1106 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6;
1108 b4 += b15;
1109 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4;
1111 b10 += b7;
1112 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10;
1114 b12 += b3;
1115 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12;
1117 b14 += b5;
1118 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14;
1120 b8 += b1;
1121 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8;
1123 b0 += b7;
1124 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0;
1126 b2 += b5;
1127 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2;
1129 b4 += b3;
1130 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4;
1132 b6 += b1;
1133 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6;
1135 b12 += b15;
1136 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12;
1138 b14 += b13;
1139 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14;
1141 b8 += b11;
1142 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8;
1144 b10 += b9;
1145 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10;
1147 b0 += b15;
1148 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0;
1150 b2 += b11;
1151 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2;
1153 b6 += b13;
1154 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6;
1156 b4 += b9;
1157 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4;
1159 b14 += b1;
1160 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14;
1162 b8 += b5;
1163 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8;
1165 b10 += b3;
1166 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10;
1168 b12 += b7;
1169 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12;
1171 b1 += k12;
1172 b0 += b1 + k11;
1173 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0;
1175 b3 += k14;
1176 b2 += b3 + k13;
1177 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2;
1179 b5 += k16;
1180 b4 += b5 + k15;
1181 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4;
1183 b7 += k1;
1184 b6 += b7 + k0;
1185 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6;
1187 b9 += k3;
1188 b8 += b9 + k2;
1189 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8;
1191 b11 += k5;
1192 b10 += b11 + k4;
1193 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10;
1195 b13 += k7 + t2;
1196 b12 += b13 + k6;
1197 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12;
1199 b15 += k9 + 11;
1200 b14 += b15 + k8 + t0;
1201 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14;
1203 b0 += b9;
1204 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0;
1206 b2 += b13;
1207 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2;
1209 b6 += b11;
1210 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6;
1212 b4 += b15;
1213 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4;
1215 b10 += b7;
1216 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10;
1218 b12 += b3;
1219 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12;
1221 b14 += b5;
1222 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14;
1224 b8 += b1;
1225 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8;
1227 b0 += b7;
1228 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0;
1230 b2 += b5;
1231 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2;
1233 b4 += b3;
1234 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4;
1236 b6 += b1;
1237 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6;
1239 b12 += b15;
1240 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12;
1242 b14 += b13;
1243 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14;
1245 b8 += b11;
1246 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8;
1248 b10 += b9;
1249 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10;
1251 b0 += b15;
1252 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0;
1254 b2 += b11;
1255 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2;
1257 b6 += b13;
1258 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6;
1260 b4 += b9;
1261 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4;
1263 b14 += b1;
1264 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14;
1266 b8 += b5;
1267 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8;
1269 b10 += b3;
1270 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10;
1272 b12 += b7;
1273 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12;
1275 b1 += k13;
1276 b0 += b1 + k12;
1277 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0;
1279 b3 += k15;
1280 b2 += b3 + k14;
1281 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2;
1283 b5 += k0;
1284 b4 += b5 + k16;
1285 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4;
1287 b7 += k2;
1288 b6 += b7 + k1;
1289 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6;
1291 b9 += k4;
1292 b8 += b9 + k3;
1293 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8;
1295 b11 += k6;
1296 b10 += b11 + k5;
1297 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10;
1299 b13 += k8 + t0;
1300 b12 += b13 + k7;
1301 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12;
1303 b15 += k10 + 12;
1304 b14 += b15 + k9 + t1;
1305 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14;
1307 b0 += b9;
1308 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0;
1310 b2 += b13;
1311 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2;
1313 b6 += b11;
1314 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6;
1316 b4 += b15;
1317 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4;
1319 b10 += b7;
1320 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10;
1322 b12 += b3;
1323 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12;
1325 b14 += b5;
1326 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14;
1328 b8 += b1;
1329 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8;
1331 b0 += b7;
1332 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0;
1334 b2 += b5;
1335 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2;
1337 b4 += b3;
1338 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4;
1340 b6 += b1;
1341 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6;
1343 b12 += b15;
1344 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12;
1346 b14 += b13;
1347 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14;
1349 b8 += b11;
1350 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8;
1352 b10 += b9;
1353 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10;
1355 b0 += b15;
1356 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0;
1358 b2 += b11;
1359 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2;
1361 b6 += b13;
1362 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6;
1364 b4 += b9;
1365 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4;
1367 b14 += b1;
1368 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14;
1370 b8 += b5;
1371 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8;
1373 b10 += b3;
1374 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10;
1376 b12 += b7;
1377 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12;
1379 b1 += k14;
1380 b0 += b1 + k13;
1381 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0;
1383 b3 += k16;
1384 b2 += b3 + k15;
1385 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2;
1387 b5 += k1;
1388 b4 += b5 + k0;
1389 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4;
1391 b7 += k3;
1392 b6 += b7 + k2;
1393 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6;
1395 b9 += k5;
1396 b8 += b9 + k4;
1397 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8;
1399 b11 += k7;
1400 b10 += b11 + k6;
1401 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10;
1403 b13 += k9 + t1;
1404 b12 += b13 + k8;
1405 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12;
1407 b15 += k11 + 13;
1408 b14 += b15 + k10 + t2;
1409 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14;
1411 b0 += b9;
1412 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0;
1414 b2 += b13;
1415 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2;
1417 b6 += b11;
1418 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6;
1420 b4 += b15;
1421 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4;
1423 b10 += b7;
1424 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10;
1426 b12 += b3;
1427 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12;
1429 b14 += b5;
1430 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14;
1432 b8 += b1;
1433 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8;
1435 b0 += b7;
1436 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0;
1438 b2 += b5;
1439 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2;
1441 b4 += b3;
1442 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4;
1444 b6 += b1;
1445 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6;
1447 b12 += b15;
1448 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12;
1450 b14 += b13;
1451 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14;
1453 b8 += b11;
1454 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8;
1456 b10 += b9;
1457 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10;
1459 b0 += b15;
1460 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0;
1462 b2 += b11;
1463 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2;
1465 b6 += b13;
1466 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6;
1468 b4 += b9;
1469 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4;
1471 b14 += b1;
1472 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14;
1474 b8 += b5;
1475 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8;
1477 b10 += b3;
1478 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10;
1480 b12 += b7;
1481 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12;
1483 b1 += k15;
1484 b0 += b1 + k14;
1485 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0;
1487 b3 += k0;
1488 b2 += b3 + k16;
1489 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2;
1491 b5 += k2;
1492 b4 += b5 + k1;
1493 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4;
1495 b7 += k4;
1496 b6 += b7 + k3;
1497 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6;
1499 b9 += k6;
1500 b8 += b9 + k5;
1501 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8;
1503 b11 += k8;
1504 b10 += b11 + k7;
1505 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10;
1507 b13 += k10 + t2;
1508 b12 += b13 + k9;
1509 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12;
1511 b15 += k12 + 14;
1512 b14 += b15 + k11 + t0;
1513 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14;
1515 b0 += b9;
1516 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0;
1518 b2 += b13;
1519 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2;
1521 b6 += b11;
1522 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6;
1524 b4 += b15;
1525 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4;
1527 b10 += b7;
1528 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10;
1530 b12 += b3;
1531 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12;
1533 b14 += b5;
1534 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14;
1536 b8 += b1;
1537 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8;
1539 b0 += b7;
1540 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0;
1542 b2 += b5;
1543 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2;
1545 b4 += b3;
1546 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4;
1548 b6 += b1;
1549 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6;
1551 b12 += b15;
1552 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12;
1554 b14 += b13;
1555 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14;
1557 b8 += b11;
1558 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8;
1560 b10 += b9;
1561 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10;
1563 b0 += b15;
1564 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0;
1566 b2 += b11;
1567 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2;
1569 b6 += b13;
1570 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6;
1572 b4 += b9;
1573 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4;
1575 b14 += b1;
1576 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14;
1578 b8 += b5;
1579 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8;
1581 b10 += b3;
1582 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10;
1584 b12 += b7;
1585 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12;
1587 b1 += k16;
1588 b0 += b1 + k15;
1589 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0;
1591 b3 += k1;
1592 b2 += b3 + k0;
1593 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2;
1595 b5 += k3;
1596 b4 += b5 + k2;
1597 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4;
1599 b7 += k5;
1600 b6 += b7 + k4;
1601 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6;
1603 b9 += k7;
1604 b8 += b9 + k6;
1605 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8;
1607 b11 += k9;
1608 b10 += b11 + k8;
1609 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10;
1611 b13 += k11 + t0;
1612 b12 += b13 + k10;
1613 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12;
1615 b15 += k13 + 15;
1616 b14 += b15 + k12 + t1;
1617 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14;
1619 b0 += b9;
1620 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0;
1622 b2 += b13;
1623 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2;
1625 b6 += b11;
1626 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6;
1628 b4 += b15;
1629 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4;
1631 b10 += b7;
1632 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10;
1634 b12 += b3;
1635 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12;
1637 b14 += b5;
1638 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14;
1640 b8 += b1;
1641 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8;
1643 b0 += b7;
1644 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0;
1646 b2 += b5;
1647 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2;
1649 b4 += b3;
1650 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4;
1652 b6 += b1;
1653 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6;
1655 b12 += b15;
1656 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12;
1658 b14 += b13;
1659 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14;
1661 b8 += b11;
1662 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8;
1664 b10 += b9;
1665 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10;
1667 b0 += b15;
1668 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0;
1670 b2 += b11;
1671 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2;
1673 b6 += b13;
1674 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6;
1676 b4 += b9;
1677 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4;
1679 b14 += b1;
1680 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14;
1682 b8 += b5;
1683 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8;
1685 b10 += b3;
1686 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10;
1688 b12 += b7;
1689 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12;
1691 b1 += k0;
1692 b0 += b1 + k16;
1693 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0;
1695 b3 += k2;
1696 b2 += b3 + k1;
1697 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2;
1699 b5 += k4;
1700 b4 += b5 + k3;
1701 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4;
1703 b7 += k6;
1704 b6 += b7 + k5;
1705 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6;
1707 b9 += k8;
1708 b8 += b9 + k7;
1709 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8;
1711 b11 += k10;
1712 b10 += b11 + k9;
1713 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10;
1715 b13 += k12 + t1;
1716 b12 += b13 + k11;
1717 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12;
1719 b15 += k14 + 16;
1720 b14 += b15 + k13 + t2;
1721 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14;
1723 b0 += b9;
1724 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0;
1726 b2 += b13;
1727 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2;
1729 b6 += b11;
1730 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6;
1732 b4 += b15;
1733 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4;
1735 b10 += b7;
1736 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10;
1738 b12 += b3;
1739 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12;
1741 b14 += b5;
1742 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14;
1744 b8 += b1;
1745 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8;
1747 b0 += b7;
1748 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0;
1750 b2 += b5;
1751 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2;
1753 b4 += b3;
1754 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4;
1756 b6 += b1;
1757 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6;
1759 b12 += b15;
1760 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12;
1762 b14 += b13;
1763 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14;
1765 b8 += b11;
1766 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8;
1768 b10 += b9;
1769 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10;
1771 b0 += b15;
1772 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0;
1774 b2 += b11;
1775 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2;
1777 b6 += b13;
1778 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6;
1780 b4 += b9;
1781 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4;
1783 b14 += b1;
1784 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14;
1786 b8 += b5;
1787 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8;
1789 b10 += b3;
1790 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10;
1792 b12 += b7;
1793 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12;
1795 b1 += k1;
1796 b0 += b1 + k0;
1797 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0;
1799 b3 += k3;
1800 b2 += b3 + k2;
1801 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2;
1803 b5 += k5;
1804 b4 += b5 + k4;
1805 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4;
1807 b7 += k7;
1808 b6 += b7 + k6;
1809 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6;
1811 b9 += k9;
1812 b8 += b9 + k8;
1813 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8;
1815 b11 += k11;
1816 b10 += b11 + k10;
1817 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10;
1819 b13 += k13 + t2;
1820 b12 += b13 + k12;
1821 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12;
1823 b15 += k15 + 17;
1824 b14 += b15 + k14 + t0;
1825 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14;
1827 b0 += b9;
1828 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0;
1830 b2 += b13;
1831 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2;
1833 b6 += b11;
1834 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6;
1836 b4 += b15;
1837 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4;
1839 b10 += b7;
1840 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10;
1842 b12 += b3;
1843 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12;
1845 b14 += b5;
1846 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14;
1848 b8 += b1;
1849 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8;
1851 b0 += b7;
1852 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0;
1854 b2 += b5;
1855 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2;
1857 b4 += b3;
1858 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4;
1860 b6 += b1;
1861 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6;
1863 b12 += b15;
1864 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12;
1866 b14 += b13;
1867 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14;
1869 b8 += b11;
1870 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8;
1872 b10 += b9;
1873 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10;
1875 b0 += b15;
1876 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0;
1878 b2 += b11;
1879 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2;
1881 b6 += b13;
1882 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6;
1884 b4 += b9;
1885 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4;
1887 b14 += b1;
1888 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14;
1890 b8 += b5;
1891 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8;
1893 b10 += b3;
1894 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10;
1896 b12 += b7;
1897 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12;
1899 b1 += k2;
1900 b0 += b1 + k1;
1901 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0;
1903 b3 += k4;
1904 b2 += b3 + k3;
1905 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2;
1907 b5 += k6;
1908 b4 += b5 + k5;
1909 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4;
1911 b7 += k8;
1912 b6 += b7 + k7;
1913 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6;
1915 b9 += k10;
1916 b8 += b9 + k9;
1917 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8;
1919 b11 += k12;
1920 b10 += b11 + k11;
1921 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10;
1923 b13 += k14 + t0;
1924 b12 += b13 + k13;
1925 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12;
1927 b15 += k16 + 18;
1928 b14 += b15 + k15 + t1;
1929 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14;
1931 b0 += b9;
1932 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0;
1934 b2 += b13;
1935 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2;
1937 b6 += b11;
1938 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6;
1940 b4 += b15;
1941 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4;
1943 b10 += b7;
1944 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10;
1946 b12 += b3;
1947 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12;
1949 b14 += b5;
1950 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14;
1952 b8 += b1;
1953 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8;
1955 b0 += b7;
1956 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0;
1958 b2 += b5;
1959 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2;
1961 b4 += b3;
1962 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4;
1964 b6 += b1;
1965 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6;
1967 b12 += b15;
1968 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12;
1970 b14 += b13;
1971 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14;
1973 b8 += b11;
1974 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8;
1976 b10 += b9;
1977 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10;
1979 b0 += b15;
1980 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0;
1982 b2 += b11;
1983 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2;
1985 b6 += b13;
1986 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6;
1988 b4 += b9;
1989 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4;
1991 b14 += b1;
1992 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14;
1994 b8 += b5;
1995 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8;
1997 b10 += b3;
1998 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10;
2000 b12 += b7;
2001 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12;
2003 b1 += k3;
2004 b0 += b1 + k2;
2005 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0;
2007 b3 += k5;
2008 b2 += b3 + k4;
2009 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2;
2011 b5 += k7;
2012 b4 += b5 + k6;
2013 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4;
2015 b7 += k9;
2016 b6 += b7 + k8;
2017 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6;
2019 b9 += k11;
2020 b8 += b9 + k10;
2021 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8;
2023 b11 += k13;
2024 b10 += b11 + k12;
2025 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10;
2027 b13 += k15 + t1;
2028 b12 += b13 + k14;
2029 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12;
2031 b15 += k0 + 19;
2032 b14 += b15 + k16 + t2;
2033 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14;
2035 b0 += b9;
2036 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0;
2038 b2 += b13;
2039 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2;
2041 b6 += b11;
2042 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6;
2044 b4 += b15;
2045 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4;
2047 b10 += b7;
2048 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10;
2050 b12 += b3;
2051 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12;
2053 b14 += b5;
2054 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14;
2056 b8 += b1;
2057 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8;
2059 b0 += b7;
2060 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0;
2062 b2 += b5;
2063 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2;
2065 b4 += b3;
2066 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4;
2068 b6 += b1;
2069 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6;
2071 b12 += b15;
2072 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12;
2074 b14 += b13;
2075 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14;
2077 b8 += b11;
2078 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8;
2080 b10 += b9;
2081 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10;
2083 b0 += b15;
2084 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0;
2086 b2 += b11;
2087 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2;
2089 b6 += b13;
2090 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6;
2092 b4 += b9;
2093 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4;
2095 b14 += b1;
2096 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14;
2098 b8 += b5;
2099 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8;
2101 b10 += b3;
2102 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10;
2104 b12 += b7;
2105 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12;
2107 output[0] = b0 + k3;
2108 output[1] = b1 + k4;
2109 output[2] = b2 + k5;
2110 output[3] = b3 + k6;
2111 output[4] = b4 + k7;
2112 output[5] = b5 + k8;
2113 output[6] = b6 + k9;
2114 output[7] = b7 + k10;
2115 output[8] = b8 + k11;
2116 output[9] = b9 + k12;
2117 output[10] = b10 + k13;
2118 output[11] = b11 + k14;
2119 output[12] = b12 + k15;
2120 output[13] = b13 + k16 + t2;
2121 output[14] = b14 + k0 + t0;
2122 output[15] = b15 + k1 + 20;
2125 void threefishDecrypt1024(struct threefish_key *keyCtx, u64 *input, u64 *output)
2127 u64 b0 = input[0], b1 = input[1],
2128 b2 = input[2], b3 = input[3],
2129 b4 = input[4], b5 = input[5],
2130 b6 = input[6], b7 = input[7],
2131 b8 = input[8], b9 = input[9],
2132 b10 = input[10], b11 = input[11],
2133 b12 = input[12], b13 = input[13],
2134 b14 = input[14], b15 = input[15];
2135 u64 k0 = keyCtx->key[0], k1 = keyCtx->key[1],
2136 k2 = keyCtx->key[2], k3 = keyCtx->key[3],
2137 k4 = keyCtx->key[4], k5 = keyCtx->key[5],
2138 k6 = keyCtx->key[6], k7 = keyCtx->key[7],
2139 k8 = keyCtx->key[8], k9 = keyCtx->key[9],
2140 k10 = keyCtx->key[10], k11 = keyCtx->key[11],
2141 k12 = keyCtx->key[12], k13 = keyCtx->key[13],
2142 k14 = keyCtx->key[14], k15 = keyCtx->key[15],
2143 k16 = keyCtx->key[16];
2144 u64 t0 = keyCtx->tweak[0], t1 = keyCtx->tweak[1],
2145 t2 = keyCtx->tweak[2];
2146 u64 tmp;
2148 b0 -= k3;
2149 b1 -= k4;
2150 b2 -= k5;
2151 b3 -= k6;
2152 b4 -= k7;
2153 b5 -= k8;
2154 b6 -= k9;
2155 b7 -= k10;
2156 b8 -= k11;
2157 b9 -= k12;
2158 b10 -= k13;
2159 b11 -= k14;
2160 b12 -= k15;
2161 b13 -= k16 + t2;
2162 b14 -= k0 + t0;
2163 b15 -= k1 + 20;
2164 tmp = b7 ^ b12;
2165 b7 = (tmp >> 20) | (tmp << (64 - 20));
2166 b12 -= b7;
2168 tmp = b3 ^ b10;
2169 b3 = (tmp >> 37) | (tmp << (64 - 37));
2170 b10 -= b3;
2172 tmp = b5 ^ b8;
2173 b5 = (tmp >> 31) | (tmp << (64 - 31));
2174 b8 -= b5;
2176 tmp = b1 ^ b14;
2177 b1 = (tmp >> 23) | (tmp << (64 - 23));
2178 b14 -= b1;
2180 tmp = b9 ^ b4;
2181 b9 = (tmp >> 52) | (tmp << (64 - 52));
2182 b4 -= b9;
2184 tmp = b13 ^ b6;
2185 b13 = (tmp >> 35) | (tmp << (64 - 35));
2186 b6 -= b13;
2188 tmp = b11 ^ b2;
2189 b11 = (tmp >> 48) | (tmp << (64 - 48));
2190 b2 -= b11;
2192 tmp = b15 ^ b0;
2193 b15 = (tmp >> 9) | (tmp << (64 - 9));
2194 b0 -= b15;
2196 tmp = b9 ^ b10;
2197 b9 = (tmp >> 25) | (tmp << (64 - 25));
2198 b10 -= b9;
2200 tmp = b11 ^ b8;
2201 b11 = (tmp >> 44) | (tmp << (64 - 44));
2202 b8 -= b11;
2204 tmp = b13 ^ b14;
2205 b13 = (tmp >> 42) | (tmp << (64 - 42));
2206 b14 -= b13;
2208 tmp = b15 ^ b12;
2209 b15 = (tmp >> 19) | (tmp << (64 - 19));
2210 b12 -= b15;
2212 tmp = b1 ^ b6;
2213 b1 = (tmp >> 46) | (tmp << (64 - 46));
2214 b6 -= b1;
2216 tmp = b3 ^ b4;
2217 b3 = (tmp >> 47) | (tmp << (64 - 47));
2218 b4 -= b3;
2220 tmp = b5 ^ b2;
2221 b5 = (tmp >> 44) | (tmp << (64 - 44));
2222 b2 -= b5;
2224 tmp = b7 ^ b0;
2225 b7 = (tmp >> 31) | (tmp << (64 - 31));
2226 b0 -= b7;
2228 tmp = b1 ^ b8;
2229 b1 = (tmp >> 41) | (tmp << (64 - 41));
2230 b8 -= b1;
2232 tmp = b5 ^ b14;
2233 b5 = (tmp >> 42) | (tmp << (64 - 42));
2234 b14 -= b5;
2236 tmp = b3 ^ b12;
2237 b3 = (tmp >> 53) | (tmp << (64 - 53));
2238 b12 -= b3;
2240 tmp = b7 ^ b10;
2241 b7 = (tmp >> 4) | (tmp << (64 - 4));
2242 b10 -= b7;
2244 tmp = b15 ^ b4;
2245 b15 = (tmp >> 51) | (tmp << (64 - 51));
2246 b4 -= b15;
2248 tmp = b11 ^ b6;
2249 b11 = (tmp >> 56) | (tmp << (64 - 56));
2250 b6 -= b11;
2252 tmp = b13 ^ b2;
2253 b13 = (tmp >> 34) | (tmp << (64 - 34));
2254 b2 -= b13;
2256 tmp = b9 ^ b0;
2257 b9 = (tmp >> 16) | (tmp << (64 - 16));
2258 b0 -= b9;
2260 tmp = b15 ^ b14;
2261 b15 = (tmp >> 30) | (tmp << (64 - 30));
2262 b14 -= b15 + k16 + t2;
2263 b15 -= k0 + 19;
2265 tmp = b13 ^ b12;
2266 b13 = (tmp >> 44) | (tmp << (64 - 44));
2267 b12 -= b13 + k14;
2268 b13 -= k15 + t1;
2270 tmp = b11 ^ b10;
2271 b11 = (tmp >> 47) | (tmp << (64 - 47));
2272 b10 -= b11 + k12;
2273 b11 -= k13;
2275 tmp = b9 ^ b8;
2276 b9 = (tmp >> 12) | (tmp << (64 - 12));
2277 b8 -= b9 + k10;
2278 b9 -= k11;
2280 tmp = b7 ^ b6;
2281 b7 = (tmp >> 31) | (tmp << (64 - 31));
2282 b6 -= b7 + k8;
2283 b7 -= k9;
2285 tmp = b5 ^ b4;
2286 b5 = (tmp >> 37) | (tmp << (64 - 37));
2287 b4 -= b5 + k6;
2288 b5 -= k7;
2290 tmp = b3 ^ b2;
2291 b3 = (tmp >> 9) | (tmp << (64 - 9));
2292 b2 -= b3 + k4;
2293 b3 -= k5;
2295 tmp = b1 ^ b0;
2296 b1 = (tmp >> 41) | (tmp << (64 - 41));
2297 b0 -= b1 + k2;
2298 b1 -= k3;
2300 tmp = b7 ^ b12;
2301 b7 = (tmp >> 25) | (tmp << (64 - 25));
2302 b12 -= b7;
2304 tmp = b3 ^ b10;
2305 b3 = (tmp >> 16) | (tmp << (64 - 16));
2306 b10 -= b3;
2308 tmp = b5 ^ b8;
2309 b5 = (tmp >> 28) | (tmp << (64 - 28));
2310 b8 -= b5;
2312 tmp = b1 ^ b14;
2313 b1 = (tmp >> 47) | (tmp << (64 - 47));
2314 b14 -= b1;
2316 tmp = b9 ^ b4;
2317 b9 = (tmp >> 41) | (tmp << (64 - 41));
2318 b4 -= b9;
2320 tmp = b13 ^ b6;
2321 b13 = (tmp >> 48) | (tmp << (64 - 48));
2322 b6 -= b13;
2324 tmp = b11 ^ b2;
2325 b11 = (tmp >> 20) | (tmp << (64 - 20));
2326 b2 -= b11;
2328 tmp = b15 ^ b0;
2329 b15 = (tmp >> 5) | (tmp << (64 - 5));
2330 b0 -= b15;
2332 tmp = b9 ^ b10;
2333 b9 = (tmp >> 17) | (tmp << (64 - 17));
2334 b10 -= b9;
2336 tmp = b11 ^ b8;
2337 b11 = (tmp >> 59) | (tmp << (64 - 59));
2338 b8 -= b11;
2340 tmp = b13 ^ b14;
2341 b13 = (tmp >> 41) | (tmp << (64 - 41));
2342 b14 -= b13;
2344 tmp = b15 ^ b12;
2345 b15 = (tmp >> 34) | (tmp << (64 - 34));
2346 b12 -= b15;
2348 tmp = b1 ^ b6;
2349 b1 = (tmp >> 13) | (tmp << (64 - 13));
2350 b6 -= b1;
2352 tmp = b3 ^ b4;
2353 b3 = (tmp >> 51) | (tmp << (64 - 51));
2354 b4 -= b3;
2356 tmp = b5 ^ b2;
2357 b5 = (tmp >> 4) | (tmp << (64 - 4));
2358 b2 -= b5;
2360 tmp = b7 ^ b0;
2361 b7 = (tmp >> 33) | (tmp << (64 - 33));
2362 b0 -= b7;
2364 tmp = b1 ^ b8;
2365 b1 = (tmp >> 52) | (tmp << (64 - 52));
2366 b8 -= b1;
2368 tmp = b5 ^ b14;
2369 b5 = (tmp >> 23) | (tmp << (64 - 23));
2370 b14 -= b5;
2372 tmp = b3 ^ b12;
2373 b3 = (tmp >> 18) | (tmp << (64 - 18));
2374 b12 -= b3;
2376 tmp = b7 ^ b10;
2377 b7 = (tmp >> 49) | (tmp << (64 - 49));
2378 b10 -= b7;
2380 tmp = b15 ^ b4;
2381 b15 = (tmp >> 55) | (tmp << (64 - 55));
2382 b4 -= b15;
2384 tmp = b11 ^ b6;
2385 b11 = (tmp >> 10) | (tmp << (64 - 10));
2386 b6 -= b11;
2388 tmp = b13 ^ b2;
2389 b13 = (tmp >> 19) | (tmp << (64 - 19));
2390 b2 -= b13;
2392 tmp = b9 ^ b0;
2393 b9 = (tmp >> 38) | (tmp << (64 - 38));
2394 b0 -= b9;
2396 tmp = b15 ^ b14;
2397 b15 = (tmp >> 37) | (tmp << (64 - 37));
2398 b14 -= b15 + k15 + t1;
2399 b15 -= k16 + 18;
2401 tmp = b13 ^ b12;
2402 b13 = (tmp >> 22) | (tmp << (64 - 22));
2403 b12 -= b13 + k13;
2404 b13 -= k14 + t0;
2406 tmp = b11 ^ b10;
2407 b11 = (tmp >> 17) | (tmp << (64 - 17));
2408 b10 -= b11 + k11;
2409 b11 -= k12;
2411 tmp = b9 ^ b8;
2412 b9 = (tmp >> 8) | (tmp << (64 - 8));
2413 b8 -= b9 + k9;
2414 b9 -= k10;
2416 tmp = b7 ^ b6;
2417 b7 = (tmp >> 47) | (tmp << (64 - 47));
2418 b6 -= b7 + k7;
2419 b7 -= k8;
2421 tmp = b5 ^ b4;
2422 b5 = (tmp >> 8) | (tmp << (64 - 8));
2423 b4 -= b5 + k5;
2424 b5 -= k6;
2426 tmp = b3 ^ b2;
2427 b3 = (tmp >> 13) | (tmp << (64 - 13));
2428 b2 -= b3 + k3;
2429 b3 -= k4;
2431 tmp = b1 ^ b0;
2432 b1 = (tmp >> 24) | (tmp << (64 - 24));
2433 b0 -= b1 + k1;
2434 b1 -= k2;
2436 tmp = b7 ^ b12;
2437 b7 = (tmp >> 20) | (tmp << (64 - 20));
2438 b12 -= b7;
2440 tmp = b3 ^ b10;
2441 b3 = (tmp >> 37) | (tmp << (64 - 37));
2442 b10 -= b3;
2444 tmp = b5 ^ b8;
2445 b5 = (tmp >> 31) | (tmp << (64 - 31));
2446 b8 -= b5;
2448 tmp = b1 ^ b14;
2449 b1 = (tmp >> 23) | (tmp << (64 - 23));
2450 b14 -= b1;
2452 tmp = b9 ^ b4;
2453 b9 = (tmp >> 52) | (tmp << (64 - 52));
2454 b4 -= b9;
2456 tmp = b13 ^ b6;
2457 b13 = (tmp >> 35) | (tmp << (64 - 35));
2458 b6 -= b13;
2460 tmp = b11 ^ b2;
2461 b11 = (tmp >> 48) | (tmp << (64 - 48));
2462 b2 -= b11;
2464 tmp = b15 ^ b0;
2465 b15 = (tmp >> 9) | (tmp << (64 - 9));
2466 b0 -= b15;
2468 tmp = b9 ^ b10;
2469 b9 = (tmp >> 25) | (tmp << (64 - 25));
2470 b10 -= b9;
2472 tmp = b11 ^ b8;
2473 b11 = (tmp >> 44) | (tmp << (64 - 44));
2474 b8 -= b11;
2476 tmp = b13 ^ b14;
2477 b13 = (tmp >> 42) | (tmp << (64 - 42));
2478 b14 -= b13;
2480 tmp = b15 ^ b12;
2481 b15 = (tmp >> 19) | (tmp << (64 - 19));
2482 b12 -= b15;
2484 tmp = b1 ^ b6;
2485 b1 = (tmp >> 46) | (tmp << (64 - 46));
2486 b6 -= b1;
2488 tmp = b3 ^ b4;
2489 b3 = (tmp >> 47) | (tmp << (64 - 47));
2490 b4 -= b3;
2492 tmp = b5 ^ b2;
2493 b5 = (tmp >> 44) | (tmp << (64 - 44));
2494 b2 -= b5;
2496 tmp = b7 ^ b0;
2497 b7 = (tmp >> 31) | (tmp << (64 - 31));
2498 b0 -= b7;
2500 tmp = b1 ^ b8;
2501 b1 = (tmp >> 41) | (tmp << (64 - 41));
2502 b8 -= b1;
2504 tmp = b5 ^ b14;
2505 b5 = (tmp >> 42) | (tmp << (64 - 42));
2506 b14 -= b5;
2508 tmp = b3 ^ b12;
2509 b3 = (tmp >> 53) | (tmp << (64 - 53));
2510 b12 -= b3;
2512 tmp = b7 ^ b10;
2513 b7 = (tmp >> 4) | (tmp << (64 - 4));
2514 b10 -= b7;
2516 tmp = b15 ^ b4;
2517 b15 = (tmp >> 51) | (tmp << (64 - 51));
2518 b4 -= b15;
2520 tmp = b11 ^ b6;
2521 b11 = (tmp >> 56) | (tmp << (64 - 56));
2522 b6 -= b11;
2524 tmp = b13 ^ b2;
2525 b13 = (tmp >> 34) | (tmp << (64 - 34));
2526 b2 -= b13;
2528 tmp = b9 ^ b0;
2529 b9 = (tmp >> 16) | (tmp << (64 - 16));
2530 b0 -= b9;
2532 tmp = b15 ^ b14;
2533 b15 = (tmp >> 30) | (tmp << (64 - 30));
2534 b14 -= b15 + k14 + t0;
2535 b15 -= k15 + 17;
2537 tmp = b13 ^ b12;
2538 b13 = (tmp >> 44) | (tmp << (64 - 44));
2539 b12 -= b13 + k12;
2540 b13 -= k13 + t2;
2542 tmp = b11 ^ b10;
2543 b11 = (tmp >> 47) | (tmp << (64 - 47));
2544 b10 -= b11 + k10;
2545 b11 -= k11;
2547 tmp = b9 ^ b8;
2548 b9 = (tmp >> 12) | (tmp << (64 - 12));
2549 b8 -= b9 + k8;
2550 b9 -= k9;
2552 tmp = b7 ^ b6;
2553 b7 = (tmp >> 31) | (tmp << (64 - 31));
2554 b6 -= b7 + k6;
2555 b7 -= k7;
2557 tmp = b5 ^ b4;
2558 b5 = (tmp >> 37) | (tmp << (64 - 37));
2559 b4 -= b5 + k4;
2560 b5 -= k5;
2562 tmp = b3 ^ b2;
2563 b3 = (tmp >> 9) | (tmp << (64 - 9));
2564 b2 -= b3 + k2;
2565 b3 -= k3;
2567 tmp = b1 ^ b0;
2568 b1 = (tmp >> 41) | (tmp << (64 - 41));
2569 b0 -= b1 + k0;
2570 b1 -= k1;
2572 tmp = b7 ^ b12;
2573 b7 = (tmp >> 25) | (tmp << (64 - 25));
2574 b12 -= b7;
2576 tmp = b3 ^ b10;
2577 b3 = (tmp >> 16) | (tmp << (64 - 16));
2578 b10 -= b3;
2580 tmp = b5 ^ b8;
2581 b5 = (tmp >> 28) | (tmp << (64 - 28));
2582 b8 -= b5;
2584 tmp = b1 ^ b14;
2585 b1 = (tmp >> 47) | (tmp << (64 - 47));
2586 b14 -= b1;
2588 tmp = b9 ^ b4;
2589 b9 = (tmp >> 41) | (tmp << (64 - 41));
2590 b4 -= b9;
2592 tmp = b13 ^ b6;
2593 b13 = (tmp >> 48) | (tmp << (64 - 48));
2594 b6 -= b13;
2596 tmp = b11 ^ b2;
2597 b11 = (tmp >> 20) | (tmp << (64 - 20));
2598 b2 -= b11;
2600 tmp = b15 ^ b0;
2601 b15 = (tmp >> 5) | (tmp << (64 - 5));
2602 b0 -= b15;
2604 tmp = b9 ^ b10;
2605 b9 = (tmp >> 17) | (tmp << (64 - 17));
2606 b10 -= b9;
2608 tmp = b11 ^ b8;
2609 b11 = (tmp >> 59) | (tmp << (64 - 59));
2610 b8 -= b11;
2612 tmp = b13 ^ b14;
2613 b13 = (tmp >> 41) | (tmp << (64 - 41));
2614 b14 -= b13;
2616 tmp = b15 ^ b12;
2617 b15 = (tmp >> 34) | (tmp << (64 - 34));
2618 b12 -= b15;
2620 tmp = b1 ^ b6;
2621 b1 = (tmp >> 13) | (tmp << (64 - 13));
2622 b6 -= b1;
2624 tmp = b3 ^ b4;
2625 b3 = (tmp >> 51) | (tmp << (64 - 51));
2626 b4 -= b3;
2628 tmp = b5 ^ b2;
2629 b5 = (tmp >> 4) | (tmp << (64 - 4));
2630 b2 -= b5;
2632 tmp = b7 ^ b0;
2633 b7 = (tmp >> 33) | (tmp << (64 - 33));
2634 b0 -= b7;
2636 tmp = b1 ^ b8;
2637 b1 = (tmp >> 52) | (tmp << (64 - 52));
2638 b8 -= b1;
2640 tmp = b5 ^ b14;
2641 b5 = (tmp >> 23) | (tmp << (64 - 23));
2642 b14 -= b5;
2644 tmp = b3 ^ b12;
2645 b3 = (tmp >> 18) | (tmp << (64 - 18));
2646 b12 -= b3;
2648 tmp = b7 ^ b10;
2649 b7 = (tmp >> 49) | (tmp << (64 - 49));
2650 b10 -= b7;
2652 tmp = b15 ^ b4;
2653 b15 = (tmp >> 55) | (tmp << (64 - 55));
2654 b4 -= b15;
2656 tmp = b11 ^ b6;
2657 b11 = (tmp >> 10) | (tmp << (64 - 10));
2658 b6 -= b11;
2660 tmp = b13 ^ b2;
2661 b13 = (tmp >> 19) | (tmp << (64 - 19));
2662 b2 -= b13;
2664 tmp = b9 ^ b0;
2665 b9 = (tmp >> 38) | (tmp << (64 - 38));
2666 b0 -= b9;
2668 tmp = b15 ^ b14;
2669 b15 = (tmp >> 37) | (tmp << (64 - 37));
2670 b14 -= b15 + k13 + t2;
2671 b15 -= k14 + 16;
2673 tmp = b13 ^ b12;
2674 b13 = (tmp >> 22) | (tmp << (64 - 22));
2675 b12 -= b13 + k11;
2676 b13 -= k12 + t1;
2678 tmp = b11 ^ b10;
2679 b11 = (tmp >> 17) | (tmp << (64 - 17));
2680 b10 -= b11 + k9;
2681 b11 -= k10;
2683 tmp = b9 ^ b8;
2684 b9 = (tmp >> 8) | (tmp << (64 - 8));
2685 b8 -= b9 + k7;
2686 b9 -= k8;
2688 tmp = b7 ^ b6;
2689 b7 = (tmp >> 47) | (tmp << (64 - 47));
2690 b6 -= b7 + k5;
2691 b7 -= k6;
2693 tmp = b5 ^ b4;
2694 b5 = (tmp >> 8) | (tmp << (64 - 8));
2695 b4 -= b5 + k3;
2696 b5 -= k4;
2698 tmp = b3 ^ b2;
2699 b3 = (tmp >> 13) | (tmp << (64 - 13));
2700 b2 -= b3 + k1;
2701 b3 -= k2;
2703 tmp = b1 ^ b0;
2704 b1 = (tmp >> 24) | (tmp << (64 - 24));
2705 b0 -= b1 + k16;
2706 b1 -= k0;
2708 tmp = b7 ^ b12;
2709 b7 = (tmp >> 20) | (tmp << (64 - 20));
2710 b12 -= b7;
2712 tmp = b3 ^ b10;
2713 b3 = (tmp >> 37) | (tmp << (64 - 37));
2714 b10 -= b3;
2716 tmp = b5 ^ b8;
2717 b5 = (tmp >> 31) | (tmp << (64 - 31));
2718 b8 -= b5;
2720 tmp = b1 ^ b14;
2721 b1 = (tmp >> 23) | (tmp << (64 - 23));
2722 b14 -= b1;
2724 tmp = b9 ^ b4;
2725 b9 = (tmp >> 52) | (tmp << (64 - 52));
2726 b4 -= b9;
2728 tmp = b13 ^ b6;
2729 b13 = (tmp >> 35) | (tmp << (64 - 35));
2730 b6 -= b13;
2732 tmp = b11 ^ b2;
2733 b11 = (tmp >> 48) | (tmp << (64 - 48));
2734 b2 -= b11;
2736 tmp = b15 ^ b0;
2737 b15 = (tmp >> 9) | (tmp << (64 - 9));
2738 b0 -= b15;
2740 tmp = b9 ^ b10;
2741 b9 = (tmp >> 25) | (tmp << (64 - 25));
2742 b10 -= b9;
2744 tmp = b11 ^ b8;
2745 b11 = (tmp >> 44) | (tmp << (64 - 44));
2746 b8 -= b11;
2748 tmp = b13 ^ b14;
2749 b13 = (tmp >> 42) | (tmp << (64 - 42));
2750 b14 -= b13;
2752 tmp = b15 ^ b12;
2753 b15 = (tmp >> 19) | (tmp << (64 - 19));
2754 b12 -= b15;
2756 tmp = b1 ^ b6;
2757 b1 = (tmp >> 46) | (tmp << (64 - 46));
2758 b6 -= b1;
2760 tmp = b3 ^ b4;
2761 b3 = (tmp >> 47) | (tmp << (64 - 47));
2762 b4 -= b3;
2764 tmp = b5 ^ b2;
2765 b5 = (tmp >> 44) | (tmp << (64 - 44));
2766 b2 -= b5;
2768 tmp = b7 ^ b0;
2769 b7 = (tmp >> 31) | (tmp << (64 - 31));
2770 b0 -= b7;
2772 tmp = b1 ^ b8;
2773 b1 = (tmp >> 41) | (tmp << (64 - 41));
2774 b8 -= b1;
2776 tmp = b5 ^ b14;
2777 b5 = (tmp >> 42) | (tmp << (64 - 42));
2778 b14 -= b5;
2780 tmp = b3 ^ b12;
2781 b3 = (tmp >> 53) | (tmp << (64 - 53));
2782 b12 -= b3;
2784 tmp = b7 ^ b10;
2785 b7 = (tmp >> 4) | (tmp << (64 - 4));
2786 b10 -= b7;
2788 tmp = b15 ^ b4;
2789 b15 = (tmp >> 51) | (tmp << (64 - 51));
2790 b4 -= b15;
2792 tmp = b11 ^ b6;
2793 b11 = (tmp >> 56) | (tmp << (64 - 56));
2794 b6 -= b11;
2796 tmp = b13 ^ b2;
2797 b13 = (tmp >> 34) | (tmp << (64 - 34));
2798 b2 -= b13;
2800 tmp = b9 ^ b0;
2801 b9 = (tmp >> 16) | (tmp << (64 - 16));
2802 b0 -= b9;
2804 tmp = b15 ^ b14;
2805 b15 = (tmp >> 30) | (tmp << (64 - 30));
2806 b14 -= b15 + k12 + t1;
2807 b15 -= k13 + 15;
2809 tmp = b13 ^ b12;
2810 b13 = (tmp >> 44) | (tmp << (64 - 44));
2811 b12 -= b13 + k10;
2812 b13 -= k11 + t0;
2814 tmp = b11 ^ b10;
2815 b11 = (tmp >> 47) | (tmp << (64 - 47));
2816 b10 -= b11 + k8;
2817 b11 -= k9;
2819 tmp = b9 ^ b8;
2820 b9 = (tmp >> 12) | (tmp << (64 - 12));
2821 b8 -= b9 + k6;
2822 b9 -= k7;
2824 tmp = b7 ^ b6;
2825 b7 = (tmp >> 31) | (tmp << (64 - 31));
2826 b6 -= b7 + k4;
2827 b7 -= k5;
2829 tmp = b5 ^ b4;
2830 b5 = (tmp >> 37) | (tmp << (64 - 37));
2831 b4 -= b5 + k2;
2832 b5 -= k3;
2834 tmp = b3 ^ b2;
2835 b3 = (tmp >> 9) | (tmp << (64 - 9));
2836 b2 -= b3 + k0;
2837 b3 -= k1;
2839 tmp = b1 ^ b0;
2840 b1 = (tmp >> 41) | (tmp << (64 - 41));
2841 b0 -= b1 + k15;
2842 b1 -= k16;
2844 tmp = b7 ^ b12;
2845 b7 = (tmp >> 25) | (tmp << (64 - 25));
2846 b12 -= b7;
2848 tmp = b3 ^ b10;
2849 b3 = (tmp >> 16) | (tmp << (64 - 16));
2850 b10 -= b3;
2852 tmp = b5 ^ b8;
2853 b5 = (tmp >> 28) | (tmp << (64 - 28));
2854 b8 -= b5;
2856 tmp = b1 ^ b14;
2857 b1 = (tmp >> 47) | (tmp << (64 - 47));
2858 b14 -= b1;
2860 tmp = b9 ^ b4;
2861 b9 = (tmp >> 41) | (tmp << (64 - 41));
2862 b4 -= b9;
2864 tmp = b13 ^ b6;
2865 b13 = (tmp >> 48) | (tmp << (64 - 48));
2866 b6 -= b13;
2868 tmp = b11 ^ b2;
2869 b11 = (tmp >> 20) | (tmp << (64 - 20));
2870 b2 -= b11;
2872 tmp = b15 ^ b0;
2873 b15 = (tmp >> 5) | (tmp << (64 - 5));
2874 b0 -= b15;
2876 tmp = b9 ^ b10;
2877 b9 = (tmp >> 17) | (tmp << (64 - 17));
2878 b10 -= b9;
2880 tmp = b11 ^ b8;
2881 b11 = (tmp >> 59) | (tmp << (64 - 59));
2882 b8 -= b11;
2884 tmp = b13 ^ b14;
2885 b13 = (tmp >> 41) | (tmp << (64 - 41));
2886 b14 -= b13;
2888 tmp = b15 ^ b12;
2889 b15 = (tmp >> 34) | (tmp << (64 - 34));
2890 b12 -= b15;
2892 tmp = b1 ^ b6;
2893 b1 = (tmp >> 13) | (tmp << (64 - 13));
2894 b6 -= b1;
2896 tmp = b3 ^ b4;
2897 b3 = (tmp >> 51) | (tmp << (64 - 51));
2898 b4 -= b3;
2900 tmp = b5 ^ b2;
2901 b5 = (tmp >> 4) | (tmp << (64 - 4));
2902 b2 -= b5;
2904 tmp = b7 ^ b0;
2905 b7 = (tmp >> 33) | (tmp << (64 - 33));
2906 b0 -= b7;
2908 tmp = b1 ^ b8;
2909 b1 = (tmp >> 52) | (tmp << (64 - 52));
2910 b8 -= b1;
2912 tmp = b5 ^ b14;
2913 b5 = (tmp >> 23) | (tmp << (64 - 23));
2914 b14 -= b5;
2916 tmp = b3 ^ b12;
2917 b3 = (tmp >> 18) | (tmp << (64 - 18));
2918 b12 -= b3;
2920 tmp = b7 ^ b10;
2921 b7 = (tmp >> 49) | (tmp << (64 - 49));
2922 b10 -= b7;
2924 tmp = b15 ^ b4;
2925 b15 = (tmp >> 55) | (tmp << (64 - 55));
2926 b4 -= b15;
2928 tmp = b11 ^ b6;
2929 b11 = (tmp >> 10) | (tmp << (64 - 10));
2930 b6 -= b11;
2932 tmp = b13 ^ b2;
2933 b13 = (tmp >> 19) | (tmp << (64 - 19));
2934 b2 -= b13;
2936 tmp = b9 ^ b0;
2937 b9 = (tmp >> 38) | (tmp << (64 - 38));
2938 b0 -= b9;
2940 tmp = b15 ^ b14;
2941 b15 = (tmp >> 37) | (tmp << (64 - 37));
2942 b14 -= b15 + k11 + t0;
2943 b15 -= k12 + 14;
2945 tmp = b13 ^ b12;
2946 b13 = (tmp >> 22) | (tmp << (64 - 22));
2947 b12 -= b13 + k9;
2948 b13 -= k10 + t2;
2950 tmp = b11 ^ b10;
2951 b11 = (tmp >> 17) | (tmp << (64 - 17));
2952 b10 -= b11 + k7;
2953 b11 -= k8;
2955 tmp = b9 ^ b8;
2956 b9 = (tmp >> 8) | (tmp << (64 - 8));
2957 b8 -= b9 + k5;
2958 b9 -= k6;
2960 tmp = b7 ^ b6;
2961 b7 = (tmp >> 47) | (tmp << (64 - 47));
2962 b6 -= b7 + k3;
2963 b7 -= k4;
2965 tmp = b5 ^ b4;
2966 b5 = (tmp >> 8) | (tmp << (64 - 8));
2967 b4 -= b5 + k1;
2968 b5 -= k2;
2970 tmp = b3 ^ b2;
2971 b3 = (tmp >> 13) | (tmp << (64 - 13));
2972 b2 -= b3 + k16;
2973 b3 -= k0;
2975 tmp = b1 ^ b0;
2976 b1 = (tmp >> 24) | (tmp << (64 - 24));
2977 b0 -= b1 + k14;
2978 b1 -= k15;
2980 tmp = b7 ^ b12;
2981 b7 = (tmp >> 20) | (tmp << (64 - 20));
2982 b12 -= b7;
2984 tmp = b3 ^ b10;
2985 b3 = (tmp >> 37) | (tmp << (64 - 37));
2986 b10 -= b3;
2988 tmp = b5 ^ b8;
2989 b5 = (tmp >> 31) | (tmp << (64 - 31));
2990 b8 -= b5;
2992 tmp = b1 ^ b14;
2993 b1 = (tmp >> 23) | (tmp << (64 - 23));
2994 b14 -= b1;
2996 tmp = b9 ^ b4;
2997 b9 = (tmp >> 52) | (tmp << (64 - 52));
2998 b4 -= b9;
3000 tmp = b13 ^ b6;
3001 b13 = (tmp >> 35) | (tmp << (64 - 35));
3002 b6 -= b13;
3004 tmp = b11 ^ b2;
3005 b11 = (tmp >> 48) | (tmp << (64 - 48));
3006 b2 -= b11;
3008 tmp = b15 ^ b0;
3009 b15 = (tmp >> 9) | (tmp << (64 - 9));
3010 b0 -= b15;
3012 tmp = b9 ^ b10;
3013 b9 = (tmp >> 25) | (tmp << (64 - 25));
3014 b10 -= b9;
3016 tmp = b11 ^ b8;
3017 b11 = (tmp >> 44) | (tmp << (64 - 44));
3018 b8 -= b11;
3020 tmp = b13 ^ b14;
3021 b13 = (tmp >> 42) | (tmp << (64 - 42));
3022 b14 -= b13;
3024 tmp = b15 ^ b12;
3025 b15 = (tmp >> 19) | (tmp << (64 - 19));
3026 b12 -= b15;
3028 tmp = b1 ^ b6;
3029 b1 = (tmp >> 46) | (tmp << (64 - 46));
3030 b6 -= b1;
3032 tmp = b3 ^ b4;
3033 b3 = (tmp >> 47) | (tmp << (64 - 47));
3034 b4 -= b3;
3036 tmp = b5 ^ b2;
3037 b5 = (tmp >> 44) | (tmp << (64 - 44));
3038 b2 -= b5;
3040 tmp = b7 ^ b0;
3041 b7 = (tmp >> 31) | (tmp << (64 - 31));
3042 b0 -= b7;
3044 tmp = b1 ^ b8;
3045 b1 = (tmp >> 41) | (tmp << (64 - 41));
3046 b8 -= b1;
3048 tmp = b5 ^ b14;
3049 b5 = (tmp >> 42) | (tmp << (64 - 42));
3050 b14 -= b5;
3052 tmp = b3 ^ b12;
3053 b3 = (tmp >> 53) | (tmp << (64 - 53));
3054 b12 -= b3;
3056 tmp = b7 ^ b10;
3057 b7 = (tmp >> 4) | (tmp << (64 - 4));
3058 b10 -= b7;
3060 tmp = b15 ^ b4;
3061 b15 = (tmp >> 51) | (tmp << (64 - 51));
3062 b4 -= b15;
3064 tmp = b11 ^ b6;
3065 b11 = (tmp >> 56) | (tmp << (64 - 56));
3066 b6 -= b11;
3068 tmp = b13 ^ b2;
3069 b13 = (tmp >> 34) | (tmp << (64 - 34));
3070 b2 -= b13;
3072 tmp = b9 ^ b0;
3073 b9 = (tmp >> 16) | (tmp << (64 - 16));
3074 b0 -= b9;
3076 tmp = b15 ^ b14;
3077 b15 = (tmp >> 30) | (tmp << (64 - 30));
3078 b14 -= b15 + k10 + t2;
3079 b15 -= k11 + 13;
3081 tmp = b13 ^ b12;
3082 b13 = (tmp >> 44) | (tmp << (64 - 44));
3083 b12 -= b13 + k8;
3084 b13 -= k9 + t1;
3086 tmp = b11 ^ b10;
3087 b11 = (tmp >> 47) | (tmp << (64 - 47));
3088 b10 -= b11 + k6;
3089 b11 -= k7;
3091 tmp = b9 ^ b8;
3092 b9 = (tmp >> 12) | (tmp << (64 - 12));
3093 b8 -= b9 + k4;
3094 b9 -= k5;
3096 tmp = b7 ^ b6;
3097 b7 = (tmp >> 31) | (tmp << (64 - 31));
3098 b6 -= b7 + k2;
3099 b7 -= k3;
3101 tmp = b5 ^ b4;
3102 b5 = (tmp >> 37) | (tmp << (64 - 37));
3103 b4 -= b5 + k0;
3104 b5 -= k1;
3106 tmp = b3 ^ b2;
3107 b3 = (tmp >> 9) | (tmp << (64 - 9));
3108 b2 -= b3 + k15;
3109 b3 -= k16;
3111 tmp = b1 ^ b0;
3112 b1 = (tmp >> 41) | (tmp << (64 - 41));
3113 b0 -= b1 + k13;
3114 b1 -= k14;
3116 tmp = b7 ^ b12;
3117 b7 = (tmp >> 25) | (tmp << (64 - 25));
3118 b12 -= b7;
3120 tmp = b3 ^ b10;
3121 b3 = (tmp >> 16) | (tmp << (64 - 16));
3122 b10 -= b3;
3124 tmp = b5 ^ b8;
3125 b5 = (tmp >> 28) | (tmp << (64 - 28));
3126 b8 -= b5;
3128 tmp = b1 ^ b14;
3129 b1 = (tmp >> 47) | (tmp << (64 - 47));
3130 b14 -= b1;
3132 tmp = b9 ^ b4;
3133 b9 = (tmp >> 41) | (tmp << (64 - 41));
3134 b4 -= b9;
3136 tmp = b13 ^ b6;
3137 b13 = (tmp >> 48) | (tmp << (64 - 48));
3138 b6 -= b13;
3140 tmp = b11 ^ b2;
3141 b11 = (tmp >> 20) | (tmp << (64 - 20));
3142 b2 -= b11;
3144 tmp = b15 ^ b0;
3145 b15 = (tmp >> 5) | (tmp << (64 - 5));
3146 b0 -= b15;
3148 tmp = b9 ^ b10;
3149 b9 = (tmp >> 17) | (tmp << (64 - 17));
3150 b10 -= b9;
3152 tmp = b11 ^ b8;
3153 b11 = (tmp >> 59) | (tmp << (64 - 59));
3154 b8 -= b11;
3156 tmp = b13 ^ b14;
3157 b13 = (tmp >> 41) | (tmp << (64 - 41));
3158 b14 -= b13;
3160 tmp = b15 ^ b12;
3161 b15 = (tmp >> 34) | (tmp << (64 - 34));
3162 b12 -= b15;
3164 tmp = b1 ^ b6;
3165 b1 = (tmp >> 13) | (tmp << (64 - 13));
3166 b6 -= b1;
3168 tmp = b3 ^ b4;
3169 b3 = (tmp >> 51) | (tmp << (64 - 51));
3170 b4 -= b3;
3172 tmp = b5 ^ b2;
3173 b5 = (tmp >> 4) | (tmp << (64 - 4));
3174 b2 -= b5;
3176 tmp = b7 ^ b0;
3177 b7 = (tmp >> 33) | (tmp << (64 - 33));
3178 b0 -= b7;
3180 tmp = b1 ^ b8;
3181 b1 = (tmp >> 52) | (tmp << (64 - 52));
3182 b8 -= b1;
3184 tmp = b5 ^ b14;
3185 b5 = (tmp >> 23) | (tmp << (64 - 23));
3186 b14 -= b5;
3188 tmp = b3 ^ b12;
3189 b3 = (tmp >> 18) | (tmp << (64 - 18));
3190 b12 -= b3;
3192 tmp = b7 ^ b10;
3193 b7 = (tmp >> 49) | (tmp << (64 - 49));
3194 b10 -= b7;
3196 tmp = b15 ^ b4;
3197 b15 = (tmp >> 55) | (tmp << (64 - 55));
3198 b4 -= b15;
3200 tmp = b11 ^ b6;
3201 b11 = (tmp >> 10) | (tmp << (64 - 10));
3202 b6 -= b11;
3204 tmp = b13 ^ b2;
3205 b13 = (tmp >> 19) | (tmp << (64 - 19));
3206 b2 -= b13;
3208 tmp = b9 ^ b0;
3209 b9 = (tmp >> 38) | (tmp << (64 - 38));
3210 b0 -= b9;
3212 tmp = b15 ^ b14;
3213 b15 = (tmp >> 37) | (tmp << (64 - 37));
3214 b14 -= b15 + k9 + t1;
3215 b15 -= k10 + 12;
3217 tmp = b13 ^ b12;
3218 b13 = (tmp >> 22) | (tmp << (64 - 22));
3219 b12 -= b13 + k7;
3220 b13 -= k8 + t0;
3222 tmp = b11 ^ b10;
3223 b11 = (tmp >> 17) | (tmp << (64 - 17));
3224 b10 -= b11 + k5;
3225 b11 -= k6;
3227 tmp = b9 ^ b8;
3228 b9 = (tmp >> 8) | (tmp << (64 - 8));
3229 b8 -= b9 + k3;
3230 b9 -= k4;
3232 tmp = b7 ^ b6;
3233 b7 = (tmp >> 47) | (tmp << (64 - 47));
3234 b6 -= b7 + k1;
3235 b7 -= k2;
3237 tmp = b5 ^ b4;
3238 b5 = (tmp >> 8) | (tmp << (64 - 8));
3239 b4 -= b5 + k16;
3240 b5 -= k0;
3242 tmp = b3 ^ b2;
3243 b3 = (tmp >> 13) | (tmp << (64 - 13));
3244 b2 -= b3 + k14;
3245 b3 -= k15;
3247 tmp = b1 ^ b0;
3248 b1 = (tmp >> 24) | (tmp << (64 - 24));
3249 b0 -= b1 + k12;
3250 b1 -= k13;
3252 tmp = b7 ^ b12;
3253 b7 = (tmp >> 20) | (tmp << (64 - 20));
3254 b12 -= b7;
3256 tmp = b3 ^ b10;
3257 b3 = (tmp >> 37) | (tmp << (64 - 37));
3258 b10 -= b3;
3260 tmp = b5 ^ b8;
3261 b5 = (tmp >> 31) | (tmp << (64 - 31));
3262 b8 -= b5;
3264 tmp = b1 ^ b14;
3265 b1 = (tmp >> 23) | (tmp << (64 - 23));
3266 b14 -= b1;
3268 tmp = b9 ^ b4;
3269 b9 = (tmp >> 52) | (tmp << (64 - 52));
3270 b4 -= b9;
3272 tmp = b13 ^ b6;
3273 b13 = (tmp >> 35) | (tmp << (64 - 35));
3274 b6 -= b13;
3276 tmp = b11 ^ b2;
3277 b11 = (tmp >> 48) | (tmp << (64 - 48));
3278 b2 -= b11;
3280 tmp = b15 ^ b0;
3281 b15 = (tmp >> 9) | (tmp << (64 - 9));
3282 b0 -= b15;
3284 tmp = b9 ^ b10;
3285 b9 = (tmp >> 25) | (tmp << (64 - 25));
3286 b10 -= b9;
3288 tmp = b11 ^ b8;
3289 b11 = (tmp >> 44) | (tmp << (64 - 44));
3290 b8 -= b11;
3292 tmp = b13 ^ b14;
3293 b13 = (tmp >> 42) | (tmp << (64 - 42));
3294 b14 -= b13;
3296 tmp = b15 ^ b12;
3297 b15 = (tmp >> 19) | (tmp << (64 - 19));
3298 b12 -= b15;
3300 tmp = b1 ^ b6;
3301 b1 = (tmp >> 46) | (tmp << (64 - 46));
3302 b6 -= b1;
3304 tmp = b3 ^ b4;
3305 b3 = (tmp >> 47) | (tmp << (64 - 47));
3306 b4 -= b3;
3308 tmp = b5 ^ b2;
3309 b5 = (tmp >> 44) | (tmp << (64 - 44));
3310 b2 -= b5;
3312 tmp = b7 ^ b0;
3313 b7 = (tmp >> 31) | (tmp << (64 - 31));
3314 b0 -= b7;
3316 tmp = b1 ^ b8;
3317 b1 = (tmp >> 41) | (tmp << (64 - 41));
3318 b8 -= b1;
3320 tmp = b5 ^ b14;
3321 b5 = (tmp >> 42) | (tmp << (64 - 42));
3322 b14 -= b5;
3324 tmp = b3 ^ b12;
3325 b3 = (tmp >> 53) | (tmp << (64 - 53));
3326 b12 -= b3;
3328 tmp = b7 ^ b10;
3329 b7 = (tmp >> 4) | (tmp << (64 - 4));
3330 b10 -= b7;
3332 tmp = b15 ^ b4;
3333 b15 = (tmp >> 51) | (tmp << (64 - 51));
3334 b4 -= b15;
3336 tmp = b11 ^ b6;
3337 b11 = (tmp >> 56) | (tmp << (64 - 56));
3338 b6 -= b11;
3340 tmp = b13 ^ b2;
3341 b13 = (tmp >> 34) | (tmp << (64 - 34));
3342 b2 -= b13;
3344 tmp = b9 ^ b0;
3345 b9 = (tmp >> 16) | (tmp << (64 - 16));
3346 b0 -= b9;
3348 tmp = b15 ^ b14;
3349 b15 = (tmp >> 30) | (tmp << (64 - 30));
3350 b14 -= b15 + k8 + t0;
3351 b15 -= k9 + 11;
3353 tmp = b13 ^ b12;
3354 b13 = (tmp >> 44) | (tmp << (64 - 44));
3355 b12 -= b13 + k6;
3356 b13 -= k7 + t2;
3358 tmp = b11 ^ b10;
3359 b11 = (tmp >> 47) | (tmp << (64 - 47));
3360 b10 -= b11 + k4;
3361 b11 -= k5;
3363 tmp = b9 ^ b8;
3364 b9 = (tmp >> 12) | (tmp << (64 - 12));
3365 b8 -= b9 + k2;
3366 b9 -= k3;
3368 tmp = b7 ^ b6;
3369 b7 = (tmp >> 31) | (tmp << (64 - 31));
3370 b6 -= b7 + k0;
3371 b7 -= k1;
3373 tmp = b5 ^ b4;
3374 b5 = (tmp >> 37) | (tmp << (64 - 37));
3375 b4 -= b5 + k15;
3376 b5 -= k16;
3378 tmp = b3 ^ b2;
3379 b3 = (tmp >> 9) | (tmp << (64 - 9));
3380 b2 -= b3 + k13;
3381 b3 -= k14;
3383 tmp = b1 ^ b0;
3384 b1 = (tmp >> 41) | (tmp << (64 - 41));
3385 b0 -= b1 + k11;
3386 b1 -= k12;
3388 tmp = b7 ^ b12;
3389 b7 = (tmp >> 25) | (tmp << (64 - 25));
3390 b12 -= b7;
3392 tmp = b3 ^ b10;
3393 b3 = (tmp >> 16) | (tmp << (64 - 16));
3394 b10 -= b3;
3396 tmp = b5 ^ b8;
3397 b5 = (tmp >> 28) | (tmp << (64 - 28));
3398 b8 -= b5;
3400 tmp = b1 ^ b14;
3401 b1 = (tmp >> 47) | (tmp << (64 - 47));
3402 b14 -= b1;
3404 tmp = b9 ^ b4;
3405 b9 = (tmp >> 41) | (tmp << (64 - 41));
3406 b4 -= b9;
3408 tmp = b13 ^ b6;
3409 b13 = (tmp >> 48) | (tmp << (64 - 48));
3410 b6 -= b13;
3412 tmp = b11 ^ b2;
3413 b11 = (tmp >> 20) | (tmp << (64 - 20));
3414 b2 -= b11;
3416 tmp = b15 ^ b0;
3417 b15 = (tmp >> 5) | (tmp << (64 - 5));
3418 b0 -= b15;
3420 tmp = b9 ^ b10;
3421 b9 = (tmp >> 17) | (tmp << (64 - 17));
3422 b10 -= b9;
3424 tmp = b11 ^ b8;
3425 b11 = (tmp >> 59) | (tmp << (64 - 59));
3426 b8 -= b11;
3428 tmp = b13 ^ b14;
3429 b13 = (tmp >> 41) | (tmp << (64 - 41));
3430 b14 -= b13;
3432 tmp = b15 ^ b12;
3433 b15 = (tmp >> 34) | (tmp << (64 - 34));
3434 b12 -= b15;
3436 tmp = b1 ^ b6;
3437 b1 = (tmp >> 13) | (tmp << (64 - 13));
3438 b6 -= b1;
3440 tmp = b3 ^ b4;
3441 b3 = (tmp >> 51) | (tmp << (64 - 51));
3442 b4 -= b3;
3444 tmp = b5 ^ b2;
3445 b5 = (tmp >> 4) | (tmp << (64 - 4));
3446 b2 -= b5;
3448 tmp = b7 ^ b0;
3449 b7 = (tmp >> 33) | (tmp << (64 - 33));
3450 b0 -= b7;
3452 tmp = b1 ^ b8;
3453 b1 = (tmp >> 52) | (tmp << (64 - 52));
3454 b8 -= b1;
3456 tmp = b5 ^ b14;
3457 b5 = (tmp >> 23) | (tmp << (64 - 23));
3458 b14 -= b5;
3460 tmp = b3 ^ b12;
3461 b3 = (tmp >> 18) | (tmp << (64 - 18));
3462 b12 -= b3;
3464 tmp = b7 ^ b10;
3465 b7 = (tmp >> 49) | (tmp << (64 - 49));
3466 b10 -= b7;
3468 tmp = b15 ^ b4;
3469 b15 = (tmp >> 55) | (tmp << (64 - 55));
3470 b4 -= b15;
3472 tmp = b11 ^ b6;
3473 b11 = (tmp >> 10) | (tmp << (64 - 10));
3474 b6 -= b11;
3476 tmp = b13 ^ b2;
3477 b13 = (tmp >> 19) | (tmp << (64 - 19));
3478 b2 -= b13;
3480 tmp = b9 ^ b0;
3481 b9 = (tmp >> 38) | (tmp << (64 - 38));
3482 b0 -= b9;
3484 tmp = b15 ^ b14;
3485 b15 = (tmp >> 37) | (tmp << (64 - 37));
3486 b14 -= b15 + k7 + t2;
3487 b15 -= k8 + 10;
3489 tmp = b13 ^ b12;
3490 b13 = (tmp >> 22) | (tmp << (64 - 22));
3491 b12 -= b13 + k5;
3492 b13 -= k6 + t1;
3494 tmp = b11 ^ b10;
3495 b11 = (tmp >> 17) | (tmp << (64 - 17));
3496 b10 -= b11 + k3;
3497 b11 -= k4;
3499 tmp = b9 ^ b8;
3500 b9 = (tmp >> 8) | (tmp << (64 - 8));
3501 b8 -= b9 + k1;
3502 b9 -= k2;
3504 tmp = b7 ^ b6;
3505 b7 = (tmp >> 47) | (tmp << (64 - 47));
3506 b6 -= b7 + k16;
3507 b7 -= k0;
3509 tmp = b5 ^ b4;
3510 b5 = (tmp >> 8) | (tmp << (64 - 8));
3511 b4 -= b5 + k14;
3512 b5 -= k15;
3514 tmp = b3 ^ b2;
3515 b3 = (tmp >> 13) | (tmp << (64 - 13));
3516 b2 -= b3 + k12;
3517 b3 -= k13;
3519 tmp = b1 ^ b0;
3520 b1 = (tmp >> 24) | (tmp << (64 - 24));
3521 b0 -= b1 + k10;
3522 b1 -= k11;
3524 tmp = b7 ^ b12;
3525 b7 = (tmp >> 20) | (tmp << (64 - 20));
3526 b12 -= b7;
3528 tmp = b3 ^ b10;
3529 b3 = (tmp >> 37) | (tmp << (64 - 37));
3530 b10 -= b3;
3532 tmp = b5 ^ b8;
3533 b5 = (tmp >> 31) | (tmp << (64 - 31));
3534 b8 -= b5;
3536 tmp = b1 ^ b14;
3537 b1 = (tmp >> 23) | (tmp << (64 - 23));
3538 b14 -= b1;
3540 tmp = b9 ^ b4;
3541 b9 = (tmp >> 52) | (tmp << (64 - 52));
3542 b4 -= b9;
3544 tmp = b13 ^ b6;
3545 b13 = (tmp >> 35) | (tmp << (64 - 35));
3546 b6 -= b13;
3548 tmp = b11 ^ b2;
3549 b11 = (tmp >> 48) | (tmp << (64 - 48));
3550 b2 -= b11;
3552 tmp = b15 ^ b0;
3553 b15 = (tmp >> 9) | (tmp << (64 - 9));
3554 b0 -= b15;
3556 tmp = b9 ^ b10;
3557 b9 = (tmp >> 25) | (tmp << (64 - 25));
3558 b10 -= b9;
3560 tmp = b11 ^ b8;
3561 b11 = (tmp >> 44) | (tmp << (64 - 44));
3562 b8 -= b11;
3564 tmp = b13 ^ b14;
3565 b13 = (tmp >> 42) | (tmp << (64 - 42));
3566 b14 -= b13;
3568 tmp = b15 ^ b12;
3569 b15 = (tmp >> 19) | (tmp << (64 - 19));
3570 b12 -= b15;
3572 tmp = b1 ^ b6;
3573 b1 = (tmp >> 46) | (tmp << (64 - 46));
3574 b6 -= b1;
3576 tmp = b3 ^ b4;
3577 b3 = (tmp >> 47) | (tmp << (64 - 47));
3578 b4 -= b3;
3580 tmp = b5 ^ b2;
3581 b5 = (tmp >> 44) | (tmp << (64 - 44));
3582 b2 -= b5;
3584 tmp = b7 ^ b0;
3585 b7 = (tmp >> 31) | (tmp << (64 - 31));
3586 b0 -= b7;
3588 tmp = b1 ^ b8;
3589 b1 = (tmp >> 41) | (tmp << (64 - 41));
3590 b8 -= b1;
3592 tmp = b5 ^ b14;
3593 b5 = (tmp >> 42) | (tmp << (64 - 42));
3594 b14 -= b5;
3596 tmp = b3 ^ b12;
3597 b3 = (tmp >> 53) | (tmp << (64 - 53));
3598 b12 -= b3;
3600 tmp = b7 ^ b10;
3601 b7 = (tmp >> 4) | (tmp << (64 - 4));
3602 b10 -= b7;
3604 tmp = b15 ^ b4;
3605 b15 = (tmp >> 51) | (tmp << (64 - 51));
3606 b4 -= b15;
3608 tmp = b11 ^ b6;
3609 b11 = (tmp >> 56) | (tmp << (64 - 56));
3610 b6 -= b11;
3612 tmp = b13 ^ b2;
3613 b13 = (tmp >> 34) | (tmp << (64 - 34));
3614 b2 -= b13;
3616 tmp = b9 ^ b0;
3617 b9 = (tmp >> 16) | (tmp << (64 - 16));
3618 b0 -= b9;
3620 tmp = b15 ^ b14;
3621 b15 = (tmp >> 30) | (tmp << (64 - 30));
3622 b14 -= b15 + k6 + t1;
3623 b15 -= k7 + 9;
3625 tmp = b13 ^ b12;
3626 b13 = (tmp >> 44) | (tmp << (64 - 44));
3627 b12 -= b13 + k4;
3628 b13 -= k5 + t0;
3630 tmp = b11 ^ b10;
3631 b11 = (tmp >> 47) | (tmp << (64 - 47));
3632 b10 -= b11 + k2;
3633 b11 -= k3;
3635 tmp = b9 ^ b8;
3636 b9 = (tmp >> 12) | (tmp << (64 - 12));
3637 b8 -= b9 + k0;
3638 b9 -= k1;
3640 tmp = b7 ^ b6;
3641 b7 = (tmp >> 31) | (tmp << (64 - 31));
3642 b6 -= b7 + k15;
3643 b7 -= k16;
3645 tmp = b5 ^ b4;
3646 b5 = (tmp >> 37) | (tmp << (64 - 37));
3647 b4 -= b5 + k13;
3648 b5 -= k14;
3650 tmp = b3 ^ b2;
3651 b3 = (tmp >> 9) | (tmp << (64 - 9));
3652 b2 -= b3 + k11;
3653 b3 -= k12;
3655 tmp = b1 ^ b0;
3656 b1 = (tmp >> 41) | (tmp << (64 - 41));
3657 b0 -= b1 + k9;
3658 b1 -= k10;
3660 tmp = b7 ^ b12;
3661 b7 = (tmp >> 25) | (tmp << (64 - 25));
3662 b12 -= b7;
3664 tmp = b3 ^ b10;
3665 b3 = (tmp >> 16) | (tmp << (64 - 16));
3666 b10 -= b3;
3668 tmp = b5 ^ b8;
3669 b5 = (tmp >> 28) | (tmp << (64 - 28));
3670 b8 -= b5;
3672 tmp = b1 ^ b14;
3673 b1 = (tmp >> 47) | (tmp << (64 - 47));
3674 b14 -= b1;
3676 tmp = b9 ^ b4;
3677 b9 = (tmp >> 41) | (tmp << (64 - 41));
3678 b4 -= b9;
3680 tmp = b13 ^ b6;
3681 b13 = (tmp >> 48) | (tmp << (64 - 48));
3682 b6 -= b13;
3684 tmp = b11 ^ b2;
3685 b11 = (tmp >> 20) | (tmp << (64 - 20));
3686 b2 -= b11;
3688 tmp = b15 ^ b0;
3689 b15 = (tmp >> 5) | (tmp << (64 - 5));
3690 b0 -= b15;
3692 tmp = b9 ^ b10;
3693 b9 = (tmp >> 17) | (tmp << (64 - 17));
3694 b10 -= b9;
3696 tmp = b11 ^ b8;
3697 b11 = (tmp >> 59) | (tmp << (64 - 59));
3698 b8 -= b11;
3700 tmp = b13 ^ b14;
3701 b13 = (tmp >> 41) | (tmp << (64 - 41));
3702 b14 -= b13;
3704 tmp = b15 ^ b12;
3705 b15 = (tmp >> 34) | (tmp << (64 - 34));
3706 b12 -= b15;
3708 tmp = b1 ^ b6;
3709 b1 = (tmp >> 13) | (tmp << (64 - 13));
3710 b6 -= b1;
3712 tmp = b3 ^ b4;
3713 b3 = (tmp >> 51) | (tmp << (64 - 51));
3714 b4 -= b3;
3716 tmp = b5 ^ b2;
3717 b5 = (tmp >> 4) | (tmp << (64 - 4));
3718 b2 -= b5;
3720 tmp = b7 ^ b0;
3721 b7 = (tmp >> 33) | (tmp << (64 - 33));
3722 b0 -= b7;
3724 tmp = b1 ^ b8;
3725 b1 = (tmp >> 52) | (tmp << (64 - 52));
3726 b8 -= b1;
3728 tmp = b5 ^ b14;
3729 b5 = (tmp >> 23) | (tmp << (64 - 23));
3730 b14 -= b5;
3732 tmp = b3 ^ b12;
3733 b3 = (tmp >> 18) | (tmp << (64 - 18));
3734 b12 -= b3;
3736 tmp = b7 ^ b10;
3737 b7 = (tmp >> 49) | (tmp << (64 - 49));
3738 b10 -= b7;
3740 tmp = b15 ^ b4;
3741 b15 = (tmp >> 55) | (tmp << (64 - 55));
3742 b4 -= b15;
3744 tmp = b11 ^ b6;
3745 b11 = (tmp >> 10) | (tmp << (64 - 10));
3746 b6 -= b11;
3748 tmp = b13 ^ b2;
3749 b13 = (tmp >> 19) | (tmp << (64 - 19));
3750 b2 -= b13;
3752 tmp = b9 ^ b0;
3753 b9 = (tmp >> 38) | (tmp << (64 - 38));
3754 b0 -= b9;
3756 tmp = b15 ^ b14;
3757 b15 = (tmp >> 37) | (tmp << (64 - 37));
3758 b14 -= b15 + k5 + t0;
3759 b15 -= k6 + 8;
3761 tmp = b13 ^ b12;
3762 b13 = (tmp >> 22) | (tmp << (64 - 22));
3763 b12 -= b13 + k3;
3764 b13 -= k4 + t2;
3766 tmp = b11 ^ b10;
3767 b11 = (tmp >> 17) | (tmp << (64 - 17));
3768 b10 -= b11 + k1;
3769 b11 -= k2;
3771 tmp = b9 ^ b8;
3772 b9 = (tmp >> 8) | (tmp << (64 - 8));
3773 b8 -= b9 + k16;
3774 b9 -= k0;
3776 tmp = b7 ^ b6;
3777 b7 = (tmp >> 47) | (tmp << (64 - 47));
3778 b6 -= b7 + k14;
3779 b7 -= k15;
3781 tmp = b5 ^ b4;
3782 b5 = (tmp >> 8) | (tmp << (64 - 8));
3783 b4 -= b5 + k12;
3784 b5 -= k13;
3786 tmp = b3 ^ b2;
3787 b3 = (tmp >> 13) | (tmp << (64 - 13));
3788 b2 -= b3 + k10;
3789 b3 -= k11;
3791 tmp = b1 ^ b0;
3792 b1 = (tmp >> 24) | (tmp << (64 - 24));
3793 b0 -= b1 + k8;
3794 b1 -= k9;
3796 tmp = b7 ^ b12;
3797 b7 = (tmp >> 20) | (tmp << (64 - 20));
3798 b12 -= b7;
3800 tmp = b3 ^ b10;
3801 b3 = (tmp >> 37) | (tmp << (64 - 37));
3802 b10 -= b3;
3804 tmp = b5 ^ b8;
3805 b5 = (tmp >> 31) | (tmp << (64 - 31));
3806 b8 -= b5;
3808 tmp = b1 ^ b14;
3809 b1 = (tmp >> 23) | (tmp << (64 - 23));
3810 b14 -= b1;
3812 tmp = b9 ^ b4;
3813 b9 = (tmp >> 52) | (tmp << (64 - 52));
3814 b4 -= b9;
3816 tmp = b13 ^ b6;
3817 b13 = (tmp >> 35) | (tmp << (64 - 35));
3818 b6 -= b13;
3820 tmp = b11 ^ b2;
3821 b11 = (tmp >> 48) | (tmp << (64 - 48));
3822 b2 -= b11;
3824 tmp = b15 ^ b0;
3825 b15 = (tmp >> 9) | (tmp << (64 - 9));
3826 b0 -= b15;
3828 tmp = b9 ^ b10;
3829 b9 = (tmp >> 25) | (tmp << (64 - 25));
3830 b10 -= b9;
3832 tmp = b11 ^ b8;
3833 b11 = (tmp >> 44) | (tmp << (64 - 44));
3834 b8 -= b11;
3836 tmp = b13 ^ b14;
3837 b13 = (tmp >> 42) | (tmp << (64 - 42));
3838 b14 -= b13;
3840 tmp = b15 ^ b12;
3841 b15 = (tmp >> 19) | (tmp << (64 - 19));
3842 b12 -= b15;
3844 tmp = b1 ^ b6;
3845 b1 = (tmp >> 46) | (tmp << (64 - 46));
3846 b6 -= b1;
3848 tmp = b3 ^ b4;
3849 b3 = (tmp >> 47) | (tmp << (64 - 47));
3850 b4 -= b3;
3852 tmp = b5 ^ b2;
3853 b5 = (tmp >> 44) | (tmp << (64 - 44));
3854 b2 -= b5;
3856 tmp = b7 ^ b0;
3857 b7 = (tmp >> 31) | (tmp << (64 - 31));
3858 b0 -= b7;
3860 tmp = b1 ^ b8;
3861 b1 = (tmp >> 41) | (tmp << (64 - 41));
3862 b8 -= b1;
3864 tmp = b5 ^ b14;
3865 b5 = (tmp >> 42) | (tmp << (64 - 42));
3866 b14 -= b5;
3868 tmp = b3 ^ b12;
3869 b3 = (tmp >> 53) | (tmp << (64 - 53));
3870 b12 -= b3;
3872 tmp = b7 ^ b10;
3873 b7 = (tmp >> 4) | (tmp << (64 - 4));
3874 b10 -= b7;
3876 tmp = b15 ^ b4;
3877 b15 = (tmp >> 51) | (tmp << (64 - 51));
3878 b4 -= b15;
3880 tmp = b11 ^ b6;
3881 b11 = (tmp >> 56) | (tmp << (64 - 56));
3882 b6 -= b11;
3884 tmp = b13 ^ b2;
3885 b13 = (tmp >> 34) | (tmp << (64 - 34));
3886 b2 -= b13;
3888 tmp = b9 ^ b0;
3889 b9 = (tmp >> 16) | (tmp << (64 - 16));
3890 b0 -= b9;
3892 tmp = b15 ^ b14;
3893 b15 = (tmp >> 30) | (tmp << (64 - 30));
3894 b14 -= b15 + k4 + t2;
3895 b15 -= k5 + 7;
3897 tmp = b13 ^ b12;
3898 b13 = (tmp >> 44) | (tmp << (64 - 44));
3899 b12 -= b13 + k2;
3900 b13 -= k3 + t1;
3902 tmp = b11 ^ b10;
3903 b11 = (tmp >> 47) | (tmp << (64 - 47));
3904 b10 -= b11 + k0;
3905 b11 -= k1;
3907 tmp = b9 ^ b8;
3908 b9 = (tmp >> 12) | (tmp << (64 - 12));
3909 b8 -= b9 + k15;
3910 b9 -= k16;
3912 tmp = b7 ^ b6;
3913 b7 = (tmp >> 31) | (tmp << (64 - 31));
3914 b6 -= b7 + k13;
3915 b7 -= k14;
3917 tmp = b5 ^ b4;
3918 b5 = (tmp >> 37) | (tmp << (64 - 37));
3919 b4 -= b5 + k11;
3920 b5 -= k12;
3922 tmp = b3 ^ b2;
3923 b3 = (tmp >> 9) | (tmp << (64 - 9));
3924 b2 -= b3 + k9;
3925 b3 -= k10;
3927 tmp = b1 ^ b0;
3928 b1 = (tmp >> 41) | (tmp << (64 - 41));
3929 b0 -= b1 + k7;
3930 b1 -= k8;
3932 tmp = b7 ^ b12;
3933 b7 = (tmp >> 25) | (tmp << (64 - 25));
3934 b12 -= b7;
3936 tmp = b3 ^ b10;
3937 b3 = (tmp >> 16) | (tmp << (64 - 16));
3938 b10 -= b3;
3940 tmp = b5 ^ b8;
3941 b5 = (tmp >> 28) | (tmp << (64 - 28));
3942 b8 -= b5;
3944 tmp = b1 ^ b14;
3945 b1 = (tmp >> 47) | (tmp << (64 - 47));
3946 b14 -= b1;
3948 tmp = b9 ^ b4;
3949 b9 = (tmp >> 41) | (tmp << (64 - 41));
3950 b4 -= b9;
3952 tmp = b13 ^ b6;
3953 b13 = (tmp >> 48) | (tmp << (64 - 48));
3954 b6 -= b13;
3956 tmp = b11 ^ b2;
3957 b11 = (tmp >> 20) | (tmp << (64 - 20));
3958 b2 -= b11;
3960 tmp = b15 ^ b0;
3961 b15 = (tmp >> 5) | (tmp << (64 - 5));
3962 b0 -= b15;
3964 tmp = b9 ^ b10;
3965 b9 = (tmp >> 17) | (tmp << (64 - 17));
3966 b10 -= b9;
3968 tmp = b11 ^ b8;
3969 b11 = (tmp >> 59) | (tmp << (64 - 59));
3970 b8 -= b11;
3972 tmp = b13 ^ b14;
3973 b13 = (tmp >> 41) | (tmp << (64 - 41));
3974 b14 -= b13;
3976 tmp = b15 ^ b12;
3977 b15 = (tmp >> 34) | (tmp << (64 - 34));
3978 b12 -= b15;
3980 tmp = b1 ^ b6;
3981 b1 = (tmp >> 13) | (tmp << (64 - 13));
3982 b6 -= b1;
3984 tmp = b3 ^ b4;
3985 b3 = (tmp >> 51) | (tmp << (64 - 51));
3986 b4 -= b3;
3988 tmp = b5 ^ b2;
3989 b5 = (tmp >> 4) | (tmp << (64 - 4));
3990 b2 -= b5;
3992 tmp = b7 ^ b0;
3993 b7 = (tmp >> 33) | (tmp << (64 - 33));
3994 b0 -= b7;
3996 tmp = b1 ^ b8;
3997 b1 = (tmp >> 52) | (tmp << (64 - 52));
3998 b8 -= b1;
4000 tmp = b5 ^ b14;
4001 b5 = (tmp >> 23) | (tmp << (64 - 23));
4002 b14 -= b5;
4004 tmp = b3 ^ b12;
4005 b3 = (tmp >> 18) | (tmp << (64 - 18));
4006 b12 -= b3;
4008 tmp = b7 ^ b10;
4009 b7 = (tmp >> 49) | (tmp << (64 - 49));
4010 b10 -= b7;
4012 tmp = b15 ^ b4;
4013 b15 = (tmp >> 55) | (tmp << (64 - 55));
4014 b4 -= b15;
4016 tmp = b11 ^ b6;
4017 b11 = (tmp >> 10) | (tmp << (64 - 10));
4018 b6 -= b11;
4020 tmp = b13 ^ b2;
4021 b13 = (tmp >> 19) | (tmp << (64 - 19));
4022 b2 -= b13;
4024 tmp = b9 ^ b0;
4025 b9 = (tmp >> 38) | (tmp << (64 - 38));
4026 b0 -= b9;
4028 tmp = b15 ^ b14;
4029 b15 = (tmp >> 37) | (tmp << (64 - 37));
4030 b14 -= b15 + k3 + t1;
4031 b15 -= k4 + 6;
4033 tmp = b13 ^ b12;
4034 b13 = (tmp >> 22) | (tmp << (64 - 22));
4035 b12 -= b13 + k1;
4036 b13 -= k2 + t0;
4038 tmp = b11 ^ b10;
4039 b11 = (tmp >> 17) | (tmp << (64 - 17));
4040 b10 -= b11 + k16;
4041 b11 -= k0;
4043 tmp = b9 ^ b8;
4044 b9 = (tmp >> 8) | (tmp << (64 - 8));
4045 b8 -= b9 + k14;
4046 b9 -= k15;
4048 tmp = b7 ^ b6;
4049 b7 = (tmp >> 47) | (tmp << (64 - 47));
4050 b6 -= b7 + k12;
4051 b7 -= k13;
4053 tmp = b5 ^ b4;
4054 b5 = (tmp >> 8) | (tmp << (64 - 8));
4055 b4 -= b5 + k10;
4056 b5 -= k11;
4058 tmp = b3 ^ b2;
4059 b3 = (tmp >> 13) | (tmp << (64 - 13));
4060 b2 -= b3 + k8;
4061 b3 -= k9;
4063 tmp = b1 ^ b0;
4064 b1 = (tmp >> 24) | (tmp << (64 - 24));
4065 b0 -= b1 + k6;
4066 b1 -= k7;
4068 tmp = b7 ^ b12;
4069 b7 = (tmp >> 20) | (tmp << (64 - 20));
4070 b12 -= b7;
4072 tmp = b3 ^ b10;
4073 b3 = (tmp >> 37) | (tmp << (64 - 37));
4074 b10 -= b3;
4076 tmp = b5 ^ b8;
4077 b5 = (tmp >> 31) | (tmp << (64 - 31));
4078 b8 -= b5;
4080 tmp = b1 ^ b14;
4081 b1 = (tmp >> 23) | (tmp << (64 - 23));
4082 b14 -= b1;
4084 tmp = b9 ^ b4;
4085 b9 = (tmp >> 52) | (tmp << (64 - 52));
4086 b4 -= b9;
4088 tmp = b13 ^ b6;
4089 b13 = (tmp >> 35) | (tmp << (64 - 35));
4090 b6 -= b13;
4092 tmp = b11 ^ b2;
4093 b11 = (tmp >> 48) | (tmp << (64 - 48));
4094 b2 -= b11;
4096 tmp = b15 ^ b0;
4097 b15 = (tmp >> 9) | (tmp << (64 - 9));
4098 b0 -= b15;
4100 tmp = b9 ^ b10;
4101 b9 = (tmp >> 25) | (tmp << (64 - 25));
4102 b10 -= b9;
4104 tmp = b11 ^ b8;
4105 b11 = (tmp >> 44) | (tmp << (64 - 44));
4106 b8 -= b11;
4108 tmp = b13 ^ b14;
4109 b13 = (tmp >> 42) | (tmp << (64 - 42));
4110 b14 -= b13;
4112 tmp = b15 ^ b12;
4113 b15 = (tmp >> 19) | (tmp << (64 - 19));
4114 b12 -= b15;
4116 tmp = b1 ^ b6;
4117 b1 = (tmp >> 46) | (tmp << (64 - 46));
4118 b6 -= b1;
4120 tmp = b3 ^ b4;
4121 b3 = (tmp >> 47) | (tmp << (64 - 47));
4122 b4 -= b3;
4124 tmp = b5 ^ b2;
4125 b5 = (tmp >> 44) | (tmp << (64 - 44));
4126 b2 -= b5;
4128 tmp = b7 ^ b0;
4129 b7 = (tmp >> 31) | (tmp << (64 - 31));
4130 b0 -= b7;
4132 tmp = b1 ^ b8;
4133 b1 = (tmp >> 41) | (tmp << (64 - 41));
4134 b8 -= b1;
4136 tmp = b5 ^ b14;
4137 b5 = (tmp >> 42) | (tmp << (64 - 42));
4138 b14 -= b5;
4140 tmp = b3 ^ b12;
4141 b3 = (tmp >> 53) | (tmp << (64 - 53));
4142 b12 -= b3;
4144 tmp = b7 ^ b10;
4145 b7 = (tmp >> 4) | (tmp << (64 - 4));
4146 b10 -= b7;
4148 tmp = b15 ^ b4;
4149 b15 = (tmp >> 51) | (tmp << (64 - 51));
4150 b4 -= b15;
4152 tmp = b11 ^ b6;
4153 b11 = (tmp >> 56) | (tmp << (64 - 56));
4154 b6 -= b11;
4156 tmp = b13 ^ b2;
4157 b13 = (tmp >> 34) | (tmp << (64 - 34));
4158 b2 -= b13;
4160 tmp = b9 ^ b0;
4161 b9 = (tmp >> 16) | (tmp << (64 - 16));
4162 b0 -= b9;
4164 tmp = b15 ^ b14;
4165 b15 = (tmp >> 30) | (tmp << (64 - 30));
4166 b14 -= b15 + k2 + t0;
4167 b15 -= k3 + 5;
4169 tmp = b13 ^ b12;
4170 b13 = (tmp >> 44) | (tmp << (64 - 44));
4171 b12 -= b13 + k0;
4172 b13 -= k1 + t2;
4174 tmp = b11 ^ b10;
4175 b11 = (tmp >> 47) | (tmp << (64 - 47));
4176 b10 -= b11 + k15;
4177 b11 -= k16;
4179 tmp = b9 ^ b8;
4180 b9 = (tmp >> 12) | (tmp << (64 - 12));
4181 b8 -= b9 + k13;
4182 b9 -= k14;
4184 tmp = b7 ^ b6;
4185 b7 = (tmp >> 31) | (tmp << (64 - 31));
4186 b6 -= b7 + k11;
4187 b7 -= k12;
4189 tmp = b5 ^ b4;
4190 b5 = (tmp >> 37) | (tmp << (64 - 37));
4191 b4 -= b5 + k9;
4192 b5 -= k10;
4194 tmp = b3 ^ b2;
4195 b3 = (tmp >> 9) | (tmp << (64 - 9));
4196 b2 -= b3 + k7;
4197 b3 -= k8;
4199 tmp = b1 ^ b0;
4200 b1 = (tmp >> 41) | (tmp << (64 - 41));
4201 b0 -= b1 + k5;
4202 b1 -= k6;
4204 tmp = b7 ^ b12;
4205 b7 = (tmp >> 25) | (tmp << (64 - 25));
4206 b12 -= b7;
4208 tmp = b3 ^ b10;
4209 b3 = (tmp >> 16) | (tmp << (64 - 16));
4210 b10 -= b3;
4212 tmp = b5 ^ b8;
4213 b5 = (tmp >> 28) | (tmp << (64 - 28));
4214 b8 -= b5;
4216 tmp = b1 ^ b14;
4217 b1 = (tmp >> 47) | (tmp << (64 - 47));
4218 b14 -= b1;
4220 tmp = b9 ^ b4;
4221 b9 = (tmp >> 41) | (tmp << (64 - 41));
4222 b4 -= b9;
4224 tmp = b13 ^ b6;
4225 b13 = (tmp >> 48) | (tmp << (64 - 48));
4226 b6 -= b13;
4228 tmp = b11 ^ b2;
4229 b11 = (tmp >> 20) | (tmp << (64 - 20));
4230 b2 -= b11;
4232 tmp = b15 ^ b0;
4233 b15 = (tmp >> 5) | (tmp << (64 - 5));
4234 b0 -= b15;
4236 tmp = b9 ^ b10;
4237 b9 = (tmp >> 17) | (tmp << (64 - 17));
4238 b10 -= b9;
4240 tmp = b11 ^ b8;
4241 b11 = (tmp >> 59) | (tmp << (64 - 59));
4242 b8 -= b11;
4244 tmp = b13 ^ b14;
4245 b13 = (tmp >> 41) | (tmp << (64 - 41));
4246 b14 -= b13;
4248 tmp = b15 ^ b12;
4249 b15 = (tmp >> 34) | (tmp << (64 - 34));
4250 b12 -= b15;
4252 tmp = b1 ^ b6;
4253 b1 = (tmp >> 13) | (tmp << (64 - 13));
4254 b6 -= b1;
4256 tmp = b3 ^ b4;
4257 b3 = (tmp >> 51) | (tmp << (64 - 51));
4258 b4 -= b3;
4260 tmp = b5 ^ b2;
4261 b5 = (tmp >> 4) | (tmp << (64 - 4));
4262 b2 -= b5;
4264 tmp = b7 ^ b0;
4265 b7 = (tmp >> 33) | (tmp << (64 - 33));
4266 b0 -= b7;
4268 tmp = b1 ^ b8;
4269 b1 = (tmp >> 52) | (tmp << (64 - 52));
4270 b8 -= b1;
4272 tmp = b5 ^ b14;
4273 b5 = (tmp >> 23) | (tmp << (64 - 23));
4274 b14 -= b5;
4276 tmp = b3 ^ b12;
4277 b3 = (tmp >> 18) | (tmp << (64 - 18));
4278 b12 -= b3;
4280 tmp = b7 ^ b10;
4281 b7 = (tmp >> 49) | (tmp << (64 - 49));
4282 b10 -= b7;
4284 tmp = b15 ^ b4;
4285 b15 = (tmp >> 55) | (tmp << (64 - 55));
4286 b4 -= b15;
4288 tmp = b11 ^ b6;
4289 b11 = (tmp >> 10) | (tmp << (64 - 10));
4290 b6 -= b11;
4292 tmp = b13 ^ b2;
4293 b13 = (tmp >> 19) | (tmp << (64 - 19));
4294 b2 -= b13;
4296 tmp = b9 ^ b0;
4297 b9 = (tmp >> 38) | (tmp << (64 - 38));
4298 b0 -= b9;
4300 tmp = b15 ^ b14;
4301 b15 = (tmp >> 37) | (tmp << (64 - 37));
4302 b14 -= b15 + k1 + t2;
4303 b15 -= k2 + 4;
4305 tmp = b13 ^ b12;
4306 b13 = (tmp >> 22) | (tmp << (64 - 22));
4307 b12 -= b13 + k16;
4308 b13 -= k0 + t1;
4310 tmp = b11 ^ b10;
4311 b11 = (tmp >> 17) | (tmp << (64 - 17));
4312 b10 -= b11 + k14;
4313 b11 -= k15;
4315 tmp = b9 ^ b8;
4316 b9 = (tmp >> 8) | (tmp << (64 - 8));
4317 b8 -= b9 + k12;
4318 b9 -= k13;
4320 tmp = b7 ^ b6;
4321 b7 = (tmp >> 47) | (tmp << (64 - 47));
4322 b6 -= b7 + k10;
4323 b7 -= k11;
4325 tmp = b5 ^ b4;
4326 b5 = (tmp >> 8) | (tmp << (64 - 8));
4327 b4 -= b5 + k8;
4328 b5 -= k9;
4330 tmp = b3 ^ b2;
4331 b3 = (tmp >> 13) | (tmp << (64 - 13));
4332 b2 -= b3 + k6;
4333 b3 -= k7;
4335 tmp = b1 ^ b0;
4336 b1 = (tmp >> 24) | (tmp << (64 - 24));
4337 b0 -= b1 + k4;
4338 b1 -= k5;
4340 tmp = b7 ^ b12;
4341 b7 = (tmp >> 20) | (tmp << (64 - 20));
4342 b12 -= b7;
4344 tmp = b3 ^ b10;
4345 b3 = (tmp >> 37) | (tmp << (64 - 37));
4346 b10 -= b3;
4348 tmp = b5 ^ b8;
4349 b5 = (tmp >> 31) | (tmp << (64 - 31));
4350 b8 -= b5;
4352 tmp = b1 ^ b14;
4353 b1 = (tmp >> 23) | (tmp << (64 - 23));
4354 b14 -= b1;
4356 tmp = b9 ^ b4;
4357 b9 = (tmp >> 52) | (tmp << (64 - 52));
4358 b4 -= b9;
4360 tmp = b13 ^ b6;
4361 b13 = (tmp >> 35) | (tmp << (64 - 35));
4362 b6 -= b13;
4364 tmp = b11 ^ b2;
4365 b11 = (tmp >> 48) | (tmp << (64 - 48));
4366 b2 -= b11;
4368 tmp = b15 ^ b0;
4369 b15 = (tmp >> 9) | (tmp << (64 - 9));
4370 b0 -= b15;
4372 tmp = b9 ^ b10;
4373 b9 = (tmp >> 25) | (tmp << (64 - 25));
4374 b10 -= b9;
4376 tmp = b11 ^ b8;
4377 b11 = (tmp >> 44) | (tmp << (64 - 44));
4378 b8 -= b11;
4380 tmp = b13 ^ b14;
4381 b13 = (tmp >> 42) | (tmp << (64 - 42));
4382 b14 -= b13;
4384 tmp = b15 ^ b12;
4385 b15 = (tmp >> 19) | (tmp << (64 - 19));
4386 b12 -= b15;
4388 tmp = b1 ^ b6;
4389 b1 = (tmp >> 46) | (tmp << (64 - 46));
4390 b6 -= b1;
4392 tmp = b3 ^ b4;
4393 b3 = (tmp >> 47) | (tmp << (64 - 47));
4394 b4 -= b3;
4396 tmp = b5 ^ b2;
4397 b5 = (tmp >> 44) | (tmp << (64 - 44));
4398 b2 -= b5;
4400 tmp = b7 ^ b0;
4401 b7 = (tmp >> 31) | (tmp << (64 - 31));
4402 b0 -= b7;
4404 tmp = b1 ^ b8;
4405 b1 = (tmp >> 41) | (tmp << (64 - 41));
4406 b8 -= b1;
4408 tmp = b5 ^ b14;
4409 b5 = (tmp >> 42) | (tmp << (64 - 42));
4410 b14 -= b5;
4412 tmp = b3 ^ b12;
4413 b3 = (tmp >> 53) | (tmp << (64 - 53));
4414 b12 -= b3;
4416 tmp = b7 ^ b10;
4417 b7 = (tmp >> 4) | (tmp << (64 - 4));
4418 b10 -= b7;
4420 tmp = b15 ^ b4;
4421 b15 = (tmp >> 51) | (tmp << (64 - 51));
4422 b4 -= b15;
4424 tmp = b11 ^ b6;
4425 b11 = (tmp >> 56) | (tmp << (64 - 56));
4426 b6 -= b11;
4428 tmp = b13 ^ b2;
4429 b13 = (tmp >> 34) | (tmp << (64 - 34));
4430 b2 -= b13;
4432 tmp = b9 ^ b0;
4433 b9 = (tmp >> 16) | (tmp << (64 - 16));
4434 b0 -= b9;
4436 tmp = b15 ^ b14;
4437 b15 = (tmp >> 30) | (tmp << (64 - 30));
4438 b14 -= b15 + k0 + t1;
4439 b15 -= k1 + 3;
4441 tmp = b13 ^ b12;
4442 b13 = (tmp >> 44) | (tmp << (64 - 44));
4443 b12 -= b13 + k15;
4444 b13 -= k16 + t0;
4446 tmp = b11 ^ b10;
4447 b11 = (tmp >> 47) | (tmp << (64 - 47));
4448 b10 -= b11 + k13;
4449 b11 -= k14;
4451 tmp = b9 ^ b8;
4452 b9 = (tmp >> 12) | (tmp << (64 - 12));
4453 b8 -= b9 + k11;
4454 b9 -= k12;
4456 tmp = b7 ^ b6;
4457 b7 = (tmp >> 31) | (tmp << (64 - 31));
4458 b6 -= b7 + k9;
4459 b7 -= k10;
4461 tmp = b5 ^ b4;
4462 b5 = (tmp >> 37) | (tmp << (64 - 37));
4463 b4 -= b5 + k7;
4464 b5 -= k8;
4466 tmp = b3 ^ b2;
4467 b3 = (tmp >> 9) | (tmp << (64 - 9));
4468 b2 -= b3 + k5;
4469 b3 -= k6;
4471 tmp = b1 ^ b0;
4472 b1 = (tmp >> 41) | (tmp << (64 - 41));
4473 b0 -= b1 + k3;
4474 b1 -= k4;
4476 tmp = b7 ^ b12;
4477 b7 = (tmp >> 25) | (tmp << (64 - 25));
4478 b12 -= b7;
4480 tmp = b3 ^ b10;
4481 b3 = (tmp >> 16) | (tmp << (64 - 16));
4482 b10 -= b3;
4484 tmp = b5 ^ b8;
4485 b5 = (tmp >> 28) | (tmp << (64 - 28));
4486 b8 -= b5;
4488 tmp = b1 ^ b14;
4489 b1 = (tmp >> 47) | (tmp << (64 - 47));
4490 b14 -= b1;
4492 tmp = b9 ^ b4;
4493 b9 = (tmp >> 41) | (tmp << (64 - 41));
4494 b4 -= b9;
4496 tmp = b13 ^ b6;
4497 b13 = (tmp >> 48) | (tmp << (64 - 48));
4498 b6 -= b13;
4500 tmp = b11 ^ b2;
4501 b11 = (tmp >> 20) | (tmp << (64 - 20));
4502 b2 -= b11;
4504 tmp = b15 ^ b0;
4505 b15 = (tmp >> 5) | (tmp << (64 - 5));
4506 b0 -= b15;
4508 tmp = b9 ^ b10;
4509 b9 = (tmp >> 17) | (tmp << (64 - 17));
4510 b10 -= b9;
4512 tmp = b11 ^ b8;
4513 b11 = (tmp >> 59) | (tmp << (64 - 59));
4514 b8 -= b11;
4516 tmp = b13 ^ b14;
4517 b13 = (tmp >> 41) | (tmp << (64 - 41));
4518 b14 -= b13;
4520 tmp = b15 ^ b12;
4521 b15 = (tmp >> 34) | (tmp << (64 - 34));
4522 b12 -= b15;
4524 tmp = b1 ^ b6;
4525 b1 = (tmp >> 13) | (tmp << (64 - 13));
4526 b6 -= b1;
4528 tmp = b3 ^ b4;
4529 b3 = (tmp >> 51) | (tmp << (64 - 51));
4530 b4 -= b3;
4532 tmp = b5 ^ b2;
4533 b5 = (tmp >> 4) | (tmp << (64 - 4));
4534 b2 -= b5;
4536 tmp = b7 ^ b0;
4537 b7 = (tmp >> 33) | (tmp << (64 - 33));
4538 b0 -= b7;
4540 tmp = b1 ^ b8;
4541 b1 = (tmp >> 52) | (tmp << (64 - 52));
4542 b8 -= b1;
4544 tmp = b5 ^ b14;
4545 b5 = (tmp >> 23) | (tmp << (64 - 23));
4546 b14 -= b5;
4548 tmp = b3 ^ b12;
4549 b3 = (tmp >> 18) | (tmp << (64 - 18));
4550 b12 -= b3;
4552 tmp = b7 ^ b10;
4553 b7 = (tmp >> 49) | (tmp << (64 - 49));
4554 b10 -= b7;
4556 tmp = b15 ^ b4;
4557 b15 = (tmp >> 55) | (tmp << (64 - 55));
4558 b4 -= b15;
4560 tmp = b11 ^ b6;
4561 b11 = (tmp >> 10) | (tmp << (64 - 10));
4562 b6 -= b11;
4564 tmp = b13 ^ b2;
4565 b13 = (tmp >> 19) | (tmp << (64 - 19));
4566 b2 -= b13;
4568 tmp = b9 ^ b0;
4569 b9 = (tmp >> 38) | (tmp << (64 - 38));
4570 b0 -= b9;
4572 tmp = b15 ^ b14;
4573 b15 = (tmp >> 37) | (tmp << (64 - 37));
4574 b14 -= b15 + k16 + t0;
4575 b15 -= k0 + 2;
4577 tmp = b13 ^ b12;
4578 b13 = (tmp >> 22) | (tmp << (64 - 22));
4579 b12 -= b13 + k14;
4580 b13 -= k15 + t2;
4582 tmp = b11 ^ b10;
4583 b11 = (tmp >> 17) | (tmp << (64 - 17));
4584 b10 -= b11 + k12;
4585 b11 -= k13;
4587 tmp = b9 ^ b8;
4588 b9 = (tmp >> 8) | (tmp << (64 - 8));
4589 b8 -= b9 + k10;
4590 b9 -= k11;
4592 tmp = b7 ^ b6;
4593 b7 = (tmp >> 47) | (tmp << (64 - 47));
4594 b6 -= b7 + k8;
4595 b7 -= k9;
4597 tmp = b5 ^ b4;
4598 b5 = (tmp >> 8) | (tmp << (64 - 8));
4599 b4 -= b5 + k6;
4600 b5 -= k7;
4602 tmp = b3 ^ b2;
4603 b3 = (tmp >> 13) | (tmp << (64 - 13));
4604 b2 -= b3 + k4;
4605 b3 -= k5;
4607 tmp = b1 ^ b0;
4608 b1 = (tmp >> 24) | (tmp << (64 - 24));
4609 b0 -= b1 + k2;
4610 b1 -= k3;
4612 tmp = b7 ^ b12;
4613 b7 = (tmp >> 20) | (tmp << (64 - 20));
4614 b12 -= b7;
4616 tmp = b3 ^ b10;
4617 b3 = (tmp >> 37) | (tmp << (64 - 37));
4618 b10 -= b3;
4620 tmp = b5 ^ b8;
4621 b5 = (tmp >> 31) | (tmp << (64 - 31));
4622 b8 -= b5;
4624 tmp = b1 ^ b14;
4625 b1 = (tmp >> 23) | (tmp << (64 - 23));
4626 b14 -= b1;
4628 tmp = b9 ^ b4;
4629 b9 = (tmp >> 52) | (tmp << (64 - 52));
4630 b4 -= b9;
4632 tmp = b13 ^ b6;
4633 b13 = (tmp >> 35) | (tmp << (64 - 35));
4634 b6 -= b13;
4636 tmp = b11 ^ b2;
4637 b11 = (tmp >> 48) | (tmp << (64 - 48));
4638 b2 -= b11;
4640 tmp = b15 ^ b0;
4641 b15 = (tmp >> 9) | (tmp << (64 - 9));
4642 b0 -= b15;
4644 tmp = b9 ^ b10;
4645 b9 = (tmp >> 25) | (tmp << (64 - 25));
4646 b10 -= b9;
4648 tmp = b11 ^ b8;
4649 b11 = (tmp >> 44) | (tmp << (64 - 44));
4650 b8 -= b11;
4652 tmp = b13 ^ b14;
4653 b13 = (tmp >> 42) | (tmp << (64 - 42));
4654 b14 -= b13;
4656 tmp = b15 ^ b12;
4657 b15 = (tmp >> 19) | (tmp << (64 - 19));
4658 b12 -= b15;
4660 tmp = b1 ^ b6;
4661 b1 = (tmp >> 46) | (tmp << (64 - 46));
4662 b6 -= b1;
4664 tmp = b3 ^ b4;
4665 b3 = (tmp >> 47) | (tmp << (64 - 47));
4666 b4 -= b3;
4668 tmp = b5 ^ b2;
4669 b5 = (tmp >> 44) | (tmp << (64 - 44));
4670 b2 -= b5;
4672 tmp = b7 ^ b0;
4673 b7 = (tmp >> 31) | (tmp << (64 - 31));
4674 b0 -= b7;
4676 tmp = b1 ^ b8;
4677 b1 = (tmp >> 41) | (tmp << (64 - 41));
4678 b8 -= b1;
4680 tmp = b5 ^ b14;
4681 b5 = (tmp >> 42) | (tmp << (64 - 42));
4682 b14 -= b5;
4684 tmp = b3 ^ b12;
4685 b3 = (tmp >> 53) | (tmp << (64 - 53));
4686 b12 -= b3;
4688 tmp = b7 ^ b10;
4689 b7 = (tmp >> 4) | (tmp << (64 - 4));
4690 b10 -= b7;
4692 tmp = b15 ^ b4;
4693 b15 = (tmp >> 51) | (tmp << (64 - 51));
4694 b4 -= b15;
4696 tmp = b11 ^ b6;
4697 b11 = (tmp >> 56) | (tmp << (64 - 56));
4698 b6 -= b11;
4700 tmp = b13 ^ b2;
4701 b13 = (tmp >> 34) | (tmp << (64 - 34));
4702 b2 -= b13;
4704 tmp = b9 ^ b0;
4705 b9 = (tmp >> 16) | (tmp << (64 - 16));
4706 b0 -= b9;
4708 tmp = b15 ^ b14;
4709 b15 = (tmp >> 30) | (tmp << (64 - 30));
4710 b14 -= b15 + k15 + t2;
4711 b15 -= k16 + 1;
4713 tmp = b13 ^ b12;
4714 b13 = (tmp >> 44) | (tmp << (64 - 44));
4715 b12 -= b13 + k13;
4716 b13 -= k14 + t1;
4718 tmp = b11 ^ b10;
4719 b11 = (tmp >> 47) | (tmp << (64 - 47));
4720 b10 -= b11 + k11;
4721 b11 -= k12;
4723 tmp = b9 ^ b8;
4724 b9 = (tmp >> 12) | (tmp << (64 - 12));
4725 b8 -= b9 + k9;
4726 b9 -= k10;
4728 tmp = b7 ^ b6;
4729 b7 = (tmp >> 31) | (tmp << (64 - 31));
4730 b6 -= b7 + k7;
4731 b7 -= k8;
4733 tmp = b5 ^ b4;
4734 b5 = (tmp >> 37) | (tmp << (64 - 37));
4735 b4 -= b5 + k5;
4736 b5 -= k6;
4738 tmp = b3 ^ b2;
4739 b3 = (tmp >> 9) | (tmp << (64 - 9));
4740 b2 -= b3 + k3;
4741 b3 -= k4;
4743 tmp = b1 ^ b0;
4744 b1 = (tmp >> 41) | (tmp << (64 - 41));
4745 b0 -= b1 + k1;
4746 b1 -= k2;
4748 tmp = b7 ^ b12;
4749 b7 = (tmp >> 25) | (tmp << (64 - 25));
4750 b12 -= b7;
4752 tmp = b3 ^ b10;
4753 b3 = (tmp >> 16) | (tmp << (64 - 16));
4754 b10 -= b3;
4756 tmp = b5 ^ b8;
4757 b5 = (tmp >> 28) | (tmp << (64 - 28));
4758 b8 -= b5;
4760 tmp = b1 ^ b14;
4761 b1 = (tmp >> 47) | (tmp << (64 - 47));
4762 b14 -= b1;
4764 tmp = b9 ^ b4;
4765 b9 = (tmp >> 41) | (tmp << (64 - 41));
4766 b4 -= b9;
4768 tmp = b13 ^ b6;
4769 b13 = (tmp >> 48) | (tmp << (64 - 48));
4770 b6 -= b13;
4772 tmp = b11 ^ b2;
4773 b11 = (tmp >> 20) | (tmp << (64 - 20));
4774 b2 -= b11;
4776 tmp = b15 ^ b0;
4777 b15 = (tmp >> 5) | (tmp << (64 - 5));
4778 b0 -= b15;
4780 tmp = b9 ^ b10;
4781 b9 = (tmp >> 17) | (tmp << (64 - 17));
4782 b10 -= b9;
4784 tmp = b11 ^ b8;
4785 b11 = (tmp >> 59) | (tmp << (64 - 59));
4786 b8 -= b11;
4788 tmp = b13 ^ b14;
4789 b13 = (tmp >> 41) | (tmp << (64 - 41));
4790 b14 -= b13;
4792 tmp = b15 ^ b12;
4793 b15 = (tmp >> 34) | (tmp << (64 - 34));
4794 b12 -= b15;
4796 tmp = b1 ^ b6;
4797 b1 = (tmp >> 13) | (tmp << (64 - 13));
4798 b6 -= b1;
4800 tmp = b3 ^ b4;
4801 b3 = (tmp >> 51) | (tmp << (64 - 51));
4802 b4 -= b3;
4804 tmp = b5 ^ b2;
4805 b5 = (tmp >> 4) | (tmp << (64 - 4));
4806 b2 -= b5;
4808 tmp = b7 ^ b0;
4809 b7 = (tmp >> 33) | (tmp << (64 - 33));
4810 b0 -= b7;
4812 tmp = b1 ^ b8;
4813 b1 = (tmp >> 52) | (tmp << (64 - 52));
4814 b8 -= b1;
4816 tmp = b5 ^ b14;
4817 b5 = (tmp >> 23) | (tmp << (64 - 23));
4818 b14 -= b5;
4820 tmp = b3 ^ b12;
4821 b3 = (tmp >> 18) | (tmp << (64 - 18));
4822 b12 -= b3;
4824 tmp = b7 ^ b10;
4825 b7 = (tmp >> 49) | (tmp << (64 - 49));
4826 b10 -= b7;
4828 tmp = b15 ^ b4;
4829 b15 = (tmp >> 55) | (tmp << (64 - 55));
4830 b4 -= b15;
4832 tmp = b11 ^ b6;
4833 b11 = (tmp >> 10) | (tmp << (64 - 10));
4834 b6 -= b11;
4836 tmp = b13 ^ b2;
4837 b13 = (tmp >> 19) | (tmp << (64 - 19));
4838 b2 -= b13;
4840 tmp = b9 ^ b0;
4841 b9 = (tmp >> 38) | (tmp << (64 - 38));
4842 b0 -= b9;
4844 tmp = b15 ^ b14;
4845 b15 = (tmp >> 37) | (tmp << (64 - 37));
4846 b14 -= b15 + k14 + t1;
4847 b15 -= k15;
4849 tmp = b13 ^ b12;
4850 b13 = (tmp >> 22) | (tmp << (64 - 22));
4851 b12 -= b13 + k12;
4852 b13 -= k13 + t0;
4854 tmp = b11 ^ b10;
4855 b11 = (tmp >> 17) | (tmp << (64 - 17));
4856 b10 -= b11 + k10;
4857 b11 -= k11;
4859 tmp = b9 ^ b8;
4860 b9 = (tmp >> 8) | (tmp << (64 - 8));
4861 b8 -= b9 + k8;
4862 b9 -= k9;
4864 tmp = b7 ^ b6;
4865 b7 = (tmp >> 47) | (tmp << (64 - 47));
4866 b6 -= b7 + k6;
4867 b7 -= k7;
4869 tmp = b5 ^ b4;
4870 b5 = (tmp >> 8) | (tmp << (64 - 8));
4871 b4 -= b5 + k4;
4872 b5 -= k5;
4874 tmp = b3 ^ b2;
4875 b3 = (tmp >> 13) | (tmp << (64 - 13));
4876 b2 -= b3 + k2;
4877 b3 -= k3;
4879 tmp = b1 ^ b0;
4880 b1 = (tmp >> 24) | (tmp << (64 - 24));
4881 b0 -= b1 + k0;
4882 b1 -= k1;
4884 output[15] = b15;
4885 output[14] = b14;
4886 output[13] = b13;
4887 output[12] = b12;
4888 output[11] = b11;
4889 output[10] = b10;
4890 output[9] = b9;
4891 output[8] = b8;
4892 output[7] = b7;
4893 output[6] = b6;
4894 output[5] = b5;
4895 output[4] = b4;
4896 output[3] = b3;
4897 output[2] = b2;
4898 output[1] = b1;
4899 output[0] = b0;