]>
git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blob - drivers/staging/skein/threefish_block.c
1 #include <linux/bitops.h>
2 #include "threefish_api.h"
4 void threefish_encrypt_256(struct threefish_key
*key_ctx
, u64
*input
,
7 u64 b0
= input
[0], b1
= input
[1],
8 b2
= input
[2], b3
= input
[3];
9 u64 k0
= key_ctx
->key
[0], k1
= key_ctx
->key
[1],
10 k2
= key_ctx
->key
[2], k3
= key_ctx
->key
[3],
12 u64 t0
= key_ctx
->tweak
[0], t1
= key_ctx
->tweak
[1],
13 t2
= key_ctx
->tweak
[2];
17 b1
= rol64(b1
, 14) ^ b0
;
21 b3
= rol64(b3
, 16) ^ b2
;
24 b3
= rol64(b3
, 52) ^ b0
;
27 b1
= rol64(b1
, 57) ^ b2
;
30 b1
= rol64(b1
, 23) ^ b0
;
33 b3
= rol64(b3
, 40) ^ b2
;
36 b3
= rol64(b3
, 5) ^ b0
;
39 b1
= rol64(b1
, 37) ^ b2
;
43 b1
= rol64(b1
, 25) ^ b0
;
47 b3
= rol64(b3
, 33) ^ b2
;
50 b3
= rol64(b3
, 46) ^ b0
;
53 b1
= rol64(b1
, 12) ^ b2
;
56 b1
= rol64(b1
, 58) ^ b0
;
59 b3
= rol64(b3
, 22) ^ b2
;
62 b3
= rol64(b3
, 32) ^ b0
;
65 b1
= rol64(b1
, 32) ^ b2
;
70 b1
= rol64(b1
, 14) ^ b0
;
74 b3
= rol64(b3
, 16) ^ b2
;
77 b3
= rol64(b3
, 52) ^ b0
;
80 b1
= rol64(b1
, 57) ^ b2
;
83 b1
= rol64(b1
, 23) ^ b0
;
86 b3
= rol64(b3
, 40) ^ b2
;
89 b3
= rol64(b3
, 5) ^ b0
;
92 b1
= rol64(b1
, 37) ^ b2
;
96 b1
= rol64(b1
, 25) ^ b0
;
100 b3
= rol64(b3
, 33) ^ b2
;
103 b3
= rol64(b3
, 46) ^ b0
;
106 b1
= rol64(b1
, 12) ^ b2
;
109 b1
= rol64(b1
, 58) ^ b0
;
112 b3
= rol64(b3
, 22) ^ b2
;
115 b3
= rol64(b3
, 32) ^ b0
;
118 b1
= rol64(b1
, 32) ^ b2
;
123 b1
= rol64(b1
, 14) ^ b0
;
127 b3
= rol64(b3
, 16) ^ b2
;
130 b3
= rol64(b3
, 52) ^ b0
;
133 b1
= rol64(b1
, 57) ^ b2
;
136 b1
= rol64(b1
, 23) ^ b0
;
139 b3
= rol64(b3
, 40) ^ b2
;
142 b3
= rol64(b3
, 5) ^ b0
;
145 b1
= rol64(b1
, 37) ^ b2
;
149 b1
= rol64(b1
, 25) ^ b0
;
153 b3
= rol64(b3
, 33) ^ b2
;
156 b3
= rol64(b3
, 46) ^ b0
;
159 b1
= rol64(b1
, 12) ^ b2
;
162 b1
= rol64(b1
, 58) ^ b0
;
165 b3
= rol64(b3
, 22) ^ b2
;
168 b3
= rol64(b3
, 32) ^ b0
;
171 b1
= rol64(b1
, 32) ^ b2
;
176 b1
= rol64(b1
, 14) ^ b0
;
180 b3
= rol64(b3
, 16) ^ b2
;
183 b3
= rol64(b3
, 52) ^ b0
;
186 b1
= rol64(b1
, 57) ^ b2
;
189 b1
= rol64(b1
, 23) ^ b0
;
192 b3
= rol64(b3
, 40) ^ b2
;
195 b3
= rol64(b3
, 5) ^ b0
;
198 b1
= rol64(b1
, 37) ^ b2
;
202 b1
= rol64(b1
, 25) ^ b0
;
206 b3
= rol64(b3
, 33) ^ b2
;
209 b3
= rol64(b3
, 46) ^ b0
;
212 b1
= rol64(b1
, 12) ^ b2
;
215 b1
= rol64(b1
, 58) ^ b0
;
218 b3
= rol64(b3
, 22) ^ b2
;
221 b3
= rol64(b3
, 32) ^ b0
;
224 b1
= rol64(b1
, 32) ^ b2
;
229 b1
= rol64(b1
, 14) ^ b0
;
233 b3
= rol64(b3
, 16) ^ b2
;
236 b3
= rol64(b3
, 52) ^ b0
;
239 b1
= rol64(b1
, 57) ^ b2
;
242 b1
= rol64(b1
, 23) ^ b0
;
245 b3
= rol64(b3
, 40) ^ b2
;
248 b3
= rol64(b3
, 5) ^ b0
;
251 b1
= rol64(b1
, 37) ^ b2
;
255 b1
= rol64(b1
, 25) ^ b0
;
259 b3
= rol64(b3
, 33) ^ b2
;
262 b3
= rol64(b3
, 46) ^ b0
;
265 b1
= rol64(b1
, 12) ^ b2
;
268 b1
= rol64(b1
, 58) ^ b0
;
271 b3
= rol64(b3
, 22) ^ b2
;
274 b3
= rol64(b3
, 32) ^ b0
;
277 b1
= rol64(b1
, 32) ^ b2
;
282 b1
= rol64(b1
, 14) ^ b0
;
286 b3
= rol64(b3
, 16) ^ b2
;
289 b3
= rol64(b3
, 52) ^ b0
;
292 b1
= rol64(b1
, 57) ^ b2
;
295 b1
= rol64(b1
, 23) ^ b0
;
298 b3
= rol64(b3
, 40) ^ b2
;
301 b3
= rol64(b3
, 5) ^ b0
;
304 b1
= rol64(b1
, 37) ^ b2
;
308 b1
= rol64(b1
, 25) ^ b0
;
312 b3
= rol64(b3
, 33) ^ b2
;
315 b3
= rol64(b3
, 46) ^ b0
;
318 b1
= rol64(b1
, 12) ^ b2
;
321 b1
= rol64(b1
, 58) ^ b0
;
324 b3
= rol64(b3
, 22) ^ b2
;
327 b3
= rol64(b3
, 32) ^ b0
;
330 b1
= rol64(b1
, 32) ^ b2
;
335 b1
= rol64(b1
, 14) ^ b0
;
339 b3
= rol64(b3
, 16) ^ b2
;
342 b3
= rol64(b3
, 52) ^ b0
;
345 b1
= rol64(b1
, 57) ^ b2
;
348 b1
= rol64(b1
, 23) ^ b0
;
351 b3
= rol64(b3
, 40) ^ b2
;
354 b3
= rol64(b3
, 5) ^ b0
;
357 b1
= rol64(b1
, 37) ^ b2
;
361 b1
= rol64(b1
, 25) ^ b0
;
365 b3
= rol64(b3
, 33) ^ b2
;
368 b3
= rol64(b3
, 46) ^ b0
;
371 b1
= rol64(b1
, 12) ^ b2
;
374 b1
= rol64(b1
, 58) ^ b0
;
377 b3
= rol64(b3
, 22) ^ b2
;
380 b3
= rol64(b3
, 32) ^ b0
;
383 b1
= rol64(b1
, 32) ^ b2
;
388 b1
= rol64(b1
, 14) ^ b0
;
392 b3
= rol64(b3
, 16) ^ b2
;
395 b3
= rol64(b3
, 52) ^ b0
;
398 b1
= rol64(b1
, 57) ^ b2
;
401 b1
= rol64(b1
, 23) ^ b0
;
404 b3
= rol64(b3
, 40) ^ b2
;
407 b3
= rol64(b3
, 5) ^ b0
;
410 b1
= rol64(b1
, 37) ^ b2
;
414 b1
= rol64(b1
, 25) ^ b0
;
418 b3
= rol64(b3
, 33) ^ b2
;
421 b3
= rol64(b3
, 46) ^ b0
;
424 b1
= rol64(b1
, 12) ^ b2
;
427 b1
= rol64(b1
, 58) ^ b0
;
430 b3
= rol64(b3
, 22) ^ b2
;
433 b3
= rol64(b3
, 32) ^ b0
;
436 b1
= rol64(b1
, 32) ^ b2
;
441 b1
= rol64(b1
, 14) ^ b0
;
445 b3
= rol64(b3
, 16) ^ b2
;
448 b3
= rol64(b3
, 52) ^ b0
;
451 b1
= rol64(b1
, 57) ^ b2
;
454 b1
= rol64(b1
, 23) ^ b0
;
457 b3
= rol64(b3
, 40) ^ b2
;
460 b3
= rol64(b3
, 5) ^ b0
;
463 b1
= rol64(b1
, 37) ^ b2
;
467 b1
= rol64(b1
, 25) ^ b0
;
471 b3
= rol64(b3
, 33) ^ b2
;
474 b3
= rol64(b3
, 46) ^ b0
;
477 b1
= rol64(b1
, 12) ^ b2
;
480 b1
= rol64(b1
, 58) ^ b0
;
483 b3
= rol64(b3
, 22) ^ b2
;
486 b3
= rol64(b3
, 32) ^ b0
;
489 b1
= rol64(b1
, 32) ^ b2
;
492 output
[1] = b1
+ k4
+ t0
;
493 output
[2] = b2
+ k0
+ t1
;
494 output
[3] = b3
+ k1
+ 18;
497 void threefish_decrypt_256(struct threefish_key
*key_ctx
, u64
*input
,
500 u64 b0
= input
[0], b1
= input
[1],
501 b2
= input
[2], b3
= input
[3];
502 u64 k0
= key_ctx
->key
[0], k1
= key_ctx
->key
[1],
503 k2
= key_ctx
->key
[2], k3
= key_ctx
->key
[3],
504 k4
= key_ctx
->key
[4];
505 u64 t0
= key_ctx
->tweak
[0], t1
= key_ctx
->tweak
[1],
506 t2
= key_ctx
->tweak
[2];
515 b3
= (tmp
>> 32) | (tmp
<< (64 - 32));
519 b1
= (tmp
>> 32) | (tmp
<< (64 - 32));
523 b1
= (tmp
>> 58) | (tmp
<< (64 - 58));
527 b3
= (tmp
>> 22) | (tmp
<< (64 - 22));
531 b3
= (tmp
>> 46) | (tmp
<< (64 - 46));
535 b1
= (tmp
>> 12) | (tmp
<< (64 - 12));
539 b1
= (tmp
>> 25) | (tmp
<< (64 - 25));
544 b3
= (tmp
>> 33) | (tmp
<< (64 - 33));
549 b3
= (tmp
>> 5) | (tmp
<< (64 - 5));
553 b1
= (tmp
>> 37) | (tmp
<< (64 - 37));
557 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
561 b3
= (tmp
>> 40) | (tmp
<< (64 - 40));
565 b3
= (tmp
>> 52) | (tmp
<< (64 - 52));
569 b1
= (tmp
>> 57) | (tmp
<< (64 - 57));
573 b1
= (tmp
>> 14) | (tmp
<< (64 - 14));
578 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
584 b3
= (tmp
>> 32) | (tmp
<< (64 - 32));
588 b1
= (tmp
>> 32) | (tmp
<< (64 - 32));
592 b1
= (tmp
>> 58) | (tmp
<< (64 - 58));
596 b3
= (tmp
>> 22) | (tmp
<< (64 - 22));
600 b3
= (tmp
>> 46) | (tmp
<< (64 - 46));
604 b1
= (tmp
>> 12) | (tmp
<< (64 - 12));
608 b1
= (tmp
>> 25) | (tmp
<< (64 - 25));
613 b3
= (tmp
>> 33) | (tmp
<< (64 - 33));
618 b3
= (tmp
>> 5) | (tmp
<< (64 - 5));
622 b1
= (tmp
>> 37) | (tmp
<< (64 - 37));
626 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
630 b3
= (tmp
>> 40) | (tmp
<< (64 - 40));
634 b3
= (tmp
>> 52) | (tmp
<< (64 - 52));
638 b1
= (tmp
>> 57) | (tmp
<< (64 - 57));
642 b1
= (tmp
>> 14) | (tmp
<< (64 - 14));
647 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
653 b3
= (tmp
>> 32) | (tmp
<< (64 - 32));
657 b1
= (tmp
>> 32) | (tmp
<< (64 - 32));
661 b1
= (tmp
>> 58) | (tmp
<< (64 - 58));
665 b3
= (tmp
>> 22) | (tmp
<< (64 - 22));
669 b3
= (tmp
>> 46) | (tmp
<< (64 - 46));
673 b1
= (tmp
>> 12) | (tmp
<< (64 - 12));
677 b1
= (tmp
>> 25) | (tmp
<< (64 - 25));
682 b3
= (tmp
>> 33) | (tmp
<< (64 - 33));
687 b3
= (tmp
>> 5) | (tmp
<< (64 - 5));
691 b1
= (tmp
>> 37) | (tmp
<< (64 - 37));
695 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
699 b3
= (tmp
>> 40) | (tmp
<< (64 - 40));
703 b3
= (tmp
>> 52) | (tmp
<< (64 - 52));
707 b1
= (tmp
>> 57) | (tmp
<< (64 - 57));
711 b1
= (tmp
>> 14) | (tmp
<< (64 - 14));
716 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
722 b3
= (tmp
>> 32) | (tmp
<< (64 - 32));
726 b1
= (tmp
>> 32) | (tmp
<< (64 - 32));
730 b1
= (tmp
>> 58) | (tmp
<< (64 - 58));
734 b3
= (tmp
>> 22) | (tmp
<< (64 - 22));
738 b3
= (tmp
>> 46) | (tmp
<< (64 - 46));
742 b1
= (tmp
>> 12) | (tmp
<< (64 - 12));
746 b1
= (tmp
>> 25) | (tmp
<< (64 - 25));
751 b3
= (tmp
>> 33) | (tmp
<< (64 - 33));
756 b3
= (tmp
>> 5) | (tmp
<< (64 - 5));
760 b1
= (tmp
>> 37) | (tmp
<< (64 - 37));
764 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
768 b3
= (tmp
>> 40) | (tmp
<< (64 - 40));
772 b3
= (tmp
>> 52) | (tmp
<< (64 - 52));
776 b1
= (tmp
>> 57) | (tmp
<< (64 - 57));
780 b1
= (tmp
>> 14) | (tmp
<< (64 - 14));
785 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
791 b3
= (tmp
>> 32) | (tmp
<< (64 - 32));
795 b1
= (tmp
>> 32) | (tmp
<< (64 - 32));
799 b1
= (tmp
>> 58) | (tmp
<< (64 - 58));
803 b3
= (tmp
>> 22) | (tmp
<< (64 - 22));
807 b3
= (tmp
>> 46) | (tmp
<< (64 - 46));
811 b1
= (tmp
>> 12) | (tmp
<< (64 - 12));
815 b1
= (tmp
>> 25) | (tmp
<< (64 - 25));
820 b3
= (tmp
>> 33) | (tmp
<< (64 - 33));
825 b3
= (tmp
>> 5) | (tmp
<< (64 - 5));
829 b1
= (tmp
>> 37) | (tmp
<< (64 - 37));
833 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
837 b3
= (tmp
>> 40) | (tmp
<< (64 - 40));
841 b3
= (tmp
>> 52) | (tmp
<< (64 - 52));
845 b1
= (tmp
>> 57) | (tmp
<< (64 - 57));
849 b1
= (tmp
>> 14) | (tmp
<< (64 - 14));
854 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
860 b3
= (tmp
>> 32) | (tmp
<< (64 - 32));
864 b1
= (tmp
>> 32) | (tmp
<< (64 - 32));
868 b1
= (tmp
>> 58) | (tmp
<< (64 - 58));
872 b3
= (tmp
>> 22) | (tmp
<< (64 - 22));
876 b3
= (tmp
>> 46) | (tmp
<< (64 - 46));
880 b1
= (tmp
>> 12) | (tmp
<< (64 - 12));
884 b1
= (tmp
>> 25) | (tmp
<< (64 - 25));
889 b3
= (tmp
>> 33) | (tmp
<< (64 - 33));
894 b3
= (tmp
>> 5) | (tmp
<< (64 - 5));
898 b1
= (tmp
>> 37) | (tmp
<< (64 - 37));
902 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
906 b3
= (tmp
>> 40) | (tmp
<< (64 - 40));
910 b3
= (tmp
>> 52) | (tmp
<< (64 - 52));
914 b1
= (tmp
>> 57) | (tmp
<< (64 - 57));
918 b1
= (tmp
>> 14) | (tmp
<< (64 - 14));
923 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
929 b3
= (tmp
>> 32) | (tmp
<< (64 - 32));
933 b1
= (tmp
>> 32) | (tmp
<< (64 - 32));
937 b1
= (tmp
>> 58) | (tmp
<< (64 - 58));
941 b3
= (tmp
>> 22) | (tmp
<< (64 - 22));
945 b3
= (tmp
>> 46) | (tmp
<< (64 - 46));
949 b1
= (tmp
>> 12) | (tmp
<< (64 - 12));
953 b1
= (tmp
>> 25) | (tmp
<< (64 - 25));
958 b3
= (tmp
>> 33) | (tmp
<< (64 - 33));
963 b3
= (tmp
>> 5) | (tmp
<< (64 - 5));
967 b1
= (tmp
>> 37) | (tmp
<< (64 - 37));
971 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
975 b3
= (tmp
>> 40) | (tmp
<< (64 - 40));
979 b3
= (tmp
>> 52) | (tmp
<< (64 - 52));
983 b1
= (tmp
>> 57) | (tmp
<< (64 - 57));
987 b1
= (tmp
>> 14) | (tmp
<< (64 - 14));
992 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
998 b3
= (tmp
>> 32) | (tmp
<< (64 - 32));
1002 b1
= (tmp
>> 32) | (tmp
<< (64 - 32));
1006 b1
= (tmp
>> 58) | (tmp
<< (64 - 58));
1010 b3
= (tmp
>> 22) | (tmp
<< (64 - 22));
1014 b3
= (tmp
>> 46) | (tmp
<< (64 - 46));
1018 b1
= (tmp
>> 12) | (tmp
<< (64 - 12));
1022 b1
= (tmp
>> 25) | (tmp
<< (64 - 25));
1027 b3
= (tmp
>> 33) | (tmp
<< (64 - 33));
1032 b3
= (tmp
>> 5) | (tmp
<< (64 - 5));
1036 b1
= (tmp
>> 37) | (tmp
<< (64 - 37));
1040 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
1044 b3
= (tmp
>> 40) | (tmp
<< (64 - 40));
1048 b3
= (tmp
>> 52) | (tmp
<< (64 - 52));
1052 b1
= (tmp
>> 57) | (tmp
<< (64 - 57));
1056 b1
= (tmp
>> 14) | (tmp
<< (64 - 14));
1061 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
1067 b3
= (tmp
>> 32) | (tmp
<< (64 - 32));
1071 b1
= (tmp
>> 32) | (tmp
<< (64 - 32));
1075 b1
= (tmp
>> 58) | (tmp
<< (64 - 58));
1079 b3
= (tmp
>> 22) | (tmp
<< (64 - 22));
1083 b3
= (tmp
>> 46) | (tmp
<< (64 - 46));
1087 b1
= (tmp
>> 12) | (tmp
<< (64 - 12));
1091 b1
= (tmp
>> 25) | (tmp
<< (64 - 25));
1096 b3
= (tmp
>> 33) | (tmp
<< (64 - 33));
1101 b3
= (tmp
>> 5) | (tmp
<< (64 - 5));
1105 b1
= (tmp
>> 37) | (tmp
<< (64 - 37));
1109 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
1113 b3
= (tmp
>> 40) | (tmp
<< (64 - 40));
1117 b3
= (tmp
>> 52) | (tmp
<< (64 - 52));
1121 b1
= (tmp
>> 57) | (tmp
<< (64 - 57));
1125 b1
= (tmp
>> 14) | (tmp
<< (64 - 14));
1130 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
1140 void threefish_encrypt_512(struct threefish_key
*key_ctx
, u64
*input
,
1143 u64 b0
= input
[0], b1
= input
[1],
1144 b2
= input
[2], b3
= input
[3],
1145 b4
= input
[4], b5
= input
[5],
1146 b6
= input
[6], b7
= input
[7];
1147 u64 k0
= key_ctx
->key
[0], k1
= key_ctx
->key
[1],
1148 k2
= key_ctx
->key
[2], k3
= key_ctx
->key
[3],
1149 k4
= key_ctx
->key
[4], k5
= key_ctx
->key
[5],
1150 k6
= key_ctx
->key
[6], k7
= key_ctx
->key
[7],
1151 k8
= key_ctx
->key
[8];
1152 u64 t0
= key_ctx
->tweak
[0], t1
= key_ctx
->tweak
[1],
1153 t2
= key_ctx
->tweak
[2];
1157 b1
= rol64(b1
, 46) ^ b0
;
1161 b3
= rol64(b3
, 36) ^ b2
;
1165 b5
= rol64(b5
, 19) ^ b4
;
1169 b7
= rol64(b7
, 37) ^ b6
;
1172 b1
= rol64(b1
, 33) ^ b2
;
1175 b7
= rol64(b7
, 27) ^ b4
;
1178 b5
= rol64(b5
, 14) ^ b6
;
1181 b3
= rol64(b3
, 42) ^ b0
;
1184 b1
= rol64(b1
, 17) ^ b4
;
1187 b3
= rol64(b3
, 49) ^ b6
;
1190 b5
= rol64(b5
, 36) ^ b0
;
1193 b7
= rol64(b7
, 39) ^ b2
;
1196 b1
= rol64(b1
, 44) ^ b6
;
1199 b7
= rol64(b7
, 9) ^ b0
;
1202 b5
= rol64(b5
, 54) ^ b2
;
1205 b3
= rol64(b3
, 56) ^ b4
;
1209 b1
= rol64(b1
, 39) ^ b0
;
1213 b3
= rol64(b3
, 30) ^ b2
;
1217 b5
= rol64(b5
, 34) ^ b4
;
1221 b7
= rol64(b7
, 24) ^ b6
;
1224 b1
= rol64(b1
, 13) ^ b2
;
1227 b7
= rol64(b7
, 50) ^ b4
;
1230 b5
= rol64(b5
, 10) ^ b6
;
1233 b3
= rol64(b3
, 17) ^ b0
;
1236 b1
= rol64(b1
, 25) ^ b4
;
1239 b3
= rol64(b3
, 29) ^ b6
;
1242 b5
= rol64(b5
, 39) ^ b0
;
1245 b7
= rol64(b7
, 43) ^ b2
;
1248 b1
= rol64(b1
, 8) ^ b6
;
1251 b7
= rol64(b7
, 35) ^ b0
;
1254 b5
= rol64(b5
, 56) ^ b2
;
1257 b3
= rol64(b3
, 22) ^ b4
;
1261 b1
= rol64(b1
, 46) ^ b0
;
1265 b3
= rol64(b3
, 36) ^ b2
;
1269 b5
= rol64(b5
, 19) ^ b4
;
1273 b7
= rol64(b7
, 37) ^ b6
;
1276 b1
= rol64(b1
, 33) ^ b2
;
1279 b7
= rol64(b7
, 27) ^ b4
;
1282 b5
= rol64(b5
, 14) ^ b6
;
1285 b3
= rol64(b3
, 42) ^ b0
;
1288 b1
= rol64(b1
, 17) ^ b4
;
1291 b3
= rol64(b3
, 49) ^ b6
;
1294 b5
= rol64(b5
, 36) ^ b0
;
1297 b7
= rol64(b7
, 39) ^ b2
;
1300 b1
= rol64(b1
, 44) ^ b6
;
1303 b7
= rol64(b7
, 9) ^ b0
;
1306 b5
= rol64(b5
, 54) ^ b2
;
1309 b3
= rol64(b3
, 56) ^ b4
;
1313 b1
= rol64(b1
, 39) ^ b0
;
1317 b3
= rol64(b3
, 30) ^ b2
;
1321 b5
= rol64(b5
, 34) ^ b4
;
1325 b7
= rol64(b7
, 24) ^ b6
;
1328 b1
= rol64(b1
, 13) ^ b2
;
1331 b7
= rol64(b7
, 50) ^ b4
;
1334 b5
= rol64(b5
, 10) ^ b6
;
1337 b3
= rol64(b3
, 17) ^ b0
;
1340 b1
= rol64(b1
, 25) ^ b4
;
1343 b3
= rol64(b3
, 29) ^ b6
;
1346 b5
= rol64(b5
, 39) ^ b0
;
1349 b7
= rol64(b7
, 43) ^ b2
;
1352 b1
= rol64(b1
, 8) ^ b6
;
1355 b7
= rol64(b7
, 35) ^ b0
;
1358 b5
= rol64(b5
, 56) ^ b2
;
1361 b3
= rol64(b3
, 22) ^ b4
;
1365 b1
= rol64(b1
, 46) ^ b0
;
1369 b3
= rol64(b3
, 36) ^ b2
;
1373 b5
= rol64(b5
, 19) ^ b4
;
1377 b7
= rol64(b7
, 37) ^ b6
;
1380 b1
= rol64(b1
, 33) ^ b2
;
1383 b7
= rol64(b7
, 27) ^ b4
;
1386 b5
= rol64(b5
, 14) ^ b6
;
1389 b3
= rol64(b3
, 42) ^ b0
;
1392 b1
= rol64(b1
, 17) ^ b4
;
1395 b3
= rol64(b3
, 49) ^ b6
;
1398 b5
= rol64(b5
, 36) ^ b0
;
1401 b7
= rol64(b7
, 39) ^ b2
;
1404 b1
= rol64(b1
, 44) ^ b6
;
1407 b7
= rol64(b7
, 9) ^ b0
;
1410 b5
= rol64(b5
, 54) ^ b2
;
1413 b3
= rol64(b3
, 56) ^ b4
;
1417 b1
= rol64(b1
, 39) ^ b0
;
1421 b3
= rol64(b3
, 30) ^ b2
;
1425 b5
= rol64(b5
, 34) ^ b4
;
1429 b7
= rol64(b7
, 24) ^ b6
;
1432 b1
= rol64(b1
, 13) ^ b2
;
1435 b7
= rol64(b7
, 50) ^ b4
;
1438 b5
= rol64(b5
, 10) ^ b6
;
1441 b3
= rol64(b3
, 17) ^ b0
;
1444 b1
= rol64(b1
, 25) ^ b4
;
1447 b3
= rol64(b3
, 29) ^ b6
;
1450 b5
= rol64(b5
, 39) ^ b0
;
1453 b7
= rol64(b7
, 43) ^ b2
;
1456 b1
= rol64(b1
, 8) ^ b6
;
1459 b7
= rol64(b7
, 35) ^ b0
;
1462 b5
= rol64(b5
, 56) ^ b2
;
1465 b3
= rol64(b3
, 22) ^ b4
;
1469 b1
= rol64(b1
, 46) ^ b0
;
1473 b3
= rol64(b3
, 36) ^ b2
;
1477 b5
= rol64(b5
, 19) ^ b4
;
1481 b7
= rol64(b7
, 37) ^ b6
;
1484 b1
= rol64(b1
, 33) ^ b2
;
1487 b7
= rol64(b7
, 27) ^ b4
;
1490 b5
= rol64(b5
, 14) ^ b6
;
1493 b3
= rol64(b3
, 42) ^ b0
;
1496 b1
= rol64(b1
, 17) ^ b4
;
1499 b3
= rol64(b3
, 49) ^ b6
;
1502 b5
= rol64(b5
, 36) ^ b0
;
1505 b7
= rol64(b7
, 39) ^ b2
;
1508 b1
= rol64(b1
, 44) ^ b6
;
1511 b7
= rol64(b7
, 9) ^ b0
;
1514 b5
= rol64(b5
, 54) ^ b2
;
1517 b3
= rol64(b3
, 56) ^ b4
;
1521 b1
= rol64(b1
, 39) ^ b0
;
1525 b3
= rol64(b3
, 30) ^ b2
;
1529 b5
= rol64(b5
, 34) ^ b4
;
1533 b7
= rol64(b7
, 24) ^ b6
;
1536 b1
= rol64(b1
, 13) ^ b2
;
1539 b7
= rol64(b7
, 50) ^ b4
;
1542 b5
= rol64(b5
, 10) ^ b6
;
1545 b3
= rol64(b3
, 17) ^ b0
;
1548 b1
= rol64(b1
, 25) ^ b4
;
1551 b3
= rol64(b3
, 29) ^ b6
;
1554 b5
= rol64(b5
, 39) ^ b0
;
1557 b7
= rol64(b7
, 43) ^ b2
;
1560 b1
= rol64(b1
, 8) ^ b6
;
1563 b7
= rol64(b7
, 35) ^ b0
;
1566 b5
= rol64(b5
, 56) ^ b2
;
1569 b3
= rol64(b3
, 22) ^ b4
;
1573 b1
= rol64(b1
, 46) ^ b0
;
1577 b3
= rol64(b3
, 36) ^ b2
;
1581 b5
= rol64(b5
, 19) ^ b4
;
1585 b7
= rol64(b7
, 37) ^ b6
;
1588 b1
= rol64(b1
, 33) ^ b2
;
1591 b7
= rol64(b7
, 27) ^ b4
;
1594 b5
= rol64(b5
, 14) ^ b6
;
1597 b3
= rol64(b3
, 42) ^ b0
;
1600 b1
= rol64(b1
, 17) ^ b4
;
1603 b3
= rol64(b3
, 49) ^ b6
;
1606 b5
= rol64(b5
, 36) ^ b0
;
1609 b7
= rol64(b7
, 39) ^ b2
;
1612 b1
= rol64(b1
, 44) ^ b6
;
1615 b7
= rol64(b7
, 9) ^ b0
;
1618 b5
= rol64(b5
, 54) ^ b2
;
1621 b3
= rol64(b3
, 56) ^ b4
;
1625 b1
= rol64(b1
, 39) ^ b0
;
1629 b3
= rol64(b3
, 30) ^ b2
;
1633 b5
= rol64(b5
, 34) ^ b4
;
1637 b7
= rol64(b7
, 24) ^ b6
;
1640 b1
= rol64(b1
, 13) ^ b2
;
1643 b7
= rol64(b7
, 50) ^ b4
;
1646 b5
= rol64(b5
, 10) ^ b6
;
1649 b3
= rol64(b3
, 17) ^ b0
;
1652 b1
= rol64(b1
, 25) ^ b4
;
1655 b3
= rol64(b3
, 29) ^ b6
;
1658 b5
= rol64(b5
, 39) ^ b0
;
1661 b7
= rol64(b7
, 43) ^ b2
;
1664 b1
= rol64(b1
, 8) ^ b6
;
1667 b7
= rol64(b7
, 35) ^ b0
;
1670 b5
= rol64(b5
, 56) ^ b2
;
1673 b3
= rol64(b3
, 22) ^ b4
;
1677 b1
= rol64(b1
, 46) ^ b0
;
1681 b3
= rol64(b3
, 36) ^ b2
;
1685 b5
= rol64(b5
, 19) ^ b4
;
1689 b7
= rol64(b7
, 37) ^ b6
;
1692 b1
= rol64(b1
, 33) ^ b2
;
1695 b7
= rol64(b7
, 27) ^ b4
;
1698 b5
= rol64(b5
, 14) ^ b6
;
1701 b3
= rol64(b3
, 42) ^ b0
;
1704 b1
= rol64(b1
, 17) ^ b4
;
1707 b3
= rol64(b3
, 49) ^ b6
;
1710 b5
= rol64(b5
, 36) ^ b0
;
1713 b7
= rol64(b7
, 39) ^ b2
;
1716 b1
= rol64(b1
, 44) ^ b6
;
1719 b7
= rol64(b7
, 9) ^ b0
;
1722 b5
= rol64(b5
, 54) ^ b2
;
1725 b3
= rol64(b3
, 56) ^ b4
;
1729 b1
= rol64(b1
, 39) ^ b0
;
1733 b3
= rol64(b3
, 30) ^ b2
;
1737 b5
= rol64(b5
, 34) ^ b4
;
1741 b7
= rol64(b7
, 24) ^ b6
;
1744 b1
= rol64(b1
, 13) ^ b2
;
1747 b7
= rol64(b7
, 50) ^ b4
;
1750 b5
= rol64(b5
, 10) ^ b6
;
1753 b3
= rol64(b3
, 17) ^ b0
;
1756 b1
= rol64(b1
, 25) ^ b4
;
1759 b3
= rol64(b3
, 29) ^ b6
;
1762 b5
= rol64(b5
, 39) ^ b0
;
1765 b7
= rol64(b7
, 43) ^ b2
;
1768 b1
= rol64(b1
, 8) ^ b6
;
1771 b7
= rol64(b7
, 35) ^ b0
;
1774 b5
= rol64(b5
, 56) ^ b2
;
1777 b3
= rol64(b3
, 22) ^ b4
;
1781 b1
= rol64(b1
, 46) ^ b0
;
1785 b3
= rol64(b3
, 36) ^ b2
;
1789 b5
= rol64(b5
, 19) ^ b4
;
1793 b7
= rol64(b7
, 37) ^ b6
;
1796 b1
= rol64(b1
, 33) ^ b2
;
1799 b7
= rol64(b7
, 27) ^ b4
;
1802 b5
= rol64(b5
, 14) ^ b6
;
1805 b3
= rol64(b3
, 42) ^ b0
;
1808 b1
= rol64(b1
, 17) ^ b4
;
1811 b3
= rol64(b3
, 49) ^ b6
;
1814 b5
= rol64(b5
, 36) ^ b0
;
1817 b7
= rol64(b7
, 39) ^ b2
;
1820 b1
= rol64(b1
, 44) ^ b6
;
1823 b7
= rol64(b7
, 9) ^ b0
;
1826 b5
= rol64(b5
, 54) ^ b2
;
1829 b3
= rol64(b3
, 56) ^ b4
;
1833 b1
= rol64(b1
, 39) ^ b0
;
1837 b3
= rol64(b3
, 30) ^ b2
;
1841 b5
= rol64(b5
, 34) ^ b4
;
1845 b7
= rol64(b7
, 24) ^ b6
;
1848 b1
= rol64(b1
, 13) ^ b2
;
1851 b7
= rol64(b7
, 50) ^ b4
;
1854 b5
= rol64(b5
, 10) ^ b6
;
1857 b3
= rol64(b3
, 17) ^ b0
;
1860 b1
= rol64(b1
, 25) ^ b4
;
1863 b3
= rol64(b3
, 29) ^ b6
;
1866 b5
= rol64(b5
, 39) ^ b0
;
1869 b7
= rol64(b7
, 43) ^ b2
;
1872 b1
= rol64(b1
, 8) ^ b6
;
1875 b7
= rol64(b7
, 35) ^ b0
;
1878 b5
= rol64(b5
, 56) ^ b2
;
1881 b3
= rol64(b3
, 22) ^ b4
;
1885 b1
= rol64(b1
, 46) ^ b0
;
1889 b3
= rol64(b3
, 36) ^ b2
;
1893 b5
= rol64(b5
, 19) ^ b4
;
1897 b7
= rol64(b7
, 37) ^ b6
;
1900 b1
= rol64(b1
, 33) ^ b2
;
1903 b7
= rol64(b7
, 27) ^ b4
;
1906 b5
= rol64(b5
, 14) ^ b6
;
1909 b3
= rol64(b3
, 42) ^ b0
;
1912 b1
= rol64(b1
, 17) ^ b4
;
1915 b3
= rol64(b3
, 49) ^ b6
;
1918 b5
= rol64(b5
, 36) ^ b0
;
1921 b7
= rol64(b7
, 39) ^ b2
;
1924 b1
= rol64(b1
, 44) ^ b6
;
1927 b7
= rol64(b7
, 9) ^ b0
;
1930 b5
= rol64(b5
, 54) ^ b2
;
1933 b3
= rol64(b3
, 56) ^ b4
;
1937 b1
= rol64(b1
, 39) ^ b0
;
1941 b3
= rol64(b3
, 30) ^ b2
;
1945 b5
= rol64(b5
, 34) ^ b4
;
1949 b7
= rol64(b7
, 24) ^ b6
;
1952 b1
= rol64(b1
, 13) ^ b2
;
1955 b7
= rol64(b7
, 50) ^ b4
;
1958 b5
= rol64(b5
, 10) ^ b6
;
1961 b3
= rol64(b3
, 17) ^ b0
;
1964 b1
= rol64(b1
, 25) ^ b4
;
1967 b3
= rol64(b3
, 29) ^ b6
;
1970 b5
= rol64(b5
, 39) ^ b0
;
1973 b7
= rol64(b7
, 43) ^ b2
;
1976 b1
= rol64(b1
, 8) ^ b6
;
1979 b7
= rol64(b7
, 35) ^ b0
;
1982 b5
= rol64(b5
, 56) ^ b2
;
1985 b3
= rol64(b3
, 22) ^ b4
;
1989 b1
= rol64(b1
, 46) ^ b0
;
1993 b3
= rol64(b3
, 36) ^ b2
;
1997 b5
= rol64(b5
, 19) ^ b4
;
2001 b7
= rol64(b7
, 37) ^ b6
;
2004 b1
= rol64(b1
, 33) ^ b2
;
2007 b7
= rol64(b7
, 27) ^ b4
;
2010 b5
= rol64(b5
, 14) ^ b6
;
2013 b3
= rol64(b3
, 42) ^ b0
;
2016 b1
= rol64(b1
, 17) ^ b4
;
2019 b3
= rol64(b3
, 49) ^ b6
;
2022 b5
= rol64(b5
, 36) ^ b0
;
2025 b7
= rol64(b7
, 39) ^ b2
;
2028 b1
= rol64(b1
, 44) ^ b6
;
2031 b7
= rol64(b7
, 9) ^ b0
;
2034 b5
= rol64(b5
, 54) ^ b2
;
2037 b3
= rol64(b3
, 56) ^ b4
;
2041 b1
= rol64(b1
, 39) ^ b0
;
2045 b3
= rol64(b3
, 30) ^ b2
;
2049 b5
= rol64(b5
, 34) ^ b4
;
2053 b7
= rol64(b7
, 24) ^ b6
;
2056 b1
= rol64(b1
, 13) ^ b2
;
2059 b7
= rol64(b7
, 50) ^ b4
;
2062 b5
= rol64(b5
, 10) ^ b6
;
2065 b3
= rol64(b3
, 17) ^ b0
;
2068 b1
= rol64(b1
, 25) ^ b4
;
2071 b3
= rol64(b3
, 29) ^ b6
;
2074 b5
= rol64(b5
, 39) ^ b0
;
2077 b7
= rol64(b7
, 43) ^ b2
;
2080 b1
= rol64(b1
, 8) ^ b6
;
2083 b7
= rol64(b7
, 35) ^ b0
;
2086 b5
= rol64(b5
, 56) ^ b2
;
2089 b3
= rol64(b3
, 22) ^ b4
;
2091 output
[0] = b0
+ k0
;
2092 output
[1] = b1
+ k1
;
2093 output
[2] = b2
+ k2
;
2094 output
[3] = b3
+ k3
;
2095 output
[4] = b4
+ k4
;
2096 output
[5] = b5
+ k5
+ t0
;
2097 output
[6] = b6
+ k6
+ t1
;
2098 output
[7] = b7
+ k7
+ 18;
2101 void threefish_decrypt_512(struct threefish_key
*key_ctx
, u64
*input
,
2104 u64 b0
= input
[0], b1
= input
[1],
2105 b2
= input
[2], b3
= input
[3],
2106 b4
= input
[4], b5
= input
[5],
2107 b6
= input
[6], b7
= input
[7];
2108 u64 k0
= key_ctx
->key
[0], k1
= key_ctx
->key
[1],
2109 k2
= key_ctx
->key
[2], k3
= key_ctx
->key
[3],
2110 k4
= key_ctx
->key
[4], k5
= key_ctx
->key
[5],
2111 k6
= key_ctx
->key
[6], k7
= key_ctx
->key
[7],
2112 k8
= key_ctx
->key
[8];
2113 u64 t0
= key_ctx
->tweak
[0], t1
= key_ctx
->tweak
[1],
2114 t2
= key_ctx
->tweak
[2];
2128 b3
= (tmp
>> 22) | (tmp
<< (64 - 22));
2132 b5
= (tmp
>> 56) | (tmp
<< (64 - 56));
2136 b7
= (tmp
>> 35) | (tmp
<< (64 - 35));
2140 b1
= (tmp
>> 8) | (tmp
<< (64 - 8));
2144 b7
= (tmp
>> 43) | (tmp
<< (64 - 43));
2148 b5
= (tmp
>> 39) | (tmp
<< (64 - 39));
2152 b3
= (tmp
>> 29) | (tmp
<< (64 - 29));
2156 b1
= (tmp
>> 25) | (tmp
<< (64 - 25));
2160 b3
= (tmp
>> 17) | (tmp
<< (64 - 17));
2164 b5
= (tmp
>> 10) | (tmp
<< (64 - 10));
2168 b7
= (tmp
>> 50) | (tmp
<< (64 - 50));
2172 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
2176 b7
= (tmp
>> 24) | (tmp
<< (64 - 24));
2181 b5
= (tmp
>> 34) | (tmp
<< (64 - 34));
2186 b3
= (tmp
>> 30) | (tmp
<< (64 - 30));
2191 b1
= (tmp
>> 39) | (tmp
<< (64 - 39));
2196 b3
= (tmp
>> 56) | (tmp
<< (64 - 56));
2200 b5
= (tmp
>> 54) | (tmp
<< (64 - 54));
2204 b7
= (tmp
>> 9) | (tmp
<< (64 - 9));
2208 b1
= (tmp
>> 44) | (tmp
<< (64 - 44));
2212 b7
= (tmp
>> 39) | (tmp
<< (64 - 39));
2216 b5
= (tmp
>> 36) | (tmp
<< (64 - 36));
2220 b3
= (tmp
>> 49) | (tmp
<< (64 - 49));
2224 b1
= (tmp
>> 17) | (tmp
<< (64 - 17));
2228 b3
= (tmp
>> 42) | (tmp
<< (64 - 42));
2232 b5
= (tmp
>> 14) | (tmp
<< (64 - 14));
2236 b7
= (tmp
>> 27) | (tmp
<< (64 - 27));
2240 b1
= (tmp
>> 33) | (tmp
<< (64 - 33));
2244 b7
= (tmp
>> 37) | (tmp
<< (64 - 37));
2249 b5
= (tmp
>> 19) | (tmp
<< (64 - 19));
2254 b3
= (tmp
>> 36) | (tmp
<< (64 - 36));
2259 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
2264 b3
= (tmp
>> 22) | (tmp
<< (64 - 22));
2268 b5
= (tmp
>> 56) | (tmp
<< (64 - 56));
2272 b7
= (tmp
>> 35) | (tmp
<< (64 - 35));
2276 b1
= (tmp
>> 8) | (tmp
<< (64 - 8));
2280 b7
= (tmp
>> 43) | (tmp
<< (64 - 43));
2284 b5
= (tmp
>> 39) | (tmp
<< (64 - 39));
2288 b3
= (tmp
>> 29) | (tmp
<< (64 - 29));
2292 b1
= (tmp
>> 25) | (tmp
<< (64 - 25));
2296 b3
= (tmp
>> 17) | (tmp
<< (64 - 17));
2300 b5
= (tmp
>> 10) | (tmp
<< (64 - 10));
2304 b7
= (tmp
>> 50) | (tmp
<< (64 - 50));
2308 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
2312 b7
= (tmp
>> 24) | (tmp
<< (64 - 24));
2317 b5
= (tmp
>> 34) | (tmp
<< (64 - 34));
2322 b3
= (tmp
>> 30) | (tmp
<< (64 - 30));
2327 b1
= (tmp
>> 39) | (tmp
<< (64 - 39));
2332 b3
= (tmp
>> 56) | (tmp
<< (64 - 56));
2336 b5
= (tmp
>> 54) | (tmp
<< (64 - 54));
2340 b7
= (tmp
>> 9) | (tmp
<< (64 - 9));
2344 b1
= (tmp
>> 44) | (tmp
<< (64 - 44));
2348 b7
= (tmp
>> 39) | (tmp
<< (64 - 39));
2352 b5
= (tmp
>> 36) | (tmp
<< (64 - 36));
2356 b3
= (tmp
>> 49) | (tmp
<< (64 - 49));
2360 b1
= (tmp
>> 17) | (tmp
<< (64 - 17));
2364 b3
= (tmp
>> 42) | (tmp
<< (64 - 42));
2368 b5
= (tmp
>> 14) | (tmp
<< (64 - 14));
2372 b7
= (tmp
>> 27) | (tmp
<< (64 - 27));
2376 b1
= (tmp
>> 33) | (tmp
<< (64 - 33));
2380 b7
= (tmp
>> 37) | (tmp
<< (64 - 37));
2385 b5
= (tmp
>> 19) | (tmp
<< (64 - 19));
2390 b3
= (tmp
>> 36) | (tmp
<< (64 - 36));
2395 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
2400 b3
= (tmp
>> 22) | (tmp
<< (64 - 22));
2404 b5
= (tmp
>> 56) | (tmp
<< (64 - 56));
2408 b7
= (tmp
>> 35) | (tmp
<< (64 - 35));
2412 b1
= (tmp
>> 8) | (tmp
<< (64 - 8));
2416 b7
= (tmp
>> 43) | (tmp
<< (64 - 43));
2420 b5
= (tmp
>> 39) | (tmp
<< (64 - 39));
2424 b3
= (tmp
>> 29) | (tmp
<< (64 - 29));
2428 b1
= (tmp
>> 25) | (tmp
<< (64 - 25));
2432 b3
= (tmp
>> 17) | (tmp
<< (64 - 17));
2436 b5
= (tmp
>> 10) | (tmp
<< (64 - 10));
2440 b7
= (tmp
>> 50) | (tmp
<< (64 - 50));
2444 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
2448 b7
= (tmp
>> 24) | (tmp
<< (64 - 24));
2453 b5
= (tmp
>> 34) | (tmp
<< (64 - 34));
2458 b3
= (tmp
>> 30) | (tmp
<< (64 - 30));
2463 b1
= (tmp
>> 39) | (tmp
<< (64 - 39));
2468 b3
= (tmp
>> 56) | (tmp
<< (64 - 56));
2472 b5
= (tmp
>> 54) | (tmp
<< (64 - 54));
2476 b7
= (tmp
>> 9) | (tmp
<< (64 - 9));
2480 b1
= (tmp
>> 44) | (tmp
<< (64 - 44));
2484 b7
= (tmp
>> 39) | (tmp
<< (64 - 39));
2488 b5
= (tmp
>> 36) | (tmp
<< (64 - 36));
2492 b3
= (tmp
>> 49) | (tmp
<< (64 - 49));
2496 b1
= (tmp
>> 17) | (tmp
<< (64 - 17));
2500 b3
= (tmp
>> 42) | (tmp
<< (64 - 42));
2504 b5
= (tmp
>> 14) | (tmp
<< (64 - 14));
2508 b7
= (tmp
>> 27) | (tmp
<< (64 - 27));
2512 b1
= (tmp
>> 33) | (tmp
<< (64 - 33));
2516 b7
= (tmp
>> 37) | (tmp
<< (64 - 37));
2521 b5
= (tmp
>> 19) | (tmp
<< (64 - 19));
2526 b3
= (tmp
>> 36) | (tmp
<< (64 - 36));
2531 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
2536 b3
= (tmp
>> 22) | (tmp
<< (64 - 22));
2540 b5
= (tmp
>> 56) | (tmp
<< (64 - 56));
2544 b7
= (tmp
>> 35) | (tmp
<< (64 - 35));
2548 b1
= (tmp
>> 8) | (tmp
<< (64 - 8));
2552 b7
= (tmp
>> 43) | (tmp
<< (64 - 43));
2556 b5
= (tmp
>> 39) | (tmp
<< (64 - 39));
2560 b3
= (tmp
>> 29) | (tmp
<< (64 - 29));
2564 b1
= (tmp
>> 25) | (tmp
<< (64 - 25));
2568 b3
= (tmp
>> 17) | (tmp
<< (64 - 17));
2572 b5
= (tmp
>> 10) | (tmp
<< (64 - 10));
2576 b7
= (tmp
>> 50) | (tmp
<< (64 - 50));
2580 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
2584 b7
= (tmp
>> 24) | (tmp
<< (64 - 24));
2589 b5
= (tmp
>> 34) | (tmp
<< (64 - 34));
2594 b3
= (tmp
>> 30) | (tmp
<< (64 - 30));
2599 b1
= (tmp
>> 39) | (tmp
<< (64 - 39));
2604 b3
= (tmp
>> 56) | (tmp
<< (64 - 56));
2608 b5
= (tmp
>> 54) | (tmp
<< (64 - 54));
2612 b7
= (tmp
>> 9) | (tmp
<< (64 - 9));
2616 b1
= (tmp
>> 44) | (tmp
<< (64 - 44));
2620 b7
= (tmp
>> 39) | (tmp
<< (64 - 39));
2624 b5
= (tmp
>> 36) | (tmp
<< (64 - 36));
2628 b3
= (tmp
>> 49) | (tmp
<< (64 - 49));
2632 b1
= (tmp
>> 17) | (tmp
<< (64 - 17));
2636 b3
= (tmp
>> 42) | (tmp
<< (64 - 42));
2640 b5
= (tmp
>> 14) | (tmp
<< (64 - 14));
2644 b7
= (tmp
>> 27) | (tmp
<< (64 - 27));
2648 b1
= (tmp
>> 33) | (tmp
<< (64 - 33));
2652 b7
= (tmp
>> 37) | (tmp
<< (64 - 37));
2657 b5
= (tmp
>> 19) | (tmp
<< (64 - 19));
2662 b3
= (tmp
>> 36) | (tmp
<< (64 - 36));
2667 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
2672 b3
= (tmp
>> 22) | (tmp
<< (64 - 22));
2676 b5
= (tmp
>> 56) | (tmp
<< (64 - 56));
2680 b7
= (tmp
>> 35) | (tmp
<< (64 - 35));
2684 b1
= (tmp
>> 8) | (tmp
<< (64 - 8));
2688 b7
= (tmp
>> 43) | (tmp
<< (64 - 43));
2692 b5
= (tmp
>> 39) | (tmp
<< (64 - 39));
2696 b3
= (tmp
>> 29) | (tmp
<< (64 - 29));
2700 b1
= (tmp
>> 25) | (tmp
<< (64 - 25));
2704 b3
= (tmp
>> 17) | (tmp
<< (64 - 17));
2708 b5
= (tmp
>> 10) | (tmp
<< (64 - 10));
2712 b7
= (tmp
>> 50) | (tmp
<< (64 - 50));
2716 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
2720 b7
= (tmp
>> 24) | (tmp
<< (64 - 24));
2725 b5
= (tmp
>> 34) | (tmp
<< (64 - 34));
2730 b3
= (tmp
>> 30) | (tmp
<< (64 - 30));
2735 b1
= (tmp
>> 39) | (tmp
<< (64 - 39));
2740 b3
= (tmp
>> 56) | (tmp
<< (64 - 56));
2744 b5
= (tmp
>> 54) | (tmp
<< (64 - 54));
2748 b7
= (tmp
>> 9) | (tmp
<< (64 - 9));
2752 b1
= (tmp
>> 44) | (tmp
<< (64 - 44));
2756 b7
= (tmp
>> 39) | (tmp
<< (64 - 39));
2760 b5
= (tmp
>> 36) | (tmp
<< (64 - 36));
2764 b3
= (tmp
>> 49) | (tmp
<< (64 - 49));
2768 b1
= (tmp
>> 17) | (tmp
<< (64 - 17));
2772 b3
= (tmp
>> 42) | (tmp
<< (64 - 42));
2776 b5
= (tmp
>> 14) | (tmp
<< (64 - 14));
2780 b7
= (tmp
>> 27) | (tmp
<< (64 - 27));
2784 b1
= (tmp
>> 33) | (tmp
<< (64 - 33));
2788 b7
= (tmp
>> 37) | (tmp
<< (64 - 37));
2793 b5
= (tmp
>> 19) | (tmp
<< (64 - 19));
2798 b3
= (tmp
>> 36) | (tmp
<< (64 - 36));
2803 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
2808 b3
= (tmp
>> 22) | (tmp
<< (64 - 22));
2812 b5
= (tmp
>> 56) | (tmp
<< (64 - 56));
2816 b7
= (tmp
>> 35) | (tmp
<< (64 - 35));
2820 b1
= (tmp
>> 8) | (tmp
<< (64 - 8));
2824 b7
= (tmp
>> 43) | (tmp
<< (64 - 43));
2828 b5
= (tmp
>> 39) | (tmp
<< (64 - 39));
2832 b3
= (tmp
>> 29) | (tmp
<< (64 - 29));
2836 b1
= (tmp
>> 25) | (tmp
<< (64 - 25));
2840 b3
= (tmp
>> 17) | (tmp
<< (64 - 17));
2844 b5
= (tmp
>> 10) | (tmp
<< (64 - 10));
2848 b7
= (tmp
>> 50) | (tmp
<< (64 - 50));
2852 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
2856 b7
= (tmp
>> 24) | (tmp
<< (64 - 24));
2861 b5
= (tmp
>> 34) | (tmp
<< (64 - 34));
2866 b3
= (tmp
>> 30) | (tmp
<< (64 - 30));
2871 b1
= (tmp
>> 39) | (tmp
<< (64 - 39));
2876 b3
= (tmp
>> 56) | (tmp
<< (64 - 56));
2880 b5
= (tmp
>> 54) | (tmp
<< (64 - 54));
2884 b7
= (tmp
>> 9) | (tmp
<< (64 - 9));
2888 b1
= (tmp
>> 44) | (tmp
<< (64 - 44));
2892 b7
= (tmp
>> 39) | (tmp
<< (64 - 39));
2896 b5
= (tmp
>> 36) | (tmp
<< (64 - 36));
2900 b3
= (tmp
>> 49) | (tmp
<< (64 - 49));
2904 b1
= (tmp
>> 17) | (tmp
<< (64 - 17));
2908 b3
= (tmp
>> 42) | (tmp
<< (64 - 42));
2912 b5
= (tmp
>> 14) | (tmp
<< (64 - 14));
2916 b7
= (tmp
>> 27) | (tmp
<< (64 - 27));
2920 b1
= (tmp
>> 33) | (tmp
<< (64 - 33));
2924 b7
= (tmp
>> 37) | (tmp
<< (64 - 37));
2929 b5
= (tmp
>> 19) | (tmp
<< (64 - 19));
2934 b3
= (tmp
>> 36) | (tmp
<< (64 - 36));
2939 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
2944 b3
= (tmp
>> 22) | (tmp
<< (64 - 22));
2948 b5
= (tmp
>> 56) | (tmp
<< (64 - 56));
2952 b7
= (tmp
>> 35) | (tmp
<< (64 - 35));
2956 b1
= (tmp
>> 8) | (tmp
<< (64 - 8));
2960 b7
= (tmp
>> 43) | (tmp
<< (64 - 43));
2964 b5
= (tmp
>> 39) | (tmp
<< (64 - 39));
2968 b3
= (tmp
>> 29) | (tmp
<< (64 - 29));
2972 b1
= (tmp
>> 25) | (tmp
<< (64 - 25));
2976 b3
= (tmp
>> 17) | (tmp
<< (64 - 17));
2980 b5
= (tmp
>> 10) | (tmp
<< (64 - 10));
2984 b7
= (tmp
>> 50) | (tmp
<< (64 - 50));
2988 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
2992 b7
= (tmp
>> 24) | (tmp
<< (64 - 24));
2997 b5
= (tmp
>> 34) | (tmp
<< (64 - 34));
3002 b3
= (tmp
>> 30) | (tmp
<< (64 - 30));
3007 b1
= (tmp
>> 39) | (tmp
<< (64 - 39));
3012 b3
= (tmp
>> 56) | (tmp
<< (64 - 56));
3016 b5
= (tmp
>> 54) | (tmp
<< (64 - 54));
3020 b7
= (tmp
>> 9) | (tmp
<< (64 - 9));
3024 b1
= (tmp
>> 44) | (tmp
<< (64 - 44));
3028 b7
= (tmp
>> 39) | (tmp
<< (64 - 39));
3032 b5
= (tmp
>> 36) | (tmp
<< (64 - 36));
3036 b3
= (tmp
>> 49) | (tmp
<< (64 - 49));
3040 b1
= (tmp
>> 17) | (tmp
<< (64 - 17));
3044 b3
= (tmp
>> 42) | (tmp
<< (64 - 42));
3048 b5
= (tmp
>> 14) | (tmp
<< (64 - 14));
3052 b7
= (tmp
>> 27) | (tmp
<< (64 - 27));
3056 b1
= (tmp
>> 33) | (tmp
<< (64 - 33));
3060 b7
= (tmp
>> 37) | (tmp
<< (64 - 37));
3065 b5
= (tmp
>> 19) | (tmp
<< (64 - 19));
3070 b3
= (tmp
>> 36) | (tmp
<< (64 - 36));
3075 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
3080 b3
= (tmp
>> 22) | (tmp
<< (64 - 22));
3084 b5
= (tmp
>> 56) | (tmp
<< (64 - 56));
3088 b7
= (tmp
>> 35) | (tmp
<< (64 - 35));
3092 b1
= (tmp
>> 8) | (tmp
<< (64 - 8));
3096 b7
= (tmp
>> 43) | (tmp
<< (64 - 43));
3100 b5
= (tmp
>> 39) | (tmp
<< (64 - 39));
3104 b3
= (tmp
>> 29) | (tmp
<< (64 - 29));
3108 b1
= (tmp
>> 25) | (tmp
<< (64 - 25));
3112 b3
= (tmp
>> 17) | (tmp
<< (64 - 17));
3116 b5
= (tmp
>> 10) | (tmp
<< (64 - 10));
3120 b7
= (tmp
>> 50) | (tmp
<< (64 - 50));
3124 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
3128 b7
= (tmp
>> 24) | (tmp
<< (64 - 24));
3133 b5
= (tmp
>> 34) | (tmp
<< (64 - 34));
3138 b3
= (tmp
>> 30) | (tmp
<< (64 - 30));
3143 b1
= (tmp
>> 39) | (tmp
<< (64 - 39));
3148 b3
= (tmp
>> 56) | (tmp
<< (64 - 56));
3152 b5
= (tmp
>> 54) | (tmp
<< (64 - 54));
3156 b7
= (tmp
>> 9) | (tmp
<< (64 - 9));
3160 b1
= (tmp
>> 44) | (tmp
<< (64 - 44));
3164 b7
= (tmp
>> 39) | (tmp
<< (64 - 39));
3168 b5
= (tmp
>> 36) | (tmp
<< (64 - 36));
3172 b3
= (tmp
>> 49) | (tmp
<< (64 - 49));
3176 b1
= (tmp
>> 17) | (tmp
<< (64 - 17));
3180 b3
= (tmp
>> 42) | (tmp
<< (64 - 42));
3184 b5
= (tmp
>> 14) | (tmp
<< (64 - 14));
3188 b7
= (tmp
>> 27) | (tmp
<< (64 - 27));
3192 b1
= (tmp
>> 33) | (tmp
<< (64 - 33));
3196 b7
= (tmp
>> 37) | (tmp
<< (64 - 37));
3201 b5
= (tmp
>> 19) | (tmp
<< (64 - 19));
3206 b3
= (tmp
>> 36) | (tmp
<< (64 - 36));
3211 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
3216 b3
= (tmp
>> 22) | (tmp
<< (64 - 22));
3220 b5
= (tmp
>> 56) | (tmp
<< (64 - 56));
3224 b7
= (tmp
>> 35) | (tmp
<< (64 - 35));
3228 b1
= (tmp
>> 8) | (tmp
<< (64 - 8));
3232 b7
= (tmp
>> 43) | (tmp
<< (64 - 43));
3236 b5
= (tmp
>> 39) | (tmp
<< (64 - 39));
3240 b3
= (tmp
>> 29) | (tmp
<< (64 - 29));
3244 b1
= (tmp
>> 25) | (tmp
<< (64 - 25));
3248 b3
= (tmp
>> 17) | (tmp
<< (64 - 17));
3252 b5
= (tmp
>> 10) | (tmp
<< (64 - 10));
3256 b7
= (tmp
>> 50) | (tmp
<< (64 - 50));
3260 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
3264 b7
= (tmp
>> 24) | (tmp
<< (64 - 24));
3269 b5
= (tmp
>> 34) | (tmp
<< (64 - 34));
3274 b3
= (tmp
>> 30) | (tmp
<< (64 - 30));
3279 b1
= (tmp
>> 39) | (tmp
<< (64 - 39));
3284 b3
= (tmp
>> 56) | (tmp
<< (64 - 56));
3288 b5
= (tmp
>> 54) | (tmp
<< (64 - 54));
3292 b7
= (tmp
>> 9) | (tmp
<< (64 - 9));
3296 b1
= (tmp
>> 44) | (tmp
<< (64 - 44));
3300 b7
= (tmp
>> 39) | (tmp
<< (64 - 39));
3304 b5
= (tmp
>> 36) | (tmp
<< (64 - 36));
3308 b3
= (tmp
>> 49) | (tmp
<< (64 - 49));
3312 b1
= (tmp
>> 17) | (tmp
<< (64 - 17));
3316 b3
= (tmp
>> 42) | (tmp
<< (64 - 42));
3320 b5
= (tmp
>> 14) | (tmp
<< (64 - 14));
3324 b7
= (tmp
>> 27) | (tmp
<< (64 - 27));
3328 b1
= (tmp
>> 33) | (tmp
<< (64 - 33));
3332 b7
= (tmp
>> 37) | (tmp
<< (64 - 37));
3337 b5
= (tmp
>> 19) | (tmp
<< (64 - 19));
3342 b3
= (tmp
>> 36) | (tmp
<< (64 - 36));
3347 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
3362 void threefish_encrypt_1024(struct threefish_key
*key_ctx
, u64
*input
,
3365 u64 b0
= input
[0], b1
= input
[1],
3366 b2
= input
[2], b3
= input
[3],
3367 b4
= input
[4], b5
= input
[5],
3368 b6
= input
[6], b7
= input
[7],
3369 b8
= input
[8], b9
= input
[9],
3370 b10
= input
[10], b11
= input
[11],
3371 b12
= input
[12], b13
= input
[13],
3372 b14
= input
[14], b15
= input
[15];
3373 u64 k0
= key_ctx
->key
[0], k1
= key_ctx
->key
[1],
3374 k2
= key_ctx
->key
[2], k3
= key_ctx
->key
[3],
3375 k4
= key_ctx
->key
[4], k5
= key_ctx
->key
[5],
3376 k6
= key_ctx
->key
[6], k7
= key_ctx
->key
[7],
3377 k8
= key_ctx
->key
[8], k9
= key_ctx
->key
[9],
3378 k10
= key_ctx
->key
[10], k11
= key_ctx
->key
[11],
3379 k12
= key_ctx
->key
[12], k13
= key_ctx
->key
[13],
3380 k14
= key_ctx
->key
[14], k15
= key_ctx
->key
[15],
3381 k16
= key_ctx
->key
[16];
3382 u64 t0
= key_ctx
->tweak
[0], t1
= key_ctx
->tweak
[1],
3383 t2
= key_ctx
->tweak
[2];
3387 b1
= rol64(b1
, 24) ^ b0
;
3391 b3
= rol64(b3
, 13) ^ b2
;
3395 b5
= rol64(b5
, 8) ^ b4
;
3399 b7
= rol64(b7
, 47) ^ b6
;
3403 b9
= rol64(b9
, 8) ^ b8
;
3407 b11
= rol64(b11
, 17) ^ b10
;
3411 b13
= rol64(b13
, 22) ^ b12
;
3414 b14
+= b15
+ k14
+ t1
;
3415 b15
= rol64(b15
, 37) ^ b14
;
3418 b9
= rol64(b9
, 38) ^ b0
;
3421 b13
= rol64(b13
, 19) ^ b2
;
3424 b11
= rol64(b11
, 10) ^ b6
;
3427 b15
= rol64(b15
, 55) ^ b4
;
3430 b7
= rol64(b7
, 49) ^ b10
;
3433 b3
= rol64(b3
, 18) ^ b12
;
3436 b5
= rol64(b5
, 23) ^ b14
;
3439 b1
= rol64(b1
, 52) ^ b8
;
3442 b7
= rol64(b7
, 33) ^ b0
;
3445 b5
= rol64(b5
, 4) ^ b2
;
3448 b3
= rol64(b3
, 51) ^ b4
;
3451 b1
= rol64(b1
, 13) ^ b6
;
3454 b15
= rol64(b15
, 34) ^ b12
;
3457 b13
= rol64(b13
, 41) ^ b14
;
3460 b11
= rol64(b11
, 59) ^ b8
;
3463 b9
= rol64(b9
, 17) ^ b10
;
3466 b15
= rol64(b15
, 5) ^ b0
;
3469 b11
= rol64(b11
, 20) ^ b2
;
3472 b13
= rol64(b13
, 48) ^ b6
;
3475 b9
= rol64(b9
, 41) ^ b4
;
3478 b1
= rol64(b1
, 47) ^ b14
;
3481 b5
= rol64(b5
, 28) ^ b8
;
3484 b3
= rol64(b3
, 16) ^ b10
;
3487 b7
= rol64(b7
, 25) ^ b12
;
3491 b1
= rol64(b1
, 41) ^ b0
;
3495 b3
= rol64(b3
, 9) ^ b2
;
3499 b5
= rol64(b5
, 37) ^ b4
;
3503 b7
= rol64(b7
, 31) ^ b6
;
3507 b9
= rol64(b9
, 12) ^ b8
;
3511 b11
= rol64(b11
, 47) ^ b10
;
3515 b13
= rol64(b13
, 44) ^ b12
;
3518 b14
+= b15
+ k15
+ t2
;
3519 b15
= rol64(b15
, 30) ^ b14
;
3522 b9
= rol64(b9
, 16) ^ b0
;
3525 b13
= rol64(b13
, 34) ^ b2
;
3528 b11
= rol64(b11
, 56) ^ b6
;
3531 b15
= rol64(b15
, 51) ^ b4
;
3534 b7
= rol64(b7
, 4) ^ b10
;
3537 b3
= rol64(b3
, 53) ^ b12
;
3540 b5
= rol64(b5
, 42) ^ b14
;
3543 b1
= rol64(b1
, 41) ^ b8
;
3546 b7
= rol64(b7
, 31) ^ b0
;
3549 b5
= rol64(b5
, 44) ^ b2
;
3552 b3
= rol64(b3
, 47) ^ b4
;
3555 b1
= rol64(b1
, 46) ^ b6
;
3558 b15
= rol64(b15
, 19) ^ b12
;
3561 b13
= rol64(b13
, 42) ^ b14
;
3564 b11
= rol64(b11
, 44) ^ b8
;
3567 b9
= rol64(b9
, 25) ^ b10
;
3570 b15
= rol64(b15
, 9) ^ b0
;
3573 b11
= rol64(b11
, 48) ^ b2
;
3576 b13
= rol64(b13
, 35) ^ b6
;
3579 b9
= rol64(b9
, 52) ^ b4
;
3582 b1
= rol64(b1
, 23) ^ b14
;
3585 b5
= rol64(b5
, 31) ^ b8
;
3588 b3
= rol64(b3
, 37) ^ b10
;
3591 b7
= rol64(b7
, 20) ^ b12
;
3595 b1
= rol64(b1
, 24) ^ b0
;
3599 b3
= rol64(b3
, 13) ^ b2
;
3603 b5
= rol64(b5
, 8) ^ b4
;
3607 b7
= rol64(b7
, 47) ^ b6
;
3611 b9
= rol64(b9
, 8) ^ b8
;
3615 b11
= rol64(b11
, 17) ^ b10
;
3619 b13
= rol64(b13
, 22) ^ b12
;
3622 b14
+= b15
+ k16
+ t0
;
3623 b15
= rol64(b15
, 37) ^ b14
;
3626 b9
= rol64(b9
, 38) ^ b0
;
3629 b13
= rol64(b13
, 19) ^ b2
;
3632 b11
= rol64(b11
, 10) ^ b6
;
3635 b15
= rol64(b15
, 55) ^ b4
;
3638 b7
= rol64(b7
, 49) ^ b10
;
3641 b3
= rol64(b3
, 18) ^ b12
;
3644 b5
= rol64(b5
, 23) ^ b14
;
3647 b1
= rol64(b1
, 52) ^ b8
;
3650 b7
= rol64(b7
, 33) ^ b0
;
3653 b5
= rol64(b5
, 4) ^ b2
;
3656 b3
= rol64(b3
, 51) ^ b4
;
3659 b1
= rol64(b1
, 13) ^ b6
;
3662 b15
= rol64(b15
, 34) ^ b12
;
3665 b13
= rol64(b13
, 41) ^ b14
;
3668 b11
= rol64(b11
, 59) ^ b8
;
3671 b9
= rol64(b9
, 17) ^ b10
;
3674 b15
= rol64(b15
, 5) ^ b0
;
3677 b11
= rol64(b11
, 20) ^ b2
;
3680 b13
= rol64(b13
, 48) ^ b6
;
3683 b9
= rol64(b9
, 41) ^ b4
;
3686 b1
= rol64(b1
, 47) ^ b14
;
3689 b5
= rol64(b5
, 28) ^ b8
;
3692 b3
= rol64(b3
, 16) ^ b10
;
3695 b7
= rol64(b7
, 25) ^ b12
;
3699 b1
= rol64(b1
, 41) ^ b0
;
3703 b3
= rol64(b3
, 9) ^ b2
;
3707 b5
= rol64(b5
, 37) ^ b4
;
3711 b7
= rol64(b7
, 31) ^ b6
;
3715 b9
= rol64(b9
, 12) ^ b8
;
3719 b11
= rol64(b11
, 47) ^ b10
;
3723 b13
= rol64(b13
, 44) ^ b12
;
3726 b14
+= b15
+ k0
+ t1
;
3727 b15
= rol64(b15
, 30) ^ b14
;
3730 b9
= rol64(b9
, 16) ^ b0
;
3733 b13
= rol64(b13
, 34) ^ b2
;
3736 b11
= rol64(b11
, 56) ^ b6
;
3739 b15
= rol64(b15
, 51) ^ b4
;
3742 b7
= rol64(b7
, 4) ^ b10
;
3745 b3
= rol64(b3
, 53) ^ b12
;
3748 b5
= rol64(b5
, 42) ^ b14
;
3751 b1
= rol64(b1
, 41) ^ b8
;
3754 b7
= rol64(b7
, 31) ^ b0
;
3757 b5
= rol64(b5
, 44) ^ b2
;
3760 b3
= rol64(b3
, 47) ^ b4
;
3763 b1
= rol64(b1
, 46) ^ b6
;
3766 b15
= rol64(b15
, 19) ^ b12
;
3769 b13
= rol64(b13
, 42) ^ b14
;
3772 b11
= rol64(b11
, 44) ^ b8
;
3775 b9
= rol64(b9
, 25) ^ b10
;
3778 b15
= rol64(b15
, 9) ^ b0
;
3781 b11
= rol64(b11
, 48) ^ b2
;
3784 b13
= rol64(b13
, 35) ^ b6
;
3787 b9
= rol64(b9
, 52) ^ b4
;
3790 b1
= rol64(b1
, 23) ^ b14
;
3793 b5
= rol64(b5
, 31) ^ b8
;
3796 b3
= rol64(b3
, 37) ^ b10
;
3799 b7
= rol64(b7
, 20) ^ b12
;
3803 b1
= rol64(b1
, 24) ^ b0
;
3807 b3
= rol64(b3
, 13) ^ b2
;
3811 b5
= rol64(b5
, 8) ^ b4
;
3815 b7
= rol64(b7
, 47) ^ b6
;
3819 b9
= rol64(b9
, 8) ^ b8
;
3823 b11
= rol64(b11
, 17) ^ b10
;
3827 b13
= rol64(b13
, 22) ^ b12
;
3830 b14
+= b15
+ k1
+ t2
;
3831 b15
= rol64(b15
, 37) ^ b14
;
3834 b9
= rol64(b9
, 38) ^ b0
;
3837 b13
= rol64(b13
, 19) ^ b2
;
3840 b11
= rol64(b11
, 10) ^ b6
;
3843 b15
= rol64(b15
, 55) ^ b4
;
3846 b7
= rol64(b7
, 49) ^ b10
;
3849 b3
= rol64(b3
, 18) ^ b12
;
3852 b5
= rol64(b5
, 23) ^ b14
;
3855 b1
= rol64(b1
, 52) ^ b8
;
3858 b7
= rol64(b7
, 33) ^ b0
;
3861 b5
= rol64(b5
, 4) ^ b2
;
3864 b3
= rol64(b3
, 51) ^ b4
;
3867 b1
= rol64(b1
, 13) ^ b6
;
3870 b15
= rol64(b15
, 34) ^ b12
;
3873 b13
= rol64(b13
, 41) ^ b14
;
3876 b11
= rol64(b11
, 59) ^ b8
;
3879 b9
= rol64(b9
, 17) ^ b10
;
3882 b15
= rol64(b15
, 5) ^ b0
;
3885 b11
= rol64(b11
, 20) ^ b2
;
3888 b13
= rol64(b13
, 48) ^ b6
;
3891 b9
= rol64(b9
, 41) ^ b4
;
3894 b1
= rol64(b1
, 47) ^ b14
;
3897 b5
= rol64(b5
, 28) ^ b8
;
3900 b3
= rol64(b3
, 16) ^ b10
;
3903 b7
= rol64(b7
, 25) ^ b12
;
3907 b1
= rol64(b1
, 41) ^ b0
;
3911 b3
= rol64(b3
, 9) ^ b2
;
3915 b5
= rol64(b5
, 37) ^ b4
;
3919 b7
= rol64(b7
, 31) ^ b6
;
3923 b9
= rol64(b9
, 12) ^ b8
;
3927 b11
= rol64(b11
, 47) ^ b10
;
3931 b13
= rol64(b13
, 44) ^ b12
;
3934 b14
+= b15
+ k2
+ t0
;
3935 b15
= rol64(b15
, 30) ^ b14
;
3938 b9
= rol64(b9
, 16) ^ b0
;
3941 b13
= rol64(b13
, 34) ^ b2
;
3944 b11
= rol64(b11
, 56) ^ b6
;
3947 b15
= rol64(b15
, 51) ^ b4
;
3950 b7
= rol64(b7
, 4) ^ b10
;
3953 b3
= rol64(b3
, 53) ^ b12
;
3956 b5
= rol64(b5
, 42) ^ b14
;
3959 b1
= rol64(b1
, 41) ^ b8
;
3962 b7
= rol64(b7
, 31) ^ b0
;
3965 b5
= rol64(b5
, 44) ^ b2
;
3968 b3
= rol64(b3
, 47) ^ b4
;
3971 b1
= rol64(b1
, 46) ^ b6
;
3974 b15
= rol64(b15
, 19) ^ b12
;
3977 b13
= rol64(b13
, 42) ^ b14
;
3980 b11
= rol64(b11
, 44) ^ b8
;
3983 b9
= rol64(b9
, 25) ^ b10
;
3986 b15
= rol64(b15
, 9) ^ b0
;
3989 b11
= rol64(b11
, 48) ^ b2
;
3992 b13
= rol64(b13
, 35) ^ b6
;
3995 b9
= rol64(b9
, 52) ^ b4
;
3998 b1
= rol64(b1
, 23) ^ b14
;
4001 b5
= rol64(b5
, 31) ^ b8
;
4004 b3
= rol64(b3
, 37) ^ b10
;
4007 b7
= rol64(b7
, 20) ^ b12
;
4011 b1
= rol64(b1
, 24) ^ b0
;
4015 b3
= rol64(b3
, 13) ^ b2
;
4019 b5
= rol64(b5
, 8) ^ b4
;
4023 b7
= rol64(b7
, 47) ^ b6
;
4027 b9
= rol64(b9
, 8) ^ b8
;
4031 b11
= rol64(b11
, 17) ^ b10
;
4035 b13
= rol64(b13
, 22) ^ b12
;
4038 b14
+= b15
+ k3
+ t1
;
4039 b15
= rol64(b15
, 37) ^ b14
;
4042 b9
= rol64(b9
, 38) ^ b0
;
4045 b13
= rol64(b13
, 19) ^ b2
;
4048 b11
= rol64(b11
, 10) ^ b6
;
4051 b15
= rol64(b15
, 55) ^ b4
;
4054 b7
= rol64(b7
, 49) ^ b10
;
4057 b3
= rol64(b3
, 18) ^ b12
;
4060 b5
= rol64(b5
, 23) ^ b14
;
4063 b1
= rol64(b1
, 52) ^ b8
;
4066 b7
= rol64(b7
, 33) ^ b0
;
4069 b5
= rol64(b5
, 4) ^ b2
;
4072 b3
= rol64(b3
, 51) ^ b4
;
4075 b1
= rol64(b1
, 13) ^ b6
;
4078 b15
= rol64(b15
, 34) ^ b12
;
4081 b13
= rol64(b13
, 41) ^ b14
;
4084 b11
= rol64(b11
, 59) ^ b8
;
4087 b9
= rol64(b9
, 17) ^ b10
;
4090 b15
= rol64(b15
, 5) ^ b0
;
4093 b11
= rol64(b11
, 20) ^ b2
;
4096 b13
= rol64(b13
, 48) ^ b6
;
4099 b9
= rol64(b9
, 41) ^ b4
;
4102 b1
= rol64(b1
, 47) ^ b14
;
4105 b5
= rol64(b5
, 28) ^ b8
;
4108 b3
= rol64(b3
, 16) ^ b10
;
4111 b7
= rol64(b7
, 25) ^ b12
;
4115 b1
= rol64(b1
, 41) ^ b0
;
4119 b3
= rol64(b3
, 9) ^ b2
;
4123 b5
= rol64(b5
, 37) ^ b4
;
4127 b7
= rol64(b7
, 31) ^ b6
;
4131 b9
= rol64(b9
, 12) ^ b8
;
4135 b11
= rol64(b11
, 47) ^ b10
;
4139 b13
= rol64(b13
, 44) ^ b12
;
4142 b14
+= b15
+ k4
+ t2
;
4143 b15
= rol64(b15
, 30) ^ b14
;
4146 b9
= rol64(b9
, 16) ^ b0
;
4149 b13
= rol64(b13
, 34) ^ b2
;
4152 b11
= rol64(b11
, 56) ^ b6
;
4155 b15
= rol64(b15
, 51) ^ b4
;
4158 b7
= rol64(b7
, 4) ^ b10
;
4161 b3
= rol64(b3
, 53) ^ b12
;
4164 b5
= rol64(b5
, 42) ^ b14
;
4167 b1
= rol64(b1
, 41) ^ b8
;
4170 b7
= rol64(b7
, 31) ^ b0
;
4173 b5
= rol64(b5
, 44) ^ b2
;
4176 b3
= rol64(b3
, 47) ^ b4
;
4179 b1
= rol64(b1
, 46) ^ b6
;
4182 b15
= rol64(b15
, 19) ^ b12
;
4185 b13
= rol64(b13
, 42) ^ b14
;
4188 b11
= rol64(b11
, 44) ^ b8
;
4191 b9
= rol64(b9
, 25) ^ b10
;
4194 b15
= rol64(b15
, 9) ^ b0
;
4197 b11
= rol64(b11
, 48) ^ b2
;
4200 b13
= rol64(b13
, 35) ^ b6
;
4203 b9
= rol64(b9
, 52) ^ b4
;
4206 b1
= rol64(b1
, 23) ^ b14
;
4209 b5
= rol64(b5
, 31) ^ b8
;
4212 b3
= rol64(b3
, 37) ^ b10
;
4215 b7
= rol64(b7
, 20) ^ b12
;
4219 b1
= rol64(b1
, 24) ^ b0
;
4223 b3
= rol64(b3
, 13) ^ b2
;
4227 b5
= rol64(b5
, 8) ^ b4
;
4231 b7
= rol64(b7
, 47) ^ b6
;
4235 b9
= rol64(b9
, 8) ^ b8
;
4239 b11
= rol64(b11
, 17) ^ b10
;
4243 b13
= rol64(b13
, 22) ^ b12
;
4246 b14
+= b15
+ k5
+ t0
;
4247 b15
= rol64(b15
, 37) ^ b14
;
4250 b9
= rol64(b9
, 38) ^ b0
;
4253 b13
= rol64(b13
, 19) ^ b2
;
4256 b11
= rol64(b11
, 10) ^ b6
;
4259 b15
= rol64(b15
, 55) ^ b4
;
4262 b7
= rol64(b7
, 49) ^ b10
;
4265 b3
= rol64(b3
, 18) ^ b12
;
4268 b5
= rol64(b5
, 23) ^ b14
;
4271 b1
= rol64(b1
, 52) ^ b8
;
4274 b7
= rol64(b7
, 33) ^ b0
;
4277 b5
= rol64(b5
, 4) ^ b2
;
4280 b3
= rol64(b3
, 51) ^ b4
;
4283 b1
= rol64(b1
, 13) ^ b6
;
4286 b15
= rol64(b15
, 34) ^ b12
;
4289 b13
= rol64(b13
, 41) ^ b14
;
4292 b11
= rol64(b11
, 59) ^ b8
;
4295 b9
= rol64(b9
, 17) ^ b10
;
4298 b15
= rol64(b15
, 5) ^ b0
;
4301 b11
= rol64(b11
, 20) ^ b2
;
4304 b13
= rol64(b13
, 48) ^ b6
;
4307 b9
= rol64(b9
, 41) ^ b4
;
4310 b1
= rol64(b1
, 47) ^ b14
;
4313 b5
= rol64(b5
, 28) ^ b8
;
4316 b3
= rol64(b3
, 16) ^ b10
;
4319 b7
= rol64(b7
, 25) ^ b12
;
4323 b1
= rol64(b1
, 41) ^ b0
;
4327 b3
= rol64(b3
, 9) ^ b2
;
4331 b5
= rol64(b5
, 37) ^ b4
;
4335 b7
= rol64(b7
, 31) ^ b6
;
4339 b9
= rol64(b9
, 12) ^ b8
;
4343 b11
= rol64(b11
, 47) ^ b10
;
4347 b13
= rol64(b13
, 44) ^ b12
;
4350 b14
+= b15
+ k6
+ t1
;
4351 b15
= rol64(b15
, 30) ^ b14
;
4354 b9
= rol64(b9
, 16) ^ b0
;
4357 b13
= rol64(b13
, 34) ^ b2
;
4360 b11
= rol64(b11
, 56) ^ b6
;
4363 b15
= rol64(b15
, 51) ^ b4
;
4366 b7
= rol64(b7
, 4) ^ b10
;
4369 b3
= rol64(b3
, 53) ^ b12
;
4372 b5
= rol64(b5
, 42) ^ b14
;
4375 b1
= rol64(b1
, 41) ^ b8
;
4378 b7
= rol64(b7
, 31) ^ b0
;
4381 b5
= rol64(b5
, 44) ^ b2
;
4384 b3
= rol64(b3
, 47) ^ b4
;
4387 b1
= rol64(b1
, 46) ^ b6
;
4390 b15
= rol64(b15
, 19) ^ b12
;
4393 b13
= rol64(b13
, 42) ^ b14
;
4396 b11
= rol64(b11
, 44) ^ b8
;
4399 b9
= rol64(b9
, 25) ^ b10
;
4402 b15
= rol64(b15
, 9) ^ b0
;
4405 b11
= rol64(b11
, 48) ^ b2
;
4408 b13
= rol64(b13
, 35) ^ b6
;
4411 b9
= rol64(b9
, 52) ^ b4
;
4414 b1
= rol64(b1
, 23) ^ b14
;
4417 b5
= rol64(b5
, 31) ^ b8
;
4420 b3
= rol64(b3
, 37) ^ b10
;
4423 b7
= rol64(b7
, 20) ^ b12
;
4427 b1
= rol64(b1
, 24) ^ b0
;
4431 b3
= rol64(b3
, 13) ^ b2
;
4435 b5
= rol64(b5
, 8) ^ b4
;
4439 b7
= rol64(b7
, 47) ^ b6
;
4443 b9
= rol64(b9
, 8) ^ b8
;
4447 b11
= rol64(b11
, 17) ^ b10
;
4451 b13
= rol64(b13
, 22) ^ b12
;
4454 b14
+= b15
+ k7
+ t2
;
4455 b15
= rol64(b15
, 37) ^ b14
;
4458 b9
= rol64(b9
, 38) ^ b0
;
4461 b13
= rol64(b13
, 19) ^ b2
;
4464 b11
= rol64(b11
, 10) ^ b6
;
4467 b15
= rol64(b15
, 55) ^ b4
;
4470 b7
= rol64(b7
, 49) ^ b10
;
4473 b3
= rol64(b3
, 18) ^ b12
;
4476 b5
= rol64(b5
, 23) ^ b14
;
4479 b1
= rol64(b1
, 52) ^ b8
;
4482 b7
= rol64(b7
, 33) ^ b0
;
4485 b5
= rol64(b5
, 4) ^ b2
;
4488 b3
= rol64(b3
, 51) ^ b4
;
4491 b1
= rol64(b1
, 13) ^ b6
;
4494 b15
= rol64(b15
, 34) ^ b12
;
4497 b13
= rol64(b13
, 41) ^ b14
;
4500 b11
= rol64(b11
, 59) ^ b8
;
4503 b9
= rol64(b9
, 17) ^ b10
;
4506 b15
= rol64(b15
, 5) ^ b0
;
4509 b11
= rol64(b11
, 20) ^ b2
;
4512 b13
= rol64(b13
, 48) ^ b6
;
4515 b9
= rol64(b9
, 41) ^ b4
;
4518 b1
= rol64(b1
, 47) ^ b14
;
4521 b5
= rol64(b5
, 28) ^ b8
;
4524 b3
= rol64(b3
, 16) ^ b10
;
4527 b7
= rol64(b7
, 25) ^ b12
;
4531 b1
= rol64(b1
, 41) ^ b0
;
4535 b3
= rol64(b3
, 9) ^ b2
;
4539 b5
= rol64(b5
, 37) ^ b4
;
4543 b7
= rol64(b7
, 31) ^ b6
;
4547 b9
= rol64(b9
, 12) ^ b8
;
4551 b11
= rol64(b11
, 47) ^ b10
;
4555 b13
= rol64(b13
, 44) ^ b12
;
4558 b14
+= b15
+ k8
+ t0
;
4559 b15
= rol64(b15
, 30) ^ b14
;
4562 b9
= rol64(b9
, 16) ^ b0
;
4565 b13
= rol64(b13
, 34) ^ b2
;
4568 b11
= rol64(b11
, 56) ^ b6
;
4571 b15
= rol64(b15
, 51) ^ b4
;
4574 b7
= rol64(b7
, 4) ^ b10
;
4577 b3
= rol64(b3
, 53) ^ b12
;
4580 b5
= rol64(b5
, 42) ^ b14
;
4583 b1
= rol64(b1
, 41) ^ b8
;
4586 b7
= rol64(b7
, 31) ^ b0
;
4589 b5
= rol64(b5
, 44) ^ b2
;
4592 b3
= rol64(b3
, 47) ^ b4
;
4595 b1
= rol64(b1
, 46) ^ b6
;
4598 b15
= rol64(b15
, 19) ^ b12
;
4601 b13
= rol64(b13
, 42) ^ b14
;
4604 b11
= rol64(b11
, 44) ^ b8
;
4607 b9
= rol64(b9
, 25) ^ b10
;
4610 b15
= rol64(b15
, 9) ^ b0
;
4613 b11
= rol64(b11
, 48) ^ b2
;
4616 b13
= rol64(b13
, 35) ^ b6
;
4619 b9
= rol64(b9
, 52) ^ b4
;
4622 b1
= rol64(b1
, 23) ^ b14
;
4625 b5
= rol64(b5
, 31) ^ b8
;
4628 b3
= rol64(b3
, 37) ^ b10
;
4631 b7
= rol64(b7
, 20) ^ b12
;
4635 b1
= rol64(b1
, 24) ^ b0
;
4639 b3
= rol64(b3
, 13) ^ b2
;
4643 b5
= rol64(b5
, 8) ^ b4
;
4647 b7
= rol64(b7
, 47) ^ b6
;
4651 b9
= rol64(b9
, 8) ^ b8
;
4655 b11
= rol64(b11
, 17) ^ b10
;
4659 b13
= rol64(b13
, 22) ^ b12
;
4662 b14
+= b15
+ k9
+ t1
;
4663 b15
= rol64(b15
, 37) ^ b14
;
4666 b9
= rol64(b9
, 38) ^ b0
;
4669 b13
= rol64(b13
, 19) ^ b2
;
4672 b11
= rol64(b11
, 10) ^ b6
;
4675 b15
= rol64(b15
, 55) ^ b4
;
4678 b7
= rol64(b7
, 49) ^ b10
;
4681 b3
= rol64(b3
, 18) ^ b12
;
4684 b5
= rol64(b5
, 23) ^ b14
;
4687 b1
= rol64(b1
, 52) ^ b8
;
4690 b7
= rol64(b7
, 33) ^ b0
;
4693 b5
= rol64(b5
, 4) ^ b2
;
4696 b3
= rol64(b3
, 51) ^ b4
;
4699 b1
= rol64(b1
, 13) ^ b6
;
4702 b15
= rol64(b15
, 34) ^ b12
;
4705 b13
= rol64(b13
, 41) ^ b14
;
4708 b11
= rol64(b11
, 59) ^ b8
;
4711 b9
= rol64(b9
, 17) ^ b10
;
4714 b15
= rol64(b15
, 5) ^ b0
;
4717 b11
= rol64(b11
, 20) ^ b2
;
4720 b13
= rol64(b13
, 48) ^ b6
;
4723 b9
= rol64(b9
, 41) ^ b4
;
4726 b1
= rol64(b1
, 47) ^ b14
;
4729 b5
= rol64(b5
, 28) ^ b8
;
4732 b3
= rol64(b3
, 16) ^ b10
;
4735 b7
= rol64(b7
, 25) ^ b12
;
4739 b1
= rol64(b1
, 41) ^ b0
;
4743 b3
= rol64(b3
, 9) ^ b2
;
4747 b5
= rol64(b5
, 37) ^ b4
;
4751 b7
= rol64(b7
, 31) ^ b6
;
4755 b9
= rol64(b9
, 12) ^ b8
;
4759 b11
= rol64(b11
, 47) ^ b10
;
4763 b13
= rol64(b13
, 44) ^ b12
;
4766 b14
+= b15
+ k10
+ t2
;
4767 b15
= rol64(b15
, 30) ^ b14
;
4770 b9
= rol64(b9
, 16) ^ b0
;
4773 b13
= rol64(b13
, 34) ^ b2
;
4776 b11
= rol64(b11
, 56) ^ b6
;
4779 b15
= rol64(b15
, 51) ^ b4
;
4782 b7
= rol64(b7
, 4) ^ b10
;
4785 b3
= rol64(b3
, 53) ^ b12
;
4788 b5
= rol64(b5
, 42) ^ b14
;
4791 b1
= rol64(b1
, 41) ^ b8
;
4794 b7
= rol64(b7
, 31) ^ b0
;
4797 b5
= rol64(b5
, 44) ^ b2
;
4800 b3
= rol64(b3
, 47) ^ b4
;
4803 b1
= rol64(b1
, 46) ^ b6
;
4806 b15
= rol64(b15
, 19) ^ b12
;
4809 b13
= rol64(b13
, 42) ^ b14
;
4812 b11
= rol64(b11
, 44) ^ b8
;
4815 b9
= rol64(b9
, 25) ^ b10
;
4818 b15
= rol64(b15
, 9) ^ b0
;
4821 b11
= rol64(b11
, 48) ^ b2
;
4824 b13
= rol64(b13
, 35) ^ b6
;
4827 b9
= rol64(b9
, 52) ^ b4
;
4830 b1
= rol64(b1
, 23) ^ b14
;
4833 b5
= rol64(b5
, 31) ^ b8
;
4836 b3
= rol64(b3
, 37) ^ b10
;
4839 b7
= rol64(b7
, 20) ^ b12
;
4843 b1
= rol64(b1
, 24) ^ b0
;
4847 b3
= rol64(b3
, 13) ^ b2
;
4851 b5
= rol64(b5
, 8) ^ b4
;
4855 b7
= rol64(b7
, 47) ^ b6
;
4859 b9
= rol64(b9
, 8) ^ b8
;
4863 b11
= rol64(b11
, 17) ^ b10
;
4867 b13
= rol64(b13
, 22) ^ b12
;
4870 b14
+= b15
+ k11
+ t0
;
4871 b15
= rol64(b15
, 37) ^ b14
;
4874 b9
= rol64(b9
, 38) ^ b0
;
4877 b13
= rol64(b13
, 19) ^ b2
;
4880 b11
= rol64(b11
, 10) ^ b6
;
4883 b15
= rol64(b15
, 55) ^ b4
;
4886 b7
= rol64(b7
, 49) ^ b10
;
4889 b3
= rol64(b3
, 18) ^ b12
;
4892 b5
= rol64(b5
, 23) ^ b14
;
4895 b1
= rol64(b1
, 52) ^ b8
;
4898 b7
= rol64(b7
, 33) ^ b0
;
4901 b5
= rol64(b5
, 4) ^ b2
;
4904 b3
= rol64(b3
, 51) ^ b4
;
4907 b1
= rol64(b1
, 13) ^ b6
;
4910 b15
= rol64(b15
, 34) ^ b12
;
4913 b13
= rol64(b13
, 41) ^ b14
;
4916 b11
= rol64(b11
, 59) ^ b8
;
4919 b9
= rol64(b9
, 17) ^ b10
;
4922 b15
= rol64(b15
, 5) ^ b0
;
4925 b11
= rol64(b11
, 20) ^ b2
;
4928 b13
= rol64(b13
, 48) ^ b6
;
4931 b9
= rol64(b9
, 41) ^ b4
;
4934 b1
= rol64(b1
, 47) ^ b14
;
4937 b5
= rol64(b5
, 28) ^ b8
;
4940 b3
= rol64(b3
, 16) ^ b10
;
4943 b7
= rol64(b7
, 25) ^ b12
;
4947 b1
= rol64(b1
, 41) ^ b0
;
4951 b3
= rol64(b3
, 9) ^ b2
;
4955 b5
= rol64(b5
, 37) ^ b4
;
4959 b7
= rol64(b7
, 31) ^ b6
;
4963 b9
= rol64(b9
, 12) ^ b8
;
4967 b11
= rol64(b11
, 47) ^ b10
;
4971 b13
= rol64(b13
, 44) ^ b12
;
4974 b14
+= b15
+ k12
+ t1
;
4975 b15
= rol64(b15
, 30) ^ b14
;
4978 b9
= rol64(b9
, 16) ^ b0
;
4981 b13
= rol64(b13
, 34) ^ b2
;
4984 b11
= rol64(b11
, 56) ^ b6
;
4987 b15
= rol64(b15
, 51) ^ b4
;
4990 b7
= rol64(b7
, 4) ^ b10
;
4993 b3
= rol64(b3
, 53) ^ b12
;
4996 b5
= rol64(b5
, 42) ^ b14
;
4999 b1
= rol64(b1
, 41) ^ b8
;
5002 b7
= rol64(b7
, 31) ^ b0
;
5005 b5
= rol64(b5
, 44) ^ b2
;
5008 b3
= rol64(b3
, 47) ^ b4
;
5011 b1
= rol64(b1
, 46) ^ b6
;
5014 b15
= rol64(b15
, 19) ^ b12
;
5017 b13
= rol64(b13
, 42) ^ b14
;
5020 b11
= rol64(b11
, 44) ^ b8
;
5023 b9
= rol64(b9
, 25) ^ b10
;
5026 b15
= rol64(b15
, 9) ^ b0
;
5029 b11
= rol64(b11
, 48) ^ b2
;
5032 b13
= rol64(b13
, 35) ^ b6
;
5035 b9
= rol64(b9
, 52) ^ b4
;
5038 b1
= rol64(b1
, 23) ^ b14
;
5041 b5
= rol64(b5
, 31) ^ b8
;
5044 b3
= rol64(b3
, 37) ^ b10
;
5047 b7
= rol64(b7
, 20) ^ b12
;
5051 b1
= rol64(b1
, 24) ^ b0
;
5055 b3
= rol64(b3
, 13) ^ b2
;
5059 b5
= rol64(b5
, 8) ^ b4
;
5063 b7
= rol64(b7
, 47) ^ b6
;
5067 b9
= rol64(b9
, 8) ^ b8
;
5071 b11
= rol64(b11
, 17) ^ b10
;
5075 b13
= rol64(b13
, 22) ^ b12
;
5078 b14
+= b15
+ k13
+ t2
;
5079 b15
= rol64(b15
, 37) ^ b14
;
5082 b9
= rol64(b9
, 38) ^ b0
;
5085 b13
= rol64(b13
, 19) ^ b2
;
5088 b11
= rol64(b11
, 10) ^ b6
;
5091 b15
= rol64(b15
, 55) ^ b4
;
5094 b7
= rol64(b7
, 49) ^ b10
;
5097 b3
= rol64(b3
, 18) ^ b12
;
5100 b5
= rol64(b5
, 23) ^ b14
;
5103 b1
= rol64(b1
, 52) ^ b8
;
5106 b7
= rol64(b7
, 33) ^ b0
;
5109 b5
= rol64(b5
, 4) ^ b2
;
5112 b3
= rol64(b3
, 51) ^ b4
;
5115 b1
= rol64(b1
, 13) ^ b6
;
5118 b15
= rol64(b15
, 34) ^ b12
;
5121 b13
= rol64(b13
, 41) ^ b14
;
5124 b11
= rol64(b11
, 59) ^ b8
;
5127 b9
= rol64(b9
, 17) ^ b10
;
5130 b15
= rol64(b15
, 5) ^ b0
;
5133 b11
= rol64(b11
, 20) ^ b2
;
5136 b13
= rol64(b13
, 48) ^ b6
;
5139 b9
= rol64(b9
, 41) ^ b4
;
5142 b1
= rol64(b1
, 47) ^ b14
;
5145 b5
= rol64(b5
, 28) ^ b8
;
5148 b3
= rol64(b3
, 16) ^ b10
;
5151 b7
= rol64(b7
, 25) ^ b12
;
5155 b1
= rol64(b1
, 41) ^ b0
;
5159 b3
= rol64(b3
, 9) ^ b2
;
5163 b5
= rol64(b5
, 37) ^ b4
;
5167 b7
= rol64(b7
, 31) ^ b6
;
5171 b9
= rol64(b9
, 12) ^ b8
;
5175 b11
= rol64(b11
, 47) ^ b10
;
5179 b13
= rol64(b13
, 44) ^ b12
;
5182 b14
+= b15
+ k14
+ t0
;
5183 b15
= rol64(b15
, 30) ^ b14
;
5186 b9
= rol64(b9
, 16) ^ b0
;
5189 b13
= rol64(b13
, 34) ^ b2
;
5192 b11
= rol64(b11
, 56) ^ b6
;
5195 b15
= rol64(b15
, 51) ^ b4
;
5198 b7
= rol64(b7
, 4) ^ b10
;
5201 b3
= rol64(b3
, 53) ^ b12
;
5204 b5
= rol64(b5
, 42) ^ b14
;
5207 b1
= rol64(b1
, 41) ^ b8
;
5210 b7
= rol64(b7
, 31) ^ b0
;
5213 b5
= rol64(b5
, 44) ^ b2
;
5216 b3
= rol64(b3
, 47) ^ b4
;
5219 b1
= rol64(b1
, 46) ^ b6
;
5222 b15
= rol64(b15
, 19) ^ b12
;
5225 b13
= rol64(b13
, 42) ^ b14
;
5228 b11
= rol64(b11
, 44) ^ b8
;
5231 b9
= rol64(b9
, 25) ^ b10
;
5234 b15
= rol64(b15
, 9) ^ b0
;
5237 b11
= rol64(b11
, 48) ^ b2
;
5240 b13
= rol64(b13
, 35) ^ b6
;
5243 b9
= rol64(b9
, 52) ^ b4
;
5246 b1
= rol64(b1
, 23) ^ b14
;
5249 b5
= rol64(b5
, 31) ^ b8
;
5252 b3
= rol64(b3
, 37) ^ b10
;
5255 b7
= rol64(b7
, 20) ^ b12
;
5259 b1
= rol64(b1
, 24) ^ b0
;
5263 b3
= rol64(b3
, 13) ^ b2
;
5267 b5
= rol64(b5
, 8) ^ b4
;
5271 b7
= rol64(b7
, 47) ^ b6
;
5275 b9
= rol64(b9
, 8) ^ b8
;
5279 b11
= rol64(b11
, 17) ^ b10
;
5283 b13
= rol64(b13
, 22) ^ b12
;
5286 b14
+= b15
+ k15
+ t1
;
5287 b15
= rol64(b15
, 37) ^ b14
;
5290 b9
= rol64(b9
, 38) ^ b0
;
5293 b13
= rol64(b13
, 19) ^ b2
;
5296 b11
= rol64(b11
, 10) ^ b6
;
5299 b15
= rol64(b15
, 55) ^ b4
;
5302 b7
= rol64(b7
, 49) ^ b10
;
5305 b3
= rol64(b3
, 18) ^ b12
;
5308 b5
= rol64(b5
, 23) ^ b14
;
5311 b1
= rol64(b1
, 52) ^ b8
;
5314 b7
= rol64(b7
, 33) ^ b0
;
5317 b5
= rol64(b5
, 4) ^ b2
;
5320 b3
= rol64(b3
, 51) ^ b4
;
5323 b1
= rol64(b1
, 13) ^ b6
;
5326 b15
= rol64(b15
, 34) ^ b12
;
5329 b13
= rol64(b13
, 41) ^ b14
;
5332 b11
= rol64(b11
, 59) ^ b8
;
5335 b9
= rol64(b9
, 17) ^ b10
;
5338 b15
= rol64(b15
, 5) ^ b0
;
5341 b11
= rol64(b11
, 20) ^ b2
;
5344 b13
= rol64(b13
, 48) ^ b6
;
5347 b9
= rol64(b9
, 41) ^ b4
;
5350 b1
= rol64(b1
, 47) ^ b14
;
5353 b5
= rol64(b5
, 28) ^ b8
;
5356 b3
= rol64(b3
, 16) ^ b10
;
5359 b7
= rol64(b7
, 25) ^ b12
;
5363 b1
= rol64(b1
, 41) ^ b0
;
5367 b3
= rol64(b3
, 9) ^ b2
;
5371 b5
= rol64(b5
, 37) ^ b4
;
5375 b7
= rol64(b7
, 31) ^ b6
;
5379 b9
= rol64(b9
, 12) ^ b8
;
5383 b11
= rol64(b11
, 47) ^ b10
;
5387 b13
= rol64(b13
, 44) ^ b12
;
5390 b14
+= b15
+ k16
+ t2
;
5391 b15
= rol64(b15
, 30) ^ b14
;
5394 b9
= rol64(b9
, 16) ^ b0
;
5397 b13
= rol64(b13
, 34) ^ b2
;
5400 b11
= rol64(b11
, 56) ^ b6
;
5403 b15
= rol64(b15
, 51) ^ b4
;
5406 b7
= rol64(b7
, 4) ^ b10
;
5409 b3
= rol64(b3
, 53) ^ b12
;
5412 b5
= rol64(b5
, 42) ^ b14
;
5415 b1
= rol64(b1
, 41) ^ b8
;
5418 b7
= rol64(b7
, 31) ^ b0
;
5421 b5
= rol64(b5
, 44) ^ b2
;
5424 b3
= rol64(b3
, 47) ^ b4
;
5427 b1
= rol64(b1
, 46) ^ b6
;
5430 b15
= rol64(b15
, 19) ^ b12
;
5433 b13
= rol64(b13
, 42) ^ b14
;
5436 b11
= rol64(b11
, 44) ^ b8
;
5439 b9
= rol64(b9
, 25) ^ b10
;
5442 b15
= rol64(b15
, 9) ^ b0
;
5445 b11
= rol64(b11
, 48) ^ b2
;
5448 b13
= rol64(b13
, 35) ^ b6
;
5451 b9
= rol64(b9
, 52) ^ b4
;
5454 b1
= rol64(b1
, 23) ^ b14
;
5457 b5
= rol64(b5
, 31) ^ b8
;
5460 b3
= rol64(b3
, 37) ^ b10
;
5463 b7
= rol64(b7
, 20) ^ b12
;
5465 output
[0] = b0
+ k3
;
5466 output
[1] = b1
+ k4
;
5467 output
[2] = b2
+ k5
;
5468 output
[3] = b3
+ k6
;
5469 output
[4] = b4
+ k7
;
5470 output
[5] = b5
+ k8
;
5471 output
[6] = b6
+ k9
;
5472 output
[7] = b7
+ k10
;
5473 output
[8] = b8
+ k11
;
5474 output
[9] = b9
+ k12
;
5475 output
[10] = b10
+ k13
;
5476 output
[11] = b11
+ k14
;
5477 output
[12] = b12
+ k15
;
5478 output
[13] = b13
+ k16
+ t2
;
5479 output
[14] = b14
+ k0
+ t0
;
5480 output
[15] = b15
+ k1
+ 20;
5483 void threefish_decrypt_1024(struct threefish_key
*key_ctx
, u64
*input
,
5486 u64 b0
= input
[0], b1
= input
[1],
5487 b2
= input
[2], b3
= input
[3],
5488 b4
= input
[4], b5
= input
[5],
5489 b6
= input
[6], b7
= input
[7],
5490 b8
= input
[8], b9
= input
[9],
5491 b10
= input
[10], b11
= input
[11],
5492 b12
= input
[12], b13
= input
[13],
5493 b14
= input
[14], b15
= input
[15];
5494 u64 k0
= key_ctx
->key
[0], k1
= key_ctx
->key
[1],
5495 k2
= key_ctx
->key
[2], k3
= key_ctx
->key
[3],
5496 k4
= key_ctx
->key
[4], k5
= key_ctx
->key
[5],
5497 k6
= key_ctx
->key
[6], k7
= key_ctx
->key
[7],
5498 k8
= key_ctx
->key
[8], k9
= key_ctx
->key
[9],
5499 k10
= key_ctx
->key
[10], k11
= key_ctx
->key
[11],
5500 k12
= key_ctx
->key
[12], k13
= key_ctx
->key
[13],
5501 k14
= key_ctx
->key
[14], k15
= key_ctx
->key
[15],
5502 k16
= key_ctx
->key
[16];
5503 u64 t0
= key_ctx
->tweak
[0], t1
= key_ctx
->tweak
[1],
5504 t2
= key_ctx
->tweak
[2];
5524 b7
= (tmp
>> 20) | (tmp
<< (64 - 20));
5528 b3
= (tmp
>> 37) | (tmp
<< (64 - 37));
5532 b5
= (tmp
>> 31) | (tmp
<< (64 - 31));
5536 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
5540 b9
= (tmp
>> 52) | (tmp
<< (64 - 52));
5544 b13
= (tmp
>> 35) | (tmp
<< (64 - 35));
5548 b11
= (tmp
>> 48) | (tmp
<< (64 - 48));
5552 b15
= (tmp
>> 9) | (tmp
<< (64 - 9));
5556 b9
= (tmp
>> 25) | (tmp
<< (64 - 25));
5560 b11
= (tmp
>> 44) | (tmp
<< (64 - 44));
5564 b13
= (tmp
>> 42) | (tmp
<< (64 - 42));
5568 b15
= (tmp
>> 19) | (tmp
<< (64 - 19));
5572 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
5576 b3
= (tmp
>> 47) | (tmp
<< (64 - 47));
5580 b5
= (tmp
>> 44) | (tmp
<< (64 - 44));
5584 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
5588 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
5592 b5
= (tmp
>> 42) | (tmp
<< (64 - 42));
5596 b3
= (tmp
>> 53) | (tmp
<< (64 - 53));
5600 b7
= (tmp
>> 4) | (tmp
<< (64 - 4));
5604 b15
= (tmp
>> 51) | (tmp
<< (64 - 51));
5608 b11
= (tmp
>> 56) | (tmp
<< (64 - 56));
5612 b13
= (tmp
>> 34) | (tmp
<< (64 - 34));
5616 b9
= (tmp
>> 16) | (tmp
<< (64 - 16));
5620 b15
= (tmp
>> 30) | (tmp
<< (64 - 30));
5621 b14
-= b15
+ k16
+ t2
;
5625 b13
= (tmp
>> 44) | (tmp
<< (64 - 44));
5630 b11
= (tmp
>> 47) | (tmp
<< (64 - 47));
5635 b9
= (tmp
>> 12) | (tmp
<< (64 - 12));
5640 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
5645 b5
= (tmp
>> 37) | (tmp
<< (64 - 37));
5650 b3
= (tmp
>> 9) | (tmp
<< (64 - 9));
5655 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
5660 b7
= (tmp
>> 25) | (tmp
<< (64 - 25));
5664 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
5668 b5
= (tmp
>> 28) | (tmp
<< (64 - 28));
5672 b1
= (tmp
>> 47) | (tmp
<< (64 - 47));
5676 b9
= (tmp
>> 41) | (tmp
<< (64 - 41));
5680 b13
= (tmp
>> 48) | (tmp
<< (64 - 48));
5684 b11
= (tmp
>> 20) | (tmp
<< (64 - 20));
5688 b15
= (tmp
>> 5) | (tmp
<< (64 - 5));
5692 b9
= (tmp
>> 17) | (tmp
<< (64 - 17));
5696 b11
= (tmp
>> 59) | (tmp
<< (64 - 59));
5700 b13
= (tmp
>> 41) | (tmp
<< (64 - 41));
5704 b15
= (tmp
>> 34) | (tmp
<< (64 - 34));
5708 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
5712 b3
= (tmp
>> 51) | (tmp
<< (64 - 51));
5716 b5
= (tmp
>> 4) | (tmp
<< (64 - 4));
5720 b7
= (tmp
>> 33) | (tmp
<< (64 - 33));
5724 b1
= (tmp
>> 52) | (tmp
<< (64 - 52));
5728 b5
= (tmp
>> 23) | (tmp
<< (64 - 23));
5732 b3
= (tmp
>> 18) | (tmp
<< (64 - 18));
5736 b7
= (tmp
>> 49) | (tmp
<< (64 - 49));
5740 b15
= (tmp
>> 55) | (tmp
<< (64 - 55));
5744 b11
= (tmp
>> 10) | (tmp
<< (64 - 10));
5748 b13
= (tmp
>> 19) | (tmp
<< (64 - 19));
5752 b9
= (tmp
>> 38) | (tmp
<< (64 - 38));
5756 b15
= (tmp
>> 37) | (tmp
<< (64 - 37));
5757 b14
-= b15
+ k15
+ t1
;
5761 b13
= (tmp
>> 22) | (tmp
<< (64 - 22));
5766 b11
= (tmp
>> 17) | (tmp
<< (64 - 17));
5771 b9
= (tmp
>> 8) | (tmp
<< (64 - 8));
5776 b7
= (tmp
>> 47) | (tmp
<< (64 - 47));
5781 b5
= (tmp
>> 8) | (tmp
<< (64 - 8));
5786 b3
= (tmp
>> 13) | (tmp
<< (64 - 13));
5791 b1
= (tmp
>> 24) | (tmp
<< (64 - 24));
5796 b7
= (tmp
>> 20) | (tmp
<< (64 - 20));
5800 b3
= (tmp
>> 37) | (tmp
<< (64 - 37));
5804 b5
= (tmp
>> 31) | (tmp
<< (64 - 31));
5808 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
5812 b9
= (tmp
>> 52) | (tmp
<< (64 - 52));
5816 b13
= (tmp
>> 35) | (tmp
<< (64 - 35));
5820 b11
= (tmp
>> 48) | (tmp
<< (64 - 48));
5824 b15
= (tmp
>> 9) | (tmp
<< (64 - 9));
5828 b9
= (tmp
>> 25) | (tmp
<< (64 - 25));
5832 b11
= (tmp
>> 44) | (tmp
<< (64 - 44));
5836 b13
= (tmp
>> 42) | (tmp
<< (64 - 42));
5840 b15
= (tmp
>> 19) | (tmp
<< (64 - 19));
5844 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
5848 b3
= (tmp
>> 47) | (tmp
<< (64 - 47));
5852 b5
= (tmp
>> 44) | (tmp
<< (64 - 44));
5856 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
5860 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
5864 b5
= (tmp
>> 42) | (tmp
<< (64 - 42));
5868 b3
= (tmp
>> 53) | (tmp
<< (64 - 53));
5872 b7
= (tmp
>> 4) | (tmp
<< (64 - 4));
5876 b15
= (tmp
>> 51) | (tmp
<< (64 - 51));
5880 b11
= (tmp
>> 56) | (tmp
<< (64 - 56));
5884 b13
= (tmp
>> 34) | (tmp
<< (64 - 34));
5888 b9
= (tmp
>> 16) | (tmp
<< (64 - 16));
5892 b15
= (tmp
>> 30) | (tmp
<< (64 - 30));
5893 b14
-= b15
+ k14
+ t0
;
5897 b13
= (tmp
>> 44) | (tmp
<< (64 - 44));
5902 b11
= (tmp
>> 47) | (tmp
<< (64 - 47));
5907 b9
= (tmp
>> 12) | (tmp
<< (64 - 12));
5912 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
5917 b5
= (tmp
>> 37) | (tmp
<< (64 - 37));
5922 b3
= (tmp
>> 9) | (tmp
<< (64 - 9));
5927 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
5932 b7
= (tmp
>> 25) | (tmp
<< (64 - 25));
5936 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
5940 b5
= (tmp
>> 28) | (tmp
<< (64 - 28));
5944 b1
= (tmp
>> 47) | (tmp
<< (64 - 47));
5948 b9
= (tmp
>> 41) | (tmp
<< (64 - 41));
5952 b13
= (tmp
>> 48) | (tmp
<< (64 - 48));
5956 b11
= (tmp
>> 20) | (tmp
<< (64 - 20));
5960 b15
= (tmp
>> 5) | (tmp
<< (64 - 5));
5964 b9
= (tmp
>> 17) | (tmp
<< (64 - 17));
5968 b11
= (tmp
>> 59) | (tmp
<< (64 - 59));
5972 b13
= (tmp
>> 41) | (tmp
<< (64 - 41));
5976 b15
= (tmp
>> 34) | (tmp
<< (64 - 34));
5980 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
5984 b3
= (tmp
>> 51) | (tmp
<< (64 - 51));
5988 b5
= (tmp
>> 4) | (tmp
<< (64 - 4));
5992 b7
= (tmp
>> 33) | (tmp
<< (64 - 33));
5996 b1
= (tmp
>> 52) | (tmp
<< (64 - 52));
6000 b5
= (tmp
>> 23) | (tmp
<< (64 - 23));
6004 b3
= (tmp
>> 18) | (tmp
<< (64 - 18));
6008 b7
= (tmp
>> 49) | (tmp
<< (64 - 49));
6012 b15
= (tmp
>> 55) | (tmp
<< (64 - 55));
6016 b11
= (tmp
>> 10) | (tmp
<< (64 - 10));
6020 b13
= (tmp
>> 19) | (tmp
<< (64 - 19));
6024 b9
= (tmp
>> 38) | (tmp
<< (64 - 38));
6028 b15
= (tmp
>> 37) | (tmp
<< (64 - 37));
6029 b14
-= b15
+ k13
+ t2
;
6033 b13
= (tmp
>> 22) | (tmp
<< (64 - 22));
6038 b11
= (tmp
>> 17) | (tmp
<< (64 - 17));
6043 b9
= (tmp
>> 8) | (tmp
<< (64 - 8));
6048 b7
= (tmp
>> 47) | (tmp
<< (64 - 47));
6053 b5
= (tmp
>> 8) | (tmp
<< (64 - 8));
6058 b3
= (tmp
>> 13) | (tmp
<< (64 - 13));
6063 b1
= (tmp
>> 24) | (tmp
<< (64 - 24));
6068 b7
= (tmp
>> 20) | (tmp
<< (64 - 20));
6072 b3
= (tmp
>> 37) | (tmp
<< (64 - 37));
6076 b5
= (tmp
>> 31) | (tmp
<< (64 - 31));
6080 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
6084 b9
= (tmp
>> 52) | (tmp
<< (64 - 52));
6088 b13
= (tmp
>> 35) | (tmp
<< (64 - 35));
6092 b11
= (tmp
>> 48) | (tmp
<< (64 - 48));
6096 b15
= (tmp
>> 9) | (tmp
<< (64 - 9));
6100 b9
= (tmp
>> 25) | (tmp
<< (64 - 25));
6104 b11
= (tmp
>> 44) | (tmp
<< (64 - 44));
6108 b13
= (tmp
>> 42) | (tmp
<< (64 - 42));
6112 b15
= (tmp
>> 19) | (tmp
<< (64 - 19));
6116 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
6120 b3
= (tmp
>> 47) | (tmp
<< (64 - 47));
6124 b5
= (tmp
>> 44) | (tmp
<< (64 - 44));
6128 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
6132 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
6136 b5
= (tmp
>> 42) | (tmp
<< (64 - 42));
6140 b3
= (tmp
>> 53) | (tmp
<< (64 - 53));
6144 b7
= (tmp
>> 4) | (tmp
<< (64 - 4));
6148 b15
= (tmp
>> 51) | (tmp
<< (64 - 51));
6152 b11
= (tmp
>> 56) | (tmp
<< (64 - 56));
6156 b13
= (tmp
>> 34) | (tmp
<< (64 - 34));
6160 b9
= (tmp
>> 16) | (tmp
<< (64 - 16));
6164 b15
= (tmp
>> 30) | (tmp
<< (64 - 30));
6165 b14
-= b15
+ k12
+ t1
;
6169 b13
= (tmp
>> 44) | (tmp
<< (64 - 44));
6174 b11
= (tmp
>> 47) | (tmp
<< (64 - 47));
6179 b9
= (tmp
>> 12) | (tmp
<< (64 - 12));
6184 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
6189 b5
= (tmp
>> 37) | (tmp
<< (64 - 37));
6194 b3
= (tmp
>> 9) | (tmp
<< (64 - 9));
6199 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
6204 b7
= (tmp
>> 25) | (tmp
<< (64 - 25));
6208 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
6212 b5
= (tmp
>> 28) | (tmp
<< (64 - 28));
6216 b1
= (tmp
>> 47) | (tmp
<< (64 - 47));
6220 b9
= (tmp
>> 41) | (tmp
<< (64 - 41));
6224 b13
= (tmp
>> 48) | (tmp
<< (64 - 48));
6228 b11
= (tmp
>> 20) | (tmp
<< (64 - 20));
6232 b15
= (tmp
>> 5) | (tmp
<< (64 - 5));
6236 b9
= (tmp
>> 17) | (tmp
<< (64 - 17));
6240 b11
= (tmp
>> 59) | (tmp
<< (64 - 59));
6244 b13
= (tmp
>> 41) | (tmp
<< (64 - 41));
6248 b15
= (tmp
>> 34) | (tmp
<< (64 - 34));
6252 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
6256 b3
= (tmp
>> 51) | (tmp
<< (64 - 51));
6260 b5
= (tmp
>> 4) | (tmp
<< (64 - 4));
6264 b7
= (tmp
>> 33) | (tmp
<< (64 - 33));
6268 b1
= (tmp
>> 52) | (tmp
<< (64 - 52));
6272 b5
= (tmp
>> 23) | (tmp
<< (64 - 23));
6276 b3
= (tmp
>> 18) | (tmp
<< (64 - 18));
6280 b7
= (tmp
>> 49) | (tmp
<< (64 - 49));
6284 b15
= (tmp
>> 55) | (tmp
<< (64 - 55));
6288 b11
= (tmp
>> 10) | (tmp
<< (64 - 10));
6292 b13
= (tmp
>> 19) | (tmp
<< (64 - 19));
6296 b9
= (tmp
>> 38) | (tmp
<< (64 - 38));
6300 b15
= (tmp
>> 37) | (tmp
<< (64 - 37));
6301 b14
-= b15
+ k11
+ t0
;
6305 b13
= (tmp
>> 22) | (tmp
<< (64 - 22));
6310 b11
= (tmp
>> 17) | (tmp
<< (64 - 17));
6315 b9
= (tmp
>> 8) | (tmp
<< (64 - 8));
6320 b7
= (tmp
>> 47) | (tmp
<< (64 - 47));
6325 b5
= (tmp
>> 8) | (tmp
<< (64 - 8));
6330 b3
= (tmp
>> 13) | (tmp
<< (64 - 13));
6335 b1
= (tmp
>> 24) | (tmp
<< (64 - 24));
6340 b7
= (tmp
>> 20) | (tmp
<< (64 - 20));
6344 b3
= (tmp
>> 37) | (tmp
<< (64 - 37));
6348 b5
= (tmp
>> 31) | (tmp
<< (64 - 31));
6352 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
6356 b9
= (tmp
>> 52) | (tmp
<< (64 - 52));
6360 b13
= (tmp
>> 35) | (tmp
<< (64 - 35));
6364 b11
= (tmp
>> 48) | (tmp
<< (64 - 48));
6368 b15
= (tmp
>> 9) | (tmp
<< (64 - 9));
6372 b9
= (tmp
>> 25) | (tmp
<< (64 - 25));
6376 b11
= (tmp
>> 44) | (tmp
<< (64 - 44));
6380 b13
= (tmp
>> 42) | (tmp
<< (64 - 42));
6384 b15
= (tmp
>> 19) | (tmp
<< (64 - 19));
6388 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
6392 b3
= (tmp
>> 47) | (tmp
<< (64 - 47));
6396 b5
= (tmp
>> 44) | (tmp
<< (64 - 44));
6400 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
6404 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
6408 b5
= (tmp
>> 42) | (tmp
<< (64 - 42));
6412 b3
= (tmp
>> 53) | (tmp
<< (64 - 53));
6416 b7
= (tmp
>> 4) | (tmp
<< (64 - 4));
6420 b15
= (tmp
>> 51) | (tmp
<< (64 - 51));
6424 b11
= (tmp
>> 56) | (tmp
<< (64 - 56));
6428 b13
= (tmp
>> 34) | (tmp
<< (64 - 34));
6432 b9
= (tmp
>> 16) | (tmp
<< (64 - 16));
6436 b15
= (tmp
>> 30) | (tmp
<< (64 - 30));
6437 b14
-= b15
+ k10
+ t2
;
6441 b13
= (tmp
>> 44) | (tmp
<< (64 - 44));
6446 b11
= (tmp
>> 47) | (tmp
<< (64 - 47));
6451 b9
= (tmp
>> 12) | (tmp
<< (64 - 12));
6456 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
6461 b5
= (tmp
>> 37) | (tmp
<< (64 - 37));
6466 b3
= (tmp
>> 9) | (tmp
<< (64 - 9));
6471 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
6476 b7
= (tmp
>> 25) | (tmp
<< (64 - 25));
6480 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
6484 b5
= (tmp
>> 28) | (tmp
<< (64 - 28));
6488 b1
= (tmp
>> 47) | (tmp
<< (64 - 47));
6492 b9
= (tmp
>> 41) | (tmp
<< (64 - 41));
6496 b13
= (tmp
>> 48) | (tmp
<< (64 - 48));
6500 b11
= (tmp
>> 20) | (tmp
<< (64 - 20));
6504 b15
= (tmp
>> 5) | (tmp
<< (64 - 5));
6508 b9
= (tmp
>> 17) | (tmp
<< (64 - 17));
6512 b11
= (tmp
>> 59) | (tmp
<< (64 - 59));
6516 b13
= (tmp
>> 41) | (tmp
<< (64 - 41));
6520 b15
= (tmp
>> 34) | (tmp
<< (64 - 34));
6524 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
6528 b3
= (tmp
>> 51) | (tmp
<< (64 - 51));
6532 b5
= (tmp
>> 4) | (tmp
<< (64 - 4));
6536 b7
= (tmp
>> 33) | (tmp
<< (64 - 33));
6540 b1
= (tmp
>> 52) | (tmp
<< (64 - 52));
6544 b5
= (tmp
>> 23) | (tmp
<< (64 - 23));
6548 b3
= (tmp
>> 18) | (tmp
<< (64 - 18));
6552 b7
= (tmp
>> 49) | (tmp
<< (64 - 49));
6556 b15
= (tmp
>> 55) | (tmp
<< (64 - 55));
6560 b11
= (tmp
>> 10) | (tmp
<< (64 - 10));
6564 b13
= (tmp
>> 19) | (tmp
<< (64 - 19));
6568 b9
= (tmp
>> 38) | (tmp
<< (64 - 38));
6572 b15
= (tmp
>> 37) | (tmp
<< (64 - 37));
6573 b14
-= b15
+ k9
+ t1
;
6577 b13
= (tmp
>> 22) | (tmp
<< (64 - 22));
6582 b11
= (tmp
>> 17) | (tmp
<< (64 - 17));
6587 b9
= (tmp
>> 8) | (tmp
<< (64 - 8));
6592 b7
= (tmp
>> 47) | (tmp
<< (64 - 47));
6597 b5
= (tmp
>> 8) | (tmp
<< (64 - 8));
6602 b3
= (tmp
>> 13) | (tmp
<< (64 - 13));
6607 b1
= (tmp
>> 24) | (tmp
<< (64 - 24));
6612 b7
= (tmp
>> 20) | (tmp
<< (64 - 20));
6616 b3
= (tmp
>> 37) | (tmp
<< (64 - 37));
6620 b5
= (tmp
>> 31) | (tmp
<< (64 - 31));
6624 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
6628 b9
= (tmp
>> 52) | (tmp
<< (64 - 52));
6632 b13
= (tmp
>> 35) | (tmp
<< (64 - 35));
6636 b11
= (tmp
>> 48) | (tmp
<< (64 - 48));
6640 b15
= (tmp
>> 9) | (tmp
<< (64 - 9));
6644 b9
= (tmp
>> 25) | (tmp
<< (64 - 25));
6648 b11
= (tmp
>> 44) | (tmp
<< (64 - 44));
6652 b13
= (tmp
>> 42) | (tmp
<< (64 - 42));
6656 b15
= (tmp
>> 19) | (tmp
<< (64 - 19));
6660 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
6664 b3
= (tmp
>> 47) | (tmp
<< (64 - 47));
6668 b5
= (tmp
>> 44) | (tmp
<< (64 - 44));
6672 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
6676 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
6680 b5
= (tmp
>> 42) | (tmp
<< (64 - 42));
6684 b3
= (tmp
>> 53) | (tmp
<< (64 - 53));
6688 b7
= (tmp
>> 4) | (tmp
<< (64 - 4));
6692 b15
= (tmp
>> 51) | (tmp
<< (64 - 51));
6696 b11
= (tmp
>> 56) | (tmp
<< (64 - 56));
6700 b13
= (tmp
>> 34) | (tmp
<< (64 - 34));
6704 b9
= (tmp
>> 16) | (tmp
<< (64 - 16));
6708 b15
= (tmp
>> 30) | (tmp
<< (64 - 30));
6709 b14
-= b15
+ k8
+ t0
;
6713 b13
= (tmp
>> 44) | (tmp
<< (64 - 44));
6718 b11
= (tmp
>> 47) | (tmp
<< (64 - 47));
6723 b9
= (tmp
>> 12) | (tmp
<< (64 - 12));
6728 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
6733 b5
= (tmp
>> 37) | (tmp
<< (64 - 37));
6738 b3
= (tmp
>> 9) | (tmp
<< (64 - 9));
6743 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
6748 b7
= (tmp
>> 25) | (tmp
<< (64 - 25));
6752 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
6756 b5
= (tmp
>> 28) | (tmp
<< (64 - 28));
6760 b1
= (tmp
>> 47) | (tmp
<< (64 - 47));
6764 b9
= (tmp
>> 41) | (tmp
<< (64 - 41));
6768 b13
= (tmp
>> 48) | (tmp
<< (64 - 48));
6772 b11
= (tmp
>> 20) | (tmp
<< (64 - 20));
6776 b15
= (tmp
>> 5) | (tmp
<< (64 - 5));
6780 b9
= (tmp
>> 17) | (tmp
<< (64 - 17));
6784 b11
= (tmp
>> 59) | (tmp
<< (64 - 59));
6788 b13
= (tmp
>> 41) | (tmp
<< (64 - 41));
6792 b15
= (tmp
>> 34) | (tmp
<< (64 - 34));
6796 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
6800 b3
= (tmp
>> 51) | (tmp
<< (64 - 51));
6804 b5
= (tmp
>> 4) | (tmp
<< (64 - 4));
6808 b7
= (tmp
>> 33) | (tmp
<< (64 - 33));
6812 b1
= (tmp
>> 52) | (tmp
<< (64 - 52));
6816 b5
= (tmp
>> 23) | (tmp
<< (64 - 23));
6820 b3
= (tmp
>> 18) | (tmp
<< (64 - 18));
6824 b7
= (tmp
>> 49) | (tmp
<< (64 - 49));
6828 b15
= (tmp
>> 55) | (tmp
<< (64 - 55));
6832 b11
= (tmp
>> 10) | (tmp
<< (64 - 10));
6836 b13
= (tmp
>> 19) | (tmp
<< (64 - 19));
6840 b9
= (tmp
>> 38) | (tmp
<< (64 - 38));
6844 b15
= (tmp
>> 37) | (tmp
<< (64 - 37));
6845 b14
-= b15
+ k7
+ t2
;
6849 b13
= (tmp
>> 22) | (tmp
<< (64 - 22));
6854 b11
= (tmp
>> 17) | (tmp
<< (64 - 17));
6859 b9
= (tmp
>> 8) | (tmp
<< (64 - 8));
6864 b7
= (tmp
>> 47) | (tmp
<< (64 - 47));
6869 b5
= (tmp
>> 8) | (tmp
<< (64 - 8));
6874 b3
= (tmp
>> 13) | (tmp
<< (64 - 13));
6879 b1
= (tmp
>> 24) | (tmp
<< (64 - 24));
6884 b7
= (tmp
>> 20) | (tmp
<< (64 - 20));
6888 b3
= (tmp
>> 37) | (tmp
<< (64 - 37));
6892 b5
= (tmp
>> 31) | (tmp
<< (64 - 31));
6896 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
6900 b9
= (tmp
>> 52) | (tmp
<< (64 - 52));
6904 b13
= (tmp
>> 35) | (tmp
<< (64 - 35));
6908 b11
= (tmp
>> 48) | (tmp
<< (64 - 48));
6912 b15
= (tmp
>> 9) | (tmp
<< (64 - 9));
6916 b9
= (tmp
>> 25) | (tmp
<< (64 - 25));
6920 b11
= (tmp
>> 44) | (tmp
<< (64 - 44));
6924 b13
= (tmp
>> 42) | (tmp
<< (64 - 42));
6928 b15
= (tmp
>> 19) | (tmp
<< (64 - 19));
6932 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
6936 b3
= (tmp
>> 47) | (tmp
<< (64 - 47));
6940 b5
= (tmp
>> 44) | (tmp
<< (64 - 44));
6944 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
6948 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
6952 b5
= (tmp
>> 42) | (tmp
<< (64 - 42));
6956 b3
= (tmp
>> 53) | (tmp
<< (64 - 53));
6960 b7
= (tmp
>> 4) | (tmp
<< (64 - 4));
6964 b15
= (tmp
>> 51) | (tmp
<< (64 - 51));
6968 b11
= (tmp
>> 56) | (tmp
<< (64 - 56));
6972 b13
= (tmp
>> 34) | (tmp
<< (64 - 34));
6976 b9
= (tmp
>> 16) | (tmp
<< (64 - 16));
6980 b15
= (tmp
>> 30) | (tmp
<< (64 - 30));
6981 b14
-= b15
+ k6
+ t1
;
6985 b13
= (tmp
>> 44) | (tmp
<< (64 - 44));
6990 b11
= (tmp
>> 47) | (tmp
<< (64 - 47));
6995 b9
= (tmp
>> 12) | (tmp
<< (64 - 12));
7000 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
7005 b5
= (tmp
>> 37) | (tmp
<< (64 - 37));
7010 b3
= (tmp
>> 9) | (tmp
<< (64 - 9));
7015 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
7020 b7
= (tmp
>> 25) | (tmp
<< (64 - 25));
7024 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
7028 b5
= (tmp
>> 28) | (tmp
<< (64 - 28));
7032 b1
= (tmp
>> 47) | (tmp
<< (64 - 47));
7036 b9
= (tmp
>> 41) | (tmp
<< (64 - 41));
7040 b13
= (tmp
>> 48) | (tmp
<< (64 - 48));
7044 b11
= (tmp
>> 20) | (tmp
<< (64 - 20));
7048 b15
= (tmp
>> 5) | (tmp
<< (64 - 5));
7052 b9
= (tmp
>> 17) | (tmp
<< (64 - 17));
7056 b11
= (tmp
>> 59) | (tmp
<< (64 - 59));
7060 b13
= (tmp
>> 41) | (tmp
<< (64 - 41));
7064 b15
= (tmp
>> 34) | (tmp
<< (64 - 34));
7068 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
7072 b3
= (tmp
>> 51) | (tmp
<< (64 - 51));
7076 b5
= (tmp
>> 4) | (tmp
<< (64 - 4));
7080 b7
= (tmp
>> 33) | (tmp
<< (64 - 33));
7084 b1
= (tmp
>> 52) | (tmp
<< (64 - 52));
7088 b5
= (tmp
>> 23) | (tmp
<< (64 - 23));
7092 b3
= (tmp
>> 18) | (tmp
<< (64 - 18));
7096 b7
= (tmp
>> 49) | (tmp
<< (64 - 49));
7100 b15
= (tmp
>> 55) | (tmp
<< (64 - 55));
7104 b11
= (tmp
>> 10) | (tmp
<< (64 - 10));
7108 b13
= (tmp
>> 19) | (tmp
<< (64 - 19));
7112 b9
= (tmp
>> 38) | (tmp
<< (64 - 38));
7116 b15
= (tmp
>> 37) | (tmp
<< (64 - 37));
7117 b14
-= b15
+ k5
+ t0
;
7121 b13
= (tmp
>> 22) | (tmp
<< (64 - 22));
7126 b11
= (tmp
>> 17) | (tmp
<< (64 - 17));
7131 b9
= (tmp
>> 8) | (tmp
<< (64 - 8));
7136 b7
= (tmp
>> 47) | (tmp
<< (64 - 47));
7141 b5
= (tmp
>> 8) | (tmp
<< (64 - 8));
7146 b3
= (tmp
>> 13) | (tmp
<< (64 - 13));
7151 b1
= (tmp
>> 24) | (tmp
<< (64 - 24));
7156 b7
= (tmp
>> 20) | (tmp
<< (64 - 20));
7160 b3
= (tmp
>> 37) | (tmp
<< (64 - 37));
7164 b5
= (tmp
>> 31) | (tmp
<< (64 - 31));
7168 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
7172 b9
= (tmp
>> 52) | (tmp
<< (64 - 52));
7176 b13
= (tmp
>> 35) | (tmp
<< (64 - 35));
7180 b11
= (tmp
>> 48) | (tmp
<< (64 - 48));
7184 b15
= (tmp
>> 9) | (tmp
<< (64 - 9));
7188 b9
= (tmp
>> 25) | (tmp
<< (64 - 25));
7192 b11
= (tmp
>> 44) | (tmp
<< (64 - 44));
7196 b13
= (tmp
>> 42) | (tmp
<< (64 - 42));
7200 b15
= (tmp
>> 19) | (tmp
<< (64 - 19));
7204 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
7208 b3
= (tmp
>> 47) | (tmp
<< (64 - 47));
7212 b5
= (tmp
>> 44) | (tmp
<< (64 - 44));
7216 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
7220 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
7224 b5
= (tmp
>> 42) | (tmp
<< (64 - 42));
7228 b3
= (tmp
>> 53) | (tmp
<< (64 - 53));
7232 b7
= (tmp
>> 4) | (tmp
<< (64 - 4));
7236 b15
= (tmp
>> 51) | (tmp
<< (64 - 51));
7240 b11
= (tmp
>> 56) | (tmp
<< (64 - 56));
7244 b13
= (tmp
>> 34) | (tmp
<< (64 - 34));
7248 b9
= (tmp
>> 16) | (tmp
<< (64 - 16));
7252 b15
= (tmp
>> 30) | (tmp
<< (64 - 30));
7253 b14
-= b15
+ k4
+ t2
;
7257 b13
= (tmp
>> 44) | (tmp
<< (64 - 44));
7262 b11
= (tmp
>> 47) | (tmp
<< (64 - 47));
7267 b9
= (tmp
>> 12) | (tmp
<< (64 - 12));
7272 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
7277 b5
= (tmp
>> 37) | (tmp
<< (64 - 37));
7282 b3
= (tmp
>> 9) | (tmp
<< (64 - 9));
7287 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
7292 b7
= (tmp
>> 25) | (tmp
<< (64 - 25));
7296 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
7300 b5
= (tmp
>> 28) | (tmp
<< (64 - 28));
7304 b1
= (tmp
>> 47) | (tmp
<< (64 - 47));
7308 b9
= (tmp
>> 41) | (tmp
<< (64 - 41));
7312 b13
= (tmp
>> 48) | (tmp
<< (64 - 48));
7316 b11
= (tmp
>> 20) | (tmp
<< (64 - 20));
7320 b15
= (tmp
>> 5) | (tmp
<< (64 - 5));
7324 b9
= (tmp
>> 17) | (tmp
<< (64 - 17));
7328 b11
= (tmp
>> 59) | (tmp
<< (64 - 59));
7332 b13
= (tmp
>> 41) | (tmp
<< (64 - 41));
7336 b15
= (tmp
>> 34) | (tmp
<< (64 - 34));
7340 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
7344 b3
= (tmp
>> 51) | (tmp
<< (64 - 51));
7348 b5
= (tmp
>> 4) | (tmp
<< (64 - 4));
7352 b7
= (tmp
>> 33) | (tmp
<< (64 - 33));
7356 b1
= (tmp
>> 52) | (tmp
<< (64 - 52));
7360 b5
= (tmp
>> 23) | (tmp
<< (64 - 23));
7364 b3
= (tmp
>> 18) | (tmp
<< (64 - 18));
7368 b7
= (tmp
>> 49) | (tmp
<< (64 - 49));
7372 b15
= (tmp
>> 55) | (tmp
<< (64 - 55));
7376 b11
= (tmp
>> 10) | (tmp
<< (64 - 10));
7380 b13
= (tmp
>> 19) | (tmp
<< (64 - 19));
7384 b9
= (tmp
>> 38) | (tmp
<< (64 - 38));
7388 b15
= (tmp
>> 37) | (tmp
<< (64 - 37));
7389 b14
-= b15
+ k3
+ t1
;
7393 b13
= (tmp
>> 22) | (tmp
<< (64 - 22));
7398 b11
= (tmp
>> 17) | (tmp
<< (64 - 17));
7403 b9
= (tmp
>> 8) | (tmp
<< (64 - 8));
7408 b7
= (tmp
>> 47) | (tmp
<< (64 - 47));
7413 b5
= (tmp
>> 8) | (tmp
<< (64 - 8));
7418 b3
= (tmp
>> 13) | (tmp
<< (64 - 13));
7423 b1
= (tmp
>> 24) | (tmp
<< (64 - 24));
7428 b7
= (tmp
>> 20) | (tmp
<< (64 - 20));
7432 b3
= (tmp
>> 37) | (tmp
<< (64 - 37));
7436 b5
= (tmp
>> 31) | (tmp
<< (64 - 31));
7440 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
7444 b9
= (tmp
>> 52) | (tmp
<< (64 - 52));
7448 b13
= (tmp
>> 35) | (tmp
<< (64 - 35));
7452 b11
= (tmp
>> 48) | (tmp
<< (64 - 48));
7456 b15
= (tmp
>> 9) | (tmp
<< (64 - 9));
7460 b9
= (tmp
>> 25) | (tmp
<< (64 - 25));
7464 b11
= (tmp
>> 44) | (tmp
<< (64 - 44));
7468 b13
= (tmp
>> 42) | (tmp
<< (64 - 42));
7472 b15
= (tmp
>> 19) | (tmp
<< (64 - 19));
7476 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
7480 b3
= (tmp
>> 47) | (tmp
<< (64 - 47));
7484 b5
= (tmp
>> 44) | (tmp
<< (64 - 44));
7488 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
7492 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
7496 b5
= (tmp
>> 42) | (tmp
<< (64 - 42));
7500 b3
= (tmp
>> 53) | (tmp
<< (64 - 53));
7504 b7
= (tmp
>> 4) | (tmp
<< (64 - 4));
7508 b15
= (tmp
>> 51) | (tmp
<< (64 - 51));
7512 b11
= (tmp
>> 56) | (tmp
<< (64 - 56));
7516 b13
= (tmp
>> 34) | (tmp
<< (64 - 34));
7520 b9
= (tmp
>> 16) | (tmp
<< (64 - 16));
7524 b15
= (tmp
>> 30) | (tmp
<< (64 - 30));
7525 b14
-= b15
+ k2
+ t0
;
7529 b13
= (tmp
>> 44) | (tmp
<< (64 - 44));
7534 b11
= (tmp
>> 47) | (tmp
<< (64 - 47));
7539 b9
= (tmp
>> 12) | (tmp
<< (64 - 12));
7544 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
7549 b5
= (tmp
>> 37) | (tmp
<< (64 - 37));
7554 b3
= (tmp
>> 9) | (tmp
<< (64 - 9));
7559 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
7564 b7
= (tmp
>> 25) | (tmp
<< (64 - 25));
7568 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
7572 b5
= (tmp
>> 28) | (tmp
<< (64 - 28));
7576 b1
= (tmp
>> 47) | (tmp
<< (64 - 47));
7580 b9
= (tmp
>> 41) | (tmp
<< (64 - 41));
7584 b13
= (tmp
>> 48) | (tmp
<< (64 - 48));
7588 b11
= (tmp
>> 20) | (tmp
<< (64 - 20));
7592 b15
= (tmp
>> 5) | (tmp
<< (64 - 5));
7596 b9
= (tmp
>> 17) | (tmp
<< (64 - 17));
7600 b11
= (tmp
>> 59) | (tmp
<< (64 - 59));
7604 b13
= (tmp
>> 41) | (tmp
<< (64 - 41));
7608 b15
= (tmp
>> 34) | (tmp
<< (64 - 34));
7612 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
7616 b3
= (tmp
>> 51) | (tmp
<< (64 - 51));
7620 b5
= (tmp
>> 4) | (tmp
<< (64 - 4));
7624 b7
= (tmp
>> 33) | (tmp
<< (64 - 33));
7628 b1
= (tmp
>> 52) | (tmp
<< (64 - 52));
7632 b5
= (tmp
>> 23) | (tmp
<< (64 - 23));
7636 b3
= (tmp
>> 18) | (tmp
<< (64 - 18));
7640 b7
= (tmp
>> 49) | (tmp
<< (64 - 49));
7644 b15
= (tmp
>> 55) | (tmp
<< (64 - 55));
7648 b11
= (tmp
>> 10) | (tmp
<< (64 - 10));
7652 b13
= (tmp
>> 19) | (tmp
<< (64 - 19));
7656 b9
= (tmp
>> 38) | (tmp
<< (64 - 38));
7660 b15
= (tmp
>> 37) | (tmp
<< (64 - 37));
7661 b14
-= b15
+ k1
+ t2
;
7665 b13
= (tmp
>> 22) | (tmp
<< (64 - 22));
7670 b11
= (tmp
>> 17) | (tmp
<< (64 - 17));
7675 b9
= (tmp
>> 8) | (tmp
<< (64 - 8));
7680 b7
= (tmp
>> 47) | (tmp
<< (64 - 47));
7685 b5
= (tmp
>> 8) | (tmp
<< (64 - 8));
7690 b3
= (tmp
>> 13) | (tmp
<< (64 - 13));
7695 b1
= (tmp
>> 24) | (tmp
<< (64 - 24));
7700 b7
= (tmp
>> 20) | (tmp
<< (64 - 20));
7704 b3
= (tmp
>> 37) | (tmp
<< (64 - 37));
7708 b5
= (tmp
>> 31) | (tmp
<< (64 - 31));
7712 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
7716 b9
= (tmp
>> 52) | (tmp
<< (64 - 52));
7720 b13
= (tmp
>> 35) | (tmp
<< (64 - 35));
7724 b11
= (tmp
>> 48) | (tmp
<< (64 - 48));
7728 b15
= (tmp
>> 9) | (tmp
<< (64 - 9));
7732 b9
= (tmp
>> 25) | (tmp
<< (64 - 25));
7736 b11
= (tmp
>> 44) | (tmp
<< (64 - 44));
7740 b13
= (tmp
>> 42) | (tmp
<< (64 - 42));
7744 b15
= (tmp
>> 19) | (tmp
<< (64 - 19));
7748 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
7752 b3
= (tmp
>> 47) | (tmp
<< (64 - 47));
7756 b5
= (tmp
>> 44) | (tmp
<< (64 - 44));
7760 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
7764 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
7768 b5
= (tmp
>> 42) | (tmp
<< (64 - 42));
7772 b3
= (tmp
>> 53) | (tmp
<< (64 - 53));
7776 b7
= (tmp
>> 4) | (tmp
<< (64 - 4));
7780 b15
= (tmp
>> 51) | (tmp
<< (64 - 51));
7784 b11
= (tmp
>> 56) | (tmp
<< (64 - 56));
7788 b13
= (tmp
>> 34) | (tmp
<< (64 - 34));
7792 b9
= (tmp
>> 16) | (tmp
<< (64 - 16));
7796 b15
= (tmp
>> 30) | (tmp
<< (64 - 30));
7797 b14
-= b15
+ k0
+ t1
;
7801 b13
= (tmp
>> 44) | (tmp
<< (64 - 44));
7806 b11
= (tmp
>> 47) | (tmp
<< (64 - 47));
7811 b9
= (tmp
>> 12) | (tmp
<< (64 - 12));
7816 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
7821 b5
= (tmp
>> 37) | (tmp
<< (64 - 37));
7826 b3
= (tmp
>> 9) | (tmp
<< (64 - 9));
7831 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
7836 b7
= (tmp
>> 25) | (tmp
<< (64 - 25));
7840 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
7844 b5
= (tmp
>> 28) | (tmp
<< (64 - 28));
7848 b1
= (tmp
>> 47) | (tmp
<< (64 - 47));
7852 b9
= (tmp
>> 41) | (tmp
<< (64 - 41));
7856 b13
= (tmp
>> 48) | (tmp
<< (64 - 48));
7860 b11
= (tmp
>> 20) | (tmp
<< (64 - 20));
7864 b15
= (tmp
>> 5) | (tmp
<< (64 - 5));
7868 b9
= (tmp
>> 17) | (tmp
<< (64 - 17));
7872 b11
= (tmp
>> 59) | (tmp
<< (64 - 59));
7876 b13
= (tmp
>> 41) | (tmp
<< (64 - 41));
7880 b15
= (tmp
>> 34) | (tmp
<< (64 - 34));
7884 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
7888 b3
= (tmp
>> 51) | (tmp
<< (64 - 51));
7892 b5
= (tmp
>> 4) | (tmp
<< (64 - 4));
7896 b7
= (tmp
>> 33) | (tmp
<< (64 - 33));
7900 b1
= (tmp
>> 52) | (tmp
<< (64 - 52));
7904 b5
= (tmp
>> 23) | (tmp
<< (64 - 23));
7908 b3
= (tmp
>> 18) | (tmp
<< (64 - 18));
7912 b7
= (tmp
>> 49) | (tmp
<< (64 - 49));
7916 b15
= (tmp
>> 55) | (tmp
<< (64 - 55));
7920 b11
= (tmp
>> 10) | (tmp
<< (64 - 10));
7924 b13
= (tmp
>> 19) | (tmp
<< (64 - 19));
7928 b9
= (tmp
>> 38) | (tmp
<< (64 - 38));
7932 b15
= (tmp
>> 37) | (tmp
<< (64 - 37));
7933 b14
-= b15
+ k16
+ t0
;
7937 b13
= (tmp
>> 22) | (tmp
<< (64 - 22));
7942 b11
= (tmp
>> 17) | (tmp
<< (64 - 17));
7947 b9
= (tmp
>> 8) | (tmp
<< (64 - 8));
7952 b7
= (tmp
>> 47) | (tmp
<< (64 - 47));
7957 b5
= (tmp
>> 8) | (tmp
<< (64 - 8));
7962 b3
= (tmp
>> 13) | (tmp
<< (64 - 13));
7967 b1
= (tmp
>> 24) | (tmp
<< (64 - 24));
7972 b7
= (tmp
>> 20) | (tmp
<< (64 - 20));
7976 b3
= (tmp
>> 37) | (tmp
<< (64 - 37));
7980 b5
= (tmp
>> 31) | (tmp
<< (64 - 31));
7984 b1
= (tmp
>> 23) | (tmp
<< (64 - 23));
7988 b9
= (tmp
>> 52) | (tmp
<< (64 - 52));
7992 b13
= (tmp
>> 35) | (tmp
<< (64 - 35));
7996 b11
= (tmp
>> 48) | (tmp
<< (64 - 48));
8000 b15
= (tmp
>> 9) | (tmp
<< (64 - 9));
8004 b9
= (tmp
>> 25) | (tmp
<< (64 - 25));
8008 b11
= (tmp
>> 44) | (tmp
<< (64 - 44));
8012 b13
= (tmp
>> 42) | (tmp
<< (64 - 42));
8016 b15
= (tmp
>> 19) | (tmp
<< (64 - 19));
8020 b1
= (tmp
>> 46) | (tmp
<< (64 - 46));
8024 b3
= (tmp
>> 47) | (tmp
<< (64 - 47));
8028 b5
= (tmp
>> 44) | (tmp
<< (64 - 44));
8032 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
8036 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
8040 b5
= (tmp
>> 42) | (tmp
<< (64 - 42));
8044 b3
= (tmp
>> 53) | (tmp
<< (64 - 53));
8048 b7
= (tmp
>> 4) | (tmp
<< (64 - 4));
8052 b15
= (tmp
>> 51) | (tmp
<< (64 - 51));
8056 b11
= (tmp
>> 56) | (tmp
<< (64 - 56));
8060 b13
= (tmp
>> 34) | (tmp
<< (64 - 34));
8064 b9
= (tmp
>> 16) | (tmp
<< (64 - 16));
8068 b15
= (tmp
>> 30) | (tmp
<< (64 - 30));
8069 b14
-= b15
+ k15
+ t2
;
8073 b13
= (tmp
>> 44) | (tmp
<< (64 - 44));
8078 b11
= (tmp
>> 47) | (tmp
<< (64 - 47));
8083 b9
= (tmp
>> 12) | (tmp
<< (64 - 12));
8088 b7
= (tmp
>> 31) | (tmp
<< (64 - 31));
8093 b5
= (tmp
>> 37) | (tmp
<< (64 - 37));
8098 b3
= (tmp
>> 9) | (tmp
<< (64 - 9));
8103 b1
= (tmp
>> 41) | (tmp
<< (64 - 41));
8108 b7
= (tmp
>> 25) | (tmp
<< (64 - 25));
8112 b3
= (tmp
>> 16) | (tmp
<< (64 - 16));
8116 b5
= (tmp
>> 28) | (tmp
<< (64 - 28));
8120 b1
= (tmp
>> 47) | (tmp
<< (64 - 47));
8124 b9
= (tmp
>> 41) | (tmp
<< (64 - 41));
8128 b13
= (tmp
>> 48) | (tmp
<< (64 - 48));
8132 b11
= (tmp
>> 20) | (tmp
<< (64 - 20));
8136 b15
= (tmp
>> 5) | (tmp
<< (64 - 5));
8140 b9
= (tmp
>> 17) | (tmp
<< (64 - 17));
8144 b11
= (tmp
>> 59) | (tmp
<< (64 - 59));
8148 b13
= (tmp
>> 41) | (tmp
<< (64 - 41));
8152 b15
= (tmp
>> 34) | (tmp
<< (64 - 34));
8156 b1
= (tmp
>> 13) | (tmp
<< (64 - 13));
8160 b3
= (tmp
>> 51) | (tmp
<< (64 - 51));
8164 b5
= (tmp
>> 4) | (tmp
<< (64 - 4));
8168 b7
= (tmp
>> 33) | (tmp
<< (64 - 33));
8172 b1
= (tmp
>> 52) | (tmp
<< (64 - 52));
8176 b5
= (tmp
>> 23) | (tmp
<< (64 - 23));
8180 b3
= (tmp
>> 18) | (tmp
<< (64 - 18));
8184 b7
= (tmp
>> 49) | (tmp
<< (64 - 49));
8188 b15
= (tmp
>> 55) | (tmp
<< (64 - 55));
8192 b11
= (tmp
>> 10) | (tmp
<< (64 - 10));
8196 b13
= (tmp
>> 19) | (tmp
<< (64 - 19));
8200 b9
= (tmp
>> 38) | (tmp
<< (64 - 38));
8204 b15
= (tmp
>> 37) | (tmp
<< (64 - 37));
8205 b14
-= b15
+ k14
+ t1
;
8209 b13
= (tmp
>> 22) | (tmp
<< (64 - 22));
8214 b11
= (tmp
>> 17) | (tmp
<< (64 - 17));
8219 b9
= (tmp
>> 8) | (tmp
<< (64 - 8));
8224 b7
= (tmp
>> 47) | (tmp
<< (64 - 47));
8229 b5
= (tmp
>> 8) | (tmp
<< (64 - 8));
8234 b3
= (tmp
>> 13) | (tmp
<< (64 - 13));
8239 b1
= (tmp
>> 24) | (tmp
<< (64 - 24));