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