1 #include "threefish_api.h"
3 void threefish_encrypt_256(struct threefish_key *key_ctx, u64 *input,
6 u64 b0 = input[0], b1 = input[1],
7 b2 = input[2], b3 = input[3];
8 u64 k0 = key_ctx->key[0], k1 = key_ctx->key[1],
9 k2 = key_ctx->key[2], k3 = key_ctx->key[3],
11 u64 t0 = key_ctx->tweak[0], t1 = key_ctx->tweak[1],
12 t2 = key_ctx->tweak[2];
16 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0;
20 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2;
23 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0;
26 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2;
29 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0;
32 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2;
35 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0;
38 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2;
42 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0;
46 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2;
49 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0;
52 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2;
55 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0;
58 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2;
61 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0;
64 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2;
69 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0;
73 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2;
76 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0;
79 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2;
82 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0;
85 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2;
88 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0;
91 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2;
95 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0;
99 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2;
102 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0;
105 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2;
108 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0;
111 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2;
114 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0;
117 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2;
122 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0;
126 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2;
129 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0;
132 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2;
135 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0;
138 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2;
141 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0;
144 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2;
148 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0;
152 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2;
155 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0;
158 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2;
161 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0;
164 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2;
167 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0;
170 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2;
175 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0;
179 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2;
182 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0;
185 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2;
188 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0;
191 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2;
194 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0;
197 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2;
201 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0;
205 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2;
208 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0;
211 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2;
214 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0;
217 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2;
220 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0;
223 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2;
228 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0;
232 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2;
235 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0;
238 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2;
241 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0;
244 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2;
247 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0;
250 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2;
254 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0;
258 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2;
261 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0;
264 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2;
267 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0;
270 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2;
273 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0;
276 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2;
281 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0;
285 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2;
288 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0;
291 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2;
294 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0;
297 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2;
300 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0;
303 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2;
307 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0;
311 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2;
314 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0;
317 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2;
320 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0;
323 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2;
326 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0;
329 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2;
334 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0;
338 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2;
341 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0;
344 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2;
347 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0;
350 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2;
353 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0;
356 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2;
360 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0;
364 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2;
367 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0;
370 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2;
373 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0;
376 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2;
379 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0;
382 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2;
387 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0;
391 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2;
394 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0;
397 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2;
400 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0;
403 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2;
406 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0;
409 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2;
413 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0;
417 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2;
420 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0;
423 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2;
426 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0;
429 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2;
432 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0;
435 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2;
440 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0;
444 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2;
447 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0;
450 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2;
453 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0;
456 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2;
459 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0;
462 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2;
466 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0;
470 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2;
473 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0;
476 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2;
479 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0;
482 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2;
485 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0;
488 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2;
491 output[1] = b1 + k4 + t0;
492 output[2] = b2 + k0 + t1;
493 output[3] = b3 + k1 + 18;
496 void threefish_decrypt_256(struct threefish_key *key_ctx, u64 *input,
499 u64 b0 = input[0], b1 = input[1],
500 b2 = input[2], b3 = input[3];
501 u64 k0 = key_ctx->key[0], k1 = key_ctx->key[1],
502 k2 = key_ctx->key[2], k3 = key_ctx->key[3],
503 k4 = key_ctx->key[4];
504 u64 t0 = key_ctx->tweak[0], t1 = key_ctx->tweak[1],
505 t2 = key_ctx->tweak[2];
514 b3 = (tmp >> 32) | (tmp << (64 - 32));
518 b1 = (tmp >> 32) | (tmp << (64 - 32));
522 b1 = (tmp >> 58) | (tmp << (64 - 58));
526 b3 = (tmp >> 22) | (tmp << (64 - 22));
530 b3 = (tmp >> 46) | (tmp << (64 - 46));
534 b1 = (tmp >> 12) | (tmp << (64 - 12));
538 b1 = (tmp >> 25) | (tmp << (64 - 25));
543 b3 = (tmp >> 33) | (tmp << (64 - 33));
548 b3 = (tmp >> 5) | (tmp << (64 - 5));
552 b1 = (tmp >> 37) | (tmp << (64 - 37));
556 b1 = (tmp >> 23) | (tmp << (64 - 23));
560 b3 = (tmp >> 40) | (tmp << (64 - 40));
564 b3 = (tmp >> 52) | (tmp << (64 - 52));
568 b1 = (tmp >> 57) | (tmp << (64 - 57));
572 b1 = (tmp >> 14) | (tmp << (64 - 14));
577 b3 = (tmp >> 16) | (tmp << (64 - 16));
583 b3 = (tmp >> 32) | (tmp << (64 - 32));
587 b1 = (tmp >> 32) | (tmp << (64 - 32));
591 b1 = (tmp >> 58) | (tmp << (64 - 58));
595 b3 = (tmp >> 22) | (tmp << (64 - 22));
599 b3 = (tmp >> 46) | (tmp << (64 - 46));
603 b1 = (tmp >> 12) | (tmp << (64 - 12));
607 b1 = (tmp >> 25) | (tmp << (64 - 25));
612 b3 = (tmp >> 33) | (tmp << (64 - 33));
617 b3 = (tmp >> 5) | (tmp << (64 - 5));
621 b1 = (tmp >> 37) | (tmp << (64 - 37));
625 b1 = (tmp >> 23) | (tmp << (64 - 23));
629 b3 = (tmp >> 40) | (tmp << (64 - 40));
633 b3 = (tmp >> 52) | (tmp << (64 - 52));
637 b1 = (tmp >> 57) | (tmp << (64 - 57));
641 b1 = (tmp >> 14) | (tmp << (64 - 14));
646 b3 = (tmp >> 16) | (tmp << (64 - 16));
652 b3 = (tmp >> 32) | (tmp << (64 - 32));
656 b1 = (tmp >> 32) | (tmp << (64 - 32));
660 b1 = (tmp >> 58) | (tmp << (64 - 58));
664 b3 = (tmp >> 22) | (tmp << (64 - 22));
668 b3 = (tmp >> 46) | (tmp << (64 - 46));
672 b1 = (tmp >> 12) | (tmp << (64 - 12));
676 b1 = (tmp >> 25) | (tmp << (64 - 25));
681 b3 = (tmp >> 33) | (tmp << (64 - 33));
686 b3 = (tmp >> 5) | (tmp << (64 - 5));
690 b1 = (tmp >> 37) | (tmp << (64 - 37));
694 b1 = (tmp >> 23) | (tmp << (64 - 23));
698 b3 = (tmp >> 40) | (tmp << (64 - 40));
702 b3 = (tmp >> 52) | (tmp << (64 - 52));
706 b1 = (tmp >> 57) | (tmp << (64 - 57));
710 b1 = (tmp >> 14) | (tmp << (64 - 14));
715 b3 = (tmp >> 16) | (tmp << (64 - 16));
721 b3 = (tmp >> 32) | (tmp << (64 - 32));
725 b1 = (tmp >> 32) | (tmp << (64 - 32));
729 b1 = (tmp >> 58) | (tmp << (64 - 58));
733 b3 = (tmp >> 22) | (tmp << (64 - 22));
737 b3 = (tmp >> 46) | (tmp << (64 - 46));
741 b1 = (tmp >> 12) | (tmp << (64 - 12));
745 b1 = (tmp >> 25) | (tmp << (64 - 25));
750 b3 = (tmp >> 33) | (tmp << (64 - 33));
755 b3 = (tmp >> 5) | (tmp << (64 - 5));
759 b1 = (tmp >> 37) | (tmp << (64 - 37));
763 b1 = (tmp >> 23) | (tmp << (64 - 23));
767 b3 = (tmp >> 40) | (tmp << (64 - 40));
771 b3 = (tmp >> 52) | (tmp << (64 - 52));
775 b1 = (tmp >> 57) | (tmp << (64 - 57));
779 b1 = (tmp >> 14) | (tmp << (64 - 14));
784 b3 = (tmp >> 16) | (tmp << (64 - 16));
790 b3 = (tmp >> 32) | (tmp << (64 - 32));
794 b1 = (tmp >> 32) | (tmp << (64 - 32));
798 b1 = (tmp >> 58) | (tmp << (64 - 58));
802 b3 = (tmp >> 22) | (tmp << (64 - 22));
806 b3 = (tmp >> 46) | (tmp << (64 - 46));
810 b1 = (tmp >> 12) | (tmp << (64 - 12));
814 b1 = (tmp >> 25) | (tmp << (64 - 25));
819 b3 = (tmp >> 33) | (tmp << (64 - 33));
824 b3 = (tmp >> 5) | (tmp << (64 - 5));
828 b1 = (tmp >> 37) | (tmp << (64 - 37));
832 b1 = (tmp >> 23) | (tmp << (64 - 23));
836 b3 = (tmp >> 40) | (tmp << (64 - 40));
840 b3 = (tmp >> 52) | (tmp << (64 - 52));
844 b1 = (tmp >> 57) | (tmp << (64 - 57));
848 b1 = (tmp >> 14) | (tmp << (64 - 14));
853 b3 = (tmp >> 16) | (tmp << (64 - 16));
859 b3 = (tmp >> 32) | (tmp << (64 - 32));
863 b1 = (tmp >> 32) | (tmp << (64 - 32));
867 b1 = (tmp >> 58) | (tmp << (64 - 58));
871 b3 = (tmp >> 22) | (tmp << (64 - 22));
875 b3 = (tmp >> 46) | (tmp << (64 - 46));
879 b1 = (tmp >> 12) | (tmp << (64 - 12));
883 b1 = (tmp >> 25) | (tmp << (64 - 25));
888 b3 = (tmp >> 33) | (tmp << (64 - 33));
893 b3 = (tmp >> 5) | (tmp << (64 - 5));
897 b1 = (tmp >> 37) | (tmp << (64 - 37));
901 b1 = (tmp >> 23) | (tmp << (64 - 23));
905 b3 = (tmp >> 40) | (tmp << (64 - 40));
909 b3 = (tmp >> 52) | (tmp << (64 - 52));
913 b1 = (tmp >> 57) | (tmp << (64 - 57));
917 b1 = (tmp >> 14) | (tmp << (64 - 14));
922 b3 = (tmp >> 16) | (tmp << (64 - 16));
928 b3 = (tmp >> 32) | (tmp << (64 - 32));
932 b1 = (tmp >> 32) | (tmp << (64 - 32));
936 b1 = (tmp >> 58) | (tmp << (64 - 58));
940 b3 = (tmp >> 22) | (tmp << (64 - 22));
944 b3 = (tmp >> 46) | (tmp << (64 - 46));
948 b1 = (tmp >> 12) | (tmp << (64 - 12));
952 b1 = (tmp >> 25) | (tmp << (64 - 25));
957 b3 = (tmp >> 33) | (tmp << (64 - 33));
962 b3 = (tmp >> 5) | (tmp << (64 - 5));
966 b1 = (tmp >> 37) | (tmp << (64 - 37));
970 b1 = (tmp >> 23) | (tmp << (64 - 23));
974 b3 = (tmp >> 40) | (tmp << (64 - 40));
978 b3 = (tmp >> 52) | (tmp << (64 - 52));
982 b1 = (tmp >> 57) | (tmp << (64 - 57));
986 b1 = (tmp >> 14) | (tmp << (64 - 14));
991 b3 = (tmp >> 16) | (tmp << (64 - 16));
997 b3 = (tmp >> 32) | (tmp << (64 - 32));
1001 b1 = (tmp >> 32) | (tmp << (64 - 32));
1005 b1 = (tmp >> 58) | (tmp << (64 - 58));
1009 b3 = (tmp >> 22) | (tmp << (64 - 22));
1013 b3 = (tmp >> 46) | (tmp << (64 - 46));
1017 b1 = (tmp >> 12) | (tmp << (64 - 12));
1021 b1 = (tmp >> 25) | (tmp << (64 - 25));
1026 b3 = (tmp >> 33) | (tmp << (64 - 33));
1031 b3 = (tmp >> 5) | (tmp << (64 - 5));
1035 b1 = (tmp >> 37) | (tmp << (64 - 37));
1039 b1 = (tmp >> 23) | (tmp << (64 - 23));
1043 b3 = (tmp >> 40) | (tmp << (64 - 40));
1047 b3 = (tmp >> 52) | (tmp << (64 - 52));
1051 b1 = (tmp >> 57) | (tmp << (64 - 57));
1055 b1 = (tmp >> 14) | (tmp << (64 - 14));
1060 b3 = (tmp >> 16) | (tmp << (64 - 16));
1066 b3 = (tmp >> 32) | (tmp << (64 - 32));
1070 b1 = (tmp >> 32) | (tmp << (64 - 32));
1074 b1 = (tmp >> 58) | (tmp << (64 - 58));
1078 b3 = (tmp >> 22) | (tmp << (64 - 22));
1082 b3 = (tmp >> 46) | (tmp << (64 - 46));
1086 b1 = (tmp >> 12) | (tmp << (64 - 12));
1090 b1 = (tmp >> 25) | (tmp << (64 - 25));
1095 b3 = (tmp >> 33) | (tmp << (64 - 33));
1100 b3 = (tmp >> 5) | (tmp << (64 - 5));
1104 b1 = (tmp >> 37) | (tmp << (64 - 37));
1108 b1 = (tmp >> 23) | (tmp << (64 - 23));
1112 b3 = (tmp >> 40) | (tmp << (64 - 40));
1116 b3 = (tmp >> 52) | (tmp << (64 - 52));
1120 b1 = (tmp >> 57) | (tmp << (64 - 57));
1124 b1 = (tmp >> 14) | (tmp << (64 - 14));
1129 b3 = (tmp >> 16) | (tmp << (64 - 16));
1139 void threefish_encrypt_512(struct threefish_key *key_ctx, u64 *input,
1142 u64 b0 = input[0], b1 = input[1],
1143 b2 = input[2], b3 = input[3],
1144 b4 = input[4], b5 = input[5],
1145 b6 = input[6], b7 = input[7];
1146 u64 k0 = key_ctx->key[0], k1 = key_ctx->key[1],
1147 k2 = key_ctx->key[2], k3 = key_ctx->key[3],
1148 k4 = key_ctx->key[4], k5 = key_ctx->key[5],
1149 k6 = key_ctx->key[6], k7 = key_ctx->key[7],
1150 k8 = key_ctx->key[8];
1151 u64 t0 = key_ctx->tweak[0], t1 = key_ctx->tweak[1],
1152 t2 = key_ctx->tweak[2];
1156 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b0;
1160 b3 = ((b3 << 36) | (b3 >> (64 - 36))) ^ b2;
1164 b5 = ((b5 << 19) | (b5 >> (64 - 19))) ^ b4;
1168 b7 = ((b7 << 37) | (b7 >> (64 - 37))) ^ b6;
1171 b1 = ((b1 << 33) | (b1 >> (64 - 33))) ^ b2;
1174 b7 = ((b7 << 27) | (b7 >> (64 - 27))) ^ b4;
1177 b5 = ((b5 << 14) | (b5 >> (64 - 14))) ^ b6;
1180 b3 = ((b3 << 42) | (b3 >> (64 - 42))) ^ b0;
1183 b1 = ((b1 << 17) | (b1 >> (64 - 17))) ^ b4;
1186 b3 = ((b3 << 49) | (b3 >> (64 - 49))) ^ b6;
1189 b5 = ((b5 << 36) | (b5 >> (64 - 36))) ^ b0;
1192 b7 = ((b7 << 39) | (b7 >> (64 - 39))) ^ b2;
1195 b1 = ((b1 << 44) | (b1 >> (64 - 44))) ^ b6;
1198 b7 = ((b7 << 9) | (b7 >> (64 - 9))) ^ b0;
1201 b5 = ((b5 << 54) | (b5 >> (64 - 54))) ^ b2;
1204 b3 = ((b3 << 56) | (b3 >> (64 - 56))) ^ b4;
1208 b1 = ((b1 << 39) | (b1 >> (64 - 39))) ^ b0;
1212 b3 = ((b3 << 30) | (b3 >> (64 - 30))) ^ b2;
1216 b5 = ((b5 << 34) | (b5 >> (64 - 34))) ^ b4;
1220 b7 = ((b7 << 24) | (b7 >> (64 - 24))) ^ b6;
1223 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b2;
1226 b7 = ((b7 << 50) | (b7 >> (64 - 50))) ^ b4;
1229 b5 = ((b5 << 10) | (b5 >> (64 - 10))) ^ b6;
1232 b3 = ((b3 << 17) | (b3 >> (64 - 17))) ^ b0;
1235 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b4;
1238 b3 = ((b3 << 29) | (b3 >> (64 - 29))) ^ b6;
1241 b5 = ((b5 << 39) | (b5 >> (64 - 39))) ^ b0;
1244 b7 = ((b7 << 43) | (b7 >> (64 - 43))) ^ b2;
1247 b1 = ((b1 << 8) | (b1 >> (64 - 8))) ^ b6;
1250 b7 = ((b7 << 35) | (b7 >> (64 - 35))) ^ b0;
1253 b5 = ((b5 << 56) | (b5 >> (64 - 56))) ^ b2;
1256 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b4;
1260 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b0;
1264 b3 = ((b3 << 36) | (b3 >> (64 - 36))) ^ b2;
1268 b5 = ((b5 << 19) | (b5 >> (64 - 19))) ^ b4;
1272 b7 = ((b7 << 37) | (b7 >> (64 - 37))) ^ b6;
1275 b1 = ((b1 << 33) | (b1 >> (64 - 33))) ^ b2;
1278 b7 = ((b7 << 27) | (b7 >> (64 - 27))) ^ b4;
1281 b5 = ((b5 << 14) | (b5 >> (64 - 14))) ^ b6;
1284 b3 = ((b3 << 42) | (b3 >> (64 - 42))) ^ b0;
1287 b1 = ((b1 << 17) | (b1 >> (64 - 17))) ^ b4;
1290 b3 = ((b3 << 49) | (b3 >> (64 - 49))) ^ b6;
1293 b5 = ((b5 << 36) | (b5 >> (64 - 36))) ^ b0;
1296 b7 = ((b7 << 39) | (b7 >> (64 - 39))) ^ b2;
1299 b1 = ((b1 << 44) | (b1 >> (64 - 44))) ^ b6;
1302 b7 = ((b7 << 9) | (b7 >> (64 - 9))) ^ b0;
1305 b5 = ((b5 << 54) | (b5 >> (64 - 54))) ^ b2;
1308 b3 = ((b3 << 56) | (b3 >> (64 - 56))) ^ b4;
1312 b1 = ((b1 << 39) | (b1 >> (64 - 39))) ^ b0;
1316 b3 = ((b3 << 30) | (b3 >> (64 - 30))) ^ b2;
1320 b5 = ((b5 << 34) | (b5 >> (64 - 34))) ^ b4;
1324 b7 = ((b7 << 24) | (b7 >> (64 - 24))) ^ b6;
1327 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b2;
1330 b7 = ((b7 << 50) | (b7 >> (64 - 50))) ^ b4;
1333 b5 = ((b5 << 10) | (b5 >> (64 - 10))) ^ b6;
1336 b3 = ((b3 << 17) | (b3 >> (64 - 17))) ^ b0;
1339 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b4;
1342 b3 = ((b3 << 29) | (b3 >> (64 - 29))) ^ b6;
1345 b5 = ((b5 << 39) | (b5 >> (64 - 39))) ^ b0;
1348 b7 = ((b7 << 43) | (b7 >> (64 - 43))) ^ b2;
1351 b1 = ((b1 << 8) | (b1 >> (64 - 8))) ^ b6;
1354 b7 = ((b7 << 35) | (b7 >> (64 - 35))) ^ b0;
1357 b5 = ((b5 << 56) | (b5 >> (64 - 56))) ^ b2;
1360 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b4;
1364 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b0;
1368 b3 = ((b3 << 36) | (b3 >> (64 - 36))) ^ b2;
1372 b5 = ((b5 << 19) | (b5 >> (64 - 19))) ^ b4;
1376 b7 = ((b7 << 37) | (b7 >> (64 - 37))) ^ b6;
1379 b1 = ((b1 << 33) | (b1 >> (64 - 33))) ^ b2;
1382 b7 = ((b7 << 27) | (b7 >> (64 - 27))) ^ b4;
1385 b5 = ((b5 << 14) | (b5 >> (64 - 14))) ^ b6;
1388 b3 = ((b3 << 42) | (b3 >> (64 - 42))) ^ b0;
1391 b1 = ((b1 << 17) | (b1 >> (64 - 17))) ^ b4;
1394 b3 = ((b3 << 49) | (b3 >> (64 - 49))) ^ b6;
1397 b5 = ((b5 << 36) | (b5 >> (64 - 36))) ^ b0;
1400 b7 = ((b7 << 39) | (b7 >> (64 - 39))) ^ b2;
1403 b1 = ((b1 << 44) | (b1 >> (64 - 44))) ^ b6;
1406 b7 = ((b7 << 9) | (b7 >> (64 - 9))) ^ b0;
1409 b5 = ((b5 << 54) | (b5 >> (64 - 54))) ^ b2;
1412 b3 = ((b3 << 56) | (b3 >> (64 - 56))) ^ b4;
1416 b1 = ((b1 << 39) | (b1 >> (64 - 39))) ^ b0;
1420 b3 = ((b3 << 30) | (b3 >> (64 - 30))) ^ b2;
1424 b5 = ((b5 << 34) | (b5 >> (64 - 34))) ^ b4;
1428 b7 = ((b7 << 24) | (b7 >> (64 - 24))) ^ b6;
1431 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b2;
1434 b7 = ((b7 << 50) | (b7 >> (64 - 50))) ^ b4;
1437 b5 = ((b5 << 10) | (b5 >> (64 - 10))) ^ b6;
1440 b3 = ((b3 << 17) | (b3 >> (64 - 17))) ^ b0;
1443 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b4;
1446 b3 = ((b3 << 29) | (b3 >> (64 - 29))) ^ b6;
1449 b5 = ((b5 << 39) | (b5 >> (64 - 39))) ^ b0;
1452 b7 = ((b7 << 43) | (b7 >> (64 - 43))) ^ b2;
1455 b1 = ((b1 << 8) | (b1 >> (64 - 8))) ^ b6;
1458 b7 = ((b7 << 35) | (b7 >> (64 - 35))) ^ b0;
1461 b5 = ((b5 << 56) | (b5 >> (64 - 56))) ^ b2;
1464 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b4;
1468 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b0;
1472 b3 = ((b3 << 36) | (b3 >> (64 - 36))) ^ b2;
1476 b5 = ((b5 << 19) | (b5 >> (64 - 19))) ^ b4;
1480 b7 = ((b7 << 37) | (b7 >> (64 - 37))) ^ b6;
1483 b1 = ((b1 << 33) | (b1 >> (64 - 33))) ^ b2;
1486 b7 = ((b7 << 27) | (b7 >> (64 - 27))) ^ b4;
1489 b5 = ((b5 << 14) | (b5 >> (64 - 14))) ^ b6;
1492 b3 = ((b3 << 42) | (b3 >> (64 - 42))) ^ b0;
1495 b1 = ((b1 << 17) | (b1 >> (64 - 17))) ^ b4;
1498 b3 = ((b3 << 49) | (b3 >> (64 - 49))) ^ b6;
1501 b5 = ((b5 << 36) | (b5 >> (64 - 36))) ^ b0;
1504 b7 = ((b7 << 39) | (b7 >> (64 - 39))) ^ b2;
1507 b1 = ((b1 << 44) | (b1 >> (64 - 44))) ^ b6;
1510 b7 = ((b7 << 9) | (b7 >> (64 - 9))) ^ b0;
1513 b5 = ((b5 << 54) | (b5 >> (64 - 54))) ^ b2;
1516 b3 = ((b3 << 56) | (b3 >> (64 - 56))) ^ b4;
1520 b1 = ((b1 << 39) | (b1 >> (64 - 39))) ^ b0;
1524 b3 = ((b3 << 30) | (b3 >> (64 - 30))) ^ b2;
1528 b5 = ((b5 << 34) | (b5 >> (64 - 34))) ^ b4;
1532 b7 = ((b7 << 24) | (b7 >> (64 - 24))) ^ b6;
1535 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b2;
1538 b7 = ((b7 << 50) | (b7 >> (64 - 50))) ^ b4;
1541 b5 = ((b5 << 10) | (b5 >> (64 - 10))) ^ b6;
1544 b3 = ((b3 << 17) | (b3 >> (64 - 17))) ^ b0;
1547 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b4;
1550 b3 = ((b3 << 29) | (b3 >> (64 - 29))) ^ b6;
1553 b5 = ((b5 << 39) | (b5 >> (64 - 39))) ^ b0;
1556 b7 = ((b7 << 43) | (b7 >> (64 - 43))) ^ b2;
1559 b1 = ((b1 << 8) | (b1 >> (64 - 8))) ^ b6;
1562 b7 = ((b7 << 35) | (b7 >> (64 - 35))) ^ b0;
1565 b5 = ((b5 << 56) | (b5 >> (64 - 56))) ^ b2;
1568 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b4;
1572 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b0;
1576 b3 = ((b3 << 36) | (b3 >> (64 - 36))) ^ b2;
1580 b5 = ((b5 << 19) | (b5 >> (64 - 19))) ^ b4;
1584 b7 = ((b7 << 37) | (b7 >> (64 - 37))) ^ b6;
1587 b1 = ((b1 << 33) | (b1 >> (64 - 33))) ^ b2;
1590 b7 = ((b7 << 27) | (b7 >> (64 - 27))) ^ b4;
1593 b5 = ((b5 << 14) | (b5 >> (64 - 14))) ^ b6;
1596 b3 = ((b3 << 42) | (b3 >> (64 - 42))) ^ b0;
1599 b1 = ((b1 << 17) | (b1 >> (64 - 17))) ^ b4;
1602 b3 = ((b3 << 49) | (b3 >> (64 - 49))) ^ b6;
1605 b5 = ((b5 << 36) | (b5 >> (64 - 36))) ^ b0;
1608 b7 = ((b7 << 39) | (b7 >> (64 - 39))) ^ b2;
1611 b1 = ((b1 << 44) | (b1 >> (64 - 44))) ^ b6;
1614 b7 = ((b7 << 9) | (b7 >> (64 - 9))) ^ b0;
1617 b5 = ((b5 << 54) | (b5 >> (64 - 54))) ^ b2;
1620 b3 = ((b3 << 56) | (b3 >> (64 - 56))) ^ b4;
1624 b1 = ((b1 << 39) | (b1 >> (64 - 39))) ^ b0;
1628 b3 = ((b3 << 30) | (b3 >> (64 - 30))) ^ b2;
1632 b5 = ((b5 << 34) | (b5 >> (64 - 34))) ^ b4;
1636 b7 = ((b7 << 24) | (b7 >> (64 - 24))) ^ b6;
1639 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b2;
1642 b7 = ((b7 << 50) | (b7 >> (64 - 50))) ^ b4;
1645 b5 = ((b5 << 10) | (b5 >> (64 - 10))) ^ b6;
1648 b3 = ((b3 << 17) | (b3 >> (64 - 17))) ^ b0;
1651 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b4;
1654 b3 = ((b3 << 29) | (b3 >> (64 - 29))) ^ b6;
1657 b5 = ((b5 << 39) | (b5 >> (64 - 39))) ^ b0;
1660 b7 = ((b7 << 43) | (b7 >> (64 - 43))) ^ b2;
1663 b1 = ((b1 << 8) | (b1 >> (64 - 8))) ^ b6;
1666 b7 = ((b7 << 35) | (b7 >> (64 - 35))) ^ b0;
1669 b5 = ((b5 << 56) | (b5 >> (64 - 56))) ^ b2;
1672 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b4;
1676 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b0;
1680 b3 = ((b3 << 36) | (b3 >> (64 - 36))) ^ b2;
1684 b5 = ((b5 << 19) | (b5 >> (64 - 19))) ^ b4;
1688 b7 = ((b7 << 37) | (b7 >> (64 - 37))) ^ b6;
1691 b1 = ((b1 << 33) | (b1 >> (64 - 33))) ^ b2;
1694 b7 = ((b7 << 27) | (b7 >> (64 - 27))) ^ b4;
1697 b5 = ((b5 << 14) | (b5 >> (64 - 14))) ^ b6;
1700 b3 = ((b3 << 42) | (b3 >> (64 - 42))) ^ b0;
1703 b1 = ((b1 << 17) | (b1 >> (64 - 17))) ^ b4;
1706 b3 = ((b3 << 49) | (b3 >> (64 - 49))) ^ b6;
1709 b5 = ((b5 << 36) | (b5 >> (64 - 36))) ^ b0;
1712 b7 = ((b7 << 39) | (b7 >> (64 - 39))) ^ b2;
1715 b1 = ((b1 << 44) | (b1 >> (64 - 44))) ^ b6;
1718 b7 = ((b7 << 9) | (b7 >> (64 - 9))) ^ b0;
1721 b5 = ((b5 << 54) | (b5 >> (64 - 54))) ^ b2;
1724 b3 = ((b3 << 56) | (b3 >> (64 - 56))) ^ b4;
1728 b1 = ((b1 << 39) | (b1 >> (64 - 39))) ^ b0;
1732 b3 = ((b3 << 30) | (b3 >> (64 - 30))) ^ b2;
1736 b5 = ((b5 << 34) | (b5 >> (64 - 34))) ^ b4;
1740 b7 = ((b7 << 24) | (b7 >> (64 - 24))) ^ b6;
1743 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b2;
1746 b7 = ((b7 << 50) | (b7 >> (64 - 50))) ^ b4;
1749 b5 = ((b5 << 10) | (b5 >> (64 - 10))) ^ b6;
1752 b3 = ((b3 << 17) | (b3 >> (64 - 17))) ^ b0;
1755 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b4;
1758 b3 = ((b3 << 29) | (b3 >> (64 - 29))) ^ b6;
1761 b5 = ((b5 << 39) | (b5 >> (64 - 39))) ^ b0;
1764 b7 = ((b7 << 43) | (b7 >> (64 - 43))) ^ b2;
1767 b1 = ((b1 << 8) | (b1 >> (64 - 8))) ^ b6;
1770 b7 = ((b7 << 35) | (b7 >> (64 - 35))) ^ b0;
1773 b5 = ((b5 << 56) | (b5 >> (64 - 56))) ^ b2;
1776 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b4;
1780 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b0;
1784 b3 = ((b3 << 36) | (b3 >> (64 - 36))) ^ b2;
1788 b5 = ((b5 << 19) | (b5 >> (64 - 19))) ^ b4;
1792 b7 = ((b7 << 37) | (b7 >> (64 - 37))) ^ b6;
1795 b1 = ((b1 << 33) | (b1 >> (64 - 33))) ^ b2;
1798 b7 = ((b7 << 27) | (b7 >> (64 - 27))) ^ b4;
1801 b5 = ((b5 << 14) | (b5 >> (64 - 14))) ^ b6;
1804 b3 = ((b3 << 42) | (b3 >> (64 - 42))) ^ b0;
1807 b1 = ((b1 << 17) | (b1 >> (64 - 17))) ^ b4;
1810 b3 = ((b3 << 49) | (b3 >> (64 - 49))) ^ b6;
1813 b5 = ((b5 << 36) | (b5 >> (64 - 36))) ^ b0;
1816 b7 = ((b7 << 39) | (b7 >> (64 - 39))) ^ b2;
1819 b1 = ((b1 << 44) | (b1 >> (64 - 44))) ^ b6;
1822 b7 = ((b7 << 9) | (b7 >> (64 - 9))) ^ b0;
1825 b5 = ((b5 << 54) | (b5 >> (64 - 54))) ^ b2;
1828 b3 = ((b3 << 56) | (b3 >> (64 - 56))) ^ b4;
1832 b1 = ((b1 << 39) | (b1 >> (64 - 39))) ^ b0;
1836 b3 = ((b3 << 30) | (b3 >> (64 - 30))) ^ b2;
1840 b5 = ((b5 << 34) | (b5 >> (64 - 34))) ^ b4;
1844 b7 = ((b7 << 24) | (b7 >> (64 - 24))) ^ b6;
1847 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b2;
1850 b7 = ((b7 << 50) | (b7 >> (64 - 50))) ^ b4;
1853 b5 = ((b5 << 10) | (b5 >> (64 - 10))) ^ b6;
1856 b3 = ((b3 << 17) | (b3 >> (64 - 17))) ^ b0;
1859 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b4;
1862 b3 = ((b3 << 29) | (b3 >> (64 - 29))) ^ b6;
1865 b5 = ((b5 << 39) | (b5 >> (64 - 39))) ^ b0;
1868 b7 = ((b7 << 43) | (b7 >> (64 - 43))) ^ b2;
1871 b1 = ((b1 << 8) | (b1 >> (64 - 8))) ^ b6;
1874 b7 = ((b7 << 35) | (b7 >> (64 - 35))) ^ b0;
1877 b5 = ((b5 << 56) | (b5 >> (64 - 56))) ^ b2;
1880 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b4;
1884 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b0;
1888 b3 = ((b3 << 36) | (b3 >> (64 - 36))) ^ b2;
1892 b5 = ((b5 << 19) | (b5 >> (64 - 19))) ^ b4;
1896 b7 = ((b7 << 37) | (b7 >> (64 - 37))) ^ b6;
1899 b1 = ((b1 << 33) | (b1 >> (64 - 33))) ^ b2;
1902 b7 = ((b7 << 27) | (b7 >> (64 - 27))) ^ b4;
1905 b5 = ((b5 << 14) | (b5 >> (64 - 14))) ^ b6;
1908 b3 = ((b3 << 42) | (b3 >> (64 - 42))) ^ b0;
1911 b1 = ((b1 << 17) | (b1 >> (64 - 17))) ^ b4;
1914 b3 = ((b3 << 49) | (b3 >> (64 - 49))) ^ b6;
1917 b5 = ((b5 << 36) | (b5 >> (64 - 36))) ^ b0;
1920 b7 = ((b7 << 39) | (b7 >> (64 - 39))) ^ b2;
1923 b1 = ((b1 << 44) | (b1 >> (64 - 44))) ^ b6;
1926 b7 = ((b7 << 9) | (b7 >> (64 - 9))) ^ b0;
1929 b5 = ((b5 << 54) | (b5 >> (64 - 54))) ^ b2;
1932 b3 = ((b3 << 56) | (b3 >> (64 - 56))) ^ b4;
1936 b1 = ((b1 << 39) | (b1 >> (64 - 39))) ^ b0;
1940 b3 = ((b3 << 30) | (b3 >> (64 - 30))) ^ b2;
1944 b5 = ((b5 << 34) | (b5 >> (64 - 34))) ^ b4;
1948 b7 = ((b7 << 24) | (b7 >> (64 - 24))) ^ b6;
1951 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b2;
1954 b7 = ((b7 << 50) | (b7 >> (64 - 50))) ^ b4;
1957 b5 = ((b5 << 10) | (b5 >> (64 - 10))) ^ b6;
1960 b3 = ((b3 << 17) | (b3 >> (64 - 17))) ^ b0;
1963 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b4;
1966 b3 = ((b3 << 29) | (b3 >> (64 - 29))) ^ b6;
1969 b5 = ((b5 << 39) | (b5 >> (64 - 39))) ^ b0;
1972 b7 = ((b7 << 43) | (b7 >> (64 - 43))) ^ b2;
1975 b1 = ((b1 << 8) | (b1 >> (64 - 8))) ^ b6;
1978 b7 = ((b7 << 35) | (b7 >> (64 - 35))) ^ b0;
1981 b5 = ((b5 << 56) | (b5 >> (64 - 56))) ^ b2;
1984 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b4;
1988 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b0;
1992 b3 = ((b3 << 36) | (b3 >> (64 - 36))) ^ b2;
1996 b5 = ((b5 << 19) | (b5 >> (64 - 19))) ^ b4;
2000 b7 = ((b7 << 37) | (b7 >> (64 - 37))) ^ b6;
2003 b1 = ((b1 << 33) | (b1 >> (64 - 33))) ^ b2;
2006 b7 = ((b7 << 27) | (b7 >> (64 - 27))) ^ b4;
2009 b5 = ((b5 << 14) | (b5 >> (64 - 14))) ^ b6;
2012 b3 = ((b3 << 42) | (b3 >> (64 - 42))) ^ b0;
2015 b1 = ((b1 << 17) | (b1 >> (64 - 17))) ^ b4;
2018 b3 = ((b3 << 49) | (b3 >> (64 - 49))) ^ b6;
2021 b5 = ((b5 << 36) | (b5 >> (64 - 36))) ^ b0;
2024 b7 = ((b7 << 39) | (b7 >> (64 - 39))) ^ b2;
2027 b1 = ((b1 << 44) | (b1 >> (64 - 44))) ^ b6;
2030 b7 = ((b7 << 9) | (b7 >> (64 - 9))) ^ b0;
2033 b5 = ((b5 << 54) | (b5 >> (64 - 54))) ^ b2;
2036 b3 = ((b3 << 56) | (b3 >> (64 - 56))) ^ b4;
2040 b1 = ((b1 << 39) | (b1 >> (64 - 39))) ^ b0;
2044 b3 = ((b3 << 30) | (b3 >> (64 - 30))) ^ b2;
2048 b5 = ((b5 << 34) | (b5 >> (64 - 34))) ^ b4;
2052 b7 = ((b7 << 24) | (b7 >> (64 - 24))) ^ b6;
2055 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b2;
2058 b7 = ((b7 << 50) | (b7 >> (64 - 50))) ^ b4;
2061 b5 = ((b5 << 10) | (b5 >> (64 - 10))) ^ b6;
2064 b3 = ((b3 << 17) | (b3 >> (64 - 17))) ^ b0;
2067 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b4;
2070 b3 = ((b3 << 29) | (b3 >> (64 - 29))) ^ b6;
2073 b5 = ((b5 << 39) | (b5 >> (64 - 39))) ^ b0;
2076 b7 = ((b7 << 43) | (b7 >> (64 - 43))) ^ b2;
2079 b1 = ((b1 << 8) | (b1 >> (64 - 8))) ^ b6;
2082 b7 = ((b7 << 35) | (b7 >> (64 - 35))) ^ b0;
2085 b5 = ((b5 << 56) | (b5 >> (64 - 56))) ^ b2;
2088 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b4;
2090 output[0] = b0 + k0;
2091 output[1] = b1 + k1;
2092 output[2] = b2 + k2;
2093 output[3] = b3 + k3;
2094 output[4] = b4 + k4;
2095 output[5] = b5 + k5 + t0;
2096 output[6] = b6 + k6 + t1;
2097 output[7] = b7 + k7 + 18;
2100 void threefish_decrypt_512(struct threefish_key *key_ctx, u64 *input,
2103 u64 b0 = input[0], b1 = input[1],
2104 b2 = input[2], b3 = input[3],
2105 b4 = input[4], b5 = input[5],
2106 b6 = input[6], b7 = input[7];
2107 u64 k0 = key_ctx->key[0], k1 = key_ctx->key[1],
2108 k2 = key_ctx->key[2], k3 = key_ctx->key[3],
2109 k4 = key_ctx->key[4], k5 = key_ctx->key[5],
2110 k6 = key_ctx->key[6], k7 = key_ctx->key[7],
2111 k8 = key_ctx->key[8];
2112 u64 t0 = key_ctx->tweak[0], t1 = key_ctx->tweak[1],
2113 t2 = key_ctx->tweak[2];
2127 b3 = (tmp >> 22) | (tmp << (64 - 22));
2131 b5 = (tmp >> 56) | (tmp << (64 - 56));
2135 b7 = (tmp >> 35) | (tmp << (64 - 35));
2139 b1 = (tmp >> 8) | (tmp << (64 - 8));
2143 b7 = (tmp >> 43) | (tmp << (64 - 43));
2147 b5 = (tmp >> 39) | (tmp << (64 - 39));
2151 b3 = (tmp >> 29) | (tmp << (64 - 29));
2155 b1 = (tmp >> 25) | (tmp << (64 - 25));
2159 b3 = (tmp >> 17) | (tmp << (64 - 17));
2163 b5 = (tmp >> 10) | (tmp << (64 - 10));
2167 b7 = (tmp >> 50) | (tmp << (64 - 50));
2171 b1 = (tmp >> 13) | (tmp << (64 - 13));
2175 b7 = (tmp >> 24) | (tmp << (64 - 24));
2180 b5 = (tmp >> 34) | (tmp << (64 - 34));
2185 b3 = (tmp >> 30) | (tmp << (64 - 30));
2190 b1 = (tmp >> 39) | (tmp << (64 - 39));
2195 b3 = (tmp >> 56) | (tmp << (64 - 56));
2199 b5 = (tmp >> 54) | (tmp << (64 - 54));
2203 b7 = (tmp >> 9) | (tmp << (64 - 9));
2207 b1 = (tmp >> 44) | (tmp << (64 - 44));
2211 b7 = (tmp >> 39) | (tmp << (64 - 39));
2215 b5 = (tmp >> 36) | (tmp << (64 - 36));
2219 b3 = (tmp >> 49) | (tmp << (64 - 49));
2223 b1 = (tmp >> 17) | (tmp << (64 - 17));
2227 b3 = (tmp >> 42) | (tmp << (64 - 42));
2231 b5 = (tmp >> 14) | (tmp << (64 - 14));
2235 b7 = (tmp >> 27) | (tmp << (64 - 27));
2239 b1 = (tmp >> 33) | (tmp << (64 - 33));
2243 b7 = (tmp >> 37) | (tmp << (64 - 37));
2248 b5 = (tmp >> 19) | (tmp << (64 - 19));
2253 b3 = (tmp >> 36) | (tmp << (64 - 36));
2258 b1 = (tmp >> 46) | (tmp << (64 - 46));
2263 b3 = (tmp >> 22) | (tmp << (64 - 22));
2267 b5 = (tmp >> 56) | (tmp << (64 - 56));
2271 b7 = (tmp >> 35) | (tmp << (64 - 35));
2275 b1 = (tmp >> 8) | (tmp << (64 - 8));
2279 b7 = (tmp >> 43) | (tmp << (64 - 43));
2283 b5 = (tmp >> 39) | (tmp << (64 - 39));
2287 b3 = (tmp >> 29) | (tmp << (64 - 29));
2291 b1 = (tmp >> 25) | (tmp << (64 - 25));
2295 b3 = (tmp >> 17) | (tmp << (64 - 17));
2299 b5 = (tmp >> 10) | (tmp << (64 - 10));
2303 b7 = (tmp >> 50) | (tmp << (64 - 50));
2307 b1 = (tmp >> 13) | (tmp << (64 - 13));
2311 b7 = (tmp >> 24) | (tmp << (64 - 24));
2316 b5 = (tmp >> 34) | (tmp << (64 - 34));
2321 b3 = (tmp >> 30) | (tmp << (64 - 30));
2326 b1 = (tmp >> 39) | (tmp << (64 - 39));
2331 b3 = (tmp >> 56) | (tmp << (64 - 56));
2335 b5 = (tmp >> 54) | (tmp << (64 - 54));
2339 b7 = (tmp >> 9) | (tmp << (64 - 9));
2343 b1 = (tmp >> 44) | (tmp << (64 - 44));
2347 b7 = (tmp >> 39) | (tmp << (64 - 39));
2351 b5 = (tmp >> 36) | (tmp << (64 - 36));
2355 b3 = (tmp >> 49) | (tmp << (64 - 49));
2359 b1 = (tmp >> 17) | (tmp << (64 - 17));
2363 b3 = (tmp >> 42) | (tmp << (64 - 42));
2367 b5 = (tmp >> 14) | (tmp << (64 - 14));
2371 b7 = (tmp >> 27) | (tmp << (64 - 27));
2375 b1 = (tmp >> 33) | (tmp << (64 - 33));
2379 b7 = (tmp >> 37) | (tmp << (64 - 37));
2384 b5 = (tmp >> 19) | (tmp << (64 - 19));
2389 b3 = (tmp >> 36) | (tmp << (64 - 36));
2394 b1 = (tmp >> 46) | (tmp << (64 - 46));
2399 b3 = (tmp >> 22) | (tmp << (64 - 22));
2403 b5 = (tmp >> 56) | (tmp << (64 - 56));
2407 b7 = (tmp >> 35) | (tmp << (64 - 35));
2411 b1 = (tmp >> 8) | (tmp << (64 - 8));
2415 b7 = (tmp >> 43) | (tmp << (64 - 43));
2419 b5 = (tmp >> 39) | (tmp << (64 - 39));
2423 b3 = (tmp >> 29) | (tmp << (64 - 29));
2427 b1 = (tmp >> 25) | (tmp << (64 - 25));
2431 b3 = (tmp >> 17) | (tmp << (64 - 17));
2435 b5 = (tmp >> 10) | (tmp << (64 - 10));
2439 b7 = (tmp >> 50) | (tmp << (64 - 50));
2443 b1 = (tmp >> 13) | (tmp << (64 - 13));
2447 b7 = (tmp >> 24) | (tmp << (64 - 24));
2452 b5 = (tmp >> 34) | (tmp << (64 - 34));
2457 b3 = (tmp >> 30) | (tmp << (64 - 30));
2462 b1 = (tmp >> 39) | (tmp << (64 - 39));
2467 b3 = (tmp >> 56) | (tmp << (64 - 56));
2471 b5 = (tmp >> 54) | (tmp << (64 - 54));
2475 b7 = (tmp >> 9) | (tmp << (64 - 9));
2479 b1 = (tmp >> 44) | (tmp << (64 - 44));
2483 b7 = (tmp >> 39) | (tmp << (64 - 39));
2487 b5 = (tmp >> 36) | (tmp << (64 - 36));
2491 b3 = (tmp >> 49) | (tmp << (64 - 49));
2495 b1 = (tmp >> 17) | (tmp << (64 - 17));
2499 b3 = (tmp >> 42) | (tmp << (64 - 42));
2503 b5 = (tmp >> 14) | (tmp << (64 - 14));
2507 b7 = (tmp >> 27) | (tmp << (64 - 27));
2511 b1 = (tmp >> 33) | (tmp << (64 - 33));
2515 b7 = (tmp >> 37) | (tmp << (64 - 37));
2520 b5 = (tmp >> 19) | (tmp << (64 - 19));
2525 b3 = (tmp >> 36) | (tmp << (64 - 36));
2530 b1 = (tmp >> 46) | (tmp << (64 - 46));
2535 b3 = (tmp >> 22) | (tmp << (64 - 22));
2539 b5 = (tmp >> 56) | (tmp << (64 - 56));
2543 b7 = (tmp >> 35) | (tmp << (64 - 35));
2547 b1 = (tmp >> 8) | (tmp << (64 - 8));
2551 b7 = (tmp >> 43) | (tmp << (64 - 43));
2555 b5 = (tmp >> 39) | (tmp << (64 - 39));
2559 b3 = (tmp >> 29) | (tmp << (64 - 29));
2563 b1 = (tmp >> 25) | (tmp << (64 - 25));
2567 b3 = (tmp >> 17) | (tmp << (64 - 17));
2571 b5 = (tmp >> 10) | (tmp << (64 - 10));
2575 b7 = (tmp >> 50) | (tmp << (64 - 50));
2579 b1 = (tmp >> 13) | (tmp << (64 - 13));
2583 b7 = (tmp >> 24) | (tmp << (64 - 24));
2588 b5 = (tmp >> 34) | (tmp << (64 - 34));
2593 b3 = (tmp >> 30) | (tmp << (64 - 30));
2598 b1 = (tmp >> 39) | (tmp << (64 - 39));
2603 b3 = (tmp >> 56) | (tmp << (64 - 56));
2607 b5 = (tmp >> 54) | (tmp << (64 - 54));
2611 b7 = (tmp >> 9) | (tmp << (64 - 9));
2615 b1 = (tmp >> 44) | (tmp << (64 - 44));
2619 b7 = (tmp >> 39) | (tmp << (64 - 39));
2623 b5 = (tmp >> 36) | (tmp << (64 - 36));
2627 b3 = (tmp >> 49) | (tmp << (64 - 49));
2631 b1 = (tmp >> 17) | (tmp << (64 - 17));
2635 b3 = (tmp >> 42) | (tmp << (64 - 42));
2639 b5 = (tmp >> 14) | (tmp << (64 - 14));
2643 b7 = (tmp >> 27) | (tmp << (64 - 27));
2647 b1 = (tmp >> 33) | (tmp << (64 - 33));
2651 b7 = (tmp >> 37) | (tmp << (64 - 37));
2656 b5 = (tmp >> 19) | (tmp << (64 - 19));
2661 b3 = (tmp >> 36) | (tmp << (64 - 36));
2666 b1 = (tmp >> 46) | (tmp << (64 - 46));
2671 b3 = (tmp >> 22) | (tmp << (64 - 22));
2675 b5 = (tmp >> 56) | (tmp << (64 - 56));
2679 b7 = (tmp >> 35) | (tmp << (64 - 35));
2683 b1 = (tmp >> 8) | (tmp << (64 - 8));
2687 b7 = (tmp >> 43) | (tmp << (64 - 43));
2691 b5 = (tmp >> 39) | (tmp << (64 - 39));
2695 b3 = (tmp >> 29) | (tmp << (64 - 29));
2699 b1 = (tmp >> 25) | (tmp << (64 - 25));
2703 b3 = (tmp >> 17) | (tmp << (64 - 17));
2707 b5 = (tmp >> 10) | (tmp << (64 - 10));
2711 b7 = (tmp >> 50) | (tmp << (64 - 50));
2715 b1 = (tmp >> 13) | (tmp << (64 - 13));
2719 b7 = (tmp >> 24) | (tmp << (64 - 24));
2724 b5 = (tmp >> 34) | (tmp << (64 - 34));
2729 b3 = (tmp >> 30) | (tmp << (64 - 30));
2734 b1 = (tmp >> 39) | (tmp << (64 - 39));
2739 b3 = (tmp >> 56) | (tmp << (64 - 56));
2743 b5 = (tmp >> 54) | (tmp << (64 - 54));
2747 b7 = (tmp >> 9) | (tmp << (64 - 9));
2751 b1 = (tmp >> 44) | (tmp << (64 - 44));
2755 b7 = (tmp >> 39) | (tmp << (64 - 39));
2759 b5 = (tmp >> 36) | (tmp << (64 - 36));
2763 b3 = (tmp >> 49) | (tmp << (64 - 49));
2767 b1 = (tmp >> 17) | (tmp << (64 - 17));
2771 b3 = (tmp >> 42) | (tmp << (64 - 42));
2775 b5 = (tmp >> 14) | (tmp << (64 - 14));
2779 b7 = (tmp >> 27) | (tmp << (64 - 27));
2783 b1 = (tmp >> 33) | (tmp << (64 - 33));
2787 b7 = (tmp >> 37) | (tmp << (64 - 37));
2792 b5 = (tmp >> 19) | (tmp << (64 - 19));
2797 b3 = (tmp >> 36) | (tmp << (64 - 36));
2802 b1 = (tmp >> 46) | (tmp << (64 - 46));
2807 b3 = (tmp >> 22) | (tmp << (64 - 22));
2811 b5 = (tmp >> 56) | (tmp << (64 - 56));
2815 b7 = (tmp >> 35) | (tmp << (64 - 35));
2819 b1 = (tmp >> 8) | (tmp << (64 - 8));
2823 b7 = (tmp >> 43) | (tmp << (64 - 43));
2827 b5 = (tmp >> 39) | (tmp << (64 - 39));
2831 b3 = (tmp >> 29) | (tmp << (64 - 29));
2835 b1 = (tmp >> 25) | (tmp << (64 - 25));
2839 b3 = (tmp >> 17) | (tmp << (64 - 17));
2843 b5 = (tmp >> 10) | (tmp << (64 - 10));
2847 b7 = (tmp >> 50) | (tmp << (64 - 50));
2851 b1 = (tmp >> 13) | (tmp << (64 - 13));
2855 b7 = (tmp >> 24) | (tmp << (64 - 24));
2860 b5 = (tmp >> 34) | (tmp << (64 - 34));
2865 b3 = (tmp >> 30) | (tmp << (64 - 30));
2870 b1 = (tmp >> 39) | (tmp << (64 - 39));
2875 b3 = (tmp >> 56) | (tmp << (64 - 56));
2879 b5 = (tmp >> 54) | (tmp << (64 - 54));
2883 b7 = (tmp >> 9) | (tmp << (64 - 9));
2887 b1 = (tmp >> 44) | (tmp << (64 - 44));
2891 b7 = (tmp >> 39) | (tmp << (64 - 39));
2895 b5 = (tmp >> 36) | (tmp << (64 - 36));
2899 b3 = (tmp >> 49) | (tmp << (64 - 49));
2903 b1 = (tmp >> 17) | (tmp << (64 - 17));
2907 b3 = (tmp >> 42) | (tmp << (64 - 42));
2911 b5 = (tmp >> 14) | (tmp << (64 - 14));
2915 b7 = (tmp >> 27) | (tmp << (64 - 27));
2919 b1 = (tmp >> 33) | (tmp << (64 - 33));
2923 b7 = (tmp >> 37) | (tmp << (64 - 37));
2928 b5 = (tmp >> 19) | (tmp << (64 - 19));
2933 b3 = (tmp >> 36) | (tmp << (64 - 36));
2938 b1 = (tmp >> 46) | (tmp << (64 - 46));
2943 b3 = (tmp >> 22) | (tmp << (64 - 22));
2947 b5 = (tmp >> 56) | (tmp << (64 - 56));
2951 b7 = (tmp >> 35) | (tmp << (64 - 35));
2955 b1 = (tmp >> 8) | (tmp << (64 - 8));
2959 b7 = (tmp >> 43) | (tmp << (64 - 43));
2963 b5 = (tmp >> 39) | (tmp << (64 - 39));
2967 b3 = (tmp >> 29) | (tmp << (64 - 29));
2971 b1 = (tmp >> 25) | (tmp << (64 - 25));
2975 b3 = (tmp >> 17) | (tmp << (64 - 17));
2979 b5 = (tmp >> 10) | (tmp << (64 - 10));
2983 b7 = (tmp >> 50) | (tmp << (64 - 50));
2987 b1 = (tmp >> 13) | (tmp << (64 - 13));
2991 b7 = (tmp >> 24) | (tmp << (64 - 24));
2996 b5 = (tmp >> 34) | (tmp << (64 - 34));
3001 b3 = (tmp >> 30) | (tmp << (64 - 30));
3006 b1 = (tmp >> 39) | (tmp << (64 - 39));
3011 b3 = (tmp >> 56) | (tmp << (64 - 56));
3015 b5 = (tmp >> 54) | (tmp << (64 - 54));
3019 b7 = (tmp >> 9) | (tmp << (64 - 9));
3023 b1 = (tmp >> 44) | (tmp << (64 - 44));
3027 b7 = (tmp >> 39) | (tmp << (64 - 39));
3031 b5 = (tmp >> 36) | (tmp << (64 - 36));
3035 b3 = (tmp >> 49) | (tmp << (64 - 49));
3039 b1 = (tmp >> 17) | (tmp << (64 - 17));
3043 b3 = (tmp >> 42) | (tmp << (64 - 42));
3047 b5 = (tmp >> 14) | (tmp << (64 - 14));
3051 b7 = (tmp >> 27) | (tmp << (64 - 27));
3055 b1 = (tmp >> 33) | (tmp << (64 - 33));
3059 b7 = (tmp >> 37) | (tmp << (64 - 37));
3064 b5 = (tmp >> 19) | (tmp << (64 - 19));
3069 b3 = (tmp >> 36) | (tmp << (64 - 36));
3074 b1 = (tmp >> 46) | (tmp << (64 - 46));
3079 b3 = (tmp >> 22) | (tmp << (64 - 22));
3083 b5 = (tmp >> 56) | (tmp << (64 - 56));
3087 b7 = (tmp >> 35) | (tmp << (64 - 35));
3091 b1 = (tmp >> 8) | (tmp << (64 - 8));
3095 b7 = (tmp >> 43) | (tmp << (64 - 43));
3099 b5 = (tmp >> 39) | (tmp << (64 - 39));
3103 b3 = (tmp >> 29) | (tmp << (64 - 29));
3107 b1 = (tmp >> 25) | (tmp << (64 - 25));
3111 b3 = (tmp >> 17) | (tmp << (64 - 17));
3115 b5 = (tmp >> 10) | (tmp << (64 - 10));
3119 b7 = (tmp >> 50) | (tmp << (64 - 50));
3123 b1 = (tmp >> 13) | (tmp << (64 - 13));
3127 b7 = (tmp >> 24) | (tmp << (64 - 24));
3132 b5 = (tmp >> 34) | (tmp << (64 - 34));
3137 b3 = (tmp >> 30) | (tmp << (64 - 30));
3142 b1 = (tmp >> 39) | (tmp << (64 - 39));
3147 b3 = (tmp >> 56) | (tmp << (64 - 56));
3151 b5 = (tmp >> 54) | (tmp << (64 - 54));
3155 b7 = (tmp >> 9) | (tmp << (64 - 9));
3159 b1 = (tmp >> 44) | (tmp << (64 - 44));
3163 b7 = (tmp >> 39) | (tmp << (64 - 39));
3167 b5 = (tmp >> 36) | (tmp << (64 - 36));
3171 b3 = (tmp >> 49) | (tmp << (64 - 49));
3175 b1 = (tmp >> 17) | (tmp << (64 - 17));
3179 b3 = (tmp >> 42) | (tmp << (64 - 42));
3183 b5 = (tmp >> 14) | (tmp << (64 - 14));
3187 b7 = (tmp >> 27) | (tmp << (64 - 27));
3191 b1 = (tmp >> 33) | (tmp << (64 - 33));
3195 b7 = (tmp >> 37) | (tmp << (64 - 37));
3200 b5 = (tmp >> 19) | (tmp << (64 - 19));
3205 b3 = (tmp >> 36) | (tmp << (64 - 36));
3210 b1 = (tmp >> 46) | (tmp << (64 - 46));
3215 b3 = (tmp >> 22) | (tmp << (64 - 22));
3219 b5 = (tmp >> 56) | (tmp << (64 - 56));
3223 b7 = (tmp >> 35) | (tmp << (64 - 35));
3227 b1 = (tmp >> 8) | (tmp << (64 - 8));
3231 b7 = (tmp >> 43) | (tmp << (64 - 43));
3235 b5 = (tmp >> 39) | (tmp << (64 - 39));
3239 b3 = (tmp >> 29) | (tmp << (64 - 29));
3243 b1 = (tmp >> 25) | (tmp << (64 - 25));
3247 b3 = (tmp >> 17) | (tmp << (64 - 17));
3251 b5 = (tmp >> 10) | (tmp << (64 - 10));
3255 b7 = (tmp >> 50) | (tmp << (64 - 50));
3259 b1 = (tmp >> 13) | (tmp << (64 - 13));
3263 b7 = (tmp >> 24) | (tmp << (64 - 24));
3268 b5 = (tmp >> 34) | (tmp << (64 - 34));
3273 b3 = (tmp >> 30) | (tmp << (64 - 30));
3278 b1 = (tmp >> 39) | (tmp << (64 - 39));
3283 b3 = (tmp >> 56) | (tmp << (64 - 56));
3287 b5 = (tmp >> 54) | (tmp << (64 - 54));
3291 b7 = (tmp >> 9) | (tmp << (64 - 9));
3295 b1 = (tmp >> 44) | (tmp << (64 - 44));
3299 b7 = (tmp >> 39) | (tmp << (64 - 39));
3303 b5 = (tmp >> 36) | (tmp << (64 - 36));
3307 b3 = (tmp >> 49) | (tmp << (64 - 49));
3311 b1 = (tmp >> 17) | (tmp << (64 - 17));
3315 b3 = (tmp >> 42) | (tmp << (64 - 42));
3319 b5 = (tmp >> 14) | (tmp << (64 - 14));
3323 b7 = (tmp >> 27) | (tmp << (64 - 27));
3327 b1 = (tmp >> 33) | (tmp << (64 - 33));
3331 b7 = (tmp >> 37) | (tmp << (64 - 37));
3336 b5 = (tmp >> 19) | (tmp << (64 - 19));
3341 b3 = (tmp >> 36) | (tmp << (64 - 36));
3346 b1 = (tmp >> 46) | (tmp << (64 - 46));
3361 void threefish_encrypt_1024(struct threefish_key *key_ctx, u64 *input,
3364 u64 b0 = input[0], b1 = input[1],
3365 b2 = input[2], b3 = input[3],
3366 b4 = input[4], b5 = input[5],
3367 b6 = input[6], b7 = input[7],
3368 b8 = input[8], b9 = input[9],
3369 b10 = input[10], b11 = input[11],
3370 b12 = input[12], b13 = input[13],
3371 b14 = input[14], b15 = input[15];
3372 u64 k0 = key_ctx->key[0], k1 = key_ctx->key[1],
3373 k2 = key_ctx->key[2], k3 = key_ctx->key[3],
3374 k4 = key_ctx->key[4], k5 = key_ctx->key[5],
3375 k6 = key_ctx->key[6], k7 = key_ctx->key[7],
3376 k8 = key_ctx->key[8], k9 = key_ctx->key[9],
3377 k10 = key_ctx->key[10], k11 = key_ctx->key[11],
3378 k12 = key_ctx->key[12], k13 = key_ctx->key[13],
3379 k14 = key_ctx->key[14], k15 = key_ctx->key[15],
3380 k16 = key_ctx->key[16];
3381 u64 t0 = key_ctx->tweak[0], t1 = key_ctx->tweak[1],
3382 t2 = key_ctx->tweak[2];
3386 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0;
3390 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2;
3394 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4;
3398 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6;
3402 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8;
3406 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10;
3410 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12;
3413 b14 += b15 + k14 + t1;
3414 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14;
3417 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0;
3420 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2;
3423 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6;
3426 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4;
3429 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10;
3432 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12;
3435 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14;
3438 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8;
3441 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0;
3444 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2;
3447 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4;
3450 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6;
3453 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12;
3456 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14;
3459 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8;
3462 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10;
3465 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0;
3468 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2;
3471 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6;
3474 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4;
3477 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14;
3480 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8;
3483 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10;
3486 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12;
3490 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0;
3494 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2;
3498 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4;
3502 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6;
3506 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8;
3510 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10;
3514 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12;
3517 b14 += b15 + k15 + t2;
3518 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14;
3521 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0;
3524 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2;
3527 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6;
3530 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4;
3533 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10;
3536 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12;
3539 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14;
3542 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8;
3545 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0;
3548 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2;
3551 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4;
3554 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6;
3557 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12;
3560 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14;
3563 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8;
3566 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10;
3569 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0;
3572 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2;
3575 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6;
3578 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4;
3581 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14;
3584 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8;
3587 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10;
3590 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12;
3594 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0;
3598 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2;
3602 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4;
3606 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6;
3610 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8;
3614 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10;
3618 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12;
3621 b14 += b15 + k16 + t0;
3622 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14;
3625 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0;
3628 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2;
3631 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6;
3634 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4;
3637 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10;
3640 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12;
3643 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14;
3646 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8;
3649 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0;
3652 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2;
3655 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4;
3658 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6;
3661 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12;
3664 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14;
3667 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8;
3670 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10;
3673 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0;
3676 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2;
3679 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6;
3682 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4;
3685 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14;
3688 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8;
3691 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10;
3694 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12;
3698 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0;
3702 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2;
3706 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4;
3710 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6;
3714 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8;
3718 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10;
3722 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12;
3725 b14 += b15 + k0 + t1;
3726 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14;
3729 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0;
3732 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2;
3735 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6;
3738 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4;
3741 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10;
3744 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12;
3747 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14;
3750 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8;
3753 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0;
3756 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2;
3759 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4;
3762 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6;
3765 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12;
3768 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14;
3771 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8;
3774 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10;
3777 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0;
3780 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2;
3783 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6;
3786 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4;
3789 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14;
3792 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8;
3795 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10;
3798 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12;
3802 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0;
3806 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2;
3810 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4;
3814 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6;
3818 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8;
3822 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10;
3826 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12;
3829 b14 += b15 + k1 + t2;
3830 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14;
3833 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0;
3836 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2;
3839 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6;
3842 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4;
3845 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10;
3848 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12;
3851 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14;
3854 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8;
3857 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0;
3860 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2;
3863 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4;
3866 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6;
3869 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12;
3872 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14;
3875 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8;
3878 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10;
3881 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0;
3884 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2;
3887 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6;
3890 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4;
3893 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14;
3896 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8;
3899 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10;
3902 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12;
3906 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0;
3910 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2;
3914 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4;
3918 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6;
3922 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8;
3926 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10;
3930 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12;
3933 b14 += b15 + k2 + t0;
3934 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14;
3937 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0;
3940 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2;
3943 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6;
3946 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4;
3949 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10;
3952 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12;
3955 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14;
3958 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8;
3961 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0;
3964 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2;
3967 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4;
3970 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6;
3973 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12;
3976 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14;
3979 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8;
3982 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10;
3985 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0;
3988 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2;
3991 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6;
3994 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4;
3997 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14;
4000 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8;
4003 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10;
4006 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12;
4010 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0;
4014 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2;
4018 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4;
4022 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6;
4026 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8;
4030 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10;
4034 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12;
4037 b14 += b15 + k3 + t1;
4038 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14;
4041 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0;
4044 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2;
4047 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6;
4050 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4;
4053 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10;
4056 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12;
4059 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14;
4062 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8;
4065 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0;
4068 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2;
4071 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4;
4074 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6;
4077 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12;
4080 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14;
4083 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8;
4086 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10;
4089 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0;
4092 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2;
4095 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6;
4098 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4;
4101 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14;
4104 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8;
4107 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10;
4110 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12;
4114 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0;
4118 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2;
4122 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4;
4126 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6;
4130 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8;
4134 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10;
4138 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12;
4141 b14 += b15 + k4 + t2;
4142 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14;
4145 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0;
4148 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2;
4151 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6;
4154 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4;
4157 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10;
4160 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12;
4163 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14;
4166 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8;
4169 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0;
4172 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2;
4175 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4;
4178 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6;
4181 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12;
4184 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14;
4187 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8;
4190 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10;
4193 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0;
4196 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2;
4199 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6;
4202 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4;
4205 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14;
4208 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8;
4211 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10;
4214 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12;
4218 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0;
4222 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2;
4226 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4;
4230 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6;
4234 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8;
4238 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10;
4242 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12;
4245 b14 += b15 + k5 + t0;
4246 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14;
4249 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0;
4252 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2;
4255 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6;
4258 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4;
4261 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10;
4264 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12;
4267 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14;
4270 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8;
4273 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0;
4276 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2;
4279 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4;
4282 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6;
4285 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12;
4288 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14;
4291 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8;
4294 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10;
4297 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0;
4300 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2;
4303 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6;
4306 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4;
4309 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14;
4312 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8;
4315 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10;
4318 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12;
4322 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0;
4326 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2;
4330 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4;
4334 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6;
4338 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8;
4342 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10;
4346 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12;
4349 b14 += b15 + k6 + t1;
4350 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14;
4353 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0;
4356 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2;
4359 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6;
4362 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4;
4365 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10;
4368 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12;
4371 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14;
4374 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8;
4377 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0;
4380 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2;
4383 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4;
4386 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6;
4389 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12;
4392 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14;
4395 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8;
4398 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10;
4401 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0;
4404 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2;
4407 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6;
4410 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4;
4413 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14;
4416 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8;
4419 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10;
4422 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12;
4426 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0;
4430 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2;
4434 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4;
4438 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6;
4442 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8;
4446 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10;
4450 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12;
4453 b14 += b15 + k7 + t2;
4454 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14;
4457 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0;
4460 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2;
4463 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6;
4466 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4;
4469 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10;
4472 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12;
4475 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14;
4478 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8;
4481 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0;
4484 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2;
4487 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4;
4490 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6;
4493 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12;
4496 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14;
4499 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8;
4502 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10;
4505 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0;
4508 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2;
4511 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6;
4514 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4;
4517 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14;
4520 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8;
4523 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10;
4526 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12;
4530 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0;
4534 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2;
4538 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4;
4542 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6;
4546 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8;
4550 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10;
4554 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12;
4557 b14 += b15 + k8 + t0;
4558 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14;
4561 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0;
4564 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2;
4567 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6;
4570 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4;
4573 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10;
4576 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12;
4579 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14;
4582 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8;
4585 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0;
4588 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2;
4591 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4;
4594 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6;
4597 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12;
4600 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14;
4603 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8;
4606 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10;
4609 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0;
4612 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2;
4615 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6;
4618 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4;
4621 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14;
4624 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8;
4627 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10;
4630 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12;
4634 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0;
4638 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2;
4642 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4;
4646 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6;
4650 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8;
4654 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10;
4658 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12;
4661 b14 += b15 + k9 + t1;
4662 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14;
4665 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0;
4668 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2;
4671 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6;
4674 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4;
4677 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10;
4680 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12;
4683 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14;
4686 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8;
4689 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0;
4692 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2;
4695 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4;
4698 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6;
4701 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12;
4704 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14;
4707 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8;
4710 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10;
4713 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0;
4716 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2;
4719 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6;
4722 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4;
4725 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14;
4728 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8;
4731 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10;
4734 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12;
4738 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0;
4742 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2;
4746 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4;
4750 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6;
4754 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8;
4758 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10;
4762 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12;
4765 b14 += b15 + k10 + t2;
4766 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14;
4769 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0;
4772 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2;
4775 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6;
4778 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4;
4781 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10;
4784 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12;
4787 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14;
4790 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8;
4793 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0;
4796 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2;
4799 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4;
4802 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6;
4805 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12;
4808 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14;
4811 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8;
4814 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10;
4817 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0;
4820 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2;
4823 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6;
4826 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4;
4829 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14;
4832 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8;
4835 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10;
4838 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12;
4842 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0;
4846 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2;
4850 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4;
4854 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6;
4858 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8;
4862 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10;
4866 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12;
4869 b14 += b15 + k11 + t0;
4870 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14;
4873 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0;
4876 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2;
4879 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6;
4882 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4;
4885 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10;
4888 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12;
4891 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14;
4894 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8;
4897 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0;
4900 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2;
4903 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4;
4906 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6;
4909 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12;
4912 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14;
4915 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8;
4918 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10;
4921 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0;
4924 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2;
4927 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6;
4930 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4;
4933 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14;
4936 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8;
4939 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10;
4942 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12;
4946 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0;
4950 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2;
4954 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4;
4958 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6;
4962 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8;
4966 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10;
4970 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12;
4973 b14 += b15 + k12 + t1;
4974 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14;
4977 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0;
4980 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2;
4983 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6;
4986 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4;
4989 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10;
4992 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12;
4995 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14;
4998 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8;
5001 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0;
5004 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2;
5007 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4;
5010 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6;
5013 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12;
5016 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14;
5019 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8;
5022 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10;
5025 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0;
5028 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2;
5031 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6;
5034 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4;
5037 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14;
5040 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8;
5043 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10;
5046 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12;
5050 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0;
5054 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2;
5058 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4;
5062 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6;
5066 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8;
5070 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10;
5074 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12;
5077 b14 += b15 + k13 + t2;
5078 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14;
5081 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0;
5084 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2;
5087 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6;
5090 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4;
5093 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10;
5096 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12;
5099 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14;
5102 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8;
5105 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0;
5108 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2;
5111 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4;
5114 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6;
5117 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12;
5120 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14;
5123 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8;
5126 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10;
5129 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0;
5132 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2;
5135 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6;
5138 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4;
5141 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14;
5144 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8;
5147 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10;
5150 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12;
5154 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0;
5158 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2;
5162 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4;
5166 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6;
5170 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8;
5174 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10;
5178 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12;
5181 b14 += b15 + k14 + t0;
5182 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14;
5185 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0;
5188 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2;
5191 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6;
5194 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4;
5197 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10;
5200 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12;
5203 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14;
5206 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8;
5209 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0;
5212 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2;
5215 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4;
5218 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6;
5221 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12;
5224 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14;
5227 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8;
5230 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10;
5233 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0;
5236 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2;
5239 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6;
5242 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4;
5245 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14;
5248 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8;
5251 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10;
5254 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12;
5258 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0;
5262 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2;
5266 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4;
5270 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6;
5274 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8;
5278 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10;
5282 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12;
5285 b14 += b15 + k15 + t1;
5286 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14;
5289 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0;
5292 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2;
5295 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6;
5298 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4;
5301 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10;
5304 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12;
5307 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14;
5310 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8;
5313 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0;
5316 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2;
5319 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4;
5322 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6;
5325 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12;
5328 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14;
5331 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8;
5334 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10;
5337 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0;
5340 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2;
5343 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6;
5346 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4;
5349 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14;
5352 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8;
5355 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10;
5358 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12;
5362 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0;
5366 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2;
5370 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4;
5374 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6;
5378 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8;
5382 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10;
5386 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12;
5389 b14 += b15 + k16 + t2;
5390 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14;
5393 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0;
5396 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2;
5399 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6;
5402 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4;
5405 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10;
5408 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12;
5411 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14;
5414 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8;
5417 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0;
5420 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2;
5423 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4;
5426 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6;
5429 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12;
5432 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14;
5435 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8;
5438 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10;
5441 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0;
5444 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2;
5447 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6;
5450 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4;
5453 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14;
5456 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8;
5459 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10;
5462 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12;
5464 output[0] = b0 + k3;
5465 output[1] = b1 + k4;
5466 output[2] = b2 + k5;
5467 output[3] = b3 + k6;
5468 output[4] = b4 + k7;
5469 output[5] = b5 + k8;
5470 output[6] = b6 + k9;
5471 output[7] = b7 + k10;
5472 output[8] = b8 + k11;
5473 output[9] = b9 + k12;
5474 output[10] = b10 + k13;
5475 output[11] = b11 + k14;
5476 output[12] = b12 + k15;
5477 output[13] = b13 + k16 + t2;
5478 output[14] = b14 + k0 + t0;
5479 output[15] = b15 + k1 + 20;
5482 void threefish_decrypt_1024(struct threefish_key *key_ctx, u64 *input,
5485 u64 b0 = input[0], b1 = input[1],
5486 b2 = input[2], b3 = input[3],
5487 b4 = input[4], b5 = input[5],
5488 b6 = input[6], b7 = input[7],
5489 b8 = input[8], b9 = input[9],
5490 b10 = input[10], b11 = input[11],
5491 b12 = input[12], b13 = input[13],
5492 b14 = input[14], b15 = input[15];
5493 u64 k0 = key_ctx->key[0], k1 = key_ctx->key[1],
5494 k2 = key_ctx->key[2], k3 = key_ctx->key[3],
5495 k4 = key_ctx->key[4], k5 = key_ctx->key[5],
5496 k6 = key_ctx->key[6], k7 = key_ctx->key[7],
5497 k8 = key_ctx->key[8], k9 = key_ctx->key[9],
5498 k10 = key_ctx->key[10], k11 = key_ctx->key[11],
5499 k12 = key_ctx->key[12], k13 = key_ctx->key[13],
5500 k14 = key_ctx->key[14], k15 = key_ctx->key[15],
5501 k16 = key_ctx->key[16];
5502 u64 t0 = key_ctx->tweak[0], t1 = key_ctx->tweak[1],
5503 t2 = key_ctx->tweak[2];
5523 b7 = (tmp >> 20) | (tmp << (64 - 20));
5527 b3 = (tmp >> 37) | (tmp << (64 - 37));
5531 b5 = (tmp >> 31) | (tmp << (64 - 31));
5535 b1 = (tmp >> 23) | (tmp << (64 - 23));
5539 b9 = (tmp >> 52) | (tmp << (64 - 52));
5543 b13 = (tmp >> 35) | (tmp << (64 - 35));
5547 b11 = (tmp >> 48) | (tmp << (64 - 48));
5551 b15 = (tmp >> 9) | (tmp << (64 - 9));
5555 b9 = (tmp >> 25) | (tmp << (64 - 25));
5559 b11 = (tmp >> 44) | (tmp << (64 - 44));
5563 b13 = (tmp >> 42) | (tmp << (64 - 42));
5567 b15 = (tmp >> 19) | (tmp << (64 - 19));
5571 b1 = (tmp >> 46) | (tmp << (64 - 46));
5575 b3 = (tmp >> 47) | (tmp << (64 - 47));
5579 b5 = (tmp >> 44) | (tmp << (64 - 44));
5583 b7 = (tmp >> 31) | (tmp << (64 - 31));
5587 b1 = (tmp >> 41) | (tmp << (64 - 41));
5591 b5 = (tmp >> 42) | (tmp << (64 - 42));
5595 b3 = (tmp >> 53) | (tmp << (64 - 53));
5599 b7 = (tmp >> 4) | (tmp << (64 - 4));
5603 b15 = (tmp >> 51) | (tmp << (64 - 51));
5607 b11 = (tmp >> 56) | (tmp << (64 - 56));
5611 b13 = (tmp >> 34) | (tmp << (64 - 34));
5615 b9 = (tmp >> 16) | (tmp << (64 - 16));
5619 b15 = (tmp >> 30) | (tmp << (64 - 30));
5620 b14 -= b15 + k16 + t2;
5624 b13 = (tmp >> 44) | (tmp << (64 - 44));
5629 b11 = (tmp >> 47) | (tmp << (64 - 47));
5634 b9 = (tmp >> 12) | (tmp << (64 - 12));
5639 b7 = (tmp >> 31) | (tmp << (64 - 31));
5644 b5 = (tmp >> 37) | (tmp << (64 - 37));
5649 b3 = (tmp >> 9) | (tmp << (64 - 9));
5654 b1 = (tmp >> 41) | (tmp << (64 - 41));
5659 b7 = (tmp >> 25) | (tmp << (64 - 25));
5663 b3 = (tmp >> 16) | (tmp << (64 - 16));
5667 b5 = (tmp >> 28) | (tmp << (64 - 28));
5671 b1 = (tmp >> 47) | (tmp << (64 - 47));
5675 b9 = (tmp >> 41) | (tmp << (64 - 41));
5679 b13 = (tmp >> 48) | (tmp << (64 - 48));
5683 b11 = (tmp >> 20) | (tmp << (64 - 20));
5687 b15 = (tmp >> 5) | (tmp << (64 - 5));
5691 b9 = (tmp >> 17) | (tmp << (64 - 17));
5695 b11 = (tmp >> 59) | (tmp << (64 - 59));
5699 b13 = (tmp >> 41) | (tmp << (64 - 41));
5703 b15 = (tmp >> 34) | (tmp << (64 - 34));
5707 b1 = (tmp >> 13) | (tmp << (64 - 13));
5711 b3 = (tmp >> 51) | (tmp << (64 - 51));
5715 b5 = (tmp >> 4) | (tmp << (64 - 4));
5719 b7 = (tmp >> 33) | (tmp << (64 - 33));
5723 b1 = (tmp >> 52) | (tmp << (64 - 52));
5727 b5 = (tmp >> 23) | (tmp << (64 - 23));
5731 b3 = (tmp >> 18) | (tmp << (64 - 18));
5735 b7 = (tmp >> 49) | (tmp << (64 - 49));
5739 b15 = (tmp >> 55) | (tmp << (64 - 55));
5743 b11 = (tmp >> 10) | (tmp << (64 - 10));
5747 b13 = (tmp >> 19) | (tmp << (64 - 19));
5751 b9 = (tmp >> 38) | (tmp << (64 - 38));
5755 b15 = (tmp >> 37) | (tmp << (64 - 37));
5756 b14 -= b15 + k15 + t1;
5760 b13 = (tmp >> 22) | (tmp << (64 - 22));
5765 b11 = (tmp >> 17) | (tmp << (64 - 17));
5770 b9 = (tmp >> 8) | (tmp << (64 - 8));
5775 b7 = (tmp >> 47) | (tmp << (64 - 47));
5780 b5 = (tmp >> 8) | (tmp << (64 - 8));
5785 b3 = (tmp >> 13) | (tmp << (64 - 13));
5790 b1 = (tmp >> 24) | (tmp << (64 - 24));
5795 b7 = (tmp >> 20) | (tmp << (64 - 20));
5799 b3 = (tmp >> 37) | (tmp << (64 - 37));
5803 b5 = (tmp >> 31) | (tmp << (64 - 31));
5807 b1 = (tmp >> 23) | (tmp << (64 - 23));
5811 b9 = (tmp >> 52) | (tmp << (64 - 52));
5815 b13 = (tmp >> 35) | (tmp << (64 - 35));
5819 b11 = (tmp >> 48) | (tmp << (64 - 48));
5823 b15 = (tmp >> 9) | (tmp << (64 - 9));
5827 b9 = (tmp >> 25) | (tmp << (64 - 25));
5831 b11 = (tmp >> 44) | (tmp << (64 - 44));
5835 b13 = (tmp >> 42) | (tmp << (64 - 42));
5839 b15 = (tmp >> 19) | (tmp << (64 - 19));
5843 b1 = (tmp >> 46) | (tmp << (64 - 46));
5847 b3 = (tmp >> 47) | (tmp << (64 - 47));
5851 b5 = (tmp >> 44) | (tmp << (64 - 44));
5855 b7 = (tmp >> 31) | (tmp << (64 - 31));
5859 b1 = (tmp >> 41) | (tmp << (64 - 41));
5863 b5 = (tmp >> 42) | (tmp << (64 - 42));
5867 b3 = (tmp >> 53) | (tmp << (64 - 53));
5871 b7 = (tmp >> 4) | (tmp << (64 - 4));
5875 b15 = (tmp >> 51) | (tmp << (64 - 51));
5879 b11 = (tmp >> 56) | (tmp << (64 - 56));
5883 b13 = (tmp >> 34) | (tmp << (64 - 34));
5887 b9 = (tmp >> 16) | (tmp << (64 - 16));
5891 b15 = (tmp >> 30) | (tmp << (64 - 30));
5892 b14 -= b15 + k14 + t0;
5896 b13 = (tmp >> 44) | (tmp << (64 - 44));
5901 b11 = (tmp >> 47) | (tmp << (64 - 47));
5906 b9 = (tmp >> 12) | (tmp << (64 - 12));
5911 b7 = (tmp >> 31) | (tmp << (64 - 31));
5916 b5 = (tmp >> 37) | (tmp << (64 - 37));
5921 b3 = (tmp >> 9) | (tmp << (64 - 9));
5926 b1 = (tmp >> 41) | (tmp << (64 - 41));
5931 b7 = (tmp >> 25) | (tmp << (64 - 25));
5935 b3 = (tmp >> 16) | (tmp << (64 - 16));
5939 b5 = (tmp >> 28) | (tmp << (64 - 28));
5943 b1 = (tmp >> 47) | (tmp << (64 - 47));
5947 b9 = (tmp >> 41) | (tmp << (64 - 41));
5951 b13 = (tmp >> 48) | (tmp << (64 - 48));
5955 b11 = (tmp >> 20) | (tmp << (64 - 20));
5959 b15 = (tmp >> 5) | (tmp << (64 - 5));
5963 b9 = (tmp >> 17) | (tmp << (64 - 17));
5967 b11 = (tmp >> 59) | (tmp << (64 - 59));
5971 b13 = (tmp >> 41) | (tmp << (64 - 41));
5975 b15 = (tmp >> 34) | (tmp << (64 - 34));
5979 b1 = (tmp >> 13) | (tmp << (64 - 13));
5983 b3 = (tmp >> 51) | (tmp << (64 - 51));
5987 b5 = (tmp >> 4) | (tmp << (64 - 4));
5991 b7 = (tmp >> 33) | (tmp << (64 - 33));
5995 b1 = (tmp >> 52) | (tmp << (64 - 52));
5999 b5 = (tmp >> 23) | (tmp << (64 - 23));
6003 b3 = (tmp >> 18) | (tmp << (64 - 18));
6007 b7 = (tmp >> 49) | (tmp << (64 - 49));
6011 b15 = (tmp >> 55) | (tmp << (64 - 55));
6015 b11 = (tmp >> 10) | (tmp << (64 - 10));
6019 b13 = (tmp >> 19) | (tmp << (64 - 19));
6023 b9 = (tmp >> 38) | (tmp << (64 - 38));
6027 b15 = (tmp >> 37) | (tmp << (64 - 37));
6028 b14 -= b15 + k13 + t2;
6032 b13 = (tmp >> 22) | (tmp << (64 - 22));
6037 b11 = (tmp >> 17) | (tmp << (64 - 17));
6042 b9 = (tmp >> 8) | (tmp << (64 - 8));
6047 b7 = (tmp >> 47) | (tmp << (64 - 47));
6052 b5 = (tmp >> 8) | (tmp << (64 - 8));
6057 b3 = (tmp >> 13) | (tmp << (64 - 13));
6062 b1 = (tmp >> 24) | (tmp << (64 - 24));
6067 b7 = (tmp >> 20) | (tmp << (64 - 20));
6071 b3 = (tmp >> 37) | (tmp << (64 - 37));
6075 b5 = (tmp >> 31) | (tmp << (64 - 31));
6079 b1 = (tmp >> 23) | (tmp << (64 - 23));
6083 b9 = (tmp >> 52) | (tmp << (64 - 52));
6087 b13 = (tmp >> 35) | (tmp << (64 - 35));
6091 b11 = (tmp >> 48) | (tmp << (64 - 48));
6095 b15 = (tmp >> 9) | (tmp << (64 - 9));
6099 b9 = (tmp >> 25) | (tmp << (64 - 25));
6103 b11 = (tmp >> 44) | (tmp << (64 - 44));
6107 b13 = (tmp >> 42) | (tmp << (64 - 42));
6111 b15 = (tmp >> 19) | (tmp << (64 - 19));
6115 b1 = (tmp >> 46) | (tmp << (64 - 46));
6119 b3 = (tmp >> 47) | (tmp << (64 - 47));
6123 b5 = (tmp >> 44) | (tmp << (64 - 44));
6127 b7 = (tmp >> 31) | (tmp << (64 - 31));
6131 b1 = (tmp >> 41) | (tmp << (64 - 41));
6135 b5 = (tmp >> 42) | (tmp << (64 - 42));
6139 b3 = (tmp >> 53) | (tmp << (64 - 53));
6143 b7 = (tmp >> 4) | (tmp << (64 - 4));
6147 b15 = (tmp >> 51) | (tmp << (64 - 51));
6151 b11 = (tmp >> 56) | (tmp << (64 - 56));
6155 b13 = (tmp >> 34) | (tmp << (64 - 34));
6159 b9 = (tmp >> 16) | (tmp << (64 - 16));
6163 b15 = (tmp >> 30) | (tmp << (64 - 30));
6164 b14 -= b15 + k12 + t1;
6168 b13 = (tmp >> 44) | (tmp << (64 - 44));
6173 b11 = (tmp >> 47) | (tmp << (64 - 47));
6178 b9 = (tmp >> 12) | (tmp << (64 - 12));
6183 b7 = (tmp >> 31) | (tmp << (64 - 31));
6188 b5 = (tmp >> 37) | (tmp << (64 - 37));
6193 b3 = (tmp >> 9) | (tmp << (64 - 9));
6198 b1 = (tmp >> 41) | (tmp << (64 - 41));
6203 b7 = (tmp >> 25) | (tmp << (64 - 25));
6207 b3 = (tmp >> 16) | (tmp << (64 - 16));
6211 b5 = (tmp >> 28) | (tmp << (64 - 28));
6215 b1 = (tmp >> 47) | (tmp << (64 - 47));
6219 b9 = (tmp >> 41) | (tmp << (64 - 41));
6223 b13 = (tmp >> 48) | (tmp << (64 - 48));
6227 b11 = (tmp >> 20) | (tmp << (64 - 20));
6231 b15 = (tmp >> 5) | (tmp << (64 - 5));
6235 b9 = (tmp >> 17) | (tmp << (64 - 17));
6239 b11 = (tmp >> 59) | (tmp << (64 - 59));
6243 b13 = (tmp >> 41) | (tmp << (64 - 41));
6247 b15 = (tmp >> 34) | (tmp << (64 - 34));
6251 b1 = (tmp >> 13) | (tmp << (64 - 13));
6255 b3 = (tmp >> 51) | (tmp << (64 - 51));
6259 b5 = (tmp >> 4) | (tmp << (64 - 4));
6263 b7 = (tmp >> 33) | (tmp << (64 - 33));
6267 b1 = (tmp >> 52) | (tmp << (64 - 52));
6271 b5 = (tmp >> 23) | (tmp << (64 - 23));
6275 b3 = (tmp >> 18) | (tmp << (64 - 18));
6279 b7 = (tmp >> 49) | (tmp << (64 - 49));
6283 b15 = (tmp >> 55) | (tmp << (64 - 55));
6287 b11 = (tmp >> 10) | (tmp << (64 - 10));
6291 b13 = (tmp >> 19) | (tmp << (64 - 19));
6295 b9 = (tmp >> 38) | (tmp << (64 - 38));
6299 b15 = (tmp >> 37) | (tmp << (64 - 37));
6300 b14 -= b15 + k11 + t0;
6304 b13 = (tmp >> 22) | (tmp << (64 - 22));
6309 b11 = (tmp >> 17) | (tmp << (64 - 17));
6314 b9 = (tmp >> 8) | (tmp << (64 - 8));
6319 b7 = (tmp >> 47) | (tmp << (64 - 47));
6324 b5 = (tmp >> 8) | (tmp << (64 - 8));
6329 b3 = (tmp >> 13) | (tmp << (64 - 13));
6334 b1 = (tmp >> 24) | (tmp << (64 - 24));
6339 b7 = (tmp >> 20) | (tmp << (64 - 20));
6343 b3 = (tmp >> 37) | (tmp << (64 - 37));
6347 b5 = (tmp >> 31) | (tmp << (64 - 31));
6351 b1 = (tmp >> 23) | (tmp << (64 - 23));
6355 b9 = (tmp >> 52) | (tmp << (64 - 52));
6359 b13 = (tmp >> 35) | (tmp << (64 - 35));
6363 b11 = (tmp >> 48) | (tmp << (64 - 48));
6367 b15 = (tmp >> 9) | (tmp << (64 - 9));
6371 b9 = (tmp >> 25) | (tmp << (64 - 25));
6375 b11 = (tmp >> 44) | (tmp << (64 - 44));
6379 b13 = (tmp >> 42) | (tmp << (64 - 42));
6383 b15 = (tmp >> 19) | (tmp << (64 - 19));
6387 b1 = (tmp >> 46) | (tmp << (64 - 46));
6391 b3 = (tmp >> 47) | (tmp << (64 - 47));
6395 b5 = (tmp >> 44) | (tmp << (64 - 44));
6399 b7 = (tmp >> 31) | (tmp << (64 - 31));
6403 b1 = (tmp >> 41) | (tmp << (64 - 41));
6407 b5 = (tmp >> 42) | (tmp << (64 - 42));
6411 b3 = (tmp >> 53) | (tmp << (64 - 53));
6415 b7 = (tmp >> 4) | (tmp << (64 - 4));
6419 b15 = (tmp >> 51) | (tmp << (64 - 51));
6423 b11 = (tmp >> 56) | (tmp << (64 - 56));
6427 b13 = (tmp >> 34) | (tmp << (64 - 34));
6431 b9 = (tmp >> 16) | (tmp << (64 - 16));
6435 b15 = (tmp >> 30) | (tmp << (64 - 30));
6436 b14 -= b15 + k10 + t2;
6440 b13 = (tmp >> 44) | (tmp << (64 - 44));
6445 b11 = (tmp >> 47) | (tmp << (64 - 47));
6450 b9 = (tmp >> 12) | (tmp << (64 - 12));
6455 b7 = (tmp >> 31) | (tmp << (64 - 31));
6460 b5 = (tmp >> 37) | (tmp << (64 - 37));
6465 b3 = (tmp >> 9) | (tmp << (64 - 9));
6470 b1 = (tmp >> 41) | (tmp << (64 - 41));
6475 b7 = (tmp >> 25) | (tmp << (64 - 25));
6479 b3 = (tmp >> 16) | (tmp << (64 - 16));
6483 b5 = (tmp >> 28) | (tmp << (64 - 28));
6487 b1 = (tmp >> 47) | (tmp << (64 - 47));
6491 b9 = (tmp >> 41) | (tmp << (64 - 41));
6495 b13 = (tmp >> 48) | (tmp << (64 - 48));
6499 b11 = (tmp >> 20) | (tmp << (64 - 20));
6503 b15 = (tmp >> 5) | (tmp << (64 - 5));
6507 b9 = (tmp >> 17) | (tmp << (64 - 17));
6511 b11 = (tmp >> 59) | (tmp << (64 - 59));
6515 b13 = (tmp >> 41) | (tmp << (64 - 41));
6519 b15 = (tmp >> 34) | (tmp << (64 - 34));
6523 b1 = (tmp >> 13) | (tmp << (64 - 13));
6527 b3 = (tmp >> 51) | (tmp << (64 - 51));
6531 b5 = (tmp >> 4) | (tmp << (64 - 4));
6535 b7 = (tmp >> 33) | (tmp << (64 - 33));
6539 b1 = (tmp >> 52) | (tmp << (64 - 52));
6543 b5 = (tmp >> 23) | (tmp << (64 - 23));
6547 b3 = (tmp >> 18) | (tmp << (64 - 18));
6551 b7 = (tmp >> 49) | (tmp << (64 - 49));
6555 b15 = (tmp >> 55) | (tmp << (64 - 55));
6559 b11 = (tmp >> 10) | (tmp << (64 - 10));
6563 b13 = (tmp >> 19) | (tmp << (64 - 19));
6567 b9 = (tmp >> 38) | (tmp << (64 - 38));
6571 b15 = (tmp >> 37) | (tmp << (64 - 37));
6572 b14 -= b15 + k9 + t1;
6576 b13 = (tmp >> 22) | (tmp << (64 - 22));
6581 b11 = (tmp >> 17) | (tmp << (64 - 17));
6586 b9 = (tmp >> 8) | (tmp << (64 - 8));
6591 b7 = (tmp >> 47) | (tmp << (64 - 47));
6596 b5 = (tmp >> 8) | (tmp << (64 - 8));
6601 b3 = (tmp >> 13) | (tmp << (64 - 13));
6606 b1 = (tmp >> 24) | (tmp << (64 - 24));
6611 b7 = (tmp >> 20) | (tmp << (64 - 20));
6615 b3 = (tmp >> 37) | (tmp << (64 - 37));
6619 b5 = (tmp >> 31) | (tmp << (64 - 31));
6623 b1 = (tmp >> 23) | (tmp << (64 - 23));
6627 b9 = (tmp >> 52) | (tmp << (64 - 52));
6631 b13 = (tmp >> 35) | (tmp << (64 - 35));
6635 b11 = (tmp >> 48) | (tmp << (64 - 48));
6639 b15 = (tmp >> 9) | (tmp << (64 - 9));
6643 b9 = (tmp >> 25) | (tmp << (64 - 25));
6647 b11 = (tmp >> 44) | (tmp << (64 - 44));
6651 b13 = (tmp >> 42) | (tmp << (64 - 42));
6655 b15 = (tmp >> 19) | (tmp << (64 - 19));
6659 b1 = (tmp >> 46) | (tmp << (64 - 46));
6663 b3 = (tmp >> 47) | (tmp << (64 - 47));
6667 b5 = (tmp >> 44) | (tmp << (64 - 44));
6671 b7 = (tmp >> 31) | (tmp << (64 - 31));
6675 b1 = (tmp >> 41) | (tmp << (64 - 41));
6679 b5 = (tmp >> 42) | (tmp << (64 - 42));
6683 b3 = (tmp >> 53) | (tmp << (64 - 53));
6687 b7 = (tmp >> 4) | (tmp << (64 - 4));
6691 b15 = (tmp >> 51) | (tmp << (64 - 51));
6695 b11 = (tmp >> 56) | (tmp << (64 - 56));
6699 b13 = (tmp >> 34) | (tmp << (64 - 34));
6703 b9 = (tmp >> 16) | (tmp << (64 - 16));
6707 b15 = (tmp >> 30) | (tmp << (64 - 30));
6708 b14 -= b15 + k8 + t0;
6712 b13 = (tmp >> 44) | (tmp << (64 - 44));
6717 b11 = (tmp >> 47) | (tmp << (64 - 47));
6722 b9 = (tmp >> 12) | (tmp << (64 - 12));
6727 b7 = (tmp >> 31) | (tmp << (64 - 31));
6732 b5 = (tmp >> 37) | (tmp << (64 - 37));
6737 b3 = (tmp >> 9) | (tmp << (64 - 9));
6742 b1 = (tmp >> 41) | (tmp << (64 - 41));
6747 b7 = (tmp >> 25) | (tmp << (64 - 25));
6751 b3 = (tmp >> 16) | (tmp << (64 - 16));
6755 b5 = (tmp >> 28) | (tmp << (64 - 28));
6759 b1 = (tmp >> 47) | (tmp << (64 - 47));
6763 b9 = (tmp >> 41) | (tmp << (64 - 41));
6767 b13 = (tmp >> 48) | (tmp << (64 - 48));
6771 b11 = (tmp >> 20) | (tmp << (64 - 20));
6775 b15 = (tmp >> 5) | (tmp << (64 - 5));
6779 b9 = (tmp >> 17) | (tmp << (64 - 17));
6783 b11 = (tmp >> 59) | (tmp << (64 - 59));
6787 b13 = (tmp >> 41) | (tmp << (64 - 41));
6791 b15 = (tmp >> 34) | (tmp << (64 - 34));
6795 b1 = (tmp >> 13) | (tmp << (64 - 13));
6799 b3 = (tmp >> 51) | (tmp << (64 - 51));
6803 b5 = (tmp >> 4) | (tmp << (64 - 4));
6807 b7 = (tmp >> 33) | (tmp << (64 - 33));
6811 b1 = (tmp >> 52) | (tmp << (64 - 52));
6815 b5 = (tmp >> 23) | (tmp << (64 - 23));
6819 b3 = (tmp >> 18) | (tmp << (64 - 18));
6823 b7 = (tmp >> 49) | (tmp << (64 - 49));
6827 b15 = (tmp >> 55) | (tmp << (64 - 55));
6831 b11 = (tmp >> 10) | (tmp << (64 - 10));
6835 b13 = (tmp >> 19) | (tmp << (64 - 19));
6839 b9 = (tmp >> 38) | (tmp << (64 - 38));
6843 b15 = (tmp >> 37) | (tmp << (64 - 37));
6844 b14 -= b15 + k7 + t2;
6848 b13 = (tmp >> 22) | (tmp << (64 - 22));
6853 b11 = (tmp >> 17) | (tmp << (64 - 17));
6858 b9 = (tmp >> 8) | (tmp << (64 - 8));
6863 b7 = (tmp >> 47) | (tmp << (64 - 47));
6868 b5 = (tmp >> 8) | (tmp << (64 - 8));
6873 b3 = (tmp >> 13) | (tmp << (64 - 13));
6878 b1 = (tmp >> 24) | (tmp << (64 - 24));
6883 b7 = (tmp >> 20) | (tmp << (64 - 20));
6887 b3 = (tmp >> 37) | (tmp << (64 - 37));
6891 b5 = (tmp >> 31) | (tmp << (64 - 31));
6895 b1 = (tmp >> 23) | (tmp << (64 - 23));
6899 b9 = (tmp >> 52) | (tmp << (64 - 52));
6903 b13 = (tmp >> 35) | (tmp << (64 - 35));
6907 b11 = (tmp >> 48) | (tmp << (64 - 48));
6911 b15 = (tmp >> 9) | (tmp << (64 - 9));
6915 b9 = (tmp >> 25) | (tmp << (64 - 25));
6919 b11 = (tmp >> 44) | (tmp << (64 - 44));
6923 b13 = (tmp >> 42) | (tmp << (64 - 42));
6927 b15 = (tmp >> 19) | (tmp << (64 - 19));
6931 b1 = (tmp >> 46) | (tmp << (64 - 46));
6935 b3 = (tmp >> 47) | (tmp << (64 - 47));
6939 b5 = (tmp >> 44) | (tmp << (64 - 44));
6943 b7 = (tmp >> 31) | (tmp << (64 - 31));
6947 b1 = (tmp >> 41) | (tmp << (64 - 41));
6951 b5 = (tmp >> 42) | (tmp << (64 - 42));
6955 b3 = (tmp >> 53) | (tmp << (64 - 53));
6959 b7 = (tmp >> 4) | (tmp << (64 - 4));
6963 b15 = (tmp >> 51) | (tmp << (64 - 51));
6967 b11 = (tmp >> 56) | (tmp << (64 - 56));
6971 b13 = (tmp >> 34) | (tmp << (64 - 34));
6975 b9 = (tmp >> 16) | (tmp << (64 - 16));
6979 b15 = (tmp >> 30) | (tmp << (64 - 30));
6980 b14 -= b15 + k6 + t1;
6984 b13 = (tmp >> 44) | (tmp << (64 - 44));
6989 b11 = (tmp >> 47) | (tmp << (64 - 47));
6994 b9 = (tmp >> 12) | (tmp << (64 - 12));
6999 b7 = (tmp >> 31) | (tmp << (64 - 31));
7004 b5 = (tmp >> 37) | (tmp << (64 - 37));
7009 b3 = (tmp >> 9) | (tmp << (64 - 9));
7014 b1 = (tmp >> 41) | (tmp << (64 - 41));
7019 b7 = (tmp >> 25) | (tmp << (64 - 25));
7023 b3 = (tmp >> 16) | (tmp << (64 - 16));
7027 b5 = (tmp >> 28) | (tmp << (64 - 28));
7031 b1 = (tmp >> 47) | (tmp << (64 - 47));
7035 b9 = (tmp >> 41) | (tmp << (64 - 41));
7039 b13 = (tmp >> 48) | (tmp << (64 - 48));
7043 b11 = (tmp >> 20) | (tmp << (64 - 20));
7047 b15 = (tmp >> 5) | (tmp << (64 - 5));
7051 b9 = (tmp >> 17) | (tmp << (64 - 17));
7055 b11 = (tmp >> 59) | (tmp << (64 - 59));
7059 b13 = (tmp >> 41) | (tmp << (64 - 41));
7063 b15 = (tmp >> 34) | (tmp << (64 - 34));
7067 b1 = (tmp >> 13) | (tmp << (64 - 13));
7071 b3 = (tmp >> 51) | (tmp << (64 - 51));
7075 b5 = (tmp >> 4) | (tmp << (64 - 4));
7079 b7 = (tmp >> 33) | (tmp << (64 - 33));
7083 b1 = (tmp >> 52) | (tmp << (64 - 52));
7087 b5 = (tmp >> 23) | (tmp << (64 - 23));
7091 b3 = (tmp >> 18) | (tmp << (64 - 18));
7095 b7 = (tmp >> 49) | (tmp << (64 - 49));
7099 b15 = (tmp >> 55) | (tmp << (64 - 55));
7103 b11 = (tmp >> 10) | (tmp << (64 - 10));
7107 b13 = (tmp >> 19) | (tmp << (64 - 19));
7111 b9 = (tmp >> 38) | (tmp << (64 - 38));
7115 b15 = (tmp >> 37) | (tmp << (64 - 37));
7116 b14 -= b15 + k5 + t0;
7120 b13 = (tmp >> 22) | (tmp << (64 - 22));
7125 b11 = (tmp >> 17) | (tmp << (64 - 17));
7130 b9 = (tmp >> 8) | (tmp << (64 - 8));
7135 b7 = (tmp >> 47) | (tmp << (64 - 47));
7140 b5 = (tmp >> 8) | (tmp << (64 - 8));
7145 b3 = (tmp >> 13) | (tmp << (64 - 13));
7150 b1 = (tmp >> 24) | (tmp << (64 - 24));
7155 b7 = (tmp >> 20) | (tmp << (64 - 20));
7159 b3 = (tmp >> 37) | (tmp << (64 - 37));
7163 b5 = (tmp >> 31) | (tmp << (64 - 31));
7167 b1 = (tmp >> 23) | (tmp << (64 - 23));
7171 b9 = (tmp >> 52) | (tmp << (64 - 52));
7175 b13 = (tmp >> 35) | (tmp << (64 - 35));
7179 b11 = (tmp >> 48) | (tmp << (64 - 48));
7183 b15 = (tmp >> 9) | (tmp << (64 - 9));
7187 b9 = (tmp >> 25) | (tmp << (64 - 25));
7191 b11 = (tmp >> 44) | (tmp << (64 - 44));
7195 b13 = (tmp >> 42) | (tmp << (64 - 42));
7199 b15 = (tmp >> 19) | (tmp << (64 - 19));
7203 b1 = (tmp >> 46) | (tmp << (64 - 46));
7207 b3 = (tmp >> 47) | (tmp << (64 - 47));
7211 b5 = (tmp >> 44) | (tmp << (64 - 44));
7215 b7 = (tmp >> 31) | (tmp << (64 - 31));
7219 b1 = (tmp >> 41) | (tmp << (64 - 41));
7223 b5 = (tmp >> 42) | (tmp << (64 - 42));
7227 b3 = (tmp >> 53) | (tmp << (64 - 53));
7231 b7 = (tmp >> 4) | (tmp << (64 - 4));
7235 b15 = (tmp >> 51) | (tmp << (64 - 51));
7239 b11 = (tmp >> 56) | (tmp << (64 - 56));
7243 b13 = (tmp >> 34) | (tmp << (64 - 34));
7247 b9 = (tmp >> 16) | (tmp << (64 - 16));
7251 b15 = (tmp >> 30) | (tmp << (64 - 30));
7252 b14 -= b15 + k4 + t2;
7256 b13 = (tmp >> 44) | (tmp << (64 - 44));
7261 b11 = (tmp >> 47) | (tmp << (64 - 47));
7266 b9 = (tmp >> 12) | (tmp << (64 - 12));
7271 b7 = (tmp >> 31) | (tmp << (64 - 31));
7276 b5 = (tmp >> 37) | (tmp << (64 - 37));
7281 b3 = (tmp >> 9) | (tmp << (64 - 9));
7286 b1 = (tmp >> 41) | (tmp << (64 - 41));
7291 b7 = (tmp >> 25) | (tmp << (64 - 25));
7295 b3 = (tmp >> 16) | (tmp << (64 - 16));
7299 b5 = (tmp >> 28) | (tmp << (64 - 28));
7303 b1 = (tmp >> 47) | (tmp << (64 - 47));
7307 b9 = (tmp >> 41) | (tmp << (64 - 41));
7311 b13 = (tmp >> 48) | (tmp << (64 - 48));
7315 b11 = (tmp >> 20) | (tmp << (64 - 20));
7319 b15 = (tmp >> 5) | (tmp << (64 - 5));
7323 b9 = (tmp >> 17) | (tmp << (64 - 17));
7327 b11 = (tmp >> 59) | (tmp << (64 - 59));
7331 b13 = (tmp >> 41) | (tmp << (64 - 41));
7335 b15 = (tmp >> 34) | (tmp << (64 - 34));
7339 b1 = (tmp >> 13) | (tmp << (64 - 13));
7343 b3 = (tmp >> 51) | (tmp << (64 - 51));
7347 b5 = (tmp >> 4) | (tmp << (64 - 4));
7351 b7 = (tmp >> 33) | (tmp << (64 - 33));
7355 b1 = (tmp >> 52) | (tmp << (64 - 52));
7359 b5 = (tmp >> 23) | (tmp << (64 - 23));
7363 b3 = (tmp >> 18) | (tmp << (64 - 18));
7367 b7 = (tmp >> 49) | (tmp << (64 - 49));
7371 b15 = (tmp >> 55) | (tmp << (64 - 55));
7375 b11 = (tmp >> 10) | (tmp << (64 - 10));
7379 b13 = (tmp >> 19) | (tmp << (64 - 19));
7383 b9 = (tmp >> 38) | (tmp << (64 - 38));
7387 b15 = (tmp >> 37) | (tmp << (64 - 37));
7388 b14 -= b15 + k3 + t1;
7392 b13 = (tmp >> 22) | (tmp << (64 - 22));
7397 b11 = (tmp >> 17) | (tmp << (64 - 17));
7402 b9 = (tmp >> 8) | (tmp << (64 - 8));
7407 b7 = (tmp >> 47) | (tmp << (64 - 47));
7412 b5 = (tmp >> 8) | (tmp << (64 - 8));
7417 b3 = (tmp >> 13) | (tmp << (64 - 13));
7422 b1 = (tmp >> 24) | (tmp << (64 - 24));
7427 b7 = (tmp >> 20) | (tmp << (64 - 20));
7431 b3 = (tmp >> 37) | (tmp << (64 - 37));
7435 b5 = (tmp >> 31) | (tmp << (64 - 31));
7439 b1 = (tmp >> 23) | (tmp << (64 - 23));
7443 b9 = (tmp >> 52) | (tmp << (64 - 52));
7447 b13 = (tmp >> 35) | (tmp << (64 - 35));
7451 b11 = (tmp >> 48) | (tmp << (64 - 48));
7455 b15 = (tmp >> 9) | (tmp << (64 - 9));
7459 b9 = (tmp >> 25) | (tmp << (64 - 25));
7463 b11 = (tmp >> 44) | (tmp << (64 - 44));
7467 b13 = (tmp >> 42) | (tmp << (64 - 42));
7471 b15 = (tmp >> 19) | (tmp << (64 - 19));
7475 b1 = (tmp >> 46) | (tmp << (64 - 46));
7479 b3 = (tmp >> 47) | (tmp << (64 - 47));
7483 b5 = (tmp >> 44) | (tmp << (64 - 44));
7487 b7 = (tmp >> 31) | (tmp << (64 - 31));
7491 b1 = (tmp >> 41) | (tmp << (64 - 41));
7495 b5 = (tmp >> 42) | (tmp << (64 - 42));
7499 b3 = (tmp >> 53) | (tmp << (64 - 53));
7503 b7 = (tmp >> 4) | (tmp << (64 - 4));
7507 b15 = (tmp >> 51) | (tmp << (64 - 51));
7511 b11 = (tmp >> 56) | (tmp << (64 - 56));
7515 b13 = (tmp >> 34) | (tmp << (64 - 34));
7519 b9 = (tmp >> 16) | (tmp << (64 - 16));
7523 b15 = (tmp >> 30) | (tmp << (64 - 30));
7524 b14 -= b15 + k2 + t0;
7528 b13 = (tmp >> 44) | (tmp << (64 - 44));
7533 b11 = (tmp >> 47) | (tmp << (64 - 47));
7538 b9 = (tmp >> 12) | (tmp << (64 - 12));
7543 b7 = (tmp >> 31) | (tmp << (64 - 31));
7548 b5 = (tmp >> 37) | (tmp << (64 - 37));
7553 b3 = (tmp >> 9) | (tmp << (64 - 9));
7558 b1 = (tmp >> 41) | (tmp << (64 - 41));
7563 b7 = (tmp >> 25) | (tmp << (64 - 25));
7567 b3 = (tmp >> 16) | (tmp << (64 - 16));
7571 b5 = (tmp >> 28) | (tmp << (64 - 28));
7575 b1 = (tmp >> 47) | (tmp << (64 - 47));
7579 b9 = (tmp >> 41) | (tmp << (64 - 41));
7583 b13 = (tmp >> 48) | (tmp << (64 - 48));
7587 b11 = (tmp >> 20) | (tmp << (64 - 20));
7591 b15 = (tmp >> 5) | (tmp << (64 - 5));
7595 b9 = (tmp >> 17) | (tmp << (64 - 17));
7599 b11 = (tmp >> 59) | (tmp << (64 - 59));
7603 b13 = (tmp >> 41) | (tmp << (64 - 41));
7607 b15 = (tmp >> 34) | (tmp << (64 - 34));
7611 b1 = (tmp >> 13) | (tmp << (64 - 13));
7615 b3 = (tmp >> 51) | (tmp << (64 - 51));
7619 b5 = (tmp >> 4) | (tmp << (64 - 4));
7623 b7 = (tmp >> 33) | (tmp << (64 - 33));
7627 b1 = (tmp >> 52) | (tmp << (64 - 52));
7631 b5 = (tmp >> 23) | (tmp << (64 - 23));
7635 b3 = (tmp >> 18) | (tmp << (64 - 18));
7639 b7 = (tmp >> 49) | (tmp << (64 - 49));
7643 b15 = (tmp >> 55) | (tmp << (64 - 55));
7647 b11 = (tmp >> 10) | (tmp << (64 - 10));
7651 b13 = (tmp >> 19) | (tmp << (64 - 19));
7655 b9 = (tmp >> 38) | (tmp << (64 - 38));
7659 b15 = (tmp >> 37) | (tmp << (64 - 37));
7660 b14 -= b15 + k1 + t2;
7664 b13 = (tmp >> 22) | (tmp << (64 - 22));
7669 b11 = (tmp >> 17) | (tmp << (64 - 17));
7674 b9 = (tmp >> 8) | (tmp << (64 - 8));
7679 b7 = (tmp >> 47) | (tmp << (64 - 47));
7684 b5 = (tmp >> 8) | (tmp << (64 - 8));
7689 b3 = (tmp >> 13) | (tmp << (64 - 13));
7694 b1 = (tmp >> 24) | (tmp << (64 - 24));
7699 b7 = (tmp >> 20) | (tmp << (64 - 20));
7703 b3 = (tmp >> 37) | (tmp << (64 - 37));
7707 b5 = (tmp >> 31) | (tmp << (64 - 31));
7711 b1 = (tmp >> 23) | (tmp << (64 - 23));
7715 b9 = (tmp >> 52) | (tmp << (64 - 52));
7719 b13 = (tmp >> 35) | (tmp << (64 - 35));
7723 b11 = (tmp >> 48) | (tmp << (64 - 48));
7727 b15 = (tmp >> 9) | (tmp << (64 - 9));
7731 b9 = (tmp >> 25) | (tmp << (64 - 25));
7735 b11 = (tmp >> 44) | (tmp << (64 - 44));
7739 b13 = (tmp >> 42) | (tmp << (64 - 42));
7743 b15 = (tmp >> 19) | (tmp << (64 - 19));
7747 b1 = (tmp >> 46) | (tmp << (64 - 46));
7751 b3 = (tmp >> 47) | (tmp << (64 - 47));
7755 b5 = (tmp >> 44) | (tmp << (64 - 44));
7759 b7 = (tmp >> 31) | (tmp << (64 - 31));
7763 b1 = (tmp >> 41) | (tmp << (64 - 41));
7767 b5 = (tmp >> 42) | (tmp << (64 - 42));
7771 b3 = (tmp >> 53) | (tmp << (64 - 53));
7775 b7 = (tmp >> 4) | (tmp << (64 - 4));
7779 b15 = (tmp >> 51) | (tmp << (64 - 51));
7783 b11 = (tmp >> 56) | (tmp << (64 - 56));
7787 b13 = (tmp >> 34) | (tmp << (64 - 34));
7791 b9 = (tmp >> 16) | (tmp << (64 - 16));
7795 b15 = (tmp >> 30) | (tmp << (64 - 30));
7796 b14 -= b15 + k0 + t1;
7800 b13 = (tmp >> 44) | (tmp << (64 - 44));
7805 b11 = (tmp >> 47) | (tmp << (64 - 47));
7810 b9 = (tmp >> 12) | (tmp << (64 - 12));
7815 b7 = (tmp >> 31) | (tmp << (64 - 31));
7820 b5 = (tmp >> 37) | (tmp << (64 - 37));
7825 b3 = (tmp >> 9) | (tmp << (64 - 9));
7830 b1 = (tmp >> 41) | (tmp << (64 - 41));
7835 b7 = (tmp >> 25) | (tmp << (64 - 25));
7839 b3 = (tmp >> 16) | (tmp << (64 - 16));
7843 b5 = (tmp >> 28) | (tmp << (64 - 28));
7847 b1 = (tmp >> 47) | (tmp << (64 - 47));
7851 b9 = (tmp >> 41) | (tmp << (64 - 41));
7855 b13 = (tmp >> 48) | (tmp << (64 - 48));
7859 b11 = (tmp >> 20) | (tmp << (64 - 20));
7863 b15 = (tmp >> 5) | (tmp << (64 - 5));
7867 b9 = (tmp >> 17) | (tmp << (64 - 17));
7871 b11 = (tmp >> 59) | (tmp << (64 - 59));
7875 b13 = (tmp >> 41) | (tmp << (64 - 41));
7879 b15 = (tmp >> 34) | (tmp << (64 - 34));
7883 b1 = (tmp >> 13) | (tmp << (64 - 13));
7887 b3 = (tmp >> 51) | (tmp << (64 - 51));
7891 b5 = (tmp >> 4) | (tmp << (64 - 4));
7895 b7 = (tmp >> 33) | (tmp << (64 - 33));
7899 b1 = (tmp >> 52) | (tmp << (64 - 52));
7903 b5 = (tmp >> 23) | (tmp << (64 - 23));
7907 b3 = (tmp >> 18) | (tmp << (64 - 18));
7911 b7 = (tmp >> 49) | (tmp << (64 - 49));
7915 b15 = (tmp >> 55) | (tmp << (64 - 55));
7919 b11 = (tmp >> 10) | (tmp << (64 - 10));
7923 b13 = (tmp >> 19) | (tmp << (64 - 19));
7927 b9 = (tmp >> 38) | (tmp << (64 - 38));
7931 b15 = (tmp >> 37) | (tmp << (64 - 37));
7932 b14 -= b15 + k16 + t0;
7936 b13 = (tmp >> 22) | (tmp << (64 - 22));
7941 b11 = (tmp >> 17) | (tmp << (64 - 17));
7946 b9 = (tmp >> 8) | (tmp << (64 - 8));
7951 b7 = (tmp >> 47) | (tmp << (64 - 47));
7956 b5 = (tmp >> 8) | (tmp << (64 - 8));
7961 b3 = (tmp >> 13) | (tmp << (64 - 13));
7966 b1 = (tmp >> 24) | (tmp << (64 - 24));
7971 b7 = (tmp >> 20) | (tmp << (64 - 20));
7975 b3 = (tmp >> 37) | (tmp << (64 - 37));
7979 b5 = (tmp >> 31) | (tmp << (64 - 31));
7983 b1 = (tmp >> 23) | (tmp << (64 - 23));
7987 b9 = (tmp >> 52) | (tmp << (64 - 52));
7991 b13 = (tmp >> 35) | (tmp << (64 - 35));
7995 b11 = (tmp >> 48) | (tmp << (64 - 48));
7999 b15 = (tmp >> 9) | (tmp << (64 - 9));
8003 b9 = (tmp >> 25) | (tmp << (64 - 25));
8007 b11 = (tmp >> 44) | (tmp << (64 - 44));
8011 b13 = (tmp >> 42) | (tmp << (64 - 42));
8015 b15 = (tmp >> 19) | (tmp << (64 - 19));
8019 b1 = (tmp >> 46) | (tmp << (64 - 46));
8023 b3 = (tmp >> 47) | (tmp << (64 - 47));
8027 b5 = (tmp >> 44) | (tmp << (64 - 44));
8031 b7 = (tmp >> 31) | (tmp << (64 - 31));
8035 b1 = (tmp >> 41) | (tmp << (64 - 41));
8039 b5 = (tmp >> 42) | (tmp << (64 - 42));
8043 b3 = (tmp >> 53) | (tmp << (64 - 53));
8047 b7 = (tmp >> 4) | (tmp << (64 - 4));
8051 b15 = (tmp >> 51) | (tmp << (64 - 51));
8055 b11 = (tmp >> 56) | (tmp << (64 - 56));
8059 b13 = (tmp >> 34) | (tmp << (64 - 34));
8063 b9 = (tmp >> 16) | (tmp << (64 - 16));
8067 b15 = (tmp >> 30) | (tmp << (64 - 30));
8068 b14 -= b15 + k15 + t2;
8072 b13 = (tmp >> 44) | (tmp << (64 - 44));
8077 b11 = (tmp >> 47) | (tmp << (64 - 47));
8082 b9 = (tmp >> 12) | (tmp << (64 - 12));
8087 b7 = (tmp >> 31) | (tmp << (64 - 31));
8092 b5 = (tmp >> 37) | (tmp << (64 - 37));
8097 b3 = (tmp >> 9) | (tmp << (64 - 9));
8102 b1 = (tmp >> 41) | (tmp << (64 - 41));
8107 b7 = (tmp >> 25) | (tmp << (64 - 25));
8111 b3 = (tmp >> 16) | (tmp << (64 - 16));
8115 b5 = (tmp >> 28) | (tmp << (64 - 28));
8119 b1 = (tmp >> 47) | (tmp << (64 - 47));
8123 b9 = (tmp >> 41) | (tmp << (64 - 41));
8127 b13 = (tmp >> 48) | (tmp << (64 - 48));
8131 b11 = (tmp >> 20) | (tmp << (64 - 20));
8135 b15 = (tmp >> 5) | (tmp << (64 - 5));
8139 b9 = (tmp >> 17) | (tmp << (64 - 17));
8143 b11 = (tmp >> 59) | (tmp << (64 - 59));
8147 b13 = (tmp >> 41) | (tmp << (64 - 41));
8151 b15 = (tmp >> 34) | (tmp << (64 - 34));
8155 b1 = (tmp >> 13) | (tmp << (64 - 13));
8159 b3 = (tmp >> 51) | (tmp << (64 - 51));
8163 b5 = (tmp >> 4) | (tmp << (64 - 4));
8167 b7 = (tmp >> 33) | (tmp << (64 - 33));
8171 b1 = (tmp >> 52) | (tmp << (64 - 52));
8175 b5 = (tmp >> 23) | (tmp << (64 - 23));
8179 b3 = (tmp >> 18) | (tmp << (64 - 18));
8183 b7 = (tmp >> 49) | (tmp << (64 - 49));
8187 b15 = (tmp >> 55) | (tmp << (64 - 55));
8191 b11 = (tmp >> 10) | (tmp << (64 - 10));
8195 b13 = (tmp >> 19) | (tmp << (64 - 19));
8199 b9 = (tmp >> 38) | (tmp << (64 - 38));
8203 b15 = (tmp >> 37) | (tmp << (64 - 37));
8204 b14 -= b15 + k14 + t1;
8208 b13 = (tmp >> 22) | (tmp << (64 - 22));
8213 b11 = (tmp >> 17) | (tmp << (64 - 17));
8218 b9 = (tmp >> 8) | (tmp << (64 - 8));
8223 b7 = (tmp >> 47) | (tmp << (64 - 47));
8228 b5 = (tmp >> 8) | (tmp << (64 - 8));
8233 b3 = (tmp >> 13) | (tmp << (64 - 13));
8238 b1 = (tmp >> 24) | (tmp << (64 - 24));