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 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31ALIGN 16 32_vpaes_encrypt_core: 33 34 mov r9,rdx 35 mov r11,16 36 mov eax,DWORD[240+rdx] 37 movdqa xmm1,xmm9 38 movdqa xmm2,XMMWORD[$L$k_ipt] 39 pandn xmm1,xmm0 40 movdqu xmm5,XMMWORD[r9] 41 psrld xmm1,4 42 pand xmm0,xmm9 43DB 102,15,56,0,208 44 movdqa xmm0,XMMWORD[(($L$k_ipt+16))] 45DB 102,15,56,0,193 46 pxor xmm2,xmm5 47 add r9,16 48 pxor xmm0,xmm2 49 lea r10,[$L$k_mc_backward] 50 jmp NEAR $L$enc_entry 51 52ALIGN 16 53$L$enc_loop: 54 55 movdqa xmm4,xmm13 56 movdqa xmm0,xmm12 57DB 102,15,56,0,226 58DB 102,15,56,0,195 59 pxor xmm4,xmm5 60 movdqa xmm5,xmm15 61 pxor xmm0,xmm4 62 movdqa xmm1,XMMWORD[((-64))+r10*1+r11] 63DB 102,15,56,0,234 64 movdqa xmm4,XMMWORD[r10*1+r11] 65 movdqa xmm2,xmm14 66DB 102,15,56,0,211 67 movdqa xmm3,xmm0 68 pxor xmm2,xmm5 69DB 102,15,56,0,193 70 add r9,16 71 pxor xmm0,xmm2 72DB 102,15,56,0,220 73 add r11,16 74 pxor xmm3,xmm0 75DB 102,15,56,0,193 76 and r11,0x30 77 sub rax,1 78 pxor xmm0,xmm3 79 80$L$enc_entry: 81 82 movdqa xmm1,xmm9 83 movdqa xmm5,xmm11 84 pandn xmm1,xmm0 85 psrld xmm1,4 86 pand xmm0,xmm9 87DB 102,15,56,0,232 88 movdqa xmm3,xmm10 89 pxor xmm0,xmm1 90DB 102,15,56,0,217 91 movdqa xmm4,xmm10 92 pxor xmm3,xmm5 93DB 102,15,56,0,224 94 movdqa xmm2,xmm10 95 pxor xmm4,xmm5 96DB 102,15,56,0,211 97 movdqa xmm3,xmm10 98 pxor xmm2,xmm0 99DB 102,15,56,0,220 100 movdqu xmm5,XMMWORD[r9] 101 pxor xmm3,xmm1 102 jnz NEAR $L$enc_loop 103 104 105 movdqa xmm4,XMMWORD[((-96))+r10] 106 movdqa xmm0,XMMWORD[((-80))+r10] 107DB 102,15,56,0,226 108 pxor xmm4,xmm5 109DB 102,15,56,0,195 110 movdqa xmm1,XMMWORD[64+r10*1+r11] 111 pxor xmm0,xmm4 112DB 102,15,56,0,193 113 ret 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147ALIGN 16 148_vpaes_encrypt_core_2x: 149 150 mov r9,rdx 151 mov r11,16 152 mov eax,DWORD[240+rdx] 153 movdqa xmm1,xmm9 154 movdqa xmm7,xmm9 155 movdqa xmm2,XMMWORD[$L$k_ipt] 156 movdqa xmm8,xmm2 157 pandn xmm1,xmm0 158 pandn xmm7,xmm6 159 movdqu xmm5,XMMWORD[r9] 160 161 psrld xmm1,4 162 psrld xmm7,4 163 pand xmm0,xmm9 164 pand xmm6,xmm9 165DB 102,15,56,0,208 166DB 102,68,15,56,0,198 167 movdqa xmm0,XMMWORD[(($L$k_ipt+16))] 168 movdqa xmm6,xmm0 169DB 102,15,56,0,193 170DB 102,15,56,0,247 171 pxor xmm2,xmm5 172 pxor xmm8,xmm5 173 add r9,16 174 pxor xmm0,xmm2 175 pxor xmm6,xmm8 176 lea r10,[$L$k_mc_backward] 177 jmp NEAR $L$enc2x_entry 178 179ALIGN 16 180$L$enc2x_loop: 181 182 movdqa xmm4,XMMWORD[$L$k_sb1] 183 movdqa xmm0,XMMWORD[(($L$k_sb1+16))] 184 movdqa xmm12,xmm4 185 movdqa xmm6,xmm0 186DB 102,15,56,0,226 187DB 102,69,15,56,0,224 188DB 102,15,56,0,195 189DB 102,65,15,56,0,243 190 pxor xmm4,xmm5 191 pxor xmm12,xmm5 192 movdqa xmm5,XMMWORD[$L$k_sb2] 193 movdqa xmm13,xmm5 194 pxor xmm0,xmm4 195 pxor xmm6,xmm12 196 movdqa xmm1,XMMWORD[((-64))+r10*1+r11] 197 198DB 102,15,56,0,234 199DB 102,69,15,56,0,232 200 movdqa xmm4,XMMWORD[r10*1+r11] 201 202 movdqa xmm2,XMMWORD[(($L$k_sb2+16))] 203 movdqa xmm8,xmm2 204DB 102,15,56,0,211 205DB 102,69,15,56,0,195 206 movdqa xmm3,xmm0 207 movdqa xmm11,xmm6 208 pxor xmm2,xmm5 209 pxor xmm8,xmm13 210DB 102,15,56,0,193 211DB 102,15,56,0,241 212 add r9,16 213 pxor xmm0,xmm2 214 pxor xmm6,xmm8 215DB 102,15,56,0,220 216DB 102,68,15,56,0,220 217 add r11,16 218 pxor xmm3,xmm0 219 pxor xmm11,xmm6 220DB 102,15,56,0,193 221DB 102,15,56,0,241 222 and r11,0x30 223 sub rax,1 224 pxor xmm0,xmm3 225 pxor xmm6,xmm11 226 227$L$enc2x_entry: 228 229 movdqa xmm1,xmm9 230 movdqa xmm7,xmm9 231 movdqa xmm5,XMMWORD[(($L$k_inv+16))] 232 movdqa xmm13,xmm5 233 pandn xmm1,xmm0 234 pandn xmm7,xmm6 235 psrld xmm1,4 236 psrld xmm7,4 237 pand xmm0,xmm9 238 pand xmm6,xmm9 239DB 102,15,56,0,232 240DB 102,68,15,56,0,238 241 movdqa xmm3,xmm10 242 movdqa xmm11,xmm10 243 pxor xmm0,xmm1 244 pxor xmm6,xmm7 245DB 102,15,56,0,217 246DB 102,68,15,56,0,223 247 movdqa xmm4,xmm10 248 movdqa xmm12,xmm10 249 pxor xmm3,xmm5 250 pxor xmm11,xmm13 251DB 102,15,56,0,224 252DB 102,68,15,56,0,230 253 movdqa xmm2,xmm10 254 movdqa xmm8,xmm10 255 pxor xmm4,xmm5 256 pxor xmm12,xmm13 257DB 102,15,56,0,211 258DB 102,69,15,56,0,195 259 movdqa xmm3,xmm10 260 movdqa xmm11,xmm10 261 pxor xmm2,xmm0 262 pxor xmm8,xmm6 263DB 102,15,56,0,220 264DB 102,69,15,56,0,220 265 movdqu xmm5,XMMWORD[r9] 266 267 pxor xmm3,xmm1 268 pxor xmm11,xmm7 269 jnz NEAR $L$enc2x_loop 270 271 272 movdqa xmm4,XMMWORD[((-96))+r10] 273 movdqa xmm0,XMMWORD[((-80))+r10] 274 movdqa xmm12,xmm4 275 movdqa xmm6,xmm0 276DB 102,15,56,0,226 277DB 102,69,15,56,0,224 278 pxor xmm4,xmm5 279 pxor xmm12,xmm5 280DB 102,15,56,0,195 281DB 102,65,15,56,0,243 282 movdqa xmm1,XMMWORD[64+r10*1+r11] 283 284 pxor xmm0,xmm4 285 pxor xmm6,xmm12 286DB 102,15,56,0,193 287DB 102,15,56,0,241 288 ret 289 290 291 292 293 294 295 296 297 298ALIGN 16 299_vpaes_schedule_core: 300 301 302 303 304 305 306 call _vpaes_preheat 307 movdqa xmm8,XMMWORD[$L$k_rcon] 308 movdqu xmm0,XMMWORD[rdi] 309 310 311 movdqa xmm3,xmm0 312 lea r11,[$L$k_ipt] 313 call _vpaes_schedule_transform 314 movdqa xmm7,xmm0 315 316 lea r10,[$L$k_sr] 317 318 319 movdqu XMMWORD[rdx],xmm0 320 321$L$schedule_go: 322 cmp esi,192 323 ja NEAR $L$schedule_256 324 325 326 327 328 329 330 331 332 333 334 335$L$schedule_128: 336 mov esi,10 337 338$L$oop_schedule_128: 339 call _vpaes_schedule_round 340 dec rsi 341 jz NEAR $L$schedule_mangle_last 342 call _vpaes_schedule_mangle 343 jmp NEAR $L$oop_schedule_128 344 345 346 347 348 349 350 351 352 353 354 355ALIGN 16 356$L$schedule_256: 357 movdqu xmm0,XMMWORD[16+rdi] 358 call _vpaes_schedule_transform 359 mov esi,7 360 361$L$oop_schedule_256: 362 call _vpaes_schedule_mangle 363 movdqa xmm6,xmm0 364 365 366 call _vpaes_schedule_round 367 dec rsi 368 jz NEAR $L$schedule_mangle_last 369 call _vpaes_schedule_mangle 370 371 372 pshufd xmm0,xmm0,0xFF 373 movdqa xmm5,xmm7 374 movdqa xmm7,xmm6 375 call _vpaes_schedule_low_round 376 movdqa xmm7,xmm5 377 378 jmp NEAR $L$oop_schedule_256 379 380 381 382 383 384 385 386 387 388 389 390 391ALIGN 16 392$L$schedule_mangle_last: 393 394 lea r11,[$L$k_deskew] 395 396 397 movdqa xmm1,XMMWORD[r10*1+r8] 398DB 102,15,56,0,193 399 lea r11,[$L$k_opt] 400 add rdx,32 401 402$L$schedule_mangle_last_dec: 403 add rdx,-16 404 pxor xmm0,XMMWORD[$L$k_s63] 405 call _vpaes_schedule_transform 406 movdqu XMMWORD[rdx],xmm0 407 408 409 pxor xmm0,xmm0 410 pxor xmm1,xmm1 411 pxor xmm2,xmm2 412 pxor xmm3,xmm3 413 pxor xmm4,xmm4 414 pxor xmm5,xmm5 415 pxor xmm6,xmm6 416 pxor xmm7,xmm7 417 ret 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440ALIGN 16 441_vpaes_schedule_round: 442 443 444 pxor xmm1,xmm1 445DB 102,65,15,58,15,200,15 446DB 102,69,15,58,15,192,15 447 pxor xmm7,xmm1 448 449 450 pshufd xmm0,xmm0,0xFF 451DB 102,15,58,15,192,1 452 453 454 455 456_vpaes_schedule_low_round: 457 458 movdqa xmm1,xmm7 459 pslldq xmm7,4 460 pxor xmm7,xmm1 461 movdqa xmm1,xmm7 462 pslldq xmm7,8 463 pxor xmm7,xmm1 464 pxor xmm7,XMMWORD[$L$k_s63] 465 466 467 movdqa xmm1,xmm9 468 pandn xmm1,xmm0 469 psrld xmm1,4 470 pand xmm0,xmm9 471 movdqa xmm2,xmm11 472DB 102,15,56,0,208 473 pxor xmm0,xmm1 474 movdqa xmm3,xmm10 475DB 102,15,56,0,217 476 pxor xmm3,xmm2 477 movdqa xmm4,xmm10 478DB 102,15,56,0,224 479 pxor xmm4,xmm2 480 movdqa xmm2,xmm10 481DB 102,15,56,0,211 482 pxor xmm2,xmm0 483 movdqa xmm3,xmm10 484DB 102,15,56,0,220 485 pxor xmm3,xmm1 486 movdqa xmm4,xmm13 487DB 102,15,56,0,226 488 movdqa xmm0,xmm12 489DB 102,15,56,0,195 490 pxor xmm0,xmm4 491 492 493 pxor xmm0,xmm7 494 movdqa xmm7,xmm0 495 ret 496 497 498 499 500 501 502 503 504 505 506 507 508 509ALIGN 16 510_vpaes_schedule_transform: 511 512 movdqa xmm1,xmm9 513 pandn xmm1,xmm0 514 psrld xmm1,4 515 pand xmm0,xmm9 516 movdqa xmm2,XMMWORD[r11] 517DB 102,15,56,0,208 518 movdqa xmm0,XMMWORD[16+r11] 519DB 102,15,56,0,193 520 pxor xmm0,xmm2 521 ret 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549ALIGN 16 550_vpaes_schedule_mangle: 551 552 movdqa xmm4,xmm0 553 movdqa xmm5,XMMWORD[$L$k_mc_forward] 554 555 556 add rdx,16 557 pxor xmm4,XMMWORD[$L$k_s63] 558DB 102,15,56,0,229 559 movdqa xmm3,xmm4 560DB 102,15,56,0,229 561 pxor xmm3,xmm4 562DB 102,15,56,0,229 563 pxor xmm3,xmm4 564 565$L$schedule_mangle_both: 566 movdqa xmm1,XMMWORD[r10*1+r8] 567DB 102,15,56,0,217 568 add r8,-16 569 and r8,0x30 570 movdqu XMMWORD[rdx],xmm3 571 ret 572 573 574 575 576 577 578global vpaes_set_encrypt_key 579 580ALIGN 16 581vpaes_set_encrypt_key: 582 mov QWORD[8+rsp],rdi ;WIN64 prologue 583 mov QWORD[16+rsp],rsi 584 mov rax,rsp 585$L$SEH_begin_vpaes_set_encrypt_key: 586 mov rdi,rcx 587 mov rsi,rdx 588 mov rdx,r8 589 590 591 592_CET_ENDBR 593%ifdef BORINGSSL_DISPATCH_TEST 594EXTERN BORINGSSL_function_hit 595 mov BYTE[((BORINGSSL_function_hit+5))],1 596%endif 597 598 lea rsp,[((-184))+rsp] 599 movaps XMMWORD[16+rsp],xmm6 600 movaps XMMWORD[32+rsp],xmm7 601 movaps XMMWORD[48+rsp],xmm8 602 movaps XMMWORD[64+rsp],xmm9 603 movaps XMMWORD[80+rsp],xmm10 604 movaps XMMWORD[96+rsp],xmm11 605 movaps XMMWORD[112+rsp],xmm12 606 movaps XMMWORD[128+rsp],xmm13 607 movaps XMMWORD[144+rsp],xmm14 608 movaps XMMWORD[160+rsp],xmm15 609$L$enc_key_body: 610 mov eax,esi 611 shr eax,5 612 add eax,5 613 mov DWORD[240+rdx],eax 614 615 mov ecx,0 616 mov r8d,0x30 617 call _vpaes_schedule_core 618 movaps xmm6,XMMWORD[16+rsp] 619 movaps xmm7,XMMWORD[32+rsp] 620 movaps xmm8,XMMWORD[48+rsp] 621 movaps xmm9,XMMWORD[64+rsp] 622 movaps xmm10,XMMWORD[80+rsp] 623 movaps xmm11,XMMWORD[96+rsp] 624 movaps xmm12,XMMWORD[112+rsp] 625 movaps xmm13,XMMWORD[128+rsp] 626 movaps xmm14,XMMWORD[144+rsp] 627 movaps xmm15,XMMWORD[160+rsp] 628 lea rsp,[184+rsp] 629$L$enc_key_epilogue: 630 xor eax,eax 631 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 632 mov rsi,QWORD[16+rsp] 633 ret 634 635$L$SEH_end_vpaes_set_encrypt_key: 636 637global vpaes_encrypt 638 639ALIGN 16 640vpaes_encrypt: 641 mov QWORD[8+rsp],rdi ;WIN64 prologue 642 mov QWORD[16+rsp],rsi 643 mov rax,rsp 644$L$SEH_begin_vpaes_encrypt: 645 mov rdi,rcx 646 mov rsi,rdx 647 mov rdx,r8 648 649 650 651_CET_ENDBR 652%ifdef BORINGSSL_DISPATCH_TEST 653EXTERN BORINGSSL_function_hit 654 mov BYTE[((BORINGSSL_function_hit+4))],1 655%endif 656 lea rsp,[((-184))+rsp] 657 movaps XMMWORD[16+rsp],xmm6 658 movaps XMMWORD[32+rsp],xmm7 659 movaps XMMWORD[48+rsp],xmm8 660 movaps XMMWORD[64+rsp],xmm9 661 movaps XMMWORD[80+rsp],xmm10 662 movaps XMMWORD[96+rsp],xmm11 663 movaps XMMWORD[112+rsp],xmm12 664 movaps XMMWORD[128+rsp],xmm13 665 movaps XMMWORD[144+rsp],xmm14 666 movaps XMMWORD[160+rsp],xmm15 667$L$enc_body: 668 movdqu xmm0,XMMWORD[rdi] 669 call _vpaes_preheat 670 call _vpaes_encrypt_core 671 movdqu XMMWORD[rsi],xmm0 672 movaps xmm6,XMMWORD[16+rsp] 673 movaps xmm7,XMMWORD[32+rsp] 674 movaps xmm8,XMMWORD[48+rsp] 675 movaps xmm9,XMMWORD[64+rsp] 676 movaps xmm10,XMMWORD[80+rsp] 677 movaps xmm11,XMMWORD[96+rsp] 678 movaps xmm12,XMMWORD[112+rsp] 679 movaps xmm13,XMMWORD[128+rsp] 680 movaps xmm14,XMMWORD[144+rsp] 681 movaps xmm15,XMMWORD[160+rsp] 682 lea rsp,[184+rsp] 683$L$enc_epilogue: 684 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 685 mov rsi,QWORD[16+rsp] 686 ret 687 688$L$SEH_end_vpaes_encrypt: 689global vpaes_ctr32_encrypt_blocks 690 691ALIGN 16 692vpaes_ctr32_encrypt_blocks: 693 mov QWORD[8+rsp],rdi ;WIN64 prologue 694 mov QWORD[16+rsp],rsi 695 mov rax,rsp 696$L$SEH_begin_vpaes_ctr32_encrypt_blocks: 697 mov rdi,rcx 698 mov rsi,rdx 699 mov rdx,r8 700 mov rcx,r9 701 mov r8,QWORD[40+rsp] 702 703 704 705_CET_ENDBR 706 707 xchg rdx,rcx 708 test rcx,rcx 709 jz NEAR $L$ctr32_abort 710 lea rsp,[((-184))+rsp] 711 movaps XMMWORD[16+rsp],xmm6 712 movaps XMMWORD[32+rsp],xmm7 713 movaps XMMWORD[48+rsp],xmm8 714 movaps XMMWORD[64+rsp],xmm9 715 movaps XMMWORD[80+rsp],xmm10 716 movaps XMMWORD[96+rsp],xmm11 717 movaps XMMWORD[112+rsp],xmm12 718 movaps XMMWORD[128+rsp],xmm13 719 movaps XMMWORD[144+rsp],xmm14 720 movaps XMMWORD[160+rsp],xmm15 721$L$ctr32_body: 722 movdqu xmm0,XMMWORD[r8] 723 movdqa xmm8,XMMWORD[$L$ctr_add_one] 724 sub rsi,rdi 725 call _vpaes_preheat 726 movdqa xmm6,xmm0 727 pshufb xmm6,XMMWORD[$L$rev_ctr] 728 729 test rcx,1 730 jz NEAR $L$ctr32_prep_loop 731 732 733 734 movdqu xmm7,XMMWORD[rdi] 735 call _vpaes_encrypt_core 736 pxor xmm0,xmm7 737 paddd xmm6,xmm8 738 movdqu XMMWORD[rdi*1+rsi],xmm0 739 sub rcx,1 740 lea rdi,[16+rdi] 741 jz NEAR $L$ctr32_done 742 743$L$ctr32_prep_loop: 744 745 746 movdqa xmm14,xmm6 747 movdqa xmm15,xmm6 748 paddd xmm15,xmm8 749 750$L$ctr32_loop: 751 movdqa xmm1,XMMWORD[$L$rev_ctr] 752 movdqa xmm0,xmm14 753 movdqa xmm6,xmm15 754DB 102,15,56,0,193 755DB 102,15,56,0,241 756 call _vpaes_encrypt_core_2x 757 movdqu xmm1,XMMWORD[rdi] 758 movdqu xmm2,XMMWORD[16+rdi] 759 movdqa xmm3,XMMWORD[$L$ctr_add_two] 760 pxor xmm0,xmm1 761 pxor xmm6,xmm2 762 paddd xmm14,xmm3 763 paddd xmm15,xmm3 764 movdqu XMMWORD[rdi*1+rsi],xmm0 765 movdqu XMMWORD[16+rdi*1+rsi],xmm6 766 sub rcx,2 767 lea rdi,[32+rdi] 768 jnz NEAR $L$ctr32_loop 769 770$L$ctr32_done: 771 movaps xmm6,XMMWORD[16+rsp] 772 movaps xmm7,XMMWORD[32+rsp] 773 movaps xmm8,XMMWORD[48+rsp] 774 movaps xmm9,XMMWORD[64+rsp] 775 movaps xmm10,XMMWORD[80+rsp] 776 movaps xmm11,XMMWORD[96+rsp] 777 movaps xmm12,XMMWORD[112+rsp] 778 movaps xmm13,XMMWORD[128+rsp] 779 movaps xmm14,XMMWORD[144+rsp] 780 movaps xmm15,XMMWORD[160+rsp] 781 lea rsp,[184+rsp] 782$L$ctr32_epilogue: 783$L$ctr32_abort: 784 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 785 mov rsi,QWORD[16+rsp] 786 ret 787 788$L$SEH_end_vpaes_ctr32_encrypt_blocks: 789 790 791 792 793 794 795 796ALIGN 16 797_vpaes_preheat: 798 799 lea r10,[$L$k_s0F] 800 movdqa xmm10,XMMWORD[((-32))+r10] 801 movdqa xmm11,XMMWORD[((-16))+r10] 802 movdqa xmm9,XMMWORD[r10] 803 movdqa xmm13,XMMWORD[48+r10] 804 movdqa xmm12,XMMWORD[64+r10] 805 movdqa xmm15,XMMWORD[80+r10] 806 movdqa xmm14,XMMWORD[96+r10] 807 ret 808 809 810 811 812 813 814 815 816section .rdata rdata align=8 817ALIGN 64 818_vpaes_consts: 819$L$k_inv: 820 DQ 0x0E05060F0D080180,0x040703090A0B0C02 821 DQ 0x01040A060F0B0780,0x030D0E0C02050809 822 823$L$k_s0F: 824 DQ 0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F 825 826$L$k_ipt: 827 DQ 0xC2B2E8985A2A7000,0xCABAE09052227808 828 DQ 0x4C01307D317C4D00,0xCD80B1FCB0FDCC81 829 830$L$k_sb1: 831 DQ 0xB19BE18FCB503E00,0xA5DF7A6E142AF544 832 DQ 0x3618D415FAE22300,0x3BF7CCC10D2ED9EF 833$L$k_sb2: 834 DQ 0xE27A93C60B712400,0x5EB7E955BC982FCD 835 DQ 0x69EB88400AE12900,0xC2A163C8AB82234A 836$L$k_sbo: 837 DQ 0xD0D26D176FBDC700,0x15AABF7AC502A878 838 DQ 0xCFE474A55FBB6A00,0x8E1E90D1412B35FA 839 840$L$k_mc_forward: 841 DQ 0x0407060500030201,0x0C0F0E0D080B0A09 842 DQ 0x080B0A0904070605,0x000302010C0F0E0D 843 DQ 0x0C0F0E0D080B0A09,0x0407060500030201 844 DQ 0x000302010C0F0E0D,0x080B0A0904070605 845 846$L$k_mc_backward: 847 DQ 0x0605040702010003,0x0E0D0C0F0A09080B 848 DQ 0x020100030E0D0C0F,0x0A09080B06050407 849 DQ 0x0E0D0C0F0A09080B,0x0605040702010003 850 DQ 0x0A09080B06050407,0x020100030E0D0C0F 851 852$L$k_sr: 853 DQ 0x0706050403020100,0x0F0E0D0C0B0A0908 854 DQ 0x030E09040F0A0500,0x0B06010C07020D08 855 DQ 0x0F060D040B020900,0x070E050C030A0108 856 DQ 0x0B0E0104070A0D00,0x0306090C0F020508 857 858$L$k_rcon: 859 DQ 0x1F8391B9AF9DEEB6,0x702A98084D7C7D81 860 861$L$k_s63: 862 DQ 0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B 863 864$L$k_opt: 865 DQ 0xFF9F4929D6B66000,0xF7974121DEBE6808 866 DQ 0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0 867 868$L$k_deskew: 869 DQ 0x07E4A34047A4E300,0x1DFEB95A5DBEF91A 870 DQ 0x5F36B5DC83EA6900,0x2841C2ABF49D1E77 871 872 873$L$rev_ctr: 874 DQ 0x0706050403020100,0x0c0d0e0f0b0a0908 875 876 877$L$ctr_add_one: 878 DQ 0x0000000000000000,0x0000000100000000 879$L$ctr_add_two: 880 DQ 0x0000000000000000,0x0000000200000000 881 882 DB 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 883 DB 111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54 884 DB 52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97 885 DB 109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32 886 DB 85,110,105,118,101,114,115,105,116,121,41,0 887ALIGN 64 888 889section .text 890 891EXTERN __imp_RtlVirtualUnwind 892 893ALIGN 16 894se_handler: 895 push rsi 896 push rdi 897 push rbx 898 push rbp 899 push r12 900 push r13 901 push r14 902 push r15 903 pushfq 904 sub rsp,64 905 906 mov rax,QWORD[120+r8] 907 mov rbx,QWORD[248+r8] 908 909 mov rsi,QWORD[8+r9] 910 mov r11,QWORD[56+r9] 911 912 mov r10d,DWORD[r11] 913 lea r10,[r10*1+rsi] 914 cmp rbx,r10 915 jb NEAR $L$in_prologue 916 917 mov rax,QWORD[152+r8] 918 919 mov r10d,DWORD[4+r11] 920 lea r10,[r10*1+rsi] 921 cmp rbx,r10 922 jae NEAR $L$in_prologue 923 924 lea rsi,[16+rax] 925 lea rdi,[512+r8] 926 mov ecx,20 927 DD 0xa548f3fc 928 lea rax,[184+rax] 929 930$L$in_prologue: 931 mov rdi,QWORD[8+rax] 932 mov rsi,QWORD[16+rax] 933 mov QWORD[152+r8],rax 934 mov QWORD[168+r8],rsi 935 mov QWORD[176+r8],rdi 936 937 mov rdi,QWORD[40+r9] 938 mov rsi,r8 939 mov ecx,154 940 DD 0xa548f3fc 941 942 mov rsi,r9 943 xor rcx,rcx 944 mov rdx,QWORD[8+rsi] 945 mov r8,QWORD[rsi] 946 mov r9,QWORD[16+rsi] 947 mov r10,QWORD[40+rsi] 948 lea r11,[56+rsi] 949 lea r12,[24+rsi] 950 mov QWORD[32+rsp],r10 951 mov QWORD[40+rsp],r11 952 mov QWORD[48+rsp],r12 953 mov QWORD[56+rsp],rcx 954 call QWORD[__imp_RtlVirtualUnwind] 955 956 mov eax,1 957 add rsp,64 958 popfq 959 pop r15 960 pop r14 961 pop r13 962 pop r12 963 pop rbp 964 pop rbx 965 pop rdi 966 pop rsi 967 ret 968 969 970section .pdata rdata align=4 971ALIGN 4 972 DD $L$SEH_begin_vpaes_set_encrypt_key wrt ..imagebase 973 DD $L$SEH_end_vpaes_set_encrypt_key wrt ..imagebase 974 DD $L$SEH_info_vpaes_set_encrypt_key wrt ..imagebase 975 976 DD $L$SEH_begin_vpaes_encrypt wrt ..imagebase 977 DD $L$SEH_end_vpaes_encrypt wrt ..imagebase 978 DD $L$SEH_info_vpaes_encrypt wrt ..imagebase 979 DD $L$SEH_begin_vpaes_ctr32_encrypt_blocks wrt ..imagebase 980 DD $L$SEH_end_vpaes_ctr32_encrypt_blocks wrt ..imagebase 981 DD $L$SEH_info_vpaes_ctr32_encrypt_blocks wrt ..imagebase 982 983section .xdata rdata align=8 984ALIGN 8 985$L$SEH_info_vpaes_set_encrypt_key: 986 DB 9,0,0,0 987 DD se_handler wrt ..imagebase 988 DD $L$enc_key_body wrt ..imagebase,$L$enc_key_epilogue wrt ..imagebase 989$L$SEH_info_vpaes_encrypt: 990 DB 9,0,0,0 991 DD se_handler wrt ..imagebase 992 DD $L$enc_body wrt ..imagebase,$L$enc_epilogue wrt ..imagebase 993$L$SEH_info_vpaes_ctr32_encrypt_blocks: 994 DB 9,0,0,0 995 DD se_handler wrt ..imagebase 996 DD $L$ctr32_body wrt ..imagebase,$L$ctr32_epilogue wrt ..imagebase 997%else 998; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 999ret 1000%endif 1001