Commit 40f5aac9b117b7042304b673f6fa75f379707404

Con Kolivas 2012-02-27T08:57:20

Machine optimise by removing one-use variables.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
diff --git a/diablo120222.cl b/diablo120222.cl
index 73d2edb..8c9a8f4 100644
--- a/diablo120222.cl
+++ b/diablo120222.cl
@@ -64,1141 +64,454 @@ __kernel __attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) void search(
 
 	const z Znonce = base + (uint)(get_global_id(0));
 
-    ZA[15] = Znonce + PreVal4_state0;
-    
-    ZA[16] = (ZCh(ZA[15], b1, c1) + d1) + ZR26(ZA[15]);
-    ZA[26] = Znonce + PreVal4_T1;
-    
-    ZA[27] = ZMa(f1, g1, ZA[26]) + ZR30(ZA[26]);
-    ZA[17] = ZA[16] + h1;
-    
-    ZA[19] = (ZCh(ZA[17], ZA[15], b1) + c1_plus_k5) + ZR26(ZA[17]);
-    ZA[28] = ZA[27] + ZA[16];
-    
-    ZA[548] = ZMa(ZA[26], f1, ZA[28]) + ZR30(ZA[28]);
-    ZA[20] = ZA[19] + g1;
-    
-    ZA[22] = (ZCh(ZA[20], ZA[17], ZA[15]) + b1_plus_k6) + ZR26(ZA[20]);
-    ZA[29] = ZA[548] + ZA[19];
-    
-    ZA[549] = ZMa(ZA[28], ZA[26], ZA[29]) + ZR30(ZA[29]);
-    ZA[23] = ZA[22] + f1;
-    
-    ZA[24] = ZCh(ZA[23], ZA[20], ZA[17]) + ZR26(ZA[23]);
-    ZA[180] = Znonce + PreVal4_state0_k7;
-    ZA[30] = ZA[549] + ZA[22];
-    
-    ZA[31] = ZMa(ZA[29], ZA[28], ZA[30]) + ZR30(ZA[30]);
-    ZA[181] = ZA[180] + ZA[24];
-    
-    ZA[182] = ZA[181] + ZA[26];
-    ZA[183] = ZA[181] + ZA[31];
-    ZA[18] = ZA[17] + 0xd807aa98U;
-    
-    ZA[186] = (ZCh(ZA[182], ZA[23], ZA[20]) + ZA[18]) + ZR26(ZA[182]);
-    ZA[184] = ZMa(ZA[30], ZA[29], ZA[183]) + ZR30(ZA[183]);
-    
-    ZA[187] = ZA[186] + ZA[28];
-    ZA[188] = ZA[186] + ZA[184];
-    ZA[21] = ZA[20] + 0x12835b01U;
-    
-    ZA[191] = (ZCh(ZA[187], ZA[182], ZA[23]) + ZA[21]) + ZR26(ZA[187]);
-    ZA[189] = ZMa(ZA[183], ZA[30], ZA[188]) + ZR30(ZA[188]);
-    
-    ZA[192] = ZA[191] + ZA[29];
-    ZA[193] = ZA[191] + ZA[189];
-    ZA[25] = ZA[23] + 0x243185beU;
-    
-    ZA[196] = (ZCh(ZA[192], ZA[187], ZA[182]) + ZA[25]) + ZR26(ZA[192]);
-    ZA[194] = ZMa(ZA[188], ZA[183], ZA[193]) + ZR30(ZA[193]);
-    
-    ZA[197] = ZA[196] + ZA[30];
-    ZA[198] = ZA[196] + ZA[194];
-    ZA[185] = ZA[182] + 0x550c7dc3U;
-    
-    ZA[201] = (ZCh(ZA[197], ZA[192], ZA[187]) + ZA[185]) + ZR26(ZA[197]);
-    ZA[199] = ZMa(ZA[193], ZA[188], ZA[198]) + ZR30(ZA[198]);
-    
-    ZA[202] = ZA[201] + ZA[183];
-    ZA[203] = ZA[201] + ZA[199];
-    ZA[190] = ZA[187] + 0x72be5d74U;
-    
-    ZA[206] = (ZCh(ZA[202], ZA[197], ZA[192]) + ZA[190]) + ZR26(ZA[202]);
-    ZA[204] = ZMa(ZA[198], ZA[193], ZA[203]) + ZR30(ZA[203]);
-    
-    ZA[207] = ZA[206] + ZA[188];
-    ZA[208] = ZA[206] + ZA[204];
-    ZA[195] = ZA[192] + 0x80deb1feU;
-    
-    ZA[211] = (ZCh(ZA[207], ZA[202], ZA[197]) + ZA[195]) + ZR26(ZA[207]);
-    ZA[209] = ZMa(ZA[203], ZA[198], ZA[208]) + ZR30(ZA[208]);
-    
-    ZA[212] = ZA[193] + ZA[211];
-    ZA[213] = ZA[211] + ZA[209];
-    ZA[200] = ZA[197] + 0x9bdc06a7U;
-    
-    ZA[216] = (ZCh(ZA[212], ZA[207], ZA[202]) + ZA[200]) + ZR26(ZA[212]);
-    ZA[214] = ZMa(ZA[208], ZA[203], ZA[213]) + ZR30(ZA[213]);
-    
-    ZA[217] = ZA[198] + ZA[216];
-    ZA[218] = ZA[216] + ZA[214];
-    ZA[205] = ZA[202] + 0xc19bf3f4U;
-    
-    ZA[220] = (ZCh(ZA[217], ZA[212], ZA[207]) + ZA[205]) + ZR26(ZA[217]);
-    ZA[219] = ZMa(ZA[213], ZA[208], ZA[218]) + ZR30(ZA[218]);
-    
-    ZA[222] = ZA[203] + ZA[220];
-    ZA[223] = ZA[220] + ZA[219];
-    ZA[210] = ZA[207] + W16_plus_K16;
-    
-    ZA[226] = (ZCh(ZA[222], ZA[217], ZA[212]) + ZA[210]) + ZR26(ZA[222]);
-    ZA[225] = ZMa(ZA[218], ZA[213], ZA[223]) + ZR30(ZA[223]);
-    
-    ZA[0] = ZR25(Znonce) + W18;
-    ZA[228] = ZA[226] + ZA[225];
-    ZA[227] = ZA[208] + ZA[226];
-    ZA[215] = ZA[212] + W17_plus_K17;
-    
-    ZA[231] = (ZCh(ZA[227], ZA[222], ZA[217]) + ZA[215]) + ZR26(ZA[227]);
-    ZA[229] = ZMa(ZA[223], ZA[218], ZA[228]) + ZR30(ZA[228]);
-    ZA[1] = ZA[0] + 0x0fc19dc6U;
-    
-    ZA[232] = ZA[213] + ZA[231];
-    ZA[233] = ZA[231] + ZA[229];
-    ZA[221] = ZA[217] + ZA[1];
-    ZA[32] = Znonce + W19;
-    
-    ZA[236] = (ZCh(ZA[232], ZA[227], ZA[222]) + ZA[221]) + ZR26(ZA[232]);
-    ZA[234] = ZMa(ZA[228], ZA[223], ZA[233]) + ZR30(ZA[233]);
-    ZA[33] = ZA[32] + 0x240ca1ccU;
-    
-    ZA[3] = ZR15(ZA[0]) + 0x80000000U;
-    ZA[238] = ZA[236] + ZA[234];
-    ZA[237] = ZA[218] + ZA[236];
-    ZA[224] = ZA[222] + ZA[33];
-    
-    ZA[241] = (ZCh(ZA[237], ZA[232], ZA[227]) + ZA[224]) + ZR26(ZA[237]);
-    ZA[239] = ZMa(ZA[233], ZA[228], ZA[238]) + ZR30(ZA[238]);
-    ZA[4] = ZA[3] + 0x2de92c6fU;
-    
-    ZA[35] = ZR15(ZA[32]);
-    ZA[243] = ZA[241] + ZA[239];
-    ZA[242] = ZA[223] + ZA[241];
-    ZA[230] = ZA[227] + ZA[4];
-    
-    ZA[246] = (ZCh(ZA[242], ZA[237], ZA[232]) + ZA[230]) + ZR26(ZA[242]);
-    ZA[244] = ZMa(ZA[238], ZA[233], ZA[243]) + ZR30(ZA[243]);
-    ZA[36] = ZA[35] + 0x4a7484aaU;
-    
-    ZA[7] = ZR15(ZA[3]) + 0x00000280U;
-    ZA[248] = ZA[246] + ZA[244];
-    ZA[247] = ZA[228] + ZA[246];
-    ZA[235] = ZA[232] + ZA[36];
-    
-    ZA[251] = (ZCh(ZA[247], ZA[242], ZA[237]) + ZA[235]) + ZR26(ZA[247]);
-    ZA[249] = ZMa(ZA[243], ZA[238], ZA[248]) + ZR30(ZA[248]);
-    ZA[8] = ZA[7] + 0x5cb0a9dcU;
-    
-    ZA[38] = ZR15(ZA[35]) + W16;
-    ZA[253] = ZA[251] + ZA[249];
-    ZA[252] = ZA[233] + ZA[251];
-    ZA[240] = ZA[237] + ZA[8];
-    
-    ZA[256] = (ZCh(ZA[252], ZA[247], ZA[242]) + ZA[240]) + ZR26(ZA[252]);
-    ZA[254] = ZMa(ZA[248], ZA[243], ZA[253]) + ZR30(ZA[253]);
-    ZA[40] = ZA[38] + 0x76f988daU;
-    
-    ZA[10] = ZR15(ZA[7]) + W17;
-    ZA[258] = ZA[256] + ZA[254];
-    ZA[257] = ZA[238] + ZA[256];
-    ZA[245] = ZA[242] + ZA[40];
-    
-    ZA[261] = (ZCh(ZA[257], ZA[252], ZA[247]) + ZA[245]) + ZR26(ZA[257]);
-    ZA[259] = ZMa(ZA[253], ZA[248], ZA[258]) + ZR30(ZA[258]);
-    ZA[13] = ZA[10] + 0x983e5152U;
-    
-    ZA[43] = ZR15(ZA[38]) + ZA[0];
-    ZA[263] = ZA[261] + ZA[259];
-    ZA[262] = ZA[243] + ZA[261];
-    ZA[250] = ZA[247] + ZA[13];
-    
-    ZA[266] = (ZCh(ZA[262], ZA[257], ZA[252]) + ZA[250]) + ZR26(ZA[262]);
-    ZA[264] = ZMa(ZA[258], ZA[253], ZA[263]) + ZR30(ZA[263]);
-    ZA[11] = ZR15(ZA[10]);
-    ZA[45] = ZA[43] + 0xa831c66dU;
-    
-    ZA[52] = ZA[11] + ZA[32];
-    ZA[267] = ZA[248] + ZA[266];
-    ZA[255] = ZA[252] + ZA[45];
-    ZA[268] = ZA[266] + ZA[264];
-    
-    ZA[271] = (ZCh(ZA[267], ZA[262], ZA[257]) + ZA[255]) + ZR26(ZA[267]);
-    ZA[269] = ZMa(ZA[263], ZA[258], ZA[268]) + ZR30(ZA[268]);
-    ZA[54] = ZA[52] + 0xb00327c8U;
-    
-    ZA[48] = ZR15(ZA[43]) + ZA[3];
-    ZA[273] = ZA[271] + ZA[269];
-    ZA[272] = ZA[253] + ZA[271];
-    ZA[260] = ZA[257] + ZA[54];
-    
-    ZA[276] = (ZCh(ZA[272], ZA[267], ZA[262]) + ZA[260]) + ZR26(ZA[272]);
-    ZA[274] = ZMa(ZA[268], ZA[263], ZA[273]) + ZR30(ZA[273]);
-    ZA[49] = ZA[48] + 0xbf597fc7U;
-    
-    ZA[61] = ZR15(ZA[52]) + ZA[35];
-    ZA[278] = ZA[276] + ZA[274];
-    ZA[277] = ZA[258] + ZA[276];
-    ZA[265] = ZA[262] + ZA[49];
-    
-    ZA[281] = (ZCh(ZA[277], ZA[272], ZA[267]) + ZA[265]) + ZR26(ZA[277]);
-    ZA[279] = ZMa(ZA[273], ZA[268], ZA[278]) + ZR30(ZA[278]);
-    ZA[62] = ZA[61] + 0xc6e00bf3U;
-    
-    ZA[53] = ZR15(ZA[48]) + ZA[7];
-    ZA[283] = ZA[281] + ZA[279];
-    ZA[282] = ZA[263] + ZA[281];
-    ZA[270] = ZA[267] + ZA[62];
-    
-    ZA[286] = (ZCh(ZA[282], ZA[277], ZA[272]) + ZA[270]) + ZR26(ZA[282]);
-    ZA[284] = ZMa(ZA[278], ZA[273], ZA[283]) + ZR30(ZA[283]);
-    ZA[39] = ZA[38] + 0x00A00055U;
-    ZA[55] = ZA[53] + 0xd5a79147U;
-    
-    ZA[66] = ZR15(ZA[61]) + ZA[39];
-    ZA[288] = ZA[286] + ZA[284];
-    ZA[287] = ZA[268] + ZA[286];
-    ZA[275] = ZA[272] + ZA[55];
-    
-    ZA[291] = (ZCh(ZA[287], ZA[282], ZA[277]) + ZA[275]) + ZR26(ZA[287]);
-    ZA[289] = ZMa(ZA[283], ZA[278], ZA[288]) + ZR30(ZA[288]);
-    ZA[12] = ZA[10] + W31;
-    ZA[68] = ZA[66] + 0x06ca6351U;
-    
-    ZA[67] = ZR15(ZA[53]) + ZA[12];
-    ZA[293] = ZA[291] + ZA[289];
-    ZA[292] = ZA[273] + ZA[291];
-    ZA[280] = ZA[277] + ZA[68];
-    
-    ZA[296] = (ZCh(ZA[292], ZA[287], ZA[282]) + ZA[280]) + ZR26(ZA[292]);
-    ZA[294] = ZMa(ZA[288], ZA[283], ZA[293]) + ZR30(ZA[293]);
-    ZA[2] = ZR25(ZA[0]);
-    ZA[69] = ZA[67] + 0x14292967U;
-    ZA[44] = ZA[43] + W32;
-    
-    ZA[75] = ZR15(ZA[66]) + ZA[44];
-    ZA[298] = ZA[296] + ZA[294];
-    ZA[297] = ZA[278] + ZA[296];
-    ZA[285] = ZA[282] + ZA[69];
-    ZA[5] = ZA[2] + W17;
-    
-    ZA[301] = (ZCh(ZA[297], ZA[292], ZA[287]) + ZA[285]) + ZR26(ZA[297]);
-    ZA[299] = ZMa(ZA[293], ZA[288], ZA[298]) + ZR30(ZA[298]);
-    ZA[56] = ZA[52] + ZA[5];
-    ZA[76] = ZA[75] + 0x27b70a85U;
-    
-    ZA[34] = ZR25(ZA[32]) + ZA[0];
-    ZA[70] = ZR15(ZA[67]) + ZA[56];
-    ZA[302] = ZA[283] + ZA[301];
-    ZA[303] = ZA[301] + ZA[299];
-    ZA[290] = ZA[287] + ZA[76];
-    
-    ZA[306] = (ZCh(ZA[302], ZA[297], ZA[292]) + ZA[290]) + ZR26(ZA[302]);
-    ZA[304] = ZMa(ZA[298], ZA[293], ZA[303]) + ZR30(ZA[303]);
-    ZA[6] = ZR25(ZA[3]);
-    ZA[77] = ZA[70] + 0x2e1b2138U;
-    ZA[50] = ZA[34] + ZA[48];
-    
-    ZA[78] = ZR15(ZA[75]) + ZA[50];
-    ZA[308] = ZA[306] + ZA[304];
-    ZA[307] = ZA[288] + ZA[306];
-    ZA[295] = ZA[292] + ZA[77];
-    ZA[41] = ZA[32] + ZA[6];
-    
-    ZA[311] = (ZCh(ZA[307], ZA[302], ZA[297]) + ZA[295]) + ZR26(ZA[307]);
-    ZA[309] = ZMa(ZA[303], ZA[298], ZA[308]) + ZR30(ZA[308]);
-    ZA[63] = ZA[41] + ZA[61];
-    ZA[85] = ZA[78] + 0x4d2c6dfcU;
-    
-    ZA[37] = ZR25(ZA[35]) + ZA[3];
-    ZA[79] = ZR15(ZA[70]) + ZA[63];
-    ZA[312] = ZA[293] + ZA[311];
-    ZA[313] = ZA[311] + ZA[309];
-    ZA[300] = ZA[297] + ZA[85];
-    
-    ZA[316] = (ZCh(ZA[312], ZA[307], ZA[302]) + ZA[300]) + ZR26(ZA[312]);
-    ZA[314] = ZMa(ZA[308], ZA[303], ZA[313]) + ZR30(ZA[313]);
-    ZA[9] = ZR25(ZA[7]);
-    ZA[86] = ZA[79] + 0x53380d13U;
-    ZA[57] = ZA[37] + ZA[53];
-    
-    ZA[87] = ZR15(ZA[78]) + ZA[57];
-    ZA[318] = ZA[316] + ZA[314];
-    ZA[317] = ZA[298] + ZA[316];
-    ZA[305] = ZA[302] + ZA[86];
-    ZA[46] = ZA[35] + ZA[9];
-    
-    ZA[321] = (ZCh(ZA[317], ZA[312], ZA[307]) + ZA[305]) + ZR26(ZA[317]);
-    ZA[319] = ZMa(ZA[313], ZA[308], ZA[318]) + ZR30(ZA[318]);
-    ZA[71] = ZA[46] + ZA[66];
-    ZA[92] = ZA[87] + 0x650a7354U;
-    
-    ZA[42] = ZR25(ZA[38]) + ZA[7];
-    ZA[88] = ZR15(ZA[79]) + ZA[71];
-    ZA[322] = ZA[303] + ZA[321];
-    ZA[323] = ZA[321] + ZA[319];
-    ZA[310] = ZA[307] + ZA[92];
-    
-    ZA[326] = (ZCh(ZA[322], ZA[317], ZA[312]) + ZA[310]) + ZR26(ZA[322]);
-    ZA[324] = ZMa(ZA[318], ZA[313], ZA[323]) + ZR30(ZA[323]);
-    ZA[14] = ZR25(ZA[10]);
-    ZA[93] = ZA[88] + 0x766a0abbU;
-    ZA[72] = ZA[42] + ZA[67];
-    
-    ZA[94] = ZR15(ZA[87]) + ZA[72];
-    ZA[328] = ZA[326] + ZA[324];
-    ZA[327] = ZA[308] + ZA[326];
-    ZA[315] = ZA[312] + ZA[93];
-    ZA[51] = ZA[38] + ZA[14];
-    
-    ZA[331] = (ZCh(ZA[327], ZA[322], ZA[317]) + ZA[315]) + ZR26(ZA[327]);
-    ZA[329] = ZMa(ZA[323], ZA[318], ZA[328]) + ZR30(ZA[328]);
-    ZA[80] = ZA[51] + ZA[75];
-    ZA[100] = ZA[94] + 0x81c2c92eU;
-    
-    ZA[47] = ZR25(ZA[43]) + ZA[10];
-    ZA[95] = ZR15(ZA[88]) + ZA[80];
-    ZA[332] = ZA[313] + ZA[331];
-    ZA[333] = ZA[331] + ZA[329];
-    ZA[320] = ZA[317] + ZA[100];
-    
-    ZA[336] = (ZCh(ZA[332], ZA[327], ZA[322]) + ZA[320]) + ZR26(ZA[332]);
-    ZA[334] = ZMa(ZA[328], ZA[323], ZA[333]) + ZR30(ZA[333]);
-    ZA[81] = ZA[47] + ZA[70];
-    ZA[101] = ZA[95] + 0x92722c85U;
-    
-    ZA[58] = ZR25(ZA[52]) + ZA[43];
-    ZA[102] = ZR15(ZA[94]) + ZA[81];
-    ZA[337] = ZA[318] + ZA[336];
-    ZA[338] = ZA[336] + ZA[334];
-    ZA[325] = ZA[322] + ZA[101];
-    
-    ZA[341] = (ZCh(ZA[337], ZA[332], ZA[327]) + ZA[325]) + ZR26(ZA[337]);
-    ZA[339] = ZMa(ZA[333], ZA[328], ZA[338]) + ZR30(ZA[338]);
-    ZA[89] = ZA[58] + ZA[78];
-    ZA[108] = ZA[102] + 0xa2bfe8a1U;
-    
-    ZA[59] = ZR25(ZA[48]) + ZA[52];
-    ZA[103] = ZR15(ZA[95]) + ZA[89];
-    ZA[342] = ZA[323] + ZA[341];
-    ZA[343] = ZA[341] + ZA[339];
-    ZA[330] = ZA[327] + ZA[108];
-    
-    ZA[346] = (ZCh(ZA[342], ZA[337], ZA[332]) + ZA[330]) + ZR26(ZA[342]);
-    ZA[344] = ZMa(ZA[338], ZA[333], ZA[343]) + ZR30(ZA[343]);
-    ZA[90] = ZA[59] + ZA[79];
-    ZA[109] = ZA[103] + 0xa81a664bU;
-    
-    ZA[64] = ZR25(ZA[61]) + ZA[48];
-    ZA[110] = ZR15(ZA[102]) + ZA[90];
-    ZA[347] = ZA[328] + ZA[346];
-    ZA[348] = ZA[346] + ZA[344];
-    ZA[335] = ZA[332] + ZA[109];
-    
-    ZA[351] = (ZCh(ZA[347], ZA[342], ZA[337]) + ZA[335]) + ZR26(ZA[347]);
-    ZA[349] = ZMa(ZA[343], ZA[338], ZA[348]) + ZR30(ZA[348]);
-    ZA[60] = ZR25(ZA[53]);
-    ZA[116] = ZA[110] + 0xc24b8b70U;
-    ZA[96] = ZA[87] + ZA[64];
-    
-    ZA[111] = ZR15(ZA[103]) + ZA[96];
-    ZA[353] = ZA[351] + ZA[349];
-    ZA[352] = ZA[333] + ZA[351];
-    ZA[340] = ZA[337] + ZA[116];
-    ZA[65] = ZA[60] + ZA[61];
-    
-    ZA[356] = (ZCh(ZA[352], ZA[347], ZA[342]) + ZA[340]) + ZR26(ZA[352]);
-    ZA[354] = ZMa(ZA[348], ZA[343], ZA[353]) + ZR30(ZA[353]);
-    ZA[97] = ZA[88] + ZA[65];
-    ZA[117] = ZA[111] + 0xc76c51a3U;
-    
-    ZA[73] = ZR25(ZA[66]) + ZA[53];
-    ZA[118] = ZR15(ZA[110]) + ZA[97];
-    ZA[357] = ZA[338] + ZA[356];
-    ZA[358] = ZA[356] + ZA[354];
-    ZA[345] = ZA[342] + ZA[117];
-    
-    ZA[361] = (ZCh(ZA[357], ZA[352], ZA[347]) + ZA[345]) + ZR26(ZA[357]);
-    ZA[359] = ZMa(ZA[353], ZA[348], ZA[358]) + ZR30(ZA[358]);
-    ZA[104] = ZA[73] + ZA[94];
-    ZA[124] = ZA[118] + 0xd192e819U;
-    
-    ZA[74] = ZR25(ZA[67]) + ZA[66];
-    ZA[119] = ZR15(ZA[111]) + ZA[104];
-    ZA[362] = ZA[343] + ZA[361];
-    ZA[363] = ZA[361] + ZA[359];
-    ZA[350] = ZA[347] + ZA[124];
-    
-    ZA[366] = (ZCh(ZA[362], ZA[357], ZA[352]) + ZA[350]) + ZR26(ZA[362]);
-    ZA[364] = ZMa(ZA[358], ZA[353], ZA[363]) + ZR30(ZA[363]);
-    ZA[105] = ZA[74] + ZA[95];
-    ZA[125] = ZA[119] + 0xd6990624U;
-    
-    ZA[82] = ZR25(ZA[75]) + ZA[67];
-    ZA[126] = ZR15(ZA[118]) + ZA[105];
-    ZA[367] = ZA[348] + ZA[366];
-    ZA[368] = ZA[366] + ZA[364];
-    ZA[355] = ZA[352] + ZA[125];
-    
-    ZA[371] = (ZCh(ZA[367], ZA[362], ZA[357]) + ZA[355]) + ZR26(ZA[367]);
-    ZA[369] = ZMa(ZA[363], ZA[358], ZA[368]) + ZR30(ZA[368]);
-    ZA[112] = ZA[102] + ZA[82];
-    ZA[132] = ZA[126] + 0xf40e3585U;
-    
-    ZA[83] = ZR25(ZA[70]) + ZA[75];
-    ZA[127] = ZR15(ZA[119]) + ZA[112];
-    ZA[372] = ZA[353] + ZA[371];
-    ZA[373] = ZA[371] + ZA[369];
-    ZA[360] = ZA[357] + ZA[132];
-    
-    ZA[376] = (ZCh(ZA[372], ZA[367], ZA[362]) + ZA[360]) + ZR26(ZA[372]);
-    ZA[374] = ZMa(ZA[368], ZA[363], ZA[373]) + ZR30(ZA[373]);
-    ZA[113] = ZA[103] + ZA[83];
-    ZA[133] = ZA[127] + 0x106aa070U;
-    
-    ZA[84] = ZR25(ZA[78]) + ZA[70];
-    ZA[134] = ZR15(ZA[126]) + ZA[113];
-    ZA[377] = ZA[358] + ZA[376];
-    ZA[378] = ZA[376] + ZA[374];
-    ZA[365] = ZA[362] + ZA[133];
-    
-    ZA[381] = (ZCh(ZA[377], ZA[372], ZA[367]) + ZA[365]) + ZR26(ZA[377]);
-    ZA[379] = ZMa(ZA[373], ZA[368], ZA[378]) + ZR30(ZA[378]);
-    ZA[120] = ZA[110] + ZA[84];
-    ZA[140] = ZA[134] + 0x19a4c116U;
-    
-    ZA[91] = ZR25(ZA[79]) + ZA[78];
-    ZA[135] = ZR15(ZA[127]) + ZA[120];
-    ZA[382] = ZA[363] + ZA[381];
-    ZA[383] = ZA[381] + ZA[379];
-    ZA[370] = ZA[367] + ZA[140];
-    
-    ZA[386] = (ZCh(ZA[382], ZA[377], ZA[372]) + ZA[370]) + ZR26(ZA[382]);
-    ZA[384] = ZMa(ZA[378], ZA[373], ZA[383]) + ZR30(ZA[383]);
-    ZA[121] = ZA[111] + ZA[91];
-    ZA[141] = ZA[135] + 0x1e376c08U;
-    
-    ZA[98] = ZR25(ZA[87]) + ZA[79];
-    ZA[142] = ZR15(ZA[134]) + ZA[121];
-    ZA[387] = ZA[368] + ZA[386];
-    ZA[388] = ZA[386] + ZA[384];
-    ZA[375] = ZA[372] + ZA[141];
-    
-    ZA[391] = (ZCh(ZA[387], ZA[382], ZA[377]) + ZA[375]) + ZR26(ZA[387]);
-    ZA[389] = ZMa(ZA[383], ZA[378], ZA[388]) + ZR30(ZA[388]);
-    ZA[128] = ZA[118] + ZA[98];
-    ZA[147] = ZA[142] + 0x2748774cU;
-    
-    ZA[99] = ZR25(ZA[88]) + ZA[87];
-    ZA[143] = ZR15(ZA[135]) + ZA[128];
-    ZA[392] = ZA[373] + ZA[391];
-    ZA[393] = ZA[391] + ZA[389];
-    ZA[380] = ZA[377] + ZA[147];
-    
-    ZA[396] = (ZCh(ZA[392], ZA[387], ZA[382]) + ZA[380]) + ZR26(ZA[392]);
-    ZA[394] = ZMa(ZA[388], ZA[383], ZA[393]) + ZR30(ZA[393]);
-    ZA[129] = ZA[119] + ZA[99];
-    ZA[148] = ZA[143] + 0x34b0bcb5U;
-    
-    ZA[106] = ZR25(ZA[94]) + ZA[88];
-    ZA[149] = ZR15(ZA[142]) + ZA[129];
-    ZA[397] = ZA[378] + ZA[396];
-    ZA[398] = ZA[396] + ZA[394];
-    ZA[385] = ZA[382] + ZA[148];
-    
-    ZA[401] = (ZCh(ZA[397], ZA[392], ZA[387]) + ZA[385]) + ZR26(ZA[397]);
-    ZA[399] = ZMa(ZA[393], ZA[388], ZA[398]) + ZR30(ZA[398]);
-    ZA[136] = ZA[126] + ZA[106];
-    ZA[153] = ZA[149] + 0x391c0cb3U;
-    
-    ZA[107] = ZR25(ZA[95]) + ZA[94];
-    ZA[150] = ZR15(ZA[143]) + ZA[136];
-    ZA[402] = ZA[383] + ZA[401];
-    ZA[403] = ZA[401] + ZA[399];
-    ZA[390] = ZA[387] + ZA[153];
-    
-    ZA[406] = (ZCh(ZA[402], ZA[397], ZA[392]) + ZA[390]) + ZR26(ZA[402]);
-    ZA[404] = ZMa(ZA[398], ZA[393], ZA[403]) + ZR30(ZA[403]);
-    ZA[137] = ZA[127] + ZA[107];
-    ZA[154] = ZA[150] + 0x4ed8aa4aU;
-    
-    ZA[114] = ZR25(ZA[102]) + ZA[95];
-    ZA[155] = ZR15(ZA[149]) + ZA[137];
-    ZA[407] = ZA[388] + ZA[406];
-    ZA[408] = ZA[406] + ZA[404];
-    ZA[395] = ZA[392] + ZA[154];
-    
-    ZA[411] = (ZCh(ZA[407], ZA[402], ZA[397]) + ZA[395]) + ZR26(ZA[407]);
-    ZA[409] = ZMa(ZA[403], ZA[398], ZA[408]) + ZR30(ZA[408]);
-    ZA[144] = ZA[134] + ZA[114];
-    ZA[159] = ZA[155] + 0x5b9cca4fU;
-    
-    ZA[115] = ZR25(ZA[103]) + ZA[102];
-    ZA[156] = ZR15(ZA[150]) + ZA[144];
-    ZA[412] = ZA[393] + ZA[411];
-    ZA[413] = ZA[411] + ZA[409];
-    ZA[400] = ZA[397] + ZA[159];
-    
-    ZA[416] = (ZCh(ZA[412], ZA[407], ZA[402]) + ZA[400]) + ZR26(ZA[412]);
-    ZA[414] = ZMa(ZA[408], ZA[403], ZA[413]) + ZR30(ZA[413]);
-    ZA[145] = ZA[135] + ZA[115];
-    ZA[160] = ZA[156] + 0x682e6ff3U;
-    
-    ZA[122] = ZR25(ZA[110]) + ZA[103];
-    ZA[161] = ZR15(ZA[155]) + ZA[145];
-    ZA[417] = ZA[398] + ZA[416];
-    ZA[418] = ZA[416] + ZA[414];
-    ZA[405] = ZA[402] + ZA[160];
-    
-    ZA[421] = (ZCh(ZA[417], ZA[412], ZA[407]) + ZA[405]) + ZR26(ZA[417]);
-    ZA[419] = ZMa(ZA[413], ZA[408], ZA[418]) + ZR30(ZA[418]);
-    ZA[151] = ZA[142] + ZA[122];
-    ZA[165] = ZA[161] + 0x748f82eeU;
-    
-    ZA[123] = ZR25(ZA[111]) + ZA[110];
-    ZA[162] = ZR15(ZA[156]) + ZA[151];
-    ZA[422] = ZA[403] + ZA[421];
-    ZA[423] = ZA[421] + ZA[419];
-    ZA[410] = ZA[407] + ZA[165];
-    
-    ZA[426] = (ZCh(ZA[422], ZA[417], ZA[412]) + ZA[410]) + ZR26(ZA[422]);
-    ZA[424] = ZMa(ZA[418], ZA[413], ZA[423]) + ZR30(ZA[423]);
-    ZA[152] = ZA[143] + ZA[123];
-    ZA[166] = ZA[162] + 0x78a5636fU;
-    
-    ZA[130] = ZR25(ZA[118]) + ZA[111];
-    ZA[167] = ZR15(ZA[161]) + ZA[152];
-    ZA[427] = ZA[408] + ZA[426];
-    ZA[428] = ZA[426] + ZA[424];
-    ZA[415] = ZA[412] + ZA[166];
-    
-    ZA[431] = (ZCh(ZA[427], ZA[422], ZA[417]) + ZA[415]) + ZR26(ZA[427]);
-    ZA[429] = ZMa(ZA[423], ZA[418], ZA[428]) + ZR30(ZA[428]);
-    ZA[157] = ZA[149] + ZA[130];
-    ZA[170] = ZA[167] + 0x84c87814U;
-    
-    ZA[131] = ZR25(ZA[119]) + ZA[118];
-    ZA[168] = ZR15(ZA[162]) + ZA[157];
-    ZA[432] = ZA[413] + ZA[431];
-    ZA[433] = ZA[431] + ZA[429];
-    ZA[420] = ZA[417] + ZA[170];
-    
-    ZA[436] = (ZCh(ZA[432], ZA[427], ZA[422]) + ZA[420]) + ZR26(ZA[432]);
-    ZA[434] = ZMa(ZA[428], ZA[423], ZA[433]) + ZR30(ZA[433]);
-    ZA[158] = ZA[150] + ZA[131];
-    ZA[171] = ZA[168] + 0x8cc70208U;
-    
-    ZA[138] = ZR25(ZA[126]) + ZA[119];
-    ZA[172] = ZR15(ZA[167]) + ZA[158];
-    ZA[437] = ZA[418] + ZA[436];
-    ZA[438] = ZA[436] + ZA[434];
-    ZA[425] = ZA[422] + ZA[171];
-    
-    ZA[441] = (ZCh(ZA[437], ZA[432], ZA[427]) + ZA[425]) + ZR26(ZA[437]);
-    ZA[439] = ZMa(ZA[433], ZA[428], ZA[438]) + ZR30(ZA[438]);
-    ZA[163] = ZA[155] + ZA[138];
-    ZA[174] = ZA[172] + 0x90befffaU;
-    
-    ZA[139] = ZR25(ZA[127]) + ZA[126];
-    ZA[173] = ZR15(ZA[168]) + ZA[163];
-    ZA[442] = ZA[423] + ZA[441];
-    ZA[443] = ZA[441] + ZA[439];
-    ZA[430] = ZA[427] + ZA[174];
-    
-    ZA[445] = (ZCh(ZA[442], ZA[437], ZA[432]) + ZA[430]) + ZR26(ZA[442]);
-    ZA[444] = ZMa(ZA[438], ZA[433], ZA[443]) + ZR30(ZA[443]);
-    ZA[164] = ZA[156] + ZA[139];
-    ZA[175] = ZA[173] + 0xa4506cebU;
-    
-    ZA[146] = ZR25(ZA[134]) + ZA[127];
-    ZA[176] = ZR15(ZA[172]) + ZA[164];
-    ZA[446] = ZA[428] + ZA[445];
-    ZA[447] = ZA[445] + ZA[444];
-    ZA[435] = ZA[432] + ZA[175];
-    
-    ZA[449] = (ZCh(ZA[446], ZA[442], ZA[437]) + ZA[435]) + ZR26(ZA[446]);
-    ZA[448] = ZMa(ZA[443], ZA[438], ZA[447]) + ZR30(ZA[447]);
-    ZA[169] = ZA[161] + ZA[146];
-    ZA[178] = ZA[176] + 0xbef9a3f7U;
-    
-    ZA[177] = ZR15(ZA[173]) + ZA[169];
-    ZA[451] = ZA[449] + ZA[448];
-    ZA[450] = ZA[433] + ZA[449];
-    ZA[440] = ZA[437] + ZA[178];
-    
-    ZA[453] = (ZCh(ZA[450], ZA[446], ZA[442]) + ZA[440]) + ZR26(ZA[450]);
-    ZA[452] = ZMa(ZA[447], ZA[443], ZA[451]) + ZR30(ZA[451]);
-    ZA[179] = ZA[177] + 0xc67178f2U;
-    
-    ZA[454] = ZA[438] + ZA[453];
-    ZA[494] = ZA[442] + ZA[179];
-    ZA[455] = ZA[453] + ZA[452];
-    
-    ZA[457] = (ZCh(ZA[454], ZA[450], ZA[446]) + ZA[494]) + ZR26(ZA[454]);
-    ZA[456] = ZMa(ZA[451], ZA[447], ZA[455]) + ZR30(ZA[455]);
-    
-    ZA[459] = ZA[457] + ZA[456];
-    
-    ZA[461] = ZA[455] + state1;
-    ZA[460] = ZA[459] + state0;
-    
-    ZA[495] = ZA[460] + 0x98c7e2a2U;
-    ZA[469] = ZA[461] + 0x90bb1e3cU;
-    
-    ZA[498] = (ZCh(ZA[495], 0x510e527fU, 0x9b05688cU) + ZA[469]) + ZR26(ZA[495]);
-    ZA[462] = ZA[451] + state2;
-    
-    ZA[496] = ZA[460] + 0xfc08884dU;
-    ZA[506] = ZA[498] + 0x3c6ef372U;
-    ZA[470] = ZA[462] + 0x50c6645bU;
-    
-    ZA[507] = (ZCh(ZA[506], ZA[495], 0x510e527fU) + ZA[470]) + ZR26(ZA[506]);
-    ZA[500] = ZMa(0x6a09e667U, 0xbb67ae85U, ZA[496]) + ZR30(ZA[496]);
-    ZA[463] = ZA[447] + state3;
-    
-    ZA[458] = ZA[443] + ZA[457];
-    ZA[499] = ZA[498] + ZA[500];
-    ZA[508] = ZA[507] + 0xbb67ae85U;
-    ZA[473] = ZA[463] + 0x3ac42e24U;
-    
-    ZA[510] = (ZCh(ZA[508], ZA[506], ZA[495]) + ZA[473]) + ZR26(ZA[508]);
-    ZA[928] = ZMa(ZA[496], 0x6a09e667U, ZA[499]) + ZR30(ZA[499]);
-    ZA[464] = ZA[458] + state4;
-    
-    ZA[476] = ZA[464] + ZA[460] + 0xd21ea4fdU;
-    ZA[511] = ZA[510] + 0x6a09e667U;
-    ZA[509] = ZA[928] + ZA[507];
-    ZA[465] = ZA[454] + state5;
-    
-    ZA[514] = (ZCh(ZA[511], ZA[508], ZA[506]) + ZA[476]) + ZR26(ZA[511]);
-    ZA[512] = ZMa(ZA[499], ZA[496], ZA[509]) + ZR30(ZA[509]);
-    ZA[478] = ZA[465] + 0x59f111f1U;
-    
-    ZA[519] = ZA[506] + ZA[478];
-    ZA[516] = ZA[496] + ZA[514];
-    ZA[513] = ZA[510] + ZA[512];
-    ZA[466] = ZA[450] + state6;
-    
-    ZA[520] = (ZCh(ZA[516], ZA[511], ZA[508]) + ZA[519]) + ZR26(ZA[516]);
-    ZA[515] = ZMa(ZA[509], ZA[499], ZA[513]) + ZR30(ZA[513]);
-    ZA[480] = ZA[466] + 0x923f82a4U;
-    
-    ZA[524] = ZA[508] + ZA[480];
-    ZA[521] = ZA[499] + ZA[520];
-    ZA[517] = ZA[514] + ZA[515];
-    ZA[467] = ZA[446] + state7;
-    
-    ZA[525] = (ZCh(ZA[521], ZA[516], ZA[511]) + ZA[524]) + ZR26(ZA[521]);
-    ZA[522] = ZMa(ZA[513], ZA[509], ZA[517]) + ZR30(ZA[517]);
-    ZA[484] = ZA[467] + 0xab1c5ed5U;
-    
-    ZA[529] = ZA[511] + ZA[484];
-    ZA[526] = ZA[509] + ZA[525];
-    ZA[523] = ZA[520] + ZA[522];
-    
-    ZA[530] = (ZCh(ZA[526], ZA[521], ZA[516]) + ZA[529]) + ZR26(ZA[526]);
-    ZA[550] = ZMa(ZA[517], ZA[513], ZA[523]) + ZR30(ZA[523]);
-    
-    ZA[531] = ZA[513] + ZA[530];
-    ZA[533] = ZA[516] + 0x5807aa98U;
-    ZA[527] = ZA[550] + ZA[525];
-    
-    ZA[534] = (ZCh(ZA[531], ZA[526], ZA[521]) + ZA[533]) + ZR26(ZA[531]);
-    ZA[551] = ZMa(ZA[523], ZA[517], ZA[527]) + ZR30(ZA[527]);
-    
-    ZA[535] = ZA[517] + ZA[534];
-    ZA[538] = ZA[521] + 0x12835b01U;
-    ZA[532] = ZA[551] + ZA[530];
-    
-    ZA[539] = (ZCh(ZA[535], ZA[531], ZA[526]) + ZA[538]) + ZR26(ZA[535]);
-    ZA[552] = ZMa(ZA[527], ZA[523], ZA[532]) + ZR30(ZA[532]);
-    
-    ZA[540] = ZA[523] + ZA[539];
-    ZA[542] = ZA[526] + 0x243185beU;
-    ZA[536] = ZA[552] + ZA[534];
-    
-    ZA[543] = (ZCh(ZA[540], ZA[535], ZA[531]) + ZA[542]) + ZR26(ZA[540]);
-    ZA[553] = ZMa(ZA[532], ZA[527], ZA[536]) + ZR30(ZA[536]);
-    
-    ZA[544] = ZA[527] + ZA[543];
-    ZA[555] = ZA[531] + 0x550c7dc3U;
-    ZA[541] = ZA[553] + ZA[539];
-    
-    ZA[558] = (ZCh(ZA[544], ZA[540], ZA[535]) + ZA[555]) + ZR26(ZA[544]);
-    ZA[547] = ZMa(ZA[536], ZA[532], ZA[541]) + ZR30(ZA[541]);
-    
-    ZA[559] = ZA[532] + ZA[558];
-    ZA[556] = ZA[535] + 0x72be5d74U;
-    ZA[545] = ZA[547] + ZA[543];
-    
-    ZA[562] = (ZCh(ZA[559], ZA[544], ZA[540]) + ZA[556]) + ZR26(ZA[559]);
-    ZA[561] = ZMa(ZA[541], ZA[536], ZA[545]) + ZR30(ZA[545]);
-    
-    ZA[563] = ZA[536] + ZA[562];
-    ZA[560] = ZA[561] + ZA[558];
-    ZA[557] = ZA[540] + 0x80deb1feU;
-    
-    ZA[568] = (ZCh(ZA[563], ZA[559], ZA[544]) + ZA[557]) + ZR26(ZA[563]);
-    ZA[564] = ZMa(ZA[545], ZA[541], ZA[560]) + ZR30(ZA[560]);
-    
-    ZA[569] = ZA[541] + ZA[568];
-    ZA[572] = ZA[544] + 0x9bdc06a7U;
-    ZA[565] = ZA[562] + ZA[564];
-    
-    ZA[574] = (ZCh(ZA[569], ZA[563], ZA[559]) + ZA[572]) + ZR26(ZA[569]);
-    ZA[570] = ZMa(ZA[560], ZA[545], ZA[565]) + ZR30(ZA[565]);
-    ZA[468] = ZR25(ZA[461]);
-    
-    ZA[497] = ZA[468] + ZA[460];
-    ZA[575] = ZA[545] + ZA[574];
-    ZA[571] = ZA[568] + ZA[570];
-    ZA[573] = ZA[559] + 0xc19bf274U;
-    
-    ZA[578] = (ZCh(ZA[575], ZA[569], ZA[563]) + ZA[573]) + ZR26(ZA[575]);
-    ZA[576] = ZMa(ZA[565], ZA[560], ZA[571]) + ZR30(ZA[571]);
-    ZA[929] = ZR25(ZA[462]);
-    ZA[503] = ZA[497] + 0xe49b69c1U;
-    
-    ZA[471] = ZA[929] + ZA[461] + 0x00a00000U;
-    ZA[582] = ZA[563] + ZA[503];
-    ZA[579] = ZA[560] + ZA[578];
-    ZA[577] = ZA[574] + ZA[576];
-    
-    ZA[583] = (ZCh(ZA[579], ZA[575], ZA[569]) + ZA[582]) + ZR26(ZA[579]);
-    ZA[580] = ZMa(ZA[571], ZA[565], ZA[577]) + ZR30(ZA[577]);
-    ZA[488] = ZA[471] + 0xefbe4786U;
-    
-    ZA[472] = ZR25(ZA[463]) + ZA[462];
-    ZA[587] = ZA[569] + ZA[488];
-    ZA[584] = ZA[565] + ZA[583];
-    ZA[581] = ZA[578] + ZA[580];
-    
-    ZA[588] = (ZCh(ZA[584], ZA[579], ZA[575]) + ZA[587]) + ZR26(ZA[584]);
-    ZA[586] = ZMa(ZA[577], ZA[571], ZA[581]) + ZR30(ZA[581]);
-    ZA[501] = ZR15(ZA[497]) + ZA[472];
-    ZA[475] = ZR15(ZA[471]);
-    ZA[926] = ZA[575] + 0x0fc19dc6U;
-    
-    ZA[474] = ZA[475] + ZA[463] + ZR25(ZA[464]);
-    ZA[927] = ZA[926] + ZA[501];
-    ZA[589] = ZA[571] + ZA[588];
-    ZA[585] = ZA[583] + ZA[586];
-    
-    ZA[592] = (ZCh(ZA[589], ZA[584], ZA[579]) + ZA[927]) + ZR26(ZA[589]);
-    ZA[590] = ZMa(ZA[581], ZA[577], ZA[585]) + ZR30(ZA[585]);
-    ZA[477] = ZR25(ZA[465]) + ZA[464];
-    ZA[489] = ZA[474] + 0x240ca1ccU;
-    
-    ZA[518] = ZR15(ZA[501]) + ZA[477];
-    ZA[479] = ZR25(ZA[466]);
-    ZA[596] = ZA[579] + ZA[489];
-    ZA[593] = ZA[577] + ZA[592];
-    ZA[591] = ZA[588] + ZA[590];
-    
-    ZA[597] = (ZCh(ZA[593], ZA[589], ZA[584]) + ZA[596]) + ZR26(ZA[593]);
-    ZA[594] = ZMa(ZA[585], ZA[581], ZA[591]) + ZR30(ZA[591]);
-    ZA[481] = ZA[479] + ZA[465];
-    ZA[601] = ZA[518] + 0x2de92c6fU;
-    
-    ZA[482] = ZR15(ZA[474]) + ZA[481];
-    ZA[602] = ZA[584] + ZA[601];
-    ZA[598] = ZA[581] + ZA[597];
-    ZA[595] = ZA[592] + ZA[594];
-    
-    ZA[632] = (ZCh(ZA[598], ZA[593], ZA[589]) + ZA[602]) + ZR26(ZA[598]);
-    ZA[599] = ZMa(ZA[591], ZA[585], ZA[595]) + ZR30(ZA[595]);
-    ZA[483] = ZA[466] + 0x00000100U + ZR25(ZA[467]);
-    ZA[490] = ZA[482] + 0x4a7484aaU;
-    
-    ZA[528] = ZR15(ZA[518]) + ZA[483];
-    ZA[736] = ZA[585] + ZA[632];
-    ZA[605] = ZA[589] + ZA[490];
-    ZA[600] = ZA[597] + ZA[599];
-    ZA[485] = ZA[467] + 0x11002000U;
-    
-    ZA[738] = (ZCh(ZA[736], ZA[598], ZA[593]) + ZA[605]) + ZR26(ZA[736]);
-    ZA[744] = ZMa(ZA[595], ZA[591], ZA[600]) + ZR30(ZA[600]);
-    ZA[487] = ZR15(ZA[482]) + ZA[485];
-    ZA[603] = ZA[528] + 0x5cb0a9dcU;
-    
-    ZA[502] = ZA[497] + ZA[487];
-    ZA[739] = ZA[591] + ZA[738];
-    ZA[604] = ZA[593] + ZA[603];
-    ZA[737] = ZA[744] + ZA[632];
-    
-    ZA[741] = (ZCh(ZA[739], ZA[736], ZA[598]) + ZA[604]) + ZR26(ZA[739]);
-    ZA[745] = ZMa(ZA[600], ZA[595], ZA[737]) + ZR30(ZA[737]);
-    ZA[486] = ZA[471] + 0x80000000U;
-    ZA[606] = ZA[502] + 0x76f988daU;
-    
-    ZA[537] = ZR15(ZA[528]) + ZA[486];
-    ZA[742] = ZA[595] + ZA[741];
-    ZA[613] = ZA[598] + ZA[606];
-    ZA[740] = ZA[745] + ZA[738];
-    
-    ZA[747] = (ZCh(ZA[742], ZA[739], ZA[736]) + ZA[613]) + ZR26(ZA[742]);
-    ZA[746] = ZMa(ZA[737], ZA[600], ZA[740]) + ZR30(ZA[740]);
-    ZA[607] = ZA[537] + 0x983e5152U;
-    
-    ZA[546] = ZR15(ZA[502]) + ZA[501];
-    ZA[751] = ZA[736] + ZA[607];
-    ZA[748] = ZA[600] + ZA[747];
-    ZA[743] = ZA[746] + ZA[741];
-    
-    ZA[752] = (ZCh(ZA[748], ZA[742], ZA[739]) + ZA[751]) + ZR26(ZA[748]);
-    ZA[749] = ZMa(ZA[740], ZA[737], ZA[743]) + ZR30(ZA[743]);
-    ZA[608] = ZA[546] + 0xa831c66dU;
-    
-    ZA[554] = ZR15(ZA[537]) + ZA[474];
-    ZA[756] = ZA[739] + ZA[608];
-    ZA[753] = ZA[737] + ZA[752];
-    ZA[750] = ZA[747] + ZA[749];
-    
-    ZA[757] = (ZCh(ZA[753], ZA[748], ZA[742]) + ZA[756]) + ZR26(ZA[753]);
-    ZA[754] = ZMa(ZA[743], ZA[740], ZA[750]) + ZR30(ZA[750]);
-    ZA[609] = ZA[554] + 0xb00327c8U;
-    
-    ZA[566] = ZR15(ZA[546]) + ZA[518];
-    ZA[761] = ZA[742] + ZA[609];
-    ZA[758] = ZA[740] + ZA[757];
-    ZA[755] = ZA[752] + ZA[754];
-    
-    ZA[762] = (ZCh(ZA[758], ZA[753], ZA[748]) + ZA[761]) + ZR26(ZA[758]);
-    ZA[759] = ZMa(ZA[750], ZA[743], ZA[755]) + ZR30(ZA[755]);
-    ZA[610] = ZA[566] + 0xbf597fc7U;
-    
-    ZA[567] = ZR15(ZA[554]) + ZA[482];
-    ZA[766] = ZA[748] + ZA[610];
-    ZA[763] = ZA[743] + ZA[762];
-    ZA[760] = ZA[757] + ZA[759];
-    
-    ZA[767] = (ZCh(ZA[763], ZA[758], ZA[753]) + ZA[766]) + ZR26(ZA[763]);
-    ZA[764] = ZMa(ZA[755], ZA[750], ZA[760]) + ZR30(ZA[760]);
-    ZA[611] = ZA[567] + 0xc6e00bf3U;
-    
-    ZA[614] = ZR15(ZA[566]) + ZA[528];
-    ZA[771] = ZA[753] + ZA[611];
-    ZA[768] = ZA[750] + ZA[767];
-    ZA[765] = ZA[762] + ZA[764];
-    
-    ZA[772] = (ZCh(ZA[768], ZA[763], ZA[758]) + ZA[771]) + ZR26(ZA[768]);
-    ZA[769] = ZMa(ZA[760], ZA[755], ZA[765]) + ZR30(ZA[765]);
-    ZA[612] = ZA[502] + 0x00400022U;
-    ZA[615] = ZA[614] + 0xd5a79147U;
-    
-    ZA[616] = ZR15(ZA[567]) + ZA[612];
-    ZA[504] = ZR25(ZA[497]) + 0x00000100U;
-    ZA[776] = ZA[758] + ZA[615];
-    ZA[773] = ZA[755] + ZA[772];
-    ZA[770] = ZA[767] + ZA[769];
-    
-    ZA[777] = (ZCh(ZA[773], ZA[768], ZA[763]) + ZA[776]) + ZR26(ZA[773]);
-    ZA[774] = ZMa(ZA[765], ZA[760], ZA[770]) + ZR30(ZA[770]);
-    ZA[492] = ZR25(ZA[471]);
-    ZA[618] = ZA[537] + ZA[504];
-    ZA[617] = ZA[616] + 0x06ca6351U;
-    
-    ZA[619] = ZR15(ZA[614]) + ZA[618];
-    ZA[781] = ZA[763] + ZA[617];
-    ZA[778] = ZA[760] + ZA[777];
-    ZA[775] = ZA[772] + ZA[774];
-    ZA[505] = ZA[492] + ZA[497];
-    
-    ZA[782] = (ZCh(ZA[778], ZA[773], ZA[768]) + ZA[781]) + ZR26(ZA[778]);
-    ZA[779] = ZMa(ZA[770], ZA[765], ZA[775]) + ZR30(ZA[775]);
-    ZA[621] = ZA[505] + ZA[546];
-    ZA[620] = ZA[619] + 0x14292967U;
-    
-    ZA[622] = ZR15(ZA[616]) + ZA[621];
-    ZA[625] = ZR25(ZA[501]);
-    ZA[786] = ZA[768] + ZA[620];
-    ZA[783] = ZA[765] + ZA[782];
-    ZA[624] = ZA[554] + ZA[471];
-    ZA[780] = ZA[777] + ZA[779];
-    
-    ZA[787] = (ZCh(ZA[783], ZA[778], ZA[773]) + ZA[786]) + ZR26(ZA[783]);
-    ZA[784] = ZMa(ZA[775], ZA[770], ZA[780]) + ZR30(ZA[780]);
-    ZA[493] = ZR25(ZA[474]);
-    ZA[626] = ZA[625] + ZA[624];
-    ZA[623] = ZA[622] + 0x27b70a85U;
-    
-    ZA[627] = ZR15(ZA[619]) + ZA[626];
-    ZA[791] = ZA[773] + ZA[623];
-    ZA[788] = ZA[770] + ZA[787];
-    ZA[785] = ZA[782] + ZA[784];
-    ZA[629] = ZA[493] + ZA[501];
-    
-    ZA[792] = (ZCh(ZA[788], ZA[783], ZA[778]) + ZA[791]) + ZR26(ZA[788]);
-    ZA[789] = ZMa(ZA[780], ZA[775], ZA[785]) + ZR30(ZA[785]);
-    ZA[630] = ZA[566] + ZA[629];
-    ZA[628] = ZA[627] + 0x2e1b2138U;
-    
-    ZA[634] = ZR25(ZA[518]) + ZA[474];
-    ZA[631] = ZR15(ZA[622]) + ZA[630];
-    ZA[796] = ZA[778] + ZA[628];
-    ZA[793] = ZA[775] + ZA[792];
-    ZA[790] = ZA[787] + ZA[789];
-    
-    ZA[797] = (ZCh(ZA[793], ZA[788], ZA[783]) + ZA[796]) + ZR26(ZA[793]);
-    ZA[794] = ZMa(ZA[785], ZA[780], ZA[790]) + ZR30(ZA[790]);
-    ZA[491] = ZR25(ZA[482]);
-    ZA[635] = ZA[567] + ZA[634];
-    ZA[633] = ZA[631] + 0x4d2c6dfcU;
-    
-    ZA[636] = ZR15(ZA[627]) + ZA[635];
-    ZA[801] = ZA[783] + ZA[633];
-    ZA[798] = ZA[780] + ZA[797];
-    ZA[795] = ZA[792] + ZA[794];
-    ZA[638] = ZA[491] + ZA[518];
-    
-    ZA[802] = (ZCh(ZA[798], ZA[793], ZA[788]) + ZA[801]) + ZR26(ZA[798]);
-    ZA[799] = ZMa(ZA[790], ZA[785], ZA[795]) + ZR30(ZA[795]);
-    ZA[639] = ZA[638] + ZA[614];
-    ZA[637] = ZA[636] + 0x53380d13U;
-    
-    ZA[642] = ZR25(ZA[528]) + ZA[482];
-    ZA[640] = ZR15(ZA[631]) + ZA[639];
-    ZA[806] = ZA[788] + ZA[637];
-    ZA[803] = ZA[785] + ZA[802];
-    ZA[800] = ZA[797] + ZA[799];
-    
-    ZA[807] = (ZCh(ZA[803], ZA[798], ZA[793]) + ZA[806]) + ZR26(ZA[803]);
-    ZA[804] = ZMa(ZA[795], ZA[790], ZA[800]) + ZR30(ZA[800]);
-    ZA[643] = ZA[616] + ZA[642];
-    ZA[641] = ZA[640] + 0x650a7354U;
-    
-    ZA[646] = ZR25(ZA[502]) + ZA[528];
-    ZA[644] = ZR15(ZA[636]) + ZA[643];
-    ZA[811] = ZA[793] + ZA[641];
-    ZA[808] = ZA[790] + ZA[807];
-    ZA[805] = ZA[802] + ZA[804];
-    
-    ZA[812] = (ZCh(ZA[808], ZA[803], ZA[798]) + ZA[811]) + ZR26(ZA[808]);
-    ZA[809] = ZMa(ZA[800], ZA[795], ZA[805]) + ZR30(ZA[805]);
-    ZA[647] = ZA[619] + ZA[646];
-    ZA[645] = ZA[644] + 0x766a0abbU;
-    
-    ZA[650] = ZR25(ZA[537]) + ZA[502];
-    ZA[648] = ZR15(ZA[640]) + ZA[647];
-    ZA[816] = ZA[798] + ZA[645];
-    ZA[813] = ZA[795] + ZA[812];
-    ZA[810] = ZA[807] + ZA[809];
-    
-    ZA[817] = (ZCh(ZA[813], ZA[808], ZA[803]) + ZA[816]) + ZR26(ZA[813]);
-    ZA[814] = ZMa(ZA[805], ZA[800], ZA[810]) + ZR30(ZA[810]);
-    ZA[925] = ZA[622] + ZA[650];
-    ZA[649] = ZA[648] + 0x81c2c92eU;
-    
-    ZA[653] = ZR25(ZA[546]) + ZA[537];
-    ZA[651] = ZR15(ZA[644]) + ZA[925];
-    ZA[821] = ZA[803] + ZA[649];
-    ZA[818] = ZA[800] + ZA[817];
-    ZA[815] = ZA[812] + ZA[814];
-    
-    ZA[822] = (ZCh(ZA[818], ZA[813], ZA[808]) + ZA[821]) + ZR26(ZA[818]);
-    ZA[819] = ZMa(ZA[810], ZA[805], ZA[815]) + ZR30(ZA[815]);
-    ZA[654] = ZA[627] + ZA[653];
-    ZA[652] = ZA[651] + 0x92722c85U;
-    
-    ZA[657] = ZR25(ZA[554]) + ZA[546];
-    ZA[655] = ZR15(ZA[648]) + ZA[654];
-    ZA[826] = ZA[808] + ZA[652];
-    ZA[823] = ZA[805] + ZA[822];
-    ZA[820] = ZA[817] + ZA[819];
-    
-    ZA[827] = (ZCh(ZA[823], ZA[818], ZA[813]) + ZA[826]) + ZR26(ZA[823]);
-    ZA[824] = ZMa(ZA[815], ZA[810], ZA[820]) + ZR30(ZA[820]);
-    ZA[658] = ZA[631] + ZA[657];
-    ZA[656] = ZA[655] + 0xa2bfe8a1U;
-    
-    ZA[661] = ZR25(ZA[566]) + ZA[554];
-    ZA[659] = ZR15(ZA[651]) + ZA[658];
-    ZA[831] = ZA[813] + ZA[656];
-    ZA[828] = ZA[810] + ZA[827];
-    ZA[825] = ZA[822] + ZA[824];
-    
-    ZA[832] = (ZCh(ZA[828], ZA[823], ZA[818]) + ZA[831]) + ZR26(ZA[828]);
-    ZA[829] = ZMa(ZA[820], ZA[815], ZA[825]) + ZR30(ZA[825]);
-    ZA[662] = ZA[636] + ZA[661];
-    ZA[660] = ZA[659] + 0xa81a664bU;
-    
-    ZA[665] = ZR25(ZA[567]) + ZA[566];
-    ZA[663] = ZR15(ZA[655]) + ZA[662];
-    ZA[836] = ZA[818] + ZA[660];
-    ZA[833] = ZA[815] + ZA[832];
-    ZA[830] = ZA[827] + ZA[829];
-    
-    ZA[837] = (ZCh(ZA[833], ZA[828], ZA[823]) + ZA[836]) + ZR26(ZA[833]);
-    ZA[834] = ZMa(ZA[825], ZA[820], ZA[830]) + ZR30(ZA[830]);
-    ZA[666] = ZA[640] + ZA[665];
-    ZA[664] = ZA[663] + 0xc24b8b70U;
-    
-    ZA[669] = ZR25(ZA[614]) + ZA[567];
-    ZA[667] = ZR15(ZA[659]) + ZA[666];
-    ZA[841] = ZA[823] + ZA[664];
-    ZA[838] = ZA[820] + ZA[837];
-    ZA[835] = ZA[832] + ZA[834];
-    
-    ZA[842] = (ZCh(ZA[838], ZA[833], ZA[828]) + ZA[841]) + ZR26(ZA[838]);
-    ZA[839] = ZMa(ZA[830], ZA[825], ZA[835]) + ZR30(ZA[835]);
-    ZA[670] = ZA[644] + ZA[669];
-    ZA[668] = ZA[667] + 0xc76c51a3U;
-    
-    ZA[677] = ZR25(ZA[616]) + ZA[614];
-    ZA[671] = ZR15(ZA[663]) + ZA[670];
-    ZA[846] = ZA[828] + ZA[668];
-    ZA[843] = ZA[825] + ZA[842];
-    ZA[840] = ZA[837] + ZA[839];
-    
-    ZA[847] = (ZCh(ZA[843], ZA[838], ZA[833]) + ZA[846]) + ZR26(ZA[843]);
-    ZA[844] = ZMa(ZA[835], ZA[830], ZA[840]) + ZR30(ZA[840]);
-    ZA[678] = ZA[648] + ZA[677];
-    ZA[676] = ZA[671] + 0xd192e819U;
-    
-    ZA[682] = ZR25(ZA[619]) + ZA[616];
-    ZA[679] = ZR15(ZA[667]) + ZA[678];
-    ZA[851] = ZA[833] + ZA[676];
-    ZA[848] = ZA[830] + ZA[847];
-    ZA[845] = ZA[842] + ZA[844];
-    
-    ZA[852] = (ZCh(ZA[848], ZA[843], ZA[838]) + ZA[851]) + ZR26(ZA[848]);
-    ZA[849] = ZMa(ZA[840], ZA[835], ZA[845]) + ZR30(ZA[845]);
-    ZA[683] = ZA[651] + ZA[682];
-    ZA[680] = ZA[679] + 0xd6990624U;
-    
-    ZA[686] = ZR25(ZA[622]) + ZA[619];
-    ZA[684] = ZR15(ZA[671]) + ZA[683];
-    ZA[856] = ZA[838] + ZA[680];
-    ZA[853] = ZA[835] + ZA[852];
-    ZA[850] = ZA[847] + ZA[849];
-    
-    ZA[857] = (ZCh(ZA[853], ZA[848], ZA[843]) + ZA[856]) + ZR26(ZA[853]);
-    ZA[854] = ZMa(ZA[845], ZA[840], ZA[850]) + ZR30(ZA[850]);
-    ZA[687] = ZA[655] + ZA[686];
-    ZA[685] = ZA[684] + 0xf40e3585U;
-    
-    ZA[690] = ZR25(ZA[627]) + ZA[622];
-    ZA[688] = ZR15(ZA[679]) + ZA[687];
-    ZA[861] = ZA[843] + ZA[685];
-    ZA[858] = ZA[840] + ZA[857];
-    ZA[855] = ZA[852] + ZA[854];
-    
-    ZA[862] = (ZCh(ZA[858], ZA[853], ZA[848]) + ZA[861]) + ZR26(ZA[858]);
-    ZA[859] = ZMa(ZA[850], ZA[845], ZA[855]) + ZR30(ZA[855]);
-    ZA[691] = ZA[659] + ZA[690];
-    ZA[689] = ZA[688] + 0x106aa070U;
-    
-    ZA[694] = ZR25(ZA[631]) + ZA[627];
-    ZA[692] = ZR15(ZA[684]) + ZA[691];
-    ZA[866] = ZA[848] + ZA[689];
-    ZA[863] = ZA[845] + ZA[862];
-    ZA[860] = ZA[857] + ZA[859];
-    
-    ZA[867] = (ZCh(ZA[863], ZA[858], ZA[853]) + ZA[866]) + ZR26(ZA[863]);
-    ZA[864] = ZMa(ZA[855], ZA[850], ZA[860]) + ZR30(ZA[860]);
-    ZA[695] = ZA[663] + ZA[694];
-    ZA[693] = ZA[692] + 0x19a4c116U;
-    
-    ZA[698] = ZR25(ZA[636]) + ZA[631];
-    ZA[696] = ZR15(ZA[688]) + ZA[695];
-    ZA[871] = ZA[853] + ZA[693];
-    ZA[868] = ZA[850] + ZA[867];
-    ZA[865] = ZA[862] + ZA[864];
-    
-    ZA[873] = (ZCh(ZA[868], ZA[863], ZA[858]) + ZA[871]) + ZR26(ZA[868]);
-    ZA[869] = ZMa(ZA[860], ZA[855], ZA[865]) + ZR30(ZA[865]);
-    ZA[699] = ZA[667] + ZA[698];
-    ZA[697] = ZA[696] + 0x1e376c08U;
-    
-    ZA[700] = ZR15(ZA[692]) + ZA[699];
-    ZA[877] = ZA[858] + ZA[697];
-    ZA[874] = ZA[855] + ZA[873];
-    ZA[870] = ZA[867] + ZA[869];
-    
-    ZA[878] = (ZCh(ZA[874], ZA[868], ZA[863]) + ZA[877]) + ZR26(ZA[874]);
-    
-    ZA[704] = ZR15(ZA[696]) + ZA[671] + ZR25(ZA[640]) + ZA[636];
-    ZA[879] = ZA[860] + ZA[878];
-    ZA[876] = ZA[873] + ZMa(ZA[865], ZA[860], ZA[870]) + ZR30(ZA[870]);
-    
-    ZA[883] = (ZCh(ZA[879], ZA[874], ZA[868]) + ZA[863] + ZA[700] +
-		0x2748774cU) + ZR26(ZA[879]);
-    
-    ZA[708] = ZR15(ZA[700]) + ZA[679] + ZR25(ZA[644]) + ZA[640];
-    ZA[884] = ZA[865] + ZA[883];
-    ZA[881] = ZA[878] + ZMa(ZA[870], ZA[865], ZA[876]) + ZR30(ZA[876]);
-    
-    ZA[888] = (ZCh(ZA[884], ZA[879], ZA[874]) + ZA[868] + ZA[704] +
-		0x34b0bcb5U) + ZR26(ZA[884]);
-    
-    ZA[712] = ZR15(ZA[704]) + ZA[684] + ZR25(ZA[648]) + ZA[644];
-    ZA[889] = ZA[870] + ZA[888];
-    ZA[886] = ZA[883] + ZMa(ZA[876], ZA[870], ZA[881]) + ZR30(ZA[881]);
-    
-    ZA[893] = (ZCh(ZA[889], ZA[884], ZA[879]) + ZA[874] + ZA[708] +
-		0x391c0cb3U) + ZR26(ZA[889]);
-    
-    ZA[716] = ZR15(ZA[708]) + ZA[688] + ZR25(ZA[651]) + ZA[648];
-    ZA[894] = ZA[876] + ZA[893];
-    ZA[891] = ZA[888] + ZMa(ZA[881], ZA[876], ZA[886]) + ZR30(ZA[886]);
-    
-    ZA[898] = (ZCh(ZA[894], ZA[889], ZA[884]) + ZA[879] + ZA[712] +
-		0x4ed8aa4aU) + ZR26(ZA[894]);
-    
-    ZA[720] = ZR15(ZA[712]) + ZA[692] + ZR25(ZA[655]) + ZA[651];
-    ZA[899] = ZA[881] + ZA[898];
-    ZA[896] = ZA[893] + ZMa(ZA[886], ZA[881], ZA[891]) + ZR30(ZA[891]);
-    
-    ZA[903] = (ZCh(ZA[899], ZA[894], ZA[889]) + ZA[884] + ZA[716] +
-		0x5b9cca4fU) + ZR26(ZA[899]);
-    
-    ZA[724] = ZR15(ZA[716]) + ZA[696] + ZR25(ZA[659]) + ZA[655];
-    ZA[904] = ZA[886] + ZA[903];
-    ZA[901] = ZA[898] + ZMa(ZA[891], ZA[886], ZA[896]) + ZR30(ZA[896]);
-    
-    ZA[908] = (ZCh(ZA[904], ZA[899], ZA[894]) + ZA[889] + ZA[720] +
-		0x682e6ff3U) + ZR26(ZA[904]);
-    
-    ZA[727] = ZR15(ZA[720]) + ZA[700] + ZR25(ZA[663]) + ZA[659];
-    ZA[909] = ZA[891] + ZA[908];
-    ZA[906] = ZA[903] + ZMa(ZA[896], ZA[891], ZA[901]) + ZR30(ZA[901]);
-    
-    ZA[913] = (ZCh(ZA[909], ZA[904], ZA[899]) + ZA[894] + ZA[724] +
-		0x748f82eeU) + ZR26(ZA[909]);
-    ZA[730] = ZR15(ZA[724]) + ZA[704] + ZR25(ZA[667]) + ZA[663];
-    
-    ZA[914] = ZA[896] + ZA[913];
-    ZA[911] = ZA[908] + ZMa(ZA[901], ZA[896], ZA[906]) + ZR30(ZA[906]);
-    
-    ZA[918] = (ZCh(ZA[914], ZA[909], ZA[904]) + ZA[899] + ZA[901] + ZA[727] +
-		0x78a5636fU) + ZR26(ZA[914]);
-    
-    ZA[920] = (ZCh(ZA[918], ZA[914], ZA[909]) + ZA[906] + ZA[904] + ZA[730] +
-		0x84c87814U) + ZR26(ZA[918]);
-    
-    ZA[922] = (ZCh(ZA[920], ZA[918], ZA[914]) + ZA[911] + ZA[909] +
-		ZR15(ZA[727]) + ZA[708] + ZR25(ZA[671]) + ZA[667] +
-		0x8cc70208U) +
-		ZR26(ZA[920]);
-    
-    ZA[924] = (ZCh(ZA[922], ZA[920], ZA[918]) +
-		ZA[913] +
-		ZMa(ZA[906], ZA[901], ZA[911]) + ZR30(ZA[911]) +
-		ZA[914] +
-		ZR15(ZA[730]) +
-		ZA[712] +
-		ZR25(ZA[679]) +
-		ZA[671]) +
-		ZR26(ZA[922]);
+ZA[15]=Znonce+PreVal4_state0;
+ZA[16]=(ZCh(ZA[15],b1,c1)+d1)+ZR26(ZA[15]);
+ZA[26]=Znonce+PreVal4_T1;
+ZA[17]=ZA[16]+h1;
+ZA[19]=(ZCh(ZA[17],ZA[15],b1)+c1_plus_k5)+ZR26(ZA[17]);
+ZA[28]=ZMa(f1,g1,ZA[26])+ZR30(ZA[26])+ZA[16];
+ZA[20]=ZA[19]+g1;
+ZA[22]=(ZCh(ZA[20],ZA[17],ZA[15])+b1_plus_k6)+ZR26(ZA[20]);
+ZA[29]=ZMa(ZA[26],f1,ZA[28])+ZR30(ZA[28])+ZA[19];
+ZA[23]=ZA[22]+f1;
+ZA[30]=ZMa(ZA[28],ZA[26],ZA[29])+ZR30(ZA[29])+ZA[22];
+ZA[181]=Znonce+PreVal4_state0_k7+ZCh(ZA[23],ZA[20],ZA[17])+ZR26(ZA[23]);
+ZA[182]=ZA[181]+ZA[26];
+ZA[183]=ZA[181]+ZMa(ZA[29],ZA[28],ZA[30])+ZR30(ZA[30]);
+ZA[186]=(ZCh(ZA[182],ZA[23],ZA[20])+ZA[17]+0xd807aa98U)+ZR26(ZA[182]);
+ZA[187]=ZA[186]+ZA[28];
+ZA[188]=ZA[186]+ZMa(ZA[30],ZA[29],ZA[183])+ZR30(ZA[183]);
+ZA[191]=(ZCh(ZA[187],ZA[182],ZA[23])+ZA[20]+0x12835b01U)+ZR26(ZA[187]);
+ZA[192]=ZA[191]+ZA[29];
+ZA[193]=ZA[191]+ZMa(ZA[183],ZA[30],ZA[188])+ZR30(ZA[188]);
+ZA[196]=(ZCh(ZA[192],ZA[187],ZA[182])+ZA[23]+0x243185beU)+ZR26(ZA[192]);
+ZA[197]=ZA[196]+ZA[30];
+ZA[198]=ZA[196]+ZMa(ZA[188],ZA[183],ZA[193])+ZR30(ZA[193]);
+ZA[201]=(ZCh(ZA[197],ZA[192],ZA[187])+ZA[182]+0x550c7dc3U)+ZR26(ZA[197]);
+ZA[202]=ZA[201]+ZA[183];
+ZA[203]=ZA[201]+ZMa(ZA[193],ZA[188],ZA[198])+ZR30(ZA[198]);
+ZA[206]=(ZCh(ZA[202],ZA[197],ZA[192])+ZA[187]+0x72be5d74U)+ZR26(ZA[202]);
+ZA[207]=ZA[206]+ZA[188];
+ZA[208]=ZA[206]+ZMa(ZA[198],ZA[193],ZA[203])+ZR30(ZA[203]);
+ZA[211]=(ZCh(ZA[207],ZA[202],ZA[197])+ZA[192]+0x80deb1feU)+ZR26(ZA[207]);
+ZA[212]=ZA[193]+ZA[211];
+ZA[213]=ZA[211]+ZMa(ZA[203],ZA[198],ZA[208])+ZR30(ZA[208]);
+ZA[216]=(ZCh(ZA[212],ZA[207],ZA[202])+ZA[197]+0x9bdc06a7U)+ZR26(ZA[212]);
+ZA[217]=ZA[198]+ZA[216];
+ZA[218]=ZA[216]+ZMa(ZA[208],ZA[203],ZA[213])+ZR30(ZA[213]);
+ZA[220]=(ZCh(ZA[217],ZA[212],ZA[207])+ZA[202]+0xc19bf3f4U)+ZR26(ZA[217]);
+ZA[222]=ZA[203]+ZA[220];
+ZA[223]=ZA[220]+ZMa(ZA[213],ZA[208],ZA[218])+ZR30(ZA[218]);
+ZA[226]=(ZCh(ZA[222],ZA[217],ZA[212])+ZA[207]+W16_plus_K16)+ZR26(ZA[222]);
+ZA[0]=ZR25(Znonce)+W18;
+ZA[228]=ZA[226]+ZMa(ZA[218],ZA[213],ZA[223])+ZR30(ZA[223]);
+ZA[227]=ZA[208]+ZA[226];
+ZA[231]=(ZCh(ZA[227],ZA[222],ZA[217])+ZA[212]+W17_plus_K17)+ZR26(ZA[227]);
+ZA[232]=ZA[213]+ZA[231];
+ZA[233]=ZA[231]+ZMa(ZA[223],ZA[218],ZA[228])+ZR30(ZA[228]);
+ZA[32]=Znonce+W19;
+ZA[236]=(ZCh(ZA[232],ZA[227],ZA[222])+ZA[217]+ZA[0]+0x0fc19dc6U)+ZR26(ZA[232]);
+ZA[3]=ZR15(ZA[0])+0x80000000U;
+ZA[238]=ZA[236]+ZMa(ZA[228],ZA[223],ZA[233])+ZR30(ZA[233]);
+ZA[237]=ZA[218]+ZA[236];
+ZA[241]=(ZCh(ZA[237],ZA[232],ZA[227])+ZA[222]+ZA[32]+0x240ca1ccU)+ZR26(ZA[237]);
+ZA[35]=ZR15(ZA[32]);
+ZA[243]=ZA[241]+ZMa(ZA[233],ZA[228],ZA[238])+ZR30(ZA[238]);
+ZA[242]=ZA[223]+ZA[241];
+ZA[246]=(ZCh(ZA[242],ZA[237],ZA[232])+ZA[227]+ZA[3]+0x2de92c6fU)+ZR26(ZA[242]);
+ZA[7]=ZR15(ZA[3])+0x00000280U;
+ZA[248]=ZA[246]+ZMa(ZA[238],ZA[233],ZA[243])+ZR30(ZA[243]);
+ZA[247]=ZA[228]+ZA[246];
+ZA[251]=(ZCh(ZA[247],ZA[242],ZA[237])+ZA[232]+ZA[35]+0x4a7484aaU)+ZR26(ZA[247]);
+ZA[38]=ZR15(ZA[35])+W16;
+ZA[253]=ZA[251]+ZMa(ZA[243],ZA[238],ZA[248])+ZR30(ZA[248]);
+ZA[252]=ZA[233]+ZA[251];
+ZA[256]=(ZCh(ZA[252],ZA[247],ZA[242])+ZA[237]+ZA[7]+0x5cb0a9dcU)+ZR26(ZA[252]);
+ZA[10]=ZR15(ZA[7])+W17;
+ZA[258]=ZA[256]+ZMa(ZA[248],ZA[243],ZA[253])+ZR30(ZA[253]);
+ZA[257]=ZA[238]+ZA[256];
+ZA[261]=(ZCh(ZA[257],ZA[252],ZA[247])+ZA[242]+ZA[38]+0x76f988daU)+ZR26(ZA[257]);
+ZA[43]=ZR15(ZA[38])+ZA[0];
+ZA[263]=ZA[261]+ZMa(ZA[253],ZA[248],ZA[258])+ZR30(ZA[258]);
+ZA[262]=ZA[243]+ZA[261];
+ZA[266]=(ZCh(ZA[262],ZA[257],ZA[252])+ZA[247]+ZA[10]+0x983e5152U)+ZR26(ZA[262]);
+ZA[52]=ZR15(ZA[10])+ZA[32];
+ZA[267]=ZA[248]+ZA[266];
+ZA[268]=ZA[266]+ZMa(ZA[258],ZA[253],ZA[263])+ZR30(ZA[263]);
+ZA[271]=(ZCh(ZA[267],ZA[262],ZA[257])+ZA[252]+ZA[43]+0xa831c66dU)+ZR26(ZA[267]);
+ZA[48]=ZR15(ZA[43])+ZA[3];
+ZA[273]=ZA[271]+ZMa(ZA[263],ZA[258],ZA[268])+ZR30(ZA[268]);
+ZA[272]=ZA[253]+ZA[271];
+ZA[276]=(ZCh(ZA[272],ZA[267],ZA[262])+ZA[257]+ZA[52]+0xb00327c8U)+ZR26(ZA[272]);
+ZA[61]=ZR15(ZA[52])+ZA[35];
+ZA[278]=ZA[276]+ZMa(ZA[268],ZA[263],ZA[273])+ZR30(ZA[273]);
+ZA[277]=ZA[258]+ZA[276];
+ZA[281]=(ZCh(ZA[277],ZA[272],ZA[267])+ZA[262]+ZA[48]+0xbf597fc7U)+ZR26(ZA[277]);
+ZA[53]=ZR15(ZA[48])+ZA[7];
+ZA[283]=ZA[281]+ZMa(ZA[273],ZA[268],ZA[278])+ZR30(ZA[278]);
+ZA[282]=ZA[263]+ZA[281];
+ZA[286]=(ZCh(ZA[282],ZA[277],ZA[272])+ZA[267]+ZA[61]+0xc6e00bf3U)+ZR26(ZA[282]);
+ZA[66]=ZR15(ZA[61])+ZA[38]+0x00A00055U;
+ZA[288]=ZA[286]+ZMa(ZA[278],ZA[273],ZA[283])+ZR30(ZA[283]);
+ZA[287]=ZA[268]+ZA[286];
+ZA[291]=(ZCh(ZA[287],ZA[282],ZA[277])+ZA[272]+ZA[53]+0xd5a79147U)+ZR26(ZA[287]);
+ZA[67]=ZR15(ZA[53])+ZA[10]+W31;
+ZA[293]=ZA[291]+ZMa(ZA[283],ZA[278],ZA[288])+ZR30(ZA[288]);
+ZA[292]=ZA[273]+ZA[291];
+ZA[296]=(ZCh(ZA[292],ZA[287],ZA[282])+ZA[277]+ZA[66]+0x06ca6351U)+ZR26(ZA[292]);
+ZA[75]=ZR15(ZA[66])+ZA[43]+W32;
+ZA[298]=ZA[296]+ZMa(ZA[288],ZA[283],ZA[293])+ZR30(ZA[293]);
+ZA[297]=ZA[278]+ZA[296];
+ZA[301]=(ZCh(ZA[297],ZA[292],ZA[287])+ZA[282]+ZA[67]+0x14292967U)+ZR26(ZA[297]);
+ZA[70]=ZR15(ZA[67])+ZA[52]+ZR25(ZA[0])+W17;
+ZA[302]=ZA[283]+ZA[301];
+ZA[303]=ZA[301]+ZMa(ZA[293],ZA[288],ZA[298])+ZR30(ZA[298]);
+ZA[306]=(ZCh(ZA[302],ZA[297],ZA[292])+ZA[287]+ZA[75]+0x27b70a85U)+ZR26(ZA[302]);
+ZA[78]=ZR15(ZA[75])+ZR25(ZA[32])+ZA[0]+ZA[48];
+ZA[308]=ZA[306]+ZMa(ZA[298],ZA[293],ZA[303])+ZR30(ZA[303]);
+ZA[307]=ZA[288]+ZA[306];
+ZA[311]=(ZCh(ZA[307],ZA[302],ZA[297])+ZA[292]+ZA[70]+0x2e1b2138U)+ZR26(ZA[307]);
+ZA[79]=ZR15(ZA[70])+ZA[32]+ZR25(ZA[3])+ZA[61];
+ZA[312]=ZA[293]+ZA[311];
+ZA[313]=ZA[311]+ZMa(ZA[303],ZA[298],ZA[308])+ZR30(ZA[308]);
+ZA[316]=(ZCh(ZA[312],ZA[307],ZA[302])+ZA[297]+ZA[78]+0x4d2c6dfcU)+ZR26(ZA[312]);
+ZA[87]=ZR15(ZA[78])+ZR25(ZA[35])+ZA[3]+ZA[53];
+ZA[318]=ZA[316]+ZMa(ZA[308],ZA[303],ZA[313])+ZR30(ZA[313]);
+ZA[317]=ZA[298]+ZA[316];
+ZA[321]=(ZCh(ZA[317],ZA[312],ZA[307])+ZA[302]+ZA[79]+0x53380d13U)+ZR26(ZA[317]);
+ZA[88]=ZR15(ZA[79])+ZA[35]+ZR25(ZA[7])+ZA[66];
+ZA[322]=ZA[303]+ZA[321];
+ZA[323]=ZA[321]+ZMa(ZA[313],ZA[308],ZA[318])+ZR30(ZA[318]);
+ZA[326]=(ZCh(ZA[322],ZA[317],ZA[312])+ZA[307]+ZA[87]+0x650a7354U)+ZR26(ZA[322]);
+ZA[94]=ZR15(ZA[87])+ZR25(ZA[38])+ZA[7]+ZA[67];
+ZA[328]=ZA[326]+ZMa(ZA[318],ZA[313],ZA[323])+ZR30(ZA[323]);
+ZA[327]=ZA[308]+ZA[326];
+ZA[331]=(ZCh(ZA[327],ZA[322],ZA[317])+ZA[312]+ZA[88]+0x766a0abbU)+ZR26(ZA[327]);
+ZA[95]=ZR15(ZA[88])+ZA[38]+ZR25(ZA[10])+ZA[75];
+ZA[332]=ZA[313]+ZA[331];
+ZA[333]=ZA[331]+ZMa(ZA[323],ZA[318],ZA[328])+ZR30(ZA[328]);
+ZA[336]=(ZCh(ZA[332],ZA[327],ZA[322])+ZA[317]+ZA[94]+0x81c2c92eU)+ZR26(ZA[332]);
+ZA[102]=ZR15(ZA[94])+ZR25(ZA[43])+ZA[10]+ZA[70];
+ZA[337]=ZA[318]+ZA[336];
+ZA[338]=ZA[336]+ZMa(ZA[328],ZA[323],ZA[333])+ZR30(ZA[333]);
+ZA[341]=(ZCh(ZA[337],ZA[332],ZA[327])+ZA[322]+ZA[95]+0x92722c85U)+ZR26(ZA[337]);
+ZA[103]=ZR15(ZA[95])+ZR25(ZA[52])+ZA[43]+ZA[78];
+ZA[342]=ZA[323]+ZA[341];
+ZA[343]=ZA[341]+ZMa(ZA[333],ZA[328],ZA[338])+ZR30(ZA[338]);
+ZA[346]=(ZCh(ZA[342],ZA[337],ZA[332])+ZA[327]+ZA[102]+0xa2bfe8a1U)+ZR26(ZA[342]);
+ZA[110]=ZR15(ZA[102])+ZR25(ZA[48])+ZA[52]+ZA[79];
+ZA[347]=ZA[328]+ZA[346];
+ZA[348]=ZA[346]+ZMa(ZA[338],ZA[333],ZA[343])+ZR30(ZA[343]);
+ZA[351]=(ZCh(ZA[347],ZA[342],ZA[337])+ZA[332]+ZA[103]+0xa81a664bU)+ZR26(ZA[347]);
+ZA[111]=ZR15(ZA[103])+ZA[87]+ZR25(ZA[61])+ZA[48];
+ZA[353]=ZA[351]+ZMa(ZA[343],ZA[338],ZA[348])+ZR30(ZA[348]);
+ZA[352]=ZA[333]+ZA[351];
+ZA[356]=(ZCh(ZA[352],ZA[347],ZA[342])+ZA[337]+ZA[110]+0xc24b8b70U)+ZR26(ZA[352]);
+ZA[118]=ZR15(ZA[110])+ZA[88]+ZR25(ZA[53])+ZA[61];
+ZA[357]=ZA[338]+ZA[356];
+ZA[358]=ZA[356]+ZMa(ZA[348],ZA[343],ZA[353])+ZR30(ZA[353]);
+ZA[361]=(ZCh(ZA[357],ZA[352],ZA[347])+ZA[342]+ZA[111]+0xc76c51a3U)+ZR26(ZA[357]);
+ZA[119]=ZR15(ZA[111])+ZR25(ZA[66])+ZA[53]+ZA[94];
+ZA[362]=ZA[343]+ZA[361];
+ZA[363]=ZA[361]+ZMa(ZA[353],ZA[348],ZA[358])+ZR30(ZA[358]);
+ZA[366]=(ZCh(ZA[362],ZA[357],ZA[352])+ZA[347]+ZA[118]+0xd192e819U)+ZR26(ZA[362]);
+ZA[126]=ZR15(ZA[118])+ZR25(ZA[67])+ZA[66]+ZA[95];
+ZA[367]=ZA[348]+ZA[366];
+ZA[368]=ZA[366]+ZMa(ZA[358],ZA[353],ZA[363])+ZR30(ZA[363]);
+ZA[371]=(ZCh(ZA[367],ZA[362],ZA[357])+ZA[352]+ZA[119]+0xd6990624U)+ZR26(ZA[367]);
+ZA[127]=ZR15(ZA[119])+ZA[102]+ZR25(ZA[75])+ZA[67];
+ZA[372]=ZA[353]+ZA[371];
+ZA[373]=ZA[371]+ZMa(ZA[363],ZA[358],ZA[368])+ZR30(ZA[368]);
+ZA[376]=(ZCh(ZA[372],ZA[367],ZA[362])+ZA[357]+ZA[126]+0xf40e3585U)+ZR26(ZA[372]);
+ZA[134]=ZR15(ZA[126])+ZA[103]+ZR25(ZA[70])+ZA[75];
+ZA[377]=ZA[358]+ZA[376];
+ZA[378]=ZA[376]+ZMa(ZA[368],ZA[363],ZA[373])+ZR30(ZA[373]);
+ZA[381]=(ZCh(ZA[377],ZA[372],ZA[367])+ZA[362]+ZA[127]+0x106aa070U)+ZR26(ZA[377]);
+ZA[135]=ZR15(ZA[127])+ZA[110]+ZR25(ZA[78])+ZA[70];
+ZA[382]=ZA[363]+ZA[381];
+ZA[383]=ZA[381]+ZMa(ZA[373],ZA[368],ZA[378])+ZR30(ZA[378]);
+ZA[386]=(ZCh(ZA[382],ZA[377],ZA[372])+ZA[367]+ZA[134]+0x19a4c116U)+ZR26(ZA[382]);
+ZA[142]=ZR15(ZA[134])+ZA[111]+ZR25(ZA[79])+ZA[78];
+ZA[387]=ZA[368]+ZA[386];
+ZA[388]=ZA[386]+ZMa(ZA[378],ZA[373],ZA[383])+ZR30(ZA[383]);
+ZA[391]=(ZCh(ZA[387],ZA[382],ZA[377])+ZA[372]+ZA[135]+0x1e376c08U)+ZR26(ZA[387]);
+ZA[143]=ZR15(ZA[135])+ZA[118]+ZR25(ZA[87])+ZA[79];
+ZA[392]=ZA[373]+ZA[391];
+ZA[393]=ZA[391]+ZMa(ZA[383],ZA[378],ZA[388])+ZR30(ZA[388]);
+ZA[396]=(ZCh(ZA[392],ZA[387],ZA[382])+ZA[377]+ZA[142]+0x2748774cU)+ZR26(ZA[392]);
+ZA[149]=ZR15(ZA[142])+ZA[119]+ZR25(ZA[88])+ZA[87];
+ZA[397]=ZA[378]+ZA[396];
+ZA[398]=ZA[396]+ZMa(ZA[388],ZA[383],ZA[393])+ZR30(ZA[393]);
+ZA[401]=(ZCh(ZA[397],ZA[392],ZA[387])+ZA[382]+ZA[143]+0x34b0bcb5U)+ZR26(ZA[397]);
+ZA[150]=ZR15(ZA[143])+ZA[126]+ZR25(ZA[94])+ZA[88];
+ZA[402]=ZA[383]+ZA[401];
+ZA[403]=ZA[401]+ZMa(ZA[393],ZA[388],ZA[398])+ZR30(ZA[398]);
+ZA[406]=(ZCh(ZA[402],ZA[397],ZA[392])+ZA[387]+ZA[149]+0x391c0cb3U)+ZR26(ZA[402]);
+ZA[155]=ZR15(ZA[149])+ZA[127]+ZR25(ZA[95])+ZA[94];
+ZA[407]=ZA[388]+ZA[406];
+ZA[408]=ZA[406]+ZMa(ZA[398],ZA[393],ZA[403])+ZR30(ZA[403]);
+ZA[411]=(ZCh(ZA[407],ZA[402],ZA[397])+ZA[392]+ZA[150]+0x4ed8aa4aU)+ZR26(ZA[407]);
+ZA[156]=ZR15(ZA[150])+ZA[134]+ZR25(ZA[102])+ZA[95];
+ZA[412]=ZA[393]+ZA[411];
+ZA[413]=ZA[411]+ZMa(ZA[403],ZA[398],ZA[408])+ZR30(ZA[408]);
+ZA[416]=(ZCh(ZA[412],ZA[407],ZA[402])+ZA[397]+ZA[155]+0x5b9cca4fU)+ZR26(ZA[412]);
+ZA[161]=ZR15(ZA[155])+ZA[135]+ZR25(ZA[103])+ZA[102];
+ZA[417]=ZA[398]+ZA[416];
+ZA[418]=ZA[416]+ZMa(ZA[408],ZA[403],ZA[413])+ZR30(ZA[413]);
+ZA[421]=(ZCh(ZA[417],ZA[412],ZA[407])+ZA[402]+ZA[156]+0x682e6ff3U)+ZR26(ZA[417]);
+ZA[162]=ZR15(ZA[156])+ZA[142]+ZR25(ZA[110])+ZA[103];
+ZA[422]=ZA[403]+ZA[421];
+ZA[423]=ZA[421]+ZMa(ZA[413],ZA[408],ZA[418])+ZR30(ZA[418]);
+ZA[426]=(ZCh(ZA[422],ZA[417],ZA[412])+ZA[407]+ZA[161]+0x748f82eeU)+ZR26(ZA[422]);
+ZA[167]=ZR15(ZA[161])+ZA[143]+ZR25(ZA[111])+ZA[110];
+ZA[427]=ZA[408]+ZA[426];
+ZA[428]=ZA[426]+ZMa(ZA[418],ZA[413],ZA[423])+ZR30(ZA[423]);
+ZA[431]=(ZCh(ZA[427],ZA[422],ZA[417])+ZA[412]+ZA[162]+0x78a5636fU)+ZR26(ZA[427]);
+ZA[168]=ZR15(ZA[162])+ZA[149]+ZR25(ZA[118])+ZA[111];
+ZA[432]=ZA[413]+ZA[431];
+ZA[433]=ZA[431]+ZMa(ZA[423],ZA[418],ZA[428])+ZR30(ZA[428]);
+ZA[436]=(ZCh(ZA[432],ZA[427],ZA[422])+ZA[417]+ZA[167]+0x84c87814U)+ZR26(ZA[432]);
+ZA[172]=ZR15(ZA[167])+ZA[150]+ZR25(ZA[119])+ZA[118];
+ZA[437]=ZA[418]+ZA[436];
+ZA[438]=ZA[436]+ZMa(ZA[428],ZA[423],ZA[433])+ZR30(ZA[433]);
+ZA[441]=(ZCh(ZA[437],ZA[432],ZA[427])+ZA[422]+ZA[168]+0x8cc70208U)+ZR26(ZA[437]);
+ZA[173]=ZR15(ZA[168])+ZA[155]+ZR25(ZA[126])+ZA[119];
+ZA[442]=ZA[423]+ZA[441];
+ZA[443]=ZA[441]+ZMa(ZA[433],ZA[428],ZA[438])+ZR30(ZA[438]);
+ZA[445]=(ZCh(ZA[442],ZA[437],ZA[432])+ZA[427]+ZA[172]+0x90befffaU)+ZR26(ZA[442]);
+ZA[446]=ZA[428]+ZA[445];
+ZA[447]=ZA[445]+ZMa(ZA[438],ZA[433],ZA[443])+ZR30(ZA[443]);
+ZA[449]=(ZCh(ZA[446],ZA[442],ZA[437])+ZA[432]+ZA[173]+0xa4506cebU)+ZR26(ZA[446]);
+ZA[451]=ZA[449]+ZMa(ZA[443],ZA[438],ZA[447])+ZR30(ZA[447]);
+ZA[450]=ZA[433]+ZA[449];
+ZA[453]=(ZCh(ZA[450],ZA[446],ZA[442])+ZA[437]+ZR15(ZA[172])+ZA[156]+ZR25(ZA[127])+ZA[126]+0xbef9a3f7U)+ZR26(ZA[450]);
+ZA[454]=ZA[438]+ZA[453];
+ZA[455]=ZA[453]+ZMa(ZA[447],ZA[443],ZA[451])+ZR30(ZA[451]);
+ZA[457]=(ZCh(ZA[454],ZA[450],ZA[446])+ZA[442]+ZR15(ZA[173])+ZA[161]+ZR25(ZA[134])+ZA[127]+0xc67178f2U)+ZR26(ZA[454]);
+ZA[461]=ZA[455]+state1;
+ZA[460]=ZA[457]+ZMa(ZA[451],ZA[447],ZA[455])+ZR30(ZA[455])+state0;
+ZA[495]=ZA[460]+0x98c7e2a2U;
+ZA[498]=(ZCh(ZA[495],0x510e527fU,0x9b05688cU)+ZA[461]+0x90bb1e3cU)+ZR26(ZA[495]);
+ZA[462]=ZA[451]+state2;
+ZA[496]=ZA[460]+0xfc08884dU;
+ZA[506]=ZA[498]+0x3c6ef372U;
+ZA[507]=(ZCh(ZA[506],ZA[495],0x510e527fU)+ZA[462]+0x50c6645bU)+ZR26(ZA[506]);
+ZA[463]=ZA[447]+state3;
+ZA[499]=ZA[498]+ZMa(0x6a09e667U,0xbb67ae85U,ZA[496])+ZR30(ZA[496]);
+ZA[508]=ZA[507]+0xbb67ae85U;
+ZA[510]=(ZCh(ZA[508],ZA[506],ZA[495])+ZA[463]+0x3ac42e24U)+ZR26(ZA[508]);
+ZA[464]=ZA[443]+ZA[457]+state4;
+ZA[511]=ZA[510]+0x6a09e667U;
+ZA[509]=ZMa(ZA[496],0x6a09e667U,ZA[499])+ZR30(ZA[499])+ZA[507];
+ZA[465]=ZA[454]+state5;
+ZA[514]=(ZCh(ZA[511],ZA[508],ZA[506])+ZA[464]+ZA[460]+0xd21ea4fdU)+ZR26(ZA[511]);
+ZA[516]=ZA[496]+ZA[514];
+ZA[513]=ZA[510]+ZMa(ZA[499],ZA[496],ZA[509])+ZR30(ZA[509]);
+ZA[466]=ZA[450]+state6;
+ZA[520]=(ZCh(ZA[516],ZA[511],ZA[508])+ZA[506]+ZA[465]+0x59f111f1U)+ZR26(ZA[516]);
+ZA[521]=ZA[499]+ZA[520];
+ZA[517]=ZA[514]+ZMa(ZA[509],ZA[499],ZA[513])+ZR30(ZA[513]);
+ZA[467]=ZA[446]+state7;
+ZA[525]=(ZCh(ZA[521],ZA[516],ZA[511])+ZA[508]+ZA[466]+0x923f82a4U)+ZR26(ZA[521]);
+ZA[526]=ZA[509]+ZA[525];
+ZA[523]=ZA[520]+ZMa(ZA[513],ZA[509],ZA[517])+ZR30(ZA[517]);
+ZA[530]=(ZCh(ZA[526],ZA[521],ZA[516])+ZA[511]+ZA[467]+0xab1c5ed5U)+ZR26(ZA[526]);
+ZA[531]=ZA[513]+ZA[530];
+ZA[527]=ZMa(ZA[517],ZA[513],ZA[523])+ZR30(ZA[523])+ZA[525];
+ZA[534]=(ZCh(ZA[531],ZA[526],ZA[521])+ZA[516]+0x5807aa98U)+ZR26(ZA[531]);
+ZA[535]=ZA[517]+ZA[534];
+ZA[532]=ZMa(ZA[523],ZA[517],ZA[527])+ZR30(ZA[527])+ZA[530];
+ZA[539]=(ZCh(ZA[535],ZA[531],ZA[526])+ZA[521]+0x12835b01U)+ZR26(ZA[535]);
+ZA[540]=ZA[523]+ZA[539];
+ZA[536]=ZMa(ZA[527],ZA[523],ZA[532])+ZR30(ZA[532])+ZA[534];
+ZA[543]=(ZCh(ZA[540],ZA[535],ZA[531])+ZA[526]+0x243185beU)+ZR26(ZA[540]);
+ZA[544]=ZA[527]+ZA[543];
+ZA[541]=ZMa(ZA[532],ZA[527],ZA[536])+ZR30(ZA[536])+ZA[539];
+ZA[558]=(ZCh(ZA[544],ZA[540],ZA[535])+ZA[531]+0x550c7dc3U)+ZR26(ZA[544]);
+ZA[559]=ZA[532]+ZA[558];
+ZA[545]=ZMa(ZA[536],ZA[532],ZA[541])+ZR30(ZA[541])+ZA[543];
+ZA[562]=(ZCh(ZA[559],ZA[544],ZA[540])+ZA[535]+0x72be5d74U)+ZR26(ZA[559]);
+ZA[563]=ZA[536]+ZA[562];
+ZA[560]=ZMa(ZA[541],ZA[536],ZA[545])+ZR30(ZA[545])+ZA[558];
+ZA[568]=(ZCh(ZA[563],ZA[559],ZA[544])+ZA[540]+0x80deb1feU)+ZR26(ZA[563]);
+ZA[569]=ZA[541]+ZA[568];
+ZA[565]=ZA[562]+ZMa(ZA[545],ZA[541],ZA[560])+ZR30(ZA[560]);
+ZA[574]=(ZCh(ZA[569],ZA[563],ZA[559])+ZA[544]+0x9bdc06a7U)+ZR26(ZA[569]);
+ZA[497]=ZR25(ZA[461])+ZA[460];
+ZA[575]=ZA[545]+ZA[574];
+ZA[571]=ZA[568]+ZMa(ZA[560],ZA[545],ZA[565])+ZR30(ZA[565]);
+ZA[578]=(ZCh(ZA[575],ZA[569],ZA[563])+ZA[559]+0xc19bf274U)+ZR26(ZA[575]);
+ZA[471]=ZR25(ZA[462])+ZA[461]+0x00a00000U;
+ZA[579]=ZA[560]+ZA[578];
+ZA[577]=ZA[574]+ZMa(ZA[565],ZA[560],ZA[571])+ZR30(ZA[571]);
+ZA[583]=(ZCh(ZA[579],ZA[575],ZA[569])+ZA[563]+ZA[497]+0xe49b69c1U)+ZR26(ZA[579]);
+ZA[584]=ZA[565]+ZA[583];
+ZA[581]=ZA[578]+ZMa(ZA[571],ZA[565],ZA[577])+ZR30(ZA[577]);
+ZA[588]=(ZCh(ZA[584],ZA[579],ZA[575])+ZA[569]+ZA[471]+0xefbe4786U)+ZR26(ZA[584]);
+ZA[501]=ZR15(ZA[497])+ZR25(ZA[463])+ZA[462];
+ZA[474]=ZR15(ZA[471])+ZA[463]+ZR25(ZA[464]);
+ZA[589]=ZA[571]+ZA[588];
+ZA[585]=ZA[583]+ZMa(ZA[577],ZA[571],ZA[581])+ZR30(ZA[581]);
+ZA[592]=(ZCh(ZA[589],ZA[584],ZA[579])+ZA[575]+0x0fc19dc6U+ZA[501])+ZR26(ZA[589]);
+ZA[518]=ZR15(ZA[501])+ZR25(ZA[465])+ZA[464];
+ZA[593]=ZA[577]+ZA[592];
+ZA[591]=ZA[588]+ZMa(ZA[581],ZA[577],ZA[585])+ZR30(ZA[585]);
+ZA[597]=(ZCh(ZA[593],ZA[589],ZA[584])+ZA[579]+ZA[474]+0x240ca1ccU)+ZR26(ZA[593]);
+ZA[482]=ZR15(ZA[474])+ZR25(ZA[466])+ZA[465];
+ZA[598]=ZA[581]+ZA[597];
+ZA[595]=ZA[592]+ZMa(ZA[585],ZA[581],ZA[591])+ZR30(ZA[591]);
+ZA[632]=(ZCh(ZA[598],ZA[593],ZA[589])+ZA[584]+ZA[518]+0x2de92c6fU)+ZR26(ZA[598]);
+ZA[528]=ZR15(ZA[518])+ZA[466]+0x00000100U+ZR25(ZA[467]);
+ZA[736]=ZA[585]+ZA[632];
+ZA[600]=ZA[597]+ZMa(ZA[591],ZA[585],ZA[595])+ZR30(ZA[595]);
+ZA[738]=(ZCh(ZA[736],ZA[598],ZA[593])+ZA[589]+ZA[482]+0x4a7484aaU)+ZR26(ZA[736]);
+ZA[502]=ZA[497]+ZR15(ZA[482])+ZA[467]+0x11002000U;
+ZA[739]=ZA[591]+ZA[738];
+ZA[737]=ZMa(ZA[595],ZA[591],ZA[600])+ZR30(ZA[600])+ZA[632];
+ZA[741]=(ZCh(ZA[739],ZA[736],ZA[598])+ZA[593]+ZA[528]+0x5cb0a9dcU)+ZR26(ZA[739]);
+ZA[537]=ZR15(ZA[528])+ZA[471]+0x80000000U;
+ZA[742]=ZA[595]+ZA[741];
+ZA[740]=ZMa(ZA[600],ZA[595],ZA[737])+ZR30(ZA[737])+ZA[738];
+ZA[747]=(ZCh(ZA[742],ZA[739],ZA[736])+ZA[598]+ZA[502]+0x76f988daU)+ZR26(ZA[742]);
+ZA[546]=ZR15(ZA[502])+ZA[501];
+ZA[748]=ZA[600]+ZA[747];
+ZA[743]=ZMa(ZA[737],ZA[600],ZA[740])+ZR30(ZA[740])+ZA[741];
+ZA[752]=(ZCh(ZA[748],ZA[742],ZA[739])+ZA[736]+ZA[537]+0x983e5152U)+ZR26(ZA[748]);
+ZA[554]=ZR15(ZA[537])+ZA[474];
+ZA[753]=ZA[737]+ZA[752];
+ZA[750]=ZA[747]+ZMa(ZA[740],ZA[737],ZA[743])+ZR30(ZA[743]);
+ZA[757]=(ZCh(ZA[753],ZA[748],ZA[742])+ZA[739]+ZA[546]+0xa831c66dU)+ZR26(ZA[753]);
+ZA[566]=ZR15(ZA[546])+ZA[518];
+ZA[758]=ZA[740]+ZA[757];
+ZA[755]=ZA[752]+ZMa(ZA[743],ZA[740],ZA[750])+ZR30(ZA[750]);
+ZA[762]=(ZCh(ZA[758],ZA[753],ZA[748])+ZA[742]+ZA[554]+0xb00327c8U)+ZR26(ZA[758]);
+ZA[567]=ZR15(ZA[554])+ZA[482];
+ZA[763]=ZA[743]+ZA[762];
+ZA[760]=ZA[757]+ZMa(ZA[750],ZA[743],ZA[755])+ZR30(ZA[755]);
+ZA[767]=(ZCh(ZA[763],ZA[758],ZA[753])+ZA[748]+ZA[566]+0xbf597fc7U)+ZR26(ZA[763]);
+ZA[614]=ZR15(ZA[566])+ZA[528];
+ZA[768]=ZA[750]+ZA[767];
+ZA[765]=ZA[762]+ZMa(ZA[755],ZA[750],ZA[760])+ZR30(ZA[760]);
+ZA[772]=(ZCh(ZA[768],ZA[763],ZA[758])+ZA[753]+ZA[567]+0xc6e00bf3U)+ZR26(ZA[768]);
+ZA[616]=ZR15(ZA[567])+ZA[502]+0x00400022U;
+ZA[773]=ZA[755]+ZA[772];
+ZA[770]=ZA[767]+ZMa(ZA[760],ZA[755],ZA[765])+ZR30(ZA[765]);
+ZA[777]=(ZCh(ZA[773],ZA[768],ZA[763])+ZA[758]+ZA[614]+0xd5a79147U)+ZR26(ZA[773]);
+ZA[619]=ZR15(ZA[614])+ZA[537]+ZR25(ZA[497])+0x00000100U;
+ZA[778]=ZA[760]+ZA[777];
+ZA[775]=ZA[772]+ZMa(ZA[765],ZA[760],ZA[770])+ZR30(ZA[770]);
+ZA[782]=(ZCh(ZA[778],ZA[773],ZA[768])+ZA[763]+ZA[616]+0x06ca6351U)+ZR26(ZA[778]);
+ZA[622]=ZR15(ZA[616])+ZR25(ZA[471])+ZA[497]+ZA[546];
+ZA[783]=ZA[765]+ZA[782];
+ZA[780]=ZA[777]+ZMa(ZA[770],ZA[765],ZA[775])+ZR30(ZA[775]);
+ZA[787]=(ZCh(ZA[783],ZA[778],ZA[773])+ZA[768]+ZA[619]+0x14292967U)+ZR26(ZA[783]);
+ZA[627]=ZR15(ZA[619])+ZR25(ZA[501])+ZA[554]+ZA[471];
+ZA[788]=ZA[770]+ZA[787];
+ZA[785]=ZA[782]+ZMa(ZA[775],ZA[770],ZA[780])+ZR30(ZA[780]);
+ZA[792]=(ZCh(ZA[788],ZA[783],ZA[778])+ZA[773]+ZA[622]+0x27b70a85U)+ZR26(ZA[788]);
+ZA[631]=ZR15(ZA[622])+ZA[566]+ZR25(ZA[474])+ZA[501];
+ZA[793]=ZA[775]+ZA[792];
+ZA[790]=ZA[787]+ZMa(ZA[780],ZA[775],ZA[785])+ZR30(ZA[785]);
+ZA[797]=(ZCh(ZA[793],ZA[788],ZA[783])+ZA[778]+ZA[627]+0x2e1b2138U)+ZR26(ZA[793]);
+ZA[636]=ZR15(ZA[627])+ZA[567]+ZR25(ZA[518])+ZA[474];
+ZA[798]=ZA[780]+ZA[797];
+ZA[795]=ZA[792]+ZMa(ZA[785],ZA[780],ZA[790])+ZR30(ZA[790]);
+ZA[802]=(ZCh(ZA[798],ZA[793],ZA[788])+ZA[783]+ZA[631]+0x4d2c6dfcU)+ZR26(ZA[798]);
+ZA[640]=ZR15(ZA[631])+ZR25(ZA[482])+ZA[518]+ZA[614];
+ZA[803]=ZA[785]+ZA[802];
+ZA[800]=ZA[797]+ZMa(ZA[790],ZA[785],ZA[795])+ZR30(ZA[795]);
+ZA[807]=(ZCh(ZA[803],ZA[798],ZA[793])+ZA[788]+ZA[636]+0x53380d13U)+ZR26(ZA[803]);
+ZA[644]=ZR15(ZA[636])+ZA[616]+ZR25(ZA[528])+ZA[482];
+ZA[808]=ZA[790]+ZA[807];
+ZA[805]=ZA[802]+ZMa(ZA[795],ZA[790],ZA[800])+ZR30(ZA[800]);
+ZA[812]=(ZCh(ZA[808],ZA[803],ZA[798])+ZA[793]+ZA[640]+0x650a7354U)+ZR26(ZA[808]);
+ZA[648]=ZR15(ZA[640])+ZA[619]+ZR25(ZA[502])+ZA[528];
+ZA[813]=ZA[795]+ZA[812];
+ZA[810]=ZA[807]+ZMa(ZA[800],ZA[795],ZA[805])+ZR30(ZA[805]);
+ZA[817]=(ZCh(ZA[813],ZA[808],ZA[803])+ZA[798]+ZA[644]+0x766a0abbU)+ZR26(ZA[813]);
+ZA[651]=ZR15(ZA[644])+ZA[622]+ZR25(ZA[537])+ZA[502];
+ZA[818]=ZA[800]+ZA[817];
+ZA[815]=ZA[812]+ZMa(ZA[805],ZA[800],ZA[810])+ZR30(ZA[810]);
+ZA[822]=(ZCh(ZA[818],ZA[813],ZA[808])+ZA[803]+ZA[648]+0x81c2c92eU)+ZR26(ZA[818]);
+ZA[655]=ZR15(ZA[648])+ZA[627]+ZR25(ZA[546])+ZA[537];
+ZA[823]=ZA[805]+ZA[822];
+ZA[820]=ZA[817]+ZMa(ZA[810],ZA[805],ZA[815])+ZR30(ZA[815]);
+ZA[827]=(ZCh(ZA[823],ZA[818],ZA[813])+ZA[808]+ZA[651]+0x92722c85U)+ZR26(ZA[823]);
+ZA[659]=ZR15(ZA[651])+ZA[631]+ZR25(ZA[554])+ZA[546];
+ZA[828]=ZA[810]+ZA[827];
+ZA[825]=ZA[822]+ZMa(ZA[815],ZA[810],ZA[820])+ZR30(ZA[820]);
+ZA[832]=(ZCh(ZA[828],ZA[823],ZA[818])+ZA[813]+ZA[655]+0xa2bfe8a1U)+ZR26(ZA[828]);
+ZA[663]=ZR15(ZA[655])+ZA[636]+ZR25(ZA[566])+ZA[554];
+ZA[833]=ZA[815]+ZA[832];
+ZA[830]=ZA[827]+ZMa(ZA[820],ZA[815],ZA[825])+ZR30(ZA[825]);
+ZA[837]=(ZCh(ZA[833],ZA[828],ZA[823])+ZA[818]+ZA[659]+0xa81a664bU)+ZR26(ZA[833]);
+ZA[667]=ZR15(ZA[659])+ZA[640]+ZR25(ZA[567])+ZA[566];
+ZA[838]=ZA[820]+ZA[837];
+ZA[835]=ZA[832]+ZMa(ZA[825],ZA[820],ZA[830])+ZR30(ZA[830]);
+ZA[842]=(ZCh(ZA[838],ZA[833],ZA[828])+ZA[823]+ZA[663]+0xc24b8b70U)+ZR26(ZA[838]);
+ZA[671]=ZR15(ZA[663])+ZA[644]+ZR25(ZA[614])+ZA[567];
+ZA[843]=ZA[825]+ZA[842];
+ZA[840]=ZA[837]+ZMa(ZA[830],ZA[825],ZA[835])+ZR30(ZA[835]);
+ZA[847]=(ZCh(ZA[843],ZA[838],ZA[833])+ZA[828]+ZA[667]+0xc76c51a3U)+ZR26(ZA[843]);
+ZA[679]=ZR15(ZA[667])+ZA[648]+ZR25(ZA[616])+ZA[614];
+ZA[848]=ZA[830]+ZA[847];
+ZA[845]=ZA[842]+ZMa(ZA[835],ZA[830],ZA[840])+ZR30(ZA[840]);
+ZA[852]=(ZCh(ZA[848],ZA[843],ZA[838])+ZA[833]+ZA[671]+0xd192e819U)+ZR26(ZA[848]);
+ZA[684]=ZR15(ZA[671])+ZA[651]+ZR25(ZA[619])+ZA[616];
+ZA[853]=ZA[835]+ZA[852];
+ZA[850]=ZA[847]+ZMa(ZA[840],ZA[835],ZA[845])+ZR30(ZA[845]);
+ZA[857]=(ZCh(ZA[853],ZA[848],ZA[843])+ZA[838]+ZA[679]+0xd6990624U)+ZR26(ZA[853]);
+ZA[688]=ZR15(ZA[679])+ZA[655]+ZR25(ZA[622])+ZA[619];
+ZA[858]=ZA[840]+ZA[857];
+ZA[855]=ZA[852]+ZMa(ZA[845],ZA[840],ZA[850])+ZR30(ZA[850]);
+ZA[862]=(ZCh(ZA[858],ZA[853],ZA[848])+ZA[843]+ZA[684]+0xf40e3585U)+ZR26(ZA[858]);
+ZA[692]=ZR15(ZA[684])+ZA[659]+ZR25(ZA[627])+ZA[622];
+ZA[863]=ZA[845]+ZA[862];
+ZA[860]=ZA[857]+ZMa(ZA[850],ZA[845],ZA[855])+ZR30(ZA[855]);
+ZA[867]=(ZCh(ZA[863],ZA[858],ZA[853])+ZA[848]+ZA[688]+0x106aa070U)+ZR26(ZA[863]);
+ZA[696]=ZR15(ZA[688])+ZA[663]+ZR25(ZA[631])+ZA[627];
+ZA[868]=ZA[850]+ZA[867];
+ZA[865]=ZA[862]+ZMa(ZA[855],ZA[850],ZA[860])+ZR30(ZA[860]);
+ZA[873]=(ZCh(ZA[868],ZA[863],ZA[858])+ZA[853]+ZA[692]+0x19a4c116U)+ZR26(ZA[868]);
+ZA[700]=ZR15(ZA[692])+ZA[667]+ZR25(ZA[636])+ZA[631];
+ZA[874]=ZA[855]+ZA[873];
+ZA[870]=ZA[867]+ZMa(ZA[860],ZA[855],ZA[865])+ZR30(ZA[865]);
+ZA[878]=(ZCh(ZA[874],ZA[868],ZA[863])+ZA[858]+ZA[696]+0x1e376c08U)+ZR26(ZA[874]);
+ZA[704]=ZR15(ZA[696])+ZA[671]+ZR25(ZA[640])+ZA[636];
+ZA[879]=ZA[860]+ZA[878];
+ZA[876]=ZA[873]+ZMa(ZA[865],ZA[860],ZA[870])+ZR30(ZA[870]);
+ZA[883]=(ZCh(ZA[879],ZA[874],ZA[868])+ZA[863]+ZA[700]+0x2748774cU)+ZR26(ZA[879]);
+ZA[708]=ZR15(ZA[700])+ZA[679]+ZR25(ZA[644])+ZA[640];
+ZA[884]=ZA[865]+ZA[883];
+ZA[881]=ZA[878]+ZMa(ZA[870],ZA[865],ZA[876])+ZR30(ZA[876]);
+ZA[888]=(ZCh(ZA[884],ZA[879],ZA[874])+ZA[868]+ZA[704]+0x34b0bcb5U)+ZR26(ZA[884]);
+ZA[712]=ZR15(ZA[704])+ZA[684]+ZR25(ZA[648])+ZA[644];
+ZA[889]=ZA[870]+ZA[888];
+ZA[886]=ZA[883]+ZMa(ZA[876],ZA[870],ZA[881])+ZR30(ZA[881]);
+ZA[893]=(ZCh(ZA[889],ZA[884],ZA[879])+ZA[874]+ZA[708]+0x391c0cb3U)+ZR26(ZA[889]);
+ZA[716]=ZR15(ZA[708])+ZA[688]+ZR25(ZA[651])+ZA[648];
+ZA[894]=ZA[876]+ZA[893];
+ZA[891]=ZA[888]+ZMa(ZA[881],ZA[876],ZA[886])+ZR30(ZA[886]);
+ZA[898]=(ZCh(ZA[894],ZA[889],ZA[884])+ZA[879]+ZA[712]+0x4ed8aa4aU)+ZR26(ZA[894]);
+ZA[720]=ZR15(ZA[712])+ZA[692]+ZR25(ZA[655])+ZA[651];
+ZA[899]=ZA[881]+ZA[898];
+ZA[896]=ZA[893]+ZMa(ZA[886],ZA[881],ZA[891])+ZR30(ZA[891]);
+ZA[903]=(ZCh(ZA[899],ZA[894],ZA[889])+ZA[884]+ZA[716]+0x5b9cca4fU)+ZR26(ZA[899]);
+ZA[724]=ZR15(ZA[716])+ZA[696]+ZR25(ZA[659])+ZA[655];
+ZA[904]=ZA[886]+ZA[903];
+ZA[901]=ZA[898]+ZMa(ZA[891],ZA[886],ZA[896])+ZR30(ZA[896]);
+ZA[908]=(ZCh(ZA[904],ZA[899],ZA[894])+ZA[889]+ZA[720]+0x682e6ff3U)+ZR26(ZA[904]);
+ZA[727]=ZR15(ZA[720])+ZA[700]+ZR25(ZA[663])+ZA[659];
+ZA[909]=ZA[891]+ZA[908];
+ZA[906]=ZA[903]+ZMa(ZA[896],ZA[891],ZA[901])+ZR30(ZA[901]);
+ZA[913]=(ZCh(ZA[909],ZA[904],ZA[899])+ZA[894]+ZA[724]+0x748f82eeU)+ZR26(ZA[909]);
+ZA[730]=ZR15(ZA[724])+ZA[704]+ZR25(ZA[667])+ZA[663];
+ZA[914]=ZA[896]+ZA[913];
+ZA[911]=ZA[908]+ZMa(ZA[901],ZA[896],ZA[906])+ZR30(ZA[906]);
+ZA[918]=(ZCh(ZA[914],ZA[909],ZA[904])+ZA[899]+ZA[901]+ZA[727]+0x78a5636fU)+ZR26(ZA[914]);
+ZA[920]=(ZCh(ZA[918],ZA[914],ZA[909])+ZA[906]+ZA[904]+ZA[730]+0x84c87814U)+ZR26(ZA[918]);
+ZA[922]=(ZCh(ZA[920],ZA[918],ZA[914])+ZA[911]+ZA[909]+ZR15(ZA[727])+ZA[708]+ZR25(ZA[671])+ZA[667]+0x8cc70208U)+ZR26(ZA[920]);
+ZA[924]=(ZCh(ZA[922],ZA[920],ZA[918])+ZA[913]+ZMa(ZA[906],ZA[901],ZA[911])+ZR30(ZA[911])+ZA[914]+ZR15(ZA[730])+ZA[712]+ZR25(ZA[679])+ZA[671])+ZR26(ZA[922]);
     
 #define FOUND (0x80)
 #define NFLAG (0x7F)