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