Reuse variables to decrease total number used in diablo kernel.
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
diff --git a/diablo120222.cl b/diablo120222.cl
index fa00124..573887b 100644
--- a/diablo120222.cl
+++ b/diablo120222.cl
@@ -60,486 +60,486 @@ __kernel __attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) void search(
__global uint * output)
{
- z ZA[448];
+ z ZA[25];
const z Znonce = base + (uint)(get_global_id(0));
-ZA[4]=Znonce+PreVal4_state0;
-ZA[5]=(ZCh(ZA[4],b1,c1)+d1)+ZR26(ZA[4]);
-ZA[11]=Znonce+PreVal4_T1;
-ZA[6]=ZA[5]+h1;
-ZA[7]=(ZCh(ZA[6],ZA[4],b1)+c1_plus_k5)+ZR26(ZA[6]);
-ZA[12]=ZMa(f1,g1,ZA[11])+ZR30(ZA[11])+ZA[5];
-ZA[8]=ZA[7]+g1;
-ZA[9]=(ZCh(ZA[8],ZA[6],ZA[4])+b1_plus_k6)+ZR26(ZA[8]);
-ZA[13]=ZMa(ZA[11],f1,ZA[12])+ZR30(ZA[12])+ZA[7];
-ZA[10]=ZA[9]+f1;
-ZA[14]=ZMa(ZA[12],ZA[11],ZA[13])+ZR30(ZA[13])+ZA[9];
-ZA[55]=Znonce+PreVal4_state0_k7+ZCh(ZA[10],ZA[8],ZA[6])+ZR26(ZA[10]);
-ZA[56]=ZA[55]+ZA[11];
-ZA[57]=ZA[55]+ZMa(ZA[13],ZA[12],ZA[14])+ZR30(ZA[14]);
-ZA[58]=(ZCh(ZA[56],ZA[10],ZA[8])+ZA[6]+0xd807aa98U)+ZR26(ZA[56]);
-ZA[59]=ZA[58]+ZA[12];
-ZA[60]=ZA[58]+ZMa(ZA[14],ZA[13],ZA[57])+ZR30(ZA[57]);
-ZA[61]=(ZCh(ZA[59],ZA[56],ZA[10])+ZA[8]+0x12835b01U)+ZR26(ZA[59]);
-ZA[62]=ZA[61]+ZA[13];
-ZA[63]=ZA[61]+ZMa(ZA[57],ZA[14],ZA[60])+ZR30(ZA[60]);
-ZA[64]=(ZCh(ZA[62],ZA[59],ZA[56])+ZA[10]+0x243185beU)+ZR26(ZA[62]);
-ZA[65]=ZA[64]+ZA[14];
-ZA[66]=ZA[64]+ZMa(ZA[60],ZA[57],ZA[63])+ZR30(ZA[63]);
-ZA[67]=(ZCh(ZA[65],ZA[62],ZA[59])+ZA[56]+0x550c7dc3U)+ZR26(ZA[65]);
-ZA[68]=ZA[67]+ZA[57];
-ZA[69]=ZA[67]+ZMa(ZA[63],ZA[60],ZA[66])+ZR30(ZA[66]);
-ZA[70]=(ZCh(ZA[68],ZA[65],ZA[62])+ZA[59]+0x72be5d74U)+ZR26(ZA[68]);
-ZA[71]=ZA[70]+ZA[60];
-ZA[72]=ZA[70]+ZMa(ZA[66],ZA[63],ZA[69])+ZR30(ZA[69]);
-ZA[73]=(ZCh(ZA[71],ZA[68],ZA[65])+ZA[62]+0x80deb1feU)+ZR26(ZA[71]);
-ZA[74]=ZA[63]+ZA[73];
-ZA[75]=ZA[73]+ZMa(ZA[69],ZA[66],ZA[72])+ZR30(ZA[72]);
-ZA[76]=(ZCh(ZA[74],ZA[71],ZA[68])+ZA[65]+0x9bdc06a7U)+ZR26(ZA[74]);
-ZA[77]=ZA[66]+ZA[76];
-ZA[78]=ZA[76]+ZMa(ZA[72],ZA[69],ZA[75])+ZR30(ZA[75]);
-ZA[79]=(ZCh(ZA[77],ZA[74],ZA[71])+ZA[68]+0xc19bf3f4U)+ZR26(ZA[77]);
-ZA[80]=ZA[69]+ZA[79];
-ZA[81]=ZA[79]+ZMa(ZA[75],ZA[72],ZA[78])+ZR30(ZA[78]);
-ZA[82]=(ZCh(ZA[80],ZA[77],ZA[74])+ZA[71]+W16_plus_K16)+ZR26(ZA[80]);
+ZA[2]=Znonce+PreVal4_state0;
+ZA[3]=(ZCh(ZA[2],b1,c1)+d1)+ZR26(ZA[2]);
+ZA[8]=Znonce+PreVal4_T1;
+ZA[4]=ZA[3]+h1;
+ZA[5]=(ZCh(ZA[4],ZA[2],b1)+c1_plus_k5)+ZR26(ZA[4]);
+ZA[3]=ZMa(f1,g1,ZA[8])+ZR30(ZA[8])+ZA[3];
+ZA[6]=ZA[5]+g1;
+ZA[2]=(ZCh(ZA[6],ZA[4],ZA[2])+b1_plus_k6)+ZR26(ZA[6]);
+ZA[5]=ZMa(ZA[8],f1,ZA[3])+ZR30(ZA[3])+ZA[5];
+ZA[7]=ZA[2]+f1;
+ZA[2]=ZMa(ZA[3],ZA[8],ZA[5])+ZR30(ZA[5])+ZA[2];
+ZA[10]=Znonce+PreVal4_state0_k7+ZCh(ZA[7],ZA[6],ZA[4])+ZR26(ZA[7]);
+ZA[8]=ZA[10]+ZA[8];
+ZA[10]=ZA[10]+ZMa(ZA[5],ZA[3],ZA[2])+ZR30(ZA[2]);
+ZA[4]=(ZCh(ZA[8],ZA[7],ZA[6])+ZA[4]+0xd807aa98U)+ZR26(ZA[8]);
+ZA[3]=ZA[4]+ZA[3];
+ZA[4]=ZA[4]+ZMa(ZA[2],ZA[5],ZA[10])+ZR30(ZA[10]);
+ZA[6]=(ZCh(ZA[3],ZA[8],ZA[7])+ZA[6]+0x12835b01U)+ZR26(ZA[3]);
+ZA[5]=ZA[6]+ZA[5];
+ZA[6]=ZA[6]+ZMa(ZA[10],ZA[2],ZA[4])+ZR30(ZA[4]);
+ZA[7]=(ZCh(ZA[5],ZA[3],ZA[8])+ZA[7]+0x243185beU)+ZR26(ZA[5]);
+ZA[2]=ZA[7]+ZA[2];
+ZA[7]=ZA[7]+ZMa(ZA[4],ZA[10],ZA[6])+ZR30(ZA[6]);
+ZA[8]=(ZCh(ZA[2],ZA[5],ZA[3])+ZA[8]+0x550c7dc3U)+ZR26(ZA[2]);
+ZA[10]=ZA[8]+ZA[10];
+ZA[8]=ZA[8]+ZMa(ZA[6],ZA[4],ZA[7])+ZR30(ZA[7]);
+ZA[3]=(ZCh(ZA[10],ZA[2],ZA[5])+ZA[3]+0x72be5d74U)+ZR26(ZA[10]);
+ZA[4]=ZA[3]+ZA[4];
+ZA[3]=ZA[3]+ZMa(ZA[7],ZA[6],ZA[8])+ZR30(ZA[8]);
+ZA[5]=(ZCh(ZA[4],ZA[10],ZA[2])+ZA[5]+0x80deb1feU)+ZR26(ZA[4]);
+ZA[6]=ZA[6]+ZA[5];
+ZA[5]=ZA[5]+ZMa(ZA[8],ZA[7],ZA[3])+ZR30(ZA[3]);
+ZA[2]=(ZCh(ZA[6],ZA[4],ZA[10])+ZA[2]+0x9bdc06a7U)+ZR26(ZA[6]);
+ZA[7]=ZA[7]+ZA[2];
+ZA[2]=ZA[2]+ZMa(ZA[3],ZA[8],ZA[5])+ZR30(ZA[5]);
+ZA[10]=(ZCh(ZA[7],ZA[6],ZA[4])+ZA[10]+0xc19bf3f4U)+ZR26(ZA[7]);
+ZA[8]=ZA[8]+ZA[10];
+ZA[10]=ZA[10]+ZMa(ZA[5],ZA[3],ZA[2])+ZR30(ZA[2]);
+ZA[4]=(ZCh(ZA[8],ZA[7],ZA[6])+ZA[4]+W16_plus_K16)+ZR26(ZA[8]);
ZA[0]=ZR25(Znonce)+W18;
-ZA[84]=ZA[82]+ZMa(ZA[78],ZA[75],ZA[81])+ZR30(ZA[81]);
-ZA[83]=ZA[72]+ZA[82];
-ZA[85]=(ZCh(ZA[83],ZA[80],ZA[77])+ZA[74]+W17_plus_K17)+ZR26(ZA[83]);
-ZA[86]=ZA[75]+ZA[85];
-ZA[87]=ZA[85]+ZMa(ZA[81],ZA[78],ZA[84])+ZR30(ZA[84]);
-ZA[15]=Znonce+W19;
-ZA[88]=(ZCh(ZA[86],ZA[83],ZA[80])+ZA[77]+ZA[0]+0x0fc19dc6U)+ZR26(ZA[86]);
+ZA[11]=ZA[4]+ZMa(ZA[2],ZA[5],ZA[10])+ZR30(ZA[10]);
+ZA[4]=ZA[3]+ZA[4];
+ZA[6]=(ZCh(ZA[4],ZA[8],ZA[7])+ZA[6]+W17_plus_K17)+ZR26(ZA[4]);
+ZA[5]=ZA[5]+ZA[6];
+ZA[6]=ZA[6]+ZMa(ZA[10],ZA[2],ZA[11])+ZR30(ZA[11]);
+ZA[3]=Znonce+W19;
+ZA[7]=(ZCh(ZA[5],ZA[4],ZA[8])+ZA[7]+ZA[0]+0x0fc19dc6U)+ZR26(ZA[5]);
ZA[1]=ZR15(ZA[0])+0x80000000U;
-ZA[90]=ZA[88]+ZMa(ZA[84],ZA[81],ZA[87])+ZR30(ZA[87]);
-ZA[89]=ZA[78]+ZA[88];
-ZA[91]=(ZCh(ZA[89],ZA[86],ZA[83])+ZA[80]+ZA[15]+0x240ca1ccU)+ZR26(ZA[89]);
-ZA[16]=ZR15(ZA[15]);
-ZA[93]=ZA[91]+ZMa(ZA[87],ZA[84],ZA[90])+ZR30(ZA[90]);
-ZA[92]=ZA[81]+ZA[91];
-ZA[94]=(ZCh(ZA[92],ZA[89],ZA[86])+ZA[83]+ZA[1]+0x2de92c6fU)+ZR26(ZA[92]);
-ZA[2]=ZR15(ZA[1])+0x00000280U;
-ZA[96]=ZA[94]+ZMa(ZA[90],ZA[87],ZA[93])+ZR30(ZA[93]);
-ZA[95]=ZA[84]+ZA[94];
-ZA[97]=(ZCh(ZA[95],ZA[92],ZA[89])+ZA[86]+ZA[16]+0x4a7484aaU)+ZR26(ZA[95]);
-ZA[17]=ZR15(ZA[16])+W16;
-ZA[99]=ZA[97]+ZMa(ZA[93],ZA[90],ZA[96])+ZR30(ZA[96]);
-ZA[98]=ZA[87]+ZA[97];
-ZA[100]=(ZCh(ZA[98],ZA[95],ZA[92])+ZA[89]+ZA[2]+0x5cb0a9dcU)+ZR26(ZA[98]);
-ZA[3]=ZR15(ZA[2])+W17;
-ZA[102]=ZA[100]+ZMa(ZA[96],ZA[93],ZA[99])+ZR30(ZA[99]);
-ZA[101]=ZA[90]+ZA[100];
-ZA[103]=(ZCh(ZA[101],ZA[98],ZA[95])+ZA[92]+ZA[17]+0x76f988daU)+ZR26(ZA[101]);
-ZA[18]=ZR15(ZA[17])+ZA[0];
-ZA[105]=ZA[103]+ZMa(ZA[99],ZA[96],ZA[102])+ZR30(ZA[102]);
-ZA[104]=ZA[93]+ZA[103];
-ZA[106]=(ZCh(ZA[104],ZA[101],ZA[98])+ZA[95]+ZA[3]+0x983e5152U)+ZR26(ZA[104]);
-ZA[20]=ZR15(ZA[3])+ZA[15];
-ZA[107]=ZA[96]+ZA[106];
-ZA[108]=ZA[106]+ZMa(ZA[102],ZA[99],ZA[105])+ZR30(ZA[105]);
-ZA[109]=(ZCh(ZA[107],ZA[104],ZA[101])+ZA[98]+ZA[18]+0xa831c66dU)+ZR26(ZA[107]);
-ZA[19]=ZR15(ZA[18])+ZA[1];
-ZA[111]=ZA[109]+ZMa(ZA[105],ZA[102],ZA[108])+ZR30(ZA[108]);
-ZA[110]=ZA[99]+ZA[109];
-ZA[112]=(ZCh(ZA[110],ZA[107],ZA[104])+ZA[101]+ZA[20]+0xb00327c8U)+ZR26(ZA[110]);
-ZA[22]=ZR15(ZA[20])+ZA[16];
-ZA[114]=ZA[112]+ZMa(ZA[108],ZA[105],ZA[111])+ZR30(ZA[111]);
-ZA[113]=ZA[102]+ZA[112];
-ZA[115]=(ZCh(ZA[113],ZA[110],ZA[107])+ZA[104]+ZA[19]+0xbf597fc7U)+ZR26(ZA[113]);
-ZA[21]=ZR15(ZA[19])+ZA[2];
-ZA[117]=ZA[115]+ZMa(ZA[111],ZA[108],ZA[114])+ZR30(ZA[114]);
-ZA[116]=ZA[105]+ZA[115];
-ZA[118]=(ZCh(ZA[116],ZA[113],ZA[110])+ZA[107]+ZA[22]+0xc6e00bf3U)+ZR26(ZA[116]);
-ZA[23]=ZR15(ZA[22])+ZA[17]+0x00A00055U;
-ZA[120]=ZA[118]+ZMa(ZA[114],ZA[111],ZA[117])+ZR30(ZA[117]);
-ZA[119]=ZA[108]+ZA[118];
-ZA[121]=(ZCh(ZA[119],ZA[116],ZA[113])+ZA[110]+ZA[21]+0xd5a79147U)+ZR26(ZA[119]);
-ZA[24]=ZR15(ZA[21])+ZA[3]+W31;
-ZA[123]=ZA[121]+ZMa(ZA[117],ZA[114],ZA[120])+ZR30(ZA[120]);
-ZA[122]=ZA[111]+ZA[121];
-ZA[124]=(ZCh(ZA[122],ZA[119],ZA[116])+ZA[113]+ZA[23]+0x06ca6351U)+ZR26(ZA[122]);
-ZA[26]=ZR15(ZA[23])+ZA[18]+W32;
-ZA[126]=ZA[124]+ZMa(ZA[120],ZA[117],ZA[123])+ZR30(ZA[123]);
-ZA[125]=ZA[114]+ZA[124];
-ZA[127]=(ZCh(ZA[125],ZA[122],ZA[119])+ZA[116]+ZA[24]+0x14292967U)+ZR26(ZA[125]);
-ZA[25]=ZR15(ZA[24])+ZA[20]+ZR25(ZA[0])+W17;
-ZA[128]=ZA[117]+ZA[127];
-ZA[129]=ZA[127]+ZMa(ZA[123],ZA[120],ZA[126])+ZR30(ZA[126]);
-ZA[130]=(ZCh(ZA[128],ZA[125],ZA[122])+ZA[119]+ZA[26]+0x27b70a85U)+ZR26(ZA[128]);
-ZA[27]=ZR15(ZA[26])+ZR25(ZA[15])+ZA[0]+ZA[19];
-ZA[132]=ZA[130]+ZMa(ZA[126],ZA[123],ZA[129])+ZR30(ZA[129]);
-ZA[131]=ZA[120]+ZA[130];
-ZA[133]=(ZCh(ZA[131],ZA[128],ZA[125])+ZA[122]+ZA[25]+0x2e1b2138U)+ZR26(ZA[131]);
-ZA[28]=ZR15(ZA[25])+ZA[15]+ZR25(ZA[1])+ZA[22];
-ZA[134]=ZA[123]+ZA[133];
-ZA[135]=ZA[133]+ZMa(ZA[129],ZA[126],ZA[132])+ZR30(ZA[132]);
-ZA[136]=(ZCh(ZA[134],ZA[131],ZA[128])+ZA[125]+ZA[27]+0x4d2c6dfcU)+ZR26(ZA[134]);
-ZA[29]=ZR15(ZA[27])+ZR25(ZA[16])+ZA[1]+ZA[21];
-ZA[138]=ZA[136]+ZMa(ZA[132],ZA[129],ZA[135])+ZR30(ZA[135]);
-ZA[137]=ZA[126]+ZA[136];
-ZA[139]=(ZCh(ZA[137],ZA[134],ZA[131])+ZA[128]+ZA[28]+0x53380d13U)+ZR26(ZA[137]);
-ZA[30]=ZR15(ZA[28])+ZA[16]+ZR25(ZA[2])+ZA[23];
-ZA[140]=ZA[129]+ZA[139];
-ZA[141]=ZA[139]+ZMa(ZA[135],ZA[132],ZA[138])+ZR30(ZA[138]);
-ZA[142]=(ZCh(ZA[140],ZA[137],ZA[134])+ZA[131]+ZA[29]+0x650a7354U)+ZR26(ZA[140]);
-ZA[31]=ZR15(ZA[29])+ZR25(ZA[17])+ZA[2]+ZA[24];
-ZA[144]=ZA[142]+ZMa(ZA[138],ZA[135],ZA[141])+ZR30(ZA[141]);
-ZA[143]=ZA[132]+ZA[142];
-ZA[145]=(ZCh(ZA[143],ZA[140],ZA[137])+ZA[134]+ZA[30]+0x766a0abbU)+ZR26(ZA[143]);
-ZA[32]=ZR15(ZA[30])+ZA[17]+ZR25(ZA[3])+ZA[26];
-ZA[146]=ZA[135]+ZA[145];
-ZA[147]=ZA[145]+ZMa(ZA[141],ZA[138],ZA[144])+ZR30(ZA[144]);
-ZA[148]=(ZCh(ZA[146],ZA[143],ZA[140])+ZA[137]+ZA[31]+0x81c2c92eU)+ZR26(ZA[146]);
-ZA[33]=ZR15(ZA[31])+ZR25(ZA[18])+ZA[3]+ZA[25];
-ZA[149]=ZA[138]+ZA[148];
-ZA[150]=ZA[148]+ZMa(ZA[144],ZA[141],ZA[147])+ZR30(ZA[147]);
-ZA[151]=(ZCh(ZA[149],ZA[146],ZA[143])+ZA[140]+ZA[32]+0x92722c85U)+ZR26(ZA[149]);
-ZA[34]=ZR15(ZA[32])+ZR25(ZA[20])+ZA[18]+ZA[27];
-ZA[152]=ZA[141]+ZA[151];
-ZA[153]=ZA[151]+ZMa(ZA[147],ZA[144],ZA[150])+ZR30(ZA[150]);
-ZA[154]=(ZCh(ZA[152],ZA[149],ZA[146])+ZA[143]+ZA[33]+0xa2bfe8a1U)+ZR26(ZA[152]);
-ZA[35]=ZR15(ZA[33])+ZR25(ZA[19])+ZA[20]+ZA[28];
-ZA[155]=ZA[144]+ZA[154];
-ZA[156]=ZA[154]+ZMa(ZA[150],ZA[147],ZA[153])+ZR30(ZA[153]);
-ZA[157]=(ZCh(ZA[155],ZA[152],ZA[149])+ZA[146]+ZA[34]+0xa81a664bU)+ZR26(ZA[155]);
-ZA[36]=ZR15(ZA[34])+ZA[29]+ZR25(ZA[22])+ZA[19];
-ZA[159]=ZA[157]+ZMa(ZA[153],ZA[150],ZA[156])+ZR30(ZA[156]);
-ZA[158]=ZA[147]+ZA[157];
-ZA[160]=(ZCh(ZA[158],ZA[155],ZA[152])+ZA[149]+ZA[35]+0xc24b8b70U)+ZR26(ZA[158]);
-ZA[37]=ZR15(ZA[35])+ZA[30]+ZR25(ZA[21])+ZA[22];
-ZA[161]=ZA[150]+ZA[160];
-ZA[162]=ZA[160]+ZMa(ZA[156],ZA[153],ZA[159])+ZR30(ZA[159]);
-ZA[163]=(ZCh(ZA[161],ZA[158],ZA[155])+ZA[152]+ZA[36]+0xc76c51a3U)+ZR26(ZA[161]);
-ZA[38]=ZR15(ZA[36])+ZR25(ZA[23])+ZA[21]+ZA[31];
-ZA[164]=ZA[153]+ZA[163];
-ZA[165]=ZA[163]+ZMa(ZA[159],ZA[156],ZA[162])+ZR30(ZA[162]);
-ZA[166]=(ZCh(ZA[164],ZA[161],ZA[158])+ZA[155]+ZA[37]+0xd192e819U)+ZR26(ZA[164]);
-ZA[39]=ZR15(ZA[37])+ZR25(ZA[24])+ZA[23]+ZA[32];
-ZA[167]=ZA[156]+ZA[166];
-ZA[168]=ZA[166]+ZMa(ZA[162],ZA[159],ZA[165])+ZR30(ZA[165]);
-ZA[169]=(ZCh(ZA[167],ZA[164],ZA[161])+ZA[158]+ZA[38]+0xd6990624U)+ZR26(ZA[167]);
-ZA[40]=ZR15(ZA[38])+ZA[33]+ZR25(ZA[26])+ZA[24];
-ZA[170]=ZA[159]+ZA[169];
-ZA[171]=ZA[169]+ZMa(ZA[165],ZA[162],ZA[168])+ZR30(ZA[168]);
-ZA[172]=(ZCh(ZA[170],ZA[167],ZA[164])+ZA[161]+ZA[39]+0xf40e3585U)+ZR26(ZA[170]);
-ZA[41]=ZR15(ZA[39])+ZA[34]+ZR25(ZA[25])+ZA[26];
-ZA[173]=ZA[162]+ZA[172];
-ZA[174]=ZA[172]+ZMa(ZA[168],ZA[165],ZA[171])+ZR30(ZA[171]);
-ZA[175]=(ZCh(ZA[173],ZA[170],ZA[167])+ZA[164]+ZA[40]+0x106aa070U)+ZR26(ZA[173]);
-ZA[42]=ZR15(ZA[40])+ZA[35]+ZR25(ZA[27])+ZA[25];
-ZA[176]=ZA[165]+ZA[175];
-ZA[177]=ZA[175]+ZMa(ZA[171],ZA[168],ZA[174])+ZR30(ZA[174]);
-ZA[178]=(ZCh(ZA[176],ZA[173],ZA[170])+ZA[167]+ZA[41]+0x19a4c116U)+ZR26(ZA[176]);
-ZA[43]=ZR15(ZA[41])+ZA[36]+ZR25(ZA[28])+ZA[27];
-ZA[179]=ZA[168]+ZA[178];
-ZA[180]=ZA[178]+ZMa(ZA[174],ZA[171],ZA[177])+ZR30(ZA[177]);
-ZA[181]=(ZCh(ZA[179],ZA[176],ZA[173])+ZA[170]+ZA[42]+0x1e376c08U)+ZR26(ZA[179]);
-ZA[44]=ZR15(ZA[42])+ZA[37]+ZR25(ZA[29])+ZA[28];
-ZA[182]=ZA[171]+ZA[181];
-ZA[183]=ZA[181]+ZMa(ZA[177],ZA[174],ZA[180])+ZR30(ZA[180]);
-ZA[184]=(ZCh(ZA[182],ZA[179],ZA[176])+ZA[173]+ZA[43]+0x2748774cU)+ZR26(ZA[182]);
-ZA[45]=ZR15(ZA[43])+ZA[38]+ZR25(ZA[30])+ZA[29];
-ZA[185]=ZA[174]+ZA[184];
-ZA[186]=ZA[184]+ZMa(ZA[180],ZA[177],ZA[183])+ZR30(ZA[183]);
-ZA[187]=(ZCh(ZA[185],ZA[182],ZA[179])+ZA[176]+ZA[44]+0x34b0bcb5U)+ZR26(ZA[185]);
-ZA[46]=ZR15(ZA[44])+ZA[39]+ZR25(ZA[31])+ZA[30];
-ZA[188]=ZA[177]+ZA[187];
-ZA[189]=ZA[187]+ZMa(ZA[183],ZA[180],ZA[186])+ZR30(ZA[186]);
-ZA[190]=(ZCh(ZA[188],ZA[185],ZA[182])+ZA[179]+ZA[45]+0x391c0cb3U)+ZR26(ZA[188]);
-ZA[47]=ZR15(ZA[45])+ZA[40]+ZR25(ZA[32])+ZA[31];
-ZA[191]=ZA[180]+ZA[190];
-ZA[192]=ZA[190]+ZMa(ZA[186],ZA[183],ZA[189])+ZR30(ZA[189]);
-ZA[193]=(ZCh(ZA[191],ZA[188],ZA[185])+ZA[182]+ZA[46]+0x4ed8aa4aU)+ZR26(ZA[191]);
-ZA[48]=ZR15(ZA[46])+ZA[41]+ZR25(ZA[33])+ZA[32];
-ZA[194]=ZA[183]+ZA[193];
-ZA[195]=ZA[193]+ZMa(ZA[189],ZA[186],ZA[192])+ZR30(ZA[192]);
-ZA[196]=(ZCh(ZA[194],ZA[191],ZA[188])+ZA[185]+ZA[47]+0x5b9cca4fU)+ZR26(ZA[194]);
-ZA[49]=ZR15(ZA[47])+ZA[42]+ZR25(ZA[34])+ZA[33];
-ZA[197]=ZA[186]+ZA[196];
-ZA[198]=ZA[196]+ZMa(ZA[192],ZA[189],ZA[195])+ZR30(ZA[195]);
-ZA[199]=(ZCh(ZA[197],ZA[194],ZA[191])+ZA[188]+ZA[48]+0x682e6ff3U)+ZR26(ZA[197]);
-ZA[50]=ZR15(ZA[48])+ZA[43]+ZR25(ZA[35])+ZA[34];
-ZA[200]=ZA[189]+ZA[199];
-ZA[201]=ZA[199]+ZMa(ZA[195],ZA[192],ZA[198])+ZR30(ZA[198]);
-ZA[202]=(ZCh(ZA[200],ZA[197],ZA[194])+ZA[191]+ZA[49]+0x748f82eeU)+ZR26(ZA[200]);
-ZA[51]=ZR15(ZA[49])+ZA[44]+ZR25(ZA[36])+ZA[35];
-ZA[203]=ZA[192]+ZA[202];
-ZA[204]=ZA[202]+ZMa(ZA[198],ZA[195],ZA[201])+ZR30(ZA[201]);
-ZA[205]=(ZCh(ZA[203],ZA[200],ZA[197])+ZA[194]+ZA[50]+0x78a5636fU)+ZR26(ZA[203]);
-ZA[52]=ZR15(ZA[50])+ZA[45]+ZR25(ZA[37])+ZA[36];
-ZA[206]=ZA[195]+ZA[205];
-ZA[207]=ZA[205]+ZMa(ZA[201],ZA[198],ZA[204])+ZR30(ZA[204]);
-ZA[208]=(ZCh(ZA[206],ZA[203],ZA[200])+ZA[197]+ZA[51]+0x84c87814U)+ZR26(ZA[206]);
-ZA[53]=ZR15(ZA[51])+ZA[46]+ZR25(ZA[38])+ZA[37];
-ZA[209]=ZA[198]+ZA[208];
-ZA[210]=ZA[208]+ZMa(ZA[204],ZA[201],ZA[207])+ZR30(ZA[207]);
-ZA[211]=(ZCh(ZA[209],ZA[206],ZA[203])+ZA[200]+ZA[52]+0x8cc70208U)+ZR26(ZA[209]);
-ZA[54]=ZR15(ZA[52])+ZA[47]+ZR25(ZA[39])+ZA[38];
-ZA[212]=ZA[201]+ZA[211];
-ZA[213]=ZA[211]+ZMa(ZA[207],ZA[204],ZA[210])+ZR30(ZA[210]);
-ZA[214]=(ZCh(ZA[212],ZA[209],ZA[206])+ZA[203]+ZA[53]+0x90befffaU)+ZR26(ZA[212]);
-ZA[215]=ZA[204]+ZA[214];
-ZA[216]=ZA[214]+ZMa(ZA[210],ZA[207],ZA[213])+ZR30(ZA[213]);
-ZA[217]=(ZCh(ZA[215],ZA[212],ZA[209])+ZA[206]+ZA[54]+0xa4506cebU)+ZR26(ZA[215]);
-ZA[219]=ZA[217]+ZMa(ZA[213],ZA[210],ZA[216])+ZR30(ZA[216]);
-ZA[218]=ZA[207]+ZA[217];
-ZA[220]=(ZCh(ZA[218],ZA[215],ZA[212])+ZA[209]+ZR15(ZA[53])+ZA[48]+ZR25(ZA[40])+ZA[39]+0xbef9a3f7U)+ZR26(ZA[218]);
-ZA[221]=ZA[210]+ZA[220];
-ZA[222]=ZA[220]+ZMa(ZA[216],ZA[213],ZA[219])+ZR30(ZA[219]);
-ZA[223]=(ZCh(ZA[221],ZA[218],ZA[215])+ZA[212]+ZR15(ZA[54])+ZA[49]+ZR25(ZA[41])+ZA[40]+0xc67178f2U)+ZR26(ZA[221]);
-ZA[225]=ZA[222]+state1;
-ZA[224]=ZA[223]+ZMa(ZA[219],ZA[216],ZA[222])+ZR30(ZA[222])+state0;
-ZA[235]=ZA[224]+0x98c7e2a2U;
-ZA[238]=(ZCh(ZA[235],0x510e527fU,0x9b05688cU)+ZA[225]+0x90bb1e3cU)+ZR26(ZA[235]);
-ZA[226]=ZA[219]+state2;
-ZA[236]=ZA[224]+0xfc08884dU;
-ZA[242]=ZA[238]+0x3c6ef372U;
-ZA[243]=(ZCh(ZA[242],ZA[235],0x510e527fU)+ZA[226]+0x50c6645bU)+ZR26(ZA[242]);
-ZA[227]=ZA[216]+state3;
-ZA[239]=ZA[238]+ZMa(0x6a09e667U,0xbb67ae85U,ZA[236])+ZR30(ZA[236]);
-ZA[244]=ZA[243]+0xbb67ae85U;
-ZA[246]=(ZCh(ZA[244],ZA[242],ZA[235])+ZA[227]+0x3ac42e24U)+ZR26(ZA[244]);
-ZA[228]=ZA[213]+ZA[223]+state4;
-ZA[247]=ZA[246]+0x6a09e667U;
-ZA[245]=ZMa(ZA[236],0x6a09e667U,ZA[239])+ZR30(ZA[239])+ZA[243];
-ZA[229]=ZA[221]+state5;
-ZA[249]=(ZCh(ZA[247],ZA[244],ZA[242])+ZA[228]+ZA[224]+0xd21ea4fdU)+ZR26(ZA[247]);
-ZA[250]=ZA[236]+ZA[249];
-ZA[248]=ZA[246]+ZMa(ZA[239],ZA[236],ZA[245])+ZR30(ZA[245]);
-ZA[230]=ZA[218]+state6;
-ZA[253]=(ZCh(ZA[250],ZA[247],ZA[244])+ZA[242]+ZA[229]+0x59f111f1U)+ZR26(ZA[250]);
-ZA[254]=ZA[239]+ZA[253];
-ZA[251]=ZA[249]+ZMa(ZA[245],ZA[239],ZA[248])+ZR30(ZA[248]);
-ZA[231]=ZA[215]+state7;
-ZA[256]=(ZCh(ZA[254],ZA[250],ZA[247])+ZA[244]+ZA[230]+0x923f82a4U)+ZR26(ZA[254]);
-ZA[257]=ZA[245]+ZA[256];
-ZA[255]=ZA[253]+ZMa(ZA[248],ZA[245],ZA[251])+ZR30(ZA[251]);
-ZA[260]=(ZCh(ZA[257],ZA[254],ZA[250])+ZA[247]+ZA[231]+0xab1c5ed5U)+ZR26(ZA[257]);
-ZA[261]=ZA[248]+ZA[260];
-ZA[258]=ZMa(ZA[251],ZA[248],ZA[255])+ZR30(ZA[255])+ZA[256];
-ZA[263]=(ZCh(ZA[261],ZA[257],ZA[254])+ZA[250]+0x5807aa98U)+ZR26(ZA[261]);
-ZA[264]=ZA[251]+ZA[263];
-ZA[262]=ZMa(ZA[255],ZA[251],ZA[258])+ZR30(ZA[258])+ZA[260];
-ZA[267]=(ZCh(ZA[264],ZA[261],ZA[257])+ZA[254]+0x12835b01U)+ZR26(ZA[264]);
-ZA[268]=ZA[255]+ZA[267];
-ZA[265]=ZMa(ZA[258],ZA[255],ZA[262])+ZR30(ZA[262])+ZA[263];
-ZA[270]=(ZCh(ZA[268],ZA[264],ZA[261])+ZA[257]+0x243185beU)+ZR26(ZA[268]);
-ZA[271]=ZA[258]+ZA[270];
-ZA[269]=ZMa(ZA[262],ZA[258],ZA[265])+ZR30(ZA[265])+ZA[267];
-ZA[275]=(ZCh(ZA[271],ZA[268],ZA[264])+ZA[261]+0x550c7dc3U)+ZR26(ZA[271]);
-ZA[276]=ZA[262]+ZA[275];
-ZA[272]=ZMa(ZA[265],ZA[262],ZA[269])+ZR30(ZA[269])+ZA[270];
-ZA[278]=(ZCh(ZA[276],ZA[271],ZA[268])+ZA[264]+0x72be5d74U)+ZR26(ZA[276]);
-ZA[279]=ZA[265]+ZA[278];
-ZA[277]=ZMa(ZA[269],ZA[265],ZA[272])+ZR30(ZA[272])+ZA[275];
-ZA[283]=(ZCh(ZA[279],ZA[276],ZA[271])+ZA[268]+0x80deb1feU)+ZR26(ZA[279]);
-ZA[284]=ZA[269]+ZA[283];
-ZA[280]=ZA[278]+ZMa(ZA[272],ZA[269],ZA[277])+ZR30(ZA[277]);
-ZA[286]=(ZCh(ZA[284],ZA[279],ZA[276])+ZA[271]+0x9bdc06a7U)+ZR26(ZA[284]);
-ZA[237]=ZR25(ZA[225])+ZA[224];
-ZA[287]=ZA[272]+ZA[286];
-ZA[285]=ZA[283]+ZMa(ZA[277],ZA[272],ZA[280])+ZR30(ZA[280]);
-ZA[289]=(ZCh(ZA[287],ZA[284],ZA[279])+ZA[276]+0xc19bf274U)+ZR26(ZA[287]);
-ZA[232]=ZR25(ZA[226])+ZA[225]+0x00a00000U;
-ZA[290]=ZA[277]+ZA[289];
-ZA[288]=ZA[286]+ZMa(ZA[280],ZA[277],ZA[285])+ZR30(ZA[285]);
-ZA[292]=(ZCh(ZA[290],ZA[287],ZA[284])+ZA[279]+ZA[237]+0xe49b69c1U)+ZR26(ZA[290]);
-ZA[293]=ZA[280]+ZA[292];
-ZA[291]=ZA[289]+ZMa(ZA[285],ZA[280],ZA[288])+ZR30(ZA[288]);
-ZA[295]=(ZCh(ZA[293],ZA[290],ZA[287])+ZA[284]+ZA[232]+0xefbe4786U)+ZR26(ZA[293]);
-ZA[240]=ZR15(ZA[237])+ZR25(ZA[227])+ZA[226];
-ZA[233]=ZR15(ZA[232])+ZA[227]+ZR25(ZA[228]);
-ZA[296]=ZA[285]+ZA[295];
-ZA[294]=ZA[292]+ZMa(ZA[288],ZA[285],ZA[291])+ZR30(ZA[291]);
-ZA[298]=(ZCh(ZA[296],ZA[293],ZA[290])+ZA[287]+0x0fc19dc6U+ZA[240])+ZR26(ZA[296]);
-ZA[252]=ZR15(ZA[240])+ZR25(ZA[229])+ZA[228];
-ZA[299]=ZA[288]+ZA[298];
-ZA[297]=ZA[295]+ZMa(ZA[291],ZA[288],ZA[294])+ZR30(ZA[294]);
-ZA[301]=(ZCh(ZA[299],ZA[296],ZA[293])+ZA[290]+ZA[233]+0x240ca1ccU)+ZR26(ZA[299]);
-ZA[234]=ZR15(ZA[233])+ZR25(ZA[230])+ZA[229];
-ZA[302]=ZA[291]+ZA[301];
-ZA[300]=ZA[298]+ZMa(ZA[294],ZA[291],ZA[297])+ZR30(ZA[297]);
-ZA[310]=(ZCh(ZA[302],ZA[299],ZA[296])+ZA[293]+ZA[252]+0x2de92c6fU)+ZR26(ZA[302]);
-ZA[259]=ZR15(ZA[252])+ZA[230]+0x00000100U+ZR25(ZA[231]);
-ZA[335]=ZA[294]+ZA[310];
-ZA[303]=ZA[301]+ZMa(ZA[297],ZA[294],ZA[300])+ZR30(ZA[300]);
-ZA[337]=(ZCh(ZA[335],ZA[302],ZA[299])+ZA[296]+ZA[234]+0x4a7484aaU)+ZR26(ZA[335]);
-ZA[241]=ZA[237]+ZR15(ZA[234])+ZA[231]+0x11002000U;
-ZA[338]=ZA[297]+ZA[337];
-ZA[336]=ZMa(ZA[300],ZA[297],ZA[303])+ZR30(ZA[303])+ZA[310];
-ZA[340]=(ZCh(ZA[338],ZA[335],ZA[302])+ZA[299]+ZA[259]+0x5cb0a9dcU)+ZR26(ZA[338]);
-ZA[266]=ZR15(ZA[259])+ZA[232]+0x80000000U;
-ZA[341]=ZA[300]+ZA[340];
-ZA[339]=ZMa(ZA[303],ZA[300],ZA[336])+ZR30(ZA[336])+ZA[337];
-ZA[343]=(ZCh(ZA[341],ZA[338],ZA[335])+ZA[302]+ZA[241]+0x76f988daU)+ZR26(ZA[341]);
-ZA[273]=ZR15(ZA[241])+ZA[240];
-ZA[344]=ZA[303]+ZA[343];
-ZA[342]=ZMa(ZA[336],ZA[303],ZA[339])+ZR30(ZA[339])+ZA[340];
-ZA[346]=(ZCh(ZA[344],ZA[341],ZA[338])+ZA[335]+ZA[266]+0x983e5152U)+ZR26(ZA[344]);
-ZA[274]=ZR15(ZA[266])+ZA[233];
-ZA[347]=ZA[336]+ZA[346];
-ZA[345]=ZA[343]+ZMa(ZA[339],ZA[336],ZA[342])+ZR30(ZA[342]);
-ZA[349]=(ZCh(ZA[347],ZA[344],ZA[341])+ZA[338]+ZA[273]+0xa831c66dU)+ZR26(ZA[347]);
-ZA[281]=ZR15(ZA[273])+ZA[252];
-ZA[350]=ZA[339]+ZA[349];
-ZA[348]=ZA[346]+ZMa(ZA[342],ZA[339],ZA[345])+ZR30(ZA[345]);
-ZA[352]=(ZCh(ZA[350],ZA[347],ZA[344])+ZA[341]+ZA[274]+0xb00327c8U)+ZR26(ZA[350]);
-ZA[282]=ZR15(ZA[274])+ZA[234];
-ZA[353]=ZA[342]+ZA[352];
-ZA[351]=ZA[349]+ZMa(ZA[345],ZA[342],ZA[348])+ZR30(ZA[348]);
-ZA[355]=(ZCh(ZA[353],ZA[350],ZA[347])+ZA[344]+ZA[281]+0xbf597fc7U)+ZR26(ZA[353]);
-ZA[304]=ZR15(ZA[281])+ZA[259];
-ZA[356]=ZA[345]+ZA[355];
-ZA[354]=ZA[352]+ZMa(ZA[348],ZA[345],ZA[351])+ZR30(ZA[351]);
-ZA[358]=(ZCh(ZA[356],ZA[353],ZA[350])+ZA[347]+ZA[282]+0xc6e00bf3U)+ZR26(ZA[356]);
-ZA[305]=ZR15(ZA[282])+ZA[241]+0x00400022U;
-ZA[359]=ZA[348]+ZA[358];
-ZA[357]=ZA[355]+ZMa(ZA[351],ZA[348],ZA[354])+ZR30(ZA[354]);
-ZA[361]=(ZCh(ZA[359],ZA[356],ZA[353])+ZA[350]+ZA[304]+0xd5a79147U)+ZR26(ZA[359]);
-ZA[306]=ZR15(ZA[304])+ZA[266]+ZR25(ZA[237])+0x00000100U;
-ZA[362]=ZA[351]+ZA[361];
-ZA[360]=ZA[358]+ZMa(ZA[354],ZA[351],ZA[357])+ZR30(ZA[357]);
-ZA[364]=(ZCh(ZA[362],ZA[359],ZA[356])+ZA[353]+ZA[305]+0x06ca6351U)+ZR26(ZA[362]);
-ZA[307]=ZR15(ZA[305])+ZR25(ZA[232])+ZA[237]+ZA[273];
-ZA[365]=ZA[354]+ZA[364];
-ZA[363]=ZA[361]+ZMa(ZA[357],ZA[354],ZA[360])+ZR30(ZA[360]);
-ZA[367]=(ZCh(ZA[365],ZA[362],ZA[359])+ZA[356]+ZA[306]+0x14292967U)+ZR26(ZA[365]);
-ZA[308]=ZR15(ZA[306])+ZR25(ZA[240])+ZA[274]+ZA[232];
-ZA[368]=ZA[357]+ZA[367];
-ZA[366]=ZA[364]+ZMa(ZA[360],ZA[357],ZA[363])+ZR30(ZA[363]);
-ZA[370]=(ZCh(ZA[368],ZA[365],ZA[362])+ZA[359]+ZA[307]+0x27b70a85U)+ZR26(ZA[368]);
-ZA[309]=ZR15(ZA[307])+ZA[281]+ZR25(ZA[233])+ZA[240];
-ZA[371]=ZA[360]+ZA[370];
-ZA[369]=ZA[367]+ZMa(ZA[363],ZA[360],ZA[366])+ZR30(ZA[366]);
-ZA[373]=(ZCh(ZA[371],ZA[368],ZA[365])+ZA[362]+ZA[308]+0x2e1b2138U)+ZR26(ZA[371]);
-ZA[311]=ZR15(ZA[308])+ZA[282]+ZR25(ZA[252])+ZA[233];
-ZA[374]=ZA[363]+ZA[373];
-ZA[372]=ZA[370]+ZMa(ZA[366],ZA[363],ZA[369])+ZR30(ZA[369]);
-ZA[376]=(ZCh(ZA[374],ZA[371],ZA[368])+ZA[365]+ZA[309]+0x4d2c6dfcU)+ZR26(ZA[374]);
-ZA[312]=ZR15(ZA[309])+ZR25(ZA[234])+ZA[252]+ZA[304];
-ZA[377]=ZA[366]+ZA[376];
-ZA[375]=ZA[373]+ZMa(ZA[369],ZA[366],ZA[372])+ZR30(ZA[372]);
-ZA[379]=(ZCh(ZA[377],ZA[374],ZA[371])+ZA[368]+ZA[311]+0x53380d13U)+ZR26(ZA[377]);
-ZA[313]=ZR15(ZA[311])+ZA[305]+ZR25(ZA[259])+ZA[234];
-ZA[380]=ZA[369]+ZA[379];
-ZA[378]=ZA[376]+ZMa(ZA[372],ZA[369],ZA[375])+ZR30(ZA[375]);
-ZA[382]=(ZCh(ZA[380],ZA[377],ZA[374])+ZA[371]+ZA[312]+0x650a7354U)+ZR26(ZA[380]);
-ZA[314]=ZR15(ZA[312])+ZA[306]+ZR25(ZA[241])+ZA[259];
-ZA[383]=ZA[372]+ZA[382];
-ZA[381]=ZA[379]+ZMa(ZA[375],ZA[372],ZA[378])+ZR30(ZA[378]);
-ZA[385]=(ZCh(ZA[383],ZA[380],ZA[377])+ZA[374]+ZA[313]+0x766a0abbU)+ZR26(ZA[383]);
-ZA[315]=ZR15(ZA[313])+ZA[307]+ZR25(ZA[266])+ZA[241];
-ZA[386]=ZA[375]+ZA[385];
-ZA[384]=ZA[382]+ZMa(ZA[378],ZA[375],ZA[381])+ZR30(ZA[381]);
-ZA[388]=(ZCh(ZA[386],ZA[383],ZA[380])+ZA[377]+ZA[314]+0x81c2c92eU)+ZR26(ZA[386]);
-ZA[316]=ZR15(ZA[314])+ZA[308]+ZR25(ZA[273])+ZA[266];
-ZA[389]=ZA[378]+ZA[388];
-ZA[387]=ZA[385]+ZMa(ZA[381],ZA[378],ZA[384])+ZR30(ZA[384]);
-ZA[391]=(ZCh(ZA[389],ZA[386],ZA[383])+ZA[380]+ZA[315]+0x92722c85U)+ZR26(ZA[389]);
-ZA[317]=ZR15(ZA[315])+ZA[309]+ZR25(ZA[274])+ZA[273];
-ZA[392]=ZA[381]+ZA[391];
-ZA[390]=ZA[388]+ZMa(ZA[384],ZA[381],ZA[387])+ZR30(ZA[387]);
-ZA[394]=(ZCh(ZA[392],ZA[389],ZA[386])+ZA[383]+ZA[316]+0xa2bfe8a1U)+ZR26(ZA[392]);
-ZA[318]=ZR15(ZA[316])+ZA[311]+ZR25(ZA[281])+ZA[274];
-ZA[395]=ZA[384]+ZA[394];
-ZA[393]=ZA[391]+ZMa(ZA[387],ZA[384],ZA[390])+ZR30(ZA[390]);
-ZA[397]=(ZCh(ZA[395],ZA[392],ZA[389])+ZA[386]+ZA[317]+0xa81a664bU)+ZR26(ZA[395]);
-ZA[319]=ZR15(ZA[317])+ZA[312]+ZR25(ZA[282])+ZA[281];
-ZA[398]=ZA[387]+ZA[397];
-ZA[396]=ZA[394]+ZMa(ZA[390],ZA[387],ZA[393])+ZR30(ZA[393]);
-ZA[400]=(ZCh(ZA[398],ZA[395],ZA[392])+ZA[389]+ZA[318]+0xc24b8b70U)+ZR26(ZA[398]);
-ZA[320]=ZR15(ZA[318])+ZA[313]+ZR25(ZA[304])+ZA[282];
-ZA[401]=ZA[390]+ZA[400];
-ZA[399]=ZA[397]+ZMa(ZA[393],ZA[390],ZA[396])+ZR30(ZA[396]);
-ZA[403]=(ZCh(ZA[401],ZA[398],ZA[395])+ZA[392]+ZA[319]+0xc76c51a3U)+ZR26(ZA[401]);
-ZA[321]=ZR15(ZA[319])+ZA[314]+ZR25(ZA[305])+ZA[304];
-ZA[404]=ZA[393]+ZA[403];
-ZA[402]=ZA[400]+ZMa(ZA[396],ZA[393],ZA[399])+ZR30(ZA[399]);
-ZA[406]=(ZCh(ZA[404],ZA[401],ZA[398])+ZA[395]+ZA[320]+0xd192e819U)+ZR26(ZA[404]);
-ZA[322]=ZR15(ZA[320])+ZA[315]+ZR25(ZA[306])+ZA[305];
-ZA[407]=ZA[396]+ZA[406];
-ZA[405]=ZA[403]+ZMa(ZA[399],ZA[396],ZA[402])+ZR30(ZA[402]);
-ZA[409]=(ZCh(ZA[407],ZA[404],ZA[401])+ZA[398]+ZA[321]+0xd6990624U)+ZR26(ZA[407]);
-ZA[323]=ZR15(ZA[321])+ZA[316]+ZR25(ZA[307])+ZA[306];
-ZA[410]=ZA[399]+ZA[409];
-ZA[408]=ZA[406]+ZMa(ZA[402],ZA[399],ZA[405])+ZR30(ZA[405]);
-ZA[412]=(ZCh(ZA[410],ZA[407],ZA[404])+ZA[401]+ZA[322]+0xf40e3585U)+ZR26(ZA[410]);
-ZA[324]=ZR15(ZA[322])+ZA[317]+ZR25(ZA[308])+ZA[307];
-ZA[413]=ZA[402]+ZA[412];
-ZA[411]=ZA[409]+ZMa(ZA[405],ZA[402],ZA[408])+ZR30(ZA[408]);
-ZA[415]=(ZCh(ZA[413],ZA[410],ZA[407])+ZA[404]+ZA[323]+0x106aa070U)+ZR26(ZA[413]);
-ZA[325]=ZR15(ZA[323])+ZA[318]+ZR25(ZA[309])+ZA[308];
-ZA[416]=ZA[405]+ZA[415];
-ZA[414]=ZA[412]+ZMa(ZA[408],ZA[405],ZA[411])+ZR30(ZA[411]);
-ZA[418]=(ZCh(ZA[416],ZA[413],ZA[410])+ZA[407]+ZA[324]+0x19a4c116U)+ZR26(ZA[416]);
-ZA[326]=ZR15(ZA[324])+ZA[319]+ZR25(ZA[311])+ZA[309];
-ZA[419]=ZA[408]+ZA[418];
-ZA[417]=ZA[415]+ZMa(ZA[411],ZA[408],ZA[414])+ZR30(ZA[414]);
-ZA[421]=(ZCh(ZA[419],ZA[416],ZA[413])+ZA[410]+ZA[325]+0x1e376c08U)+ZR26(ZA[419]);
-ZA[327]=ZR15(ZA[325])+ZA[320]+ZR25(ZA[312])+ZA[311];
-ZA[422]=ZA[411]+ZA[421];
-ZA[420]=ZA[418]+ZMa(ZA[414],ZA[411],ZA[417])+ZR30(ZA[417]);
-ZA[424]=(ZCh(ZA[422],ZA[419],ZA[416])+ZA[413]+ZA[326]+0x2748774cU)+ZR26(ZA[422]);
-ZA[328]=ZR15(ZA[326])+ZA[321]+ZR25(ZA[313])+ZA[312];
-ZA[425]=ZA[414]+ZA[424];
-ZA[423]=ZA[421]+ZMa(ZA[417],ZA[414],ZA[420])+ZR30(ZA[420]);
-ZA[427]=(ZCh(ZA[425],ZA[422],ZA[419])+ZA[416]+ZA[327]+0x34b0bcb5U)+ZR26(ZA[425]);
-ZA[329]=ZR15(ZA[327])+ZA[322]+ZR25(ZA[314])+ZA[313];
-ZA[428]=ZA[417]+ZA[427];
-ZA[426]=ZA[424]+ZMa(ZA[420],ZA[417],ZA[423])+ZR30(ZA[423]);
-ZA[430]=(ZCh(ZA[428],ZA[425],ZA[422])+ZA[419]+ZA[328]+0x391c0cb3U)+ZR26(ZA[428]);
-ZA[330]=ZR15(ZA[328])+ZA[323]+ZR25(ZA[315])+ZA[314];
-ZA[431]=ZA[420]+ZA[430];
-ZA[429]=ZA[427]+ZMa(ZA[423],ZA[420],ZA[426])+ZR30(ZA[426]);
-ZA[433]=(ZCh(ZA[431],ZA[428],ZA[425])+ZA[422]+ZA[329]+0x4ed8aa4aU)+ZR26(ZA[431]);
-ZA[331]=ZR15(ZA[329])+ZA[324]+ZR25(ZA[316])+ZA[315];
-ZA[434]=ZA[423]+ZA[433];
-ZA[432]=ZA[430]+ZMa(ZA[426],ZA[423],ZA[429])+ZR30(ZA[429]);
-ZA[436]=(ZCh(ZA[434],ZA[431],ZA[428])+ZA[425]+ZA[330]+0x5b9cca4fU)+ZR26(ZA[434]);
-ZA[332]=ZR15(ZA[330])+ZA[325]+ZR25(ZA[317])+ZA[316];
-ZA[437]=ZA[426]+ZA[436];
-ZA[435]=ZA[433]+ZMa(ZA[429],ZA[426],ZA[432])+ZR30(ZA[432]);
-ZA[439]=(ZCh(ZA[437],ZA[434],ZA[431])+ZA[428]+ZA[331]+0x682e6ff3U)+ZR26(ZA[437]);
-ZA[333]=ZR15(ZA[331])+ZA[326]+ZR25(ZA[318])+ZA[317];
-ZA[440]=ZA[429]+ZA[439];
-ZA[438]=ZA[436]+ZMa(ZA[432],ZA[429],ZA[435])+ZR30(ZA[435]);
-ZA[442]=(ZCh(ZA[440],ZA[437],ZA[434])+ZA[431]+ZA[332]+0x748f82eeU)+ZR26(ZA[440]);
-ZA[334]=ZR15(ZA[332])+ZA[327]+ZR25(ZA[319])+ZA[318];
-ZA[443]=ZA[432]+ZA[442];
-ZA[441]=ZA[439]+ZMa(ZA[435],ZA[432],ZA[438])+ZR30(ZA[438]);
-ZA[444]=(ZCh(ZA[443],ZA[440],ZA[437])+ZA[434]+ZA[435]+ZA[333]+0x78a5636fU)+ZR26(ZA[443]);
-ZA[445]=(ZCh(ZA[444],ZA[443],ZA[440])+ZA[438]+ZA[437]+ZA[334]+0x84c87814U)+ZR26(ZA[444]);
-ZA[446]=(ZCh(ZA[445],ZA[444],ZA[443])+ZA[441]+ZA[440]+ZR15(ZA[333])+ZA[328]+ZR25(ZA[320])+ZA[319]+0x8cc70208U)+ZR26(ZA[445]);
-ZA[447]=(ZCh(ZA[446],ZA[445],ZA[444])+ZA[442]+ZMa(ZA[438],ZA[435],ZA[441])+ZR30(ZA[441])+ZA[443]+ZR15(ZA[334])+ZA[329]+ZR25(ZA[321])+ZA[320])+ZR26(ZA[446]);
+ZA[12]=ZA[7]+ZMa(ZA[11],ZA[10],ZA[6])+ZR30(ZA[6]);
+ZA[7]=ZA[2]+ZA[7];
+ZA[8]=(ZCh(ZA[7],ZA[5],ZA[4])+ZA[8]+ZA[3]+0x240ca1ccU)+ZR26(ZA[7]);
+ZA[2]=ZR15(ZA[3]);
+ZA[13]=ZA[8]+ZMa(ZA[6],ZA[11],ZA[12])+ZR30(ZA[12]);
+ZA[10]=ZA[10]+ZA[8];
+ZA[4]=(ZCh(ZA[10],ZA[7],ZA[5])+ZA[4]+ZA[1]+0x2de92c6fU)+ZR26(ZA[10]);
+ZA[8]=ZR15(ZA[1])+0x00000280U;
+ZA[14]=ZA[4]+ZMa(ZA[12],ZA[6],ZA[13])+ZR30(ZA[13]);
+ZA[4]=ZA[11]+ZA[4];
+ZA[5]=(ZCh(ZA[4],ZA[10],ZA[7])+ZA[5]+ZA[2]+0x4a7484aaU)+ZR26(ZA[4]);
+ZA[11]=ZR15(ZA[2])+W16;
+ZA[15]=ZA[5]+ZMa(ZA[13],ZA[12],ZA[14])+ZR30(ZA[14]);
+ZA[5]=ZA[6]+ZA[5];
+ZA[6]=(ZCh(ZA[5],ZA[4],ZA[10])+ZA[7]+ZA[8]+0x5cb0a9dcU)+ZR26(ZA[5]);
+ZA[7]=ZR15(ZA[8])+W17;
+ZA[16]=ZA[6]+ZMa(ZA[14],ZA[13],ZA[15])+ZR30(ZA[15]);
+ZA[6]=ZA[12]+ZA[6];
+ZA[10]=(ZCh(ZA[6],ZA[5],ZA[4])+ZA[10]+ZA[11]+0x76f988daU)+ZR26(ZA[6]);
+ZA[12]=ZR15(ZA[11])+ZA[0];
+ZA[17]=ZA[10]+ZMa(ZA[15],ZA[14],ZA[16])+ZR30(ZA[16]);
+ZA[10]=ZA[13]+ZA[10];
+ZA[13]=(ZCh(ZA[10],ZA[6],ZA[5])+ZA[4]+ZA[7]+0x983e5152U)+ZR26(ZA[10]);
+ZA[4]=ZR15(ZA[7])+ZA[3];
+ZA[14]=ZA[14]+ZA[13];
+ZA[13]=ZA[13]+ZMa(ZA[16],ZA[15],ZA[17])+ZR30(ZA[17]);
+ZA[5]=(ZCh(ZA[14],ZA[10],ZA[6])+ZA[5]+ZA[12]+0xa831c66dU)+ZR26(ZA[14]);
+ZA[9]=ZR15(ZA[12])+ZA[1];
+ZA[18]=ZA[5]+ZMa(ZA[17],ZA[16],ZA[13])+ZR30(ZA[13]);
+ZA[5]=ZA[15]+ZA[5];
+ZA[15]=(ZCh(ZA[5],ZA[14],ZA[10])+ZA[6]+ZA[4]+0xb00327c8U)+ZR26(ZA[5]);
+ZA[6]=ZR15(ZA[4])+ZA[2];
+ZA[19]=ZA[15]+ZMa(ZA[13],ZA[17],ZA[18])+ZR30(ZA[18]);
+ZA[15]=ZA[16]+ZA[15];
+ZA[16]=(ZCh(ZA[15],ZA[5],ZA[14])+ZA[10]+ZA[9]+0xbf597fc7U)+ZR26(ZA[15]);
+ZA[10]=ZR15(ZA[9])+ZA[8];
+ZA[20]=ZA[16]+ZMa(ZA[18],ZA[13],ZA[19])+ZR30(ZA[19]);
+ZA[16]=ZA[17]+ZA[16];
+ZA[14]=(ZCh(ZA[16],ZA[15],ZA[5])+ZA[14]+ZA[6]+0xc6e00bf3U)+ZR26(ZA[16]);
+ZA[17]=ZR15(ZA[6])+ZA[11]+0x00A00055U;
+ZA[21]=ZA[14]+ZMa(ZA[19],ZA[18],ZA[20])+ZR30(ZA[20]);
+ZA[14]=ZA[13]+ZA[14];
+ZA[13]=(ZCh(ZA[14],ZA[16],ZA[15])+ZA[5]+ZA[10]+0xd5a79147U)+ZR26(ZA[14]);
+ZA[5]=ZR15(ZA[10])+ZA[7]+W31;
+ZA[22]=ZA[13]+ZMa(ZA[20],ZA[19],ZA[21])+ZR30(ZA[21]);
+ZA[13]=ZA[18]+ZA[13];
+ZA[18]=(ZCh(ZA[13],ZA[14],ZA[16])+ZA[15]+ZA[17]+0x06ca6351U)+ZR26(ZA[13]);
+ZA[15]=ZR15(ZA[17])+ZA[12]+W32;
+ZA[23]=ZA[18]+ZMa(ZA[21],ZA[20],ZA[22])+ZR30(ZA[22]);
+ZA[18]=ZA[19]+ZA[18];
+ZA[19]=(ZCh(ZA[18],ZA[13],ZA[14])+ZA[16]+ZA[5]+0x14292967U)+ZR26(ZA[18]);
+ZA[16]=ZR15(ZA[5])+ZA[4]+ZR25(ZA[0])+W17;
+ZA[20]=ZA[20]+ZA[19];
+ZA[19]=ZA[19]+ZMa(ZA[22],ZA[21],ZA[23])+ZR30(ZA[23]);
+ZA[14]=(ZCh(ZA[20],ZA[18],ZA[13])+ZA[14]+ZA[15]+0x27b70a85U)+ZR26(ZA[20]);
+ZA[0]=ZR15(ZA[15])+ZR25(ZA[3])+ZA[0]+ZA[9];
+ZA[24]=ZA[14]+ZMa(ZA[23],ZA[22],ZA[19])+ZR30(ZA[19]);
+ZA[14]=ZA[21]+ZA[14];
+ZA[21]=(ZCh(ZA[14],ZA[20],ZA[18])+ZA[13]+ZA[16]+0x2e1b2138U)+ZR26(ZA[14]);
+ZA[3]=ZR15(ZA[16])+ZA[3]+ZR25(ZA[1])+ZA[6];
+ZA[22]=ZA[22]+ZA[21];
+ZA[21]=ZA[21]+ZMa(ZA[19],ZA[23],ZA[24])+ZR30(ZA[24]);
+ZA[13]=(ZCh(ZA[22],ZA[14],ZA[20])+ZA[18]+ZA[0]+0x4d2c6dfcU)+ZR26(ZA[22]);
+ZA[1]=ZR15(ZA[0])+ZR25(ZA[2])+ZA[1]+ZA[10];
+ZA[18]=ZA[13]+ZMa(ZA[24],ZA[19],ZA[21])+ZR30(ZA[21]);
+ZA[13]=ZA[23]+ZA[13];
+ZA[20]=(ZCh(ZA[13],ZA[22],ZA[14])+ZA[20]+ZA[3]+0x53380d13U)+ZR26(ZA[13]);
+ZA[2]=ZR15(ZA[3])+ZA[2]+ZR25(ZA[8])+ZA[17];
+ZA[23]=ZA[19]+ZA[20];
+ZA[20]=ZA[20]+ZMa(ZA[21],ZA[24],ZA[18])+ZR30(ZA[18]);
+ZA[19]=(ZCh(ZA[23],ZA[13],ZA[22])+ZA[14]+ZA[1]+0x650a7354U)+ZR26(ZA[23]);
+ZA[8]=ZR15(ZA[1])+ZR25(ZA[11])+ZA[8]+ZA[5];
+ZA[14]=ZA[19]+ZMa(ZA[18],ZA[21],ZA[20])+ZR30(ZA[20]);
+ZA[19]=ZA[24]+ZA[19];
+ZA[22]=(ZCh(ZA[19],ZA[23],ZA[13])+ZA[22]+ZA[2]+0x766a0abbU)+ZR26(ZA[19]);
+ZA[11]=ZR15(ZA[2])+ZA[11]+ZR25(ZA[7])+ZA[15];
+ZA[24]=ZA[21]+ZA[22];
+ZA[22]=ZA[22]+ZMa(ZA[20],ZA[18],ZA[14])+ZR30(ZA[14]);
+ZA[21]=(ZCh(ZA[24],ZA[19],ZA[23])+ZA[13]+ZA[8]+0x81c2c92eU)+ZR26(ZA[24]);
+ZA[7]=ZR15(ZA[8])+ZR25(ZA[12])+ZA[7]+ZA[16];
+ZA[18]=ZA[18]+ZA[21];
+ZA[21]=ZA[21]+ZMa(ZA[14],ZA[20],ZA[22])+ZR30(ZA[22]);
+ZA[23]=(ZCh(ZA[18],ZA[24],ZA[19])+ZA[23]+ZA[11]+0x92722c85U)+ZR26(ZA[18]);
+ZA[12]=ZR15(ZA[11])+ZR25(ZA[4])+ZA[12]+ZA[0];
+ZA[20]=ZA[20]+ZA[23];
+ZA[13]=ZA[23]+ZMa(ZA[22],ZA[14],ZA[21])+ZR30(ZA[21]);
+ZA[23]=(ZCh(ZA[20],ZA[18],ZA[24])+ZA[19]+ZA[7]+0xa2bfe8a1U)+ZR26(ZA[20]);
+ZA[4]=ZR15(ZA[7])+ZR25(ZA[9])+ZA[4]+ZA[3];
+ZA[14]=ZA[14]+ZA[23];
+ZA[23]=ZA[23]+ZMa(ZA[21],ZA[22],ZA[13])+ZR30(ZA[13]);
+ZA[24]=(ZCh(ZA[14],ZA[20],ZA[18])+ZA[24]+ZA[12]+0xa81a664bU)+ZR26(ZA[14]);
+ZA[9]=ZR15(ZA[12])+ZA[1]+ZR25(ZA[6])+ZA[9];
+ZA[19]=ZA[24]+ZMa(ZA[13],ZA[21],ZA[23])+ZR30(ZA[23]);
+ZA[22]=ZA[22]+ZA[24];
+ZA[18]=(ZCh(ZA[22],ZA[14],ZA[20])+ZA[18]+ZA[4]+0xc24b8b70U)+ZR26(ZA[22]);
+ZA[6]=ZR15(ZA[4])+ZA[2]+ZR25(ZA[10])+ZA[6];
+ZA[24]=ZA[21]+ZA[18];
+ZA[18]=ZA[18]+ZMa(ZA[23],ZA[13],ZA[19])+ZR30(ZA[19]);
+ZA[20]=(ZCh(ZA[24],ZA[22],ZA[14])+ZA[20]+ZA[9]+0xc76c51a3U)+ZR26(ZA[24]);
+ZA[10]=ZR15(ZA[9])+ZR25(ZA[17])+ZA[10]+ZA[8];
+ZA[13]=ZA[13]+ZA[20];
+ZA[20]=ZA[20]+ZMa(ZA[19],ZA[23],ZA[18])+ZR30(ZA[18]);
+ZA[14]=(ZCh(ZA[13],ZA[24],ZA[22])+ZA[14]+ZA[6]+0xd192e819U)+ZR26(ZA[13]);
+ZA[17]=ZR15(ZA[6])+ZR25(ZA[5])+ZA[17]+ZA[11];
+ZA[21]=ZA[23]+ZA[14];
+ZA[14]=ZA[14]+ZMa(ZA[18],ZA[19],ZA[20])+ZR30(ZA[20]);
+ZA[22]=(ZCh(ZA[21],ZA[13],ZA[24])+ZA[22]+ZA[10]+0xd6990624U)+ZR26(ZA[21]);
+ZA[5]=ZR15(ZA[10])+ZA[7]+ZR25(ZA[15])+ZA[5];
+ZA[19]=ZA[19]+ZA[22];
+ZA[22]=ZA[22]+ZMa(ZA[20],ZA[18],ZA[14])+ZR30(ZA[14]);
+ZA[24]=(ZCh(ZA[19],ZA[21],ZA[13])+ZA[24]+ZA[17]+0xf40e3585U)+ZR26(ZA[19]);
+ZA[15]=ZR15(ZA[17])+ZA[12]+ZR25(ZA[16])+ZA[15];
+ZA[18]=ZA[18]+ZA[24];
+ZA[23]=ZA[24]+ZMa(ZA[14],ZA[20],ZA[22])+ZR30(ZA[22]);
+ZA[13]=(ZCh(ZA[18],ZA[19],ZA[21])+ZA[13]+ZA[5]+0x106aa070U)+ZR26(ZA[18]);
+ZA[16]=ZR15(ZA[5])+ZA[4]+ZR25(ZA[0])+ZA[16];
+ZA[20]=ZA[20]+ZA[13];
+ZA[13]=ZA[13]+ZMa(ZA[22],ZA[14],ZA[23])+ZR30(ZA[23]);
+ZA[21]=(ZCh(ZA[20],ZA[18],ZA[19])+ZA[21]+ZA[15]+0x19a4c116U)+ZR26(ZA[20]);
+ZA[0]=ZR15(ZA[15])+ZA[9]+ZR25(ZA[3])+ZA[0];
+ZA[14]=ZA[14]+ZA[21];
+ZA[24]=ZA[21]+ZMa(ZA[23],ZA[22],ZA[13])+ZR30(ZA[13]);
+ZA[19]=(ZCh(ZA[14],ZA[20],ZA[18])+ZA[19]+ZA[16]+0x1e376c08U)+ZR26(ZA[14]);
+ZA[3]=ZR15(ZA[16])+ZA[6]+ZR25(ZA[1])+ZA[3];
+ZA[22]=ZA[22]+ZA[19];
+ZA[19]=ZA[19]+ZMa(ZA[13],ZA[23],ZA[24])+ZR30(ZA[24]);
+ZA[18]=(ZCh(ZA[22],ZA[14],ZA[20])+ZA[18]+ZA[0]+0x2748774cU)+ZR26(ZA[22]);
+ZA[1]=ZR15(ZA[0])+ZA[10]+ZR25(ZA[2])+ZA[1];
+ZA[23]=ZA[23]+ZA[18];
+ZA[21]=ZA[18]+ZMa(ZA[24],ZA[13],ZA[19])+ZR30(ZA[19]);
+ZA[20]=(ZCh(ZA[23],ZA[22],ZA[14])+ZA[20]+ZA[3]+0x34b0bcb5U)+ZR26(ZA[23]);
+ZA[2]=ZR15(ZA[3])+ZA[17]+ZR25(ZA[8])+ZA[2];
+ZA[13]=ZA[13]+ZA[20];
+ZA[20]=ZA[20]+ZMa(ZA[19],ZA[24],ZA[21])+ZR30(ZA[21]);
+ZA[14]=(ZCh(ZA[13],ZA[23],ZA[22])+ZA[14]+ZA[1]+0x391c0cb3U)+ZR26(ZA[13]);
+ZA[8]=ZR15(ZA[1])+ZA[5]+ZR25(ZA[11])+ZA[8];
+ZA[24]=ZA[24]+ZA[14];
+ZA[18]=ZA[14]+ZMa(ZA[21],ZA[19],ZA[20])+ZR30(ZA[20]);
+ZA[22]=(ZCh(ZA[24],ZA[13],ZA[23])+ZA[22]+ZA[2]+0x4ed8aa4aU)+ZR26(ZA[24]);
+ZA[11]=ZR15(ZA[2])+ZA[15]+ZR25(ZA[7])+ZA[11];
+ZA[19]=ZA[19]+ZA[22];
+ZA[22]=ZA[22]+ZMa(ZA[20],ZA[21],ZA[18])+ZR30(ZA[18]);
+ZA[23]=(ZCh(ZA[19],ZA[24],ZA[13])+ZA[23]+ZA[8]+0x5b9cca4fU)+ZR26(ZA[19]);
+ZA[7]=ZR15(ZA[8])+ZA[16]+ZR25(ZA[12])+ZA[7];
+ZA[21]=ZA[21]+ZA[23];
+ZA[23]=ZA[23]+ZMa(ZA[18],ZA[20],ZA[22])+ZR30(ZA[22]);
+ZA[13]=(ZCh(ZA[21],ZA[19],ZA[24])+ZA[13]+ZA[11]+0x682e6ff3U)+ZR26(ZA[21]);
+ZA[0]=ZR15(ZA[11])+ZA[0]+ZR25(ZA[4])+ZA[12];
+ZA[12]=ZA[20]+ZA[13];
+ZA[16]=ZA[13]+ZMa(ZA[22],ZA[18],ZA[23])+ZR30(ZA[23]);
+ZA[20]=(ZCh(ZA[12],ZA[21],ZA[19])+ZA[24]+ZA[7]+0x748f82eeU)+ZR26(ZA[12]);
+ZA[3]=ZR15(ZA[7])+ZA[3]+ZR25(ZA[9])+ZA[4];
+ZA[18]=ZA[18]+ZA[20];
+ZA[20]=ZA[20]+ZMa(ZA[23],ZA[22],ZA[16])+ZR30(ZA[16]);
+ZA[19]=(ZCh(ZA[18],ZA[12],ZA[21])+ZA[19]+ZA[0]+0x78a5636fU)+ZR26(ZA[18]);
+ZA[1]=ZR15(ZA[0])+ZA[1]+ZR25(ZA[6])+ZA[9];
+ZA[9]=ZA[22]+ZA[19];
+ZA[4]=ZA[19]+ZMa(ZA[16],ZA[23],ZA[20])+ZR30(ZA[20]);
+ZA[0]=(ZCh(ZA[9],ZA[18],ZA[12])+ZA[21]+ZA[3]+0x84c87814U)+ZR26(ZA[9]);
+ZA[2]=ZR15(ZA[3])+ZA[2]+ZR25(ZA[10])+ZA[6];
+ZA[6]=ZA[23]+ZA[0];
+ZA[0]=ZA[0]+ZMa(ZA[20],ZA[16],ZA[4])+ZR30(ZA[4]);
+ZA[12]=(ZCh(ZA[6],ZA[9],ZA[18])+ZA[12]+ZA[1]+0x8cc70208U)+ZR26(ZA[6]);
+ZA[8]=ZR15(ZA[1])+ZA[8]+ZR25(ZA[17])+ZA[10];
+ZA[16]=ZA[16]+ZA[12];
+ZA[10]=ZA[12]+ZMa(ZA[4],ZA[20],ZA[0])+ZR30(ZA[0]);
+ZA[1]=(ZCh(ZA[16],ZA[6],ZA[9])+ZA[18]+ZA[2]+0x90befffaU)+ZR26(ZA[16]);
+ZA[3]=ZA[20]+ZA[1];
+ZA[1]=ZA[1]+ZMa(ZA[0],ZA[4],ZA[10])+ZR30(ZA[10]);
+ZA[9]=(ZCh(ZA[3],ZA[16],ZA[6])+ZA[9]+ZA[8]+0xa4506cebU)+ZR26(ZA[3]);
+ZA[12]=ZA[9]+ZMa(ZA[10],ZA[0],ZA[1])+ZR30(ZA[1]);
+ZA[4]=ZA[4]+ZA[9];
+ZA[6]=(ZCh(ZA[4],ZA[3],ZA[16])+ZA[6]+ZR15(ZA[2])+ZA[11]+ZR25(ZA[5])+ZA[17]+0xbef9a3f7U)+ZR26(ZA[4]);
+ZA[17]=ZA[0]+ZA[6];
+ZA[9]=ZA[6]+ZMa(ZA[1],ZA[10],ZA[12])+ZR30(ZA[12]);
+ZA[7]=(ZCh(ZA[17],ZA[4],ZA[3])+ZA[16]+ZR15(ZA[8])+ZA[7]+ZR25(ZA[15])+ZA[5]+0xc67178f2U)+ZR26(ZA[17]);
+ZA[5]=ZA[9]+state1;
+ZA[9]=ZA[7]+ZMa(ZA[12],ZA[1],ZA[9])+ZR30(ZA[9])+state0;
+ZA[15]=ZA[9]+0x98c7e2a2U;
+ZA[0]=(ZCh(ZA[15],0x510e527fU,0x9b05688cU)+ZA[5]+0x90bb1e3cU)+ZR26(ZA[15]);
+ZA[12]=ZA[12]+state2;
+ZA[2]=ZA[9]+0xfc08884dU;
+ZA[8]=ZA[0]+0x3c6ef372U;
+ZA[11]=(ZCh(ZA[8],ZA[15],0x510e527fU)+ZA[12]+0x50c6645bU)+ZR26(ZA[8]);
+ZA[1]=ZA[1]+state3;
+ZA[0]=ZA[0]+ZMa(0x6a09e667U,0xbb67ae85U,ZA[2])+ZR30(ZA[2]);
+ZA[6]=ZA[11]+0xbb67ae85U;
+ZA[15]=(ZCh(ZA[6],ZA[8],ZA[15])+ZA[1]+0x3ac42e24U)+ZR26(ZA[6]);
+ZA[10]=ZA[10]+ZA[7]+state4;
+ZA[7]=ZA[15]+0x6a09e667U;
+ZA[11]=ZMa(ZA[2],0x6a09e667U,ZA[0])+ZR30(ZA[0])+ZA[11];
+ZA[17]=ZA[17]+state5;
+ZA[16]=(ZCh(ZA[7],ZA[6],ZA[8])+ZA[10]+ZA[9]+0xd21ea4fdU)+ZR26(ZA[7]);
+ZA[24]=ZA[2]+ZA[16];
+ZA[2]=ZA[15]+ZMa(ZA[0],ZA[2],ZA[11])+ZR30(ZA[11]);
+ZA[4]=ZA[4]+state6;
+ZA[8]=(ZCh(ZA[24],ZA[7],ZA[6])+ZA[8]+ZA[17]+0x59f111f1U)+ZR26(ZA[24]);
+ZA[15]=ZA[0]+ZA[8];
+ZA[16]=ZA[16]+ZMa(ZA[11],ZA[0],ZA[2])+ZR30(ZA[2]);
+ZA[3]=ZA[3]+state7;
+ZA[6]=(ZCh(ZA[15],ZA[24],ZA[7])+ZA[6]+ZA[4]+0x923f82a4U)+ZR26(ZA[15]);
+ZA[0]=ZA[11]+ZA[6];
+ZA[8]=ZA[8]+ZMa(ZA[2],ZA[11],ZA[16])+ZR30(ZA[16]);
+ZA[7]=(ZCh(ZA[0],ZA[15],ZA[24])+ZA[7]+ZA[3]+0xab1c5ed5U)+ZR26(ZA[0]);
+ZA[11]=ZA[2]+ZA[7];
+ZA[2]=ZMa(ZA[16],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[6];
+ZA[24]=(ZCh(ZA[11],ZA[0],ZA[15])+ZA[24]+0x5807aa98U)+ZR26(ZA[11]);
+ZA[6]=ZA[16]+ZA[24];
+ZA[7]=ZMa(ZA[8],ZA[16],ZA[2])+ZR30(ZA[2])+ZA[7];
+ZA[15]=(ZCh(ZA[6],ZA[11],ZA[0])+ZA[15]+0x12835b01U)+ZR26(ZA[6]);
+ZA[16]=ZA[8]+ZA[15];
+ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[24];
+ZA[0]=(ZCh(ZA[16],ZA[6],ZA[11])+ZA[0]+0x243185beU)+ZR26(ZA[16]);
+ZA[14]=ZA[2]+ZA[0];
+ZA[2]=ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[15];
+ZA[11]=(ZCh(ZA[14],ZA[16],ZA[6])+ZA[11]+0x550c7dc3U)+ZR26(ZA[14]);
+ZA[15]=ZA[7]+ZA[11];
+ZA[7]=ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2])+ZA[0];
+ZA[6]=(ZCh(ZA[15],ZA[14],ZA[16])+ZA[6]+0x72be5d74U)+ZR26(ZA[15]);
+ZA[0]=ZA[8]+ZA[6];
+ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[11];
+ZA[16]=(ZCh(ZA[0],ZA[15],ZA[14])+ZA[16]+0x80deb1feU)+ZR26(ZA[0]);
+ZA[11]=ZA[2]+ZA[16];
+ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]);
+ZA[14]=(ZCh(ZA[11],ZA[0],ZA[15])+ZA[14]+0x9bdc06a7U)+ZR26(ZA[11]);
+ZA[9]=ZR25(ZA[5])+ZA[9];
+ZA[6]=ZA[7]+ZA[14];
+ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]);
+ZA[15]=(ZCh(ZA[6],ZA[11],ZA[0])+ZA[15]+0xc19bf274U)+ZR26(ZA[6]);
+ZA[5]=ZR25(ZA[12])+ZA[5]+0x00a00000U;
+ZA[16]=ZA[8]+ZA[15];
+ZA[8]=ZA[14]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]);
+ZA[0]=(ZCh(ZA[16],ZA[6],ZA[11])+ZA[0]+ZA[9]+0xe49b69c1U)+ZR26(ZA[16]);
+ZA[21]=ZA[2]+ZA[0];
+ZA[2]=ZA[15]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]);
+ZA[11]=(ZCh(ZA[21],ZA[16],ZA[6])+ZA[11]+ZA[5]+0xefbe4786U)+ZR26(ZA[21]);
+ZA[12]=ZR15(ZA[9])+ZR25(ZA[1])+ZA[12];
+ZA[1]=ZR15(ZA[5])+ZA[1]+ZR25(ZA[10]);
+ZA[15]=ZA[7]+ZA[11];
+ZA[7]=ZA[0]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]);
+ZA[6]=(ZCh(ZA[15],ZA[21],ZA[16])+ZA[6]+0x0fc19dc6U+ZA[12])+ZR26(ZA[15]);
+ZA[0]=ZR15(ZA[12])+ZR25(ZA[17])+ZA[10];
+ZA[10]=ZA[8]+ZA[6];
+ZA[8]=ZA[11]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]);
+ZA[16]=(ZCh(ZA[10],ZA[15],ZA[21])+ZA[16]+ZA[1]+0x240ca1ccU)+ZR26(ZA[10]);
+ZA[17]=ZR15(ZA[1])+ZR25(ZA[4])+ZA[17];
+ZA[11]=ZA[2]+ZA[16];
+ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]);
+ZA[21]=(ZCh(ZA[11],ZA[10],ZA[15])+ZA[21]+ZA[0]+0x2de92c6fU)+ZR26(ZA[11]);
+ZA[4]=ZR15(ZA[0])+ZA[4]+0x00000100U+ZR25(ZA[3]);
+ZA[6]=ZA[7]+ZA[21];
+ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]);
+ZA[15]=(ZCh(ZA[6],ZA[11],ZA[10])+ZA[15]+ZA[17]+0x4a7484aaU)+ZR26(ZA[6]);
+ZA[3]=ZA[9]+ZR15(ZA[17])+ZA[3]+0x11002000U;
+ZA[16]=ZA[8]+ZA[15];
+ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[21];
+ZA[10]=(ZCh(ZA[16],ZA[6],ZA[11])+ZA[10]+ZA[4]+0x5cb0a9dcU)+ZR26(ZA[16]);
+ZA[13]=ZR15(ZA[4])+ZA[5]+0x80000000U;
+ZA[22]=ZA[2]+ZA[10];
+ZA[2]=ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[15];
+ZA[11]=(ZCh(ZA[22],ZA[16],ZA[6])+ZA[11]+ZA[3]+0x76f988daU)+ZR26(ZA[22]);
+ZA[15]=ZR15(ZA[3])+ZA[12];
+ZA[18]=ZA[7]+ZA[11];
+ZA[7]=ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2])+ZA[10];
+ZA[6]=(ZCh(ZA[18],ZA[22],ZA[16])+ZA[6]+ZA[13]+0x983e5152U)+ZR26(ZA[18]);
+ZA[10]=ZR15(ZA[13])+ZA[1];
+ZA[23]=ZA[8]+ZA[6];
+ZA[8]=ZA[11]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]);
+ZA[16]=(ZCh(ZA[23],ZA[18],ZA[22])+ZA[16]+ZA[15]+0xa831c66dU)+ZR26(ZA[23]);
+ZA[11]=ZR15(ZA[15])+ZA[0];
+ZA[24]=ZA[2]+ZA[16];
+ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]);
+ZA[22]=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[22]+ZA[10]+0xb00327c8U)+ZR26(ZA[24]);
+ZA[6]=ZR15(ZA[10])+ZA[17];
+ZA[19]=ZA[7]+ZA[22];
+ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]);
+ZA[18]=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[18]+ZA[11]+0xbf597fc7U)+ZR26(ZA[19]);
+ZA[14]=ZR15(ZA[11])+ZA[4];
+ZA[20]=ZA[8]+ZA[18];
+ZA[8]=ZA[22]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]);
+ZA[23]=(ZCh(ZA[20],ZA[19],ZA[24])+ZA[23]+ZA[6]+0xc6e00bf3U)+ZR26(ZA[20]);
+ZA[16]=ZR15(ZA[6])+ZA[3]+0x00400022U;
+ZA[21]=ZA[2]+ZA[23];
+ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]);
+ZA[24]=(ZCh(ZA[21],ZA[20],ZA[19])+ZA[24]+ZA[14]+0xd5a79147U)+ZR26(ZA[21]);
+ZA[22]=ZR15(ZA[14])+ZA[13]+ZR25(ZA[9])+0x00000100U;
+ZA[18]=ZA[7]+ZA[24];
+ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]);
+ZA[19]=(ZCh(ZA[18],ZA[21],ZA[20])+ZA[19]+ZA[16]+0x06ca6351U)+ZR26(ZA[18]);
+ZA[9]=ZR15(ZA[16])+ZR25(ZA[5])+ZA[9]+ZA[15];
+ZA[23]=ZA[8]+ZA[19];
+ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]);
+ZA[20]=(ZCh(ZA[23],ZA[18],ZA[21])+ZA[20]+ZA[22]+0x14292967U)+ZR26(ZA[23]);
+ZA[5]=ZR15(ZA[22])+ZR25(ZA[12])+ZA[10]+ZA[5];
+ZA[24]=ZA[2]+ZA[20];
+ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]);
+ZA[21]=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[21]+ZA[9]+0x27b70a85U)+ZR26(ZA[24]);
+ZA[12]=ZR15(ZA[9])+ZA[11]+ZR25(ZA[1])+ZA[12];
+ZA[19]=ZA[7]+ZA[21];
+ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]);
+ZA[18]=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[18]+ZA[5]+0x2e1b2138U)+ZR26(ZA[19]);
+ZA[1]=ZR15(ZA[5])+ZA[6]+ZR25(ZA[0])+ZA[1];
+ZA[20]=ZA[8]+ZA[18];
+ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]);
+ZA[23]=(ZCh(ZA[20],ZA[19],ZA[24])+ZA[23]+ZA[12]+0x4d2c6dfcU)+ZR26(ZA[20]);
+ZA[0]=ZR15(ZA[12])+ZR25(ZA[17])+ZA[0]+ZA[14];
+ZA[21]=ZA[2]+ZA[23];
+ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]);
+ZA[24]=(ZCh(ZA[21],ZA[20],ZA[19])+ZA[24]+ZA[1]+0x53380d13U)+ZR26(ZA[21]);
+ZA[17]=ZR15(ZA[1])+ZA[16]+ZR25(ZA[4])+ZA[17];
+ZA[18]=ZA[7]+ZA[24];
+ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]);
+ZA[19]=(ZCh(ZA[18],ZA[21],ZA[20])+ZA[19]+ZA[0]+0x650a7354U)+ZR26(ZA[18]);
+ZA[4]=ZR15(ZA[0])+ZA[22]+ZR25(ZA[3])+ZA[4];
+ZA[23]=ZA[8]+ZA[19];
+ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]);
+ZA[20]=(ZCh(ZA[23],ZA[18],ZA[21])+ZA[20]+ZA[17]+0x766a0abbU)+ZR26(ZA[23]);
+ZA[3]=ZR15(ZA[17])+ZA[9]+ZR25(ZA[13])+ZA[3];
+ZA[24]=ZA[2]+ZA[20];
+ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]);
+ZA[21]=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[21]+ZA[4]+0x81c2c92eU)+ZR26(ZA[24]);
+ZA[13]=ZR15(ZA[4])+ZA[5]+ZR25(ZA[15])+ZA[13];
+ZA[19]=ZA[7]+ZA[21];
+ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]);
+ZA[18]=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[18]+ZA[3]+0x92722c85U)+ZR26(ZA[19]);
+ZA[15]=ZR15(ZA[3])+ZA[12]+ZR25(ZA[10])+ZA[15];
+ZA[20]=ZA[8]+ZA[18];
+ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]);
+ZA[23]=(ZCh(ZA[20],ZA[19],ZA[24])+ZA[23]+ZA[13]+0xa2bfe8a1U)+ZR26(ZA[20]);
+ZA[10]=ZR15(ZA[13])+ZA[1]+ZR25(ZA[11])+ZA[10];
+ZA[21]=ZA[2]+ZA[23];
+ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]);
+ZA[24]=(ZCh(ZA[21],ZA[20],ZA[19])+ZA[24]+ZA[15]+0xa81a664bU)+ZR26(ZA[21]);
+ZA[11]=ZR15(ZA[15])+ZA[0]+ZR25(ZA[6])+ZA[11];
+ZA[18]=ZA[7]+ZA[24];
+ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]);
+ZA[19]=(ZCh(ZA[18],ZA[21],ZA[20])+ZA[19]+ZA[10]+0xc24b8b70U)+ZR26(ZA[18]);
+ZA[6]=ZR15(ZA[10])+ZA[17]+ZR25(ZA[14])+ZA[6];
+ZA[23]=ZA[8]+ZA[19];
+ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]);
+ZA[20]=(ZCh(ZA[23],ZA[18],ZA[21])+ZA[20]+ZA[11]+0xc76c51a3U)+ZR26(ZA[23]);
+ZA[14]=ZR15(ZA[11])+ZA[4]+ZR25(ZA[16])+ZA[14];
+ZA[24]=ZA[2]+ZA[20];
+ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]);
+ZA[21]=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[21]+ZA[6]+0xd192e819U)+ZR26(ZA[24]);
+ZA[16]=ZR15(ZA[6])+ZA[3]+ZR25(ZA[22])+ZA[16];
+ZA[19]=ZA[7]+ZA[21];
+ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]);
+ZA[18]=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[18]+ZA[14]+0xd6990624U)+ZR26(ZA[19]);
+ZA[22]=ZR15(ZA[14])+ZA[13]+ZR25(ZA[9])+ZA[22];
+ZA[20]=ZA[8]+ZA[18];
+ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]);
+ZA[23]=(ZCh(ZA[20],ZA[19],ZA[24])+ZA[23]+ZA[16]+0xf40e3585U)+ZR26(ZA[20]);
+ZA[9]=ZR15(ZA[16])+ZA[15]+ZR25(ZA[5])+ZA[9];
+ZA[21]=ZA[2]+ZA[23];
+ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]);
+ZA[24]=(ZCh(ZA[21],ZA[20],ZA[19])+ZA[24]+ZA[22]+0x106aa070U)+ZR26(ZA[21]);
+ZA[5]=ZR15(ZA[22])+ZA[10]+ZR25(ZA[12])+ZA[5];
+ZA[18]=ZA[7]+ZA[24];
+ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]);
+ZA[19]=(ZCh(ZA[18],ZA[21],ZA[20])+ZA[19]+ZA[9]+0x19a4c116U)+ZR26(ZA[18]);
+ZA[12]=ZR15(ZA[9])+ZA[11]+ZR25(ZA[1])+ZA[12];
+ZA[23]=ZA[8]+ZA[19];
+ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]);
+ZA[20]=(ZCh(ZA[23],ZA[18],ZA[21])+ZA[20]+ZA[5]+0x1e376c08U)+ZR26(ZA[23]);
+ZA[1]=ZR15(ZA[5])+ZA[6]+ZR25(ZA[0])+ZA[1];
+ZA[24]=ZA[2]+ZA[20];
+ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]);
+ZA[21]=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[21]+ZA[12]+0x2748774cU)+ZR26(ZA[24]);
+ZA[0]=ZR15(ZA[12])+ZA[14]+ZR25(ZA[17])+ZA[0];
+ZA[19]=ZA[7]+ZA[21];
+ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]);
+ZA[18]=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[18]+ZA[1]+0x34b0bcb5U)+ZR26(ZA[19]);
+ZA[17]=ZR15(ZA[1])+ZA[16]+ZR25(ZA[4])+ZA[17];
+ZA[16]=ZA[8]+ZA[18];
+ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]);
+ZA[23]=(ZCh(ZA[16],ZA[19],ZA[24])+ZA[23]+ZA[0]+0x391c0cb3U)+ZR26(ZA[16]);
+ZA[4]=ZR15(ZA[0])+ZA[22]+ZR25(ZA[3])+ZA[4];
+ZA[22]=ZA[2]+ZA[23];
+ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]);
+ZA[24]=(ZCh(ZA[22],ZA[16],ZA[19])+ZA[24]+ZA[17]+0x4ed8aa4aU)+ZR26(ZA[22]);
+ZA[9]=ZR15(ZA[17])+ZA[9]+ZR25(ZA[13])+ZA[3];
+ZA[3]=ZA[7]+ZA[24];
+ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]);
+ZA[19]=(ZCh(ZA[3],ZA[22],ZA[16])+ZA[19]+ZA[4]+0x5b9cca4fU)+ZR26(ZA[3]);
+ZA[13]=ZR15(ZA[4])+ZA[5]+ZR25(ZA[15])+ZA[13];
+ZA[4]=ZA[8]+ZA[19];
+ZA[5]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]);
+ZA[16]=(ZCh(ZA[4],ZA[3],ZA[22])+ZA[16]+ZA[9]+0x682e6ff3U)+ZR26(ZA[4]);
+ZA[12]=ZR15(ZA[9])+ZA[12]+ZR25(ZA[10])+ZA[15];
+ZA[15]=ZA[2]+ZA[16];
+ZA[9]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[5])+ZR30(ZA[5]);
+ZA[22]=(ZCh(ZA[15],ZA[4],ZA[3])+ZA[22]+ZA[13]+0x748f82eeU)+ZR26(ZA[15]);
+ZA[13]=ZR15(ZA[13])+ZA[1]+ZR25(ZA[11])+ZA[10];
+ZA[10]=ZA[7]+ZA[22];
+ZA[1]=ZA[16]+ZMa(ZA[5],ZA[7],ZA[9])+ZR30(ZA[9]);
+ZA[3]=(ZCh(ZA[10],ZA[15],ZA[4])+ZA[3]+ZA[5]+ZA[12]+0x78a5636fU)+ZR26(ZA[10]);
+ZA[4]=(ZCh(ZA[3],ZA[10],ZA[15])+ZA[9]+ZA[4]+ZA[13]+0x84c87814U)+ZR26(ZA[3]);
+ZA[15]=(ZCh(ZA[4],ZA[3],ZA[10])+ZA[1]+ZA[15]+ZR15(ZA[12])+ZA[0]+ZR25(ZA[6])+ZA[11]+0x8cc70208U)+ZR26(ZA[4]);
+ZA[10]=(ZCh(ZA[15],ZA[4],ZA[3])+ZA[22]+ZMa(ZA[9],ZA[5],ZA[1])+ZR30(ZA[1])+ZA[10]+ZR15(ZA[13])+ZA[17]+ZR25(ZA[14])+ZA[6])+ZR26(ZA[15]);
#define FOUND (0x80)
#define NFLAG (0x7F)
#if defined(VECTORS4)
- bool result = any(ZA[447] == 0x136032EDU);
+ bool result = any(ZA[10] == 0x136032EDU);
if (result) {
- if (ZA[447].x == 0x136032EDU)
+ if (ZA[10].x == 0x136032EDU)
output[FOUND] = output[NFLAG & Znonce.x] = Znonce.x;
- if (ZA[447].y == 0x136032EDU)
+ if (ZA[10].y == 0x136032EDU)
output[FOUND] = output[NFLAG & Znonce.y] = Znonce.y;
- if (ZA[447].z == 0x136032EDU)
+ if (ZA[10].z == 0x136032EDU)
output[FOUND] = output[NFLAG & Znonce.z] = Znonce.z;
- if (ZA[447].w == 0x136032EDU)
+ if (ZA[10].w == 0x136032EDU)
output[FOUND] = output[NFLAG & Znonce.w] = Znonce.w;
}
#elif defined(VECTORS2)
- bool result = any(ZA[447] == 0x136032EDU);
+ bool result = any(ZA[10] == 0x136032EDU);
if (result) {
- if (ZA[447].x == 0x136032EDU)
+ if (ZA[10].x == 0x136032EDU)
output[FOUND] = output[NFLAG & Znonce.x] = Znonce.x;
- if (ZA[447].y == 0x136032EDU)
+ if (ZA[10].y == 0x136032EDU)
output[FOUND] = output[NFLAG & Znonce.y] = Znonce.y;
}
#else
- if (ZA[447] == 0x136032EDU)
+ if (ZA[10] == 0x136032EDU)
output[FOUND] = output[NFLAG & Znonce] = Znonce;
#endif
}