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