1; This file is generated from a similarly-named Perl script in the BoringSSL 2; source tree. Do not edit by hand. 3 4%ifidn __OUTPUT_FORMAT__, win64 5default rel 6%define XMMWORD 7%define YMMWORD 8%define ZMMWORD 9%define _CET_ENDBR 10 11%include "ring_core_generated/prefix_symbols_nasm.inc" 12section .text code align=64 13 14 15EXTERN OPENSSL_ia32cap_P 16global sha256_block_data_order 17 18ALIGN 16 19sha256_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_sha256_block_data_order: 24 mov rdi,rcx 25 mov rsi,rdx 26 mov rdx,r8 27 28 29 30_CET_ENDBR 31 lea r11,[OPENSSL_ia32cap_P] 32 mov r9d,DWORD[r11] 33 mov r10d,DWORD[4+r11] 34 mov r11d,DWORD[8+r11] 35 test r11d,536870912 36 jnz NEAR $L$shaext_shortcut 37 and r9d,1073741824 38 and r10d,268435968 39 or r10d,r9d 40 cmp r10d,1342177792 41 je NEAR $L$avx_shortcut 42 test r10d,512 43 jnz NEAR $L$ssse3_shortcut 44 mov rax,rsp 45 46 push rbx 47 48 push rbp 49 50 push r12 51 52 push r13 53 54 push r14 55 56 push r15 57 58 shl rdx,4 59 sub rsp,16*4+4*8 60 lea rdx,[rdx*4+rsi] 61 and rsp,-64 62 mov QWORD[((64+0))+rsp],rdi 63 mov QWORD[((64+8))+rsp],rsi 64 mov QWORD[((64+16))+rsp],rdx 65 mov QWORD[88+rsp],rax 66 67$L$prologue: 68 69 mov eax,DWORD[rdi] 70 mov ebx,DWORD[4+rdi] 71 mov ecx,DWORD[8+rdi] 72 mov edx,DWORD[12+rdi] 73 mov r8d,DWORD[16+rdi] 74 mov r9d,DWORD[20+rdi] 75 mov r10d,DWORD[24+rdi] 76 mov r11d,DWORD[28+rdi] 77 jmp NEAR $L$loop 78 79ALIGN 16 80$L$loop: 81 mov edi,ebx 82 lea rbp,[K256] 83 xor edi,ecx 84 mov r12d,DWORD[rsi] 85 mov r13d,r8d 86 mov r14d,eax 87 bswap r12d 88 ror r13d,14 89 mov r15d,r9d 90 91 xor r13d,r8d 92 ror r14d,9 93 xor r15d,r10d 94 95 mov DWORD[rsp],r12d 96 xor r14d,eax 97 and r15d,r8d 98 99 ror r13d,5 100 add r12d,r11d 101 xor r15d,r10d 102 103 ror r14d,11 104 xor r13d,r8d 105 add r12d,r15d 106 107 mov r15d,eax 108 add r12d,DWORD[rbp] 109 xor r14d,eax 110 111 xor r15d,ebx 112 ror r13d,6 113 mov r11d,ebx 114 115 and edi,r15d 116 ror r14d,2 117 add r12d,r13d 118 119 xor r11d,edi 120 add edx,r12d 121 add r11d,r12d 122 123 lea rbp,[4+rbp] 124 add r11d,r14d 125 mov r12d,DWORD[4+rsi] 126 mov r13d,edx 127 mov r14d,r11d 128 bswap r12d 129 ror r13d,14 130 mov edi,r8d 131 132 xor r13d,edx 133 ror r14d,9 134 xor edi,r9d 135 136 mov DWORD[4+rsp],r12d 137 xor r14d,r11d 138 and edi,edx 139 140 ror r13d,5 141 add r12d,r10d 142 xor edi,r9d 143 144 ror r14d,11 145 xor r13d,edx 146 add r12d,edi 147 148 mov edi,r11d 149 add r12d,DWORD[rbp] 150 xor r14d,r11d 151 152 xor edi,eax 153 ror r13d,6 154 mov r10d,eax 155 156 and r15d,edi 157 ror r14d,2 158 add r12d,r13d 159 160 xor r10d,r15d 161 add ecx,r12d 162 add r10d,r12d 163 164 lea rbp,[4+rbp] 165 add r10d,r14d 166 mov r12d,DWORD[8+rsi] 167 mov r13d,ecx 168 mov r14d,r10d 169 bswap r12d 170 ror r13d,14 171 mov r15d,edx 172 173 xor r13d,ecx 174 ror r14d,9 175 xor r15d,r8d 176 177 mov DWORD[8+rsp],r12d 178 xor r14d,r10d 179 and r15d,ecx 180 181 ror r13d,5 182 add r12d,r9d 183 xor r15d,r8d 184 185 ror r14d,11 186 xor r13d,ecx 187 add r12d,r15d 188 189 mov r15d,r10d 190 add r12d,DWORD[rbp] 191 xor r14d,r10d 192 193 xor r15d,r11d 194 ror r13d,6 195 mov r9d,r11d 196 197 and edi,r15d 198 ror r14d,2 199 add r12d,r13d 200 201 xor r9d,edi 202 add ebx,r12d 203 add r9d,r12d 204 205 lea rbp,[4+rbp] 206 add r9d,r14d 207 mov r12d,DWORD[12+rsi] 208 mov r13d,ebx 209 mov r14d,r9d 210 bswap r12d 211 ror r13d,14 212 mov edi,ecx 213 214 xor r13d,ebx 215 ror r14d,9 216 xor edi,edx 217 218 mov DWORD[12+rsp],r12d 219 xor r14d,r9d 220 and edi,ebx 221 222 ror r13d,5 223 add r12d,r8d 224 xor edi,edx 225 226 ror r14d,11 227 xor r13d,ebx 228 add r12d,edi 229 230 mov edi,r9d 231 add r12d,DWORD[rbp] 232 xor r14d,r9d 233 234 xor edi,r10d 235 ror r13d,6 236 mov r8d,r10d 237 238 and r15d,edi 239 ror r14d,2 240 add r12d,r13d 241 242 xor r8d,r15d 243 add eax,r12d 244 add r8d,r12d 245 246 lea rbp,[20+rbp] 247 add r8d,r14d 248 mov r12d,DWORD[16+rsi] 249 mov r13d,eax 250 mov r14d,r8d 251 bswap r12d 252 ror r13d,14 253 mov r15d,ebx 254 255 xor r13d,eax 256 ror r14d,9 257 xor r15d,ecx 258 259 mov DWORD[16+rsp],r12d 260 xor r14d,r8d 261 and r15d,eax 262 263 ror r13d,5 264 add r12d,edx 265 xor r15d,ecx 266 267 ror r14d,11 268 xor r13d,eax 269 add r12d,r15d 270 271 mov r15d,r8d 272 add r12d,DWORD[rbp] 273 xor r14d,r8d 274 275 xor r15d,r9d 276 ror r13d,6 277 mov edx,r9d 278 279 and edi,r15d 280 ror r14d,2 281 add r12d,r13d 282 283 xor edx,edi 284 add r11d,r12d 285 add edx,r12d 286 287 lea rbp,[4+rbp] 288 add edx,r14d 289 mov r12d,DWORD[20+rsi] 290 mov r13d,r11d 291 mov r14d,edx 292 bswap r12d 293 ror r13d,14 294 mov edi,eax 295 296 xor r13d,r11d 297 ror r14d,9 298 xor edi,ebx 299 300 mov DWORD[20+rsp],r12d 301 xor r14d,edx 302 and edi,r11d 303 304 ror r13d,5 305 add r12d,ecx 306 xor edi,ebx 307 308 ror r14d,11 309 xor r13d,r11d 310 add r12d,edi 311 312 mov edi,edx 313 add r12d,DWORD[rbp] 314 xor r14d,edx 315 316 xor edi,r8d 317 ror r13d,6 318 mov ecx,r8d 319 320 and r15d,edi 321 ror r14d,2 322 add r12d,r13d 323 324 xor ecx,r15d 325 add r10d,r12d 326 add ecx,r12d 327 328 lea rbp,[4+rbp] 329 add ecx,r14d 330 mov r12d,DWORD[24+rsi] 331 mov r13d,r10d 332 mov r14d,ecx 333 bswap r12d 334 ror r13d,14 335 mov r15d,r11d 336 337 xor r13d,r10d 338 ror r14d,9 339 xor r15d,eax 340 341 mov DWORD[24+rsp],r12d 342 xor r14d,ecx 343 and r15d,r10d 344 345 ror r13d,5 346 add r12d,ebx 347 xor r15d,eax 348 349 ror r14d,11 350 xor r13d,r10d 351 add r12d,r15d 352 353 mov r15d,ecx 354 add r12d,DWORD[rbp] 355 xor r14d,ecx 356 357 xor r15d,edx 358 ror r13d,6 359 mov ebx,edx 360 361 and edi,r15d 362 ror r14d,2 363 add r12d,r13d 364 365 xor ebx,edi 366 add r9d,r12d 367 add ebx,r12d 368 369 lea rbp,[4+rbp] 370 add ebx,r14d 371 mov r12d,DWORD[28+rsi] 372 mov r13d,r9d 373 mov r14d,ebx 374 bswap r12d 375 ror r13d,14 376 mov edi,r10d 377 378 xor r13d,r9d 379 ror r14d,9 380 xor edi,r11d 381 382 mov DWORD[28+rsp],r12d 383 xor r14d,ebx 384 and edi,r9d 385 386 ror r13d,5 387 add r12d,eax 388 xor edi,r11d 389 390 ror r14d,11 391 xor r13d,r9d 392 add r12d,edi 393 394 mov edi,ebx 395 add r12d,DWORD[rbp] 396 xor r14d,ebx 397 398 xor edi,ecx 399 ror r13d,6 400 mov eax,ecx 401 402 and r15d,edi 403 ror r14d,2 404 add r12d,r13d 405 406 xor eax,r15d 407 add r8d,r12d 408 add eax,r12d 409 410 lea rbp,[20+rbp] 411 add eax,r14d 412 mov r12d,DWORD[32+rsi] 413 mov r13d,r8d 414 mov r14d,eax 415 bswap r12d 416 ror r13d,14 417 mov r15d,r9d 418 419 xor r13d,r8d 420 ror r14d,9 421 xor r15d,r10d 422 423 mov DWORD[32+rsp],r12d 424 xor r14d,eax 425 and r15d,r8d 426 427 ror r13d,5 428 add r12d,r11d 429 xor r15d,r10d 430 431 ror r14d,11 432 xor r13d,r8d 433 add r12d,r15d 434 435 mov r15d,eax 436 add r12d,DWORD[rbp] 437 xor r14d,eax 438 439 xor r15d,ebx 440 ror r13d,6 441 mov r11d,ebx 442 443 and edi,r15d 444 ror r14d,2 445 add r12d,r13d 446 447 xor r11d,edi 448 add edx,r12d 449 add r11d,r12d 450 451 lea rbp,[4+rbp] 452 add r11d,r14d 453 mov r12d,DWORD[36+rsi] 454 mov r13d,edx 455 mov r14d,r11d 456 bswap r12d 457 ror r13d,14 458 mov edi,r8d 459 460 xor r13d,edx 461 ror r14d,9 462 xor edi,r9d 463 464 mov DWORD[36+rsp],r12d 465 xor r14d,r11d 466 and edi,edx 467 468 ror r13d,5 469 add r12d,r10d 470 xor edi,r9d 471 472 ror r14d,11 473 xor r13d,edx 474 add r12d,edi 475 476 mov edi,r11d 477 add r12d,DWORD[rbp] 478 xor r14d,r11d 479 480 xor edi,eax 481 ror r13d,6 482 mov r10d,eax 483 484 and r15d,edi 485 ror r14d,2 486 add r12d,r13d 487 488 xor r10d,r15d 489 add ecx,r12d 490 add r10d,r12d 491 492 lea rbp,[4+rbp] 493 add r10d,r14d 494 mov r12d,DWORD[40+rsi] 495 mov r13d,ecx 496 mov r14d,r10d 497 bswap r12d 498 ror r13d,14 499 mov r15d,edx 500 501 xor r13d,ecx 502 ror r14d,9 503 xor r15d,r8d 504 505 mov DWORD[40+rsp],r12d 506 xor r14d,r10d 507 and r15d,ecx 508 509 ror r13d,5 510 add r12d,r9d 511 xor r15d,r8d 512 513 ror r14d,11 514 xor r13d,ecx 515 add r12d,r15d 516 517 mov r15d,r10d 518 add r12d,DWORD[rbp] 519 xor r14d,r10d 520 521 xor r15d,r11d 522 ror r13d,6 523 mov r9d,r11d 524 525 and edi,r15d 526 ror r14d,2 527 add r12d,r13d 528 529 xor r9d,edi 530 add ebx,r12d 531 add r9d,r12d 532 533 lea rbp,[4+rbp] 534 add r9d,r14d 535 mov r12d,DWORD[44+rsi] 536 mov r13d,ebx 537 mov r14d,r9d 538 bswap r12d 539 ror r13d,14 540 mov edi,ecx 541 542 xor r13d,ebx 543 ror r14d,9 544 xor edi,edx 545 546 mov DWORD[44+rsp],r12d 547 xor r14d,r9d 548 and edi,ebx 549 550 ror r13d,5 551 add r12d,r8d 552 xor edi,edx 553 554 ror r14d,11 555 xor r13d,ebx 556 add r12d,edi 557 558 mov edi,r9d 559 add r12d,DWORD[rbp] 560 xor r14d,r9d 561 562 xor edi,r10d 563 ror r13d,6 564 mov r8d,r10d 565 566 and r15d,edi 567 ror r14d,2 568 add r12d,r13d 569 570 xor r8d,r15d 571 add eax,r12d 572 add r8d,r12d 573 574 lea rbp,[20+rbp] 575 add r8d,r14d 576 mov r12d,DWORD[48+rsi] 577 mov r13d,eax 578 mov r14d,r8d 579 bswap r12d 580 ror r13d,14 581 mov r15d,ebx 582 583 xor r13d,eax 584 ror r14d,9 585 xor r15d,ecx 586 587 mov DWORD[48+rsp],r12d 588 xor r14d,r8d 589 and r15d,eax 590 591 ror r13d,5 592 add r12d,edx 593 xor r15d,ecx 594 595 ror r14d,11 596 xor r13d,eax 597 add r12d,r15d 598 599 mov r15d,r8d 600 add r12d,DWORD[rbp] 601 xor r14d,r8d 602 603 xor r15d,r9d 604 ror r13d,6 605 mov edx,r9d 606 607 and edi,r15d 608 ror r14d,2 609 add r12d,r13d 610 611 xor edx,edi 612 add r11d,r12d 613 add edx,r12d 614 615 lea rbp,[4+rbp] 616 add edx,r14d 617 mov r12d,DWORD[52+rsi] 618 mov r13d,r11d 619 mov r14d,edx 620 bswap r12d 621 ror r13d,14 622 mov edi,eax 623 624 xor r13d,r11d 625 ror r14d,9 626 xor edi,ebx 627 628 mov DWORD[52+rsp],r12d 629 xor r14d,edx 630 and edi,r11d 631 632 ror r13d,5 633 add r12d,ecx 634 xor edi,ebx 635 636 ror r14d,11 637 xor r13d,r11d 638 add r12d,edi 639 640 mov edi,edx 641 add r12d,DWORD[rbp] 642 xor r14d,edx 643 644 xor edi,r8d 645 ror r13d,6 646 mov ecx,r8d 647 648 and r15d,edi 649 ror r14d,2 650 add r12d,r13d 651 652 xor ecx,r15d 653 add r10d,r12d 654 add ecx,r12d 655 656 lea rbp,[4+rbp] 657 add ecx,r14d 658 mov r12d,DWORD[56+rsi] 659 mov r13d,r10d 660 mov r14d,ecx 661 bswap r12d 662 ror r13d,14 663 mov r15d,r11d 664 665 xor r13d,r10d 666 ror r14d,9 667 xor r15d,eax 668 669 mov DWORD[56+rsp],r12d 670 xor r14d,ecx 671 and r15d,r10d 672 673 ror r13d,5 674 add r12d,ebx 675 xor r15d,eax 676 677 ror r14d,11 678 xor r13d,r10d 679 add r12d,r15d 680 681 mov r15d,ecx 682 add r12d,DWORD[rbp] 683 xor r14d,ecx 684 685 xor r15d,edx 686 ror r13d,6 687 mov ebx,edx 688 689 and edi,r15d 690 ror r14d,2 691 add r12d,r13d 692 693 xor ebx,edi 694 add r9d,r12d 695 add ebx,r12d 696 697 lea rbp,[4+rbp] 698 add ebx,r14d 699 mov r12d,DWORD[60+rsi] 700 mov r13d,r9d 701 mov r14d,ebx 702 bswap r12d 703 ror r13d,14 704 mov edi,r10d 705 706 xor r13d,r9d 707 ror r14d,9 708 xor edi,r11d 709 710 mov DWORD[60+rsp],r12d 711 xor r14d,ebx 712 and edi,r9d 713 714 ror r13d,5 715 add r12d,eax 716 xor edi,r11d 717 718 ror r14d,11 719 xor r13d,r9d 720 add r12d,edi 721 722 mov edi,ebx 723 add r12d,DWORD[rbp] 724 xor r14d,ebx 725 726 xor edi,ecx 727 ror r13d,6 728 mov eax,ecx 729 730 and r15d,edi 731 ror r14d,2 732 add r12d,r13d 733 734 xor eax,r15d 735 add r8d,r12d 736 add eax,r12d 737 738 lea rbp,[20+rbp] 739 jmp NEAR $L$rounds_16_xx 740ALIGN 16 741$L$rounds_16_xx: 742 mov r13d,DWORD[4+rsp] 743 mov r15d,DWORD[56+rsp] 744 745 mov r12d,r13d 746 ror r13d,11 747 add eax,r14d 748 mov r14d,r15d 749 ror r15d,2 750 751 xor r13d,r12d 752 shr r12d,3 753 ror r13d,7 754 xor r15d,r14d 755 shr r14d,10 756 757 ror r15d,17 758 xor r12d,r13d 759 xor r15d,r14d 760 add r12d,DWORD[36+rsp] 761 762 add r12d,DWORD[rsp] 763 mov r13d,r8d 764 add r12d,r15d 765 mov r14d,eax 766 ror r13d,14 767 mov r15d,r9d 768 769 xor r13d,r8d 770 ror r14d,9 771 xor r15d,r10d 772 773 mov DWORD[rsp],r12d 774 xor r14d,eax 775 and r15d,r8d 776 777 ror r13d,5 778 add r12d,r11d 779 xor r15d,r10d 780 781 ror r14d,11 782 xor r13d,r8d 783 add r12d,r15d 784 785 mov r15d,eax 786 add r12d,DWORD[rbp] 787 xor r14d,eax 788 789 xor r15d,ebx 790 ror r13d,6 791 mov r11d,ebx 792 793 and edi,r15d 794 ror r14d,2 795 add r12d,r13d 796 797 xor r11d,edi 798 add edx,r12d 799 add r11d,r12d 800 801 lea rbp,[4+rbp] 802 mov r13d,DWORD[8+rsp] 803 mov edi,DWORD[60+rsp] 804 805 mov r12d,r13d 806 ror r13d,11 807 add r11d,r14d 808 mov r14d,edi 809 ror edi,2 810 811 xor r13d,r12d 812 shr r12d,3 813 ror r13d,7 814 xor edi,r14d 815 shr r14d,10 816 817 ror edi,17 818 xor r12d,r13d 819 xor edi,r14d 820 add r12d,DWORD[40+rsp] 821 822 add r12d,DWORD[4+rsp] 823 mov r13d,edx 824 add r12d,edi 825 mov r14d,r11d 826 ror r13d,14 827 mov edi,r8d 828 829 xor r13d,edx 830 ror r14d,9 831 xor edi,r9d 832 833 mov DWORD[4+rsp],r12d 834 xor r14d,r11d 835 and edi,edx 836 837 ror r13d,5 838 add r12d,r10d 839 xor edi,r9d 840 841 ror r14d,11 842 xor r13d,edx 843 add r12d,edi 844 845 mov edi,r11d 846 add r12d,DWORD[rbp] 847 xor r14d,r11d 848 849 xor edi,eax 850 ror r13d,6 851 mov r10d,eax 852 853 and r15d,edi 854 ror r14d,2 855 add r12d,r13d 856 857 xor r10d,r15d 858 add ecx,r12d 859 add r10d,r12d 860 861 lea rbp,[4+rbp] 862 mov r13d,DWORD[12+rsp] 863 mov r15d,DWORD[rsp] 864 865 mov r12d,r13d 866 ror r13d,11 867 add r10d,r14d 868 mov r14d,r15d 869 ror r15d,2 870 871 xor r13d,r12d 872 shr r12d,3 873 ror r13d,7 874 xor r15d,r14d 875 shr r14d,10 876 877 ror r15d,17 878 xor r12d,r13d 879 xor r15d,r14d 880 add r12d,DWORD[44+rsp] 881 882 add r12d,DWORD[8+rsp] 883 mov r13d,ecx 884 add r12d,r15d 885 mov r14d,r10d 886 ror r13d,14 887 mov r15d,edx 888 889 xor r13d,ecx 890 ror r14d,9 891 xor r15d,r8d 892 893 mov DWORD[8+rsp],r12d 894 xor r14d,r10d 895 and r15d,ecx 896 897 ror r13d,5 898 add r12d,r9d 899 xor r15d,r8d 900 901 ror r14d,11 902 xor r13d,ecx 903 add r12d,r15d 904 905 mov r15d,r10d 906 add r12d,DWORD[rbp] 907 xor r14d,r10d 908 909 xor r15d,r11d 910 ror r13d,6 911 mov r9d,r11d 912 913 and edi,r15d 914 ror r14d,2 915 add r12d,r13d 916 917 xor r9d,edi 918 add ebx,r12d 919 add r9d,r12d 920 921 lea rbp,[4+rbp] 922 mov r13d,DWORD[16+rsp] 923 mov edi,DWORD[4+rsp] 924 925 mov r12d,r13d 926 ror r13d,11 927 add r9d,r14d 928 mov r14d,edi 929 ror edi,2 930 931 xor r13d,r12d 932 shr r12d,3 933 ror r13d,7 934 xor edi,r14d 935 shr r14d,10 936 937 ror edi,17 938 xor r12d,r13d 939 xor edi,r14d 940 add r12d,DWORD[48+rsp] 941 942 add r12d,DWORD[12+rsp] 943 mov r13d,ebx 944 add r12d,edi 945 mov r14d,r9d 946 ror r13d,14 947 mov edi,ecx 948 949 xor r13d,ebx 950 ror r14d,9 951 xor edi,edx 952 953 mov DWORD[12+rsp],r12d 954 xor r14d,r9d 955 and edi,ebx 956 957 ror r13d,5 958 add r12d,r8d 959 xor edi,edx 960 961 ror r14d,11 962 xor r13d,ebx 963 add r12d,edi 964 965 mov edi,r9d 966 add r12d,DWORD[rbp] 967 xor r14d,r9d 968 969 xor edi,r10d 970 ror r13d,6 971 mov r8d,r10d 972 973 and r15d,edi 974 ror r14d,2 975 add r12d,r13d 976 977 xor r8d,r15d 978 add eax,r12d 979 add r8d,r12d 980 981 lea rbp,[20+rbp] 982 mov r13d,DWORD[20+rsp] 983 mov r15d,DWORD[8+rsp] 984 985 mov r12d,r13d 986 ror r13d,11 987 add r8d,r14d 988 mov r14d,r15d 989 ror r15d,2 990 991 xor r13d,r12d 992 shr r12d,3 993 ror r13d,7 994 xor r15d,r14d 995 shr r14d,10 996 997 ror r15d,17 998 xor r12d,r13d 999 xor r15d,r14d 1000 add r12d,DWORD[52+rsp] 1001 1002 add r12d,DWORD[16+rsp] 1003 mov r13d,eax 1004 add r12d,r15d 1005 mov r14d,r8d 1006 ror r13d,14 1007 mov r15d,ebx 1008 1009 xor r13d,eax 1010 ror r14d,9 1011 xor r15d,ecx 1012 1013 mov DWORD[16+rsp],r12d 1014 xor r14d,r8d 1015 and r15d,eax 1016 1017 ror r13d,5 1018 add r12d,edx 1019 xor r15d,ecx 1020 1021 ror r14d,11 1022 xor r13d,eax 1023 add r12d,r15d 1024 1025 mov r15d,r8d 1026 add r12d,DWORD[rbp] 1027 xor r14d,r8d 1028 1029 xor r15d,r9d 1030 ror r13d,6 1031 mov edx,r9d 1032 1033 and edi,r15d 1034 ror r14d,2 1035 add r12d,r13d 1036 1037 xor edx,edi 1038 add r11d,r12d 1039 add edx,r12d 1040 1041 lea rbp,[4+rbp] 1042 mov r13d,DWORD[24+rsp] 1043 mov edi,DWORD[12+rsp] 1044 1045 mov r12d,r13d 1046 ror r13d,11 1047 add edx,r14d 1048 mov r14d,edi 1049 ror edi,2 1050 1051 xor r13d,r12d 1052 shr r12d,3 1053 ror r13d,7 1054 xor edi,r14d 1055 shr r14d,10 1056 1057 ror edi,17 1058 xor r12d,r13d 1059 xor edi,r14d 1060 add r12d,DWORD[56+rsp] 1061 1062 add r12d,DWORD[20+rsp] 1063 mov r13d,r11d 1064 add r12d,edi 1065 mov r14d,edx 1066 ror r13d,14 1067 mov edi,eax 1068 1069 xor r13d,r11d 1070 ror r14d,9 1071 xor edi,ebx 1072 1073 mov DWORD[20+rsp],r12d 1074 xor r14d,edx 1075 and edi,r11d 1076 1077 ror r13d,5 1078 add r12d,ecx 1079 xor edi,ebx 1080 1081 ror r14d,11 1082 xor r13d,r11d 1083 add r12d,edi 1084 1085 mov edi,edx 1086 add r12d,DWORD[rbp] 1087 xor r14d,edx 1088 1089 xor edi,r8d 1090 ror r13d,6 1091 mov ecx,r8d 1092 1093 and r15d,edi 1094 ror r14d,2 1095 add r12d,r13d 1096 1097 xor ecx,r15d 1098 add r10d,r12d 1099 add ecx,r12d 1100 1101 lea rbp,[4+rbp] 1102 mov r13d,DWORD[28+rsp] 1103 mov r15d,DWORD[16+rsp] 1104 1105 mov r12d,r13d 1106 ror r13d,11 1107 add ecx,r14d 1108 mov r14d,r15d 1109 ror r15d,2 1110 1111 xor r13d,r12d 1112 shr r12d,3 1113 ror r13d,7 1114 xor r15d,r14d 1115 shr r14d,10 1116 1117 ror r15d,17 1118 xor r12d,r13d 1119 xor r15d,r14d 1120 add r12d,DWORD[60+rsp] 1121 1122 add r12d,DWORD[24+rsp] 1123 mov r13d,r10d 1124 add r12d,r15d 1125 mov r14d,ecx 1126 ror r13d,14 1127 mov r15d,r11d 1128 1129 xor r13d,r10d 1130 ror r14d,9 1131 xor r15d,eax 1132 1133 mov DWORD[24+rsp],r12d 1134 xor r14d,ecx 1135 and r15d,r10d 1136 1137 ror r13d,5 1138 add r12d,ebx 1139 xor r15d,eax 1140 1141 ror r14d,11 1142 xor r13d,r10d 1143 add r12d,r15d 1144 1145 mov r15d,ecx 1146 add r12d,DWORD[rbp] 1147 xor r14d,ecx 1148 1149 xor r15d,edx 1150 ror r13d,6 1151 mov ebx,edx 1152 1153 and edi,r15d 1154 ror r14d,2 1155 add r12d,r13d 1156 1157 xor ebx,edi 1158 add r9d,r12d 1159 add ebx,r12d 1160 1161 lea rbp,[4+rbp] 1162 mov r13d,DWORD[32+rsp] 1163 mov edi,DWORD[20+rsp] 1164 1165 mov r12d,r13d 1166 ror r13d,11 1167 add ebx,r14d 1168 mov r14d,edi 1169 ror edi,2 1170 1171 xor r13d,r12d 1172 shr r12d,3 1173 ror r13d,7 1174 xor edi,r14d 1175 shr r14d,10 1176 1177 ror edi,17 1178 xor r12d,r13d 1179 xor edi,r14d 1180 add r12d,DWORD[rsp] 1181 1182 add r12d,DWORD[28+rsp] 1183 mov r13d,r9d 1184 add r12d,edi 1185 mov r14d,ebx 1186 ror r13d,14 1187 mov edi,r10d 1188 1189 xor r13d,r9d 1190 ror r14d,9 1191 xor edi,r11d 1192 1193 mov DWORD[28+rsp],r12d 1194 xor r14d,ebx 1195 and edi,r9d 1196 1197 ror r13d,5 1198 add r12d,eax 1199 xor edi,r11d 1200 1201 ror r14d,11 1202 xor r13d,r9d 1203 add r12d,edi 1204 1205 mov edi,ebx 1206 add r12d,DWORD[rbp] 1207 xor r14d,ebx 1208 1209 xor edi,ecx 1210 ror r13d,6 1211 mov eax,ecx 1212 1213 and r15d,edi 1214 ror r14d,2 1215 add r12d,r13d 1216 1217 xor eax,r15d 1218 add r8d,r12d 1219 add eax,r12d 1220 1221 lea rbp,[20+rbp] 1222 mov r13d,DWORD[36+rsp] 1223 mov r15d,DWORD[24+rsp] 1224 1225 mov r12d,r13d 1226 ror r13d,11 1227 add eax,r14d 1228 mov r14d,r15d 1229 ror r15d,2 1230 1231 xor r13d,r12d 1232 shr r12d,3 1233 ror r13d,7 1234 xor r15d,r14d 1235 shr r14d,10 1236 1237 ror r15d,17 1238 xor r12d,r13d 1239 xor r15d,r14d 1240 add r12d,DWORD[4+rsp] 1241 1242 add r12d,DWORD[32+rsp] 1243 mov r13d,r8d 1244 add r12d,r15d 1245 mov r14d,eax 1246 ror r13d,14 1247 mov r15d,r9d 1248 1249 xor r13d,r8d 1250 ror r14d,9 1251 xor r15d,r10d 1252 1253 mov DWORD[32+rsp],r12d 1254 xor r14d,eax 1255 and r15d,r8d 1256 1257 ror r13d,5 1258 add r12d,r11d 1259 xor r15d,r10d 1260 1261 ror r14d,11 1262 xor r13d,r8d 1263 add r12d,r15d 1264 1265 mov r15d,eax 1266 add r12d,DWORD[rbp] 1267 xor r14d,eax 1268 1269 xor r15d,ebx 1270 ror r13d,6 1271 mov r11d,ebx 1272 1273 and edi,r15d 1274 ror r14d,2 1275 add r12d,r13d 1276 1277 xor r11d,edi 1278 add edx,r12d 1279 add r11d,r12d 1280 1281 lea rbp,[4+rbp] 1282 mov r13d,DWORD[40+rsp] 1283 mov edi,DWORD[28+rsp] 1284 1285 mov r12d,r13d 1286 ror r13d,11 1287 add r11d,r14d 1288 mov r14d,edi 1289 ror edi,2 1290 1291 xor r13d,r12d 1292 shr r12d,3 1293 ror r13d,7 1294 xor edi,r14d 1295 shr r14d,10 1296 1297 ror edi,17 1298 xor r12d,r13d 1299 xor edi,r14d 1300 add r12d,DWORD[8+rsp] 1301 1302 add r12d,DWORD[36+rsp] 1303 mov r13d,edx 1304 add r12d,edi 1305 mov r14d,r11d 1306 ror r13d,14 1307 mov edi,r8d 1308 1309 xor r13d,edx 1310 ror r14d,9 1311 xor edi,r9d 1312 1313 mov DWORD[36+rsp],r12d 1314 xor r14d,r11d 1315 and edi,edx 1316 1317 ror r13d,5 1318 add r12d,r10d 1319 xor edi,r9d 1320 1321 ror r14d,11 1322 xor r13d,edx 1323 add r12d,edi 1324 1325 mov edi,r11d 1326 add r12d,DWORD[rbp] 1327 xor r14d,r11d 1328 1329 xor edi,eax 1330 ror r13d,6 1331 mov r10d,eax 1332 1333 and r15d,edi 1334 ror r14d,2 1335 add r12d,r13d 1336 1337 xor r10d,r15d 1338 add ecx,r12d 1339 add r10d,r12d 1340 1341 lea rbp,[4+rbp] 1342 mov r13d,DWORD[44+rsp] 1343 mov r15d,DWORD[32+rsp] 1344 1345 mov r12d,r13d 1346 ror r13d,11 1347 add r10d,r14d 1348 mov r14d,r15d 1349 ror r15d,2 1350 1351 xor r13d,r12d 1352 shr r12d,3 1353 ror r13d,7 1354 xor r15d,r14d 1355 shr r14d,10 1356 1357 ror r15d,17 1358 xor r12d,r13d 1359 xor r15d,r14d 1360 add r12d,DWORD[12+rsp] 1361 1362 add r12d,DWORD[40+rsp] 1363 mov r13d,ecx 1364 add r12d,r15d 1365 mov r14d,r10d 1366 ror r13d,14 1367 mov r15d,edx 1368 1369 xor r13d,ecx 1370 ror r14d,9 1371 xor r15d,r8d 1372 1373 mov DWORD[40+rsp],r12d 1374 xor r14d,r10d 1375 and r15d,ecx 1376 1377 ror r13d,5 1378 add r12d,r9d 1379 xor r15d,r8d 1380 1381 ror r14d,11 1382 xor r13d,ecx 1383 add r12d,r15d 1384 1385 mov r15d,r10d 1386 add r12d,DWORD[rbp] 1387 xor r14d,r10d 1388 1389 xor r15d,r11d 1390 ror r13d,6 1391 mov r9d,r11d 1392 1393 and edi,r15d 1394 ror r14d,2 1395 add r12d,r13d 1396 1397 xor r9d,edi 1398 add ebx,r12d 1399 add r9d,r12d 1400 1401 lea rbp,[4+rbp] 1402 mov r13d,DWORD[48+rsp] 1403 mov edi,DWORD[36+rsp] 1404 1405 mov r12d,r13d 1406 ror r13d,11 1407 add r9d,r14d 1408 mov r14d,edi 1409 ror edi,2 1410 1411 xor r13d,r12d 1412 shr r12d,3 1413 ror r13d,7 1414 xor edi,r14d 1415 shr r14d,10 1416 1417 ror edi,17 1418 xor r12d,r13d 1419 xor edi,r14d 1420 add r12d,DWORD[16+rsp] 1421 1422 add r12d,DWORD[44+rsp] 1423 mov r13d,ebx 1424 add r12d,edi 1425 mov r14d,r9d 1426 ror r13d,14 1427 mov edi,ecx 1428 1429 xor r13d,ebx 1430 ror r14d,9 1431 xor edi,edx 1432 1433 mov DWORD[44+rsp],r12d 1434 xor r14d,r9d 1435 and edi,ebx 1436 1437 ror r13d,5 1438 add r12d,r8d 1439 xor edi,edx 1440 1441 ror r14d,11 1442 xor r13d,ebx 1443 add r12d,edi 1444 1445 mov edi,r9d 1446 add r12d,DWORD[rbp] 1447 xor r14d,r9d 1448 1449 xor edi,r10d 1450 ror r13d,6 1451 mov r8d,r10d 1452 1453 and r15d,edi 1454 ror r14d,2 1455 add r12d,r13d 1456 1457 xor r8d,r15d 1458 add eax,r12d 1459 add r8d,r12d 1460 1461 lea rbp,[20+rbp] 1462 mov r13d,DWORD[52+rsp] 1463 mov r15d,DWORD[40+rsp] 1464 1465 mov r12d,r13d 1466 ror r13d,11 1467 add r8d,r14d 1468 mov r14d,r15d 1469 ror r15d,2 1470 1471 xor r13d,r12d 1472 shr r12d,3 1473 ror r13d,7 1474 xor r15d,r14d 1475 shr r14d,10 1476 1477 ror r15d,17 1478 xor r12d,r13d 1479 xor r15d,r14d 1480 add r12d,DWORD[20+rsp] 1481 1482 add r12d,DWORD[48+rsp] 1483 mov r13d,eax 1484 add r12d,r15d 1485 mov r14d,r8d 1486 ror r13d,14 1487 mov r15d,ebx 1488 1489 xor r13d,eax 1490 ror r14d,9 1491 xor r15d,ecx 1492 1493 mov DWORD[48+rsp],r12d 1494 xor r14d,r8d 1495 and r15d,eax 1496 1497 ror r13d,5 1498 add r12d,edx 1499 xor r15d,ecx 1500 1501 ror r14d,11 1502 xor r13d,eax 1503 add r12d,r15d 1504 1505 mov r15d,r8d 1506 add r12d,DWORD[rbp] 1507 xor r14d,r8d 1508 1509 xor r15d,r9d 1510 ror r13d,6 1511 mov edx,r9d 1512 1513 and edi,r15d 1514 ror r14d,2 1515 add r12d,r13d 1516 1517 xor edx,edi 1518 add r11d,r12d 1519 add edx,r12d 1520 1521 lea rbp,[4+rbp] 1522 mov r13d,DWORD[56+rsp] 1523 mov edi,DWORD[44+rsp] 1524 1525 mov r12d,r13d 1526 ror r13d,11 1527 add edx,r14d 1528 mov r14d,edi 1529 ror edi,2 1530 1531 xor r13d,r12d 1532 shr r12d,3 1533 ror r13d,7 1534 xor edi,r14d 1535 shr r14d,10 1536 1537 ror edi,17 1538 xor r12d,r13d 1539 xor edi,r14d 1540 add r12d,DWORD[24+rsp] 1541 1542 add r12d,DWORD[52+rsp] 1543 mov r13d,r11d 1544 add r12d,edi 1545 mov r14d,edx 1546 ror r13d,14 1547 mov edi,eax 1548 1549 xor r13d,r11d 1550 ror r14d,9 1551 xor edi,ebx 1552 1553 mov DWORD[52+rsp],r12d 1554 xor r14d,edx 1555 and edi,r11d 1556 1557 ror r13d,5 1558 add r12d,ecx 1559 xor edi,ebx 1560 1561 ror r14d,11 1562 xor r13d,r11d 1563 add r12d,edi 1564 1565 mov edi,edx 1566 add r12d,DWORD[rbp] 1567 xor r14d,edx 1568 1569 xor edi,r8d 1570 ror r13d,6 1571 mov ecx,r8d 1572 1573 and r15d,edi 1574 ror r14d,2 1575 add r12d,r13d 1576 1577 xor ecx,r15d 1578 add r10d,r12d 1579 add ecx,r12d 1580 1581 lea rbp,[4+rbp] 1582 mov r13d,DWORD[60+rsp] 1583 mov r15d,DWORD[48+rsp] 1584 1585 mov r12d,r13d 1586 ror r13d,11 1587 add ecx,r14d 1588 mov r14d,r15d 1589 ror r15d,2 1590 1591 xor r13d,r12d 1592 shr r12d,3 1593 ror r13d,7 1594 xor r15d,r14d 1595 shr r14d,10 1596 1597 ror r15d,17 1598 xor r12d,r13d 1599 xor r15d,r14d 1600 add r12d,DWORD[28+rsp] 1601 1602 add r12d,DWORD[56+rsp] 1603 mov r13d,r10d 1604 add r12d,r15d 1605 mov r14d,ecx 1606 ror r13d,14 1607 mov r15d,r11d 1608 1609 xor r13d,r10d 1610 ror r14d,9 1611 xor r15d,eax 1612 1613 mov DWORD[56+rsp],r12d 1614 xor r14d,ecx 1615 and r15d,r10d 1616 1617 ror r13d,5 1618 add r12d,ebx 1619 xor r15d,eax 1620 1621 ror r14d,11 1622 xor r13d,r10d 1623 add r12d,r15d 1624 1625 mov r15d,ecx 1626 add r12d,DWORD[rbp] 1627 xor r14d,ecx 1628 1629 xor r15d,edx 1630 ror r13d,6 1631 mov ebx,edx 1632 1633 and edi,r15d 1634 ror r14d,2 1635 add r12d,r13d 1636 1637 xor ebx,edi 1638 add r9d,r12d 1639 add ebx,r12d 1640 1641 lea rbp,[4+rbp] 1642 mov r13d,DWORD[rsp] 1643 mov edi,DWORD[52+rsp] 1644 1645 mov r12d,r13d 1646 ror r13d,11 1647 add ebx,r14d 1648 mov r14d,edi 1649 ror edi,2 1650 1651 xor r13d,r12d 1652 shr r12d,3 1653 ror r13d,7 1654 xor edi,r14d 1655 shr r14d,10 1656 1657 ror edi,17 1658 xor r12d,r13d 1659 xor edi,r14d 1660 add r12d,DWORD[32+rsp] 1661 1662 add r12d,DWORD[60+rsp] 1663 mov r13d,r9d 1664 add r12d,edi 1665 mov r14d,ebx 1666 ror r13d,14 1667 mov edi,r10d 1668 1669 xor r13d,r9d 1670 ror r14d,9 1671 xor edi,r11d 1672 1673 mov DWORD[60+rsp],r12d 1674 xor r14d,ebx 1675 and edi,r9d 1676 1677 ror r13d,5 1678 add r12d,eax 1679 xor edi,r11d 1680 1681 ror r14d,11 1682 xor r13d,r9d 1683 add r12d,edi 1684 1685 mov edi,ebx 1686 add r12d,DWORD[rbp] 1687 xor r14d,ebx 1688 1689 xor edi,ecx 1690 ror r13d,6 1691 mov eax,ecx 1692 1693 and r15d,edi 1694 ror r14d,2 1695 add r12d,r13d 1696 1697 xor eax,r15d 1698 add r8d,r12d 1699 add eax,r12d 1700 1701 lea rbp,[20+rbp] 1702 cmp BYTE[3+rbp],0 1703 jnz NEAR $L$rounds_16_xx 1704 1705 mov rdi,QWORD[((64+0))+rsp] 1706 add eax,r14d 1707 lea rsi,[64+rsi] 1708 1709 add eax,DWORD[rdi] 1710 add ebx,DWORD[4+rdi] 1711 add ecx,DWORD[8+rdi] 1712 add edx,DWORD[12+rdi] 1713 add r8d,DWORD[16+rdi] 1714 add r9d,DWORD[20+rdi] 1715 add r10d,DWORD[24+rdi] 1716 add r11d,DWORD[28+rdi] 1717 1718 cmp rsi,QWORD[((64+16))+rsp] 1719 1720 mov DWORD[rdi],eax 1721 mov DWORD[4+rdi],ebx 1722 mov DWORD[8+rdi],ecx 1723 mov DWORD[12+rdi],edx 1724 mov DWORD[16+rdi],r8d 1725 mov DWORD[20+rdi],r9d 1726 mov DWORD[24+rdi],r10d 1727 mov DWORD[28+rdi],r11d 1728 jb NEAR $L$loop 1729 1730 mov rsi,QWORD[88+rsp] 1731 1732 mov r15,QWORD[((-48))+rsi] 1733 1734 mov r14,QWORD[((-40))+rsi] 1735 1736 mov r13,QWORD[((-32))+rsi] 1737 1738 mov r12,QWORD[((-24))+rsi] 1739 1740 mov rbp,QWORD[((-16))+rsi] 1741 1742 mov rbx,QWORD[((-8))+rsi] 1743 1744 lea rsp,[rsi] 1745 1746$L$epilogue: 1747 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 1748 mov rsi,QWORD[16+rsp] 1749 ret 1750 1751$L$SEH_end_sha256_block_data_order: 1752section .rdata rdata align=8 1753ALIGN 64 1754 1755K256: 1756 DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 1757 DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 1758 DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 1759 DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 1760 DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 1761 DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 1762 DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 1763 DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 1764 DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc 1765 DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc 1766 DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da 1767 DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da 1768 DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 1769 DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 1770 DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 1771 DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 1772 DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 1773 DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 1774 DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 1775 DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 1776 DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 1777 DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 1778 DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 1779 DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 1780 DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 1781 DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 1782 DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 1783 DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 1784 DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 1785 DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 1786 DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 1787 DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 1788 1789 DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f 1790 DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f 1791 DD 0x03020100,0x0b0a0908,0xffffffff,0xffffffff 1792 DD 0x03020100,0x0b0a0908,0xffffffff,0xffffffff 1793 DD 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 1794 DD 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 1795 DB 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97 1796 DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54 1797 DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 1798 DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 1799 DB 111,114,103,62,0 1800section .text 1801 1802 1803ALIGN 64 1804sha256_block_data_order_shaext: 1805 mov QWORD[8+rsp],rdi ;WIN64 prologue 1806 mov QWORD[16+rsp],rsi 1807 mov rax,rsp 1808$L$SEH_begin_sha256_block_data_order_shaext: 1809 mov rdi,rcx 1810 mov rsi,rdx 1811 mov rdx,r8 1812 1813 1814 1815$L$shaext_shortcut: 1816 lea rsp,[((-88))+rsp] 1817 movaps XMMWORD[(-8-80)+rax],xmm6 1818 movaps XMMWORD[(-8-64)+rax],xmm7 1819 movaps XMMWORD[(-8-48)+rax],xmm8 1820 movaps XMMWORD[(-8-32)+rax],xmm9 1821 movaps XMMWORD[(-8-16)+rax],xmm10 1822$L$prologue_shaext: 1823 lea rcx,[((K256+128))] 1824 movdqu xmm1,XMMWORD[rdi] 1825 movdqu xmm2,XMMWORD[16+rdi] 1826 movdqa xmm7,XMMWORD[((512-128))+rcx] 1827 1828 pshufd xmm0,xmm1,0x1b 1829 pshufd xmm1,xmm1,0xb1 1830 pshufd xmm2,xmm2,0x1b 1831 movdqa xmm8,xmm7 1832DB 102,15,58,15,202,8 1833 punpcklqdq xmm2,xmm0 1834 jmp NEAR $L$oop_shaext 1835 1836ALIGN 16 1837$L$oop_shaext: 1838 movdqu xmm3,XMMWORD[rsi] 1839 movdqu xmm4,XMMWORD[16+rsi] 1840 movdqu xmm5,XMMWORD[32+rsi] 1841DB 102,15,56,0,223 1842 movdqu xmm6,XMMWORD[48+rsi] 1843 1844 movdqa xmm0,XMMWORD[((0-128))+rcx] 1845 paddd xmm0,xmm3 1846DB 102,15,56,0,231 1847 movdqa xmm10,xmm2 1848 DB 15,56,203,209 1849 pshufd xmm0,xmm0,0x0e 1850 nop 1851 movdqa xmm9,xmm1 1852 DB 15,56,203,202 1853 1854 movdqa xmm0,XMMWORD[((32-128))+rcx] 1855 paddd xmm0,xmm4 1856DB 102,15,56,0,239 1857 DB 15,56,203,209 1858 pshufd xmm0,xmm0,0x0e 1859 lea rsi,[64+rsi] 1860 DB 15,56,204,220 1861 DB 15,56,203,202 1862 1863 movdqa xmm0,XMMWORD[((64-128))+rcx] 1864 paddd xmm0,xmm5 1865DB 102,15,56,0,247 1866 DB 15,56,203,209 1867 pshufd xmm0,xmm0,0x0e 1868 movdqa xmm7,xmm6 1869DB 102,15,58,15,253,4 1870 nop 1871 paddd xmm3,xmm7 1872 DB 15,56,204,229 1873 DB 15,56,203,202 1874 1875 movdqa xmm0,XMMWORD[((96-128))+rcx] 1876 paddd xmm0,xmm6 1877 DB 15,56,205,222 1878 DB 15,56,203,209 1879 pshufd xmm0,xmm0,0x0e 1880 movdqa xmm7,xmm3 1881DB 102,15,58,15,254,4 1882 nop 1883 paddd xmm4,xmm7 1884 DB 15,56,204,238 1885 DB 15,56,203,202 1886 movdqa xmm0,XMMWORD[((128-128))+rcx] 1887 paddd xmm0,xmm3 1888 DB 15,56,205,227 1889 DB 15,56,203,209 1890 pshufd xmm0,xmm0,0x0e 1891 movdqa xmm7,xmm4 1892DB 102,15,58,15,251,4 1893 nop 1894 paddd xmm5,xmm7 1895 DB 15,56,204,243 1896 DB 15,56,203,202 1897 movdqa xmm0,XMMWORD[((160-128))+rcx] 1898 paddd xmm0,xmm4 1899 DB 15,56,205,236 1900 DB 15,56,203,209 1901 pshufd xmm0,xmm0,0x0e 1902 movdqa xmm7,xmm5 1903DB 102,15,58,15,252,4 1904 nop 1905 paddd xmm6,xmm7 1906 DB 15,56,204,220 1907 DB 15,56,203,202 1908 movdqa xmm0,XMMWORD[((192-128))+rcx] 1909 paddd xmm0,xmm5 1910 DB 15,56,205,245 1911 DB 15,56,203,209 1912 pshufd xmm0,xmm0,0x0e 1913 movdqa xmm7,xmm6 1914DB 102,15,58,15,253,4 1915 nop 1916 paddd xmm3,xmm7 1917 DB 15,56,204,229 1918 DB 15,56,203,202 1919 movdqa xmm0,XMMWORD[((224-128))+rcx] 1920 paddd xmm0,xmm6 1921 DB 15,56,205,222 1922 DB 15,56,203,209 1923 pshufd xmm0,xmm0,0x0e 1924 movdqa xmm7,xmm3 1925DB 102,15,58,15,254,4 1926 nop 1927 paddd xmm4,xmm7 1928 DB 15,56,204,238 1929 DB 15,56,203,202 1930 movdqa xmm0,XMMWORD[((256-128))+rcx] 1931 paddd xmm0,xmm3 1932 DB 15,56,205,227 1933 DB 15,56,203,209 1934 pshufd xmm0,xmm0,0x0e 1935 movdqa xmm7,xmm4 1936DB 102,15,58,15,251,4 1937 nop 1938 paddd xmm5,xmm7 1939 DB 15,56,204,243 1940 DB 15,56,203,202 1941 movdqa xmm0,XMMWORD[((288-128))+rcx] 1942 paddd xmm0,xmm4 1943 DB 15,56,205,236 1944 DB 15,56,203,209 1945 pshufd xmm0,xmm0,0x0e 1946 movdqa xmm7,xmm5 1947DB 102,15,58,15,252,4 1948 nop 1949 paddd xmm6,xmm7 1950 DB 15,56,204,220 1951 DB 15,56,203,202 1952 movdqa xmm0,XMMWORD[((320-128))+rcx] 1953 paddd xmm0,xmm5 1954 DB 15,56,205,245 1955 DB 15,56,203,209 1956 pshufd xmm0,xmm0,0x0e 1957 movdqa xmm7,xmm6 1958DB 102,15,58,15,253,4 1959 nop 1960 paddd xmm3,xmm7 1961 DB 15,56,204,229 1962 DB 15,56,203,202 1963 movdqa xmm0,XMMWORD[((352-128))+rcx] 1964 paddd xmm0,xmm6 1965 DB 15,56,205,222 1966 DB 15,56,203,209 1967 pshufd xmm0,xmm0,0x0e 1968 movdqa xmm7,xmm3 1969DB 102,15,58,15,254,4 1970 nop 1971 paddd xmm4,xmm7 1972 DB 15,56,204,238 1973 DB 15,56,203,202 1974 movdqa xmm0,XMMWORD[((384-128))+rcx] 1975 paddd xmm0,xmm3 1976 DB 15,56,205,227 1977 DB 15,56,203,209 1978 pshufd xmm0,xmm0,0x0e 1979 movdqa xmm7,xmm4 1980DB 102,15,58,15,251,4 1981 nop 1982 paddd xmm5,xmm7 1983 DB 15,56,204,243 1984 DB 15,56,203,202 1985 movdqa xmm0,XMMWORD[((416-128))+rcx] 1986 paddd xmm0,xmm4 1987 DB 15,56,205,236 1988 DB 15,56,203,209 1989 pshufd xmm0,xmm0,0x0e 1990 movdqa xmm7,xmm5 1991DB 102,15,58,15,252,4 1992 DB 15,56,203,202 1993 paddd xmm6,xmm7 1994 1995 movdqa xmm0,XMMWORD[((448-128))+rcx] 1996 paddd xmm0,xmm5 1997 DB 15,56,203,209 1998 pshufd xmm0,xmm0,0x0e 1999 DB 15,56,205,245 2000 movdqa xmm7,xmm8 2001 DB 15,56,203,202 2002 2003 movdqa xmm0,XMMWORD[((480-128))+rcx] 2004 paddd xmm0,xmm6 2005 nop 2006 DB 15,56,203,209 2007 pshufd xmm0,xmm0,0x0e 2008 dec rdx 2009 nop 2010 DB 15,56,203,202 2011 2012 paddd xmm2,xmm10 2013 paddd xmm1,xmm9 2014 jnz NEAR $L$oop_shaext 2015 2016 pshufd xmm2,xmm2,0xb1 2017 pshufd xmm7,xmm1,0x1b 2018 pshufd xmm1,xmm1,0xb1 2019 punpckhqdq xmm1,xmm2 2020DB 102,15,58,15,215,8 2021 2022 movdqu XMMWORD[rdi],xmm1 2023 movdqu XMMWORD[16+rdi],xmm2 2024 movaps xmm6,XMMWORD[((-8-80))+rax] 2025 movaps xmm7,XMMWORD[((-8-64))+rax] 2026 movaps xmm8,XMMWORD[((-8-48))+rax] 2027 movaps xmm9,XMMWORD[((-8-32))+rax] 2028 movaps xmm10,XMMWORD[((-8-16))+rax] 2029 mov rsp,rax 2030$L$epilogue_shaext: 2031 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 2032 mov rsi,QWORD[16+rsp] 2033 ret 2034 2035$L$SEH_end_sha256_block_data_order_shaext: 2036 2037ALIGN 64 2038sha256_block_data_order_ssse3: 2039 mov QWORD[8+rsp],rdi ;WIN64 prologue 2040 mov QWORD[16+rsp],rsi 2041 mov rax,rsp 2042$L$SEH_begin_sha256_block_data_order_ssse3: 2043 mov rdi,rcx 2044 mov rsi,rdx 2045 mov rdx,r8 2046 2047 2048 2049$L$ssse3_shortcut: 2050 mov rax,rsp 2051 2052 push rbx 2053 2054 push rbp 2055 2056 push r12 2057 2058 push r13 2059 2060 push r14 2061 2062 push r15 2063 2064 shl rdx,4 2065 sub rsp,160 2066 lea rdx,[rdx*4+rsi] 2067 and rsp,-64 2068 mov QWORD[((64+0))+rsp],rdi 2069 mov QWORD[((64+8))+rsp],rsi 2070 mov QWORD[((64+16))+rsp],rdx 2071 mov QWORD[88+rsp],rax 2072 2073 movaps XMMWORD[(64+32)+rsp],xmm6 2074 movaps XMMWORD[(64+48)+rsp],xmm7 2075 movaps XMMWORD[(64+64)+rsp],xmm8 2076 movaps XMMWORD[(64+80)+rsp],xmm9 2077$L$prologue_ssse3: 2078 2079 mov eax,DWORD[rdi] 2080 mov ebx,DWORD[4+rdi] 2081 mov ecx,DWORD[8+rdi] 2082 mov edx,DWORD[12+rdi] 2083 mov r8d,DWORD[16+rdi] 2084 mov r9d,DWORD[20+rdi] 2085 mov r10d,DWORD[24+rdi] 2086 mov r11d,DWORD[28+rdi] 2087 2088 2089 jmp NEAR $L$loop_ssse3 2090ALIGN 16 2091$L$loop_ssse3: 2092 movdqa xmm7,XMMWORD[((K256+512))] 2093 movdqu xmm0,XMMWORD[rsi] 2094 movdqu xmm1,XMMWORD[16+rsi] 2095 movdqu xmm2,XMMWORD[32+rsi] 2096DB 102,15,56,0,199 2097 movdqu xmm3,XMMWORD[48+rsi] 2098 lea rbp,[K256] 2099DB 102,15,56,0,207 2100 movdqa xmm4,XMMWORD[rbp] 2101 movdqa xmm5,XMMWORD[32+rbp] 2102DB 102,15,56,0,215 2103 paddd xmm4,xmm0 2104 movdqa xmm6,XMMWORD[64+rbp] 2105DB 102,15,56,0,223 2106 movdqa xmm7,XMMWORD[96+rbp] 2107 paddd xmm5,xmm1 2108 paddd xmm6,xmm2 2109 paddd xmm7,xmm3 2110 movdqa XMMWORD[rsp],xmm4 2111 mov r14d,eax 2112 movdqa XMMWORD[16+rsp],xmm5 2113 mov edi,ebx 2114 movdqa XMMWORD[32+rsp],xmm6 2115 xor edi,ecx 2116 movdqa XMMWORD[48+rsp],xmm7 2117 mov r13d,r8d 2118 jmp NEAR $L$ssse3_00_47 2119 2120ALIGN 16 2121$L$ssse3_00_47: 2122 sub rbp,-128 2123 ror r13d,14 2124 movdqa xmm4,xmm1 2125 mov eax,r14d 2126 mov r12d,r9d 2127 movdqa xmm7,xmm3 2128 ror r14d,9 2129 xor r13d,r8d 2130 xor r12d,r10d 2131 ror r13d,5 2132 xor r14d,eax 2133DB 102,15,58,15,224,4 2134 and r12d,r8d 2135 xor r13d,r8d 2136DB 102,15,58,15,250,4 2137 add r11d,DWORD[rsp] 2138 mov r15d,eax 2139 xor r12d,r10d 2140 ror r14d,11 2141 movdqa xmm5,xmm4 2142 xor r15d,ebx 2143 add r11d,r12d 2144 movdqa xmm6,xmm4 2145 ror r13d,6 2146 and edi,r15d 2147 psrld xmm4,3 2148 xor r14d,eax 2149 add r11d,r13d 2150 xor edi,ebx 2151 paddd xmm0,xmm7 2152 ror r14d,2 2153 add edx,r11d 2154 psrld xmm6,7 2155 add r11d,edi 2156 mov r13d,edx 2157 pshufd xmm7,xmm3,250 2158 add r14d,r11d 2159 ror r13d,14 2160 pslld xmm5,14 2161 mov r11d,r14d 2162 mov r12d,r8d 2163 pxor xmm4,xmm6 2164 ror r14d,9 2165 xor r13d,edx 2166 xor r12d,r9d 2167 ror r13d,5 2168 psrld xmm6,11 2169 xor r14d,r11d 2170 pxor xmm4,xmm5 2171 and r12d,edx 2172 xor r13d,edx 2173 pslld xmm5,11 2174 add r10d,DWORD[4+rsp] 2175 mov edi,r11d 2176 pxor xmm4,xmm6 2177 xor r12d,r9d 2178 ror r14d,11 2179 movdqa xmm6,xmm7 2180 xor edi,eax 2181 add r10d,r12d 2182 pxor xmm4,xmm5 2183 ror r13d,6 2184 and r15d,edi 2185 xor r14d,r11d 2186 psrld xmm7,10 2187 add r10d,r13d 2188 xor r15d,eax 2189 paddd xmm0,xmm4 2190 ror r14d,2 2191 add ecx,r10d 2192 psrlq xmm6,17 2193 add r10d,r15d 2194 mov r13d,ecx 2195 add r14d,r10d 2196 pxor xmm7,xmm6 2197 ror r13d,14 2198 mov r10d,r14d 2199 mov r12d,edx 2200 ror r14d,9 2201 psrlq xmm6,2 2202 xor r13d,ecx 2203 xor r12d,r8d 2204 pxor xmm7,xmm6 2205 ror r13d,5 2206 xor r14d,r10d 2207 and r12d,ecx 2208 pshufd xmm7,xmm7,128 2209 xor r13d,ecx 2210 add r9d,DWORD[8+rsp] 2211 mov r15d,r10d 2212 psrldq xmm7,8 2213 xor r12d,r8d 2214 ror r14d,11 2215 xor r15d,r11d 2216 add r9d,r12d 2217 ror r13d,6 2218 paddd xmm0,xmm7 2219 and edi,r15d 2220 xor r14d,r10d 2221 add r9d,r13d 2222 pshufd xmm7,xmm0,80 2223 xor edi,r11d 2224 ror r14d,2 2225 add ebx,r9d 2226 movdqa xmm6,xmm7 2227 add r9d,edi 2228 mov r13d,ebx 2229 psrld xmm7,10 2230 add r14d,r9d 2231 ror r13d,14 2232 psrlq xmm6,17 2233 mov r9d,r14d 2234 mov r12d,ecx 2235 pxor xmm7,xmm6 2236 ror r14d,9 2237 xor r13d,ebx 2238 xor r12d,edx 2239 ror r13d,5 2240 xor r14d,r9d 2241 psrlq xmm6,2 2242 and r12d,ebx 2243 xor r13d,ebx 2244 add r8d,DWORD[12+rsp] 2245 pxor xmm7,xmm6 2246 mov edi,r9d 2247 xor r12d,edx 2248 ror r14d,11 2249 pshufd xmm7,xmm7,8 2250 xor edi,r10d 2251 add r8d,r12d 2252 movdqa xmm6,XMMWORD[rbp] 2253 ror r13d,6 2254 and r15d,edi 2255 pslldq xmm7,8 2256 xor r14d,r9d 2257 add r8d,r13d 2258 xor r15d,r10d 2259 paddd xmm0,xmm7 2260 ror r14d,2 2261 add eax,r8d 2262 add r8d,r15d 2263 paddd xmm6,xmm0 2264 mov r13d,eax 2265 add r14d,r8d 2266 movdqa XMMWORD[rsp],xmm6 2267 ror r13d,14 2268 movdqa xmm4,xmm2 2269 mov r8d,r14d 2270 mov r12d,ebx 2271 movdqa xmm7,xmm0 2272 ror r14d,9 2273 xor r13d,eax 2274 xor r12d,ecx 2275 ror r13d,5 2276 xor r14d,r8d 2277DB 102,15,58,15,225,4 2278 and r12d,eax 2279 xor r13d,eax 2280DB 102,15,58,15,251,4 2281 add edx,DWORD[16+rsp] 2282 mov r15d,r8d 2283 xor r12d,ecx 2284 ror r14d,11 2285 movdqa xmm5,xmm4 2286 xor r15d,r9d 2287 add edx,r12d 2288 movdqa xmm6,xmm4 2289 ror r13d,6 2290 and edi,r15d 2291 psrld xmm4,3 2292 xor r14d,r8d 2293 add edx,r13d 2294 xor edi,r9d 2295 paddd xmm1,xmm7 2296 ror r14d,2 2297 add r11d,edx 2298 psrld xmm6,7 2299 add edx,edi 2300 mov r13d,r11d 2301 pshufd xmm7,xmm0,250 2302 add r14d,edx 2303 ror r13d,14 2304 pslld xmm5,14 2305 mov edx,r14d 2306 mov r12d,eax 2307 pxor xmm4,xmm6 2308 ror r14d,9 2309 xor r13d,r11d 2310 xor r12d,ebx 2311 ror r13d,5 2312 psrld xmm6,11 2313 xor r14d,edx 2314 pxor xmm4,xmm5 2315 and r12d,r11d 2316 xor r13d,r11d 2317 pslld xmm5,11 2318 add ecx,DWORD[20+rsp] 2319 mov edi,edx 2320 pxor xmm4,xmm6 2321 xor r12d,ebx 2322 ror r14d,11 2323 movdqa xmm6,xmm7 2324 xor edi,r8d 2325 add ecx,r12d 2326 pxor xmm4,xmm5 2327 ror r13d,6 2328 and r15d,edi 2329 xor r14d,edx 2330 psrld xmm7,10 2331 add ecx,r13d 2332 xor r15d,r8d 2333 paddd xmm1,xmm4 2334 ror r14d,2 2335 add r10d,ecx 2336 psrlq xmm6,17 2337 add ecx,r15d 2338 mov r13d,r10d 2339 add r14d,ecx 2340 pxor xmm7,xmm6 2341 ror r13d,14 2342 mov ecx,r14d 2343 mov r12d,r11d 2344 ror r14d,9 2345 psrlq xmm6,2 2346 xor r13d,r10d 2347 xor r12d,eax 2348 pxor xmm7,xmm6 2349 ror r13d,5 2350 xor r14d,ecx 2351 and r12d,r10d 2352 pshufd xmm7,xmm7,128 2353 xor r13d,r10d 2354 add ebx,DWORD[24+rsp] 2355 mov r15d,ecx 2356 psrldq xmm7,8 2357 xor r12d,eax 2358 ror r14d,11 2359 xor r15d,edx 2360 add ebx,r12d 2361 ror r13d,6 2362 paddd xmm1,xmm7 2363 and edi,r15d 2364 xor r14d,ecx 2365 add ebx,r13d 2366 pshufd xmm7,xmm1,80 2367 xor edi,edx 2368 ror r14d,2 2369 add r9d,ebx 2370 movdqa xmm6,xmm7 2371 add ebx,edi 2372 mov r13d,r9d 2373 psrld xmm7,10 2374 add r14d,ebx 2375 ror r13d,14 2376 psrlq xmm6,17 2377 mov ebx,r14d 2378 mov r12d,r10d 2379 pxor xmm7,xmm6 2380 ror r14d,9 2381 xor r13d,r9d 2382 xor r12d,r11d 2383 ror r13d,5 2384 xor r14d,ebx 2385 psrlq xmm6,2 2386 and r12d,r9d 2387 xor r13d,r9d 2388 add eax,DWORD[28+rsp] 2389 pxor xmm7,xmm6 2390 mov edi,ebx 2391 xor r12d,r11d 2392 ror r14d,11 2393 pshufd xmm7,xmm7,8 2394 xor edi,ecx 2395 add eax,r12d 2396 movdqa xmm6,XMMWORD[32+rbp] 2397 ror r13d,6 2398 and r15d,edi 2399 pslldq xmm7,8 2400 xor r14d,ebx 2401 add eax,r13d 2402 xor r15d,ecx 2403 paddd xmm1,xmm7 2404 ror r14d,2 2405 add r8d,eax 2406 add eax,r15d 2407 paddd xmm6,xmm1 2408 mov r13d,r8d 2409 add r14d,eax 2410 movdqa XMMWORD[16+rsp],xmm6 2411 ror r13d,14 2412 movdqa xmm4,xmm3 2413 mov eax,r14d 2414 mov r12d,r9d 2415 movdqa xmm7,xmm1 2416 ror r14d,9 2417 xor r13d,r8d 2418 xor r12d,r10d 2419 ror r13d,5 2420 xor r14d,eax 2421DB 102,15,58,15,226,4 2422 and r12d,r8d 2423 xor r13d,r8d 2424DB 102,15,58,15,248,4 2425 add r11d,DWORD[32+rsp] 2426 mov r15d,eax 2427 xor r12d,r10d 2428 ror r14d,11 2429 movdqa xmm5,xmm4 2430 xor r15d,ebx 2431 add r11d,r12d 2432 movdqa xmm6,xmm4 2433 ror r13d,6 2434 and edi,r15d 2435 psrld xmm4,3 2436 xor r14d,eax 2437 add r11d,r13d 2438 xor edi,ebx 2439 paddd xmm2,xmm7 2440 ror r14d,2 2441 add edx,r11d 2442 psrld xmm6,7 2443 add r11d,edi 2444 mov r13d,edx 2445 pshufd xmm7,xmm1,250 2446 add r14d,r11d 2447 ror r13d,14 2448 pslld xmm5,14 2449 mov r11d,r14d 2450 mov r12d,r8d 2451 pxor xmm4,xmm6 2452 ror r14d,9 2453 xor r13d,edx 2454 xor r12d,r9d 2455 ror r13d,5 2456 psrld xmm6,11 2457 xor r14d,r11d 2458 pxor xmm4,xmm5 2459 and r12d,edx 2460 xor r13d,edx 2461 pslld xmm5,11 2462 add r10d,DWORD[36+rsp] 2463 mov edi,r11d 2464 pxor xmm4,xmm6 2465 xor r12d,r9d 2466 ror r14d,11 2467 movdqa xmm6,xmm7 2468 xor edi,eax 2469 add r10d,r12d 2470 pxor xmm4,xmm5 2471 ror r13d,6 2472 and r15d,edi 2473 xor r14d,r11d 2474 psrld xmm7,10 2475 add r10d,r13d 2476 xor r15d,eax 2477 paddd xmm2,xmm4 2478 ror r14d,2 2479 add ecx,r10d 2480 psrlq xmm6,17 2481 add r10d,r15d 2482 mov r13d,ecx 2483 add r14d,r10d 2484 pxor xmm7,xmm6 2485 ror r13d,14 2486 mov r10d,r14d 2487 mov r12d,edx 2488 ror r14d,9 2489 psrlq xmm6,2 2490 xor r13d,ecx 2491 xor r12d,r8d 2492 pxor xmm7,xmm6 2493 ror r13d,5 2494 xor r14d,r10d 2495 and r12d,ecx 2496 pshufd xmm7,xmm7,128 2497 xor r13d,ecx 2498 add r9d,DWORD[40+rsp] 2499 mov r15d,r10d 2500 psrldq xmm7,8 2501 xor r12d,r8d 2502 ror r14d,11 2503 xor r15d,r11d 2504 add r9d,r12d 2505 ror r13d,6 2506 paddd xmm2,xmm7 2507 and edi,r15d 2508 xor r14d,r10d 2509 add r9d,r13d 2510 pshufd xmm7,xmm2,80 2511 xor edi,r11d 2512 ror r14d,2 2513 add ebx,r9d 2514 movdqa xmm6,xmm7 2515 add r9d,edi 2516 mov r13d,ebx 2517 psrld xmm7,10 2518 add r14d,r9d 2519 ror r13d,14 2520 psrlq xmm6,17 2521 mov r9d,r14d 2522 mov r12d,ecx 2523 pxor xmm7,xmm6 2524 ror r14d,9 2525 xor r13d,ebx 2526 xor r12d,edx 2527 ror r13d,5 2528 xor r14d,r9d 2529 psrlq xmm6,2 2530 and r12d,ebx 2531 xor r13d,ebx 2532 add r8d,DWORD[44+rsp] 2533 pxor xmm7,xmm6 2534 mov edi,r9d 2535 xor r12d,edx 2536 ror r14d,11 2537 pshufd xmm7,xmm7,8 2538 xor edi,r10d 2539 add r8d,r12d 2540 movdqa xmm6,XMMWORD[64+rbp] 2541 ror r13d,6 2542 and r15d,edi 2543 pslldq xmm7,8 2544 xor r14d,r9d 2545 add r8d,r13d 2546 xor r15d,r10d 2547 paddd xmm2,xmm7 2548 ror r14d,2 2549 add eax,r8d 2550 add r8d,r15d 2551 paddd xmm6,xmm2 2552 mov r13d,eax 2553 add r14d,r8d 2554 movdqa XMMWORD[32+rsp],xmm6 2555 ror r13d,14 2556 movdqa xmm4,xmm0 2557 mov r8d,r14d 2558 mov r12d,ebx 2559 movdqa xmm7,xmm2 2560 ror r14d,9 2561 xor r13d,eax 2562 xor r12d,ecx 2563 ror r13d,5 2564 xor r14d,r8d 2565DB 102,15,58,15,227,4 2566 and r12d,eax 2567 xor r13d,eax 2568DB 102,15,58,15,249,4 2569 add edx,DWORD[48+rsp] 2570 mov r15d,r8d 2571 xor r12d,ecx 2572 ror r14d,11 2573 movdqa xmm5,xmm4 2574 xor r15d,r9d 2575 add edx,r12d 2576 movdqa xmm6,xmm4 2577 ror r13d,6 2578 and edi,r15d 2579 psrld xmm4,3 2580 xor r14d,r8d 2581 add edx,r13d 2582 xor edi,r9d 2583 paddd xmm3,xmm7 2584 ror r14d,2 2585 add r11d,edx 2586 psrld xmm6,7 2587 add edx,edi 2588 mov r13d,r11d 2589 pshufd xmm7,xmm2,250 2590 add r14d,edx 2591 ror r13d,14 2592 pslld xmm5,14 2593 mov edx,r14d 2594 mov r12d,eax 2595 pxor xmm4,xmm6 2596 ror r14d,9 2597 xor r13d,r11d 2598 xor r12d,ebx 2599 ror r13d,5 2600 psrld xmm6,11 2601 xor r14d,edx 2602 pxor xmm4,xmm5 2603 and r12d,r11d 2604 xor r13d,r11d 2605 pslld xmm5,11 2606 add ecx,DWORD[52+rsp] 2607 mov edi,edx 2608 pxor xmm4,xmm6 2609 xor r12d,ebx 2610 ror r14d,11 2611 movdqa xmm6,xmm7 2612 xor edi,r8d 2613 add ecx,r12d 2614 pxor xmm4,xmm5 2615 ror r13d,6 2616 and r15d,edi 2617 xor r14d,edx 2618 psrld xmm7,10 2619 add ecx,r13d 2620 xor r15d,r8d 2621 paddd xmm3,xmm4 2622 ror r14d,2 2623 add r10d,ecx 2624 psrlq xmm6,17 2625 add ecx,r15d 2626 mov r13d,r10d 2627 add r14d,ecx 2628 pxor xmm7,xmm6 2629 ror r13d,14 2630 mov ecx,r14d 2631 mov r12d,r11d 2632 ror r14d,9 2633 psrlq xmm6,2 2634 xor r13d,r10d 2635 xor r12d,eax 2636 pxor xmm7,xmm6 2637 ror r13d,5 2638 xor r14d,ecx 2639 and r12d,r10d 2640 pshufd xmm7,xmm7,128 2641 xor r13d,r10d 2642 add ebx,DWORD[56+rsp] 2643 mov r15d,ecx 2644 psrldq xmm7,8 2645 xor r12d,eax 2646 ror r14d,11 2647 xor r15d,edx 2648 add ebx,r12d 2649 ror r13d,6 2650 paddd xmm3,xmm7 2651 and edi,r15d 2652 xor r14d,ecx 2653 add ebx,r13d 2654 pshufd xmm7,xmm3,80 2655 xor edi,edx 2656 ror r14d,2 2657 add r9d,ebx 2658 movdqa xmm6,xmm7 2659 add ebx,edi 2660 mov r13d,r9d 2661 psrld xmm7,10 2662 add r14d,ebx 2663 ror r13d,14 2664 psrlq xmm6,17 2665 mov ebx,r14d 2666 mov r12d,r10d 2667 pxor xmm7,xmm6 2668 ror r14d,9 2669 xor r13d,r9d 2670 xor r12d,r11d 2671 ror r13d,5 2672 xor r14d,ebx 2673 psrlq xmm6,2 2674 and r12d,r9d 2675 xor r13d,r9d 2676 add eax,DWORD[60+rsp] 2677 pxor xmm7,xmm6 2678 mov edi,ebx 2679 xor r12d,r11d 2680 ror r14d,11 2681 pshufd xmm7,xmm7,8 2682 xor edi,ecx 2683 add eax,r12d 2684 movdqa xmm6,XMMWORD[96+rbp] 2685 ror r13d,6 2686 and r15d,edi 2687 pslldq xmm7,8 2688 xor r14d,ebx 2689 add eax,r13d 2690 xor r15d,ecx 2691 paddd xmm3,xmm7 2692 ror r14d,2 2693 add r8d,eax 2694 add eax,r15d 2695 paddd xmm6,xmm3 2696 mov r13d,r8d 2697 add r14d,eax 2698 movdqa XMMWORD[48+rsp],xmm6 2699 cmp BYTE[131+rbp],0 2700 jne NEAR $L$ssse3_00_47 2701 ror r13d,14 2702 mov eax,r14d 2703 mov r12d,r9d 2704 ror r14d,9 2705 xor r13d,r8d 2706 xor r12d,r10d 2707 ror r13d,5 2708 xor r14d,eax 2709 and r12d,r8d 2710 xor r13d,r8d 2711 add r11d,DWORD[rsp] 2712 mov r15d,eax 2713 xor r12d,r10d 2714 ror r14d,11 2715 xor r15d,ebx 2716 add r11d,r12d 2717 ror r13d,6 2718 and edi,r15d 2719 xor r14d,eax 2720 add r11d,r13d 2721 xor edi,ebx 2722 ror r14d,2 2723 add edx,r11d 2724 add r11d,edi 2725 mov r13d,edx 2726 add r14d,r11d 2727 ror r13d,14 2728 mov r11d,r14d 2729 mov r12d,r8d 2730 ror r14d,9 2731 xor r13d,edx 2732 xor r12d,r9d 2733 ror r13d,5 2734 xor r14d,r11d 2735 and r12d,edx 2736 xor r13d,edx 2737 add r10d,DWORD[4+rsp] 2738 mov edi,r11d 2739 xor r12d,r9d 2740 ror r14d,11 2741 xor edi,eax 2742 add r10d,r12d 2743 ror r13d,6 2744 and r15d,edi 2745 xor r14d,r11d 2746 add r10d,r13d 2747 xor r15d,eax 2748 ror r14d,2 2749 add ecx,r10d 2750 add r10d,r15d 2751 mov r13d,ecx 2752 add r14d,r10d 2753 ror r13d,14 2754 mov r10d,r14d 2755 mov r12d,edx 2756 ror r14d,9 2757 xor r13d,ecx 2758 xor r12d,r8d 2759 ror r13d,5 2760 xor r14d,r10d 2761 and r12d,ecx 2762 xor r13d,ecx 2763 add r9d,DWORD[8+rsp] 2764 mov r15d,r10d 2765 xor r12d,r8d 2766 ror r14d,11 2767 xor r15d,r11d 2768 add r9d,r12d 2769 ror r13d,6 2770 and edi,r15d 2771 xor r14d,r10d 2772 add r9d,r13d 2773 xor edi,r11d 2774 ror r14d,2 2775 add ebx,r9d 2776 add r9d,edi 2777 mov r13d,ebx 2778 add r14d,r9d 2779 ror r13d,14 2780 mov r9d,r14d 2781 mov r12d,ecx 2782 ror r14d,9 2783 xor r13d,ebx 2784 xor r12d,edx 2785 ror r13d,5 2786 xor r14d,r9d 2787 and r12d,ebx 2788 xor r13d,ebx 2789 add r8d,DWORD[12+rsp] 2790 mov edi,r9d 2791 xor r12d,edx 2792 ror r14d,11 2793 xor edi,r10d 2794 add r8d,r12d 2795 ror r13d,6 2796 and r15d,edi 2797 xor r14d,r9d 2798 add r8d,r13d 2799 xor r15d,r10d 2800 ror r14d,2 2801 add eax,r8d 2802 add r8d,r15d 2803 mov r13d,eax 2804 add r14d,r8d 2805 ror r13d,14 2806 mov r8d,r14d 2807 mov r12d,ebx 2808 ror r14d,9 2809 xor r13d,eax 2810 xor r12d,ecx 2811 ror r13d,5 2812 xor r14d,r8d 2813 and r12d,eax 2814 xor r13d,eax 2815 add edx,DWORD[16+rsp] 2816 mov r15d,r8d 2817 xor r12d,ecx 2818 ror r14d,11 2819 xor r15d,r9d 2820 add edx,r12d 2821 ror r13d,6 2822 and edi,r15d 2823 xor r14d,r8d 2824 add edx,r13d 2825 xor edi,r9d 2826 ror r14d,2 2827 add r11d,edx 2828 add edx,edi 2829 mov r13d,r11d 2830 add r14d,edx 2831 ror r13d,14 2832 mov edx,r14d 2833 mov r12d,eax 2834 ror r14d,9 2835 xor r13d,r11d 2836 xor r12d,ebx 2837 ror r13d,5 2838 xor r14d,edx 2839 and r12d,r11d 2840 xor r13d,r11d 2841 add ecx,DWORD[20+rsp] 2842 mov edi,edx 2843 xor r12d,ebx 2844 ror r14d,11 2845 xor edi,r8d 2846 add ecx,r12d 2847 ror r13d,6 2848 and r15d,edi 2849 xor r14d,edx 2850 add ecx,r13d 2851 xor r15d,r8d 2852 ror r14d,2 2853 add r10d,ecx 2854 add ecx,r15d 2855 mov r13d,r10d 2856 add r14d,ecx 2857 ror r13d,14 2858 mov ecx,r14d 2859 mov r12d,r11d 2860 ror r14d,9 2861 xor r13d,r10d 2862 xor r12d,eax 2863 ror r13d,5 2864 xor r14d,ecx 2865 and r12d,r10d 2866 xor r13d,r10d 2867 add ebx,DWORD[24+rsp] 2868 mov r15d,ecx 2869 xor r12d,eax 2870 ror r14d,11 2871 xor r15d,edx 2872 add ebx,r12d 2873 ror r13d,6 2874 and edi,r15d 2875 xor r14d,ecx 2876 add ebx,r13d 2877 xor edi,edx 2878 ror r14d,2 2879 add r9d,ebx 2880 add ebx,edi 2881 mov r13d,r9d 2882 add r14d,ebx 2883 ror r13d,14 2884 mov ebx,r14d 2885 mov r12d,r10d 2886 ror r14d,9 2887 xor r13d,r9d 2888 xor r12d,r11d 2889 ror r13d,5 2890 xor r14d,ebx 2891 and r12d,r9d 2892 xor r13d,r9d 2893 add eax,DWORD[28+rsp] 2894 mov edi,ebx 2895 xor r12d,r11d 2896 ror r14d,11 2897 xor edi,ecx 2898 add eax,r12d 2899 ror r13d,6 2900 and r15d,edi 2901 xor r14d,ebx 2902 add eax,r13d 2903 xor r15d,ecx 2904 ror r14d,2 2905 add r8d,eax 2906 add eax,r15d 2907 mov r13d,r8d 2908 add r14d,eax 2909 ror r13d,14 2910 mov eax,r14d 2911 mov r12d,r9d 2912 ror r14d,9 2913 xor r13d,r8d 2914 xor r12d,r10d 2915 ror r13d,5 2916 xor r14d,eax 2917 and r12d,r8d 2918 xor r13d,r8d 2919 add r11d,DWORD[32+rsp] 2920 mov r15d,eax 2921 xor r12d,r10d 2922 ror r14d,11 2923 xor r15d,ebx 2924 add r11d,r12d 2925 ror r13d,6 2926 and edi,r15d 2927 xor r14d,eax 2928 add r11d,r13d 2929 xor edi,ebx 2930 ror r14d,2 2931 add edx,r11d 2932 add r11d,edi 2933 mov r13d,edx 2934 add r14d,r11d 2935 ror r13d,14 2936 mov r11d,r14d 2937 mov r12d,r8d 2938 ror r14d,9 2939 xor r13d,edx 2940 xor r12d,r9d 2941 ror r13d,5 2942 xor r14d,r11d 2943 and r12d,edx 2944 xor r13d,edx 2945 add r10d,DWORD[36+rsp] 2946 mov edi,r11d 2947 xor r12d,r9d 2948 ror r14d,11 2949 xor edi,eax 2950 add r10d,r12d 2951 ror r13d,6 2952 and r15d,edi 2953 xor r14d,r11d 2954 add r10d,r13d 2955 xor r15d,eax 2956 ror r14d,2 2957 add ecx,r10d 2958 add r10d,r15d 2959 mov r13d,ecx 2960 add r14d,r10d 2961 ror r13d,14 2962 mov r10d,r14d 2963 mov r12d,edx 2964 ror r14d,9 2965 xor r13d,ecx 2966 xor r12d,r8d 2967 ror r13d,5 2968 xor r14d,r10d 2969 and r12d,ecx 2970 xor r13d,ecx 2971 add r9d,DWORD[40+rsp] 2972 mov r15d,r10d 2973 xor r12d,r8d 2974 ror r14d,11 2975 xor r15d,r11d 2976 add r9d,r12d 2977 ror r13d,6 2978 and edi,r15d 2979 xor r14d,r10d 2980 add r9d,r13d 2981 xor edi,r11d 2982 ror r14d,2 2983 add ebx,r9d 2984 add r9d,edi 2985 mov r13d,ebx 2986 add r14d,r9d 2987 ror r13d,14 2988 mov r9d,r14d 2989 mov r12d,ecx 2990 ror r14d,9 2991 xor r13d,ebx 2992 xor r12d,edx 2993 ror r13d,5 2994 xor r14d,r9d 2995 and r12d,ebx 2996 xor r13d,ebx 2997 add r8d,DWORD[44+rsp] 2998 mov edi,r9d 2999 xor r12d,edx 3000 ror r14d,11 3001 xor edi,r10d 3002 add r8d,r12d 3003 ror r13d,6 3004 and r15d,edi 3005 xor r14d,r9d 3006 add r8d,r13d 3007 xor r15d,r10d 3008 ror r14d,2 3009 add eax,r8d 3010 add r8d,r15d 3011 mov r13d,eax 3012 add r14d,r8d 3013 ror r13d,14 3014 mov r8d,r14d 3015 mov r12d,ebx 3016 ror r14d,9 3017 xor r13d,eax 3018 xor r12d,ecx 3019 ror r13d,5 3020 xor r14d,r8d 3021 and r12d,eax 3022 xor r13d,eax 3023 add edx,DWORD[48+rsp] 3024 mov r15d,r8d 3025 xor r12d,ecx 3026 ror r14d,11 3027 xor r15d,r9d 3028 add edx,r12d 3029 ror r13d,6 3030 and edi,r15d 3031 xor r14d,r8d 3032 add edx,r13d 3033 xor edi,r9d 3034 ror r14d,2 3035 add r11d,edx 3036 add edx,edi 3037 mov r13d,r11d 3038 add r14d,edx 3039 ror r13d,14 3040 mov edx,r14d 3041 mov r12d,eax 3042 ror r14d,9 3043 xor r13d,r11d 3044 xor r12d,ebx 3045 ror r13d,5 3046 xor r14d,edx 3047 and r12d,r11d 3048 xor r13d,r11d 3049 add ecx,DWORD[52+rsp] 3050 mov edi,edx 3051 xor r12d,ebx 3052 ror r14d,11 3053 xor edi,r8d 3054 add ecx,r12d 3055 ror r13d,6 3056 and r15d,edi 3057 xor r14d,edx 3058 add ecx,r13d 3059 xor r15d,r8d 3060 ror r14d,2 3061 add r10d,ecx 3062 add ecx,r15d 3063 mov r13d,r10d 3064 add r14d,ecx 3065 ror r13d,14 3066 mov ecx,r14d 3067 mov r12d,r11d 3068 ror r14d,9 3069 xor r13d,r10d 3070 xor r12d,eax 3071 ror r13d,5 3072 xor r14d,ecx 3073 and r12d,r10d 3074 xor r13d,r10d 3075 add ebx,DWORD[56+rsp] 3076 mov r15d,ecx 3077 xor r12d,eax 3078 ror r14d,11 3079 xor r15d,edx 3080 add ebx,r12d 3081 ror r13d,6 3082 and edi,r15d 3083 xor r14d,ecx 3084 add ebx,r13d 3085 xor edi,edx 3086 ror r14d,2 3087 add r9d,ebx 3088 add ebx,edi 3089 mov r13d,r9d 3090 add r14d,ebx 3091 ror r13d,14 3092 mov ebx,r14d 3093 mov r12d,r10d 3094 ror r14d,9 3095 xor r13d,r9d 3096 xor r12d,r11d 3097 ror r13d,5 3098 xor r14d,ebx 3099 and r12d,r9d 3100 xor r13d,r9d 3101 add eax,DWORD[60+rsp] 3102 mov edi,ebx 3103 xor r12d,r11d 3104 ror r14d,11 3105 xor edi,ecx 3106 add eax,r12d 3107 ror r13d,6 3108 and r15d,edi 3109 xor r14d,ebx 3110 add eax,r13d 3111 xor r15d,ecx 3112 ror r14d,2 3113 add r8d,eax 3114 add eax,r15d 3115 mov r13d,r8d 3116 add r14d,eax 3117 mov rdi,QWORD[((64+0))+rsp] 3118 mov eax,r14d 3119 3120 add eax,DWORD[rdi] 3121 lea rsi,[64+rsi] 3122 add ebx,DWORD[4+rdi] 3123 add ecx,DWORD[8+rdi] 3124 add edx,DWORD[12+rdi] 3125 add r8d,DWORD[16+rdi] 3126 add r9d,DWORD[20+rdi] 3127 add r10d,DWORD[24+rdi] 3128 add r11d,DWORD[28+rdi] 3129 3130 cmp rsi,QWORD[((64+16))+rsp] 3131 3132 mov DWORD[rdi],eax 3133 mov DWORD[4+rdi],ebx 3134 mov DWORD[8+rdi],ecx 3135 mov DWORD[12+rdi],edx 3136 mov DWORD[16+rdi],r8d 3137 mov DWORD[20+rdi],r9d 3138 mov DWORD[24+rdi],r10d 3139 mov DWORD[28+rdi],r11d 3140 jb NEAR $L$loop_ssse3 3141 3142 mov rsi,QWORD[88+rsp] 3143 3144 movaps xmm6,XMMWORD[((64+32))+rsp] 3145 movaps xmm7,XMMWORD[((64+48))+rsp] 3146 movaps xmm8,XMMWORD[((64+64))+rsp] 3147 movaps xmm9,XMMWORD[((64+80))+rsp] 3148 mov r15,QWORD[((-48))+rsi] 3149 3150 mov r14,QWORD[((-40))+rsi] 3151 3152 mov r13,QWORD[((-32))+rsi] 3153 3154 mov r12,QWORD[((-24))+rsi] 3155 3156 mov rbp,QWORD[((-16))+rsi] 3157 3158 mov rbx,QWORD[((-8))+rsi] 3159 3160 lea rsp,[rsi] 3161 3162$L$epilogue_ssse3: 3163 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 3164 mov rsi,QWORD[16+rsp] 3165 ret 3166 3167$L$SEH_end_sha256_block_data_order_ssse3: 3168 3169ALIGN 64 3170sha256_block_data_order_avx: 3171 mov QWORD[8+rsp],rdi ;WIN64 prologue 3172 mov QWORD[16+rsp],rsi 3173 mov rax,rsp 3174$L$SEH_begin_sha256_block_data_order_avx: 3175 mov rdi,rcx 3176 mov rsi,rdx 3177 mov rdx,r8 3178 3179 3180 3181$L$avx_shortcut: 3182 mov rax,rsp 3183 3184 push rbx 3185 3186 push rbp 3187 3188 push r12 3189 3190 push r13 3191 3192 push r14 3193 3194 push r15 3195 3196 shl rdx,4 3197 sub rsp,160 3198 lea rdx,[rdx*4+rsi] 3199 and rsp,-64 3200 mov QWORD[((64+0))+rsp],rdi 3201 mov QWORD[((64+8))+rsp],rsi 3202 mov QWORD[((64+16))+rsp],rdx 3203 mov QWORD[88+rsp],rax 3204 3205 movaps XMMWORD[(64+32)+rsp],xmm6 3206 movaps XMMWORD[(64+48)+rsp],xmm7 3207 movaps XMMWORD[(64+64)+rsp],xmm8 3208 movaps XMMWORD[(64+80)+rsp],xmm9 3209$L$prologue_avx: 3210 3211 vzeroupper 3212 mov eax,DWORD[rdi] 3213 mov ebx,DWORD[4+rdi] 3214 mov ecx,DWORD[8+rdi] 3215 mov edx,DWORD[12+rdi] 3216 mov r8d,DWORD[16+rdi] 3217 mov r9d,DWORD[20+rdi] 3218 mov r10d,DWORD[24+rdi] 3219 mov r11d,DWORD[28+rdi] 3220 vmovdqa xmm8,XMMWORD[((K256+512+32))] 3221 vmovdqa xmm9,XMMWORD[((K256+512+64))] 3222 jmp NEAR $L$loop_avx 3223ALIGN 16 3224$L$loop_avx: 3225 vmovdqa xmm7,XMMWORD[((K256+512))] 3226 vmovdqu xmm0,XMMWORD[rsi] 3227 vmovdqu xmm1,XMMWORD[16+rsi] 3228 vmovdqu xmm2,XMMWORD[32+rsi] 3229 vmovdqu xmm3,XMMWORD[48+rsi] 3230 vpshufb xmm0,xmm0,xmm7 3231 lea rbp,[K256] 3232 vpshufb xmm1,xmm1,xmm7 3233 vpshufb xmm2,xmm2,xmm7 3234 vpaddd xmm4,xmm0,XMMWORD[rbp] 3235 vpshufb xmm3,xmm3,xmm7 3236 vpaddd xmm5,xmm1,XMMWORD[32+rbp] 3237 vpaddd xmm6,xmm2,XMMWORD[64+rbp] 3238 vpaddd xmm7,xmm3,XMMWORD[96+rbp] 3239 vmovdqa XMMWORD[rsp],xmm4 3240 mov r14d,eax 3241 vmovdqa XMMWORD[16+rsp],xmm5 3242 mov edi,ebx 3243 vmovdqa XMMWORD[32+rsp],xmm6 3244 xor edi,ecx 3245 vmovdqa XMMWORD[48+rsp],xmm7 3246 mov r13d,r8d 3247 jmp NEAR $L$avx_00_47 3248 3249ALIGN 16 3250$L$avx_00_47: 3251 sub rbp,-128 3252 vpalignr xmm4,xmm1,xmm0,4 3253 shrd r13d,r13d,14 3254 mov eax,r14d 3255 mov r12d,r9d 3256 vpalignr xmm7,xmm3,xmm2,4 3257 shrd r14d,r14d,9 3258 xor r13d,r8d 3259 xor r12d,r10d 3260 vpsrld xmm6,xmm4,7 3261 shrd r13d,r13d,5 3262 xor r14d,eax 3263 and r12d,r8d 3264 vpaddd xmm0,xmm0,xmm7 3265 xor r13d,r8d 3266 add r11d,DWORD[rsp] 3267 mov r15d,eax 3268 vpsrld xmm7,xmm4,3 3269 xor r12d,r10d 3270 shrd r14d,r14d,11 3271 xor r15d,ebx 3272 vpslld xmm5,xmm4,14 3273 add r11d,r12d 3274 shrd r13d,r13d,6 3275 and edi,r15d 3276 vpxor xmm4,xmm7,xmm6 3277 xor r14d,eax 3278 add r11d,r13d 3279 xor edi,ebx 3280 vpshufd xmm7,xmm3,250 3281 shrd r14d,r14d,2 3282 add edx,r11d 3283 add r11d,edi 3284 vpsrld xmm6,xmm6,11 3285 mov r13d,edx 3286 add r14d,r11d 3287 shrd r13d,r13d,14 3288 vpxor xmm4,xmm4,xmm5 3289 mov r11d,r14d 3290 mov r12d,r8d 3291 shrd r14d,r14d,9 3292 vpslld xmm5,xmm5,11 3293 xor r13d,edx 3294 xor r12d,r9d 3295 shrd r13d,r13d,5 3296 vpxor xmm4,xmm4,xmm6 3297 xor r14d,r11d 3298 and r12d,edx 3299 xor r13d,edx 3300 vpsrld xmm6,xmm7,10 3301 add r10d,DWORD[4+rsp] 3302 mov edi,r11d 3303 xor r12d,r9d 3304 vpxor xmm4,xmm4,xmm5 3305 shrd r14d,r14d,11 3306 xor edi,eax 3307 add r10d,r12d 3308 vpsrlq xmm7,xmm7,17 3309 shrd r13d,r13d,6 3310 and r15d,edi 3311 xor r14d,r11d 3312 vpaddd xmm0,xmm0,xmm4 3313 add r10d,r13d 3314 xor r15d,eax 3315 shrd r14d,r14d,2 3316 vpxor xmm6,xmm6,xmm7 3317 add ecx,r10d 3318 add r10d,r15d 3319 mov r13d,ecx 3320 vpsrlq xmm7,xmm7,2 3321 add r14d,r10d 3322 shrd r13d,r13d,14 3323 mov r10d,r14d 3324 vpxor xmm6,xmm6,xmm7 3325 mov r12d,edx 3326 shrd r14d,r14d,9 3327 xor r13d,ecx 3328 vpshufb xmm6,xmm6,xmm8 3329 xor r12d,r8d 3330 shrd r13d,r13d,5 3331 xor r14d,r10d 3332 vpaddd xmm0,xmm0,xmm6 3333 and r12d,ecx 3334 xor r13d,ecx 3335 add r9d,DWORD[8+rsp] 3336 vpshufd xmm7,xmm0,80 3337 mov r15d,r10d 3338 xor r12d,r8d 3339 shrd r14d,r14d,11 3340 vpsrld xmm6,xmm7,10 3341 xor r15d,r11d 3342 add r9d,r12d 3343 shrd r13d,r13d,6 3344 vpsrlq xmm7,xmm7,17 3345 and edi,r15d 3346 xor r14d,r10d 3347 add r9d,r13d 3348 vpxor xmm6,xmm6,xmm7 3349 xor edi,r11d 3350 shrd r14d,r14d,2 3351 add ebx,r9d 3352 vpsrlq xmm7,xmm7,2 3353 add r9d,edi 3354 mov r13d,ebx 3355 add r14d,r9d 3356 vpxor xmm6,xmm6,xmm7 3357 shrd r13d,r13d,14 3358 mov r9d,r14d 3359 mov r12d,ecx 3360 vpshufb xmm6,xmm6,xmm9 3361 shrd r14d,r14d,9 3362 xor r13d,ebx 3363 xor r12d,edx 3364 vpaddd xmm0,xmm0,xmm6 3365 shrd r13d,r13d,5 3366 xor r14d,r9d 3367 and r12d,ebx 3368 vpaddd xmm6,xmm0,XMMWORD[rbp] 3369 xor r13d,ebx 3370 add r8d,DWORD[12+rsp] 3371 mov edi,r9d 3372 xor r12d,edx 3373 shrd r14d,r14d,11 3374 xor edi,r10d 3375 add r8d,r12d 3376 shrd r13d,r13d,6 3377 and r15d,edi 3378 xor r14d,r9d 3379 add r8d,r13d 3380 xor r15d,r10d 3381 shrd r14d,r14d,2 3382 add eax,r8d 3383 add r8d,r15d 3384 mov r13d,eax 3385 add r14d,r8d 3386 vmovdqa XMMWORD[rsp],xmm6 3387 vpalignr xmm4,xmm2,xmm1,4 3388 shrd r13d,r13d,14 3389 mov r8d,r14d 3390 mov r12d,ebx 3391 vpalignr xmm7,xmm0,xmm3,4 3392 shrd r14d,r14d,9 3393 xor r13d,eax 3394 xor r12d,ecx 3395 vpsrld xmm6,xmm4,7 3396 shrd r13d,r13d,5 3397 xor r14d,r8d 3398 and r12d,eax 3399 vpaddd xmm1,xmm1,xmm7 3400 xor r13d,eax 3401 add edx,DWORD[16+rsp] 3402 mov r15d,r8d 3403 vpsrld xmm7,xmm4,3 3404 xor r12d,ecx 3405 shrd r14d,r14d,11 3406 xor r15d,r9d 3407 vpslld xmm5,xmm4,14 3408 add edx,r12d 3409 shrd r13d,r13d,6 3410 and edi,r15d 3411 vpxor xmm4,xmm7,xmm6 3412 xor r14d,r8d 3413 add edx,r13d 3414 xor edi,r9d 3415 vpshufd xmm7,xmm0,250 3416 shrd r14d,r14d,2 3417 add r11d,edx 3418 add edx,edi 3419 vpsrld xmm6,xmm6,11 3420 mov r13d,r11d 3421 add r14d,edx 3422 shrd r13d,r13d,14 3423 vpxor xmm4,xmm4,xmm5 3424 mov edx,r14d 3425 mov r12d,eax 3426 shrd r14d,r14d,9 3427 vpslld xmm5,xmm5,11 3428 xor r13d,r11d 3429 xor r12d,ebx 3430 shrd r13d,r13d,5 3431 vpxor xmm4,xmm4,xmm6 3432 xor r14d,edx 3433 and r12d,r11d 3434 xor r13d,r11d 3435 vpsrld xmm6,xmm7,10 3436 add ecx,DWORD[20+rsp] 3437 mov edi,edx 3438 xor r12d,ebx 3439 vpxor xmm4,xmm4,xmm5 3440 shrd r14d,r14d,11 3441 xor edi,r8d 3442 add ecx,r12d 3443 vpsrlq xmm7,xmm7,17 3444 shrd r13d,r13d,6 3445 and r15d,edi 3446 xor r14d,edx 3447 vpaddd xmm1,xmm1,xmm4 3448 add ecx,r13d 3449 xor r15d,r8d 3450 shrd r14d,r14d,2 3451 vpxor xmm6,xmm6,xmm7 3452 add r10d,ecx 3453 add ecx,r15d 3454 mov r13d,r10d 3455 vpsrlq xmm7,xmm7,2 3456 add r14d,ecx 3457 shrd r13d,r13d,14 3458 mov ecx,r14d 3459 vpxor xmm6,xmm6,xmm7 3460 mov r12d,r11d 3461 shrd r14d,r14d,9 3462 xor r13d,r10d 3463 vpshufb xmm6,xmm6,xmm8 3464 xor r12d,eax 3465 shrd r13d,r13d,5 3466 xor r14d,ecx 3467 vpaddd xmm1,xmm1,xmm6 3468 and r12d,r10d 3469 xor r13d,r10d 3470 add ebx,DWORD[24+rsp] 3471 vpshufd xmm7,xmm1,80 3472 mov r15d,ecx 3473 xor r12d,eax 3474 shrd r14d,r14d,11 3475 vpsrld xmm6,xmm7,10 3476 xor r15d,edx 3477 add ebx,r12d 3478 shrd r13d,r13d,6 3479 vpsrlq xmm7,xmm7,17 3480 and edi,r15d 3481 xor r14d,ecx 3482 add ebx,r13d 3483 vpxor xmm6,xmm6,xmm7 3484 xor edi,edx 3485 shrd r14d,r14d,2 3486 add r9d,ebx 3487 vpsrlq xmm7,xmm7,2 3488 add ebx,edi 3489 mov r13d,r9d 3490 add r14d,ebx 3491 vpxor xmm6,xmm6,xmm7 3492 shrd r13d,r13d,14 3493 mov ebx,r14d 3494 mov r12d,r10d 3495 vpshufb xmm6,xmm6,xmm9 3496 shrd r14d,r14d,9 3497 xor r13d,r9d 3498 xor r12d,r11d 3499 vpaddd xmm1,xmm1,xmm6 3500 shrd r13d,r13d,5 3501 xor r14d,ebx 3502 and r12d,r9d 3503 vpaddd xmm6,xmm1,XMMWORD[32+rbp] 3504 xor r13d,r9d 3505 add eax,DWORD[28+rsp] 3506 mov edi,ebx 3507 xor r12d,r11d 3508 shrd r14d,r14d,11 3509 xor edi,ecx 3510 add eax,r12d 3511 shrd r13d,r13d,6 3512 and r15d,edi 3513 xor r14d,ebx 3514 add eax,r13d 3515 xor r15d,ecx 3516 shrd r14d,r14d,2 3517 add r8d,eax 3518 add eax,r15d 3519 mov r13d,r8d 3520 add r14d,eax 3521 vmovdqa XMMWORD[16+rsp],xmm6 3522 vpalignr xmm4,xmm3,xmm2,4 3523 shrd r13d,r13d,14 3524 mov eax,r14d 3525 mov r12d,r9d 3526 vpalignr xmm7,xmm1,xmm0,4 3527 shrd r14d,r14d,9 3528 xor r13d,r8d 3529 xor r12d,r10d 3530 vpsrld xmm6,xmm4,7 3531 shrd r13d,r13d,5 3532 xor r14d,eax 3533 and r12d,r8d 3534 vpaddd xmm2,xmm2,xmm7 3535 xor r13d,r8d 3536 add r11d,DWORD[32+rsp] 3537 mov r15d,eax 3538 vpsrld xmm7,xmm4,3 3539 xor r12d,r10d 3540 shrd r14d,r14d,11 3541 xor r15d,ebx 3542 vpslld xmm5,xmm4,14 3543 add r11d,r12d 3544 shrd r13d,r13d,6 3545 and edi,r15d 3546 vpxor xmm4,xmm7,xmm6 3547 xor r14d,eax 3548 add r11d,r13d 3549 xor edi,ebx 3550 vpshufd xmm7,xmm1,250 3551 shrd r14d,r14d,2 3552 add edx,r11d 3553 add r11d,edi 3554 vpsrld xmm6,xmm6,11 3555 mov r13d,edx 3556 add r14d,r11d 3557 shrd r13d,r13d,14 3558 vpxor xmm4,xmm4,xmm5 3559 mov r11d,r14d 3560 mov r12d,r8d 3561 shrd r14d,r14d,9 3562 vpslld xmm5,xmm5,11 3563 xor r13d,edx 3564 xor r12d,r9d 3565 shrd r13d,r13d,5 3566 vpxor xmm4,xmm4,xmm6 3567 xor r14d,r11d 3568 and r12d,edx 3569 xor r13d,edx 3570 vpsrld xmm6,xmm7,10 3571 add r10d,DWORD[36+rsp] 3572 mov edi,r11d 3573 xor r12d,r9d 3574 vpxor xmm4,xmm4,xmm5 3575 shrd r14d,r14d,11 3576 xor edi,eax 3577 add r10d,r12d 3578 vpsrlq xmm7,xmm7,17 3579 shrd r13d,r13d,6 3580 and r15d,edi 3581 xor r14d,r11d 3582 vpaddd xmm2,xmm2,xmm4 3583 add r10d,r13d 3584 xor r15d,eax 3585 shrd r14d,r14d,2 3586 vpxor xmm6,xmm6,xmm7 3587 add ecx,r10d 3588 add r10d,r15d 3589 mov r13d,ecx 3590 vpsrlq xmm7,xmm7,2 3591 add r14d,r10d 3592 shrd r13d,r13d,14 3593 mov r10d,r14d 3594 vpxor xmm6,xmm6,xmm7 3595 mov r12d,edx 3596 shrd r14d,r14d,9 3597 xor r13d,ecx 3598 vpshufb xmm6,xmm6,xmm8 3599 xor r12d,r8d 3600 shrd r13d,r13d,5 3601 xor r14d,r10d 3602 vpaddd xmm2,xmm2,xmm6 3603 and r12d,ecx 3604 xor r13d,ecx 3605 add r9d,DWORD[40+rsp] 3606 vpshufd xmm7,xmm2,80 3607 mov r15d,r10d 3608 xor r12d,r8d 3609 shrd r14d,r14d,11 3610 vpsrld xmm6,xmm7,10 3611 xor r15d,r11d 3612 add r9d,r12d 3613 shrd r13d,r13d,6 3614 vpsrlq xmm7,xmm7,17 3615 and edi,r15d 3616 xor r14d,r10d 3617 add r9d,r13d 3618 vpxor xmm6,xmm6,xmm7 3619 xor edi,r11d 3620 shrd r14d,r14d,2 3621 add ebx,r9d 3622 vpsrlq xmm7,xmm7,2 3623 add r9d,edi 3624 mov r13d,ebx 3625 add r14d,r9d 3626 vpxor xmm6,xmm6,xmm7 3627 shrd r13d,r13d,14 3628 mov r9d,r14d 3629 mov r12d,ecx 3630 vpshufb xmm6,xmm6,xmm9 3631 shrd r14d,r14d,9 3632 xor r13d,ebx 3633 xor r12d,edx 3634 vpaddd xmm2,xmm2,xmm6 3635 shrd r13d,r13d,5 3636 xor r14d,r9d 3637 and r12d,ebx 3638 vpaddd xmm6,xmm2,XMMWORD[64+rbp] 3639 xor r13d,ebx 3640 add r8d,DWORD[44+rsp] 3641 mov edi,r9d 3642 xor r12d,edx 3643 shrd r14d,r14d,11 3644 xor edi,r10d 3645 add r8d,r12d 3646 shrd r13d,r13d,6 3647 and r15d,edi 3648 xor r14d,r9d 3649 add r8d,r13d 3650 xor r15d,r10d 3651 shrd r14d,r14d,2 3652 add eax,r8d 3653 add r8d,r15d 3654 mov r13d,eax 3655 add r14d,r8d 3656 vmovdqa XMMWORD[32+rsp],xmm6 3657 vpalignr xmm4,xmm0,xmm3,4 3658 shrd r13d,r13d,14 3659 mov r8d,r14d 3660 mov r12d,ebx 3661 vpalignr xmm7,xmm2,xmm1,4 3662 shrd r14d,r14d,9 3663 xor r13d,eax 3664 xor r12d,ecx 3665 vpsrld xmm6,xmm4,7 3666 shrd r13d,r13d,5 3667 xor r14d,r8d 3668 and r12d,eax 3669 vpaddd xmm3,xmm3,xmm7 3670 xor r13d,eax 3671 add edx,DWORD[48+rsp] 3672 mov r15d,r8d 3673 vpsrld xmm7,xmm4,3 3674 xor r12d,ecx 3675 shrd r14d,r14d,11 3676 xor r15d,r9d 3677 vpslld xmm5,xmm4,14 3678 add edx,r12d 3679 shrd r13d,r13d,6 3680 and edi,r15d 3681 vpxor xmm4,xmm7,xmm6 3682 xor r14d,r8d 3683 add edx,r13d 3684 xor edi,r9d 3685 vpshufd xmm7,xmm2,250 3686 shrd r14d,r14d,2 3687 add r11d,edx 3688 add edx,edi 3689 vpsrld xmm6,xmm6,11 3690 mov r13d,r11d 3691 add r14d,edx 3692 shrd r13d,r13d,14 3693 vpxor xmm4,xmm4,xmm5 3694 mov edx,r14d 3695 mov r12d,eax 3696 shrd r14d,r14d,9 3697 vpslld xmm5,xmm5,11 3698 xor r13d,r11d 3699 xor r12d,ebx 3700 shrd r13d,r13d,5 3701 vpxor xmm4,xmm4,xmm6 3702 xor r14d,edx 3703 and r12d,r11d 3704 xor r13d,r11d 3705 vpsrld xmm6,xmm7,10 3706 add ecx,DWORD[52+rsp] 3707 mov edi,edx 3708 xor r12d,ebx 3709 vpxor xmm4,xmm4,xmm5 3710 shrd r14d,r14d,11 3711 xor edi,r8d 3712 add ecx,r12d 3713 vpsrlq xmm7,xmm7,17 3714 shrd r13d,r13d,6 3715 and r15d,edi 3716 xor r14d,edx 3717 vpaddd xmm3,xmm3,xmm4 3718 add ecx,r13d 3719 xor r15d,r8d 3720 shrd r14d,r14d,2 3721 vpxor xmm6,xmm6,xmm7 3722 add r10d,ecx 3723 add ecx,r15d 3724 mov r13d,r10d 3725 vpsrlq xmm7,xmm7,2 3726 add r14d,ecx 3727 shrd r13d,r13d,14 3728 mov ecx,r14d 3729 vpxor xmm6,xmm6,xmm7 3730 mov r12d,r11d 3731 shrd r14d,r14d,9 3732 xor r13d,r10d 3733 vpshufb xmm6,xmm6,xmm8 3734 xor r12d,eax 3735 shrd r13d,r13d,5 3736 xor r14d,ecx 3737 vpaddd xmm3,xmm3,xmm6 3738 and r12d,r10d 3739 xor r13d,r10d 3740 add ebx,DWORD[56+rsp] 3741 vpshufd xmm7,xmm3,80 3742 mov r15d,ecx 3743 xor r12d,eax 3744 shrd r14d,r14d,11 3745 vpsrld xmm6,xmm7,10 3746 xor r15d,edx 3747 add ebx,r12d 3748 shrd r13d,r13d,6 3749 vpsrlq xmm7,xmm7,17 3750 and edi,r15d 3751 xor r14d,ecx 3752 add ebx,r13d 3753 vpxor xmm6,xmm6,xmm7 3754 xor edi,edx 3755 shrd r14d,r14d,2 3756 add r9d,ebx 3757 vpsrlq xmm7,xmm7,2 3758 add ebx,edi 3759 mov r13d,r9d 3760 add r14d,ebx 3761 vpxor xmm6,xmm6,xmm7 3762 shrd r13d,r13d,14 3763 mov ebx,r14d 3764 mov r12d,r10d 3765 vpshufb xmm6,xmm6,xmm9 3766 shrd r14d,r14d,9 3767 xor r13d,r9d 3768 xor r12d,r11d 3769 vpaddd xmm3,xmm3,xmm6 3770 shrd r13d,r13d,5 3771 xor r14d,ebx 3772 and r12d,r9d 3773 vpaddd xmm6,xmm3,XMMWORD[96+rbp] 3774 xor r13d,r9d 3775 add eax,DWORD[60+rsp] 3776 mov edi,ebx 3777 xor r12d,r11d 3778 shrd r14d,r14d,11 3779 xor edi,ecx 3780 add eax,r12d 3781 shrd r13d,r13d,6 3782 and r15d,edi 3783 xor r14d,ebx 3784 add eax,r13d 3785 xor r15d,ecx 3786 shrd r14d,r14d,2 3787 add r8d,eax 3788 add eax,r15d 3789 mov r13d,r8d 3790 add r14d,eax 3791 vmovdqa XMMWORD[48+rsp],xmm6 3792 cmp BYTE[131+rbp],0 3793 jne NEAR $L$avx_00_47 3794 shrd r13d,r13d,14 3795 mov eax,r14d 3796 mov r12d,r9d 3797 shrd r14d,r14d,9 3798 xor r13d,r8d 3799 xor r12d,r10d 3800 shrd r13d,r13d,5 3801 xor r14d,eax 3802 and r12d,r8d 3803 xor r13d,r8d 3804 add r11d,DWORD[rsp] 3805 mov r15d,eax 3806 xor r12d,r10d 3807 shrd r14d,r14d,11 3808 xor r15d,ebx 3809 add r11d,r12d 3810 shrd r13d,r13d,6 3811 and edi,r15d 3812 xor r14d,eax 3813 add r11d,r13d 3814 xor edi,ebx 3815 shrd r14d,r14d,2 3816 add edx,r11d 3817 add r11d,edi 3818 mov r13d,edx 3819 add r14d,r11d 3820 shrd r13d,r13d,14 3821 mov r11d,r14d 3822 mov r12d,r8d 3823 shrd r14d,r14d,9 3824 xor r13d,edx 3825 xor r12d,r9d 3826 shrd r13d,r13d,5 3827 xor r14d,r11d 3828 and r12d,edx 3829 xor r13d,edx 3830 add r10d,DWORD[4+rsp] 3831 mov edi,r11d 3832 xor r12d,r9d 3833 shrd r14d,r14d,11 3834 xor edi,eax 3835 add r10d,r12d 3836 shrd r13d,r13d,6 3837 and r15d,edi 3838 xor r14d,r11d 3839 add r10d,r13d 3840 xor r15d,eax 3841 shrd r14d,r14d,2 3842 add ecx,r10d 3843 add r10d,r15d 3844 mov r13d,ecx 3845 add r14d,r10d 3846 shrd r13d,r13d,14 3847 mov r10d,r14d 3848 mov r12d,edx 3849 shrd r14d,r14d,9 3850 xor r13d,ecx 3851 xor r12d,r8d 3852 shrd r13d,r13d,5 3853 xor r14d,r10d 3854 and r12d,ecx 3855 xor r13d,ecx 3856 add r9d,DWORD[8+rsp] 3857 mov r15d,r10d 3858 xor r12d,r8d 3859 shrd r14d,r14d,11 3860 xor r15d,r11d 3861 add r9d,r12d 3862 shrd r13d,r13d,6 3863 and edi,r15d 3864 xor r14d,r10d 3865 add r9d,r13d 3866 xor edi,r11d 3867 shrd r14d,r14d,2 3868 add ebx,r9d 3869 add r9d,edi 3870 mov r13d,ebx 3871 add r14d,r9d 3872 shrd r13d,r13d,14 3873 mov r9d,r14d 3874 mov r12d,ecx 3875 shrd r14d,r14d,9 3876 xor r13d,ebx 3877 xor r12d,edx 3878 shrd r13d,r13d,5 3879 xor r14d,r9d 3880 and r12d,ebx 3881 xor r13d,ebx 3882 add r8d,DWORD[12+rsp] 3883 mov edi,r9d 3884 xor r12d,edx 3885 shrd r14d,r14d,11 3886 xor edi,r10d 3887 add r8d,r12d 3888 shrd r13d,r13d,6 3889 and r15d,edi 3890 xor r14d,r9d 3891 add r8d,r13d 3892 xor r15d,r10d 3893 shrd r14d,r14d,2 3894 add eax,r8d 3895 add r8d,r15d 3896 mov r13d,eax 3897 add r14d,r8d 3898 shrd r13d,r13d,14 3899 mov r8d,r14d 3900 mov r12d,ebx 3901 shrd r14d,r14d,9 3902 xor r13d,eax 3903 xor r12d,ecx 3904 shrd r13d,r13d,5 3905 xor r14d,r8d 3906 and r12d,eax 3907 xor r13d,eax 3908 add edx,DWORD[16+rsp] 3909 mov r15d,r8d 3910 xor r12d,ecx 3911 shrd r14d,r14d,11 3912 xor r15d,r9d 3913 add edx,r12d 3914 shrd r13d,r13d,6 3915 and edi,r15d 3916 xor r14d,r8d 3917 add edx,r13d 3918 xor edi,r9d 3919 shrd r14d,r14d,2 3920 add r11d,edx 3921 add edx,edi 3922 mov r13d,r11d 3923 add r14d,edx 3924 shrd r13d,r13d,14 3925 mov edx,r14d 3926 mov r12d,eax 3927 shrd r14d,r14d,9 3928 xor r13d,r11d 3929 xor r12d,ebx 3930 shrd r13d,r13d,5 3931 xor r14d,edx 3932 and r12d,r11d 3933 xor r13d,r11d 3934 add ecx,DWORD[20+rsp] 3935 mov edi,edx 3936 xor r12d,ebx 3937 shrd r14d,r14d,11 3938 xor edi,r8d 3939 add ecx,r12d 3940 shrd r13d,r13d,6 3941 and r15d,edi 3942 xor r14d,edx 3943 add ecx,r13d 3944 xor r15d,r8d 3945 shrd r14d,r14d,2 3946 add r10d,ecx 3947 add ecx,r15d 3948 mov r13d,r10d 3949 add r14d,ecx 3950 shrd r13d,r13d,14 3951 mov ecx,r14d 3952 mov r12d,r11d 3953 shrd r14d,r14d,9 3954 xor r13d,r10d 3955 xor r12d,eax 3956 shrd r13d,r13d,5 3957 xor r14d,ecx 3958 and r12d,r10d 3959 xor r13d,r10d 3960 add ebx,DWORD[24+rsp] 3961 mov r15d,ecx 3962 xor r12d,eax 3963 shrd r14d,r14d,11 3964 xor r15d,edx 3965 add ebx,r12d 3966 shrd r13d,r13d,6 3967 and edi,r15d 3968 xor r14d,ecx 3969 add ebx,r13d 3970 xor edi,edx 3971 shrd r14d,r14d,2 3972 add r9d,ebx 3973 add ebx,edi 3974 mov r13d,r9d 3975 add r14d,ebx 3976 shrd r13d,r13d,14 3977 mov ebx,r14d 3978 mov r12d,r10d 3979 shrd r14d,r14d,9 3980 xor r13d,r9d 3981 xor r12d,r11d 3982 shrd r13d,r13d,5 3983 xor r14d,ebx 3984 and r12d,r9d 3985 xor r13d,r9d 3986 add eax,DWORD[28+rsp] 3987 mov edi,ebx 3988 xor r12d,r11d 3989 shrd r14d,r14d,11 3990 xor edi,ecx 3991 add eax,r12d 3992 shrd r13d,r13d,6 3993 and r15d,edi 3994 xor r14d,ebx 3995 add eax,r13d 3996 xor r15d,ecx 3997 shrd r14d,r14d,2 3998 add r8d,eax 3999 add eax,r15d 4000 mov r13d,r8d 4001 add r14d,eax 4002 shrd r13d,r13d,14 4003 mov eax,r14d 4004 mov r12d,r9d 4005 shrd r14d,r14d,9 4006 xor r13d,r8d 4007 xor r12d,r10d 4008 shrd r13d,r13d,5 4009 xor r14d,eax 4010 and r12d,r8d 4011 xor r13d,r8d 4012 add r11d,DWORD[32+rsp] 4013 mov r15d,eax 4014 xor r12d,r10d 4015 shrd r14d,r14d,11 4016 xor r15d,ebx 4017 add r11d,r12d 4018 shrd r13d,r13d,6 4019 and edi,r15d 4020 xor r14d,eax 4021 add r11d,r13d 4022 xor edi,ebx 4023 shrd r14d,r14d,2 4024 add edx,r11d 4025 add r11d,edi 4026 mov r13d,edx 4027 add r14d,r11d 4028 shrd r13d,r13d,14 4029 mov r11d,r14d 4030 mov r12d,r8d 4031 shrd r14d,r14d,9 4032 xor r13d,edx 4033 xor r12d,r9d 4034 shrd r13d,r13d,5 4035 xor r14d,r11d 4036 and r12d,edx 4037 xor r13d,edx 4038 add r10d,DWORD[36+rsp] 4039 mov edi,r11d 4040 xor r12d,r9d 4041 shrd r14d,r14d,11 4042 xor edi,eax 4043 add r10d,r12d 4044 shrd r13d,r13d,6 4045 and r15d,edi 4046 xor r14d,r11d 4047 add r10d,r13d 4048 xor r15d,eax 4049 shrd r14d,r14d,2 4050 add ecx,r10d 4051 add r10d,r15d 4052 mov r13d,ecx 4053 add r14d,r10d 4054 shrd r13d,r13d,14 4055 mov r10d,r14d 4056 mov r12d,edx 4057 shrd r14d,r14d,9 4058 xor r13d,ecx 4059 xor r12d,r8d 4060 shrd r13d,r13d,5 4061 xor r14d,r10d 4062 and r12d,ecx 4063 xor r13d,ecx 4064 add r9d,DWORD[40+rsp] 4065 mov r15d,r10d 4066 xor r12d,r8d 4067 shrd r14d,r14d,11 4068 xor r15d,r11d 4069 add r9d,r12d 4070 shrd r13d,r13d,6 4071 and edi,r15d 4072 xor r14d,r10d 4073 add r9d,r13d 4074 xor edi,r11d 4075 shrd r14d,r14d,2 4076 add ebx,r9d 4077 add r9d,edi 4078 mov r13d,ebx 4079 add r14d,r9d 4080 shrd r13d,r13d,14 4081 mov r9d,r14d 4082 mov r12d,ecx 4083 shrd r14d,r14d,9 4084 xor r13d,ebx 4085 xor r12d,edx 4086 shrd r13d,r13d,5 4087 xor r14d,r9d 4088 and r12d,ebx 4089 xor r13d,ebx 4090 add r8d,DWORD[44+rsp] 4091 mov edi,r9d 4092 xor r12d,edx 4093 shrd r14d,r14d,11 4094 xor edi,r10d 4095 add r8d,r12d 4096 shrd r13d,r13d,6 4097 and r15d,edi 4098 xor r14d,r9d 4099 add r8d,r13d 4100 xor r15d,r10d 4101 shrd r14d,r14d,2 4102 add eax,r8d 4103 add r8d,r15d 4104 mov r13d,eax 4105 add r14d,r8d 4106 shrd r13d,r13d,14 4107 mov r8d,r14d 4108 mov r12d,ebx 4109 shrd r14d,r14d,9 4110 xor r13d,eax 4111 xor r12d,ecx 4112 shrd r13d,r13d,5 4113 xor r14d,r8d 4114 and r12d,eax 4115 xor r13d,eax 4116 add edx,DWORD[48+rsp] 4117 mov r15d,r8d 4118 xor r12d,ecx 4119 shrd r14d,r14d,11 4120 xor r15d,r9d 4121 add edx,r12d 4122 shrd r13d,r13d,6 4123 and edi,r15d 4124 xor r14d,r8d 4125 add edx,r13d 4126 xor edi,r9d 4127 shrd r14d,r14d,2 4128 add r11d,edx 4129 add edx,edi 4130 mov r13d,r11d 4131 add r14d,edx 4132 shrd r13d,r13d,14 4133 mov edx,r14d 4134 mov r12d,eax 4135 shrd r14d,r14d,9 4136 xor r13d,r11d 4137 xor r12d,ebx 4138 shrd r13d,r13d,5 4139 xor r14d,edx 4140 and r12d,r11d 4141 xor r13d,r11d 4142 add ecx,DWORD[52+rsp] 4143 mov edi,edx 4144 xor r12d,ebx 4145 shrd r14d,r14d,11 4146 xor edi,r8d 4147 add ecx,r12d 4148 shrd r13d,r13d,6 4149 and r15d,edi 4150 xor r14d,edx 4151 add ecx,r13d 4152 xor r15d,r8d 4153 shrd r14d,r14d,2 4154 add r10d,ecx 4155 add ecx,r15d 4156 mov r13d,r10d 4157 add r14d,ecx 4158 shrd r13d,r13d,14 4159 mov ecx,r14d 4160 mov r12d,r11d 4161 shrd r14d,r14d,9 4162 xor r13d,r10d 4163 xor r12d,eax 4164 shrd r13d,r13d,5 4165 xor r14d,ecx 4166 and r12d,r10d 4167 xor r13d,r10d 4168 add ebx,DWORD[56+rsp] 4169 mov r15d,ecx 4170 xor r12d,eax 4171 shrd r14d,r14d,11 4172 xor r15d,edx 4173 add ebx,r12d 4174 shrd r13d,r13d,6 4175 and edi,r15d 4176 xor r14d,ecx 4177 add ebx,r13d 4178 xor edi,edx 4179 shrd r14d,r14d,2 4180 add r9d,ebx 4181 add ebx,edi 4182 mov r13d,r9d 4183 add r14d,ebx 4184 shrd r13d,r13d,14 4185 mov ebx,r14d 4186 mov r12d,r10d 4187 shrd r14d,r14d,9 4188 xor r13d,r9d 4189 xor r12d,r11d 4190 shrd r13d,r13d,5 4191 xor r14d,ebx 4192 and r12d,r9d 4193 xor r13d,r9d 4194 add eax,DWORD[60+rsp] 4195 mov edi,ebx 4196 xor r12d,r11d 4197 shrd r14d,r14d,11 4198 xor edi,ecx 4199 add eax,r12d 4200 shrd r13d,r13d,6 4201 and r15d,edi 4202 xor r14d,ebx 4203 add eax,r13d 4204 xor r15d,ecx 4205 shrd r14d,r14d,2 4206 add r8d,eax 4207 add eax,r15d 4208 mov r13d,r8d 4209 add r14d,eax 4210 mov rdi,QWORD[((64+0))+rsp] 4211 mov eax,r14d 4212 4213 add eax,DWORD[rdi] 4214 lea rsi,[64+rsi] 4215 add ebx,DWORD[4+rdi] 4216 add ecx,DWORD[8+rdi] 4217 add edx,DWORD[12+rdi] 4218 add r8d,DWORD[16+rdi] 4219 add r9d,DWORD[20+rdi] 4220 add r10d,DWORD[24+rdi] 4221 add r11d,DWORD[28+rdi] 4222 4223 cmp rsi,QWORD[((64+16))+rsp] 4224 4225 mov DWORD[rdi],eax 4226 mov DWORD[4+rdi],ebx 4227 mov DWORD[8+rdi],ecx 4228 mov DWORD[12+rdi],edx 4229 mov DWORD[16+rdi],r8d 4230 mov DWORD[20+rdi],r9d 4231 mov DWORD[24+rdi],r10d 4232 mov DWORD[28+rdi],r11d 4233 jb NEAR $L$loop_avx 4234 4235 mov rsi,QWORD[88+rsp] 4236 4237 vzeroupper 4238 movaps xmm6,XMMWORD[((64+32))+rsp] 4239 movaps xmm7,XMMWORD[((64+48))+rsp] 4240 movaps xmm8,XMMWORD[((64+64))+rsp] 4241 movaps xmm9,XMMWORD[((64+80))+rsp] 4242 mov r15,QWORD[((-48))+rsi] 4243 4244 mov r14,QWORD[((-40))+rsi] 4245 4246 mov r13,QWORD[((-32))+rsi] 4247 4248 mov r12,QWORD[((-24))+rsi] 4249 4250 mov rbp,QWORD[((-16))+rsi] 4251 4252 mov rbx,QWORD[((-8))+rsi] 4253 4254 lea rsp,[rsi] 4255 4256$L$epilogue_avx: 4257 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 4258 mov rsi,QWORD[16+rsp] 4259 ret 4260 4261$L$SEH_end_sha256_block_data_order_avx: 4262EXTERN __imp_RtlVirtualUnwind 4263 4264ALIGN 16 4265se_handler: 4266 push rsi 4267 push rdi 4268 push rbx 4269 push rbp 4270 push r12 4271 push r13 4272 push r14 4273 push r15 4274 pushfq 4275 sub rsp,64 4276 4277 mov rax,QWORD[120+r8] 4278 mov rbx,QWORD[248+r8] 4279 4280 mov rsi,QWORD[8+r9] 4281 mov r11,QWORD[56+r9] 4282 4283 mov r10d,DWORD[r11] 4284 lea r10,[r10*1+rsi] 4285 cmp rbx,r10 4286 jb NEAR $L$in_prologue 4287 4288 mov rax,QWORD[152+r8] 4289 4290 mov r10d,DWORD[4+r11] 4291 lea r10,[r10*1+rsi] 4292 cmp rbx,r10 4293 jae NEAR $L$in_prologue 4294 mov rsi,rax 4295 mov rax,QWORD[((64+24))+rax] 4296 4297 mov rbx,QWORD[((-8))+rax] 4298 mov rbp,QWORD[((-16))+rax] 4299 mov r12,QWORD[((-24))+rax] 4300 mov r13,QWORD[((-32))+rax] 4301 mov r14,QWORD[((-40))+rax] 4302 mov r15,QWORD[((-48))+rax] 4303 mov QWORD[144+r8],rbx 4304 mov QWORD[160+r8],rbp 4305 mov QWORD[216+r8],r12 4306 mov QWORD[224+r8],r13 4307 mov QWORD[232+r8],r14 4308 mov QWORD[240+r8],r15 4309 4310 lea r10,[$L$epilogue] 4311 cmp rbx,r10 4312 jb NEAR $L$in_prologue 4313 4314 lea rsi,[((64+32))+rsi] 4315 lea rdi,[512+r8] 4316 mov ecx,8 4317 DD 0xa548f3fc 4318 4319$L$in_prologue: 4320 mov rdi,QWORD[8+rax] 4321 mov rsi,QWORD[16+rax] 4322 mov QWORD[152+r8],rax 4323 mov QWORD[168+r8],rsi 4324 mov QWORD[176+r8],rdi 4325 4326 mov rdi,QWORD[40+r9] 4327 mov rsi,r8 4328 mov ecx,154 4329 DD 0xa548f3fc 4330 4331 mov rsi,r9 4332 xor rcx,rcx 4333 mov rdx,QWORD[8+rsi] 4334 mov r8,QWORD[rsi] 4335 mov r9,QWORD[16+rsi] 4336 mov r10,QWORD[40+rsi] 4337 lea r11,[56+rsi] 4338 lea r12,[24+rsi] 4339 mov QWORD[32+rsp],r10 4340 mov QWORD[40+rsp],r11 4341 mov QWORD[48+rsp],r12 4342 mov QWORD[56+rsp],rcx 4343 call QWORD[__imp_RtlVirtualUnwind] 4344 4345 mov eax,1 4346 add rsp,64 4347 popfq 4348 pop r15 4349 pop r14 4350 pop r13 4351 pop r12 4352 pop rbp 4353 pop rbx 4354 pop rdi 4355 pop rsi 4356 ret 4357 4358 4359ALIGN 16 4360shaext_handler: 4361 push rsi 4362 push rdi 4363 push rbx 4364 push rbp 4365 push r12 4366 push r13 4367 push r14 4368 push r15 4369 pushfq 4370 sub rsp,64 4371 4372 mov rax,QWORD[120+r8] 4373 mov rbx,QWORD[248+r8] 4374 4375 lea r10,[$L$prologue_shaext] 4376 cmp rbx,r10 4377 jb NEAR $L$in_prologue 4378 4379 lea r10,[$L$epilogue_shaext] 4380 cmp rbx,r10 4381 jae NEAR $L$in_prologue 4382 4383 lea rsi,[((-8-80))+rax] 4384 lea rdi,[512+r8] 4385 mov ecx,10 4386 DD 0xa548f3fc 4387 4388 jmp NEAR $L$in_prologue 4389 4390section .pdata rdata align=4 4391ALIGN 4 4392 DD $L$SEH_begin_sha256_block_data_order wrt ..imagebase 4393 DD $L$SEH_end_sha256_block_data_order wrt ..imagebase 4394 DD $L$SEH_info_sha256_block_data_order wrt ..imagebase 4395 DD $L$SEH_begin_sha256_block_data_order_shaext wrt ..imagebase 4396 DD $L$SEH_end_sha256_block_data_order_shaext wrt ..imagebase 4397 DD $L$SEH_info_sha256_block_data_order_shaext wrt ..imagebase 4398 DD $L$SEH_begin_sha256_block_data_order_ssse3 wrt ..imagebase 4399 DD $L$SEH_end_sha256_block_data_order_ssse3 wrt ..imagebase 4400 DD $L$SEH_info_sha256_block_data_order_ssse3 wrt ..imagebase 4401 DD $L$SEH_begin_sha256_block_data_order_avx wrt ..imagebase 4402 DD $L$SEH_end_sha256_block_data_order_avx wrt ..imagebase 4403 DD $L$SEH_info_sha256_block_data_order_avx wrt ..imagebase 4404section .xdata rdata align=8 4405ALIGN 8 4406$L$SEH_info_sha256_block_data_order: 4407 DB 9,0,0,0 4408 DD se_handler wrt ..imagebase 4409 DD $L$prologue wrt ..imagebase,$L$epilogue wrt ..imagebase 4410$L$SEH_info_sha256_block_data_order_shaext: 4411 DB 9,0,0,0 4412 DD shaext_handler wrt ..imagebase 4413$L$SEH_info_sha256_block_data_order_ssse3: 4414 DB 9,0,0,0 4415 DD se_handler wrt ..imagebase 4416 DD $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imagebase 4417$L$SEH_info_sha256_block_data_order_avx: 4418 DB 9,0,0,0 4419 DD se_handler wrt ..imagebase 4420 DD $L$prologue_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase 4421%else 4422; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 4423ret 4424%endif 4425