1; This file is generated from a similarly-named Perl script in the BoringSSL 2; source tree. Do not edit by hand. 3 4default rel 5%define XMMWORD 6%define YMMWORD 7%define ZMMWORD 8 9%include "ring_core_generated/prefix_symbols_nasm.inc" 10section .text code align=64 11 12 13EXTERN OPENSSL_ia32cap_P 14global sha512_block_data_order 15 16ALIGN 16 17sha512_block_data_order: 18 mov QWORD[8+rsp],rdi ;WIN64 prologue 19 mov QWORD[16+rsp],rsi 20 mov rax,rsp 21$L$SEH_begin_sha512_block_data_order: 22 mov rdi,rcx 23 mov rsi,rdx 24 mov rdx,r8 25 26 27 28 lea r11,[OPENSSL_ia32cap_P] 29 mov r9d,DWORD[r11] 30 mov r10d,DWORD[4+r11] 31 mov r11d,DWORD[8+r11] 32 and r9d,1073741824 33 and r10d,268435968 34 or r10d,r9d 35 cmp r10d,1342177792 36 je NEAR $L$avx_shortcut 37 mov rax,rsp 38 39 push rbx 40 41 push rbp 42 43 push r12 44 45 push r13 46 47 push r14 48 49 push r15 50 51 shl rdx,4 52 sub rsp,16*8+4*8 53 lea rdx,[rdx*8+rsi] 54 and rsp,-64 55 mov QWORD[((128+0))+rsp],rdi 56 mov QWORD[((128+8))+rsp],rsi 57 mov QWORD[((128+16))+rsp],rdx 58 mov QWORD[152+rsp],rax 59 60$L$prologue: 61 62 mov rax,QWORD[rdi] 63 mov rbx,QWORD[8+rdi] 64 mov rcx,QWORD[16+rdi] 65 mov rdx,QWORD[24+rdi] 66 mov r8,QWORD[32+rdi] 67 mov r9,QWORD[40+rdi] 68 mov r10,QWORD[48+rdi] 69 mov r11,QWORD[56+rdi] 70 jmp NEAR $L$loop 71 72ALIGN 16 73$L$loop: 74 mov rdi,rbx 75 lea rbp,[K512] 76 xor rdi,rcx 77 mov r12,QWORD[rsi] 78 mov r13,r8 79 mov r14,rax 80 bswap r12 81 ror r13,23 82 mov r15,r9 83 84 xor r13,r8 85 ror r14,5 86 xor r15,r10 87 88 mov QWORD[rsp],r12 89 xor r14,rax 90 and r15,r8 91 92 ror r13,4 93 add r12,r11 94 xor r15,r10 95 96 ror r14,6 97 xor r13,r8 98 add r12,r15 99 100 mov r15,rax 101 add r12,QWORD[rbp] 102 xor r14,rax 103 104 xor r15,rbx 105 ror r13,14 106 mov r11,rbx 107 108 and rdi,r15 109 ror r14,28 110 add r12,r13 111 112 xor r11,rdi 113 add rdx,r12 114 add r11,r12 115 116 lea rbp,[8+rbp] 117 add r11,r14 118 mov r12,QWORD[8+rsi] 119 mov r13,rdx 120 mov r14,r11 121 bswap r12 122 ror r13,23 123 mov rdi,r8 124 125 xor r13,rdx 126 ror r14,5 127 xor rdi,r9 128 129 mov QWORD[8+rsp],r12 130 xor r14,r11 131 and rdi,rdx 132 133 ror r13,4 134 add r12,r10 135 xor rdi,r9 136 137 ror r14,6 138 xor r13,rdx 139 add r12,rdi 140 141 mov rdi,r11 142 add r12,QWORD[rbp] 143 xor r14,r11 144 145 xor rdi,rax 146 ror r13,14 147 mov r10,rax 148 149 and r15,rdi 150 ror r14,28 151 add r12,r13 152 153 xor r10,r15 154 add rcx,r12 155 add r10,r12 156 157 lea rbp,[24+rbp] 158 add r10,r14 159 mov r12,QWORD[16+rsi] 160 mov r13,rcx 161 mov r14,r10 162 bswap r12 163 ror r13,23 164 mov r15,rdx 165 166 xor r13,rcx 167 ror r14,5 168 xor r15,r8 169 170 mov QWORD[16+rsp],r12 171 xor r14,r10 172 and r15,rcx 173 174 ror r13,4 175 add r12,r9 176 xor r15,r8 177 178 ror r14,6 179 xor r13,rcx 180 add r12,r15 181 182 mov r15,r10 183 add r12,QWORD[rbp] 184 xor r14,r10 185 186 xor r15,r11 187 ror r13,14 188 mov r9,r11 189 190 and rdi,r15 191 ror r14,28 192 add r12,r13 193 194 xor r9,rdi 195 add rbx,r12 196 add r9,r12 197 198 lea rbp,[8+rbp] 199 add r9,r14 200 mov r12,QWORD[24+rsi] 201 mov r13,rbx 202 mov r14,r9 203 bswap r12 204 ror r13,23 205 mov rdi,rcx 206 207 xor r13,rbx 208 ror r14,5 209 xor rdi,rdx 210 211 mov QWORD[24+rsp],r12 212 xor r14,r9 213 and rdi,rbx 214 215 ror r13,4 216 add r12,r8 217 xor rdi,rdx 218 219 ror r14,6 220 xor r13,rbx 221 add r12,rdi 222 223 mov rdi,r9 224 add r12,QWORD[rbp] 225 xor r14,r9 226 227 xor rdi,r10 228 ror r13,14 229 mov r8,r10 230 231 and r15,rdi 232 ror r14,28 233 add r12,r13 234 235 xor r8,r15 236 add rax,r12 237 add r8,r12 238 239 lea rbp,[24+rbp] 240 add r8,r14 241 mov r12,QWORD[32+rsi] 242 mov r13,rax 243 mov r14,r8 244 bswap r12 245 ror r13,23 246 mov r15,rbx 247 248 xor r13,rax 249 ror r14,5 250 xor r15,rcx 251 252 mov QWORD[32+rsp],r12 253 xor r14,r8 254 and r15,rax 255 256 ror r13,4 257 add r12,rdx 258 xor r15,rcx 259 260 ror r14,6 261 xor r13,rax 262 add r12,r15 263 264 mov r15,r8 265 add r12,QWORD[rbp] 266 xor r14,r8 267 268 xor r15,r9 269 ror r13,14 270 mov rdx,r9 271 272 and rdi,r15 273 ror r14,28 274 add r12,r13 275 276 xor rdx,rdi 277 add r11,r12 278 add rdx,r12 279 280 lea rbp,[8+rbp] 281 add rdx,r14 282 mov r12,QWORD[40+rsi] 283 mov r13,r11 284 mov r14,rdx 285 bswap r12 286 ror r13,23 287 mov rdi,rax 288 289 xor r13,r11 290 ror r14,5 291 xor rdi,rbx 292 293 mov QWORD[40+rsp],r12 294 xor r14,rdx 295 and rdi,r11 296 297 ror r13,4 298 add r12,rcx 299 xor rdi,rbx 300 301 ror r14,6 302 xor r13,r11 303 add r12,rdi 304 305 mov rdi,rdx 306 add r12,QWORD[rbp] 307 xor r14,rdx 308 309 xor rdi,r8 310 ror r13,14 311 mov rcx,r8 312 313 and r15,rdi 314 ror r14,28 315 add r12,r13 316 317 xor rcx,r15 318 add r10,r12 319 add rcx,r12 320 321 lea rbp,[24+rbp] 322 add rcx,r14 323 mov r12,QWORD[48+rsi] 324 mov r13,r10 325 mov r14,rcx 326 bswap r12 327 ror r13,23 328 mov r15,r11 329 330 xor r13,r10 331 ror r14,5 332 xor r15,rax 333 334 mov QWORD[48+rsp],r12 335 xor r14,rcx 336 and r15,r10 337 338 ror r13,4 339 add r12,rbx 340 xor r15,rax 341 342 ror r14,6 343 xor r13,r10 344 add r12,r15 345 346 mov r15,rcx 347 add r12,QWORD[rbp] 348 xor r14,rcx 349 350 xor r15,rdx 351 ror r13,14 352 mov rbx,rdx 353 354 and rdi,r15 355 ror r14,28 356 add r12,r13 357 358 xor rbx,rdi 359 add r9,r12 360 add rbx,r12 361 362 lea rbp,[8+rbp] 363 add rbx,r14 364 mov r12,QWORD[56+rsi] 365 mov r13,r9 366 mov r14,rbx 367 bswap r12 368 ror r13,23 369 mov rdi,r10 370 371 xor r13,r9 372 ror r14,5 373 xor rdi,r11 374 375 mov QWORD[56+rsp],r12 376 xor r14,rbx 377 and rdi,r9 378 379 ror r13,4 380 add r12,rax 381 xor rdi,r11 382 383 ror r14,6 384 xor r13,r9 385 add r12,rdi 386 387 mov rdi,rbx 388 add r12,QWORD[rbp] 389 xor r14,rbx 390 391 xor rdi,rcx 392 ror r13,14 393 mov rax,rcx 394 395 and r15,rdi 396 ror r14,28 397 add r12,r13 398 399 xor rax,r15 400 add r8,r12 401 add rax,r12 402 403 lea rbp,[24+rbp] 404 add rax,r14 405 mov r12,QWORD[64+rsi] 406 mov r13,r8 407 mov r14,rax 408 bswap r12 409 ror r13,23 410 mov r15,r9 411 412 xor r13,r8 413 ror r14,5 414 xor r15,r10 415 416 mov QWORD[64+rsp],r12 417 xor r14,rax 418 and r15,r8 419 420 ror r13,4 421 add r12,r11 422 xor r15,r10 423 424 ror r14,6 425 xor r13,r8 426 add r12,r15 427 428 mov r15,rax 429 add r12,QWORD[rbp] 430 xor r14,rax 431 432 xor r15,rbx 433 ror r13,14 434 mov r11,rbx 435 436 and rdi,r15 437 ror r14,28 438 add r12,r13 439 440 xor r11,rdi 441 add rdx,r12 442 add r11,r12 443 444 lea rbp,[8+rbp] 445 add r11,r14 446 mov r12,QWORD[72+rsi] 447 mov r13,rdx 448 mov r14,r11 449 bswap r12 450 ror r13,23 451 mov rdi,r8 452 453 xor r13,rdx 454 ror r14,5 455 xor rdi,r9 456 457 mov QWORD[72+rsp],r12 458 xor r14,r11 459 and rdi,rdx 460 461 ror r13,4 462 add r12,r10 463 xor rdi,r9 464 465 ror r14,6 466 xor r13,rdx 467 add r12,rdi 468 469 mov rdi,r11 470 add r12,QWORD[rbp] 471 xor r14,r11 472 473 xor rdi,rax 474 ror r13,14 475 mov r10,rax 476 477 and r15,rdi 478 ror r14,28 479 add r12,r13 480 481 xor r10,r15 482 add rcx,r12 483 add r10,r12 484 485 lea rbp,[24+rbp] 486 add r10,r14 487 mov r12,QWORD[80+rsi] 488 mov r13,rcx 489 mov r14,r10 490 bswap r12 491 ror r13,23 492 mov r15,rdx 493 494 xor r13,rcx 495 ror r14,5 496 xor r15,r8 497 498 mov QWORD[80+rsp],r12 499 xor r14,r10 500 and r15,rcx 501 502 ror r13,4 503 add r12,r9 504 xor r15,r8 505 506 ror r14,6 507 xor r13,rcx 508 add r12,r15 509 510 mov r15,r10 511 add r12,QWORD[rbp] 512 xor r14,r10 513 514 xor r15,r11 515 ror r13,14 516 mov r9,r11 517 518 and rdi,r15 519 ror r14,28 520 add r12,r13 521 522 xor r9,rdi 523 add rbx,r12 524 add r9,r12 525 526 lea rbp,[8+rbp] 527 add r9,r14 528 mov r12,QWORD[88+rsi] 529 mov r13,rbx 530 mov r14,r9 531 bswap r12 532 ror r13,23 533 mov rdi,rcx 534 535 xor r13,rbx 536 ror r14,5 537 xor rdi,rdx 538 539 mov QWORD[88+rsp],r12 540 xor r14,r9 541 and rdi,rbx 542 543 ror r13,4 544 add r12,r8 545 xor rdi,rdx 546 547 ror r14,6 548 xor r13,rbx 549 add r12,rdi 550 551 mov rdi,r9 552 add r12,QWORD[rbp] 553 xor r14,r9 554 555 xor rdi,r10 556 ror r13,14 557 mov r8,r10 558 559 and r15,rdi 560 ror r14,28 561 add r12,r13 562 563 xor r8,r15 564 add rax,r12 565 add r8,r12 566 567 lea rbp,[24+rbp] 568 add r8,r14 569 mov r12,QWORD[96+rsi] 570 mov r13,rax 571 mov r14,r8 572 bswap r12 573 ror r13,23 574 mov r15,rbx 575 576 xor r13,rax 577 ror r14,5 578 xor r15,rcx 579 580 mov QWORD[96+rsp],r12 581 xor r14,r8 582 and r15,rax 583 584 ror r13,4 585 add r12,rdx 586 xor r15,rcx 587 588 ror r14,6 589 xor r13,rax 590 add r12,r15 591 592 mov r15,r8 593 add r12,QWORD[rbp] 594 xor r14,r8 595 596 xor r15,r9 597 ror r13,14 598 mov rdx,r9 599 600 and rdi,r15 601 ror r14,28 602 add r12,r13 603 604 xor rdx,rdi 605 add r11,r12 606 add rdx,r12 607 608 lea rbp,[8+rbp] 609 add rdx,r14 610 mov r12,QWORD[104+rsi] 611 mov r13,r11 612 mov r14,rdx 613 bswap r12 614 ror r13,23 615 mov rdi,rax 616 617 xor r13,r11 618 ror r14,5 619 xor rdi,rbx 620 621 mov QWORD[104+rsp],r12 622 xor r14,rdx 623 and rdi,r11 624 625 ror r13,4 626 add r12,rcx 627 xor rdi,rbx 628 629 ror r14,6 630 xor r13,r11 631 add r12,rdi 632 633 mov rdi,rdx 634 add r12,QWORD[rbp] 635 xor r14,rdx 636 637 xor rdi,r8 638 ror r13,14 639 mov rcx,r8 640 641 and r15,rdi 642 ror r14,28 643 add r12,r13 644 645 xor rcx,r15 646 add r10,r12 647 add rcx,r12 648 649 lea rbp,[24+rbp] 650 add rcx,r14 651 mov r12,QWORD[112+rsi] 652 mov r13,r10 653 mov r14,rcx 654 bswap r12 655 ror r13,23 656 mov r15,r11 657 658 xor r13,r10 659 ror r14,5 660 xor r15,rax 661 662 mov QWORD[112+rsp],r12 663 xor r14,rcx 664 and r15,r10 665 666 ror r13,4 667 add r12,rbx 668 xor r15,rax 669 670 ror r14,6 671 xor r13,r10 672 add r12,r15 673 674 mov r15,rcx 675 add r12,QWORD[rbp] 676 xor r14,rcx 677 678 xor r15,rdx 679 ror r13,14 680 mov rbx,rdx 681 682 and rdi,r15 683 ror r14,28 684 add r12,r13 685 686 xor rbx,rdi 687 add r9,r12 688 add rbx,r12 689 690 lea rbp,[8+rbp] 691 add rbx,r14 692 mov r12,QWORD[120+rsi] 693 mov r13,r9 694 mov r14,rbx 695 bswap r12 696 ror r13,23 697 mov rdi,r10 698 699 xor r13,r9 700 ror r14,5 701 xor rdi,r11 702 703 mov QWORD[120+rsp],r12 704 xor r14,rbx 705 and rdi,r9 706 707 ror r13,4 708 add r12,rax 709 xor rdi,r11 710 711 ror r14,6 712 xor r13,r9 713 add r12,rdi 714 715 mov rdi,rbx 716 add r12,QWORD[rbp] 717 xor r14,rbx 718 719 xor rdi,rcx 720 ror r13,14 721 mov rax,rcx 722 723 and r15,rdi 724 ror r14,28 725 add r12,r13 726 727 xor rax,r15 728 add r8,r12 729 add rax,r12 730 731 lea rbp,[24+rbp] 732 jmp NEAR $L$rounds_16_xx 733ALIGN 16 734$L$rounds_16_xx: 735 mov r13,QWORD[8+rsp] 736 mov r15,QWORD[112+rsp] 737 738 mov r12,r13 739 ror r13,7 740 add rax,r14 741 mov r14,r15 742 ror r15,42 743 744 xor r13,r12 745 shr r12,7 746 ror r13,1 747 xor r15,r14 748 shr r14,6 749 750 ror r15,19 751 xor r12,r13 752 xor r15,r14 753 add r12,QWORD[72+rsp] 754 755 add r12,QWORD[rsp] 756 mov r13,r8 757 add r12,r15 758 mov r14,rax 759 ror r13,23 760 mov r15,r9 761 762 xor r13,r8 763 ror r14,5 764 xor r15,r10 765 766 mov QWORD[rsp],r12 767 xor r14,rax 768 and r15,r8 769 770 ror r13,4 771 add r12,r11 772 xor r15,r10 773 774 ror r14,6 775 xor r13,r8 776 add r12,r15 777 778 mov r15,rax 779 add r12,QWORD[rbp] 780 xor r14,rax 781 782 xor r15,rbx 783 ror r13,14 784 mov r11,rbx 785 786 and rdi,r15 787 ror r14,28 788 add r12,r13 789 790 xor r11,rdi 791 add rdx,r12 792 add r11,r12 793 794 lea rbp,[8+rbp] 795 mov r13,QWORD[16+rsp] 796 mov rdi,QWORD[120+rsp] 797 798 mov r12,r13 799 ror r13,7 800 add r11,r14 801 mov r14,rdi 802 ror rdi,42 803 804 xor r13,r12 805 shr r12,7 806 ror r13,1 807 xor rdi,r14 808 shr r14,6 809 810 ror rdi,19 811 xor r12,r13 812 xor rdi,r14 813 add r12,QWORD[80+rsp] 814 815 add r12,QWORD[8+rsp] 816 mov r13,rdx 817 add r12,rdi 818 mov r14,r11 819 ror r13,23 820 mov rdi,r8 821 822 xor r13,rdx 823 ror r14,5 824 xor rdi,r9 825 826 mov QWORD[8+rsp],r12 827 xor r14,r11 828 and rdi,rdx 829 830 ror r13,4 831 add r12,r10 832 xor rdi,r9 833 834 ror r14,6 835 xor r13,rdx 836 add r12,rdi 837 838 mov rdi,r11 839 add r12,QWORD[rbp] 840 xor r14,r11 841 842 xor rdi,rax 843 ror r13,14 844 mov r10,rax 845 846 and r15,rdi 847 ror r14,28 848 add r12,r13 849 850 xor r10,r15 851 add rcx,r12 852 add r10,r12 853 854 lea rbp,[24+rbp] 855 mov r13,QWORD[24+rsp] 856 mov r15,QWORD[rsp] 857 858 mov r12,r13 859 ror r13,7 860 add r10,r14 861 mov r14,r15 862 ror r15,42 863 864 xor r13,r12 865 shr r12,7 866 ror r13,1 867 xor r15,r14 868 shr r14,6 869 870 ror r15,19 871 xor r12,r13 872 xor r15,r14 873 add r12,QWORD[88+rsp] 874 875 add r12,QWORD[16+rsp] 876 mov r13,rcx 877 add r12,r15 878 mov r14,r10 879 ror r13,23 880 mov r15,rdx 881 882 xor r13,rcx 883 ror r14,5 884 xor r15,r8 885 886 mov QWORD[16+rsp],r12 887 xor r14,r10 888 and r15,rcx 889 890 ror r13,4 891 add r12,r9 892 xor r15,r8 893 894 ror r14,6 895 xor r13,rcx 896 add r12,r15 897 898 mov r15,r10 899 add r12,QWORD[rbp] 900 xor r14,r10 901 902 xor r15,r11 903 ror r13,14 904 mov r9,r11 905 906 and rdi,r15 907 ror r14,28 908 add r12,r13 909 910 xor r9,rdi 911 add rbx,r12 912 add r9,r12 913 914 lea rbp,[8+rbp] 915 mov r13,QWORD[32+rsp] 916 mov rdi,QWORD[8+rsp] 917 918 mov r12,r13 919 ror r13,7 920 add r9,r14 921 mov r14,rdi 922 ror rdi,42 923 924 xor r13,r12 925 shr r12,7 926 ror r13,1 927 xor rdi,r14 928 shr r14,6 929 930 ror rdi,19 931 xor r12,r13 932 xor rdi,r14 933 add r12,QWORD[96+rsp] 934 935 add r12,QWORD[24+rsp] 936 mov r13,rbx 937 add r12,rdi 938 mov r14,r9 939 ror r13,23 940 mov rdi,rcx 941 942 xor r13,rbx 943 ror r14,5 944 xor rdi,rdx 945 946 mov QWORD[24+rsp],r12 947 xor r14,r9 948 and rdi,rbx 949 950 ror r13,4 951 add r12,r8 952 xor rdi,rdx 953 954 ror r14,6 955 xor r13,rbx 956 add r12,rdi 957 958 mov rdi,r9 959 add r12,QWORD[rbp] 960 xor r14,r9 961 962 xor rdi,r10 963 ror r13,14 964 mov r8,r10 965 966 and r15,rdi 967 ror r14,28 968 add r12,r13 969 970 xor r8,r15 971 add rax,r12 972 add r8,r12 973 974 lea rbp,[24+rbp] 975 mov r13,QWORD[40+rsp] 976 mov r15,QWORD[16+rsp] 977 978 mov r12,r13 979 ror r13,7 980 add r8,r14 981 mov r14,r15 982 ror r15,42 983 984 xor r13,r12 985 shr r12,7 986 ror r13,1 987 xor r15,r14 988 shr r14,6 989 990 ror r15,19 991 xor r12,r13 992 xor r15,r14 993 add r12,QWORD[104+rsp] 994 995 add r12,QWORD[32+rsp] 996 mov r13,rax 997 add r12,r15 998 mov r14,r8 999 ror r13,23 1000 mov r15,rbx 1001 1002 xor r13,rax 1003 ror r14,5 1004 xor r15,rcx 1005 1006 mov QWORD[32+rsp],r12 1007 xor r14,r8 1008 and r15,rax 1009 1010 ror r13,4 1011 add r12,rdx 1012 xor r15,rcx 1013 1014 ror r14,6 1015 xor r13,rax 1016 add r12,r15 1017 1018 mov r15,r8 1019 add r12,QWORD[rbp] 1020 xor r14,r8 1021 1022 xor r15,r9 1023 ror r13,14 1024 mov rdx,r9 1025 1026 and rdi,r15 1027 ror r14,28 1028 add r12,r13 1029 1030 xor rdx,rdi 1031 add r11,r12 1032 add rdx,r12 1033 1034 lea rbp,[8+rbp] 1035 mov r13,QWORD[48+rsp] 1036 mov rdi,QWORD[24+rsp] 1037 1038 mov r12,r13 1039 ror r13,7 1040 add rdx,r14 1041 mov r14,rdi 1042 ror rdi,42 1043 1044 xor r13,r12 1045 shr r12,7 1046 ror r13,1 1047 xor rdi,r14 1048 shr r14,6 1049 1050 ror rdi,19 1051 xor r12,r13 1052 xor rdi,r14 1053 add r12,QWORD[112+rsp] 1054 1055 add r12,QWORD[40+rsp] 1056 mov r13,r11 1057 add r12,rdi 1058 mov r14,rdx 1059 ror r13,23 1060 mov rdi,rax 1061 1062 xor r13,r11 1063 ror r14,5 1064 xor rdi,rbx 1065 1066 mov QWORD[40+rsp],r12 1067 xor r14,rdx 1068 and rdi,r11 1069 1070 ror r13,4 1071 add r12,rcx 1072 xor rdi,rbx 1073 1074 ror r14,6 1075 xor r13,r11 1076 add r12,rdi 1077 1078 mov rdi,rdx 1079 add r12,QWORD[rbp] 1080 xor r14,rdx 1081 1082 xor rdi,r8 1083 ror r13,14 1084 mov rcx,r8 1085 1086 and r15,rdi 1087 ror r14,28 1088 add r12,r13 1089 1090 xor rcx,r15 1091 add r10,r12 1092 add rcx,r12 1093 1094 lea rbp,[24+rbp] 1095 mov r13,QWORD[56+rsp] 1096 mov r15,QWORD[32+rsp] 1097 1098 mov r12,r13 1099 ror r13,7 1100 add rcx,r14 1101 mov r14,r15 1102 ror r15,42 1103 1104 xor r13,r12 1105 shr r12,7 1106 ror r13,1 1107 xor r15,r14 1108 shr r14,6 1109 1110 ror r15,19 1111 xor r12,r13 1112 xor r15,r14 1113 add r12,QWORD[120+rsp] 1114 1115 add r12,QWORD[48+rsp] 1116 mov r13,r10 1117 add r12,r15 1118 mov r14,rcx 1119 ror r13,23 1120 mov r15,r11 1121 1122 xor r13,r10 1123 ror r14,5 1124 xor r15,rax 1125 1126 mov QWORD[48+rsp],r12 1127 xor r14,rcx 1128 and r15,r10 1129 1130 ror r13,4 1131 add r12,rbx 1132 xor r15,rax 1133 1134 ror r14,6 1135 xor r13,r10 1136 add r12,r15 1137 1138 mov r15,rcx 1139 add r12,QWORD[rbp] 1140 xor r14,rcx 1141 1142 xor r15,rdx 1143 ror r13,14 1144 mov rbx,rdx 1145 1146 and rdi,r15 1147 ror r14,28 1148 add r12,r13 1149 1150 xor rbx,rdi 1151 add r9,r12 1152 add rbx,r12 1153 1154 lea rbp,[8+rbp] 1155 mov r13,QWORD[64+rsp] 1156 mov rdi,QWORD[40+rsp] 1157 1158 mov r12,r13 1159 ror r13,7 1160 add rbx,r14 1161 mov r14,rdi 1162 ror rdi,42 1163 1164 xor r13,r12 1165 shr r12,7 1166 ror r13,1 1167 xor rdi,r14 1168 shr r14,6 1169 1170 ror rdi,19 1171 xor r12,r13 1172 xor rdi,r14 1173 add r12,QWORD[rsp] 1174 1175 add r12,QWORD[56+rsp] 1176 mov r13,r9 1177 add r12,rdi 1178 mov r14,rbx 1179 ror r13,23 1180 mov rdi,r10 1181 1182 xor r13,r9 1183 ror r14,5 1184 xor rdi,r11 1185 1186 mov QWORD[56+rsp],r12 1187 xor r14,rbx 1188 and rdi,r9 1189 1190 ror r13,4 1191 add r12,rax 1192 xor rdi,r11 1193 1194 ror r14,6 1195 xor r13,r9 1196 add r12,rdi 1197 1198 mov rdi,rbx 1199 add r12,QWORD[rbp] 1200 xor r14,rbx 1201 1202 xor rdi,rcx 1203 ror r13,14 1204 mov rax,rcx 1205 1206 and r15,rdi 1207 ror r14,28 1208 add r12,r13 1209 1210 xor rax,r15 1211 add r8,r12 1212 add rax,r12 1213 1214 lea rbp,[24+rbp] 1215 mov r13,QWORD[72+rsp] 1216 mov r15,QWORD[48+rsp] 1217 1218 mov r12,r13 1219 ror r13,7 1220 add rax,r14 1221 mov r14,r15 1222 ror r15,42 1223 1224 xor r13,r12 1225 shr r12,7 1226 ror r13,1 1227 xor r15,r14 1228 shr r14,6 1229 1230 ror r15,19 1231 xor r12,r13 1232 xor r15,r14 1233 add r12,QWORD[8+rsp] 1234 1235 add r12,QWORD[64+rsp] 1236 mov r13,r8 1237 add r12,r15 1238 mov r14,rax 1239 ror r13,23 1240 mov r15,r9 1241 1242 xor r13,r8 1243 ror r14,5 1244 xor r15,r10 1245 1246 mov QWORD[64+rsp],r12 1247 xor r14,rax 1248 and r15,r8 1249 1250 ror r13,4 1251 add r12,r11 1252 xor r15,r10 1253 1254 ror r14,6 1255 xor r13,r8 1256 add r12,r15 1257 1258 mov r15,rax 1259 add r12,QWORD[rbp] 1260 xor r14,rax 1261 1262 xor r15,rbx 1263 ror r13,14 1264 mov r11,rbx 1265 1266 and rdi,r15 1267 ror r14,28 1268 add r12,r13 1269 1270 xor r11,rdi 1271 add rdx,r12 1272 add r11,r12 1273 1274 lea rbp,[8+rbp] 1275 mov r13,QWORD[80+rsp] 1276 mov rdi,QWORD[56+rsp] 1277 1278 mov r12,r13 1279 ror r13,7 1280 add r11,r14 1281 mov r14,rdi 1282 ror rdi,42 1283 1284 xor r13,r12 1285 shr r12,7 1286 ror r13,1 1287 xor rdi,r14 1288 shr r14,6 1289 1290 ror rdi,19 1291 xor r12,r13 1292 xor rdi,r14 1293 add r12,QWORD[16+rsp] 1294 1295 add r12,QWORD[72+rsp] 1296 mov r13,rdx 1297 add r12,rdi 1298 mov r14,r11 1299 ror r13,23 1300 mov rdi,r8 1301 1302 xor r13,rdx 1303 ror r14,5 1304 xor rdi,r9 1305 1306 mov QWORD[72+rsp],r12 1307 xor r14,r11 1308 and rdi,rdx 1309 1310 ror r13,4 1311 add r12,r10 1312 xor rdi,r9 1313 1314 ror r14,6 1315 xor r13,rdx 1316 add r12,rdi 1317 1318 mov rdi,r11 1319 add r12,QWORD[rbp] 1320 xor r14,r11 1321 1322 xor rdi,rax 1323 ror r13,14 1324 mov r10,rax 1325 1326 and r15,rdi 1327 ror r14,28 1328 add r12,r13 1329 1330 xor r10,r15 1331 add rcx,r12 1332 add r10,r12 1333 1334 lea rbp,[24+rbp] 1335 mov r13,QWORD[88+rsp] 1336 mov r15,QWORD[64+rsp] 1337 1338 mov r12,r13 1339 ror r13,7 1340 add r10,r14 1341 mov r14,r15 1342 ror r15,42 1343 1344 xor r13,r12 1345 shr r12,7 1346 ror r13,1 1347 xor r15,r14 1348 shr r14,6 1349 1350 ror r15,19 1351 xor r12,r13 1352 xor r15,r14 1353 add r12,QWORD[24+rsp] 1354 1355 add r12,QWORD[80+rsp] 1356 mov r13,rcx 1357 add r12,r15 1358 mov r14,r10 1359 ror r13,23 1360 mov r15,rdx 1361 1362 xor r13,rcx 1363 ror r14,5 1364 xor r15,r8 1365 1366 mov QWORD[80+rsp],r12 1367 xor r14,r10 1368 and r15,rcx 1369 1370 ror r13,4 1371 add r12,r9 1372 xor r15,r8 1373 1374 ror r14,6 1375 xor r13,rcx 1376 add r12,r15 1377 1378 mov r15,r10 1379 add r12,QWORD[rbp] 1380 xor r14,r10 1381 1382 xor r15,r11 1383 ror r13,14 1384 mov r9,r11 1385 1386 and rdi,r15 1387 ror r14,28 1388 add r12,r13 1389 1390 xor r9,rdi 1391 add rbx,r12 1392 add r9,r12 1393 1394 lea rbp,[8+rbp] 1395 mov r13,QWORD[96+rsp] 1396 mov rdi,QWORD[72+rsp] 1397 1398 mov r12,r13 1399 ror r13,7 1400 add r9,r14 1401 mov r14,rdi 1402 ror rdi,42 1403 1404 xor r13,r12 1405 shr r12,7 1406 ror r13,1 1407 xor rdi,r14 1408 shr r14,6 1409 1410 ror rdi,19 1411 xor r12,r13 1412 xor rdi,r14 1413 add r12,QWORD[32+rsp] 1414 1415 add r12,QWORD[88+rsp] 1416 mov r13,rbx 1417 add r12,rdi 1418 mov r14,r9 1419 ror r13,23 1420 mov rdi,rcx 1421 1422 xor r13,rbx 1423 ror r14,5 1424 xor rdi,rdx 1425 1426 mov QWORD[88+rsp],r12 1427 xor r14,r9 1428 and rdi,rbx 1429 1430 ror r13,4 1431 add r12,r8 1432 xor rdi,rdx 1433 1434 ror r14,6 1435 xor r13,rbx 1436 add r12,rdi 1437 1438 mov rdi,r9 1439 add r12,QWORD[rbp] 1440 xor r14,r9 1441 1442 xor rdi,r10 1443 ror r13,14 1444 mov r8,r10 1445 1446 and r15,rdi 1447 ror r14,28 1448 add r12,r13 1449 1450 xor r8,r15 1451 add rax,r12 1452 add r8,r12 1453 1454 lea rbp,[24+rbp] 1455 mov r13,QWORD[104+rsp] 1456 mov r15,QWORD[80+rsp] 1457 1458 mov r12,r13 1459 ror r13,7 1460 add r8,r14 1461 mov r14,r15 1462 ror r15,42 1463 1464 xor r13,r12 1465 shr r12,7 1466 ror r13,1 1467 xor r15,r14 1468 shr r14,6 1469 1470 ror r15,19 1471 xor r12,r13 1472 xor r15,r14 1473 add r12,QWORD[40+rsp] 1474 1475 add r12,QWORD[96+rsp] 1476 mov r13,rax 1477 add r12,r15 1478 mov r14,r8 1479 ror r13,23 1480 mov r15,rbx 1481 1482 xor r13,rax 1483 ror r14,5 1484 xor r15,rcx 1485 1486 mov QWORD[96+rsp],r12 1487 xor r14,r8 1488 and r15,rax 1489 1490 ror r13,4 1491 add r12,rdx 1492 xor r15,rcx 1493 1494 ror r14,6 1495 xor r13,rax 1496 add r12,r15 1497 1498 mov r15,r8 1499 add r12,QWORD[rbp] 1500 xor r14,r8 1501 1502 xor r15,r9 1503 ror r13,14 1504 mov rdx,r9 1505 1506 and rdi,r15 1507 ror r14,28 1508 add r12,r13 1509 1510 xor rdx,rdi 1511 add r11,r12 1512 add rdx,r12 1513 1514 lea rbp,[8+rbp] 1515 mov r13,QWORD[112+rsp] 1516 mov rdi,QWORD[88+rsp] 1517 1518 mov r12,r13 1519 ror r13,7 1520 add rdx,r14 1521 mov r14,rdi 1522 ror rdi,42 1523 1524 xor r13,r12 1525 shr r12,7 1526 ror r13,1 1527 xor rdi,r14 1528 shr r14,6 1529 1530 ror rdi,19 1531 xor r12,r13 1532 xor rdi,r14 1533 add r12,QWORD[48+rsp] 1534 1535 add r12,QWORD[104+rsp] 1536 mov r13,r11 1537 add r12,rdi 1538 mov r14,rdx 1539 ror r13,23 1540 mov rdi,rax 1541 1542 xor r13,r11 1543 ror r14,5 1544 xor rdi,rbx 1545 1546 mov QWORD[104+rsp],r12 1547 xor r14,rdx 1548 and rdi,r11 1549 1550 ror r13,4 1551 add r12,rcx 1552 xor rdi,rbx 1553 1554 ror r14,6 1555 xor r13,r11 1556 add r12,rdi 1557 1558 mov rdi,rdx 1559 add r12,QWORD[rbp] 1560 xor r14,rdx 1561 1562 xor rdi,r8 1563 ror r13,14 1564 mov rcx,r8 1565 1566 and r15,rdi 1567 ror r14,28 1568 add r12,r13 1569 1570 xor rcx,r15 1571 add r10,r12 1572 add rcx,r12 1573 1574 lea rbp,[24+rbp] 1575 mov r13,QWORD[120+rsp] 1576 mov r15,QWORD[96+rsp] 1577 1578 mov r12,r13 1579 ror r13,7 1580 add rcx,r14 1581 mov r14,r15 1582 ror r15,42 1583 1584 xor r13,r12 1585 shr r12,7 1586 ror r13,1 1587 xor r15,r14 1588 shr r14,6 1589 1590 ror r15,19 1591 xor r12,r13 1592 xor r15,r14 1593 add r12,QWORD[56+rsp] 1594 1595 add r12,QWORD[112+rsp] 1596 mov r13,r10 1597 add r12,r15 1598 mov r14,rcx 1599 ror r13,23 1600 mov r15,r11 1601 1602 xor r13,r10 1603 ror r14,5 1604 xor r15,rax 1605 1606 mov QWORD[112+rsp],r12 1607 xor r14,rcx 1608 and r15,r10 1609 1610 ror r13,4 1611 add r12,rbx 1612 xor r15,rax 1613 1614 ror r14,6 1615 xor r13,r10 1616 add r12,r15 1617 1618 mov r15,rcx 1619 add r12,QWORD[rbp] 1620 xor r14,rcx 1621 1622 xor r15,rdx 1623 ror r13,14 1624 mov rbx,rdx 1625 1626 and rdi,r15 1627 ror r14,28 1628 add r12,r13 1629 1630 xor rbx,rdi 1631 add r9,r12 1632 add rbx,r12 1633 1634 lea rbp,[8+rbp] 1635 mov r13,QWORD[rsp] 1636 mov rdi,QWORD[104+rsp] 1637 1638 mov r12,r13 1639 ror r13,7 1640 add rbx,r14 1641 mov r14,rdi 1642 ror rdi,42 1643 1644 xor r13,r12 1645 shr r12,7 1646 ror r13,1 1647 xor rdi,r14 1648 shr r14,6 1649 1650 ror rdi,19 1651 xor r12,r13 1652 xor rdi,r14 1653 add r12,QWORD[64+rsp] 1654 1655 add r12,QWORD[120+rsp] 1656 mov r13,r9 1657 add r12,rdi 1658 mov r14,rbx 1659 ror r13,23 1660 mov rdi,r10 1661 1662 xor r13,r9 1663 ror r14,5 1664 xor rdi,r11 1665 1666 mov QWORD[120+rsp],r12 1667 xor r14,rbx 1668 and rdi,r9 1669 1670 ror r13,4 1671 add r12,rax 1672 xor rdi,r11 1673 1674 ror r14,6 1675 xor r13,r9 1676 add r12,rdi 1677 1678 mov rdi,rbx 1679 add r12,QWORD[rbp] 1680 xor r14,rbx 1681 1682 xor rdi,rcx 1683 ror r13,14 1684 mov rax,rcx 1685 1686 and r15,rdi 1687 ror r14,28 1688 add r12,r13 1689 1690 xor rax,r15 1691 add r8,r12 1692 add rax,r12 1693 1694 lea rbp,[24+rbp] 1695 cmp BYTE[7+rbp],0 1696 jnz NEAR $L$rounds_16_xx 1697 1698 mov rdi,QWORD[((128+0))+rsp] 1699 add rax,r14 1700 lea rsi,[128+rsi] 1701 1702 add rax,QWORD[rdi] 1703 add rbx,QWORD[8+rdi] 1704 add rcx,QWORD[16+rdi] 1705 add rdx,QWORD[24+rdi] 1706 add r8,QWORD[32+rdi] 1707 add r9,QWORD[40+rdi] 1708 add r10,QWORD[48+rdi] 1709 add r11,QWORD[56+rdi] 1710 1711 cmp rsi,QWORD[((128+16))+rsp] 1712 1713 mov QWORD[rdi],rax 1714 mov QWORD[8+rdi],rbx 1715 mov QWORD[16+rdi],rcx 1716 mov QWORD[24+rdi],rdx 1717 mov QWORD[32+rdi],r8 1718 mov QWORD[40+rdi],r9 1719 mov QWORD[48+rdi],r10 1720 mov QWORD[56+rdi],r11 1721 jb NEAR $L$loop 1722 1723 mov rsi,QWORD[152+rsp] 1724 1725 mov r15,QWORD[((-48))+rsi] 1726 1727 mov r14,QWORD[((-40))+rsi] 1728 1729 mov r13,QWORD[((-32))+rsi] 1730 1731 mov r12,QWORD[((-24))+rsi] 1732 1733 mov rbp,QWORD[((-16))+rsi] 1734 1735 mov rbx,QWORD[((-8))+rsi] 1736 1737 lea rsp,[rsi] 1738 1739$L$epilogue: 1740 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 1741 mov rsi,QWORD[16+rsp] 1742 DB 0F3h,0C3h ;repret 1743 1744$L$SEH_end_sha512_block_data_order: 1745ALIGN 64 1746 1747K512: 1748 DQ 0x428a2f98d728ae22,0x7137449123ef65cd 1749 DQ 0x428a2f98d728ae22,0x7137449123ef65cd 1750 DQ 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc 1751 DQ 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc 1752 DQ 0x3956c25bf348b538,0x59f111f1b605d019 1753 DQ 0x3956c25bf348b538,0x59f111f1b605d019 1754 DQ 0x923f82a4af194f9b,0xab1c5ed5da6d8118 1755 DQ 0x923f82a4af194f9b,0xab1c5ed5da6d8118 1756 DQ 0xd807aa98a3030242,0x12835b0145706fbe 1757 DQ 0xd807aa98a3030242,0x12835b0145706fbe 1758 DQ 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 1759 DQ 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 1760 DQ 0x72be5d74f27b896f,0x80deb1fe3b1696b1 1761 DQ 0x72be5d74f27b896f,0x80deb1fe3b1696b1 1762 DQ 0x9bdc06a725c71235,0xc19bf174cf692694 1763 DQ 0x9bdc06a725c71235,0xc19bf174cf692694 1764 DQ 0xe49b69c19ef14ad2,0xefbe4786384f25e3 1765 DQ 0xe49b69c19ef14ad2,0xefbe4786384f25e3 1766 DQ 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65 1767 DQ 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65 1768 DQ 0x2de92c6f592b0275,0x4a7484aa6ea6e483 1769 DQ 0x2de92c6f592b0275,0x4a7484aa6ea6e483 1770 DQ 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 1771 DQ 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 1772 DQ 0x983e5152ee66dfab,0xa831c66d2db43210 1773 DQ 0x983e5152ee66dfab,0xa831c66d2db43210 1774 DQ 0xb00327c898fb213f,0xbf597fc7beef0ee4 1775 DQ 0xb00327c898fb213f,0xbf597fc7beef0ee4 1776 DQ 0xc6e00bf33da88fc2,0xd5a79147930aa725 1777 DQ 0xc6e00bf33da88fc2,0xd5a79147930aa725 1778 DQ 0x06ca6351e003826f,0x142929670a0e6e70 1779 DQ 0x06ca6351e003826f,0x142929670a0e6e70 1780 DQ 0x27b70a8546d22ffc,0x2e1b21385c26c926 1781 DQ 0x27b70a8546d22ffc,0x2e1b21385c26c926 1782 DQ 0x4d2c6dfc5ac42aed,0x53380d139d95b3df 1783 DQ 0x4d2c6dfc5ac42aed,0x53380d139d95b3df 1784 DQ 0x650a73548baf63de,0x766a0abb3c77b2a8 1785 DQ 0x650a73548baf63de,0x766a0abb3c77b2a8 1786 DQ 0x81c2c92e47edaee6,0x92722c851482353b 1787 DQ 0x81c2c92e47edaee6,0x92722c851482353b 1788 DQ 0xa2bfe8a14cf10364,0xa81a664bbc423001 1789 DQ 0xa2bfe8a14cf10364,0xa81a664bbc423001 1790 DQ 0xc24b8b70d0f89791,0xc76c51a30654be30 1791 DQ 0xc24b8b70d0f89791,0xc76c51a30654be30 1792 DQ 0xd192e819d6ef5218,0xd69906245565a910 1793 DQ 0xd192e819d6ef5218,0xd69906245565a910 1794 DQ 0xf40e35855771202a,0x106aa07032bbd1b8 1795 DQ 0xf40e35855771202a,0x106aa07032bbd1b8 1796 DQ 0x19a4c116b8d2d0c8,0x1e376c085141ab53 1797 DQ 0x19a4c116b8d2d0c8,0x1e376c085141ab53 1798 DQ 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 1799 DQ 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 1800 DQ 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb 1801 DQ 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb 1802 DQ 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 1803 DQ 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 1804 DQ 0x748f82ee5defb2fc,0x78a5636f43172f60 1805 DQ 0x748f82ee5defb2fc,0x78a5636f43172f60 1806 DQ 0x84c87814a1f0ab72,0x8cc702081a6439ec 1807 DQ 0x84c87814a1f0ab72,0x8cc702081a6439ec 1808 DQ 0x90befffa23631e28,0xa4506cebde82bde9 1809 DQ 0x90befffa23631e28,0xa4506cebde82bde9 1810 DQ 0xbef9a3f7b2c67915,0xc67178f2e372532b 1811 DQ 0xbef9a3f7b2c67915,0xc67178f2e372532b 1812 DQ 0xca273eceea26619c,0xd186b8c721c0c207 1813 DQ 0xca273eceea26619c,0xd186b8c721c0c207 1814 DQ 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 1815 DQ 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 1816 DQ 0x06f067aa72176fba,0x0a637dc5a2c898a6 1817 DQ 0x06f067aa72176fba,0x0a637dc5a2c898a6 1818 DQ 0x113f9804bef90dae,0x1b710b35131c471b 1819 DQ 0x113f9804bef90dae,0x1b710b35131c471b 1820 DQ 0x28db77f523047d84,0x32caab7b40c72493 1821 DQ 0x28db77f523047d84,0x32caab7b40c72493 1822 DQ 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c 1823 DQ 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c 1824 DQ 0x4cc5d4becb3e42b6,0x597f299cfc657e2a 1825 DQ 0x4cc5d4becb3e42b6,0x597f299cfc657e2a 1826 DQ 0x5fcb6fab3ad6faec,0x6c44198c4a475817 1827 DQ 0x5fcb6fab3ad6faec,0x6c44198c4a475817 1828 1829 DQ 0x0001020304050607,0x08090a0b0c0d0e0f 1830 DQ 0x0001020304050607,0x08090a0b0c0d0e0f 1831DB 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97 1832DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54 1833DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 1834DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 1835DB 111,114,103,62,0 1836 1837ALIGN 64 1838sha512_block_data_order_avx: 1839 mov QWORD[8+rsp],rdi ;WIN64 prologue 1840 mov QWORD[16+rsp],rsi 1841 mov rax,rsp 1842$L$SEH_begin_sha512_block_data_order_avx: 1843 mov rdi,rcx 1844 mov rsi,rdx 1845 mov rdx,r8 1846 1847 1848 1849$L$avx_shortcut: 1850 mov rax,rsp 1851 1852 push rbx 1853 1854 push rbp 1855 1856 push r12 1857 1858 push r13 1859 1860 push r14 1861 1862 push r15 1863 1864 shl rdx,4 1865 sub rsp,256 1866 lea rdx,[rdx*8+rsi] 1867 and rsp,-64 1868 mov QWORD[((128+0))+rsp],rdi 1869 mov QWORD[((128+8))+rsp],rsi 1870 mov QWORD[((128+16))+rsp],rdx 1871 mov QWORD[152+rsp],rax 1872 1873 movaps XMMWORD[(128+32)+rsp],xmm6 1874 movaps XMMWORD[(128+48)+rsp],xmm7 1875 movaps XMMWORD[(128+64)+rsp],xmm8 1876 movaps XMMWORD[(128+80)+rsp],xmm9 1877 movaps XMMWORD[(128+96)+rsp],xmm10 1878 movaps XMMWORD[(128+112)+rsp],xmm11 1879$L$prologue_avx: 1880 1881 vzeroupper 1882 mov rax,QWORD[rdi] 1883 mov rbx,QWORD[8+rdi] 1884 mov rcx,QWORD[16+rdi] 1885 mov rdx,QWORD[24+rdi] 1886 mov r8,QWORD[32+rdi] 1887 mov r9,QWORD[40+rdi] 1888 mov r10,QWORD[48+rdi] 1889 mov r11,QWORD[56+rdi] 1890 jmp NEAR $L$loop_avx 1891ALIGN 16 1892$L$loop_avx: 1893 vmovdqa xmm11,XMMWORD[((K512+1280))] 1894 vmovdqu xmm0,XMMWORD[rsi] 1895 lea rbp,[((K512+128))] 1896 vmovdqu xmm1,XMMWORD[16+rsi] 1897 vmovdqu xmm2,XMMWORD[32+rsi] 1898 vpshufb xmm0,xmm0,xmm11 1899 vmovdqu xmm3,XMMWORD[48+rsi] 1900 vpshufb xmm1,xmm1,xmm11 1901 vmovdqu xmm4,XMMWORD[64+rsi] 1902 vpshufb xmm2,xmm2,xmm11 1903 vmovdqu xmm5,XMMWORD[80+rsi] 1904 vpshufb xmm3,xmm3,xmm11 1905 vmovdqu xmm6,XMMWORD[96+rsi] 1906 vpshufb xmm4,xmm4,xmm11 1907 vmovdqu xmm7,XMMWORD[112+rsi] 1908 vpshufb xmm5,xmm5,xmm11 1909 vpaddq xmm8,xmm0,XMMWORD[((-128))+rbp] 1910 vpshufb xmm6,xmm6,xmm11 1911 vpaddq xmm9,xmm1,XMMWORD[((-96))+rbp] 1912 vpshufb xmm7,xmm7,xmm11 1913 vpaddq xmm10,xmm2,XMMWORD[((-64))+rbp] 1914 vpaddq xmm11,xmm3,XMMWORD[((-32))+rbp] 1915 vmovdqa XMMWORD[rsp],xmm8 1916 vpaddq xmm8,xmm4,XMMWORD[rbp] 1917 vmovdqa XMMWORD[16+rsp],xmm9 1918 vpaddq xmm9,xmm5,XMMWORD[32+rbp] 1919 vmovdqa XMMWORD[32+rsp],xmm10 1920 vpaddq xmm10,xmm6,XMMWORD[64+rbp] 1921 vmovdqa XMMWORD[48+rsp],xmm11 1922 vpaddq xmm11,xmm7,XMMWORD[96+rbp] 1923 vmovdqa XMMWORD[64+rsp],xmm8 1924 mov r14,rax 1925 vmovdqa XMMWORD[80+rsp],xmm9 1926 mov rdi,rbx 1927 vmovdqa XMMWORD[96+rsp],xmm10 1928 xor rdi,rcx 1929 vmovdqa XMMWORD[112+rsp],xmm11 1930 mov r13,r8 1931 jmp NEAR $L$avx_00_47 1932 1933ALIGN 16 1934$L$avx_00_47: 1935 add rbp,256 1936 vpalignr xmm8,xmm1,xmm0,8 1937 shrd r13,r13,23 1938 mov rax,r14 1939 vpalignr xmm11,xmm5,xmm4,8 1940 mov r12,r9 1941 shrd r14,r14,5 1942 vpsrlq xmm10,xmm8,1 1943 xor r13,r8 1944 xor r12,r10 1945 vpaddq xmm0,xmm0,xmm11 1946 shrd r13,r13,4 1947 xor r14,rax 1948 vpsrlq xmm11,xmm8,7 1949 and r12,r8 1950 xor r13,r8 1951 vpsllq xmm9,xmm8,56 1952 add r11,QWORD[rsp] 1953 mov r15,rax 1954 vpxor xmm8,xmm11,xmm10 1955 xor r12,r10 1956 shrd r14,r14,6 1957 vpsrlq xmm10,xmm10,7 1958 xor r15,rbx 1959 add r11,r12 1960 vpxor xmm8,xmm8,xmm9 1961 shrd r13,r13,14 1962 and rdi,r15 1963 vpsllq xmm9,xmm9,7 1964 xor r14,rax 1965 add r11,r13 1966 vpxor xmm8,xmm8,xmm10 1967 xor rdi,rbx 1968 shrd r14,r14,28 1969 vpsrlq xmm11,xmm7,6 1970 add rdx,r11 1971 add r11,rdi 1972 vpxor xmm8,xmm8,xmm9 1973 mov r13,rdx 1974 add r14,r11 1975 vpsllq xmm10,xmm7,3 1976 shrd r13,r13,23 1977 mov r11,r14 1978 vpaddq xmm0,xmm0,xmm8 1979 mov r12,r8 1980 shrd r14,r14,5 1981 vpsrlq xmm9,xmm7,19 1982 xor r13,rdx 1983 xor r12,r9 1984 vpxor xmm11,xmm11,xmm10 1985 shrd r13,r13,4 1986 xor r14,r11 1987 vpsllq xmm10,xmm10,42 1988 and r12,rdx 1989 xor r13,rdx 1990 vpxor xmm11,xmm11,xmm9 1991 add r10,QWORD[8+rsp] 1992 mov rdi,r11 1993 vpsrlq xmm9,xmm9,42 1994 xor r12,r9 1995 shrd r14,r14,6 1996 vpxor xmm11,xmm11,xmm10 1997 xor rdi,rax 1998 add r10,r12 1999 vpxor xmm11,xmm11,xmm9 2000 shrd r13,r13,14 2001 and r15,rdi 2002 vpaddq xmm0,xmm0,xmm11 2003 xor r14,r11 2004 add r10,r13 2005 vpaddq xmm10,xmm0,XMMWORD[((-128))+rbp] 2006 xor r15,rax 2007 shrd r14,r14,28 2008 add rcx,r10 2009 add r10,r15 2010 mov r13,rcx 2011 add r14,r10 2012 vmovdqa XMMWORD[rsp],xmm10 2013 vpalignr xmm8,xmm2,xmm1,8 2014 shrd r13,r13,23 2015 mov r10,r14 2016 vpalignr xmm11,xmm6,xmm5,8 2017 mov r12,rdx 2018 shrd r14,r14,5 2019 vpsrlq xmm10,xmm8,1 2020 xor r13,rcx 2021 xor r12,r8 2022 vpaddq xmm1,xmm1,xmm11 2023 shrd r13,r13,4 2024 xor r14,r10 2025 vpsrlq xmm11,xmm8,7 2026 and r12,rcx 2027 xor r13,rcx 2028 vpsllq xmm9,xmm8,56 2029 add r9,QWORD[16+rsp] 2030 mov r15,r10 2031 vpxor xmm8,xmm11,xmm10 2032 xor r12,r8 2033 shrd r14,r14,6 2034 vpsrlq xmm10,xmm10,7 2035 xor r15,r11 2036 add r9,r12 2037 vpxor xmm8,xmm8,xmm9 2038 shrd r13,r13,14 2039 and rdi,r15 2040 vpsllq xmm9,xmm9,7 2041 xor r14,r10 2042 add r9,r13 2043 vpxor xmm8,xmm8,xmm10 2044 xor rdi,r11 2045 shrd r14,r14,28 2046 vpsrlq xmm11,xmm0,6 2047 add rbx,r9 2048 add r9,rdi 2049 vpxor xmm8,xmm8,xmm9 2050 mov r13,rbx 2051 add r14,r9 2052 vpsllq xmm10,xmm0,3 2053 shrd r13,r13,23 2054 mov r9,r14 2055 vpaddq xmm1,xmm1,xmm8 2056 mov r12,rcx 2057 shrd r14,r14,5 2058 vpsrlq xmm9,xmm0,19 2059 xor r13,rbx 2060 xor r12,rdx 2061 vpxor xmm11,xmm11,xmm10 2062 shrd r13,r13,4 2063 xor r14,r9 2064 vpsllq xmm10,xmm10,42 2065 and r12,rbx 2066 xor r13,rbx 2067 vpxor xmm11,xmm11,xmm9 2068 add r8,QWORD[24+rsp] 2069 mov rdi,r9 2070 vpsrlq xmm9,xmm9,42 2071 xor r12,rdx 2072 shrd r14,r14,6 2073 vpxor xmm11,xmm11,xmm10 2074 xor rdi,r10 2075 add r8,r12 2076 vpxor xmm11,xmm11,xmm9 2077 shrd r13,r13,14 2078 and r15,rdi 2079 vpaddq xmm1,xmm1,xmm11 2080 xor r14,r9 2081 add r8,r13 2082 vpaddq xmm10,xmm1,XMMWORD[((-96))+rbp] 2083 xor r15,r10 2084 shrd r14,r14,28 2085 add rax,r8 2086 add r8,r15 2087 mov r13,rax 2088 add r14,r8 2089 vmovdqa XMMWORD[16+rsp],xmm10 2090 vpalignr xmm8,xmm3,xmm2,8 2091 shrd r13,r13,23 2092 mov r8,r14 2093 vpalignr xmm11,xmm7,xmm6,8 2094 mov r12,rbx 2095 shrd r14,r14,5 2096 vpsrlq xmm10,xmm8,1 2097 xor r13,rax 2098 xor r12,rcx 2099 vpaddq xmm2,xmm2,xmm11 2100 shrd r13,r13,4 2101 xor r14,r8 2102 vpsrlq xmm11,xmm8,7 2103 and r12,rax 2104 xor r13,rax 2105 vpsllq xmm9,xmm8,56 2106 add rdx,QWORD[32+rsp] 2107 mov r15,r8 2108 vpxor xmm8,xmm11,xmm10 2109 xor r12,rcx 2110 shrd r14,r14,6 2111 vpsrlq xmm10,xmm10,7 2112 xor r15,r9 2113 add rdx,r12 2114 vpxor xmm8,xmm8,xmm9 2115 shrd r13,r13,14 2116 and rdi,r15 2117 vpsllq xmm9,xmm9,7 2118 xor r14,r8 2119 add rdx,r13 2120 vpxor xmm8,xmm8,xmm10 2121 xor rdi,r9 2122 shrd r14,r14,28 2123 vpsrlq xmm11,xmm1,6 2124 add r11,rdx 2125 add rdx,rdi 2126 vpxor xmm8,xmm8,xmm9 2127 mov r13,r11 2128 add r14,rdx 2129 vpsllq xmm10,xmm1,3 2130 shrd r13,r13,23 2131 mov rdx,r14 2132 vpaddq xmm2,xmm2,xmm8 2133 mov r12,rax 2134 shrd r14,r14,5 2135 vpsrlq xmm9,xmm1,19 2136 xor r13,r11 2137 xor r12,rbx 2138 vpxor xmm11,xmm11,xmm10 2139 shrd r13,r13,4 2140 xor r14,rdx 2141 vpsllq xmm10,xmm10,42 2142 and r12,r11 2143 xor r13,r11 2144 vpxor xmm11,xmm11,xmm9 2145 add rcx,QWORD[40+rsp] 2146 mov rdi,rdx 2147 vpsrlq xmm9,xmm9,42 2148 xor r12,rbx 2149 shrd r14,r14,6 2150 vpxor xmm11,xmm11,xmm10 2151 xor rdi,r8 2152 add rcx,r12 2153 vpxor xmm11,xmm11,xmm9 2154 shrd r13,r13,14 2155 and r15,rdi 2156 vpaddq xmm2,xmm2,xmm11 2157 xor r14,rdx 2158 add rcx,r13 2159 vpaddq xmm10,xmm2,XMMWORD[((-64))+rbp] 2160 xor r15,r8 2161 shrd r14,r14,28 2162 add r10,rcx 2163 add rcx,r15 2164 mov r13,r10 2165 add r14,rcx 2166 vmovdqa XMMWORD[32+rsp],xmm10 2167 vpalignr xmm8,xmm4,xmm3,8 2168 shrd r13,r13,23 2169 mov rcx,r14 2170 vpalignr xmm11,xmm0,xmm7,8 2171 mov r12,r11 2172 shrd r14,r14,5 2173 vpsrlq xmm10,xmm8,1 2174 xor r13,r10 2175 xor r12,rax 2176 vpaddq xmm3,xmm3,xmm11 2177 shrd r13,r13,4 2178 xor r14,rcx 2179 vpsrlq xmm11,xmm8,7 2180 and r12,r10 2181 xor r13,r10 2182 vpsllq xmm9,xmm8,56 2183 add rbx,QWORD[48+rsp] 2184 mov r15,rcx 2185 vpxor xmm8,xmm11,xmm10 2186 xor r12,rax 2187 shrd r14,r14,6 2188 vpsrlq xmm10,xmm10,7 2189 xor r15,rdx 2190 add rbx,r12 2191 vpxor xmm8,xmm8,xmm9 2192 shrd r13,r13,14 2193 and rdi,r15 2194 vpsllq xmm9,xmm9,7 2195 xor r14,rcx 2196 add rbx,r13 2197 vpxor xmm8,xmm8,xmm10 2198 xor rdi,rdx 2199 shrd r14,r14,28 2200 vpsrlq xmm11,xmm2,6 2201 add r9,rbx 2202 add rbx,rdi 2203 vpxor xmm8,xmm8,xmm9 2204 mov r13,r9 2205 add r14,rbx 2206 vpsllq xmm10,xmm2,3 2207 shrd r13,r13,23 2208 mov rbx,r14 2209 vpaddq xmm3,xmm3,xmm8 2210 mov r12,r10 2211 shrd r14,r14,5 2212 vpsrlq xmm9,xmm2,19 2213 xor r13,r9 2214 xor r12,r11 2215 vpxor xmm11,xmm11,xmm10 2216 shrd r13,r13,4 2217 xor r14,rbx 2218 vpsllq xmm10,xmm10,42 2219 and r12,r9 2220 xor r13,r9 2221 vpxor xmm11,xmm11,xmm9 2222 add rax,QWORD[56+rsp] 2223 mov rdi,rbx 2224 vpsrlq xmm9,xmm9,42 2225 xor r12,r11 2226 shrd r14,r14,6 2227 vpxor xmm11,xmm11,xmm10 2228 xor rdi,rcx 2229 add rax,r12 2230 vpxor xmm11,xmm11,xmm9 2231 shrd r13,r13,14 2232 and r15,rdi 2233 vpaddq xmm3,xmm3,xmm11 2234 xor r14,rbx 2235 add rax,r13 2236 vpaddq xmm10,xmm3,XMMWORD[((-32))+rbp] 2237 xor r15,rcx 2238 shrd r14,r14,28 2239 add r8,rax 2240 add rax,r15 2241 mov r13,r8 2242 add r14,rax 2243 vmovdqa XMMWORD[48+rsp],xmm10 2244 vpalignr xmm8,xmm5,xmm4,8 2245 shrd r13,r13,23 2246 mov rax,r14 2247 vpalignr xmm11,xmm1,xmm0,8 2248 mov r12,r9 2249 shrd r14,r14,5 2250 vpsrlq xmm10,xmm8,1 2251 xor r13,r8 2252 xor r12,r10 2253 vpaddq xmm4,xmm4,xmm11 2254 shrd r13,r13,4 2255 xor r14,rax 2256 vpsrlq xmm11,xmm8,7 2257 and r12,r8 2258 xor r13,r8 2259 vpsllq xmm9,xmm8,56 2260 add r11,QWORD[64+rsp] 2261 mov r15,rax 2262 vpxor xmm8,xmm11,xmm10 2263 xor r12,r10 2264 shrd r14,r14,6 2265 vpsrlq xmm10,xmm10,7 2266 xor r15,rbx 2267 add r11,r12 2268 vpxor xmm8,xmm8,xmm9 2269 shrd r13,r13,14 2270 and rdi,r15 2271 vpsllq xmm9,xmm9,7 2272 xor r14,rax 2273 add r11,r13 2274 vpxor xmm8,xmm8,xmm10 2275 xor rdi,rbx 2276 shrd r14,r14,28 2277 vpsrlq xmm11,xmm3,6 2278 add rdx,r11 2279 add r11,rdi 2280 vpxor xmm8,xmm8,xmm9 2281 mov r13,rdx 2282 add r14,r11 2283 vpsllq xmm10,xmm3,3 2284 shrd r13,r13,23 2285 mov r11,r14 2286 vpaddq xmm4,xmm4,xmm8 2287 mov r12,r8 2288 shrd r14,r14,5 2289 vpsrlq xmm9,xmm3,19 2290 xor r13,rdx 2291 xor r12,r9 2292 vpxor xmm11,xmm11,xmm10 2293 shrd r13,r13,4 2294 xor r14,r11 2295 vpsllq xmm10,xmm10,42 2296 and r12,rdx 2297 xor r13,rdx 2298 vpxor xmm11,xmm11,xmm9 2299 add r10,QWORD[72+rsp] 2300 mov rdi,r11 2301 vpsrlq xmm9,xmm9,42 2302 xor r12,r9 2303 shrd r14,r14,6 2304 vpxor xmm11,xmm11,xmm10 2305 xor rdi,rax 2306 add r10,r12 2307 vpxor xmm11,xmm11,xmm9 2308 shrd r13,r13,14 2309 and r15,rdi 2310 vpaddq xmm4,xmm4,xmm11 2311 xor r14,r11 2312 add r10,r13 2313 vpaddq xmm10,xmm4,XMMWORD[rbp] 2314 xor r15,rax 2315 shrd r14,r14,28 2316 add rcx,r10 2317 add r10,r15 2318 mov r13,rcx 2319 add r14,r10 2320 vmovdqa XMMWORD[64+rsp],xmm10 2321 vpalignr xmm8,xmm6,xmm5,8 2322 shrd r13,r13,23 2323 mov r10,r14 2324 vpalignr xmm11,xmm2,xmm1,8 2325 mov r12,rdx 2326 shrd r14,r14,5 2327 vpsrlq xmm10,xmm8,1 2328 xor r13,rcx 2329 xor r12,r8 2330 vpaddq xmm5,xmm5,xmm11 2331 shrd r13,r13,4 2332 xor r14,r10 2333 vpsrlq xmm11,xmm8,7 2334 and r12,rcx 2335 xor r13,rcx 2336 vpsllq xmm9,xmm8,56 2337 add r9,QWORD[80+rsp] 2338 mov r15,r10 2339 vpxor xmm8,xmm11,xmm10 2340 xor r12,r8 2341 shrd r14,r14,6 2342 vpsrlq xmm10,xmm10,7 2343 xor r15,r11 2344 add r9,r12 2345 vpxor xmm8,xmm8,xmm9 2346 shrd r13,r13,14 2347 and rdi,r15 2348 vpsllq xmm9,xmm9,7 2349 xor r14,r10 2350 add r9,r13 2351 vpxor xmm8,xmm8,xmm10 2352 xor rdi,r11 2353 shrd r14,r14,28 2354 vpsrlq xmm11,xmm4,6 2355 add rbx,r9 2356 add r9,rdi 2357 vpxor xmm8,xmm8,xmm9 2358 mov r13,rbx 2359 add r14,r9 2360 vpsllq xmm10,xmm4,3 2361 shrd r13,r13,23 2362 mov r9,r14 2363 vpaddq xmm5,xmm5,xmm8 2364 mov r12,rcx 2365 shrd r14,r14,5 2366 vpsrlq xmm9,xmm4,19 2367 xor r13,rbx 2368 xor r12,rdx 2369 vpxor xmm11,xmm11,xmm10 2370 shrd r13,r13,4 2371 xor r14,r9 2372 vpsllq xmm10,xmm10,42 2373 and r12,rbx 2374 xor r13,rbx 2375 vpxor xmm11,xmm11,xmm9 2376 add r8,QWORD[88+rsp] 2377 mov rdi,r9 2378 vpsrlq xmm9,xmm9,42 2379 xor r12,rdx 2380 shrd r14,r14,6 2381 vpxor xmm11,xmm11,xmm10 2382 xor rdi,r10 2383 add r8,r12 2384 vpxor xmm11,xmm11,xmm9 2385 shrd r13,r13,14 2386 and r15,rdi 2387 vpaddq xmm5,xmm5,xmm11 2388 xor r14,r9 2389 add r8,r13 2390 vpaddq xmm10,xmm5,XMMWORD[32+rbp] 2391 xor r15,r10 2392 shrd r14,r14,28 2393 add rax,r8 2394 add r8,r15 2395 mov r13,rax 2396 add r14,r8 2397 vmovdqa XMMWORD[80+rsp],xmm10 2398 vpalignr xmm8,xmm7,xmm6,8 2399 shrd r13,r13,23 2400 mov r8,r14 2401 vpalignr xmm11,xmm3,xmm2,8 2402 mov r12,rbx 2403 shrd r14,r14,5 2404 vpsrlq xmm10,xmm8,1 2405 xor r13,rax 2406 xor r12,rcx 2407 vpaddq xmm6,xmm6,xmm11 2408 shrd r13,r13,4 2409 xor r14,r8 2410 vpsrlq xmm11,xmm8,7 2411 and r12,rax 2412 xor r13,rax 2413 vpsllq xmm9,xmm8,56 2414 add rdx,QWORD[96+rsp] 2415 mov r15,r8 2416 vpxor xmm8,xmm11,xmm10 2417 xor r12,rcx 2418 shrd r14,r14,6 2419 vpsrlq xmm10,xmm10,7 2420 xor r15,r9 2421 add rdx,r12 2422 vpxor xmm8,xmm8,xmm9 2423 shrd r13,r13,14 2424 and rdi,r15 2425 vpsllq xmm9,xmm9,7 2426 xor r14,r8 2427 add rdx,r13 2428 vpxor xmm8,xmm8,xmm10 2429 xor rdi,r9 2430 shrd r14,r14,28 2431 vpsrlq xmm11,xmm5,6 2432 add r11,rdx 2433 add rdx,rdi 2434 vpxor xmm8,xmm8,xmm9 2435 mov r13,r11 2436 add r14,rdx 2437 vpsllq xmm10,xmm5,3 2438 shrd r13,r13,23 2439 mov rdx,r14 2440 vpaddq xmm6,xmm6,xmm8 2441 mov r12,rax 2442 shrd r14,r14,5 2443 vpsrlq xmm9,xmm5,19 2444 xor r13,r11 2445 xor r12,rbx 2446 vpxor xmm11,xmm11,xmm10 2447 shrd r13,r13,4 2448 xor r14,rdx 2449 vpsllq xmm10,xmm10,42 2450 and r12,r11 2451 xor r13,r11 2452 vpxor xmm11,xmm11,xmm9 2453 add rcx,QWORD[104+rsp] 2454 mov rdi,rdx 2455 vpsrlq xmm9,xmm9,42 2456 xor r12,rbx 2457 shrd r14,r14,6 2458 vpxor xmm11,xmm11,xmm10 2459 xor rdi,r8 2460 add rcx,r12 2461 vpxor xmm11,xmm11,xmm9 2462 shrd r13,r13,14 2463 and r15,rdi 2464 vpaddq xmm6,xmm6,xmm11 2465 xor r14,rdx 2466 add rcx,r13 2467 vpaddq xmm10,xmm6,XMMWORD[64+rbp] 2468 xor r15,r8 2469 shrd r14,r14,28 2470 add r10,rcx 2471 add rcx,r15 2472 mov r13,r10 2473 add r14,rcx 2474 vmovdqa XMMWORD[96+rsp],xmm10 2475 vpalignr xmm8,xmm0,xmm7,8 2476 shrd r13,r13,23 2477 mov rcx,r14 2478 vpalignr xmm11,xmm4,xmm3,8 2479 mov r12,r11 2480 shrd r14,r14,5 2481 vpsrlq xmm10,xmm8,1 2482 xor r13,r10 2483 xor r12,rax 2484 vpaddq xmm7,xmm7,xmm11 2485 shrd r13,r13,4 2486 xor r14,rcx 2487 vpsrlq xmm11,xmm8,7 2488 and r12,r10 2489 xor r13,r10 2490 vpsllq xmm9,xmm8,56 2491 add rbx,QWORD[112+rsp] 2492 mov r15,rcx 2493 vpxor xmm8,xmm11,xmm10 2494 xor r12,rax 2495 shrd r14,r14,6 2496 vpsrlq xmm10,xmm10,7 2497 xor r15,rdx 2498 add rbx,r12 2499 vpxor xmm8,xmm8,xmm9 2500 shrd r13,r13,14 2501 and rdi,r15 2502 vpsllq xmm9,xmm9,7 2503 xor r14,rcx 2504 add rbx,r13 2505 vpxor xmm8,xmm8,xmm10 2506 xor rdi,rdx 2507 shrd r14,r14,28 2508 vpsrlq xmm11,xmm6,6 2509 add r9,rbx 2510 add rbx,rdi 2511 vpxor xmm8,xmm8,xmm9 2512 mov r13,r9 2513 add r14,rbx 2514 vpsllq xmm10,xmm6,3 2515 shrd r13,r13,23 2516 mov rbx,r14 2517 vpaddq xmm7,xmm7,xmm8 2518 mov r12,r10 2519 shrd r14,r14,5 2520 vpsrlq xmm9,xmm6,19 2521 xor r13,r9 2522 xor r12,r11 2523 vpxor xmm11,xmm11,xmm10 2524 shrd r13,r13,4 2525 xor r14,rbx 2526 vpsllq xmm10,xmm10,42 2527 and r12,r9 2528 xor r13,r9 2529 vpxor xmm11,xmm11,xmm9 2530 add rax,QWORD[120+rsp] 2531 mov rdi,rbx 2532 vpsrlq xmm9,xmm9,42 2533 xor r12,r11 2534 shrd r14,r14,6 2535 vpxor xmm11,xmm11,xmm10 2536 xor rdi,rcx 2537 add rax,r12 2538 vpxor xmm11,xmm11,xmm9 2539 shrd r13,r13,14 2540 and r15,rdi 2541 vpaddq xmm7,xmm7,xmm11 2542 xor r14,rbx 2543 add rax,r13 2544 vpaddq xmm10,xmm7,XMMWORD[96+rbp] 2545 xor r15,rcx 2546 shrd r14,r14,28 2547 add r8,rax 2548 add rax,r15 2549 mov r13,r8 2550 add r14,rax 2551 vmovdqa XMMWORD[112+rsp],xmm10 2552 cmp BYTE[135+rbp],0 2553 jne NEAR $L$avx_00_47 2554 shrd r13,r13,23 2555 mov rax,r14 2556 mov r12,r9 2557 shrd r14,r14,5 2558 xor r13,r8 2559 xor r12,r10 2560 shrd r13,r13,4 2561 xor r14,rax 2562 and r12,r8 2563 xor r13,r8 2564 add r11,QWORD[rsp] 2565 mov r15,rax 2566 xor r12,r10 2567 shrd r14,r14,6 2568 xor r15,rbx 2569 add r11,r12 2570 shrd r13,r13,14 2571 and rdi,r15 2572 xor r14,rax 2573 add r11,r13 2574 xor rdi,rbx 2575 shrd r14,r14,28 2576 add rdx,r11 2577 add r11,rdi 2578 mov r13,rdx 2579 add r14,r11 2580 shrd r13,r13,23 2581 mov r11,r14 2582 mov r12,r8 2583 shrd r14,r14,5 2584 xor r13,rdx 2585 xor r12,r9 2586 shrd r13,r13,4 2587 xor r14,r11 2588 and r12,rdx 2589 xor r13,rdx 2590 add r10,QWORD[8+rsp] 2591 mov rdi,r11 2592 xor r12,r9 2593 shrd r14,r14,6 2594 xor rdi,rax 2595 add r10,r12 2596 shrd r13,r13,14 2597 and r15,rdi 2598 xor r14,r11 2599 add r10,r13 2600 xor r15,rax 2601 shrd r14,r14,28 2602 add rcx,r10 2603 add r10,r15 2604 mov r13,rcx 2605 add r14,r10 2606 shrd r13,r13,23 2607 mov r10,r14 2608 mov r12,rdx 2609 shrd r14,r14,5 2610 xor r13,rcx 2611 xor r12,r8 2612 shrd r13,r13,4 2613 xor r14,r10 2614 and r12,rcx 2615 xor r13,rcx 2616 add r9,QWORD[16+rsp] 2617 mov r15,r10 2618 xor r12,r8 2619 shrd r14,r14,6 2620 xor r15,r11 2621 add r9,r12 2622 shrd r13,r13,14 2623 and rdi,r15 2624 xor r14,r10 2625 add r9,r13 2626 xor rdi,r11 2627 shrd r14,r14,28 2628 add rbx,r9 2629 add r9,rdi 2630 mov r13,rbx 2631 add r14,r9 2632 shrd r13,r13,23 2633 mov r9,r14 2634 mov r12,rcx 2635 shrd r14,r14,5 2636 xor r13,rbx 2637 xor r12,rdx 2638 shrd r13,r13,4 2639 xor r14,r9 2640 and r12,rbx 2641 xor r13,rbx 2642 add r8,QWORD[24+rsp] 2643 mov rdi,r9 2644 xor r12,rdx 2645 shrd r14,r14,6 2646 xor rdi,r10 2647 add r8,r12 2648 shrd r13,r13,14 2649 and r15,rdi 2650 xor r14,r9 2651 add r8,r13 2652 xor r15,r10 2653 shrd r14,r14,28 2654 add rax,r8 2655 add r8,r15 2656 mov r13,rax 2657 add r14,r8 2658 shrd r13,r13,23 2659 mov r8,r14 2660 mov r12,rbx 2661 shrd r14,r14,5 2662 xor r13,rax 2663 xor r12,rcx 2664 shrd r13,r13,4 2665 xor r14,r8 2666 and r12,rax 2667 xor r13,rax 2668 add rdx,QWORD[32+rsp] 2669 mov r15,r8 2670 xor r12,rcx 2671 shrd r14,r14,6 2672 xor r15,r9 2673 add rdx,r12 2674 shrd r13,r13,14 2675 and rdi,r15 2676 xor r14,r8 2677 add rdx,r13 2678 xor rdi,r9 2679 shrd r14,r14,28 2680 add r11,rdx 2681 add rdx,rdi 2682 mov r13,r11 2683 add r14,rdx 2684 shrd r13,r13,23 2685 mov rdx,r14 2686 mov r12,rax 2687 shrd r14,r14,5 2688 xor r13,r11 2689 xor r12,rbx 2690 shrd r13,r13,4 2691 xor r14,rdx 2692 and r12,r11 2693 xor r13,r11 2694 add rcx,QWORD[40+rsp] 2695 mov rdi,rdx 2696 xor r12,rbx 2697 shrd r14,r14,6 2698 xor rdi,r8 2699 add rcx,r12 2700 shrd r13,r13,14 2701 and r15,rdi 2702 xor r14,rdx 2703 add rcx,r13 2704 xor r15,r8 2705 shrd r14,r14,28 2706 add r10,rcx 2707 add rcx,r15 2708 mov r13,r10 2709 add r14,rcx 2710 shrd r13,r13,23 2711 mov rcx,r14 2712 mov r12,r11 2713 shrd r14,r14,5 2714 xor r13,r10 2715 xor r12,rax 2716 shrd r13,r13,4 2717 xor r14,rcx 2718 and r12,r10 2719 xor r13,r10 2720 add rbx,QWORD[48+rsp] 2721 mov r15,rcx 2722 xor r12,rax 2723 shrd r14,r14,6 2724 xor r15,rdx 2725 add rbx,r12 2726 shrd r13,r13,14 2727 and rdi,r15 2728 xor r14,rcx 2729 add rbx,r13 2730 xor rdi,rdx 2731 shrd r14,r14,28 2732 add r9,rbx 2733 add rbx,rdi 2734 mov r13,r9 2735 add r14,rbx 2736 shrd r13,r13,23 2737 mov rbx,r14 2738 mov r12,r10 2739 shrd r14,r14,5 2740 xor r13,r9 2741 xor r12,r11 2742 shrd r13,r13,4 2743 xor r14,rbx 2744 and r12,r9 2745 xor r13,r9 2746 add rax,QWORD[56+rsp] 2747 mov rdi,rbx 2748 xor r12,r11 2749 shrd r14,r14,6 2750 xor rdi,rcx 2751 add rax,r12 2752 shrd r13,r13,14 2753 and r15,rdi 2754 xor r14,rbx 2755 add rax,r13 2756 xor r15,rcx 2757 shrd r14,r14,28 2758 add r8,rax 2759 add rax,r15 2760 mov r13,r8 2761 add r14,rax 2762 shrd r13,r13,23 2763 mov rax,r14 2764 mov r12,r9 2765 shrd r14,r14,5 2766 xor r13,r8 2767 xor r12,r10 2768 shrd r13,r13,4 2769 xor r14,rax 2770 and r12,r8 2771 xor r13,r8 2772 add r11,QWORD[64+rsp] 2773 mov r15,rax 2774 xor r12,r10 2775 shrd r14,r14,6 2776 xor r15,rbx 2777 add r11,r12 2778 shrd r13,r13,14 2779 and rdi,r15 2780 xor r14,rax 2781 add r11,r13 2782 xor rdi,rbx 2783 shrd r14,r14,28 2784 add rdx,r11 2785 add r11,rdi 2786 mov r13,rdx 2787 add r14,r11 2788 shrd r13,r13,23 2789 mov r11,r14 2790 mov r12,r8 2791 shrd r14,r14,5 2792 xor r13,rdx 2793 xor r12,r9 2794 shrd r13,r13,4 2795 xor r14,r11 2796 and r12,rdx 2797 xor r13,rdx 2798 add r10,QWORD[72+rsp] 2799 mov rdi,r11 2800 xor r12,r9 2801 shrd r14,r14,6 2802 xor rdi,rax 2803 add r10,r12 2804 shrd r13,r13,14 2805 and r15,rdi 2806 xor r14,r11 2807 add r10,r13 2808 xor r15,rax 2809 shrd r14,r14,28 2810 add rcx,r10 2811 add r10,r15 2812 mov r13,rcx 2813 add r14,r10 2814 shrd r13,r13,23 2815 mov r10,r14 2816 mov r12,rdx 2817 shrd r14,r14,5 2818 xor r13,rcx 2819 xor r12,r8 2820 shrd r13,r13,4 2821 xor r14,r10 2822 and r12,rcx 2823 xor r13,rcx 2824 add r9,QWORD[80+rsp] 2825 mov r15,r10 2826 xor r12,r8 2827 shrd r14,r14,6 2828 xor r15,r11 2829 add r9,r12 2830 shrd r13,r13,14 2831 and rdi,r15 2832 xor r14,r10 2833 add r9,r13 2834 xor rdi,r11 2835 shrd r14,r14,28 2836 add rbx,r9 2837 add r9,rdi 2838 mov r13,rbx 2839 add r14,r9 2840 shrd r13,r13,23 2841 mov r9,r14 2842 mov r12,rcx 2843 shrd r14,r14,5 2844 xor r13,rbx 2845 xor r12,rdx 2846 shrd r13,r13,4 2847 xor r14,r9 2848 and r12,rbx 2849 xor r13,rbx 2850 add r8,QWORD[88+rsp] 2851 mov rdi,r9 2852 xor r12,rdx 2853 shrd r14,r14,6 2854 xor rdi,r10 2855 add r8,r12 2856 shrd r13,r13,14 2857 and r15,rdi 2858 xor r14,r9 2859 add r8,r13 2860 xor r15,r10 2861 shrd r14,r14,28 2862 add rax,r8 2863 add r8,r15 2864 mov r13,rax 2865 add r14,r8 2866 shrd r13,r13,23 2867 mov r8,r14 2868 mov r12,rbx 2869 shrd r14,r14,5 2870 xor r13,rax 2871 xor r12,rcx 2872 shrd r13,r13,4 2873 xor r14,r8 2874 and r12,rax 2875 xor r13,rax 2876 add rdx,QWORD[96+rsp] 2877 mov r15,r8 2878 xor r12,rcx 2879 shrd r14,r14,6 2880 xor r15,r9 2881 add rdx,r12 2882 shrd r13,r13,14 2883 and rdi,r15 2884 xor r14,r8 2885 add rdx,r13 2886 xor rdi,r9 2887 shrd r14,r14,28 2888 add r11,rdx 2889 add rdx,rdi 2890 mov r13,r11 2891 add r14,rdx 2892 shrd r13,r13,23 2893 mov rdx,r14 2894 mov r12,rax 2895 shrd r14,r14,5 2896 xor r13,r11 2897 xor r12,rbx 2898 shrd r13,r13,4 2899 xor r14,rdx 2900 and r12,r11 2901 xor r13,r11 2902 add rcx,QWORD[104+rsp] 2903 mov rdi,rdx 2904 xor r12,rbx 2905 shrd r14,r14,6 2906 xor rdi,r8 2907 add rcx,r12 2908 shrd r13,r13,14 2909 and r15,rdi 2910 xor r14,rdx 2911 add rcx,r13 2912 xor r15,r8 2913 shrd r14,r14,28 2914 add r10,rcx 2915 add rcx,r15 2916 mov r13,r10 2917 add r14,rcx 2918 shrd r13,r13,23 2919 mov rcx,r14 2920 mov r12,r11 2921 shrd r14,r14,5 2922 xor r13,r10 2923 xor r12,rax 2924 shrd r13,r13,4 2925 xor r14,rcx 2926 and r12,r10 2927 xor r13,r10 2928 add rbx,QWORD[112+rsp] 2929 mov r15,rcx 2930 xor r12,rax 2931 shrd r14,r14,6 2932 xor r15,rdx 2933 add rbx,r12 2934 shrd r13,r13,14 2935 and rdi,r15 2936 xor r14,rcx 2937 add rbx,r13 2938 xor rdi,rdx 2939 shrd r14,r14,28 2940 add r9,rbx 2941 add rbx,rdi 2942 mov r13,r9 2943 add r14,rbx 2944 shrd r13,r13,23 2945 mov rbx,r14 2946 mov r12,r10 2947 shrd r14,r14,5 2948 xor r13,r9 2949 xor r12,r11 2950 shrd r13,r13,4 2951 xor r14,rbx 2952 and r12,r9 2953 xor r13,r9 2954 add rax,QWORD[120+rsp] 2955 mov rdi,rbx 2956 xor r12,r11 2957 shrd r14,r14,6 2958 xor rdi,rcx 2959 add rax,r12 2960 shrd r13,r13,14 2961 and r15,rdi 2962 xor r14,rbx 2963 add rax,r13 2964 xor r15,rcx 2965 shrd r14,r14,28 2966 add r8,rax 2967 add rax,r15 2968 mov r13,r8 2969 add r14,rax 2970 mov rdi,QWORD[((128+0))+rsp] 2971 mov rax,r14 2972 2973 add rax,QWORD[rdi] 2974 lea rsi,[128+rsi] 2975 add rbx,QWORD[8+rdi] 2976 add rcx,QWORD[16+rdi] 2977 add rdx,QWORD[24+rdi] 2978 add r8,QWORD[32+rdi] 2979 add r9,QWORD[40+rdi] 2980 add r10,QWORD[48+rdi] 2981 add r11,QWORD[56+rdi] 2982 2983 cmp rsi,QWORD[((128+16))+rsp] 2984 2985 mov QWORD[rdi],rax 2986 mov QWORD[8+rdi],rbx 2987 mov QWORD[16+rdi],rcx 2988 mov QWORD[24+rdi],rdx 2989 mov QWORD[32+rdi],r8 2990 mov QWORD[40+rdi],r9 2991 mov QWORD[48+rdi],r10 2992 mov QWORD[56+rdi],r11 2993 jb NEAR $L$loop_avx 2994 2995 mov rsi,QWORD[152+rsp] 2996 2997 vzeroupper 2998 movaps xmm6,XMMWORD[((128+32))+rsp] 2999 movaps xmm7,XMMWORD[((128+48))+rsp] 3000 movaps xmm8,XMMWORD[((128+64))+rsp] 3001 movaps xmm9,XMMWORD[((128+80))+rsp] 3002 movaps xmm10,XMMWORD[((128+96))+rsp] 3003 movaps xmm11,XMMWORD[((128+112))+rsp] 3004 mov r15,QWORD[((-48))+rsi] 3005 3006 mov r14,QWORD[((-40))+rsi] 3007 3008 mov r13,QWORD[((-32))+rsi] 3009 3010 mov r12,QWORD[((-24))+rsi] 3011 3012 mov rbp,QWORD[((-16))+rsi] 3013 3014 mov rbx,QWORD[((-8))+rsi] 3015 3016 lea rsp,[rsi] 3017 3018$L$epilogue_avx: 3019 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 3020 mov rsi,QWORD[16+rsp] 3021 DB 0F3h,0C3h ;repret 3022 3023$L$SEH_end_sha512_block_data_order_avx: 3024EXTERN __imp_RtlVirtualUnwind 3025 3026ALIGN 16 3027se_handler: 3028 push rsi 3029 push rdi 3030 push rbx 3031 push rbp 3032 push r12 3033 push r13 3034 push r14 3035 push r15 3036 pushfq 3037 sub rsp,64 3038 3039 mov rax,QWORD[120+r8] 3040 mov rbx,QWORD[248+r8] 3041 3042 mov rsi,QWORD[8+r9] 3043 mov r11,QWORD[56+r9] 3044 3045 mov r10d,DWORD[r11] 3046 lea r10,[r10*1+rsi] 3047 cmp rbx,r10 3048 jb NEAR $L$in_prologue 3049 3050 mov rax,QWORD[152+r8] 3051 3052 mov r10d,DWORD[4+r11] 3053 lea r10,[r10*1+rsi] 3054 cmp rbx,r10 3055 jae NEAR $L$in_prologue 3056 mov rsi,rax 3057 mov rax,QWORD[((128+24))+rax] 3058 3059 mov rbx,QWORD[((-8))+rax] 3060 mov rbp,QWORD[((-16))+rax] 3061 mov r12,QWORD[((-24))+rax] 3062 mov r13,QWORD[((-32))+rax] 3063 mov r14,QWORD[((-40))+rax] 3064 mov r15,QWORD[((-48))+rax] 3065 mov QWORD[144+r8],rbx 3066 mov QWORD[160+r8],rbp 3067 mov QWORD[216+r8],r12 3068 mov QWORD[224+r8],r13 3069 mov QWORD[232+r8],r14 3070 mov QWORD[240+r8],r15 3071 3072 lea r10,[$L$epilogue] 3073 cmp rbx,r10 3074 jb NEAR $L$in_prologue 3075 3076 lea rsi,[((128+32))+rsi] 3077 lea rdi,[512+r8] 3078 mov ecx,12 3079 DD 0xa548f3fc 3080 3081$L$in_prologue: 3082 mov rdi,QWORD[8+rax] 3083 mov rsi,QWORD[16+rax] 3084 mov QWORD[152+r8],rax 3085 mov QWORD[168+r8],rsi 3086 mov QWORD[176+r8],rdi 3087 3088 mov rdi,QWORD[40+r9] 3089 mov rsi,r8 3090 mov ecx,154 3091 DD 0xa548f3fc 3092 3093 mov rsi,r9 3094 xor rcx,rcx 3095 mov rdx,QWORD[8+rsi] 3096 mov r8,QWORD[rsi] 3097 mov r9,QWORD[16+rsi] 3098 mov r10,QWORD[40+rsi] 3099 lea r11,[56+rsi] 3100 lea r12,[24+rsi] 3101 mov QWORD[32+rsp],r10 3102 mov QWORD[40+rsp],r11 3103 mov QWORD[48+rsp],r12 3104 mov QWORD[56+rsp],rcx 3105 call QWORD[__imp_RtlVirtualUnwind] 3106 3107 mov eax,1 3108 add rsp,64 3109 popfq 3110 pop r15 3111 pop r14 3112 pop r13 3113 pop r12 3114 pop rbp 3115 pop rbx 3116 pop rdi 3117 pop rsi 3118 DB 0F3h,0C3h ;repret 3119 3120section .pdata rdata align=4 3121ALIGN 4 3122 DD $L$SEH_begin_sha512_block_data_order wrt ..imagebase 3123 DD $L$SEH_end_sha512_block_data_order wrt ..imagebase 3124 DD $L$SEH_info_sha512_block_data_order wrt ..imagebase 3125 DD $L$SEH_begin_sha512_block_data_order_avx wrt ..imagebase 3126 DD $L$SEH_end_sha512_block_data_order_avx wrt ..imagebase 3127 DD $L$SEH_info_sha512_block_data_order_avx wrt ..imagebase 3128section .xdata rdata align=8 3129ALIGN 8 3130$L$SEH_info_sha512_block_data_order: 3131DB 9,0,0,0 3132 DD se_handler wrt ..imagebase 3133 DD $L$prologue wrt ..imagebase,$L$epilogue wrt ..imagebase 3134$L$SEH_info_sha512_block_data_order_avx: 3135DB 9,0,0,0 3136 DD se_handler wrt ..imagebase 3137 DD $L$prologue_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase 3138