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