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