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