1 .text 2 .globl _padlock_capability 3 .type _padlock_capability,@function 4 .align 4 5 _padlock_capability: 6 L_padlock_capability_begin: 7 %ifdef __CET__ 8 9 .byte 243,15,30,251 10 %endif 11 12 pushl %ebx 13 pushfl 14 popl %eax 15 movl %eax,%ecx 16 xorl $2097152,%eax 17 pushl %eax 18 popfl 19 pushfl 20 popl %eax 21 xorl %eax,%ecx 22 xorl %eax,%eax 23 btl $21,%ecx 24 jnc L000noluck 25 .byte 0x0f,0xa2 26 xorl %eax,%eax 27 cmpl $0x746e6543,%ebx 28 jne L001zhaoxin 29 cmpl $0x48727561,%edx 30 jne L000noluck 31 cmpl $0x736c7561,%ecx 32 jne L000noluck 33 jmp L002zhaoxinEnd 34 L001zhaoxin: 35 cmpl $0x68532020,%ebx 36 jne L000noluck 37 cmpl $0x68676e61,%edx 38 jne L000noluck 39 cmpl $0x20206961,%ecx 40 jne L000noluck 41 L002zhaoxinEnd: 42 movl $3221225472,%eax 43 .byte 0x0f,0xa2 44 movl %eax,%edx 45 xorl %eax,%eax 46 cmpl $3221225473,%edx 47 jb L000noluck 48 movl $1,%eax 49 .byte 0x0f,0xa2 50 orl $15,%eax 51 xorl %ebx,%ebx 52 andl $4095,%eax 53 cmpl $1791,%eax 54 sete %bl 55 movl $3221225473,%eax 56 pushl %ebx 57 .byte 0x0f,0xa2 58 popl %ebx 59 movl %edx,%eax 60 shll $4,%ebx 61 andl $4294967279,%eax 62 orl %ebx,%eax 63 L000noluck: 64 popl %ebx 65 ret 66 .globl _padlock_key_bswap 67 .type _padlock_key_bswap,@function 68 .align 4 69 _padlock_key_bswap: 70 L_padlock_key_bswap_begin: 71 %ifdef __CET__ 72 73 .byte 243,15,30,251 74 %endif 75 76 movl 4(%esp),%edx 77 movl 240(%edx),%ecx 78 incl %ecx 79 shll $2,%ecx 80 L003bswap_loop: 81 movl (%edx),%eax 82 bswap %eax 83 movl %eax,(%edx) 84 leal 4(%edx),%edx 85 subl $1,%ecx 86 jnz L003bswap_loop 87 ret 88 .globl _padlock_verify_context 89 .type _padlock_verify_context,@function 90 .align 4 91 _padlock_verify_context: 92 L_padlock_verify_context_begin: 93 %ifdef __CET__ 94 95 .byte 243,15,30,251 96 %endif 97 98 movl 4(%esp),%edx 99 leal Lpadlock_saved_context-L004verify_pic_point,%eax 100 pushfl 101 call __padlock_verify_ctx 102 L004verify_pic_point: 103 leal 4(%esp),%esp 104 ret 105 .type __padlock_verify_ctx,@function 106 .align 4 107 __padlock_verify_ctx: 108 %ifdef __CET__ 109 110 .byte 243,15,30,251 111 %endif 112 113 addl (%esp),%eax 114 btl $30,4(%esp) 115 jnc L005verified 116 cmpl (%eax),%edx 117 je L005verified 118 pushfl 119 popfl 120 L005verified: 121 movl %edx,(%eax) 122 ret 123 .globl _padlock_reload_key 124 .type _padlock_reload_key,@function 125 .align 4 126 _padlock_reload_key: 127 L_padlock_reload_key_begin: 128 %ifdef __CET__ 129 130 .byte 243,15,30,251 131 %endif 132 133 pushfl 134 popfl 135 ret 136 .globl _padlock_aes_block 137 .type _padlock_aes_block,@function 138 .align 4 139 _padlock_aes_block: 140 L_padlock_aes_block_begin: 141 %ifdef __CET__ 142 143 .byte 243,15,30,251 144 %endif 145 146 pushl %edi 147 pushl %esi 148 pushl %ebx 149 movl 16(%esp),%edi 150 movl 20(%esp),%esi 151 movl 24(%esp),%edx 152 movl $1,%ecx 153 leal 32(%edx),%ebx 154 leal 16(%edx),%edx 155 .byte 243,15,167,200 156 popl %ebx 157 popl %esi 158 popl %edi 159 ret 160 .globl _padlock_ecb_encrypt 161 .type _padlock_ecb_encrypt,@function 162 .align 4 163 _padlock_ecb_encrypt: 164 L_padlock_ecb_encrypt_begin: 165 %ifdef __CET__ 166 167 .byte 243,15,30,251 168 %endif 169 170 pushl %ebp 171 pushl %ebx 172 pushl %esi 173 pushl %edi 174 movl 20(%esp),%edi 175 movl 24(%esp),%esi 176 movl 28(%esp),%edx 177 movl 32(%esp),%ecx 178 testl $15,%edx 179 jnz L006ecb_abort 180 testl $15,%ecx 181 jnz L006ecb_abort 182 leal Lpadlock_saved_context-L007ecb_pic_point,%eax 183 pushfl 184 cld 185 call __padlock_verify_ctx 186 L007ecb_pic_point: 187 leal 16(%edx),%edx 188 xorl %eax,%eax 189 xorl %ebx,%ebx 190 testl $32,(%edx) 191 jnz L008ecb_aligned 192 testl $15,%edi 193 setz %al 194 testl $15,%esi 195 setz %bl 196 testl %ebx,%eax 197 jnz L008ecb_aligned 198 negl %eax 199 movl $512,%ebx 200 notl %eax 201 leal -24(%esp),%ebp 202 cmpl %ebx,%ecx 203 cmovcl %ecx,%ebx 204 andl %ebx,%eax 205 movl %ecx,%ebx 206 negl %eax 207 andl $511,%ebx 208 leal (%eax,%ebp,1),%esp 209 movl $512,%eax 210 cmovzl %eax,%ebx 211 movl %ebp,%eax 212 andl $-16,%ebp 213 andl $-16,%esp 214 movl %eax,16(%ebp) 215 cmpl %ebx,%ecx 216 ja L009ecb_loop 217 movl %esi,%eax 218 cmpl %esp,%ebp 219 cmovel %edi,%eax 220 addl %ecx,%eax 221 negl %eax 222 andl $4095,%eax 223 cmpl $128,%eax 224 movl $-128,%eax 225 cmovael %ebx,%eax 226 andl %eax,%ebx 227 jz L010ecb_unaligned_tail 228 jmp L009ecb_loop 229 .align 4,0x90 230 L009ecb_loop: 231 movl %edi,(%ebp) 232 movl %esi,4(%ebp) 233 movl %ecx,8(%ebp) 234 movl %ebx,%ecx 235 movl %ebx,12(%ebp) 236 testl $15,%edi 237 cmovnzl %esp,%edi 238 testl $15,%esi 239 jz L011ecb_inp_aligned 240 shrl $2,%ecx 241 .byte 243,165 242 subl %ebx,%edi 243 movl %ebx,%ecx 244 movl %edi,%esi 245 L011ecb_inp_aligned: 246 leal -16(%edx),%eax 247 leal 16(%edx),%ebx 248 shrl $4,%ecx 249 .byte 243,15,167,200 250 movl (%ebp),%edi 251 movl 12(%ebp),%ebx 252 testl $15,%edi 253 jz L012ecb_out_aligned 254 movl %ebx,%ecx 255 leal (%esp),%esi 256 shrl $2,%ecx 257 .byte 243,165 258 subl %ebx,%edi 259 L012ecb_out_aligned: 260 movl 4(%ebp),%esi 261 movl 8(%ebp),%ecx 262 addl %ebx,%edi 263 addl %ebx,%esi 264 subl %ebx,%ecx 265 movl $512,%ebx 266 jz L013ecb_break 267 cmpl %ebx,%ecx 268 jae L009ecb_loop 269 L010ecb_unaligned_tail: 270 xorl %eax,%eax 271 cmpl %ebp,%esp 272 cmovel %ecx,%eax 273 subl %eax,%esp 274 movl %edi,%eax 275 movl %ecx,%ebx 276 shrl $2,%ecx 277 leal (%esp),%edi 278 .byte 243,165 279 movl %esp,%esi 280 movl %eax,%edi 281 movl %ebx,%ecx 282 jmp L009ecb_loop 283 .align 4,0x90 284 L013ecb_break: 285 cmpl %ebp,%esp 286 je L014ecb_done 287 pxor %xmm0,%xmm0 288 leal (%esp),%eax 289 L015ecb_bzero: 290 movaps %xmm0,(%eax) 291 leal 16(%eax),%eax 292 cmpl %eax,%ebp 293 ja L015ecb_bzero 294 L014ecb_done: 295 movl 16(%ebp),%ebp 296 leal 24(%ebp),%esp 297 jmp L016ecb_exit 298 .align 4,0x90 299 L008ecb_aligned: 300 leal (%esi,%ecx,1),%ebp 301 negl %ebp 302 andl $4095,%ebp 303 xorl %eax,%eax 304 cmpl $128,%ebp 305 movl $127,%ebp 306 cmovael %eax,%ebp 307 andl %ecx,%ebp 308 subl %ebp,%ecx 309 jz L017ecb_aligned_tail 310 leal -16(%edx),%eax 311 leal 16(%edx),%ebx 312 shrl $4,%ecx 313 .byte 243,15,167,200 314 testl %ebp,%ebp 315 jz L016ecb_exit 316 L017ecb_aligned_tail: 317 movl %ebp,%ecx 318 leal -24(%esp),%ebp 319 movl %ebp,%esp 320 movl %ebp,%eax 321 subl %ecx,%esp 322 andl $-16,%ebp 323 andl $-16,%esp 324 movl %eax,16(%ebp) 325 movl %edi,%eax 326 movl %ecx,%ebx 327 shrl $2,%ecx 328 leal (%esp),%edi 329 .byte 243,165 330 movl %esp,%esi 331 movl %eax,%edi 332 movl %ebx,%ecx 333 jmp L009ecb_loop 334 L016ecb_exit: 335 movl $1,%eax 336 leal 4(%esp),%esp 337 L006ecb_abort: 338 popl %edi 339 popl %esi 340 popl %ebx 341 popl %ebp 342 ret 343 .globl _padlock_cbc_encrypt 344 .type _padlock_cbc_encrypt,@function 345 .align 4 346 _padlock_cbc_encrypt: 347 L_padlock_cbc_encrypt_begin: 348 %ifdef __CET__ 349 350 .byte 243,15,30,251 351 %endif 352 353 pushl %ebp 354 pushl %ebx 355 pushl %esi 356 pushl %edi 357 movl 20(%esp),%edi 358 movl 24(%esp),%esi 359 movl 28(%esp),%edx 360 movl 32(%esp),%ecx 361 testl $15,%edx 362 jnz L018cbc_abort 363 testl $15,%ecx 364 jnz L018cbc_abort 365 leal Lpadlock_saved_context-L019cbc_pic_point,%eax 366 pushfl 367 cld 368 call __padlock_verify_ctx 369 L019cbc_pic_point: 370 leal 16(%edx),%edx 371 xorl %eax,%eax 372 xorl %ebx,%ebx 373 testl $32,(%edx) 374 jnz L020cbc_aligned 375 testl $15,%edi 376 setz %al 377 testl $15,%esi 378 setz %bl 379 testl %ebx,%eax 380 jnz L020cbc_aligned 381 negl %eax 382 movl $512,%ebx 383 notl %eax 384 leal -24(%esp),%ebp 385 cmpl %ebx,%ecx 386 cmovcl %ecx,%ebx 387 andl %ebx,%eax 388 movl %ecx,%ebx 389 negl %eax 390 andl $511,%ebx 391 leal (%eax,%ebp,1),%esp 392 movl $512,%eax 393 cmovzl %eax,%ebx 394 movl %ebp,%eax 395 andl $-16,%ebp 396 andl $-16,%esp 397 movl %eax,16(%ebp) 398 cmpl %ebx,%ecx 399 ja L021cbc_loop 400 movl %esi,%eax 401 cmpl %esp,%ebp 402 cmovel %edi,%eax 403 addl %ecx,%eax 404 negl %eax 405 andl $4095,%eax 406 cmpl $64,%eax 407 movl $-64,%eax 408 cmovael %ebx,%eax 409 andl %eax,%ebx 410 jz L022cbc_unaligned_tail 411 jmp L021cbc_loop 412 .align 4,0x90 413 L021cbc_loop: 414 movl %edi,(%ebp) 415 movl %esi,4(%ebp) 416 movl %ecx,8(%ebp) 417 movl %ebx,%ecx 418 movl %ebx,12(%ebp) 419 testl $15,%edi 420 cmovnzl %esp,%edi 421 testl $15,%esi 422 jz L023cbc_inp_aligned 423 shrl $2,%ecx 424 .byte 243,165 425 subl %ebx,%edi 426 movl %ebx,%ecx 427 movl %edi,%esi 428 L023cbc_inp_aligned: 429 leal -16(%edx),%eax 430 leal 16(%edx),%ebx 431 shrl $4,%ecx 432 .byte 243,15,167,208 433 movaps (%eax),%xmm0 434 movaps %xmm0,-16(%edx) 435 movl (%ebp),%edi 436 movl 12(%ebp),%ebx 437 testl $15,%edi 438 jz L024cbc_out_aligned 439 movl %ebx,%ecx 440 leal (%esp),%esi 441 shrl $2,%ecx 442 .byte 243,165 443 subl %ebx,%edi 444 L024cbc_out_aligned: 445 movl 4(%ebp),%esi 446 movl 8(%ebp),%ecx 447 addl %ebx,%edi 448 addl %ebx,%esi 449 subl %ebx,%ecx 450 movl $512,%ebx 451 jz L025cbc_break 452 cmpl %ebx,%ecx 453 jae L021cbc_loop 454 L022cbc_unaligned_tail: 455 xorl %eax,%eax 456 cmpl %ebp,%esp 457 cmovel %ecx,%eax 458 subl %eax,%esp 459 movl %edi,%eax 460 movl %ecx,%ebx 461 shrl $2,%ecx 462 leal (%esp),%edi 463 .byte 243,165 464 movl %esp,%esi 465 movl %eax,%edi 466 movl %ebx,%ecx 467 jmp L021cbc_loop 468 .align 4,0x90 469 L025cbc_break: 470 cmpl %ebp,%esp 471 je L026cbc_done 472 pxor %xmm0,%xmm0 473 leal (%esp),%eax 474 L027cbc_bzero: 475 movaps %xmm0,(%eax) 476 leal 16(%eax),%eax 477 cmpl %eax,%ebp 478 ja L027cbc_bzero 479 L026cbc_done: 480 movl 16(%ebp),%ebp 481 leal 24(%ebp),%esp 482 jmp L028cbc_exit 483 .align 4,0x90 484 L020cbc_aligned: 485 leal (%esi,%ecx,1),%ebp 486 negl %ebp 487 andl $4095,%ebp 488 xorl %eax,%eax 489 cmpl $64,%ebp 490 movl $63,%ebp 491 cmovael %eax,%ebp 492 andl %ecx,%ebp 493 subl %ebp,%ecx 494 jz L029cbc_aligned_tail 495 leal -16(%edx),%eax 496 leal 16(%edx),%ebx 497 shrl $4,%ecx 498 .byte 243,15,167,208 499 movaps (%eax),%xmm0 500 movaps %xmm0,-16(%edx) 501 testl %ebp,%ebp 502 jz L028cbc_exit 503 L029cbc_aligned_tail: 504 movl %ebp,%ecx 505 leal -24(%esp),%ebp 506 movl %ebp,%esp 507 movl %ebp,%eax 508 subl %ecx,%esp 509 andl $-16,%ebp 510 andl $-16,%esp 511 movl %eax,16(%ebp) 512 movl %edi,%eax 513 movl %ecx,%ebx 514 shrl $2,%ecx 515 leal (%esp),%edi 516 .byte 243,165 517 movl %esp,%esi 518 movl %eax,%edi 519 movl %ebx,%ecx 520 jmp L021cbc_loop 521 L028cbc_exit: 522 movl $1,%eax 523 leal 4(%esp),%esp 524 L018cbc_abort: 525 popl %edi 526 popl %esi 527 popl %ebx 528 popl %ebp 529 ret 530 .globl _padlock_cfb_encrypt 531 .type _padlock_cfb_encrypt,@function 532 .align 4 533 _padlock_cfb_encrypt: 534 L_padlock_cfb_encrypt_begin: 535 %ifdef __CET__ 536 537 .byte 243,15,30,251 538 %endif 539 540 pushl %ebp 541 pushl %ebx 542 pushl %esi 543 pushl %edi 544 movl 20(%esp),%edi 545 movl 24(%esp),%esi 546 movl 28(%esp),%edx 547 movl 32(%esp),%ecx 548 testl $15,%edx 549 jnz L030cfb_abort 550 testl $15,%ecx 551 jnz L030cfb_abort 552 leal Lpadlock_saved_context-L031cfb_pic_point,%eax 553 pushfl 554 cld 555 call __padlock_verify_ctx 556 L031cfb_pic_point: 557 leal 16(%edx),%edx 558 xorl %eax,%eax 559 xorl %ebx,%ebx 560 testl $32,(%edx) 561 jnz L032cfb_aligned 562 testl $15,%edi 563 setz %al 564 testl $15,%esi 565 setz %bl 566 testl %ebx,%eax 567 jnz L032cfb_aligned 568 negl %eax 569 movl $512,%ebx 570 notl %eax 571 leal -24(%esp),%ebp 572 cmpl %ebx,%ecx 573 cmovcl %ecx,%ebx 574 andl %ebx,%eax 575 movl %ecx,%ebx 576 negl %eax 577 andl $511,%ebx 578 leal (%eax,%ebp,1),%esp 579 movl $512,%eax 580 cmovzl %eax,%ebx 581 movl %ebp,%eax 582 andl $-16,%ebp 583 andl $-16,%esp 584 movl %eax,16(%ebp) 585 jmp L033cfb_loop 586 .align 4,0x90 587 L033cfb_loop: 588 movl %edi,(%ebp) 589 movl %esi,4(%ebp) 590 movl %ecx,8(%ebp) 591 movl %ebx,%ecx 592 movl %ebx,12(%ebp) 593 testl $15,%edi 594 cmovnzl %esp,%edi 595 testl $15,%esi 596 jz L034cfb_inp_aligned 597 shrl $2,%ecx 598 .byte 243,165 599 subl %ebx,%edi 600 movl %ebx,%ecx 601 movl %edi,%esi 602 L034cfb_inp_aligned: 603 leal -16(%edx),%eax 604 leal 16(%edx),%ebx 605 shrl $4,%ecx 606 .byte 243,15,167,224 607 movaps (%eax),%xmm0 608 movaps %xmm0,-16(%edx) 609 movl (%ebp),%edi 610 movl 12(%ebp),%ebx 611 testl $15,%edi 612 jz L035cfb_out_aligned 613 movl %ebx,%ecx 614 leal (%esp),%esi 615 shrl $2,%ecx 616 .byte 243,165 617 subl %ebx,%edi 618 L035cfb_out_aligned: 619 movl 4(%ebp),%esi 620 movl 8(%ebp),%ecx 621 addl %ebx,%edi 622 addl %ebx,%esi 623 subl %ebx,%ecx 624 movl $512,%ebx 625 jnz L033cfb_loop 626 cmpl %ebp,%esp 627 je L036cfb_done 628 pxor %xmm0,%xmm0 629 leal (%esp),%eax 630 L037cfb_bzero: 631 movaps %xmm0,(%eax) 632 leal 16(%eax),%eax 633 cmpl %eax,%ebp 634 ja L037cfb_bzero 635 L036cfb_done: 636 movl 16(%ebp),%ebp 637 leal 24(%ebp),%esp 638 jmp L038cfb_exit 639 .align 4,0x90 640 L032cfb_aligned: 641 leal -16(%edx),%eax 642 leal 16(%edx),%ebx 643 shrl $4,%ecx 644 .byte 243,15,167,224 645 movaps (%eax),%xmm0 646 movaps %xmm0,-16(%edx) 647 L038cfb_exit: 648 movl $1,%eax 649 leal 4(%esp),%esp 650 L030cfb_abort: 651 popl %edi 652 popl %esi 653 popl %ebx 654 popl %ebp 655 ret 656 .globl _padlock_ofb_encrypt 657 .type _padlock_ofb_encrypt,@function 658 .align 4 659 _padlock_ofb_encrypt: 660 L_padlock_ofb_encrypt_begin: 661 %ifdef __CET__ 662 663 .byte 243,15,30,251 664 %endif 665 666 pushl %ebp 667 pushl %ebx 668 pushl %esi 669 pushl %edi 670 movl 20(%esp),%edi 671 movl 24(%esp),%esi 672 movl 28(%esp),%edx 673 movl 32(%esp),%ecx 674 testl $15,%edx 675 jnz L039ofb_abort 676 testl $15,%ecx 677 jnz L039ofb_abort 678 leal Lpadlock_saved_context-L040ofb_pic_point,%eax 679 pushfl 680 cld 681 call __padlock_verify_ctx 682 L040ofb_pic_point: 683 leal 16(%edx),%edx 684 xorl %eax,%eax 685 xorl %ebx,%ebx 686 testl $32,(%edx) 687 jnz L041ofb_aligned 688 testl $15,%edi 689 setz %al 690 testl $15,%esi 691 setz %bl 692 testl %ebx,%eax 693 jnz L041ofb_aligned 694 negl %eax 695 movl $512,%ebx 696 notl %eax 697 leal -24(%esp),%ebp 698 cmpl %ebx,%ecx 699 cmovcl %ecx,%ebx 700 andl %ebx,%eax 701 movl %ecx,%ebx 702 negl %eax 703 andl $511,%ebx 704 leal (%eax,%ebp,1),%esp 705 movl $512,%eax 706 cmovzl %eax,%ebx 707 movl %ebp,%eax 708 andl $-16,%ebp 709 andl $-16,%esp 710 movl %eax,16(%ebp) 711 jmp L042ofb_loop 712 .align 4,0x90 713 L042ofb_loop: 714 movl %edi,(%ebp) 715 movl %esi,4(%ebp) 716 movl %ecx,8(%ebp) 717 movl %ebx,%ecx 718 movl %ebx,12(%ebp) 719 testl $15,%edi 720 cmovnzl %esp,%edi 721 testl $15,%esi 722 jz L043ofb_inp_aligned 723 shrl $2,%ecx 724 .byte 243,165 725 subl %ebx,%edi 726 movl %ebx,%ecx 727 movl %edi,%esi 728 L043ofb_inp_aligned: 729 leal -16(%edx),%eax 730 leal 16(%edx),%ebx 731 shrl $4,%ecx 732 .byte 243,15,167,232 733 movaps (%eax),%xmm0 734 movaps %xmm0,-16(%edx) 735 movl (%ebp),%edi 736 movl 12(%ebp),%ebx 737 testl $15,%edi 738 jz L044ofb_out_aligned 739 movl %ebx,%ecx 740 leal (%esp),%esi 741 shrl $2,%ecx 742 .byte 243,165 743 subl %ebx,%edi 744 L044ofb_out_aligned: 745 movl 4(%ebp),%esi 746 movl 8(%ebp),%ecx 747 addl %ebx,%edi 748 addl %ebx,%esi 749 subl %ebx,%ecx 750 movl $512,%ebx 751 jnz L042ofb_loop 752 cmpl %ebp,%esp 753 je L045ofb_done 754 pxor %xmm0,%xmm0 755 leal (%esp),%eax 756 L046ofb_bzero: 757 movaps %xmm0,(%eax) 758 leal 16(%eax),%eax 759 cmpl %eax,%ebp 760 ja L046ofb_bzero 761 L045ofb_done: 762 movl 16(%ebp),%ebp 763 leal 24(%ebp),%esp 764 jmp L047ofb_exit 765 .align 4,0x90 766 L041ofb_aligned: 767 leal -16(%edx),%eax 768 leal 16(%edx),%ebx 769 shrl $4,%ecx 770 .byte 243,15,167,232 771 movaps (%eax),%xmm0 772 movaps %xmm0,-16(%edx) 773 L047ofb_exit: 774 movl $1,%eax 775 leal 4(%esp),%esp 776 L039ofb_abort: 777 popl %edi 778 popl %esi 779 popl %ebx 780 popl %ebp 781 ret 782 .globl _padlock_ctr32_encrypt 783 .type _padlock_ctr32_encrypt,@function 784 .align 4 785 _padlock_ctr32_encrypt: 786 L_padlock_ctr32_encrypt_begin: 787 %ifdef __CET__ 788 789 .byte 243,15,30,251 790 %endif 791 792 pushl %ebp 793 pushl %ebx 794 pushl %esi 795 pushl %edi 796 movl 20(%esp),%edi 797 movl 24(%esp),%esi 798 movl 28(%esp),%edx 799 movl 32(%esp),%ecx 800 testl $15,%edx 801 jnz L048ctr32_abort 802 testl $15,%ecx 803 jnz L048ctr32_abort 804 leal Lpadlock_saved_context-L049ctr32_pic_point,%eax 805 pushfl 806 cld 807 call __padlock_verify_ctx 808 L049ctr32_pic_point: 809 leal 16(%edx),%edx 810 xorl %eax,%eax 811 movq -16(%edx),%mm0 812 movl $512,%ebx 813 notl %eax 814 leal -24(%esp),%ebp 815 cmpl %ebx,%ecx 816 cmovcl %ecx,%ebx 817 andl %ebx,%eax 818 movl %ecx,%ebx 819 negl %eax 820 andl $511,%ebx 821 leal (%eax,%ebp,1),%esp 822 movl $512,%eax 823 cmovzl %eax,%ebx 824 movl %ebp,%eax 825 andl $-16,%ebp 826 andl $-16,%esp 827 movl %eax,16(%ebp) 828 jmp L050ctr32_loop 829 .align 4,0x90 830 L050ctr32_loop: 831 movl %edi,(%ebp) 832 movl %esi,4(%ebp) 833 movl %ecx,8(%ebp) 834 movl %ebx,%ecx 835 movl %ebx,12(%ebp) 836 movl -4(%edx),%ecx 837 xorl %edi,%edi 838 movl -8(%edx),%eax 839 L051ctr32_prepare: 840 movl %ecx,12(%esp,%edi,1) 841 bswap %ecx 842 movq %mm0,(%esp,%edi,1) 843 incl %ecx 844 movl %eax,8(%esp,%edi,1) 845 bswap %ecx 846 leal 16(%edi),%edi 847 cmpl %ebx,%edi 848 jb L051ctr32_prepare 849 movl %ecx,-4(%edx) 850 leal (%esp),%esi 851 leal (%esp),%edi 852 movl %ebx,%ecx 853 leal -16(%edx),%eax 854 leal 16(%edx),%ebx 855 shrl $4,%ecx 856 .byte 243,15,167,200 857 movl (%ebp),%edi 858 movl 12(%ebp),%ebx 859 movl 4(%ebp),%esi 860 xorl %ecx,%ecx 861 L052ctr32_xor: 862 movups (%esi,%ecx,1),%xmm1 863 leal 16(%ecx),%ecx 864 pxor -16(%esp,%ecx,1),%xmm1 865 movups %xmm1,-16(%edi,%ecx,1) 866 cmpl %ebx,%ecx 867 jb L052ctr32_xor 868 movl 8(%ebp),%ecx 869 addl %ebx,%edi 870 addl %ebx,%esi 871 subl %ebx,%ecx 872 movl $512,%ebx 873 jnz L050ctr32_loop 874 pxor %xmm0,%xmm0 875 leal (%esp),%eax 876 L053ctr32_bzero: 877 movaps %xmm0,(%eax) 878 leal 16(%eax),%eax 879 cmpl %eax,%ebp 880 ja L053ctr32_bzero 881 L054ctr32_done: 882 movl 16(%ebp),%ebp 883 leal 24(%ebp),%esp 884 movl $1,%eax 885 leal 4(%esp),%esp 886 emms 887 L048ctr32_abort: 888 popl %edi 889 popl %esi 890 popl %ebx 891 popl %ebp 892 ret 893 .globl _padlock_xstore 894 .type _padlock_xstore,@function 895 .align 4 896 _padlock_xstore: 897 L_padlock_xstore_begin: 898 %ifdef __CET__ 899 900 .byte 243,15,30,251 901 %endif 902 903 pushl %edi 904 movl 8(%esp),%edi 905 movl 12(%esp),%edx 906 .byte 15,167,192 907 popl %edi 908 ret 909 .type __win32_segv_handler,@function 910 .align 4 911 __win32_segv_handler: 912 %ifdef __CET__ 913 914 .byte 243,15,30,251 915 %endif 916 917 movl $1,%eax 918 movl 4(%esp),%edx 919 movl 12(%esp),%ecx 920 cmpl $3221225477,(%edx) 921 jne L055ret 922 addl $4,184(%ecx) 923 movl $0,%eax 924 L055ret: 925 ret 926 .globl _padlock_sha1_oneshot 927 .type _padlock_sha1_oneshot,@function 928 .align 4 929 _padlock_sha1_oneshot: 930 L_padlock_sha1_oneshot_begin: 931 %ifdef __CET__ 932 933 .byte 243,15,30,251 934 %endif 935 936 pushl %edi 937 pushl %esi 938 xorl %eax,%eax 939 movl 12(%esp),%edi 940 movl 16(%esp),%esi 941 movl 20(%esp),%ecx 942 movl %esp,%edx 943 addl $-128,%esp 944 movups (%edi),%xmm0 945 andl $-16,%esp 946 movl 16(%edi),%eax 947 movaps %xmm0,(%esp) 948 movl %esp,%edi 949 movl %eax,16(%esp) 950 xorl %eax,%eax 951 .byte 243,15,166,200 952 movaps (%esp),%xmm0 953 movl 16(%esp),%eax 954 movl %edx,%esp 955 movl 12(%esp),%edi 956 movups %xmm0,(%edi) 957 movl %eax,16(%edi) 958 popl %esi 959 popl %edi 960 ret 961 .globl _padlock_sha1_blocks 962 .type _padlock_sha1_blocks,@function 963 .align 4 964 _padlock_sha1_blocks: 965 L_padlock_sha1_blocks_begin: 966 %ifdef __CET__ 967 968 .byte 243,15,30,251 969 %endif 970 971 pushl %edi 972 pushl %esi 973 movl 12(%esp),%edi 974 movl 16(%esp),%esi 975 movl %esp,%edx 976 movl 20(%esp),%ecx 977 addl $-128,%esp 978 movups (%edi),%xmm0 979 andl $-16,%esp 980 movl 16(%edi),%eax 981 movaps %xmm0,(%esp) 982 movl %esp,%edi 983 movl %eax,16(%esp) 984 movl $-1,%eax 985 .byte 243,15,166,200 986 movaps (%esp),%xmm0 987 movl 16(%esp),%eax 988 movl %edx,%esp 989 movl 12(%esp),%edi 990 movups %xmm0,(%edi) 991 movl %eax,16(%edi) 992 popl %esi 993 popl %edi 994 ret 995 .globl _padlock_sha256_oneshot 996 .type _padlock_sha256_oneshot,@function 997 .align 4 998 _padlock_sha256_oneshot: 999 L_padlock_sha256_oneshot_begin: 1000 %ifdef __CET__ 1001 1002 .byte 243,15,30,251 1003 %endif 1004 1005 pushl %edi 1006 pushl %esi 1007 xorl %eax,%eax 1008 movl 12(%esp),%edi 1009 movl 16(%esp),%esi 1010 movl 20(%esp),%ecx 1011 movl %esp,%edx 1012 addl $-128,%esp 1013 movups (%edi),%xmm0 1014 andl $-16,%esp 1015 movups 16(%edi),%xmm1 1016 movaps %xmm0,(%esp) 1017 movl %esp,%edi 1018 movaps %xmm1,16(%esp) 1019 xorl %eax,%eax 1020 .byte 243,15,166,208 1021 movaps (%esp),%xmm0 1022 movaps 16(%esp),%xmm1 1023 movl %edx,%esp 1024 movl 12(%esp),%edi 1025 movups %xmm0,(%edi) 1026 movups %xmm1,16(%edi) 1027 popl %esi 1028 popl %edi 1029 ret 1030 .globl _padlock_sha256_blocks 1031 .type _padlock_sha256_blocks,@function 1032 .align 4 1033 _padlock_sha256_blocks: 1034 L_padlock_sha256_blocks_begin: 1035 %ifdef __CET__ 1036 1037 .byte 243,15,30,251 1038 %endif 1039 1040 pushl %edi 1041 pushl %esi 1042 movl 12(%esp),%edi 1043 movl 16(%esp),%esi 1044 movl 20(%esp),%ecx 1045 movl %esp,%edx 1046 addl $-128,%esp 1047 movups (%edi),%xmm0 1048 andl $-16,%esp 1049 movups 16(%edi),%xmm1 1050 movaps %xmm0,(%esp) 1051 movl %esp,%edi 1052 movaps %xmm1,16(%esp) 1053 movl $-1,%eax 1054 .byte 243,15,166,208 1055 movaps (%esp),%xmm0 1056 movaps 16(%esp),%xmm1 1057 movl %edx,%esp 1058 movl 12(%esp),%edi 1059 movups %xmm0,(%edi) 1060 movups %xmm1,16(%edi) 1061 popl %esi 1062 popl %edi 1063 ret 1064 .globl _padlock_sha512_blocks 1065 .type _padlock_sha512_blocks,@function 1066 .align 4 1067 _padlock_sha512_blocks: 1068 L_padlock_sha512_blocks_begin: 1069 %ifdef __CET__ 1070 1071 .byte 243,15,30,251 1072 %endif 1073 1074 pushl %edi 1075 pushl %esi 1076 movl 12(%esp),%edi 1077 movl 16(%esp),%esi 1078 movl 20(%esp),%ecx 1079 movl %esp,%edx 1080 addl $-128,%esp 1081 movups (%edi),%xmm0 1082 andl $-16,%esp 1083 movups 16(%edi),%xmm1 1084 movups 32(%edi),%xmm2 1085 movups 48(%edi),%xmm3 1086 movaps %xmm0,(%esp) 1087 movl %esp,%edi 1088 movaps %xmm1,16(%esp) 1089 movaps %xmm2,32(%esp) 1090 movaps %xmm3,48(%esp) 1091 .byte 243,15,166,224 1092 movaps (%esp),%xmm0 1093 movaps 16(%esp),%xmm1 1094 movaps 32(%esp),%xmm2 1095 movaps 48(%esp),%xmm3 1096 movl %edx,%esp 1097 movl 12(%esp),%edi 1098 movups %xmm0,(%edi) 1099 movups %xmm1,16(%edi) 1100 movups %xmm2,32(%edi) 1101 movups %xmm3,48(%edi) 1102 popl %esi 1103 popl %edi 1104 ret 1105 .byte 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,32 1106 .byte 109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65 1107 .byte 77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101 1108 .byte 110,115,115,108,46,111,114,103,62,0 1109 .align 4,0x90 1110 .data 1111 .align 2,0x90 1112 Lpadlock_saved_context: 1113 .long 0 1114