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];
29 b1
= ((b1
<< 24) | (b1
>> (64 - 24))) ^ b0
;
33 b3
= ((b3
<< 13) | (b3
>> (64 - 13))) ^ b2
;
37 b5
= ((b5
<< 8) | (b5
>> (64 - 8))) ^ b4
;
41 b7
= ((b7
<< 47) | (b7
>> (64 - 47))) ^ b6
;
45 b9
= ((b9
<< 8) | (b9
>> (64 - 8))) ^ b8
;
49 b11
= ((b11
<< 17) | (b11
>> (64 - 17))) ^ b10
;
53 b13
= ((b13
<< 22) | (b13
>> (64 - 22))) ^ b12
;
56 b14
+= b15
+ k14
+ t1
;
57 b15
= ((b15
<< 37) | (b15
>> (64 - 37))) ^ b14
;
60 b9
= ((b9
<< 38) | (b9
>> (64 - 38))) ^ b0
;
63 b13
= ((b13
<< 19) | (b13
>> (64 - 19))) ^ b2
;
66 b11
= ((b11
<< 10) | (b11
>> (64 - 10))) ^ b6
;
69 b15
= ((b15
<< 55) | (b15
>> (64 - 55))) ^ b4
;
72 b7
= ((b7
<< 49) | (b7
>> (64 - 49))) ^ b10
;
75 b3
= ((b3
<< 18) | (b3
>> (64 - 18))) ^ b12
;
78 b5
= ((b5
<< 23) | (b5
>> (64 - 23))) ^ b14
;
81 b1
= ((b1
<< 52) | (b1
>> (64 - 52))) ^ b8
;
84 b7
= ((b7
<< 33) | (b7
>> (64 - 33))) ^ b0
;
87 b5
= ((b5
<< 4) | (b5
>> (64 - 4))) ^ b2
;
90 b3
= ((b3
<< 51) | (b3
>> (64 - 51))) ^ b4
;
93 b1
= ((b1
<< 13) | (b1
>> (64 - 13))) ^ b6
;
96 b15
= ((b15
<< 34) | (b15
>> (64 - 34))) ^ b12
;
99 b13
= ((b13
<< 41) | (b13
>> (64 - 41))) ^ b14
;
102 b11
= ((b11
<< 59) | (b11
>> (64 - 59))) ^ b8
;
105 b9
= ((b9
<< 17) | (b9
>> (64 - 17))) ^ b10
;
108 b15
= ((b15
<< 5) | (b15
>> (64 - 5))) ^ b0
;
111 b11
= ((b11
<< 20) | (b11
>> (64 - 20))) ^ b2
;
114 b13
= ((b13
<< 48) | (b13
>> (64 - 48))) ^ b6
;
117 b9
= ((b9
<< 41) | (b9
>> (64 - 41))) ^ b4
;
120 b1
= ((b1
<< 47) | (b1
>> (64 - 47))) ^ b14
;
123 b5
= ((b5
<< 28) | (b5
>> (64 - 28))) ^ b8
;
126 b3
= ((b3
<< 16) | (b3
>> (64 - 16))) ^ b10
;
129 b7
= ((b7
<< 25) | (b7
>> (64 - 25))) ^ b12
;
133 b1
= ((b1
<< 41) | (b1
>> (64 - 41))) ^ b0
;
137 b3
= ((b3
<< 9) | (b3
>> (64 - 9))) ^ b2
;
141 b5
= ((b5
<< 37) | (b5
>> (64 - 37))) ^ b4
;
145 b7
= ((b7
<< 31) | (b7
>> (64 - 31))) ^ b6
;
149 b9
= ((b9
<< 12) | (b9
>> (64 - 12))) ^ b8
;
153 b11
= ((b11
<< 47) | (b11
>> (64 - 47))) ^ b10
;
157 b13
= ((b13
<< 44) | (b13
>> (64 - 44))) ^ b12
;
160 b14
+= b15
+ k15
+ t2
;
161 b15
= ((b15
<< 30) | (b15
>> (64 - 30))) ^ b14
;
164 b9
= ((b9
<< 16) | (b9
>> (64 - 16))) ^ b0
;
167 b13
= ((b13
<< 34) | (b13
>> (64 - 34))) ^ b2
;
170 b11
= ((b11
<< 56) | (b11
>> (64 - 56))) ^ b6
;
173 b15
= ((b15
<< 51) | (b15
>> (64 - 51))) ^ b4
;
176 b7
= ((b7
<< 4) | (b7
>> (64 - 4))) ^ b10
;
179 b3
= ((b3
<< 53) | (b3
>> (64 - 53))) ^ b12
;
182 b5
= ((b5
<< 42) | (b5
>> (64 - 42))) ^ b14
;
185 b1
= ((b1
<< 41) | (b1
>> (64 - 41))) ^ b8
;
188 b7
= ((b7
<< 31) | (b7
>> (64 - 31))) ^ b0
;
191 b5
= ((b5
<< 44) | (b5
>> (64 - 44))) ^ b2
;
194 b3
= ((b3
<< 47) | (b3
>> (64 - 47))) ^ b4
;
197 b1
= ((b1
<< 46) | (b1
>> (64 - 46))) ^ b6
;
200 b15
= ((b15
<< 19) | (b15
>> (64 - 19))) ^ b12
;
203 b13
= ((b13
<< 42) | (b13
>> (64 - 42))) ^ b14
;
206 b11
= ((b11
<< 44) | (b11
>> (64 - 44))) ^ b8
;
209 b9
= ((b9
<< 25) | (b9
>> (64 - 25))) ^ b10
;
212 b15
= ((b15
<< 9) | (b15
>> (64 - 9))) ^ b0
;
215 b11
= ((b11
<< 48) | (b11
>> (64 - 48))) ^ b2
;
218 b13
= ((b13
<< 35) | (b13
>> (64 - 35))) ^ b6
;
221 b9
= ((b9
<< 52) | (b9
>> (64 - 52))) ^ b4
;
224 b1
= ((b1
<< 23) | (b1
>> (64 - 23))) ^ b14
;
227 b5
= ((b5
<< 31) | (b5
>> (64 - 31))) ^ b8
;
230 b3
= ((b3
<< 37) | (b3
>> (64 - 37))) ^ b10
;
233 b7
= ((b7
<< 20) | (b7
>> (64 - 20))) ^ b12
;
237 b1
= ((b1
<< 24) | (b1
>> (64 - 24))) ^ b0
;
241 b3
= ((b3
<< 13) | (b3
>> (64 - 13))) ^ b2
;
245 b5
= ((b5
<< 8) | (b5
>> (64 - 8))) ^ b4
;
249 b7
= ((b7
<< 47) | (b7
>> (64 - 47))) ^ b6
;
253 b9
= ((b9
<< 8) | (b9
>> (64 - 8))) ^ b8
;
257 b11
= ((b11
<< 17) | (b11
>> (64 - 17))) ^ b10
;
261 b13
= ((b13
<< 22) | (b13
>> (64 - 22))) ^ b12
;
264 b14
+= b15
+ k16
+ t0
;
265 b15
= ((b15
<< 37) | (b15
>> (64 - 37))) ^ b14
;
268 b9
= ((b9
<< 38) | (b9
>> (64 - 38))) ^ b0
;
271 b13
= ((b13
<< 19) | (b13
>> (64 - 19))) ^ b2
;
274 b11
= ((b11
<< 10) | (b11
>> (64 - 10))) ^ b6
;
277 b15
= ((b15
<< 55) | (b15
>> (64 - 55))) ^ b4
;
280 b7
= ((b7
<< 49) | (b7
>> (64 - 49))) ^ b10
;
283 b3
= ((b3
<< 18) | (b3
>> (64 - 18))) ^ b12
;
286 b5
= ((b5
<< 23) | (b5
>> (64 - 23))) ^ b14
;
289 b1
= ((b1
<< 52) | (b1
>> (64 - 52))) ^ b8
;
292 b7
= ((b7
<< 33) | (b7
>> (64 - 33))) ^ b0
;
295 b5
= ((b5
<< 4) | (b5
>> (64 - 4))) ^ b2
;
298 b3
= ((b3
<< 51) | (b3
>> (64 - 51))) ^ b4
;
301 b1
= ((b1
<< 13) | (b1
>> (64 - 13))) ^ b6
;
304 b15
= ((b15
<< 34) | (b15
>> (64 - 34))) ^ b12
;
307 b13
= ((b13
<< 41) | (b13
>> (64 - 41))) ^ b14
;
310 b11
= ((b11
<< 59) | (b11
>> (64 - 59))) ^ b8
;
313 b9
= ((b9
<< 17) | (b9
>> (64 - 17))) ^ b10
;
316 b15
= ((b15
<< 5) | (b15
>> (64 - 5))) ^ b0
;
319 b11
= ((b11
<< 20) | (b11
>> (64 - 20))) ^ b2
;
322 b13
= ((b13
<< 48) | (b13
>> (64 - 48))) ^ b6
;
325 b9
= ((b9
<< 41) | (b9
>> (64 - 41))) ^ b4
;
328 b1
= ((b1
<< 47) | (b1
>> (64 - 47))) ^ b14
;
331 b5
= ((b5
<< 28) | (b5
>> (64 - 28))) ^ b8
;
334 b3
= ((b3
<< 16) | (b3
>> (64 - 16))) ^ b10
;
337 b7
= ((b7
<< 25) | (b7
>> (64 - 25))) ^ b12
;
341 b1
= ((b1
<< 41) | (b1
>> (64 - 41))) ^ b0
;
345 b3
= ((b3
<< 9) | (b3
>> (64 - 9))) ^ b2
;
349 b5
= ((b5
<< 37) | (b5
>> (64 - 37))) ^ b4
;
353 b7
= ((b7
<< 31) | (b7
>> (64 - 31))) ^ b6
;
357 b9
= ((b9
<< 12) | (b9
>> (64 - 12))) ^ b8
;
361 b11
= ((b11
<< 47) | (b11
>> (64 - 47))) ^ b10
;
365 b13
= ((b13
<< 44) | (b13
>> (64 - 44))) ^ b12
;
368 b14
+= b15
+ k0
+ t1
;
369 b15
= ((b15
<< 30) | (b15
>> (64 - 30))) ^ b14
;
372 b9
= ((b9
<< 16) | (b9
>> (64 - 16))) ^ b0
;
375 b13
= ((b13
<< 34) | (b13
>> (64 - 34))) ^ b2
;
378 b11
= ((b11
<< 56) | (b11
>> (64 - 56))) ^ b6
;
381 b15
= ((b15
<< 51) | (b15
>> (64 - 51))) ^ b4
;
384 b7
= ((b7
<< 4) | (b7
>> (64 - 4))) ^ b10
;
387 b3
= ((b3
<< 53) | (b3
>> (64 - 53))) ^ b12
;
390 b5
= ((b5
<< 42) | (b5
>> (64 - 42))) ^ b14
;
393 b1
= ((b1
<< 41) | (b1
>> (64 - 41))) ^ b8
;
396 b7
= ((b7
<< 31) | (b7
>> (64 - 31))) ^ b0
;
399 b5
= ((b5
<< 44) | (b5
>> (64 - 44))) ^ b2
;
402 b3
= ((b3
<< 47) | (b3
>> (64 - 47))) ^ b4
;
405 b1
= ((b1
<< 46) | (b1
>> (64 - 46))) ^ b6
;
408 b15
= ((b15
<< 19) | (b15
>> (64 - 19))) ^ b12
;
411 b13
= ((b13
<< 42) | (b13
>> (64 - 42))) ^ b14
;
414 b11
= ((b11
<< 44) | (b11
>> (64 - 44))) ^ b8
;
417 b9
= ((b9
<< 25) | (b9
>> (64 - 25))) ^ b10
;
420 b15
= ((b15
<< 9) | (b15
>> (64 - 9))) ^ b0
;
423 b11
= ((b11
<< 48) | (b11
>> (64 - 48))) ^ b2
;
426 b13
= ((b13
<< 35) | (b13
>> (64 - 35))) ^ b6
;
429 b9
= ((b9
<< 52) | (b9
>> (64 - 52))) ^ b4
;
432 b1
= ((b1
<< 23) | (b1
>> (64 - 23))) ^ b14
;
435 b5
= ((b5
<< 31) | (b5
>> (64 - 31))) ^ b8
;
438 b3
= ((b3
<< 37) | (b3
>> (64 - 37))) ^ b10
;
441 b7
= ((b7
<< 20) | (b7
>> (64 - 20))) ^ b12
;
445 b1
= ((b1
<< 24) | (b1
>> (64 - 24))) ^ b0
;
449 b3
= ((b3
<< 13) | (b3
>> (64 - 13))) ^ b2
;
453 b5
= ((b5
<< 8) | (b5
>> (64 - 8))) ^ b4
;
457 b7
= ((b7
<< 47) | (b7
>> (64 - 47))) ^ b6
;
461 b9
= ((b9
<< 8) | (b9
>> (64 - 8))) ^ b8
;
465 b11
= ((b11
<< 17) | (b11
>> (64 - 17))) ^ b10
;
469 b13
= ((b13
<< 22) | (b13
>> (64 - 22))) ^ b12
;
472 b14
+= b15
+ k1
+ t2
;
473 b15
= ((b15
<< 37) | (b15
>> (64 - 37))) ^ b14
;
476 b9
= ((b9
<< 38) | (b9
>> (64 - 38))) ^ b0
;
479 b13
= ((b13
<< 19) | (b13
>> (64 - 19))) ^ b2
;
482 b11
= ((b11
<< 10) | (b11
>> (64 - 10))) ^ b6
;
485 b15
= ((b15
<< 55) | (b15
>> (64 - 55))) ^ b4
;
488 b7
= ((b7
<< 49) | (b7
>> (64 - 49))) ^ b10
;
491 b3
= ((b3
<< 18) | (b3
>> (64 - 18))) ^ b12
;
494 b5
= ((b5
<< 23) | (b5
>> (64 - 23))) ^ b14
;
497 b1
= ((b1
<< 52) | (b1
>> (64 - 52))) ^ b8
;
500 b7
= ((b7
<< 33) | (b7
>> (64 - 33))) ^ b0
;
503 b5
= ((b5
<< 4) | (b5
>> (64 - 4))) ^ b2
;
506 b3
= ((b3
<< 51) | (b3
>> (64 - 51))) ^ b4
;
509 b1
= ((b1
<< 13) | (b1
>> (64 - 13))) ^ b6
;
512 b15
= ((b15
<< 34) | (b15
>> (64 - 34))) ^ b12
;
515 b13
= ((b13
<< 41) | (b13
>> (64 - 41))) ^ b14
;
518 b11
= ((b11
<< 59) | (b11
>> (64 - 59))) ^ b8
;
521 b9
= ((b9
<< 17) | (b9
>> (64 - 17))) ^ b10
;
524 b15
= ((b15
<< 5) | (b15
>> (64 - 5))) ^ b0
;
527 b11
= ((b11
<< 20) | (b11
>> (64 - 20))) ^ b2
;
530 b13
= ((b13
<< 48) | (b13
>> (64 - 48))) ^ b6
;
533 b9
= ((b9
<< 41) | (b9
>> (64 - 41))) ^ b4
;
536 b1
= ((b1
<< 47) | (b1
>> (64 - 47))) ^ b14
;
539 b5
= ((b5
<< 28) | (b5
>> (64 - 28))) ^ b8
;
542 b3
= ((b3
<< 16) | (b3
>> (64 - 16))) ^ b10
;
545 b7
= ((b7
<< 25) | (b7
>> (64 - 25))) ^ b12
;
549 b1
= ((b1
<< 41) | (b1
>> (64 - 41))) ^ b0
;
553 b3
= ((b3
<< 9) | (b3
>> (64 - 9))) ^ b2
;
557 b5
= ((b5
<< 37) | (b5
>> (64 - 37))) ^ b4
;
561 b7
= ((b7
<< 31) | (b7
>> (64 - 31))) ^ b6
;
565 b9
= ((b9
<< 12) | (b9
>> (64 - 12))) ^ b8
;
569 b11
= ((b11
<< 47) | (b11
>> (64 - 47))) ^ b10
;
573 b13
= ((b13
<< 44) | (b13
>> (64 - 44))) ^ b12
;
576 b14
+= b15
+ k2
+ t0
;
577 b15
= ((b15
<< 30) | (b15
>> (64 - 30))) ^ b14
;
580 b9
= ((b9
<< 16) | (b9
>> (64 - 16))) ^ b0
;
583 b13
= ((b13
<< 34) | (b13
>> (64 - 34))) ^ b2
;
586 b11
= ((b11
<< 56) | (b11
>> (64 - 56))) ^ b6
;
589 b15
= ((b15
<< 51) | (b15
>> (64 - 51))) ^ b4
;
592 b7
= ((b7
<< 4) | (b7
>> (64 - 4))) ^ b10
;
595 b3
= ((b3
<< 53) | (b3
>> (64 - 53))) ^ b12
;
598 b5
= ((b5
<< 42) | (b5
>> (64 - 42))) ^ b14
;
601 b1
= ((b1
<< 41) | (b1
>> (64 - 41))) ^ b8
;
604 b7
= ((b7
<< 31) | (b7
>> (64 - 31))) ^ b0
;
607 b5
= ((b5
<< 44) | (b5
>> (64 - 44))) ^ b2
;
610 b3
= ((b3
<< 47) | (b3
>> (64 - 47))) ^ b4
;
613 b1
= ((b1
<< 46) | (b1
>> (64 - 46))) ^ b6
;
616 b15
= ((b15
<< 19) | (b15
>> (64 - 19))) ^ b12
;
619 b13
= ((b13
<< 42) | (b13
>> (64 - 42))) ^ b14
;
622 b11
= ((b11
<< 44) | (b11
>> (64 - 44))) ^ b8
;
625 b9
= ((b9
<< 25) | (b9
>> (64 - 25))) ^ b10
;
628 b15
= ((b15
<< 9) | (b15
>> (64 - 9))) ^ b0
;
631 b11
= ((b11
<< 48) | (b11
>> (64 - 48))) ^ b2
;
634 b13
= ((b13
<< 35) | (b13
>> (64 - 35))) ^ b6
;
637 b9
= ((b9
<< 52) | (b9
>> (64 - 52))) ^ b4
;
640 b1
= ((b1
<< 23) | (b1
>> (64 - 23))) ^ b14
;
643 b5
= ((b5
<< 31) | (b5
>> (64 - 31))) ^ b8
;
646 b3
= ((b3
<< 37) | (b3
>> (64 - 37))) ^ b10
;
649 b7
= ((b7
<< 20) | (b7
>> (64 - 20))) ^ b12
;
653 b1
= ((b1
<< 24) | (b1
>> (64 - 24))) ^ b0
;
657 b3
= ((b3
<< 13) | (b3
>> (64 - 13))) ^ b2
;
661 b5
= ((b5
<< 8) | (b5
>> (64 - 8))) ^ b4
;
665 b7
= ((b7
<< 47) | (b7
>> (64 - 47))) ^ b6
;
669 b9
= ((b9
<< 8) | (b9
>> (64 - 8))) ^ b8
;
673 b11
= ((b11
<< 17) | (b11
>> (64 - 17))) ^ b10
;
677 b13
= ((b13
<< 22) | (b13
>> (64 - 22))) ^ b12
;
680 b14
+= b15
+ k3
+ t1
;
681 b15
= ((b15
<< 37) | (b15
>> (64 - 37))) ^ b14
;
684 b9
= ((b9
<< 38) | (b9
>> (64 - 38))) ^ b0
;
687 b13
= ((b13
<< 19) | (b13
>> (64 - 19))) ^ b2
;
690 b11
= ((b11
<< 10) | (b11
>> (64 - 10))) ^ b6
;
693 b15
= ((b15
<< 55) | (b15
>> (64 - 55))) ^ b4
;
696 b7
= ((b7
<< 49) | (b7
>> (64 - 49))) ^ b10
;
699 b3
= ((b3
<< 18) | (b3
>> (64 - 18))) ^ b12
;
702 b5
= ((b5
<< 23) | (b5
>> (64 - 23))) ^ b14
;
705 b1
= ((b1
<< 52) | (b1
>> (64 - 52))) ^ b8
;
708 b7
= ((b7
<< 33) | (b7
>> (64 - 33))) ^ b0
;
711 b5
= ((b5
<< 4) | (b5
>> (64 - 4))) ^ b2
;
714 b3
= ((b3
<< 51) | (b3
>> (64 - 51))) ^ b4
;
717 b1
= ((b1
<< 13) | (b1
>> (64 - 13))) ^ b6
;
720 b15
= ((b15
<< 34) | (b15
>> (64 - 34))) ^ b12
;
723 b13
= ((b13
<< 41) | (b13
>> (64 - 41))) ^ b14
;
726 b11
= ((b11
<< 59) | (b11
>> (64 - 59))) ^ b8
;
729 b9
= ((b9
<< 17) | (b9
>> (64 - 17))) ^ b10
;
732 b15
= ((b15
<< 5) | (b15
>> (64 - 5))) ^ b0
;
735 b11
= ((b11
<< 20) | (b11
>> (64 - 20))) ^ b2
;
738 b13
= ((b13
<< 48) | (b13
>> (64 - 48))) ^ b6
;
741 b9
= ((b9
<< 41) | (b9
>> (64 - 41))) ^ b4
;
744 b1
= ((b1
<< 47) | (b1
>> (64 - 47))) ^ b14
;
747 b5
= ((b5
<< 28) | (b5
>> (64 - 28))) ^ b8
;
750 b3
= ((b3
<< 16) | (b3
>> (64 - 16))) ^ b10
;
753 b7
= ((b7
<< 25) | (b7
>> (64 - 25))) ^ b12
;
757 b1
= ((b1
<< 41) | (b1
>> (64 - 41))) ^ b0
;
761 b3
= ((b3
<< 9) | (b3
>> (64 - 9))) ^ b2
;
765 b5
= ((b5
<< 37) | (b5
>> (64 - 37))) ^ b4
;
769 b7
= ((b7
<< 31) | (b7
>> (64 - 31))) ^ b6
;
773 b9
= ((b9
<< 12) | (b9
>> (64 - 12))) ^ b8
;
777 b11
= ((b11
<< 47) | (b11
>> (64 - 47))) ^ b10
;
781 b13
= ((b13
<< 44) | (b13
>> (64 - 44))) ^ b12
;
784 b14
+= b15
+ k4
+ t2
;
785 b15
= ((b15
<< 30) | (b15
>> (64 - 30))) ^ b14
;
788 b9
= ((b9
<< 16) | (b9
>> (64 - 16))) ^ b0
;
791 b13
= ((b13
<< 34) | (b13
>> (64 - 34))) ^ b2
;
794 b11
= ((b11
<< 56) | (b11
>> (64 - 56))) ^ b6
;
797 b15
= ((b15
<< 51) | (b15
>> (64 - 51))) ^ b4
;
800 b7
= ((b7
<< 4) | (b7
>> (64 - 4))) ^ b10
;
803 b3
= ((b3
<< 53) | (b3
>> (64 - 53))) ^ b12
;
806 b5
= ((b5
<< 42) | (b5
>> (64 - 42))) ^ b14
;
809 b1
= ((b1
<< 41) | (b1
>> (64 - 41))) ^ b8
;
812 b7
= ((b7
<< 31) | (b7
>> (64 - 31))) ^ b0
;
815 b5
= ((b5
<< 44) | (b5
>> (64 - 44))) ^ b2
;
818 b3
= ((b3
<< 47) | (b3
>> (64 - 47))) ^ b4
;
821 b1
= ((b1
<< 46) | (b1
>> (64 - 46))) ^ b6
;
824 b15
= ((b15
<< 19) | (b15
>> (64 - 19))) ^ b12
;
827 b13
= ((b13
<< 42) | (b13
>> (64 - 42))) ^ b14
;
830 b11
= ((b11
<< 44) | (b11
>> (64 - 44))) ^ b8
;
833 b9
= ((b9
<< 25) | (b9
>> (64 - 25))) ^ b10
;
836 b15
= ((b15
<< 9) | (b15
>> (64 - 9))) ^ b0
;
839 b11
= ((b11
<< 48) | (b11
>> (64 - 48))) ^ b2
;
842 b13
= ((b13
<< 35) | (b13
>> (64 - 35))) ^ b6
;
845 b9
= ((b9
<< 52) | (b9
>> (64 - 52))) ^ b4
;
848 b1
= ((b1
<< 23) | (b1
>> (64 - 23))) ^ b14
;
851 b5
= ((b5
<< 31) | (b5
>> (64 - 31))) ^ b8
;
854 b3
= ((b3
<< 37) | (b3
>> (64 - 37))) ^ b10
;
857 b7
= ((b7
<< 20) | (b7
>> (64 - 20))) ^ b12
;
861 b1
= ((b1
<< 24) | (b1
>> (64 - 24))) ^ b0
;
865 b3
= ((b3
<< 13) | (b3
>> (64 - 13))) ^ b2
;
869 b5
= ((b5
<< 8) | (b5
>> (64 - 8))) ^ b4
;
873 b7
= ((b7
<< 47) | (b7
>> (64 - 47))) ^ b6
;
877 b9
= ((b9
<< 8) | (b9
>> (64 - 8))) ^ b8
;
881 b11
= ((b11
<< 17) | (b11
>> (64 - 17))) ^ b10
;
885 b13
= ((b13
<< 22) | (b13
>> (64 - 22))) ^ b12
;
888 b14
+= b15
+ k5
+ t0
;
889 b15
= ((b15
<< 37) | (b15
>> (64 - 37))) ^ b14
;
892 b9
= ((b9
<< 38) | (b9
>> (64 - 38))) ^ b0
;
895 b13
= ((b13
<< 19) | (b13
>> (64 - 19))) ^ b2
;
898 b11
= ((b11
<< 10) | (b11
>> (64 - 10))) ^ b6
;
901 b15
= ((b15
<< 55) | (b15
>> (64 - 55))) ^ b4
;
904 b7
= ((b7
<< 49) | (b7
>> (64 - 49))) ^ b10
;
907 b3
= ((b3
<< 18) | (b3
>> (64 - 18))) ^ b12
;
910 b5
= ((b5
<< 23) | (b5
>> (64 - 23))) ^ b14
;
913 b1
= ((b1
<< 52) | (b1
>> (64 - 52))) ^ b8
;
916 b7
= ((b7
<< 33) | (b7
>> (64 - 33))) ^ b0
;
919 b5
= ((b5
<< 4) | (b5
>> (64 - 4))) ^ b2
;
922 b3
= ((b3
<< 51) | (b3
>> (64 - 51))) ^ b4
;
925 b1
= ((b1
<< 13) | (b1
>> (64 - 13))) ^ b6
;
928 b15
= ((b15
<< 34) | (b15
>> (64 - 34))) ^ b12
;
931 b13
= ((b13
<< 41) | (b13
>> (64 - 41))) ^ b14
;
934 b11
= ((b11
<< 59) | (b11
>> (64 - 59))) ^ b8
;
937 b9
= ((b9
<< 17) | (b9
>> (64 - 17))) ^ b10
;
940 b15
= ((b15
<< 5) | (b15
>> (64 - 5))) ^ b0
;
943 b11
= ((b11
<< 20) | (b11
>> (64 - 20))) ^ b2
;
946 b13
= ((b13
<< 48) | (b13
>> (64 - 48))) ^ b6
;
949 b9
= ((b9
<< 41) | (b9
>> (64 - 41))) ^ b4
;
952 b1
= ((b1
<< 47) | (b1
>> (64 - 47))) ^ b14
;
955 b5
= ((b5
<< 28) | (b5
>> (64 - 28))) ^ b8
;
958 b3
= ((b3
<< 16) | (b3
>> (64 - 16))) ^ b10
;
961 b7
= ((b7
<< 25) | (b7
>> (64 - 25))) ^ b12
;
965 b1
= ((b1
<< 41) | (b1
>> (64 - 41))) ^ b0
;
969 b3
= ((b3
<< 9) | (b3
>> (64 - 9))) ^ b2
;
973 b5
= ((b5
<< 37) | (b5
>> (64 - 37))) ^ b4
;
977 b7
= ((b7
<< 31) | (b7
>> (64 - 31))) ^ b6
;
981 b9
= ((b9
<< 12) | (b9
>> (64 - 12))) ^ b8
;
985 b11
= ((b11
<< 47) | (b11
>> (64 - 47))) ^ b10
;
989 b13
= ((b13
<< 44) | (b13
>> (64 - 44))) ^ b12
;
992 b14
+= b15
+ k6
+ t1
;
993 b15
= ((b15
<< 30) | (b15
>> (64 - 30))) ^ b14
;
996 b9
= ((b9
<< 16) | (b9
>> (64 - 16))) ^ b0
;
999 b13
= ((b13
<< 34) | (b13
>> (64 - 34))) ^ b2
;
1002 b11
= ((b11
<< 56) | (b11
>> (64 - 56))) ^ b6
;
1005 b15
= ((b15
<< 51) | (b15
>> (64 - 51))) ^ b4
;
1008 b7
= ((b7
<< 4) | (b7
>> (64 - 4))) ^ b10
;
1011 b3
= ((b3
<< 53) | (b3
>> (64 - 53))) ^ b12
;
1014 b5
= ((b5
<< 42) | (b5
>> (64 - 42))) ^ b14
;
1017 b1
= ((b1
<< 41) | (b1
>> (64 - 41))) ^ b8
;
1020 b7
= ((b7
<< 31) | (b7
>> (64 - 31))) ^ b0
;
1023 b5
= ((b5
<< 44) | (b5
>> (64 - 44))) ^ b2
;
1026 b3
= ((b3
<< 47) | (b3
>> (64 - 47))) ^ b4
;
1029 b1
= ((b1
<< 46) | (b1
>> (64 - 46))) ^ b6
;
1032 b15
= ((b15
<< 19) | (b15
>> (64 - 19))) ^ b12
;
1035 b13
= ((b13
<< 42) | (b13
>> (64 - 42))) ^ b14
;
1038 b11
= ((b11
<< 44) | (b11
>> (64 - 44))) ^ b8
;
1041 b9
= ((b9
<< 25) | (b9
>> (64 - 25))) ^ b10
;
1044 b15
= ((b15
<< 9) | (b15
>> (64 - 9))) ^ b0
;
1047 b11
= ((b11
<< 48) | (b11
>> (64 - 48))) ^ b2
;
1050 b13
= ((b13
<< 35) | (b13
>> (64 - 35))) ^ b6
;
1053 b9
= ((b9
<< 52) | (b9
>> (64 - 52))) ^ b4
;
1056 b1
= ((b1
<< 23) | (b1
>> (64 - 23))) ^ b14
;
1059 b5
= ((b5
<< 31) | (b5
>> (64 - 31))) ^ b8
;
1062 b3
= ((b3
<< 37) | (b3
>> (64 - 37))) ^ b10
;
1065 b7
= ((b7
<< 20) | (b7
>> (64 - 20))) ^ b12
;
1069 b1
= ((b1
<< 24) | (b1
>> (64 - 24))) ^ b0
;
1073 b3
= ((b3
<< 13) | (b3
>> (64 - 13))) ^ b2
;
1077 b5
= ((b5
<< 8) | (b5
>> (64 - 8))) ^ b4
;
1081 b7
= ((b7
<< 47) | (b7
>> (64 - 47))) ^ b6
;
1085 b9
= ((b9
<< 8) | (b9
>> (64 - 8))) ^ b8
;
1089 b11
= ((b11
<< 17) | (b11
>> (64 - 17))) ^ b10
;
1093 b13
= ((b13
<< 22) | (b13
>> (64 - 22))) ^ b12
;
1096 b14
+= b15
+ k7
+ t2
;
1097 b15
= ((b15
<< 37) | (b15
>> (64 - 37))) ^ b14
;
1100 b9
= ((b9
<< 38) | (b9
>> (64 - 38))) ^ b0
;
1103 b13
= ((b13
<< 19) | (b13
>> (64 - 19))) ^ b2
;
1106 b11
= ((b11
<< 10) | (b11
>> (64 - 10))) ^ b6
;
1109 b15
= ((b15
<< 55) | (b15
>> (64 - 55))) ^ b4
;
1112 b7
= ((b7
<< 49) | (b7
>> (64 - 49))) ^ b10
;
1115 b3
= ((b3
<< 18) | (b3
>> (64 - 18))) ^ b12
;
1118 b5
= ((b5
<< 23) | (b5
>> (64 - 23))) ^ b14
;
1121 b1
= ((b1
<< 52) | (b1
>> (64 - 52))) ^ b8
;
1124 b7
= ((b7
<< 33) | (b7
>> (64 - 33))) ^ b0
;
1127 b5
= ((b5
<< 4) | (b5
>> (64 - 4))) ^ b2
;
1130 b3
= ((b3
<< 51) | (b3
>> (64 - 51))) ^ b4
;
1133 b1
= ((b1
<< 13) | (b1
>> (64 - 13))) ^ b6
;
1136 b15
= ((b15
<< 34) | (b15
>> (64 - 34))) ^ b12
;
1139 b13
= ((b13
<< 41) | (b13
>> (64 - 41))) ^ b14
;
1142 b11
= ((b11
<< 59) | (b11
>> (64 - 59))) ^ b8
;
1145 b9
= ((b9
<< 17) | (b9
>> (64 - 17))) ^ b10
;
1148 b15
= ((b15
<< 5) | (b15
>> (64 - 5))) ^ b0
;
1151 b11
= ((b11
<< 20) | (b11
>> (64 - 20))) ^ b2
;
1154 b13
= ((b13
<< 48) | (b13
>> (64 - 48))) ^ b6
;
1157 b9
= ((b9
<< 41) | (b9
>> (64 - 41))) ^ b4
;
1160 b1
= ((b1
<< 47) | (b1
>> (64 - 47))) ^ b14
;
1163 b5
= ((b5
<< 28) | (b5
>> (64 - 28))) ^ b8
;
1166 b3
= ((b3
<< 16) | (b3
>> (64 - 16))) ^ b10
;
1169 b7
= ((b7
<< 25) | (b7
>> (64 - 25))) ^ b12
;
1173 b1
= ((b1
<< 41) | (b1
>> (64 - 41))) ^ b0
;
1177 b3
= ((b3
<< 9) | (b3
>> (64 - 9))) ^ b2
;
1181 b5
= ((b5
<< 37) | (b5
>> (64 - 37))) ^ b4
;
1185 b7
= ((b7
<< 31) | (b7
>> (64 - 31))) ^ b6
;
1189 b9
= ((b9
<< 12) | (b9
>> (64 - 12))) ^ b8
;
1193 b11
= ((b11
<< 47) | (b11
>> (64 - 47))) ^ b10
;
1197 b13
= ((b13
<< 44) | (b13
>> (64 - 44))) ^ b12
;
1200 b14
+= b15
+ k8
+ t0
;
1201 b15
= ((b15
<< 30) | (b15
>> (64 - 30))) ^ b14
;
1204 b9
= ((b9
<< 16) | (b9
>> (64 - 16))) ^ b0
;
1207 b13
= ((b13
<< 34) | (b13
>> (64 - 34))) ^ b2
;
1210 b11
= ((b11
<< 56) | (b11
>> (64 - 56))) ^ b6
;
1213 b15
= ((b15
<< 51) | (b15
>> (64 - 51))) ^ b4
;
1216 b7
= ((b7
<< 4) | (b7
>> (64 - 4))) ^ b10
;
1219 b3
= ((b3
<< 53) | (b3
>> (64 - 53))) ^ b12
;
1222 b5
= ((b5
<< 42) | (b5
>> (64 - 42))) ^ b14
;
1225 b1
= ((b1
<< 41) | (b1
>> (64 - 41))) ^ b8
;
1228 b7
= ((b7
<< 31) | (b7
>> (64 - 31))) ^ b0
;
1231 b5
= ((b5
<< 44) | (b5
>> (64 - 44))) ^ b2
;
1234 b3
= ((b3
<< 47) | (b3
>> (64 - 47))) ^ b4
;
1237 b1
= ((b1
<< 46) | (b1
>> (64 - 46))) ^ b6
;
1240 b15
= ((b15
<< 19) | (b15
>> (64 - 19))) ^ b12
;
1243 b13
= ((b13
<< 42) | (b13
>> (64 - 42))) ^ b14
;
1246 b11
= ((b11
<< 44) | (b11
>> (64 - 44))) ^ b8
;
1249 b9
= ((b9
<< 25) | (b9
>> (64 - 25))) ^ b10
;
1252 b15
= ((b15
<< 9) | (b15
>> (64 - 9))) ^ b0
;
1255 b11
= ((b11
<< 48) | (b11
>> (64 - 48))) ^ b2
;
1258 b13
= ((b13
<< 35) | (b13
>> (64 - 35))) ^ b6
;
1261 b9
= ((b9
<< 52) | (b9
>> (64 - 52))) ^ b4
;
1264 b1
= ((b1
<< 23) | (b1
>> (64 - 23))) ^ b14
;
1267 b5
= ((b5
<< 31) | (b5
>> (64 - 31))) ^ b8
;
1270 b3
= ((b3
<< 37) | (b3
>> (64 - 37))) ^ b10
;
1273 b7
= ((b7
<< 20) | (b7
>> (64 - 20))) ^ b12
;
1277 b1
= ((b1
<< 24) | (b1
>> (64 - 24))) ^ b0
;
1281 b3
= ((b3
<< 13) | (b3
>> (64 - 13))) ^ b2
;
1285 b5
= ((b5
<< 8) | (b5
>> (64 - 8))) ^ b4
;
1289 b7
= ((b7
<< 47) | (b7
>> (64 - 47))) ^ b6
;
1293 b9
= ((b9
<< 8) | (b9
>> (64 - 8))) ^ b8
;
1297 b11
= ((b11
<< 17) | (b11
>> (64 - 17))) ^ b10
;
1301 b13
= ((b13
<< 22) | (b13
>> (64 - 22))) ^ b12
;
1304 b14
+= b15
+ k9
+ t1
;
1305 b15
= ((b15
<< 37) | (b15
>> (64 - 37))) ^ b14
;
1308 b9
= ((b9
<< 38) | (b9
>> (64 - 38))) ^ b0
;
1311 b13
= ((b13
<< 19) | (b13
>> (64 - 19))) ^ b2
;
1314 b11
= ((b11
<< 10) | (b11
>> (64 - 10))) ^ b6
;
1317 b15
= ((b15
<< 55) | (b15
>> (64 - 55))) ^ b4
;
1320 b7
= ((b7
<< 49) | (b7
>> (64 - 49))) ^ b10
;
1323 b3
= ((b3
<< 18) | (b3
>> (64 - 18))) ^ b12
;
1326 b5
= ((b5
<< 23) | (b5
>> (64 - 23))) ^ b14
;
1329 b1
= ((b1
<< 52) | (b1
>> (64 - 52))) ^ b8
;
1332 b7
= ((b7
<< 33) | (b7
>> (64 - 33))) ^ b0
;
1335 b5
= ((b5
<< 4) | (b5
>> (64 - 4))) ^ b2
;
1338 b3
= ((b3
<< 51) | (b3
>> (64 - 51))) ^ b4
;
1341 b1
= ((b1
<< 13) | (b1
>> (64 - 13))) ^ b6
;
1344 b15
= ((b15
<< 34) | (b15
>> (64 - 34))) ^ b12
;
1347 b13
= ((b13
<< 41) | (b13
>> (64 - 41))) ^ b14
;
1350 b11
= ((b11
<< 59) | (b11
>> (64 - 59))) ^ b8
;
1353 b9
= ((b9
<< 17) | (b9
>> (64 - 17))) ^ b10
;
1356 b15
= ((b15
<< 5) | (b15
>> (64 - 5))) ^ b0
;
1359 b11
= ((b11
<< 20) | (b11
>> (64 - 20))) ^ b2
;
1362 b13
= ((b13
<< 48) | (b13
>> (64 - 48))) ^ b6
;
1365 b9
= ((b9
<< 41) | (b9
>> (64 - 41))) ^ b4
;
1368 b1
= ((b1
<< 47) | (b1
>> (64 - 47))) ^ b14
;
1371 b5
= ((b5
<< 28) | (b5
>> (64 - 28))) ^ b8
;
1374 b3
= ((b3
<< 16) | (b3
>> (64 - 16))) ^ b10
;
1377 b7
= ((b7
<< 25) | (b7
>> (64 - 25))) ^ b12
;
1381 b1
= ((b1
<< 41) | (b1
>> (64 - 41))) ^ b0
;
1385 b3
= ((b3
<< 9) | (b3
>> (64 - 9))) ^ b2
;
1389 b5
= ((b5
<< 37) | (b5
>> (64 - 37))) ^ b4
;
1393 b7
= ((b7
<< 31) | (b7
>> (64 - 31))) ^ b6
;
1397 b9
= ((b9
<< 12) | (b9
>> (64 - 12))) ^ b8
;
1401 b11
= ((b11
<< 47) | (b11
>> (64 - 47))) ^ b10
;
1405 b13
= ((b13
<< 44) | (b13
>> (64 - 44))) ^ b12
;
1408 b14
+= b15
+ k10
+ t2
;
1409 b15
= ((b15
<< 30) | (b15
>> (64 - 30))) ^ b14
;
1412 b9
= ((b9
<< 16) | (b9
>> (64 - 16))) ^ b0
;
1415 b13
= ((b13
<< 34) | (b13
>> (64 - 34))) ^ b2
;
1418 b11
= ((b11
<< 56) | (b11
>> (64 - 56))) ^ b6
;
1421 b15
= ((b15
<< 51) | (b15
>> (64 - 51))) ^ b4
;
1424 b7
= ((b7
<< 4) | (b7
>> (64 - 4))) ^ b10
;
1427 b3
= ((b3
<< 53) | (b3
>> (64 - 53))) ^ b12
;
1430 b5
= ((b5
<< 42) | (b5
>> (64 - 42))) ^ b14
;
1433 b1
= ((b1
<< 41) | (b1
>> (64 - 41))) ^ b8
;
1436 b7
= ((b7
<< 31) | (b7
>> (64 - 31))) ^ b0
;
1439 b5
= ((b5
<< 44) | (b5
>> (64 - 44))) ^ b2
;
1442 b3
= ((b3
<< 47) | (b3
>> (64 - 47))) ^ b4
;
1445 b1
= ((b1
<< 46) | (b1
>> (64 - 46))) ^ b6
;
1448 b15
= ((b15
<< 19) | (b15
>> (64 - 19))) ^ b12
;
1451 b13
= ((b13
<< 42) | (b13
>> (64 - 42))) ^ b14
;
1454 b11
= ((b11
<< 44) | (b11
>> (64 - 44))) ^ b8
;
1457 b9
= ((b9
<< 25) | (b9
>> (64 - 25))) ^ b10
;
1460 b15
= ((b15
<< 9) | (b15
>> (64 - 9))) ^ b0
;
1463 b11
= ((b11
<< 48) | (b11
>> (64 - 48))) ^ b2
;
1466 b13
= ((b13
<< 35) | (b13
>> (64 - 35))) ^ b6
;
1469 b9
= ((b9
<< 52) | (b9
>> (64 - 52))) ^ b4
;
1472 b1
= ((b1
<< 23) | (b1
>> (64 - 23))) ^ b14
;
1475 b5
= ((b5
<< 31) | (b5
>> (64 - 31))) ^ b8
;
1478 b3
= ((b3
<< 37) | (b3
>> (64 - 37))) ^ b10
;
1481 b7
= ((b7
<< 20) | (b7
>> (64 - 20))) ^ b12
;
1485 b1
= ((b1
<< 24) | (b1
>> (64 - 24))) ^ b0
;
1489 b3
= ((b3
<< 13) | (b3
>> (64 - 13))) ^ b2
;
1493 b5
= ((b5
<< 8) | (b5
>> (64 - 8))) ^ b4
;
1497 b7
= ((b7
<< 47) | (b7
>> (64 - 47))) ^ b6
;
1501 b9
= ((b9
<< 8) | (b9
>> (64 - 8))) ^ b8
;
1505 b11
= ((b11
<< 17) | (b11
>> (64 - 17))) ^ b10
;
1509 b13
= ((b13
<< 22) | (b13
>> (64 - 22))) ^ b12
;
1512 b14
+= b15
+ k11
+ t0
;
1513 b15
= ((b15
<< 37) | (b15
>> (64 - 37))) ^ b14
;
1516 b9
= ((b9
<< 38) | (b9
>> (64 - 38))) ^ b0
;
1519 b13
= ((b13
<< 19) | (b13
>> (64 - 19))) ^ b2
;
1522 b11
= ((b11
<< 10) | (b11
>> (64 - 10))) ^ b6
;
1525 b15
= ((b15
<< 55) | (b15
>> (64 - 55))) ^ b4
;
1528 b7
= ((b7
<< 49) | (b7
>> (64 - 49))) ^ b10
;
1531 b3
= ((b3
<< 18) | (b3
>> (64 - 18))) ^ b12
;
1534 b5
= ((b5
<< 23) | (b5
>> (64 - 23))) ^ b14
;
1537 b1
= ((b1
<< 52) | (b1
>> (64 - 52))) ^ b8
;
1540 b7
= ((b7
<< 33) | (b7
>> (64 - 33))) ^ b0
;
1543 b5
= ((b5
<< 4) | (b5
>> (64 - 4))) ^ b2
;
1546 b3
= ((b3
<< 51) | (b3
>> (64 - 51))) ^ b4
;
1549 b1
= ((b1
<< 13) | (b1
>> (64 - 13))) ^ b6
;
1552 b15
= ((b15
<< 34) | (b15
>> (64 - 34))) ^ b12
;
1555 b13
= ((b13
<< 41) | (b13
>> (64 - 41))) ^ b14
;
1558 b11
= ((b11
<< 59) | (b11
>> (64 - 59))) ^ b8
;
1561 b9
= ((b9
<< 17) | (b9
>> (64 - 17))) ^ b10
;
1564 b15
= ((b15
<< 5) | (b15
>> (64 - 5))) ^ b0
;
1567 b11
= ((b11
<< 20) | (b11
>> (64 - 20))) ^ b2
;
1570 b13
= ((b13
<< 48) | (b13
>> (64 - 48))) ^ b6
;
1573 b9
= ((b9
<< 41) | (b9
>> (64 - 41))) ^ b4
;
1576 b1
= ((b1
<< 47) | (b1
>> (64 - 47))) ^ b14
;
1579 b5
= ((b5
<< 28) | (b5
>> (64 - 28))) ^ b8
;
1582 b3
= ((b3
<< 16) | (b3
>> (64 - 16))) ^ b10
;
1585 b7
= ((b7
<< 25) | (b7
>> (64 - 25))) ^ b12
;
1589 b1
= ((b1
<< 41) | (b1
>> (64 - 41))) ^ b0
;
1593 b3
= ((b3
<< 9) | (b3
>> (64 - 9))) ^ b2
;
1597 b5
= ((b5
<< 37) | (b5
>> (64 - 37))) ^ b4
;
1601 b7
= ((b7
<< 31) | (b7
>> (64 - 31))) ^ b6
;
1605 b9
= ((b9
<< 12) | (b9
>> (64 - 12))) ^ b8
;
1609 b11
= ((b11
<< 47) | (b11
>> (64 - 47))) ^ b10
;
1613 b13
= ((b13
<< 44) | (b13
>> (64 - 44))) ^ b12
;
1616 b14
+= b15
+ k12
+ t1
;
1617 b15
= ((b15
<< 30) | (b15
>> (64 - 30))) ^ b14
;
1620 b9
= ((b9
<< 16) | (b9
>> (64 - 16))) ^ b0
;
1623 b13
= ((b13
<< 34) | (b13
>> (64 - 34))) ^ b2
;
1626 b11
= ((b11
<< 56) | (b11
>> (64 - 56))) ^ b6
;
1629 b15
= ((b15
<< 51) | (b15
>> (64 - 51))) ^ b4
;
1632 b7
= ((b7
<< 4) | (b7
>> (64 - 4))) ^ b10
;
1635 b3
= ((b3
<< 53) | (b3
>> (64 - 53))) ^ b12
;
1638 b5
= ((b5
<< 42) | (b5
>> (64 - 42))) ^ b14
;
1641 b1
= ((b1
<< 41) | (b1
>> (64 - 41))) ^ b8
;
1644 b7
= ((b7
<< 31) | (b7
>> (64 - 31))) ^ b0
;
1647 b5
= ((b5
<< 44) | (b5
>> (64 - 44))) ^ b2
;
1650 b3
= ((b3
<< 47) | (b3
>> (64 - 47))) ^ b4
;
1653 b1
= ((b1
<< 46) | (b1
>> (64 - 46))) ^ b6
;
1656 b15
= ((b15
<< 19) | (b15
>> (64 - 19))) ^ b12
;
1659 b13
= ((b13
<< 42) | (b13
>> (64 - 42))) ^ b14
;
1662 b11
= ((b11
<< 44) | (b11
>> (64 - 44))) ^ b8
;
1665 b9
= ((b9
<< 25) | (b9
>> (64 - 25))) ^ b10
;
1668 b15
= ((b15
<< 9) | (b15
>> (64 - 9))) ^ b0
;
1671 b11
= ((b11
<< 48) | (b11
>> (64 - 48))) ^ b2
;
1674 b13
= ((b13
<< 35) | (b13
>> (64 - 35))) ^ b6
;
1677 b9
= ((b9
<< 52) | (b9
>> (64 - 52))) ^ b4
;
1680 b1
= ((b1
<< 23) | (b1
>> (64 - 23))) ^ b14
;
1683 b5
= ((b5
<< 31) | (b5
>> (64 - 31))) ^ b8
;
1686 b3
= ((b3
<< 37) | (b3
>> (64 - 37))) ^ b10
;
1689 b7
= ((b7
<< 20) | (b7
>> (64 - 20))) ^ b12
;
1693 b1
= ((b1
<< 24) | (b1
>> (64 - 24))) ^ b0
;
1697 b3
= ((b3
<< 13) | (b3
>> (64 - 13))) ^ b2
;
1701 b5
= ((b5
<< 8) | (b5
>> (64 - 8))) ^ b4
;
1705 b7
= ((b7
<< 47) | (b7
>> (64 - 47))) ^ b6
;
1709 b9
= ((b9
<< 8) | (b9
>> (64 - 8))) ^ b8
;
1713 b11
= ((b11
<< 17) | (b11
>> (64 - 17))) ^ b10
;
1717 b13
= ((b13
<< 22) | (b13
>> (64 - 22))) ^ b12
;
1720 b14
+= b15
+ k13
+ t2
;
1721 b15
= ((b15
<< 37) | (b15
>> (64 - 37))) ^ b14
;
1724 b9
= ((b9
<< 38) | (b9
>> (64 - 38))) ^ b0
;
1727 b13
= ((b13
<< 19) | (b13
>> (64 - 19))) ^ b2
;
1730 b11
= ((b11
<< 10) | (b11
>> (64 - 10))) ^ b6
;
1733 b15
= ((b15
<< 55) | (b15
>> (64 - 55))) ^ b4
;
1736 b7
= ((b7
<< 49) | (b7
>> (64 - 49))) ^ b10
;
1739 b3
= ((b3
<< 18) | (b3
>> (64 - 18))) ^ b12
;
1742 b5
= ((b5
<< 23) | (b5
>> (64 - 23))) ^ b14
;
1745 b1
= ((b1
<< 52) | (b1
>> (64 - 52))) ^ b8
;
1748 b7
= ((b7
<< 33) | (b7
>> (64 - 33))) ^ b0
;
1751 b5
= ((b5
<< 4) | (b5
>> (64 - 4))) ^ b2
;
1754 b3
= ((b3
<< 51) | (b3
>> (64 - 51))) ^ b4
;
1757 b1
= ((b1
<< 13) | (b1
>> (64 - 13))) ^ b6
;
1760 b15
= ((b15
<< 34) | (b15
>> (64 - 34))) ^ b12
;
1763 b13
= ((b13
<< 41) | (b13
>> (64 - 41))) ^ b14
;
1766 b11
= ((b11
<< 59) | (b11
>> (64 - 59))) ^ b8
;
1769 b9
= ((b9
<< 17) | (b9
>> (64 - 17))) ^ b10
;
1772 b15
= ((b15
<< 5) | (b15
>> (64 - 5))) ^ b0
;
1775 b11
= ((b11
<< 20) | (b11
>> (64 - 20))) ^ b2
;
1778 b13
= ((b13
<< 48) | (b13
>> (64 - 48))) ^ b6
;
1781 b9
= ((b9
<< 41) | (b9
>> (64 - 41))) ^ b4
;
1784 b1
= ((b1
<< 47) | (b1
>> (64 - 47))) ^ b14
;
1787 b5
= ((b5
<< 28) | (b5
>> (64 - 28))) ^ b8
;
1790 b3
= ((b3
<< 16) | (b3
>> (64 - 16))) ^ b10
;
1793 b7
= ((b7
<< 25) | (b7
>> (64 - 25))) ^ b12
;
1797 b1
= ((b1
<< 41) | (b1
>> (64 - 41))) ^ b0
;
1801 b3
= ((b3
<< 9) | (b3
>> (64 - 9))) ^ b2
;
1805 b5
= ((b5
<< 37) | (b5
>> (64 - 37))) ^ b4
;
1809 b7
= ((b7
<< 31) | (b7
>> (64 - 31))) ^ b6
;
1813 b9
= ((b9
<< 12) | (b9
>> (64 - 12))) ^ b8
;
1817 b11
= ((b11
<< 47) | (b11
>> (64 - 47))) ^ b10
;
1821 b13
= ((b13
<< 44) | (b13
>> (64 - 44))) ^ b12
;
1824 b14
+= b15
+ k14
+ t0
;
1825 b15
= ((b15
<< 30) | (b15
>> (64 - 30))) ^ b14
;
1828 b9
= ((b9
<< 16) | (b9
>> (64 - 16))) ^ b0
;
1831 b13
= ((b13
<< 34) | (b13
>> (64 - 34))) ^ b2
;
1834 b11
= ((b11
<< 56) | (b11
>> (64 - 56))) ^ b6
;
1837 b15
= ((b15
<< 51) | (b15
>> (64 - 51))) ^ b4
;
1840 b7
= ((b7
<< 4) | (b7
>> (64 - 4))) ^ b10
;
1843 b3
= ((b3
<< 53) | (b3
>> (64 - 53))) ^ b12
;
1846 b5
= ((b5
<< 42) | (b5
>> (64 - 42))) ^ b14
;
1849 b1
= ((b1
<< 41) | (b1
>> (64 - 41))) ^ b8
;
1852 b7
= ((b7
<< 31) | (b7
>> (64 - 31))) ^ b0
;
1855 b5
= ((b5
<< 44) | (b5
>> (64 - 44))) ^ b2
;
1858 b3
= ((b3
<< 47) | (b3
>> (64 - 47))) ^ b4
;
1861 b1
= ((b1
<< 46) | (b1
>> (64 - 46))) ^ b6
;
1864 b15
= ((b15
<< 19) | (b15
>> (64 - 19))) ^ b12
;
1867 b13
= ((b13
<< 42) | (b13
>> (64 - 42))) ^ b14
;
1870 b11
= ((b11
<< 44) | (b11
>> (64 - 44))) ^ b8
;
1873 b9
= ((b9
<< 25) | (b9
>> (64 - 25))) ^ b10
;
1876 b15
= ((b15
<< 9) | (b15
>> (64 - 9))) ^ b0
;
1879 b11
= ((b11
<< 48) | (b11
>> (64 - 48))) ^ b2
;
1882 b13
= ((b13
<< 35) | (b13
>> (64 - 35))) ^ b6
;
1885 b9
= ((b9
<< 52) | (b9
>> (64 - 52))) ^ b4
;
1888 b1
= ((b1
<< 23) | (b1
>> (64 - 23))) ^ b14
;
1891 b5
= ((b5
<< 31) | (b5
>> (64 - 31))) ^ b8
;
1894 b3
= ((b3
<< 37) | (b3
>> (64 - 37))) ^ b10
;
1897 b7
= ((b7
<< 20) | (b7
>> (64 - 20))) ^ b12
;
1901 b1
= ((b1
<< 24) | (b1
>> (64 - 24))) ^ b0
;
1905 b3
= ((b3
<< 13) | (b3
>> (64 - 13))) ^ b2
;
1909 b5
= ((b5
<< 8) | (b5
>> (64 - 8))) ^ b4
;
1913 b7
= ((b7
<< 47) | (b7
>> (64 - 47))) ^ b6
;
1917 b9
= ((b9
<< 8) | (b9
>> (64 - 8))) ^ b8
;
1921 b11
= ((b11
<< 17) | (b11
>> (64 - 17))) ^ b10
;
1925 b13
= ((b13
<< 22) | (b13
>> (64 - 22))) ^ b12
;
1928 b14
+= b15
+ k15
+ t1
;
1929 b15
= ((b15
<< 37) | (b15
>> (64 - 37))) ^ b14
;
1932 b9
= ((b9
<< 38) | (b9
>> (64 - 38))) ^ b0
;
1935 b13
= ((b13
<< 19) | (b13
>> (64 - 19))) ^ b2
;
1938 b11
= ((b11
<< 10) | (b11
>> (64 - 10))) ^ b6
;
1941 b15
= ((b15
<< 55) | (b15
>> (64 - 55))) ^ b4
;
1944 b7
= ((b7
<< 49) | (b7
>> (64 - 49))) ^ b10
;
1947 b3
= ((b3
<< 18) | (b3
>> (64 - 18))) ^ b12
;
1950 b5
= ((b5
<< 23) | (b5
>> (64 - 23))) ^ b14
;
1953 b1
= ((b1
<< 52) | (b1
>> (64 - 52))) ^ b8
;
1956 b7
= ((b7
<< 33) | (b7
>> (64 - 33))) ^ b0
;
1959 b5
= ((b5
<< 4) | (b5
>> (64 - 4))) ^ b2
;
1962 b3
= ((b3
<< 51) | (b3
>> (64 - 51))) ^ b4
;
1965 b1
= ((b1
<< 13) | (b1
>> (64 - 13))) ^ b6
;
1968 b15
= ((b15
<< 34) | (b15
>> (64 - 34))) ^ b12
;
1971 b13
= ((b13
<< 41) | (b13
>> (64 - 41))) ^ b14
;
1974 b11
= ((b11
<< 59) | (b11
>> (64 - 59))) ^ b8
;
1977 b9
= ((b9
<< 17) | (b9
>> (64 - 17))) ^ b10
;
1980 b15
= ((b15
<< 5) | (b15
>> (64 - 5))) ^ b0
;
1983 b11
= ((b11
<< 20) | (b11
>> (64 - 20))) ^ b2
;
1986 b13
= ((b13
<< 48) | (b13
>> (64 - 48))) ^ b6
;
1989 b9
= ((b9
<< 41) | (b9
>> (64 - 41))) ^ b4
;
1992 b1
= ((b1
<< 47) | (b1
>> (64 - 47))) ^ b14
;
1995 b5
= ((b5
<< 28) | (b5
>> (64 - 28))) ^ b8
;
1998 b3
= ((b3
<< 16) | (b3
>> (64 - 16))) ^ b10
;
2001 b7
= ((b7
<< 25) | (b7
>> (64 - 25))) ^ b12
;
2005 b1
= ((b1
<< 41) | (b1
>> (64 - 41))) ^ b0
;
2009 b3
= ((b3
<< 9) | (b3
>> (64 - 9))) ^ b2
;
2013 b5
= ((b5
<< 37) | (b5
>> (64 - 37))) ^ b4
;
2017 b7
= ((b7
<< 31) | (b7
>> (64 - 31))) ^ b6
;
2021 b9
= ((b9
<< 12) | (b9
>> (64 - 12))) ^ b8
;
2025 b11
= ((b11
<< 47) | (b11
>> (64 - 47))) ^ b10
;
2029 b13
= ((b13
<< 44) | (b13
>> (64 - 44))) ^ b12
;
2032 b14
+= b15
+ k16
+ t2
;
2033 b15
= ((b15
<< 30) | (b15
>> (64 - 30))) ^ b14
;
2036 b9
= ((b9
<< 16) | (b9
>> (64 - 16))) ^ b0
;
2039 b13
= ((b13
<< 34) | (b13
>> (64 - 34))) ^ b2
;
2042 b11
= ((b11
<< 56) | (b11
>> (64 - 56))) ^ b6
;
2045 b15
= ((b15
<< 51) | (b15
>> (64 - 51))) ^ b4
;
2048 b7
= ((b7
<< 4) | (b7
>> (64 - 4))) ^ b10
;
2051 b3
= ((b3
<< 53) | (b3
>> (64 - 53))) ^ b12
;
2054 b5
= ((b5
<< 42) | (b5
>> (64 - 42))) ^ b14
;
2057 b1
= ((b1
<< 41) | (b1
>> (64 - 41))) ^ b8
;
2060 b7
= ((b7
<< 31) | (b7
>> (64 - 31))) ^ b0
;
2063 b5
= ((b5
<< 44) | (b5
>> (64 - 44))) ^ b2
;
2066 b3
= ((b3
<< 47) | (b3
>> (64 - 47))) ^ b4
;
2069 b1
= ((b1
<< 46) | (b1
>> (64 - 46))) ^ b6
;
2072 b15
= ((b15
<< 19) | (b15
>> (64 - 19))) ^ b12
;
2075 b13
= ((b13
<< 42) | (b13
>> (64 - 42))) ^ b14
;
2078 b11
= ((b11
<< 44) | (b11
>> (64 - 44))) ^ b8
;
2081 b9
= ((b9
<< 25) | (b9
>> (64 - 25))) ^ b10
;
2084 b15
= ((b15
<< 9) | (b15
>> (64 - 9))) ^ b0
;
2087 b11
= ((b11
<< 48) | (b11
>> (64 - 48))) ^ b2
;
2090 b13
= ((b13
<< 35) | (b13
>> (64 - 35))) ^ b6
;
2093 b9
= ((b9
<< 52) | (b9
>> (64 - 52))) ^ b4
;
2096 b1
= ((b1
<< 23) | (b1
>> (64 - 23))) ^ b14
;
2099 b5
= ((b5
<< 31) | (b5
>> (64 - 31))) ^ b8
;
2102 b3
= ((b3
<< 37) | (b3
>> (64 - 37))) ^ b10
;
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];
2165 b7
= (tmp
>> 20) | (tmp
<< (64 - 20));
2169 b3
= (tmp
>> 37) | (tmp
<< (64 - 37));
2173 b5
= (tmp
>> 31) | (tmp
<< (64 - 31));
2177 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
2181 b9
= (tmp
>> 52) | (tmp
<< (64 - 52));
2185 b13
= (tmp
>> 35) | (tmp
<< (64 - 35));
2189 b11
= (tmp
>> 48) | (tmp
<< (64 - 48));
2193 b15
= (tmp
>> 9) | (tmp
<< (64 - 9));
2197 b9
= (tmp
>> 25) | (tmp
<< (64 - 25));
2201 b11
= (tmp
>> 44) | (tmp
<< (64 - 44));
2205 b13
= (tmp
>> 42) | (tmp
<< (64 - 42));
2209 b15
= (tmp
>> 19) | (tmp
<< (64 - 19));
2213 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
2217 b3
= (tmp
>> 47) | (tmp
<< (64 - 47));
2221 b5
= (tmp
>> 44) | (tmp
<< (64 - 44));
2225 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
2229 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
2233 b5
= (tmp
>> 42) | (tmp
<< (64 - 42));
2237 b3
= (tmp
>> 53) | (tmp
<< (64 - 53));
2241 b7
= (tmp
>> 4) | (tmp
<< (64 - 4));
2245 b15
= (tmp
>> 51) | (tmp
<< (64 - 51));
2249 b11
= (tmp
>> 56) | (tmp
<< (64 - 56));
2253 b13
= (tmp
>> 34) | (tmp
<< (64 - 34));
2257 b9
= (tmp
>> 16) | (tmp
<< (64 - 16));
2261 b15
= (tmp
>> 30) | (tmp
<< (64 - 30));
2262 b14
-= b15
+ k16
+ t2
;
2266 b13
= (tmp
>> 44) | (tmp
<< (64 - 44));
2271 b11
= (tmp
>> 47) | (tmp
<< (64 - 47));
2276 b9
= (tmp
>> 12) | (tmp
<< (64 - 12));
2281 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
2286 b5
= (tmp
>> 37) | (tmp
<< (64 - 37));
2291 b3
= (tmp
>> 9) | (tmp
<< (64 - 9));
2296 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
2301 b7
= (tmp
>> 25) | (tmp
<< (64 - 25));
2305 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
2309 b5
= (tmp
>> 28) | (tmp
<< (64 - 28));
2313 b1
= (tmp
>> 47) | (tmp
<< (64 - 47));
2317 b9
= (tmp
>> 41) | (tmp
<< (64 - 41));
2321 b13
= (tmp
>> 48) | (tmp
<< (64 - 48));
2325 b11
= (tmp
>> 20) | (tmp
<< (64 - 20));
2329 b15
= (tmp
>> 5) | (tmp
<< (64 - 5));
2333 b9
= (tmp
>> 17) | (tmp
<< (64 - 17));
2337 b11
= (tmp
>> 59) | (tmp
<< (64 - 59));
2341 b13
= (tmp
>> 41) | (tmp
<< (64 - 41));
2345 b15
= (tmp
>> 34) | (tmp
<< (64 - 34));
2349 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
2353 b3
= (tmp
>> 51) | (tmp
<< (64 - 51));
2357 b5
= (tmp
>> 4) | (tmp
<< (64 - 4));
2361 b7
= (tmp
>> 33) | (tmp
<< (64 - 33));
2365 b1
= (tmp
>> 52) | (tmp
<< (64 - 52));
2369 b5
= (tmp
>> 23) | (tmp
<< (64 - 23));
2373 b3
= (tmp
>> 18) | (tmp
<< (64 - 18));
2377 b7
= (tmp
>> 49) | (tmp
<< (64 - 49));
2381 b15
= (tmp
>> 55) | (tmp
<< (64 - 55));
2385 b11
= (tmp
>> 10) | (tmp
<< (64 - 10));
2389 b13
= (tmp
>> 19) | (tmp
<< (64 - 19));
2393 b9
= (tmp
>> 38) | (tmp
<< (64 - 38));
2397 b15
= (tmp
>> 37) | (tmp
<< (64 - 37));
2398 b14
-= b15
+ k15
+ t1
;
2402 b13
= (tmp
>> 22) | (tmp
<< (64 - 22));
2407 b11
= (tmp
>> 17) | (tmp
<< (64 - 17));
2412 b9
= (tmp
>> 8) | (tmp
<< (64 - 8));
2417 b7
= (tmp
>> 47) | (tmp
<< (64 - 47));
2422 b5
= (tmp
>> 8) | (tmp
<< (64 - 8));
2427 b3
= (tmp
>> 13) | (tmp
<< (64 - 13));
2432 b1
= (tmp
>> 24) | (tmp
<< (64 - 24));
2437 b7
= (tmp
>> 20) | (tmp
<< (64 - 20));
2441 b3
= (tmp
>> 37) | (tmp
<< (64 - 37));
2445 b5
= (tmp
>> 31) | (tmp
<< (64 - 31));
2449 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
2453 b9
= (tmp
>> 52) | (tmp
<< (64 - 52));
2457 b13
= (tmp
>> 35) | (tmp
<< (64 - 35));
2461 b11
= (tmp
>> 48) | (tmp
<< (64 - 48));
2465 b15
= (tmp
>> 9) | (tmp
<< (64 - 9));
2469 b9
= (tmp
>> 25) | (tmp
<< (64 - 25));
2473 b11
= (tmp
>> 44) | (tmp
<< (64 - 44));
2477 b13
= (tmp
>> 42) | (tmp
<< (64 - 42));
2481 b15
= (tmp
>> 19) | (tmp
<< (64 - 19));
2485 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
2489 b3
= (tmp
>> 47) | (tmp
<< (64 - 47));
2493 b5
= (tmp
>> 44) | (tmp
<< (64 - 44));
2497 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
2501 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
2505 b5
= (tmp
>> 42) | (tmp
<< (64 - 42));
2509 b3
= (tmp
>> 53) | (tmp
<< (64 - 53));
2513 b7
= (tmp
>> 4) | (tmp
<< (64 - 4));
2517 b15
= (tmp
>> 51) | (tmp
<< (64 - 51));
2521 b11
= (tmp
>> 56) | (tmp
<< (64 - 56));
2525 b13
= (tmp
>> 34) | (tmp
<< (64 - 34));
2529 b9
= (tmp
>> 16) | (tmp
<< (64 - 16));
2533 b15
= (tmp
>> 30) | (tmp
<< (64 - 30));
2534 b14
-= b15
+ k14
+ t0
;
2538 b13
= (tmp
>> 44) | (tmp
<< (64 - 44));
2543 b11
= (tmp
>> 47) | (tmp
<< (64 - 47));
2548 b9
= (tmp
>> 12) | (tmp
<< (64 - 12));
2553 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
2558 b5
= (tmp
>> 37) | (tmp
<< (64 - 37));
2563 b3
= (tmp
>> 9) | (tmp
<< (64 - 9));
2568 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
2573 b7
= (tmp
>> 25) | (tmp
<< (64 - 25));
2577 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
2581 b5
= (tmp
>> 28) | (tmp
<< (64 - 28));
2585 b1
= (tmp
>> 47) | (tmp
<< (64 - 47));
2589 b9
= (tmp
>> 41) | (tmp
<< (64 - 41));
2593 b13
= (tmp
>> 48) | (tmp
<< (64 - 48));
2597 b11
= (tmp
>> 20) | (tmp
<< (64 - 20));
2601 b15
= (tmp
>> 5) | (tmp
<< (64 - 5));
2605 b9
= (tmp
>> 17) | (tmp
<< (64 - 17));
2609 b11
= (tmp
>> 59) | (tmp
<< (64 - 59));
2613 b13
= (tmp
>> 41) | (tmp
<< (64 - 41));
2617 b15
= (tmp
>> 34) | (tmp
<< (64 - 34));
2621 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
2625 b3
= (tmp
>> 51) | (tmp
<< (64 - 51));
2629 b5
= (tmp
>> 4) | (tmp
<< (64 - 4));
2633 b7
= (tmp
>> 33) | (tmp
<< (64 - 33));
2637 b1
= (tmp
>> 52) | (tmp
<< (64 - 52));
2641 b5
= (tmp
>> 23) | (tmp
<< (64 - 23));
2645 b3
= (tmp
>> 18) | (tmp
<< (64 - 18));
2649 b7
= (tmp
>> 49) | (tmp
<< (64 - 49));
2653 b15
= (tmp
>> 55) | (tmp
<< (64 - 55));
2657 b11
= (tmp
>> 10) | (tmp
<< (64 - 10));
2661 b13
= (tmp
>> 19) | (tmp
<< (64 - 19));
2665 b9
= (tmp
>> 38) | (tmp
<< (64 - 38));
2669 b15
= (tmp
>> 37) | (tmp
<< (64 - 37));
2670 b14
-= b15
+ k13
+ t2
;
2674 b13
= (tmp
>> 22) | (tmp
<< (64 - 22));
2679 b11
= (tmp
>> 17) | (tmp
<< (64 - 17));
2684 b9
= (tmp
>> 8) | (tmp
<< (64 - 8));
2689 b7
= (tmp
>> 47) | (tmp
<< (64 - 47));
2694 b5
= (tmp
>> 8) | (tmp
<< (64 - 8));
2699 b3
= (tmp
>> 13) | (tmp
<< (64 - 13));
2704 b1
= (tmp
>> 24) | (tmp
<< (64 - 24));
2709 b7
= (tmp
>> 20) | (tmp
<< (64 - 20));
2713 b3
= (tmp
>> 37) | (tmp
<< (64 - 37));
2717 b5
= (tmp
>> 31) | (tmp
<< (64 - 31));
2721 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
2725 b9
= (tmp
>> 52) | (tmp
<< (64 - 52));
2729 b13
= (tmp
>> 35) | (tmp
<< (64 - 35));
2733 b11
= (tmp
>> 48) | (tmp
<< (64 - 48));
2737 b15
= (tmp
>> 9) | (tmp
<< (64 - 9));
2741 b9
= (tmp
>> 25) | (tmp
<< (64 - 25));
2745 b11
= (tmp
>> 44) | (tmp
<< (64 - 44));
2749 b13
= (tmp
>> 42) | (tmp
<< (64 - 42));
2753 b15
= (tmp
>> 19) | (tmp
<< (64 - 19));
2757 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
2761 b3
= (tmp
>> 47) | (tmp
<< (64 - 47));
2765 b5
= (tmp
>> 44) | (tmp
<< (64 - 44));
2769 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
2773 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
2777 b5
= (tmp
>> 42) | (tmp
<< (64 - 42));
2781 b3
= (tmp
>> 53) | (tmp
<< (64 - 53));
2785 b7
= (tmp
>> 4) | (tmp
<< (64 - 4));
2789 b15
= (tmp
>> 51) | (tmp
<< (64 - 51));
2793 b11
= (tmp
>> 56) | (tmp
<< (64 - 56));
2797 b13
= (tmp
>> 34) | (tmp
<< (64 - 34));
2801 b9
= (tmp
>> 16) | (tmp
<< (64 - 16));
2805 b15
= (tmp
>> 30) | (tmp
<< (64 - 30));
2806 b14
-= b15
+ k12
+ t1
;
2810 b13
= (tmp
>> 44) | (tmp
<< (64 - 44));
2815 b11
= (tmp
>> 47) | (tmp
<< (64 - 47));
2820 b9
= (tmp
>> 12) | (tmp
<< (64 - 12));
2825 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
2830 b5
= (tmp
>> 37) | (tmp
<< (64 - 37));
2835 b3
= (tmp
>> 9) | (tmp
<< (64 - 9));
2840 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
2845 b7
= (tmp
>> 25) | (tmp
<< (64 - 25));
2849 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
2853 b5
= (tmp
>> 28) | (tmp
<< (64 - 28));
2857 b1
= (tmp
>> 47) | (tmp
<< (64 - 47));
2861 b9
= (tmp
>> 41) | (tmp
<< (64 - 41));
2865 b13
= (tmp
>> 48) | (tmp
<< (64 - 48));
2869 b11
= (tmp
>> 20) | (tmp
<< (64 - 20));
2873 b15
= (tmp
>> 5) | (tmp
<< (64 - 5));
2877 b9
= (tmp
>> 17) | (tmp
<< (64 - 17));
2881 b11
= (tmp
>> 59) | (tmp
<< (64 - 59));
2885 b13
= (tmp
>> 41) | (tmp
<< (64 - 41));
2889 b15
= (tmp
>> 34) | (tmp
<< (64 - 34));
2893 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
2897 b3
= (tmp
>> 51) | (tmp
<< (64 - 51));
2901 b5
= (tmp
>> 4) | (tmp
<< (64 - 4));
2905 b7
= (tmp
>> 33) | (tmp
<< (64 - 33));
2909 b1
= (tmp
>> 52) | (tmp
<< (64 - 52));
2913 b5
= (tmp
>> 23) | (tmp
<< (64 - 23));
2917 b3
= (tmp
>> 18) | (tmp
<< (64 - 18));
2921 b7
= (tmp
>> 49) | (tmp
<< (64 - 49));
2925 b15
= (tmp
>> 55) | (tmp
<< (64 - 55));
2929 b11
= (tmp
>> 10) | (tmp
<< (64 - 10));
2933 b13
= (tmp
>> 19) | (tmp
<< (64 - 19));
2937 b9
= (tmp
>> 38) | (tmp
<< (64 - 38));
2941 b15
= (tmp
>> 37) | (tmp
<< (64 - 37));
2942 b14
-= b15
+ k11
+ t0
;
2946 b13
= (tmp
>> 22) | (tmp
<< (64 - 22));
2951 b11
= (tmp
>> 17) | (tmp
<< (64 - 17));
2956 b9
= (tmp
>> 8) | (tmp
<< (64 - 8));
2961 b7
= (tmp
>> 47) | (tmp
<< (64 - 47));
2966 b5
= (tmp
>> 8) | (tmp
<< (64 - 8));
2971 b3
= (tmp
>> 13) | (tmp
<< (64 - 13));
2976 b1
= (tmp
>> 24) | (tmp
<< (64 - 24));
2981 b7
= (tmp
>> 20) | (tmp
<< (64 - 20));
2985 b3
= (tmp
>> 37) | (tmp
<< (64 - 37));
2989 b5
= (tmp
>> 31) | (tmp
<< (64 - 31));
2993 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
2997 b9
= (tmp
>> 52) | (tmp
<< (64 - 52));
3001 b13
= (tmp
>> 35) | (tmp
<< (64 - 35));
3005 b11
= (tmp
>> 48) | (tmp
<< (64 - 48));
3009 b15
= (tmp
>> 9) | (tmp
<< (64 - 9));
3013 b9
= (tmp
>> 25) | (tmp
<< (64 - 25));
3017 b11
= (tmp
>> 44) | (tmp
<< (64 - 44));
3021 b13
= (tmp
>> 42) | (tmp
<< (64 - 42));
3025 b15
= (tmp
>> 19) | (tmp
<< (64 - 19));
3029 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
3033 b3
= (tmp
>> 47) | (tmp
<< (64 - 47));
3037 b5
= (tmp
>> 44) | (tmp
<< (64 - 44));
3041 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
3045 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
3049 b5
= (tmp
>> 42) | (tmp
<< (64 - 42));
3053 b3
= (tmp
>> 53) | (tmp
<< (64 - 53));
3057 b7
= (tmp
>> 4) | (tmp
<< (64 - 4));
3061 b15
= (tmp
>> 51) | (tmp
<< (64 - 51));
3065 b11
= (tmp
>> 56) | (tmp
<< (64 - 56));
3069 b13
= (tmp
>> 34) | (tmp
<< (64 - 34));
3073 b9
= (tmp
>> 16) | (tmp
<< (64 - 16));
3077 b15
= (tmp
>> 30) | (tmp
<< (64 - 30));
3078 b14
-= b15
+ k10
+ t2
;
3082 b13
= (tmp
>> 44) | (tmp
<< (64 - 44));
3087 b11
= (tmp
>> 47) | (tmp
<< (64 - 47));
3092 b9
= (tmp
>> 12) | (tmp
<< (64 - 12));
3097 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
3102 b5
= (tmp
>> 37) | (tmp
<< (64 - 37));
3107 b3
= (tmp
>> 9) | (tmp
<< (64 - 9));
3112 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
3117 b7
= (tmp
>> 25) | (tmp
<< (64 - 25));
3121 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
3125 b5
= (tmp
>> 28) | (tmp
<< (64 - 28));
3129 b1
= (tmp
>> 47) | (tmp
<< (64 - 47));
3133 b9
= (tmp
>> 41) | (tmp
<< (64 - 41));
3137 b13
= (tmp
>> 48) | (tmp
<< (64 - 48));
3141 b11
= (tmp
>> 20) | (tmp
<< (64 - 20));
3145 b15
= (tmp
>> 5) | (tmp
<< (64 - 5));
3149 b9
= (tmp
>> 17) | (tmp
<< (64 - 17));
3153 b11
= (tmp
>> 59) | (tmp
<< (64 - 59));
3157 b13
= (tmp
>> 41) | (tmp
<< (64 - 41));
3161 b15
= (tmp
>> 34) | (tmp
<< (64 - 34));
3165 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
3169 b3
= (tmp
>> 51) | (tmp
<< (64 - 51));
3173 b5
= (tmp
>> 4) | (tmp
<< (64 - 4));
3177 b7
= (tmp
>> 33) | (tmp
<< (64 - 33));
3181 b1
= (tmp
>> 52) | (tmp
<< (64 - 52));
3185 b5
= (tmp
>> 23) | (tmp
<< (64 - 23));
3189 b3
= (tmp
>> 18) | (tmp
<< (64 - 18));
3193 b7
= (tmp
>> 49) | (tmp
<< (64 - 49));
3197 b15
= (tmp
>> 55) | (tmp
<< (64 - 55));
3201 b11
= (tmp
>> 10) | (tmp
<< (64 - 10));
3205 b13
= (tmp
>> 19) | (tmp
<< (64 - 19));
3209 b9
= (tmp
>> 38) | (tmp
<< (64 - 38));
3213 b15
= (tmp
>> 37) | (tmp
<< (64 - 37));
3214 b14
-= b15
+ k9
+ t1
;
3218 b13
= (tmp
>> 22) | (tmp
<< (64 - 22));
3223 b11
= (tmp
>> 17) | (tmp
<< (64 - 17));
3228 b9
= (tmp
>> 8) | (tmp
<< (64 - 8));
3233 b7
= (tmp
>> 47) | (tmp
<< (64 - 47));
3238 b5
= (tmp
>> 8) | (tmp
<< (64 - 8));
3243 b3
= (tmp
>> 13) | (tmp
<< (64 - 13));
3248 b1
= (tmp
>> 24) | (tmp
<< (64 - 24));
3253 b7
= (tmp
>> 20) | (tmp
<< (64 - 20));
3257 b3
= (tmp
>> 37) | (tmp
<< (64 - 37));
3261 b5
= (tmp
>> 31) | (tmp
<< (64 - 31));
3265 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
3269 b9
= (tmp
>> 52) | (tmp
<< (64 - 52));
3273 b13
= (tmp
>> 35) | (tmp
<< (64 - 35));
3277 b11
= (tmp
>> 48) | (tmp
<< (64 - 48));
3281 b15
= (tmp
>> 9) | (tmp
<< (64 - 9));
3285 b9
= (tmp
>> 25) | (tmp
<< (64 - 25));
3289 b11
= (tmp
>> 44) | (tmp
<< (64 - 44));
3293 b13
= (tmp
>> 42) | (tmp
<< (64 - 42));
3297 b15
= (tmp
>> 19) | (tmp
<< (64 - 19));
3301 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
3305 b3
= (tmp
>> 47) | (tmp
<< (64 - 47));
3309 b5
= (tmp
>> 44) | (tmp
<< (64 - 44));
3313 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
3317 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
3321 b5
= (tmp
>> 42) | (tmp
<< (64 - 42));
3325 b3
= (tmp
>> 53) | (tmp
<< (64 - 53));
3329 b7
= (tmp
>> 4) | (tmp
<< (64 - 4));
3333 b15
= (tmp
>> 51) | (tmp
<< (64 - 51));
3337 b11
= (tmp
>> 56) | (tmp
<< (64 - 56));
3341 b13
= (tmp
>> 34) | (tmp
<< (64 - 34));
3345 b9
= (tmp
>> 16) | (tmp
<< (64 - 16));
3349 b15
= (tmp
>> 30) | (tmp
<< (64 - 30));
3350 b14
-= b15
+ k8
+ t0
;
3354 b13
= (tmp
>> 44) | (tmp
<< (64 - 44));
3359 b11
= (tmp
>> 47) | (tmp
<< (64 - 47));
3364 b9
= (tmp
>> 12) | (tmp
<< (64 - 12));
3369 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
3374 b5
= (tmp
>> 37) | (tmp
<< (64 - 37));
3379 b3
= (tmp
>> 9) | (tmp
<< (64 - 9));
3384 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
3389 b7
= (tmp
>> 25) | (tmp
<< (64 - 25));
3393 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
3397 b5
= (tmp
>> 28) | (tmp
<< (64 - 28));
3401 b1
= (tmp
>> 47) | (tmp
<< (64 - 47));
3405 b9
= (tmp
>> 41) | (tmp
<< (64 - 41));
3409 b13
= (tmp
>> 48) | (tmp
<< (64 - 48));
3413 b11
= (tmp
>> 20) | (tmp
<< (64 - 20));
3417 b15
= (tmp
>> 5) | (tmp
<< (64 - 5));
3421 b9
= (tmp
>> 17) | (tmp
<< (64 - 17));
3425 b11
= (tmp
>> 59) | (tmp
<< (64 - 59));
3429 b13
= (tmp
>> 41) | (tmp
<< (64 - 41));
3433 b15
= (tmp
>> 34) | (tmp
<< (64 - 34));
3437 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
3441 b3
= (tmp
>> 51) | (tmp
<< (64 - 51));
3445 b5
= (tmp
>> 4) | (tmp
<< (64 - 4));
3449 b7
= (tmp
>> 33) | (tmp
<< (64 - 33));
3453 b1
= (tmp
>> 52) | (tmp
<< (64 - 52));
3457 b5
= (tmp
>> 23) | (tmp
<< (64 - 23));
3461 b3
= (tmp
>> 18) | (tmp
<< (64 - 18));
3465 b7
= (tmp
>> 49) | (tmp
<< (64 - 49));
3469 b15
= (tmp
>> 55) | (tmp
<< (64 - 55));
3473 b11
= (tmp
>> 10) | (tmp
<< (64 - 10));
3477 b13
= (tmp
>> 19) | (tmp
<< (64 - 19));
3481 b9
= (tmp
>> 38) | (tmp
<< (64 - 38));
3485 b15
= (tmp
>> 37) | (tmp
<< (64 - 37));
3486 b14
-= b15
+ k7
+ t2
;
3490 b13
= (tmp
>> 22) | (tmp
<< (64 - 22));
3495 b11
= (tmp
>> 17) | (tmp
<< (64 - 17));
3500 b9
= (tmp
>> 8) | (tmp
<< (64 - 8));
3505 b7
= (tmp
>> 47) | (tmp
<< (64 - 47));
3510 b5
= (tmp
>> 8) | (tmp
<< (64 - 8));
3515 b3
= (tmp
>> 13) | (tmp
<< (64 - 13));
3520 b1
= (tmp
>> 24) | (tmp
<< (64 - 24));
3525 b7
= (tmp
>> 20) | (tmp
<< (64 - 20));
3529 b3
= (tmp
>> 37) | (tmp
<< (64 - 37));
3533 b5
= (tmp
>> 31) | (tmp
<< (64 - 31));
3537 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
3541 b9
= (tmp
>> 52) | (tmp
<< (64 - 52));
3545 b13
= (tmp
>> 35) | (tmp
<< (64 - 35));
3549 b11
= (tmp
>> 48) | (tmp
<< (64 - 48));
3553 b15
= (tmp
>> 9) | (tmp
<< (64 - 9));
3557 b9
= (tmp
>> 25) | (tmp
<< (64 - 25));
3561 b11
= (tmp
>> 44) | (tmp
<< (64 - 44));
3565 b13
= (tmp
>> 42) | (tmp
<< (64 - 42));
3569 b15
= (tmp
>> 19) | (tmp
<< (64 - 19));
3573 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
3577 b3
= (tmp
>> 47) | (tmp
<< (64 - 47));
3581 b5
= (tmp
>> 44) | (tmp
<< (64 - 44));
3585 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
3589 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
3593 b5
= (tmp
>> 42) | (tmp
<< (64 - 42));
3597 b3
= (tmp
>> 53) | (tmp
<< (64 - 53));
3601 b7
= (tmp
>> 4) | (tmp
<< (64 - 4));
3605 b15
= (tmp
>> 51) | (tmp
<< (64 - 51));
3609 b11
= (tmp
>> 56) | (tmp
<< (64 - 56));
3613 b13
= (tmp
>> 34) | (tmp
<< (64 - 34));
3617 b9
= (tmp
>> 16) | (tmp
<< (64 - 16));
3621 b15
= (tmp
>> 30) | (tmp
<< (64 - 30));
3622 b14
-= b15
+ k6
+ t1
;
3626 b13
= (tmp
>> 44) | (tmp
<< (64 - 44));
3631 b11
= (tmp
>> 47) | (tmp
<< (64 - 47));
3636 b9
= (tmp
>> 12) | (tmp
<< (64 - 12));
3641 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
3646 b5
= (tmp
>> 37) | (tmp
<< (64 - 37));
3651 b3
= (tmp
>> 9) | (tmp
<< (64 - 9));
3656 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
3661 b7
= (tmp
>> 25) | (tmp
<< (64 - 25));
3665 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
3669 b5
= (tmp
>> 28) | (tmp
<< (64 - 28));
3673 b1
= (tmp
>> 47) | (tmp
<< (64 - 47));
3677 b9
= (tmp
>> 41) | (tmp
<< (64 - 41));
3681 b13
= (tmp
>> 48) | (tmp
<< (64 - 48));
3685 b11
= (tmp
>> 20) | (tmp
<< (64 - 20));
3689 b15
= (tmp
>> 5) | (tmp
<< (64 - 5));
3693 b9
= (tmp
>> 17) | (tmp
<< (64 - 17));
3697 b11
= (tmp
>> 59) | (tmp
<< (64 - 59));
3701 b13
= (tmp
>> 41) | (tmp
<< (64 - 41));
3705 b15
= (tmp
>> 34) | (tmp
<< (64 - 34));
3709 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
3713 b3
= (tmp
>> 51) | (tmp
<< (64 - 51));
3717 b5
= (tmp
>> 4) | (tmp
<< (64 - 4));
3721 b7
= (tmp
>> 33) | (tmp
<< (64 - 33));
3725 b1
= (tmp
>> 52) | (tmp
<< (64 - 52));
3729 b5
= (tmp
>> 23) | (tmp
<< (64 - 23));
3733 b3
= (tmp
>> 18) | (tmp
<< (64 - 18));
3737 b7
= (tmp
>> 49) | (tmp
<< (64 - 49));
3741 b15
= (tmp
>> 55) | (tmp
<< (64 - 55));
3745 b11
= (tmp
>> 10) | (tmp
<< (64 - 10));
3749 b13
= (tmp
>> 19) | (tmp
<< (64 - 19));
3753 b9
= (tmp
>> 38) | (tmp
<< (64 - 38));
3757 b15
= (tmp
>> 37) | (tmp
<< (64 - 37));
3758 b14
-= b15
+ k5
+ t0
;
3762 b13
= (tmp
>> 22) | (tmp
<< (64 - 22));
3767 b11
= (tmp
>> 17) | (tmp
<< (64 - 17));
3772 b9
= (tmp
>> 8) | (tmp
<< (64 - 8));
3777 b7
= (tmp
>> 47) | (tmp
<< (64 - 47));
3782 b5
= (tmp
>> 8) | (tmp
<< (64 - 8));
3787 b3
= (tmp
>> 13) | (tmp
<< (64 - 13));
3792 b1
= (tmp
>> 24) | (tmp
<< (64 - 24));
3797 b7
= (tmp
>> 20) | (tmp
<< (64 - 20));
3801 b3
= (tmp
>> 37) | (tmp
<< (64 - 37));
3805 b5
= (tmp
>> 31) | (tmp
<< (64 - 31));
3809 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
3813 b9
= (tmp
>> 52) | (tmp
<< (64 - 52));
3817 b13
= (tmp
>> 35) | (tmp
<< (64 - 35));
3821 b11
= (tmp
>> 48) | (tmp
<< (64 - 48));
3825 b15
= (tmp
>> 9) | (tmp
<< (64 - 9));
3829 b9
= (tmp
>> 25) | (tmp
<< (64 - 25));
3833 b11
= (tmp
>> 44) | (tmp
<< (64 - 44));
3837 b13
= (tmp
>> 42) | (tmp
<< (64 - 42));
3841 b15
= (tmp
>> 19) | (tmp
<< (64 - 19));
3845 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
3849 b3
= (tmp
>> 47) | (tmp
<< (64 - 47));
3853 b5
= (tmp
>> 44) | (tmp
<< (64 - 44));
3857 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
3861 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
3865 b5
= (tmp
>> 42) | (tmp
<< (64 - 42));
3869 b3
= (tmp
>> 53) | (tmp
<< (64 - 53));
3873 b7
= (tmp
>> 4) | (tmp
<< (64 - 4));
3877 b15
= (tmp
>> 51) | (tmp
<< (64 - 51));
3881 b11
= (tmp
>> 56) | (tmp
<< (64 - 56));
3885 b13
= (tmp
>> 34) | (tmp
<< (64 - 34));
3889 b9
= (tmp
>> 16) | (tmp
<< (64 - 16));
3893 b15
= (tmp
>> 30) | (tmp
<< (64 - 30));
3894 b14
-= b15
+ k4
+ t2
;
3898 b13
= (tmp
>> 44) | (tmp
<< (64 - 44));
3903 b11
= (tmp
>> 47) | (tmp
<< (64 - 47));
3908 b9
= (tmp
>> 12) | (tmp
<< (64 - 12));
3913 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
3918 b5
= (tmp
>> 37) | (tmp
<< (64 - 37));
3923 b3
= (tmp
>> 9) | (tmp
<< (64 - 9));
3928 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
3933 b7
= (tmp
>> 25) | (tmp
<< (64 - 25));
3937 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
3941 b5
= (tmp
>> 28) | (tmp
<< (64 - 28));
3945 b1
= (tmp
>> 47) | (tmp
<< (64 - 47));
3949 b9
= (tmp
>> 41) | (tmp
<< (64 - 41));
3953 b13
= (tmp
>> 48) | (tmp
<< (64 - 48));
3957 b11
= (tmp
>> 20) | (tmp
<< (64 - 20));
3961 b15
= (tmp
>> 5) | (tmp
<< (64 - 5));
3965 b9
= (tmp
>> 17) | (tmp
<< (64 - 17));
3969 b11
= (tmp
>> 59) | (tmp
<< (64 - 59));
3973 b13
= (tmp
>> 41) | (tmp
<< (64 - 41));
3977 b15
= (tmp
>> 34) | (tmp
<< (64 - 34));
3981 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
3985 b3
= (tmp
>> 51) | (tmp
<< (64 - 51));
3989 b5
= (tmp
>> 4) | (tmp
<< (64 - 4));
3993 b7
= (tmp
>> 33) | (tmp
<< (64 - 33));
3997 b1
= (tmp
>> 52) | (tmp
<< (64 - 52));
4001 b5
= (tmp
>> 23) | (tmp
<< (64 - 23));
4005 b3
= (tmp
>> 18) | (tmp
<< (64 - 18));
4009 b7
= (tmp
>> 49) | (tmp
<< (64 - 49));
4013 b15
= (tmp
>> 55) | (tmp
<< (64 - 55));
4017 b11
= (tmp
>> 10) | (tmp
<< (64 - 10));
4021 b13
= (tmp
>> 19) | (tmp
<< (64 - 19));
4025 b9
= (tmp
>> 38) | (tmp
<< (64 - 38));
4029 b15
= (tmp
>> 37) | (tmp
<< (64 - 37));
4030 b14
-= b15
+ k3
+ t1
;
4034 b13
= (tmp
>> 22) | (tmp
<< (64 - 22));
4039 b11
= (tmp
>> 17) | (tmp
<< (64 - 17));
4044 b9
= (tmp
>> 8) | (tmp
<< (64 - 8));
4049 b7
= (tmp
>> 47) | (tmp
<< (64 - 47));
4054 b5
= (tmp
>> 8) | (tmp
<< (64 - 8));
4059 b3
= (tmp
>> 13) | (tmp
<< (64 - 13));
4064 b1
= (tmp
>> 24) | (tmp
<< (64 - 24));
4069 b7
= (tmp
>> 20) | (tmp
<< (64 - 20));
4073 b3
= (tmp
>> 37) | (tmp
<< (64 - 37));
4077 b5
= (tmp
>> 31) | (tmp
<< (64 - 31));
4081 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
4085 b9
= (tmp
>> 52) | (tmp
<< (64 - 52));
4089 b13
= (tmp
>> 35) | (tmp
<< (64 - 35));
4093 b11
= (tmp
>> 48) | (tmp
<< (64 - 48));
4097 b15
= (tmp
>> 9) | (tmp
<< (64 - 9));
4101 b9
= (tmp
>> 25) | (tmp
<< (64 - 25));
4105 b11
= (tmp
>> 44) | (tmp
<< (64 - 44));
4109 b13
= (tmp
>> 42) | (tmp
<< (64 - 42));
4113 b15
= (tmp
>> 19) | (tmp
<< (64 - 19));
4117 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
4121 b3
= (tmp
>> 47) | (tmp
<< (64 - 47));
4125 b5
= (tmp
>> 44) | (tmp
<< (64 - 44));
4129 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
4133 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
4137 b5
= (tmp
>> 42) | (tmp
<< (64 - 42));
4141 b3
= (tmp
>> 53) | (tmp
<< (64 - 53));
4145 b7
= (tmp
>> 4) | (tmp
<< (64 - 4));
4149 b15
= (tmp
>> 51) | (tmp
<< (64 - 51));
4153 b11
= (tmp
>> 56) | (tmp
<< (64 - 56));
4157 b13
= (tmp
>> 34) | (tmp
<< (64 - 34));
4161 b9
= (tmp
>> 16) | (tmp
<< (64 - 16));
4165 b15
= (tmp
>> 30) | (tmp
<< (64 - 30));
4166 b14
-= b15
+ k2
+ t0
;
4170 b13
= (tmp
>> 44) | (tmp
<< (64 - 44));
4175 b11
= (tmp
>> 47) | (tmp
<< (64 - 47));
4180 b9
= (tmp
>> 12) | (tmp
<< (64 - 12));
4185 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
4190 b5
= (tmp
>> 37) | (tmp
<< (64 - 37));
4195 b3
= (tmp
>> 9) | (tmp
<< (64 - 9));
4200 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
4205 b7
= (tmp
>> 25) | (tmp
<< (64 - 25));
4209 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
4213 b5
= (tmp
>> 28) | (tmp
<< (64 - 28));
4217 b1
= (tmp
>> 47) | (tmp
<< (64 - 47));
4221 b9
= (tmp
>> 41) | (tmp
<< (64 - 41));
4225 b13
= (tmp
>> 48) | (tmp
<< (64 - 48));
4229 b11
= (tmp
>> 20) | (tmp
<< (64 - 20));
4233 b15
= (tmp
>> 5) | (tmp
<< (64 - 5));
4237 b9
= (tmp
>> 17) | (tmp
<< (64 - 17));
4241 b11
= (tmp
>> 59) | (tmp
<< (64 - 59));
4245 b13
= (tmp
>> 41) | (tmp
<< (64 - 41));
4249 b15
= (tmp
>> 34) | (tmp
<< (64 - 34));
4253 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
4257 b3
= (tmp
>> 51) | (tmp
<< (64 - 51));
4261 b5
= (tmp
>> 4) | (tmp
<< (64 - 4));
4265 b7
= (tmp
>> 33) | (tmp
<< (64 - 33));
4269 b1
= (tmp
>> 52) | (tmp
<< (64 - 52));
4273 b5
= (tmp
>> 23) | (tmp
<< (64 - 23));
4277 b3
= (tmp
>> 18) | (tmp
<< (64 - 18));
4281 b7
= (tmp
>> 49) | (tmp
<< (64 - 49));
4285 b15
= (tmp
>> 55) | (tmp
<< (64 - 55));
4289 b11
= (tmp
>> 10) | (tmp
<< (64 - 10));
4293 b13
= (tmp
>> 19) | (tmp
<< (64 - 19));
4297 b9
= (tmp
>> 38) | (tmp
<< (64 - 38));
4301 b15
= (tmp
>> 37) | (tmp
<< (64 - 37));
4302 b14
-= b15
+ k1
+ t2
;
4306 b13
= (tmp
>> 22) | (tmp
<< (64 - 22));
4311 b11
= (tmp
>> 17) | (tmp
<< (64 - 17));
4316 b9
= (tmp
>> 8) | (tmp
<< (64 - 8));
4321 b7
= (tmp
>> 47) | (tmp
<< (64 - 47));
4326 b5
= (tmp
>> 8) | (tmp
<< (64 - 8));
4331 b3
= (tmp
>> 13) | (tmp
<< (64 - 13));
4336 b1
= (tmp
>> 24) | (tmp
<< (64 - 24));
4341 b7
= (tmp
>> 20) | (tmp
<< (64 - 20));
4345 b3
= (tmp
>> 37) | (tmp
<< (64 - 37));
4349 b5
= (tmp
>> 31) | (tmp
<< (64 - 31));
4353 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
4357 b9
= (tmp
>> 52) | (tmp
<< (64 - 52));
4361 b13
= (tmp
>> 35) | (tmp
<< (64 - 35));
4365 b11
= (tmp
>> 48) | (tmp
<< (64 - 48));
4369 b15
= (tmp
>> 9) | (tmp
<< (64 - 9));
4373 b9
= (tmp
>> 25) | (tmp
<< (64 - 25));
4377 b11
= (tmp
>> 44) | (tmp
<< (64 - 44));
4381 b13
= (tmp
>> 42) | (tmp
<< (64 - 42));
4385 b15
= (tmp
>> 19) | (tmp
<< (64 - 19));
4389 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
4393 b3
= (tmp
>> 47) | (tmp
<< (64 - 47));
4397 b5
= (tmp
>> 44) | (tmp
<< (64 - 44));
4401 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
4405 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
4409 b5
= (tmp
>> 42) | (tmp
<< (64 - 42));
4413 b3
= (tmp
>> 53) | (tmp
<< (64 - 53));
4417 b7
= (tmp
>> 4) | (tmp
<< (64 - 4));
4421 b15
= (tmp
>> 51) | (tmp
<< (64 - 51));
4425 b11
= (tmp
>> 56) | (tmp
<< (64 - 56));
4429 b13
= (tmp
>> 34) | (tmp
<< (64 - 34));
4433 b9
= (tmp
>> 16) | (tmp
<< (64 - 16));
4437 b15
= (tmp
>> 30) | (tmp
<< (64 - 30));
4438 b14
-= b15
+ k0
+ t1
;
4442 b13
= (tmp
>> 44) | (tmp
<< (64 - 44));
4447 b11
= (tmp
>> 47) | (tmp
<< (64 - 47));
4452 b9
= (tmp
>> 12) | (tmp
<< (64 - 12));
4457 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
4462 b5
= (tmp
>> 37) | (tmp
<< (64 - 37));
4467 b3
= (tmp
>> 9) | (tmp
<< (64 - 9));
4472 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
4477 b7
= (tmp
>> 25) | (tmp
<< (64 - 25));
4481 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
4485 b5
= (tmp
>> 28) | (tmp
<< (64 - 28));
4489 b1
= (tmp
>> 47) | (tmp
<< (64 - 47));
4493 b9
= (tmp
>> 41) | (tmp
<< (64 - 41));
4497 b13
= (tmp
>> 48) | (tmp
<< (64 - 48));
4501 b11
= (tmp
>> 20) | (tmp
<< (64 - 20));
4505 b15
= (tmp
>> 5) | (tmp
<< (64 - 5));
4509 b9
= (tmp
>> 17) | (tmp
<< (64 - 17));
4513 b11
= (tmp
>> 59) | (tmp
<< (64 - 59));
4517 b13
= (tmp
>> 41) | (tmp
<< (64 - 41));
4521 b15
= (tmp
>> 34) | (tmp
<< (64 - 34));
4525 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
4529 b3
= (tmp
>> 51) | (tmp
<< (64 - 51));
4533 b5
= (tmp
>> 4) | (tmp
<< (64 - 4));
4537 b7
= (tmp
>> 33) | (tmp
<< (64 - 33));
4541 b1
= (tmp
>> 52) | (tmp
<< (64 - 52));
4545 b5
= (tmp
>> 23) | (tmp
<< (64 - 23));
4549 b3
= (tmp
>> 18) | (tmp
<< (64 - 18));
4553 b7
= (tmp
>> 49) | (tmp
<< (64 - 49));
4557 b15
= (tmp
>> 55) | (tmp
<< (64 - 55));
4561 b11
= (tmp
>> 10) | (tmp
<< (64 - 10));
4565 b13
= (tmp
>> 19) | (tmp
<< (64 - 19));
4569 b9
= (tmp
>> 38) | (tmp
<< (64 - 38));
4573 b15
= (tmp
>> 37) | (tmp
<< (64 - 37));
4574 b14
-= b15
+ k16
+ t0
;
4578 b13
= (tmp
>> 22) | (tmp
<< (64 - 22));
4583 b11
= (tmp
>> 17) | (tmp
<< (64 - 17));
4588 b9
= (tmp
>> 8) | (tmp
<< (64 - 8));
4593 b7
= (tmp
>> 47) | (tmp
<< (64 - 47));
4598 b5
= (tmp
>> 8) | (tmp
<< (64 - 8));
4603 b3
= (tmp
>> 13) | (tmp
<< (64 - 13));
4608 b1
= (tmp
>> 24) | (tmp
<< (64 - 24));
4613 b7
= (tmp
>> 20) | (tmp
<< (64 - 20));
4617 b3
= (tmp
>> 37) | (tmp
<< (64 - 37));
4621 b5
= (tmp
>> 31) | (tmp
<< (64 - 31));
4625 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
4629 b9
= (tmp
>> 52) | (tmp
<< (64 - 52));
4633 b13
= (tmp
>> 35) | (tmp
<< (64 - 35));
4637 b11
= (tmp
>> 48) | (tmp
<< (64 - 48));
4641 b15
= (tmp
>> 9) | (tmp
<< (64 - 9));
4645 b9
= (tmp
>> 25) | (tmp
<< (64 - 25));
4649 b11
= (tmp
>> 44) | (tmp
<< (64 - 44));
4653 b13
= (tmp
>> 42) | (tmp
<< (64 - 42));
4657 b15
= (tmp
>> 19) | (tmp
<< (64 - 19));
4661 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
4665 b3
= (tmp
>> 47) | (tmp
<< (64 - 47));
4669 b5
= (tmp
>> 44) | (tmp
<< (64 - 44));
4673 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
4677 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
4681 b5
= (tmp
>> 42) | (tmp
<< (64 - 42));
4685 b3
= (tmp
>> 53) | (tmp
<< (64 - 53));
4689 b7
= (tmp
>> 4) | (tmp
<< (64 - 4));
4693 b15
= (tmp
>> 51) | (tmp
<< (64 - 51));
4697 b11
= (tmp
>> 56) | (tmp
<< (64 - 56));
4701 b13
= (tmp
>> 34) | (tmp
<< (64 - 34));
4705 b9
= (tmp
>> 16) | (tmp
<< (64 - 16));
4709 b15
= (tmp
>> 30) | (tmp
<< (64 - 30));
4710 b14
-= b15
+ k15
+ t2
;
4714 b13
= (tmp
>> 44) | (tmp
<< (64 - 44));
4719 b11
= (tmp
>> 47) | (tmp
<< (64 - 47));
4724 b9
= (tmp
>> 12) | (tmp
<< (64 - 12));
4729 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
4734 b5
= (tmp
>> 37) | (tmp
<< (64 - 37));
4739 b3
= (tmp
>> 9) | (tmp
<< (64 - 9));
4744 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
4749 b7
= (tmp
>> 25) | (tmp
<< (64 - 25));
4753 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
4757 b5
= (tmp
>> 28) | (tmp
<< (64 - 28));
4761 b1
= (tmp
>> 47) | (tmp
<< (64 - 47));
4765 b9
= (tmp
>> 41) | (tmp
<< (64 - 41));
4769 b13
= (tmp
>> 48) | (tmp
<< (64 - 48));
4773 b11
= (tmp
>> 20) | (tmp
<< (64 - 20));
4777 b15
= (tmp
>> 5) | (tmp
<< (64 - 5));
4781 b9
= (tmp
>> 17) | (tmp
<< (64 - 17));
4785 b11
= (tmp
>> 59) | (tmp
<< (64 - 59));
4789 b13
= (tmp
>> 41) | (tmp
<< (64 - 41));
4793 b15
= (tmp
>> 34) | (tmp
<< (64 - 34));
4797 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
4801 b3
= (tmp
>> 51) | (tmp
<< (64 - 51));
4805 b5
= (tmp
>> 4) | (tmp
<< (64 - 4));
4809 b7
= (tmp
>> 33) | (tmp
<< (64 - 33));
4813 b1
= (tmp
>> 52) | (tmp
<< (64 - 52));
4817 b5
= (tmp
>> 23) | (tmp
<< (64 - 23));
4821 b3
= (tmp
>> 18) | (tmp
<< (64 - 18));
4825 b7
= (tmp
>> 49) | (tmp
<< (64 - 49));
4829 b15
= (tmp
>> 55) | (tmp
<< (64 - 55));
4833 b11
= (tmp
>> 10) | (tmp
<< (64 - 10));
4837 b13
= (tmp
>> 19) | (tmp
<< (64 - 19));
4841 b9
= (tmp
>> 38) | (tmp
<< (64 - 38));
4845 b15
= (tmp
>> 37) | (tmp
<< (64 - 37));
4846 b14
-= b15
+ k14
+ t1
;
4850 b13
= (tmp
>> 22) | (tmp
<< (64 - 22));
4855 b11
= (tmp
>> 17) | (tmp
<< (64 - 17));
4860 b9
= (tmp
>> 8) | (tmp
<< (64 - 8));
4865 b7
= (tmp
>> 47) | (tmp
<< (64 - 47));
4870 b5
= (tmp
>> 8) | (tmp
<< (64 - 8));
4875 b3
= (tmp
>> 13) | (tmp
<< (64 - 13));
4880 b1
= (tmp
>> 24) | (tmp
<< (64 - 24));