1/* $FreeBSD$ */ 2/* Do not modify. This file is auto-generated from e_padlock-x86.pl. */ 3#ifdef PIC 4.text 5.globl padlock_capability 6.type padlock_capability,@function 7.align 16 8padlock_capability: 9.L_padlock_capability_begin: 10 pushl %ebx 11 pushfl 12 popl %eax 13 movl %eax,%ecx 14 xorl $2097152,%eax 15 pushl %eax 16 popfl 17 pushfl 18 popl %eax 19 xorl %eax,%ecx 20 xorl %eax,%eax 21 btl $21,%ecx 22 jnc .L000noluck 23 .byte 0x0f,0xa2 24 xorl %eax,%eax 25 cmpl $0x746e6543,%ebx 26 jne .L001zhaoxin 27 cmpl $0x48727561,%edx 28 jne .L000noluck 29 cmpl $0x736c7561,%ecx 30 jne .L000noluck 31 jmp .L002zhaoxinEnd 32.L001zhaoxin: 33 cmpl $0x68532020,%ebx 34 jne .L000noluck 35 cmpl $0x68676e61,%edx 36 jne .L000noluck 37 cmpl $0x20206961,%ecx 38 jne .L000noluck 39.L002zhaoxinEnd: 40 movl $3221225472,%eax 41 .byte 0x0f,0xa2 42 movl %eax,%edx 43 xorl %eax,%eax 44 cmpl $3221225473,%edx 45 jb .L000noluck 46 movl $1,%eax 47 .byte 0x0f,0xa2 48 orl $15,%eax 49 xorl %ebx,%ebx 50 andl $4095,%eax 51 cmpl $1791,%eax 52 sete %bl 53 movl $3221225473,%eax 54 pushl %ebx 55 .byte 0x0f,0xa2 56 popl %ebx 57 movl %edx,%eax 58 shll $4,%ebx 59 andl $4294967279,%eax 60 orl %ebx,%eax 61.L000noluck: 62 popl %ebx 63 ret 64.size padlock_capability,.-.L_padlock_capability_begin 65.globl padlock_key_bswap 66.type padlock_key_bswap,@function 67.align 16 68padlock_key_bswap: 69.L_padlock_key_bswap_begin: 70 movl 4(%esp),%edx 71 movl 240(%edx),%ecx 72 incl %ecx 73 shll $2,%ecx 74.L003bswap_loop: 75 movl (%edx),%eax 76 bswap %eax 77 movl %eax,(%edx) 78 leal 4(%edx),%edx 79 subl $1,%ecx 80 jnz .L003bswap_loop 81 ret 82.size padlock_key_bswap,.-.L_padlock_key_bswap_begin 83.globl padlock_verify_context 84.type padlock_verify_context,@function 85.align 16 86padlock_verify_context: 87.L_padlock_verify_context_begin: 88 movl 4(%esp),%edx 89 leal .Lpadlock_saved_context-.L004verify_pic_point,%eax 90 pushfl 91 call _padlock_verify_ctx 92.L004verify_pic_point: 93 leal 4(%esp),%esp 94 ret 95.size padlock_verify_context,.-.L_padlock_verify_context_begin 96.type _padlock_verify_ctx,@function 97.align 16 98_padlock_verify_ctx: 99 addl (%esp),%eax 100 btl $30,4(%esp) 101 jnc .L005verified 102 cmpl (%eax),%edx 103 je .L005verified 104 pushfl 105 popfl 106.L005verified: 107 movl %edx,(%eax) 108 ret 109.size _padlock_verify_ctx,.-_padlock_verify_ctx 110.globl padlock_reload_key 111.type padlock_reload_key,@function 112.align 16 113padlock_reload_key: 114.L_padlock_reload_key_begin: 115 pushfl 116 popfl 117 ret 118.size padlock_reload_key,.-.L_padlock_reload_key_begin 119.globl padlock_aes_block 120.type padlock_aes_block,@function 121.align 16 122padlock_aes_block: 123.L_padlock_aes_block_begin: 124 pushl %edi 125 pushl %esi 126 pushl %ebx 127 movl 16(%esp),%edi 128 movl 20(%esp),%esi 129 movl 24(%esp),%edx 130 movl $1,%ecx 131 leal 32(%edx),%ebx 132 leal 16(%edx),%edx 133.byte 243,15,167,200 134 popl %ebx 135 popl %esi 136 popl %edi 137 ret 138.size padlock_aes_block,.-.L_padlock_aes_block_begin 139.globl padlock_ecb_encrypt 140.type padlock_ecb_encrypt,@function 141.align 16 142padlock_ecb_encrypt: 143.L_padlock_ecb_encrypt_begin: 144 pushl %ebp 145 pushl %ebx 146 pushl %esi 147 pushl %edi 148 movl 20(%esp),%edi 149 movl 24(%esp),%esi 150 movl 28(%esp),%edx 151 movl 32(%esp),%ecx 152 testl $15,%edx 153 jnz .L006ecb_abort 154 testl $15,%ecx 155 jnz .L006ecb_abort 156 leal .Lpadlock_saved_context-.L007ecb_pic_point,%eax 157 pushfl 158 cld 159 call _padlock_verify_ctx 160.L007ecb_pic_point: 161 leal 16(%edx),%edx 162 xorl %eax,%eax 163 xorl %ebx,%ebx 164 testl $32,(%edx) 165 jnz .L008ecb_aligned 166 testl $15,%edi 167 setz %al 168 testl $15,%esi 169 setz %bl 170 testl %ebx,%eax 171 jnz .L008ecb_aligned 172 negl %eax 173 movl $512,%ebx 174 notl %eax 175 leal -24(%esp),%ebp 176 cmpl %ebx,%ecx 177 cmovcl %ecx,%ebx 178 andl %ebx,%eax 179 movl %ecx,%ebx 180 negl %eax 181 andl $511,%ebx 182 leal (%eax,%ebp,1),%esp 183 movl $512,%eax 184 cmovzl %eax,%ebx 185 movl %ebp,%eax 186 andl $-16,%ebp 187 andl $-16,%esp 188 movl %eax,16(%ebp) 189 cmpl %ebx,%ecx 190 ja .L009ecb_loop 191 movl %esi,%eax 192 cmpl %esp,%ebp 193 cmovel %edi,%eax 194 addl %ecx,%eax 195 negl %eax 196 andl $4095,%eax 197 cmpl $128,%eax 198 movl $-128,%eax 199 cmovael %ebx,%eax 200 andl %eax,%ebx 201 jz .L010ecb_unaligned_tail 202 jmp .L009ecb_loop 203.align 16 204.L009ecb_loop: 205 movl %edi,(%ebp) 206 movl %esi,4(%ebp) 207 movl %ecx,8(%ebp) 208 movl %ebx,%ecx 209 movl %ebx,12(%ebp) 210 testl $15,%edi 211 cmovnzl %esp,%edi 212 testl $15,%esi 213 jz .L011ecb_inp_aligned 214 shrl $2,%ecx 215.byte 243,165 216 subl %ebx,%edi 217 movl %ebx,%ecx 218 movl %edi,%esi 219.L011ecb_inp_aligned: 220 leal -16(%edx),%eax 221 leal 16(%edx),%ebx 222 shrl $4,%ecx 223.byte 243,15,167,200 224 movl (%ebp),%edi 225 movl 12(%ebp),%ebx 226 testl $15,%edi 227 jz .L012ecb_out_aligned 228 movl %ebx,%ecx 229 leal (%esp),%esi 230 shrl $2,%ecx 231.byte 243,165 232 subl %ebx,%edi 233.L012ecb_out_aligned: 234 movl 4(%ebp),%esi 235 movl 8(%ebp),%ecx 236 addl %ebx,%edi 237 addl %ebx,%esi 238 subl %ebx,%ecx 239 movl $512,%ebx 240 jz .L013ecb_break 241 cmpl %ebx,%ecx 242 jae .L009ecb_loop 243.L010ecb_unaligned_tail: 244 xorl %eax,%eax 245 cmpl %ebp,%esp 246 cmovel %ecx,%eax 247 subl %eax,%esp 248 movl %edi,%eax 249 movl %ecx,%ebx 250 shrl $2,%ecx 251 leal (%esp),%edi 252.byte 243,165 253 movl %esp,%esi 254 movl %eax,%edi 255 movl %ebx,%ecx 256 jmp .L009ecb_loop 257.align 16 258.L013ecb_break: 259 cmpl %ebp,%esp 260 je .L014ecb_done 261 pxor %xmm0,%xmm0 262 leal (%esp),%eax 263.L015ecb_bzero: 264 movaps %xmm0,(%eax) 265 leal 16(%eax),%eax 266 cmpl %eax,%ebp 267 ja .L015ecb_bzero 268.L014ecb_done: 269 movl 16(%ebp),%ebp 270 leal 24(%ebp),%esp 271 jmp .L016ecb_exit 272.align 16 273.L008ecb_aligned: 274 leal (%esi,%ecx,1),%ebp 275 negl %ebp 276 andl $4095,%ebp 277 xorl %eax,%eax 278 cmpl $128,%ebp 279 movl $127,%ebp 280 cmovael %eax,%ebp 281 andl %ecx,%ebp 282 subl %ebp,%ecx 283 jz .L017ecb_aligned_tail 284 leal -16(%edx),%eax 285 leal 16(%edx),%ebx 286 shrl $4,%ecx 287.byte 243,15,167,200 288 testl %ebp,%ebp 289 jz .L016ecb_exit 290.L017ecb_aligned_tail: 291 movl %ebp,%ecx 292 leal -24(%esp),%ebp 293 movl %ebp,%esp 294 movl %ebp,%eax 295 subl %ecx,%esp 296 andl $-16,%ebp 297 andl $-16,%esp 298 movl %eax,16(%ebp) 299 movl %edi,%eax 300 movl %ecx,%ebx 301 shrl $2,%ecx 302 leal (%esp),%edi 303.byte 243,165 304 movl %esp,%esi 305 movl %eax,%edi 306 movl %ebx,%ecx 307 jmp .L009ecb_loop 308.L016ecb_exit: 309 movl $1,%eax 310 leal 4(%esp),%esp 311.L006ecb_abort: 312 popl %edi 313 popl %esi 314 popl %ebx 315 popl %ebp 316 ret 317.size padlock_ecb_encrypt,.-.L_padlock_ecb_encrypt_begin 318.globl padlock_cbc_encrypt 319.type padlock_cbc_encrypt,@function 320.align 16 321padlock_cbc_encrypt: 322.L_padlock_cbc_encrypt_begin: 323 pushl %ebp 324 pushl %ebx 325 pushl %esi 326 pushl %edi 327 movl 20(%esp),%edi 328 movl 24(%esp),%esi 329 movl 28(%esp),%edx 330 movl 32(%esp),%ecx 331 testl $15,%edx 332 jnz .L018cbc_abort 333 testl $15,%ecx 334 jnz .L018cbc_abort 335 leal .Lpadlock_saved_context-.L019cbc_pic_point,%eax 336 pushfl 337 cld 338 call _padlock_verify_ctx 339.L019cbc_pic_point: 340 leal 16(%edx),%edx 341 xorl %eax,%eax 342 xorl %ebx,%ebx 343 testl $32,(%edx) 344 jnz .L020cbc_aligned 345 testl $15,%edi 346 setz %al 347 testl $15,%esi 348 setz %bl 349 testl %ebx,%eax 350 jnz .L020cbc_aligned 351 negl %eax 352 movl $512,%ebx 353 notl %eax 354 leal -24(%esp),%ebp 355 cmpl %ebx,%ecx 356 cmovcl %ecx,%ebx 357 andl %ebx,%eax 358 movl %ecx,%ebx 359 negl %eax 360 andl $511,%ebx 361 leal (%eax,%ebp,1),%esp 362 movl $512,%eax 363 cmovzl %eax,%ebx 364 movl %ebp,%eax 365 andl $-16,%ebp 366 andl $-16,%esp 367 movl %eax,16(%ebp) 368 cmpl %ebx,%ecx 369 ja .L021cbc_loop 370 movl %esi,%eax 371 cmpl %esp,%ebp 372 cmovel %edi,%eax 373 addl %ecx,%eax 374 negl %eax 375 andl $4095,%eax 376 cmpl $64,%eax 377 movl $-64,%eax 378 cmovael %ebx,%eax 379 andl %eax,%ebx 380 jz .L022cbc_unaligned_tail 381 jmp .L021cbc_loop 382.align 16 383.L021cbc_loop: 384 movl %edi,(%ebp) 385 movl %esi,4(%ebp) 386 movl %ecx,8(%ebp) 387 movl %ebx,%ecx 388 movl %ebx,12(%ebp) 389 testl $15,%edi 390 cmovnzl %esp,%edi 391 testl $15,%esi 392 jz .L023cbc_inp_aligned 393 shrl $2,%ecx 394.byte 243,165 395 subl %ebx,%edi 396 movl %ebx,%ecx 397 movl %edi,%esi 398.L023cbc_inp_aligned: 399 leal -16(%edx),%eax 400 leal 16(%edx),%ebx 401 shrl $4,%ecx 402.byte 243,15,167,208 403 movaps (%eax),%xmm0 404 movaps %xmm0,-16(%edx) 405 movl (%ebp),%edi 406 movl 12(%ebp),%ebx 407 testl $15,%edi 408 jz .L024cbc_out_aligned 409 movl %ebx,%ecx 410 leal (%esp),%esi 411 shrl $2,%ecx 412.byte 243,165 413 subl %ebx,%edi 414.L024cbc_out_aligned: 415 movl 4(%ebp),%esi 416 movl 8(%ebp),%ecx 417 addl %ebx,%edi 418 addl %ebx,%esi 419 subl %ebx,%ecx 420 movl $512,%ebx 421 jz .L025cbc_break 422 cmpl %ebx,%ecx 423 jae .L021cbc_loop 424.L022cbc_unaligned_tail: 425 xorl %eax,%eax 426 cmpl %ebp,%esp 427 cmovel %ecx,%eax 428 subl %eax,%esp 429 movl %edi,%eax 430 movl %ecx,%ebx 431 shrl $2,%ecx 432 leal (%esp),%edi 433.byte 243,165 434 movl %esp,%esi 435 movl %eax,%edi 436 movl %ebx,%ecx 437 jmp .L021cbc_loop 438.align 16 439.L025cbc_break: 440 cmpl %ebp,%esp 441 je .L026cbc_done 442 pxor %xmm0,%xmm0 443 leal (%esp),%eax 444.L027cbc_bzero: 445 movaps %xmm0,(%eax) 446 leal 16(%eax),%eax 447 cmpl %eax,%ebp 448 ja .L027cbc_bzero 449.L026cbc_done: 450 movl 16(%ebp),%ebp 451 leal 24(%ebp),%esp 452 jmp .L028cbc_exit 453.align 16 454.L020cbc_aligned: 455 leal (%esi,%ecx,1),%ebp 456 negl %ebp 457 andl $4095,%ebp 458 xorl %eax,%eax 459 cmpl $64,%ebp 460 movl $63,%ebp 461 cmovael %eax,%ebp 462 andl %ecx,%ebp 463 subl %ebp,%ecx 464 jz .L029cbc_aligned_tail 465 leal -16(%edx),%eax 466 leal 16(%edx),%ebx 467 shrl $4,%ecx 468.byte 243,15,167,208 469 movaps (%eax),%xmm0 470 movaps %xmm0,-16(%edx) 471 testl %ebp,%ebp 472 jz .L028cbc_exit 473.L029cbc_aligned_tail: 474 movl %ebp,%ecx 475 leal -24(%esp),%ebp 476 movl %ebp,%esp 477 movl %ebp,%eax 478 subl %ecx,%esp 479 andl $-16,%ebp 480 andl $-16,%esp 481 movl %eax,16(%ebp) 482 movl %edi,%eax 483 movl %ecx,%ebx 484 shrl $2,%ecx 485 leal (%esp),%edi 486.byte 243,165 487 movl %esp,%esi 488 movl %eax,%edi 489 movl %ebx,%ecx 490 jmp .L021cbc_loop 491.L028cbc_exit: 492 movl $1,%eax 493 leal 4(%esp),%esp 494.L018cbc_abort: 495 popl %edi 496 popl %esi 497 popl %ebx 498 popl %ebp 499 ret 500.size padlock_cbc_encrypt,.-.L_padlock_cbc_encrypt_begin 501.globl padlock_cfb_encrypt 502.type padlock_cfb_encrypt,@function 503.align 16 504padlock_cfb_encrypt: 505.L_padlock_cfb_encrypt_begin: 506 pushl %ebp 507 pushl %ebx 508 pushl %esi 509 pushl %edi 510 movl 20(%esp),%edi 511 movl 24(%esp),%esi 512 movl 28(%esp),%edx 513 movl 32(%esp),%ecx 514 testl $15,%edx 515 jnz .L030cfb_abort 516 testl $15,%ecx 517 jnz .L030cfb_abort 518 leal .Lpadlock_saved_context-.L031cfb_pic_point,%eax 519 pushfl 520 cld 521 call _padlock_verify_ctx 522.L031cfb_pic_point: 523 leal 16(%edx),%edx 524 xorl %eax,%eax 525 xorl %ebx,%ebx 526 testl $32,(%edx) 527 jnz .L032cfb_aligned 528 testl $15,%edi 529 setz %al 530 testl $15,%esi 531 setz %bl 532 testl %ebx,%eax 533 jnz .L032cfb_aligned 534 negl %eax 535 movl $512,%ebx 536 notl %eax 537 leal -24(%esp),%ebp 538 cmpl %ebx,%ecx 539 cmovcl %ecx,%ebx 540 andl %ebx,%eax 541 movl %ecx,%ebx 542 negl %eax 543 andl $511,%ebx 544 leal (%eax,%ebp,1),%esp 545 movl $512,%eax 546 cmovzl %eax,%ebx 547 movl %ebp,%eax 548 andl $-16,%ebp 549 andl $-16,%esp 550 movl %eax,16(%ebp) 551 jmp .L033cfb_loop 552.align 16 553.L033cfb_loop: 554 movl %edi,(%ebp) 555 movl %esi,4(%ebp) 556 movl %ecx,8(%ebp) 557 movl %ebx,%ecx 558 movl %ebx,12(%ebp) 559 testl $15,%edi 560 cmovnzl %esp,%edi 561 testl $15,%esi 562 jz .L034cfb_inp_aligned 563 shrl $2,%ecx 564.byte 243,165 565 subl %ebx,%edi 566 movl %ebx,%ecx 567 movl %edi,%esi 568.L034cfb_inp_aligned: 569 leal -16(%edx),%eax 570 leal 16(%edx),%ebx 571 shrl $4,%ecx 572.byte 243,15,167,224 573 movaps (%eax),%xmm0 574 movaps %xmm0,-16(%edx) 575 movl (%ebp),%edi 576 movl 12(%ebp),%ebx 577 testl $15,%edi 578 jz .L035cfb_out_aligned 579 movl %ebx,%ecx 580 leal (%esp),%esi 581 shrl $2,%ecx 582.byte 243,165 583 subl %ebx,%edi 584.L035cfb_out_aligned: 585 movl 4(%ebp),%esi 586 movl 8(%ebp),%ecx 587 addl %ebx,%edi 588 addl %ebx,%esi 589 subl %ebx,%ecx 590 movl $512,%ebx 591 jnz .L033cfb_loop 592 cmpl %ebp,%esp 593 je .L036cfb_done 594 pxor %xmm0,%xmm0 595 leal (%esp),%eax 596.L037cfb_bzero: 597 movaps %xmm0,(%eax) 598 leal 16(%eax),%eax 599 cmpl %eax,%ebp 600 ja .L037cfb_bzero 601.L036cfb_done: 602 movl 16(%ebp),%ebp 603 leal 24(%ebp),%esp 604 jmp .L038cfb_exit 605.align 16 606.L032cfb_aligned: 607 leal -16(%edx),%eax 608 leal 16(%edx),%ebx 609 shrl $4,%ecx 610.byte 243,15,167,224 611 movaps (%eax),%xmm0 612 movaps %xmm0,-16(%edx) 613.L038cfb_exit: 614 movl $1,%eax 615 leal 4(%esp),%esp 616.L030cfb_abort: 617 popl %edi 618 popl %esi 619 popl %ebx 620 popl %ebp 621 ret 622.size padlock_cfb_encrypt,.-.L_padlock_cfb_encrypt_begin 623.globl padlock_ofb_encrypt 624.type padlock_ofb_encrypt,@function 625.align 16 626padlock_ofb_encrypt: 627.L_padlock_ofb_encrypt_begin: 628 pushl %ebp 629 pushl %ebx 630 pushl %esi 631 pushl %edi 632 movl 20(%esp),%edi 633 movl 24(%esp),%esi 634 movl 28(%esp),%edx 635 movl 32(%esp),%ecx 636 testl $15,%edx 637 jnz .L039ofb_abort 638 testl $15,%ecx 639 jnz .L039ofb_abort 640 leal .Lpadlock_saved_context-.L040ofb_pic_point,%eax 641 pushfl 642 cld 643 call _padlock_verify_ctx 644.L040ofb_pic_point: 645 leal 16(%edx),%edx 646 xorl %eax,%eax 647 xorl %ebx,%ebx 648 testl $32,(%edx) 649 jnz .L041ofb_aligned 650 testl $15,%edi 651 setz %al 652 testl $15,%esi 653 setz %bl 654 testl %ebx,%eax 655 jnz .L041ofb_aligned 656 negl %eax 657 movl $512,%ebx 658 notl %eax 659 leal -24(%esp),%ebp 660 cmpl %ebx,%ecx 661 cmovcl %ecx,%ebx 662 andl %ebx,%eax 663 movl %ecx,%ebx 664 negl %eax 665 andl $511,%ebx 666 leal (%eax,%ebp,1),%esp 667 movl $512,%eax 668 cmovzl %eax,%ebx 669 movl %ebp,%eax 670 andl $-16,%ebp 671 andl $-16,%esp 672 movl %eax,16(%ebp) 673 jmp .L042ofb_loop 674.align 16 675.L042ofb_loop: 676 movl %edi,(%ebp) 677 movl %esi,4(%ebp) 678 movl %ecx,8(%ebp) 679 movl %ebx,%ecx 680 movl %ebx,12(%ebp) 681 testl $15,%edi 682 cmovnzl %esp,%edi 683 testl $15,%esi 684 jz .L043ofb_inp_aligned 685 shrl $2,%ecx 686.byte 243,165 687 subl %ebx,%edi 688 movl %ebx,%ecx 689 movl %edi,%esi 690.L043ofb_inp_aligned: 691 leal -16(%edx),%eax 692 leal 16(%edx),%ebx 693 shrl $4,%ecx 694.byte 243,15,167,232 695 movaps (%eax),%xmm0 696 movaps %xmm0,-16(%edx) 697 movl (%ebp),%edi 698 movl 12(%ebp),%ebx 699 testl $15,%edi 700 jz .L044ofb_out_aligned 701 movl %ebx,%ecx 702 leal (%esp),%esi 703 shrl $2,%ecx 704.byte 243,165 705 subl %ebx,%edi 706.L044ofb_out_aligned: 707 movl 4(%ebp),%esi 708 movl 8(%ebp),%ecx 709 addl %ebx,%edi 710 addl %ebx,%esi 711 subl %ebx,%ecx 712 movl $512,%ebx 713 jnz .L042ofb_loop 714 cmpl %ebp,%esp 715 je .L045ofb_done 716 pxor %xmm0,%xmm0 717 leal (%esp),%eax 718.L046ofb_bzero: 719 movaps %xmm0,(%eax) 720 leal 16(%eax),%eax 721 cmpl %eax,%ebp 722 ja .L046ofb_bzero 723.L045ofb_done: 724 movl 16(%ebp),%ebp 725 leal 24(%ebp),%esp 726 jmp .L047ofb_exit 727.align 16 728.L041ofb_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.L047ofb_exit: 736 movl $1,%eax 737 leal 4(%esp),%esp 738.L039ofb_abort: 739 popl %edi 740 popl %esi 741 popl %ebx 742 popl %ebp 743 ret 744.size padlock_ofb_encrypt,.-.L_padlock_ofb_encrypt_begin 745.globl padlock_ctr32_encrypt 746.type padlock_ctr32_encrypt,@function 747.align 16 748padlock_ctr32_encrypt: 749.L_padlock_ctr32_encrypt_begin: 750 pushl %ebp 751 pushl %ebx 752 pushl %esi 753 pushl %edi 754 movl 20(%esp),%edi 755 movl 24(%esp),%esi 756 movl 28(%esp),%edx 757 movl 32(%esp),%ecx 758 testl $15,%edx 759 jnz .L048ctr32_abort 760 testl $15,%ecx 761 jnz .L048ctr32_abort 762 leal .Lpadlock_saved_context-.L049ctr32_pic_point,%eax 763 pushfl 764 cld 765 call _padlock_verify_ctx 766.L049ctr32_pic_point: 767 leal 16(%edx),%edx 768 xorl %eax,%eax 769 movq -16(%edx),%mm0 770 movl $512,%ebx 771 notl %eax 772 leal -24(%esp),%ebp 773 cmpl %ebx,%ecx 774 cmovcl %ecx,%ebx 775 andl %ebx,%eax 776 movl %ecx,%ebx 777 negl %eax 778 andl $511,%ebx 779 leal (%eax,%ebp,1),%esp 780 movl $512,%eax 781 cmovzl %eax,%ebx 782 movl %ebp,%eax 783 andl $-16,%ebp 784 andl $-16,%esp 785 movl %eax,16(%ebp) 786 jmp .L050ctr32_loop 787.align 16 788.L050ctr32_loop: 789 movl %edi,(%ebp) 790 movl %esi,4(%ebp) 791 movl %ecx,8(%ebp) 792 movl %ebx,%ecx 793 movl %ebx,12(%ebp) 794 movl -4(%edx),%ecx 795 xorl %edi,%edi 796 movl -8(%edx),%eax 797.L051ctr32_prepare: 798 movl %ecx,12(%esp,%edi,1) 799 bswap %ecx 800 movq %mm0,(%esp,%edi,1) 801 incl %ecx 802 movl %eax,8(%esp,%edi,1) 803 bswap %ecx 804 leal 16(%edi),%edi 805 cmpl %ebx,%edi 806 jb .L051ctr32_prepare 807 movl %ecx,-4(%edx) 808 leal (%esp),%esi 809 leal (%esp),%edi 810 movl %ebx,%ecx 811 leal -16(%edx),%eax 812 leal 16(%edx),%ebx 813 shrl $4,%ecx 814.byte 243,15,167,200 815 movl (%ebp),%edi 816 movl 12(%ebp),%ebx 817 movl 4(%ebp),%esi 818 xorl %ecx,%ecx 819.L052ctr32_xor: 820 movups (%esi,%ecx,1),%xmm1 821 leal 16(%ecx),%ecx 822 pxor -16(%esp,%ecx,1),%xmm1 823 movups %xmm1,-16(%edi,%ecx,1) 824 cmpl %ebx,%ecx 825 jb .L052ctr32_xor 826 movl 8(%ebp),%ecx 827 addl %ebx,%edi 828 addl %ebx,%esi 829 subl %ebx,%ecx 830 movl $512,%ebx 831 jnz .L050ctr32_loop 832 pxor %xmm0,%xmm0 833 leal (%esp),%eax 834.L053ctr32_bzero: 835 movaps %xmm0,(%eax) 836 leal 16(%eax),%eax 837 cmpl %eax,%ebp 838 ja .L053ctr32_bzero 839.L054ctr32_done: 840 movl 16(%ebp),%ebp 841 leal 24(%ebp),%esp 842 movl $1,%eax 843 leal 4(%esp),%esp 844 emms 845.L048ctr32_abort: 846 popl %edi 847 popl %esi 848 popl %ebx 849 popl %ebp 850 ret 851.size padlock_ctr32_encrypt,.-.L_padlock_ctr32_encrypt_begin 852.globl padlock_xstore 853.type padlock_xstore,@function 854.align 16 855padlock_xstore: 856.L_padlock_xstore_begin: 857 pushl %edi 858 movl 8(%esp),%edi 859 movl 12(%esp),%edx 860.byte 15,167,192 861 popl %edi 862 ret 863.size padlock_xstore,.-.L_padlock_xstore_begin 864.type _win32_segv_handler,@function 865.align 16 866_win32_segv_handler: 867 movl $1,%eax 868 movl 4(%esp),%edx 869 movl 12(%esp),%ecx 870 cmpl $3221225477,(%edx) 871 jne .L055ret 872 addl $4,184(%ecx) 873 movl $0,%eax 874.L055ret: 875 ret 876.size _win32_segv_handler,.-_win32_segv_handler 877.globl padlock_sha1_oneshot 878.type padlock_sha1_oneshot,@function 879.align 16 880padlock_sha1_oneshot: 881.L_padlock_sha1_oneshot_begin: 882 pushl %edi 883 pushl %esi 884 xorl %eax,%eax 885 movl 12(%esp),%edi 886 movl 16(%esp),%esi 887 movl 20(%esp),%ecx 888 movl %esp,%edx 889 addl $-128,%esp 890 movups (%edi),%xmm0 891 andl $-16,%esp 892 movl 16(%edi),%eax 893 movaps %xmm0,(%esp) 894 movl %esp,%edi 895 movl %eax,16(%esp) 896 xorl %eax,%eax 897.byte 243,15,166,200 898 movaps (%esp),%xmm0 899 movl 16(%esp),%eax 900 movl %edx,%esp 901 movl 12(%esp),%edi 902 movups %xmm0,(%edi) 903 movl %eax,16(%edi) 904 popl %esi 905 popl %edi 906 ret 907.size padlock_sha1_oneshot,.-.L_padlock_sha1_oneshot_begin 908.globl padlock_sha1_blocks 909.type padlock_sha1_blocks,@function 910.align 16 911padlock_sha1_blocks: 912.L_padlock_sha1_blocks_begin: 913 pushl %edi 914 pushl %esi 915 movl 12(%esp),%edi 916 movl 16(%esp),%esi 917 movl %esp,%edx 918 movl 20(%esp),%ecx 919 addl $-128,%esp 920 movups (%edi),%xmm0 921 andl $-16,%esp 922 movl 16(%edi),%eax 923 movaps %xmm0,(%esp) 924 movl %esp,%edi 925 movl %eax,16(%esp) 926 movl $-1,%eax 927.byte 243,15,166,200 928 movaps (%esp),%xmm0 929 movl 16(%esp),%eax 930 movl %edx,%esp 931 movl 12(%esp),%edi 932 movups %xmm0,(%edi) 933 movl %eax,16(%edi) 934 popl %esi 935 popl %edi 936 ret 937.size padlock_sha1_blocks,.-.L_padlock_sha1_blocks_begin 938.globl padlock_sha256_oneshot 939.type padlock_sha256_oneshot,@function 940.align 16 941padlock_sha256_oneshot: 942.L_padlock_sha256_oneshot_begin: 943 pushl %edi 944 pushl %esi 945 xorl %eax,%eax 946 movl 12(%esp),%edi 947 movl 16(%esp),%esi 948 movl 20(%esp),%ecx 949 movl %esp,%edx 950 addl $-128,%esp 951 movups (%edi),%xmm0 952 andl $-16,%esp 953 movups 16(%edi),%xmm1 954 movaps %xmm0,(%esp) 955 movl %esp,%edi 956 movaps %xmm1,16(%esp) 957 xorl %eax,%eax 958.byte 243,15,166,208 959 movaps (%esp),%xmm0 960 movaps 16(%esp),%xmm1 961 movl %edx,%esp 962 movl 12(%esp),%edi 963 movups %xmm0,(%edi) 964 movups %xmm1,16(%edi) 965 popl %esi 966 popl %edi 967 ret 968.size padlock_sha256_oneshot,.-.L_padlock_sha256_oneshot_begin 969.globl padlock_sha256_blocks 970.type padlock_sha256_blocks,@function 971.align 16 972padlock_sha256_blocks: 973.L_padlock_sha256_blocks_begin: 974 pushl %edi 975 pushl %esi 976 movl 12(%esp),%edi 977 movl 16(%esp),%esi 978 movl 20(%esp),%ecx 979 movl %esp,%edx 980 addl $-128,%esp 981 movups (%edi),%xmm0 982 andl $-16,%esp 983 movups 16(%edi),%xmm1 984 movaps %xmm0,(%esp) 985 movl %esp,%edi 986 movaps %xmm1,16(%esp) 987 movl $-1,%eax 988.byte 243,15,166,208 989 movaps (%esp),%xmm0 990 movaps 16(%esp),%xmm1 991 movl %edx,%esp 992 movl 12(%esp),%edi 993 movups %xmm0,(%edi) 994 movups %xmm1,16(%edi) 995 popl %esi 996 popl %edi 997 ret 998.size padlock_sha256_blocks,.-.L_padlock_sha256_blocks_begin 999.globl padlock_sha512_blocks 1000.type padlock_sha512_blocks,@function 1001.align 16 1002padlock_sha512_blocks: 1003.L_padlock_sha512_blocks_begin: 1004 pushl %edi 1005 pushl %esi 1006 movl 12(%esp),%edi 1007 movl 16(%esp),%esi 1008 movl 20(%esp),%ecx 1009 movl %esp,%edx 1010 addl $-128,%esp 1011 movups (%edi),%xmm0 1012 andl $-16,%esp 1013 movups 16(%edi),%xmm1 1014 movups 32(%edi),%xmm2 1015 movups 48(%edi),%xmm3 1016 movaps %xmm0,(%esp) 1017 movl %esp,%edi 1018 movaps %xmm1,16(%esp) 1019 movaps %xmm2,32(%esp) 1020 movaps %xmm3,48(%esp) 1021.byte 243,15,166,224 1022 movaps (%esp),%xmm0 1023 movaps 16(%esp),%xmm1 1024 movaps 32(%esp),%xmm2 1025 movaps 48(%esp),%xmm3 1026 movl %edx,%esp 1027 movl 12(%esp),%edi 1028 movups %xmm0,(%edi) 1029 movups %xmm1,16(%edi) 1030 movups %xmm2,32(%edi) 1031 movups %xmm3,48(%edi) 1032 popl %esi 1033 popl %edi 1034 ret 1035.size padlock_sha512_blocks,.-.L_padlock_sha512_blocks_begin 1036.byte 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,32 1037.byte 109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65 1038.byte 77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101 1039.byte 110,115,115,108,46,111,114,103,62,0 1040.align 16 1041.data 1042.align 4 1043.Lpadlock_saved_context: 1044.long 0 1045#else 1046.text 1047.globl padlock_capability 1048.type padlock_capability,@function 1049.align 16 1050padlock_capability: 1051.L_padlock_capability_begin: 1052 pushl %ebx 1053 pushfl 1054 popl %eax 1055 movl %eax,%ecx 1056 xorl $2097152,%eax 1057 pushl %eax 1058 popfl 1059 pushfl 1060 popl %eax 1061 xorl %eax,%ecx 1062 xorl %eax,%eax 1063 btl $21,%ecx 1064 jnc .L000noluck 1065 .byte 0x0f,0xa2 1066 xorl %eax,%eax 1067 cmpl $0x746e6543,%ebx 1068 jne .L001zhaoxin 1069 cmpl $0x48727561,%edx 1070 jne .L000noluck 1071 cmpl $0x736c7561,%ecx 1072 jne .L000noluck 1073 jmp .L002zhaoxinEnd 1074.L001zhaoxin: 1075 cmpl $0x68532020,%ebx 1076 jne .L000noluck 1077 cmpl $0x68676e61,%edx 1078 jne .L000noluck 1079 cmpl $0x20206961,%ecx 1080 jne .L000noluck 1081.L002zhaoxinEnd: 1082 movl $3221225472,%eax 1083 .byte 0x0f,0xa2 1084 movl %eax,%edx 1085 xorl %eax,%eax 1086 cmpl $3221225473,%edx 1087 jb .L000noluck 1088 movl $1,%eax 1089 .byte 0x0f,0xa2 1090 orl $15,%eax 1091 xorl %ebx,%ebx 1092 andl $4095,%eax 1093 cmpl $1791,%eax 1094 sete %bl 1095 movl $3221225473,%eax 1096 pushl %ebx 1097 .byte 0x0f,0xa2 1098 popl %ebx 1099 movl %edx,%eax 1100 shll $4,%ebx 1101 andl $4294967279,%eax 1102 orl %ebx,%eax 1103.L000noluck: 1104 popl %ebx 1105 ret 1106.size padlock_capability,.-.L_padlock_capability_begin 1107.globl padlock_key_bswap 1108.type padlock_key_bswap,@function 1109.align 16 1110padlock_key_bswap: 1111.L_padlock_key_bswap_begin: 1112 movl 4(%esp),%edx 1113 movl 240(%edx),%ecx 1114 incl %ecx 1115 shll $2,%ecx 1116.L003bswap_loop: 1117 movl (%edx),%eax 1118 bswap %eax 1119 movl %eax,(%edx) 1120 leal 4(%edx),%edx 1121 subl $1,%ecx 1122 jnz .L003bswap_loop 1123 ret 1124.size padlock_key_bswap,.-.L_padlock_key_bswap_begin 1125.globl padlock_verify_context 1126.type padlock_verify_context,@function 1127.align 16 1128padlock_verify_context: 1129.L_padlock_verify_context_begin: 1130 movl 4(%esp),%edx 1131 leal .Lpadlock_saved_context-.L004verify_pic_point,%eax 1132 pushfl 1133 call _padlock_verify_ctx 1134.L004verify_pic_point: 1135 leal 4(%esp),%esp 1136 ret 1137.size padlock_verify_context,.-.L_padlock_verify_context_begin 1138.type _padlock_verify_ctx,@function 1139.align 16 1140_padlock_verify_ctx: 1141 addl (%esp),%eax 1142 btl $30,4(%esp) 1143 jnc .L005verified 1144 cmpl (%eax),%edx 1145 je .L005verified 1146 pushfl 1147 popfl 1148.L005verified: 1149 movl %edx,(%eax) 1150 ret 1151.size _padlock_verify_ctx,.-_padlock_verify_ctx 1152.globl padlock_reload_key 1153.type padlock_reload_key,@function 1154.align 16 1155padlock_reload_key: 1156.L_padlock_reload_key_begin: 1157 pushfl 1158 popfl 1159 ret 1160.size padlock_reload_key,.-.L_padlock_reload_key_begin 1161.globl padlock_aes_block 1162.type padlock_aes_block,@function 1163.align 16 1164padlock_aes_block: 1165.L_padlock_aes_block_begin: 1166 pushl %edi 1167 pushl %esi 1168 pushl %ebx 1169 movl 16(%esp),%edi 1170 movl 20(%esp),%esi 1171 movl 24(%esp),%edx 1172 movl $1,%ecx 1173 leal 32(%edx),%ebx 1174 leal 16(%edx),%edx 1175.byte 243,15,167,200 1176 popl %ebx 1177 popl %esi 1178 popl %edi 1179 ret 1180.size padlock_aes_block,.-.L_padlock_aes_block_begin 1181.globl padlock_ecb_encrypt 1182.type padlock_ecb_encrypt,@function 1183.align 16 1184padlock_ecb_encrypt: 1185.L_padlock_ecb_encrypt_begin: 1186 pushl %ebp 1187 pushl %ebx 1188 pushl %esi 1189 pushl %edi 1190 movl 20(%esp),%edi 1191 movl 24(%esp),%esi 1192 movl 28(%esp),%edx 1193 movl 32(%esp),%ecx 1194 testl $15,%edx 1195 jnz .L006ecb_abort 1196 testl $15,%ecx 1197 jnz .L006ecb_abort 1198 leal .Lpadlock_saved_context-.L007ecb_pic_point,%eax 1199 pushfl 1200 cld 1201 call _padlock_verify_ctx 1202.L007ecb_pic_point: 1203 leal 16(%edx),%edx 1204 xorl %eax,%eax 1205 xorl %ebx,%ebx 1206 testl $32,(%edx) 1207 jnz .L008ecb_aligned 1208 testl $15,%edi 1209 setz %al 1210 testl $15,%esi 1211 setz %bl 1212 testl %ebx,%eax 1213 jnz .L008ecb_aligned 1214 negl %eax 1215 movl $512,%ebx 1216 notl %eax 1217 leal -24(%esp),%ebp 1218 cmpl %ebx,%ecx 1219 cmovcl %ecx,%ebx 1220 andl %ebx,%eax 1221 movl %ecx,%ebx 1222 negl %eax 1223 andl $511,%ebx 1224 leal (%eax,%ebp,1),%esp 1225 movl $512,%eax 1226 cmovzl %eax,%ebx 1227 movl %ebp,%eax 1228 andl $-16,%ebp 1229 andl $-16,%esp 1230 movl %eax,16(%ebp) 1231 cmpl %ebx,%ecx 1232 ja .L009ecb_loop 1233 movl %esi,%eax 1234 cmpl %esp,%ebp 1235 cmovel %edi,%eax 1236 addl %ecx,%eax 1237 negl %eax 1238 andl $4095,%eax 1239 cmpl $128,%eax 1240 movl $-128,%eax 1241 cmovael %ebx,%eax 1242 andl %eax,%ebx 1243 jz .L010ecb_unaligned_tail 1244 jmp .L009ecb_loop 1245.align 16 1246.L009ecb_loop: 1247 movl %edi,(%ebp) 1248 movl %esi,4(%ebp) 1249 movl %ecx,8(%ebp) 1250 movl %ebx,%ecx 1251 movl %ebx,12(%ebp) 1252 testl $15,%edi 1253 cmovnzl %esp,%edi 1254 testl $15,%esi 1255 jz .L011ecb_inp_aligned 1256 shrl $2,%ecx 1257.byte 243,165 1258 subl %ebx,%edi 1259 movl %ebx,%ecx 1260 movl %edi,%esi 1261.L011ecb_inp_aligned: 1262 leal -16(%edx),%eax 1263 leal 16(%edx),%ebx 1264 shrl $4,%ecx 1265.byte 243,15,167,200 1266 movl (%ebp),%edi 1267 movl 12(%ebp),%ebx 1268 testl $15,%edi 1269 jz .L012ecb_out_aligned 1270 movl %ebx,%ecx 1271 leal (%esp),%esi 1272 shrl $2,%ecx 1273.byte 243,165 1274 subl %ebx,%edi 1275.L012ecb_out_aligned: 1276 movl 4(%ebp),%esi 1277 movl 8(%ebp),%ecx 1278 addl %ebx,%edi 1279 addl %ebx,%esi 1280 subl %ebx,%ecx 1281 movl $512,%ebx 1282 jz .L013ecb_break 1283 cmpl %ebx,%ecx 1284 jae .L009ecb_loop 1285.L010ecb_unaligned_tail: 1286 xorl %eax,%eax 1287 cmpl %ebp,%esp 1288 cmovel %ecx,%eax 1289 subl %eax,%esp 1290 movl %edi,%eax 1291 movl %ecx,%ebx 1292 shrl $2,%ecx 1293 leal (%esp),%edi 1294.byte 243,165 1295 movl %esp,%esi 1296 movl %eax,%edi 1297 movl %ebx,%ecx 1298 jmp .L009ecb_loop 1299.align 16 1300.L013ecb_break: 1301 cmpl %ebp,%esp 1302 je .L014ecb_done 1303 pxor %xmm0,%xmm0 1304 leal (%esp),%eax 1305.L015ecb_bzero: 1306 movaps %xmm0,(%eax) 1307 leal 16(%eax),%eax 1308 cmpl %eax,%ebp 1309 ja .L015ecb_bzero 1310.L014ecb_done: 1311 movl 16(%ebp),%ebp 1312 leal 24(%ebp),%esp 1313 jmp .L016ecb_exit 1314.align 16 1315.L008ecb_aligned: 1316 leal (%esi,%ecx,1),%ebp 1317 negl %ebp 1318 andl $4095,%ebp 1319 xorl %eax,%eax 1320 cmpl $128,%ebp 1321 movl $127,%ebp 1322 cmovael %eax,%ebp 1323 andl %ecx,%ebp 1324 subl %ebp,%ecx 1325 jz .L017ecb_aligned_tail 1326 leal -16(%edx),%eax 1327 leal 16(%edx),%ebx 1328 shrl $4,%ecx 1329.byte 243,15,167,200 1330 testl %ebp,%ebp 1331 jz .L016ecb_exit 1332.L017ecb_aligned_tail: 1333 movl %ebp,%ecx 1334 leal -24(%esp),%ebp 1335 movl %ebp,%esp 1336 movl %ebp,%eax 1337 subl %ecx,%esp 1338 andl $-16,%ebp 1339 andl $-16,%esp 1340 movl %eax,16(%ebp) 1341 movl %edi,%eax 1342 movl %ecx,%ebx 1343 shrl $2,%ecx 1344 leal (%esp),%edi 1345.byte 243,165 1346 movl %esp,%esi 1347 movl %eax,%edi 1348 movl %ebx,%ecx 1349 jmp .L009ecb_loop 1350.L016ecb_exit: 1351 movl $1,%eax 1352 leal 4(%esp),%esp 1353.L006ecb_abort: 1354 popl %edi 1355 popl %esi 1356 popl %ebx 1357 popl %ebp 1358 ret 1359.size padlock_ecb_encrypt,.-.L_padlock_ecb_encrypt_begin 1360.globl padlock_cbc_encrypt 1361.type padlock_cbc_encrypt,@function 1362.align 16 1363padlock_cbc_encrypt: 1364.L_padlock_cbc_encrypt_begin: 1365 pushl %ebp 1366 pushl %ebx 1367 pushl %esi 1368 pushl %edi 1369 movl 20(%esp),%edi 1370 movl 24(%esp),%esi 1371 movl 28(%esp),%edx 1372 movl 32(%esp),%ecx 1373 testl $15,%edx 1374 jnz .L018cbc_abort 1375 testl $15,%ecx 1376 jnz .L018cbc_abort 1377 leal .Lpadlock_saved_context-.L019cbc_pic_point,%eax 1378 pushfl 1379 cld 1380 call _padlock_verify_ctx 1381.L019cbc_pic_point: 1382 leal 16(%edx),%edx 1383 xorl %eax,%eax 1384 xorl %ebx,%ebx 1385 testl $32,(%edx) 1386 jnz .L020cbc_aligned 1387 testl $15,%edi 1388 setz %al 1389 testl $15,%esi 1390 setz %bl 1391 testl %ebx,%eax 1392 jnz .L020cbc_aligned 1393 negl %eax 1394 movl $512,%ebx 1395 notl %eax 1396 leal -24(%esp),%ebp 1397 cmpl %ebx,%ecx 1398 cmovcl %ecx,%ebx 1399 andl %ebx,%eax 1400 movl %ecx,%ebx 1401 negl %eax 1402 andl $511,%ebx 1403 leal (%eax,%ebp,1),%esp 1404 movl $512,%eax 1405 cmovzl %eax,%ebx 1406 movl %ebp,%eax 1407 andl $-16,%ebp 1408 andl $-16,%esp 1409 movl %eax,16(%ebp) 1410 cmpl %ebx,%ecx 1411 ja .L021cbc_loop 1412 movl %esi,%eax 1413 cmpl %esp,%ebp 1414 cmovel %edi,%eax 1415 addl %ecx,%eax 1416 negl %eax 1417 andl $4095,%eax 1418 cmpl $64,%eax 1419 movl $-64,%eax 1420 cmovael %ebx,%eax 1421 andl %eax,%ebx 1422 jz .L022cbc_unaligned_tail 1423 jmp .L021cbc_loop 1424.align 16 1425.L021cbc_loop: 1426 movl %edi,(%ebp) 1427 movl %esi,4(%ebp) 1428 movl %ecx,8(%ebp) 1429 movl %ebx,%ecx 1430 movl %ebx,12(%ebp) 1431 testl $15,%edi 1432 cmovnzl %esp,%edi 1433 testl $15,%esi 1434 jz .L023cbc_inp_aligned 1435 shrl $2,%ecx 1436.byte 243,165 1437 subl %ebx,%edi 1438 movl %ebx,%ecx 1439 movl %edi,%esi 1440.L023cbc_inp_aligned: 1441 leal -16(%edx),%eax 1442 leal 16(%edx),%ebx 1443 shrl $4,%ecx 1444.byte 243,15,167,208 1445 movaps (%eax),%xmm0 1446 movaps %xmm0,-16(%edx) 1447 movl (%ebp),%edi 1448 movl 12(%ebp),%ebx 1449 testl $15,%edi 1450 jz .L024cbc_out_aligned 1451 movl %ebx,%ecx 1452 leal (%esp),%esi 1453 shrl $2,%ecx 1454.byte 243,165 1455 subl %ebx,%edi 1456.L024cbc_out_aligned: 1457 movl 4(%ebp),%esi 1458 movl 8(%ebp),%ecx 1459 addl %ebx,%edi 1460 addl %ebx,%esi 1461 subl %ebx,%ecx 1462 movl $512,%ebx 1463 jz .L025cbc_break 1464 cmpl %ebx,%ecx 1465 jae .L021cbc_loop 1466.L022cbc_unaligned_tail: 1467 xorl %eax,%eax 1468 cmpl %ebp,%esp 1469 cmovel %ecx,%eax 1470 subl %eax,%esp 1471 movl %edi,%eax 1472 movl %ecx,%ebx 1473 shrl $2,%ecx 1474 leal (%esp),%edi 1475.byte 243,165 1476 movl %esp,%esi 1477 movl %eax,%edi 1478 movl %ebx,%ecx 1479 jmp .L021cbc_loop 1480.align 16 1481.L025cbc_break: 1482 cmpl %ebp,%esp 1483 je .L026cbc_done 1484 pxor %xmm0,%xmm0 1485 leal (%esp),%eax 1486.L027cbc_bzero: 1487 movaps %xmm0,(%eax) 1488 leal 16(%eax),%eax 1489 cmpl %eax,%ebp 1490 ja .L027cbc_bzero 1491.L026cbc_done: 1492 movl 16(%ebp),%ebp 1493 leal 24(%ebp),%esp 1494 jmp .L028cbc_exit 1495.align 16 1496.L020cbc_aligned: 1497 leal (%esi,%ecx,1),%ebp 1498 negl %ebp 1499 andl $4095,%ebp 1500 xorl %eax,%eax 1501 cmpl $64,%ebp 1502 movl $63,%ebp 1503 cmovael %eax,%ebp 1504 andl %ecx,%ebp 1505 subl %ebp,%ecx 1506 jz .L029cbc_aligned_tail 1507 leal -16(%edx),%eax 1508 leal 16(%edx),%ebx 1509 shrl $4,%ecx 1510.byte 243,15,167,208 1511 movaps (%eax),%xmm0 1512 movaps %xmm0,-16(%edx) 1513 testl %ebp,%ebp 1514 jz .L028cbc_exit 1515.L029cbc_aligned_tail: 1516 movl %ebp,%ecx 1517 leal -24(%esp),%ebp 1518 movl %ebp,%esp 1519 movl %ebp,%eax 1520 subl %ecx,%esp 1521 andl $-16,%ebp 1522 andl $-16,%esp 1523 movl %eax,16(%ebp) 1524 movl %edi,%eax 1525 movl %ecx,%ebx 1526 shrl $2,%ecx 1527 leal (%esp),%edi 1528.byte 243,165 1529 movl %esp,%esi 1530 movl %eax,%edi 1531 movl %ebx,%ecx 1532 jmp .L021cbc_loop 1533.L028cbc_exit: 1534 movl $1,%eax 1535 leal 4(%esp),%esp 1536.L018cbc_abort: 1537 popl %edi 1538 popl %esi 1539 popl %ebx 1540 popl %ebp 1541 ret 1542.size padlock_cbc_encrypt,.-.L_padlock_cbc_encrypt_begin 1543.globl padlock_cfb_encrypt 1544.type padlock_cfb_encrypt,@function 1545.align 16 1546padlock_cfb_encrypt: 1547.L_padlock_cfb_encrypt_begin: 1548 pushl %ebp 1549 pushl %ebx 1550 pushl %esi 1551 pushl %edi 1552 movl 20(%esp),%edi 1553 movl 24(%esp),%esi 1554 movl 28(%esp),%edx 1555 movl 32(%esp),%ecx 1556 testl $15,%edx 1557 jnz .L030cfb_abort 1558 testl $15,%ecx 1559 jnz .L030cfb_abort 1560 leal .Lpadlock_saved_context-.L031cfb_pic_point,%eax 1561 pushfl 1562 cld 1563 call _padlock_verify_ctx 1564.L031cfb_pic_point: 1565 leal 16(%edx),%edx 1566 xorl %eax,%eax 1567 xorl %ebx,%ebx 1568 testl $32,(%edx) 1569 jnz .L032cfb_aligned 1570 testl $15,%edi 1571 setz %al 1572 testl $15,%esi 1573 setz %bl 1574 testl %ebx,%eax 1575 jnz .L032cfb_aligned 1576 negl %eax 1577 movl $512,%ebx 1578 notl %eax 1579 leal -24(%esp),%ebp 1580 cmpl %ebx,%ecx 1581 cmovcl %ecx,%ebx 1582 andl %ebx,%eax 1583 movl %ecx,%ebx 1584 negl %eax 1585 andl $511,%ebx 1586 leal (%eax,%ebp,1),%esp 1587 movl $512,%eax 1588 cmovzl %eax,%ebx 1589 movl %ebp,%eax 1590 andl $-16,%ebp 1591 andl $-16,%esp 1592 movl %eax,16(%ebp) 1593 jmp .L033cfb_loop 1594.align 16 1595.L033cfb_loop: 1596 movl %edi,(%ebp) 1597 movl %esi,4(%ebp) 1598 movl %ecx,8(%ebp) 1599 movl %ebx,%ecx 1600 movl %ebx,12(%ebp) 1601 testl $15,%edi 1602 cmovnzl %esp,%edi 1603 testl $15,%esi 1604 jz .L034cfb_inp_aligned 1605 shrl $2,%ecx 1606.byte 243,165 1607 subl %ebx,%edi 1608 movl %ebx,%ecx 1609 movl %edi,%esi 1610.L034cfb_inp_aligned: 1611 leal -16(%edx),%eax 1612 leal 16(%edx),%ebx 1613 shrl $4,%ecx 1614.byte 243,15,167,224 1615 movaps (%eax),%xmm0 1616 movaps %xmm0,-16(%edx) 1617 movl (%ebp),%edi 1618 movl 12(%ebp),%ebx 1619 testl $15,%edi 1620 jz .L035cfb_out_aligned 1621 movl %ebx,%ecx 1622 leal (%esp),%esi 1623 shrl $2,%ecx 1624.byte 243,165 1625 subl %ebx,%edi 1626.L035cfb_out_aligned: 1627 movl 4(%ebp),%esi 1628 movl 8(%ebp),%ecx 1629 addl %ebx,%edi 1630 addl %ebx,%esi 1631 subl %ebx,%ecx 1632 movl $512,%ebx 1633 jnz .L033cfb_loop 1634 cmpl %ebp,%esp 1635 je .L036cfb_done 1636 pxor %xmm0,%xmm0 1637 leal (%esp),%eax 1638.L037cfb_bzero: 1639 movaps %xmm0,(%eax) 1640 leal 16(%eax),%eax 1641 cmpl %eax,%ebp 1642 ja .L037cfb_bzero 1643.L036cfb_done: 1644 movl 16(%ebp),%ebp 1645 leal 24(%ebp),%esp 1646 jmp .L038cfb_exit 1647.align 16 1648.L032cfb_aligned: 1649 leal -16(%edx),%eax 1650 leal 16(%edx),%ebx 1651 shrl $4,%ecx 1652.byte 243,15,167,224 1653 movaps (%eax),%xmm0 1654 movaps %xmm0,-16(%edx) 1655.L038cfb_exit: 1656 movl $1,%eax 1657 leal 4(%esp),%esp 1658.L030cfb_abort: 1659 popl %edi 1660 popl %esi 1661 popl %ebx 1662 popl %ebp 1663 ret 1664.size padlock_cfb_encrypt,.-.L_padlock_cfb_encrypt_begin 1665.globl padlock_ofb_encrypt 1666.type padlock_ofb_encrypt,@function 1667.align 16 1668padlock_ofb_encrypt: 1669.L_padlock_ofb_encrypt_begin: 1670 pushl %ebp 1671 pushl %ebx 1672 pushl %esi 1673 pushl %edi 1674 movl 20(%esp),%edi 1675 movl 24(%esp),%esi 1676 movl 28(%esp),%edx 1677 movl 32(%esp),%ecx 1678 testl $15,%edx 1679 jnz .L039ofb_abort 1680 testl $15,%ecx 1681 jnz .L039ofb_abort 1682 leal .Lpadlock_saved_context-.L040ofb_pic_point,%eax 1683 pushfl 1684 cld 1685 call _padlock_verify_ctx 1686.L040ofb_pic_point: 1687 leal 16(%edx),%edx 1688 xorl %eax,%eax 1689 xorl %ebx,%ebx 1690 testl $32,(%edx) 1691 jnz .L041ofb_aligned 1692 testl $15,%edi 1693 setz %al 1694 testl $15,%esi 1695 setz %bl 1696 testl %ebx,%eax 1697 jnz .L041ofb_aligned 1698 negl %eax 1699 movl $512,%ebx 1700 notl %eax 1701 leal -24(%esp),%ebp 1702 cmpl %ebx,%ecx 1703 cmovcl %ecx,%ebx 1704 andl %ebx,%eax 1705 movl %ecx,%ebx 1706 negl %eax 1707 andl $511,%ebx 1708 leal (%eax,%ebp,1),%esp 1709 movl $512,%eax 1710 cmovzl %eax,%ebx 1711 movl %ebp,%eax 1712 andl $-16,%ebp 1713 andl $-16,%esp 1714 movl %eax,16(%ebp) 1715 jmp .L042ofb_loop 1716.align 16 1717.L042ofb_loop: 1718 movl %edi,(%ebp) 1719 movl %esi,4(%ebp) 1720 movl %ecx,8(%ebp) 1721 movl %ebx,%ecx 1722 movl %ebx,12(%ebp) 1723 testl $15,%edi 1724 cmovnzl %esp,%edi 1725 testl $15,%esi 1726 jz .L043ofb_inp_aligned 1727 shrl $2,%ecx 1728.byte 243,165 1729 subl %ebx,%edi 1730 movl %ebx,%ecx 1731 movl %edi,%esi 1732.L043ofb_inp_aligned: 1733 leal -16(%edx),%eax 1734 leal 16(%edx),%ebx 1735 shrl $4,%ecx 1736.byte 243,15,167,232 1737 movaps (%eax),%xmm0 1738 movaps %xmm0,-16(%edx) 1739 movl (%ebp),%edi 1740 movl 12(%ebp),%ebx 1741 testl $15,%edi 1742 jz .L044ofb_out_aligned 1743 movl %ebx,%ecx 1744 leal (%esp),%esi 1745 shrl $2,%ecx 1746.byte 243,165 1747 subl %ebx,%edi 1748.L044ofb_out_aligned: 1749 movl 4(%ebp),%esi 1750 movl 8(%ebp),%ecx 1751 addl %ebx,%edi 1752 addl %ebx,%esi 1753 subl %ebx,%ecx 1754 movl $512,%ebx 1755 jnz .L042ofb_loop 1756 cmpl %ebp,%esp 1757 je .L045ofb_done 1758 pxor %xmm0,%xmm0 1759 leal (%esp),%eax 1760.L046ofb_bzero: 1761 movaps %xmm0,(%eax) 1762 leal 16(%eax),%eax 1763 cmpl %eax,%ebp 1764 ja .L046ofb_bzero 1765.L045ofb_done: 1766 movl 16(%ebp),%ebp 1767 leal 24(%ebp),%esp 1768 jmp .L047ofb_exit 1769.align 16 1770.L041ofb_aligned: 1771 leal -16(%edx),%eax 1772 leal 16(%edx),%ebx 1773 shrl $4,%ecx 1774.byte 243,15,167,232 1775 movaps (%eax),%xmm0 1776 movaps %xmm0,-16(%edx) 1777.L047ofb_exit: 1778 movl $1,%eax 1779 leal 4(%esp),%esp 1780.L039ofb_abort: 1781 popl %edi 1782 popl %esi 1783 popl %ebx 1784 popl %ebp 1785 ret 1786.size padlock_ofb_encrypt,.-.L_padlock_ofb_encrypt_begin 1787.globl padlock_ctr32_encrypt 1788.type padlock_ctr32_encrypt,@function 1789.align 16 1790padlock_ctr32_encrypt: 1791.L_padlock_ctr32_encrypt_begin: 1792 pushl %ebp 1793 pushl %ebx 1794 pushl %esi 1795 pushl %edi 1796 movl 20(%esp),%edi 1797 movl 24(%esp),%esi 1798 movl 28(%esp),%edx 1799 movl 32(%esp),%ecx 1800 testl $15,%edx 1801 jnz .L048ctr32_abort 1802 testl $15,%ecx 1803 jnz .L048ctr32_abort 1804 leal .Lpadlock_saved_context-.L049ctr32_pic_point,%eax 1805 pushfl 1806 cld 1807 call _padlock_verify_ctx 1808.L049ctr32_pic_point: 1809 leal 16(%edx),%edx 1810 xorl %eax,%eax 1811 movq -16(%edx),%mm0 1812 movl $512,%ebx 1813 notl %eax 1814 leal -24(%esp),%ebp 1815 cmpl %ebx,%ecx 1816 cmovcl %ecx,%ebx 1817 andl %ebx,%eax 1818 movl %ecx,%ebx 1819 negl %eax 1820 andl $511,%ebx 1821 leal (%eax,%ebp,1),%esp 1822 movl $512,%eax 1823 cmovzl %eax,%ebx 1824 movl %ebp,%eax 1825 andl $-16,%ebp 1826 andl $-16,%esp 1827 movl %eax,16(%ebp) 1828 jmp .L050ctr32_loop 1829.align 16 1830.L050ctr32_loop: 1831 movl %edi,(%ebp) 1832 movl %esi,4(%ebp) 1833 movl %ecx,8(%ebp) 1834 movl %ebx,%ecx 1835 movl %ebx,12(%ebp) 1836 movl -4(%edx),%ecx 1837 xorl %edi,%edi 1838 movl -8(%edx),%eax 1839.L051ctr32_prepare: 1840 movl %ecx,12(%esp,%edi,1) 1841 bswap %ecx 1842 movq %mm0,(%esp,%edi,1) 1843 incl %ecx 1844 movl %eax,8(%esp,%edi,1) 1845 bswap %ecx 1846 leal 16(%edi),%edi 1847 cmpl %ebx,%edi 1848 jb .L051ctr32_prepare 1849 movl %ecx,-4(%edx) 1850 leal (%esp),%esi 1851 leal (%esp),%edi 1852 movl %ebx,%ecx 1853 leal -16(%edx),%eax 1854 leal 16(%edx),%ebx 1855 shrl $4,%ecx 1856.byte 243,15,167,200 1857 movl (%ebp),%edi 1858 movl 12(%ebp),%ebx 1859 movl 4(%ebp),%esi 1860 xorl %ecx,%ecx 1861.L052ctr32_xor: 1862 movups (%esi,%ecx,1),%xmm1 1863 leal 16(%ecx),%ecx 1864 pxor -16(%esp,%ecx,1),%xmm1 1865 movups %xmm1,-16(%edi,%ecx,1) 1866 cmpl %ebx,%ecx 1867 jb .L052ctr32_xor 1868 movl 8(%ebp),%ecx 1869 addl %ebx,%edi 1870 addl %ebx,%esi 1871 subl %ebx,%ecx 1872 movl $512,%ebx 1873 jnz .L050ctr32_loop 1874 pxor %xmm0,%xmm0 1875 leal (%esp),%eax 1876.L053ctr32_bzero: 1877 movaps %xmm0,(%eax) 1878 leal 16(%eax),%eax 1879 cmpl %eax,%ebp 1880 ja .L053ctr32_bzero 1881.L054ctr32_done: 1882 movl 16(%ebp),%ebp 1883 leal 24(%ebp),%esp 1884 movl $1,%eax 1885 leal 4(%esp),%esp 1886 emms 1887.L048ctr32_abort: 1888 popl %edi 1889 popl %esi 1890 popl %ebx 1891 popl %ebp 1892 ret 1893.size padlock_ctr32_encrypt,.-.L_padlock_ctr32_encrypt_begin 1894.globl padlock_xstore 1895.type padlock_xstore,@function 1896.align 16 1897padlock_xstore: 1898.L_padlock_xstore_begin: 1899 pushl %edi 1900 movl 8(%esp),%edi 1901 movl 12(%esp),%edx 1902.byte 15,167,192 1903 popl %edi 1904 ret 1905.size padlock_xstore,.-.L_padlock_xstore_begin 1906.type _win32_segv_handler,@function 1907.align 16 1908_win32_segv_handler: 1909 movl $1,%eax 1910 movl 4(%esp),%edx 1911 movl 12(%esp),%ecx 1912 cmpl $3221225477,(%edx) 1913 jne .L055ret 1914 addl $4,184(%ecx) 1915 movl $0,%eax 1916.L055ret: 1917 ret 1918.size _win32_segv_handler,.-_win32_segv_handler 1919.globl padlock_sha1_oneshot 1920.type padlock_sha1_oneshot,@function 1921.align 16 1922padlock_sha1_oneshot: 1923.L_padlock_sha1_oneshot_begin: 1924 pushl %edi 1925 pushl %esi 1926 xorl %eax,%eax 1927 movl 12(%esp),%edi 1928 movl 16(%esp),%esi 1929 movl 20(%esp),%ecx 1930 movl %esp,%edx 1931 addl $-128,%esp 1932 movups (%edi),%xmm0 1933 andl $-16,%esp 1934 movl 16(%edi),%eax 1935 movaps %xmm0,(%esp) 1936 movl %esp,%edi 1937 movl %eax,16(%esp) 1938 xorl %eax,%eax 1939.byte 243,15,166,200 1940 movaps (%esp),%xmm0 1941 movl 16(%esp),%eax 1942 movl %edx,%esp 1943 movl 12(%esp),%edi 1944 movups %xmm0,(%edi) 1945 movl %eax,16(%edi) 1946 popl %esi 1947 popl %edi 1948 ret 1949.size padlock_sha1_oneshot,.-.L_padlock_sha1_oneshot_begin 1950.globl padlock_sha1_blocks 1951.type padlock_sha1_blocks,@function 1952.align 16 1953padlock_sha1_blocks: 1954.L_padlock_sha1_blocks_begin: 1955 pushl %edi 1956 pushl %esi 1957 movl 12(%esp),%edi 1958 movl 16(%esp),%esi 1959 movl %esp,%edx 1960 movl 20(%esp),%ecx 1961 addl $-128,%esp 1962 movups (%edi),%xmm0 1963 andl $-16,%esp 1964 movl 16(%edi),%eax 1965 movaps %xmm0,(%esp) 1966 movl %esp,%edi 1967 movl %eax,16(%esp) 1968 movl $-1,%eax 1969.byte 243,15,166,200 1970 movaps (%esp),%xmm0 1971 movl 16(%esp),%eax 1972 movl %edx,%esp 1973 movl 12(%esp),%edi 1974 movups %xmm0,(%edi) 1975 movl %eax,16(%edi) 1976 popl %esi 1977 popl %edi 1978 ret 1979.size padlock_sha1_blocks,.-.L_padlock_sha1_blocks_begin 1980.globl padlock_sha256_oneshot 1981.type padlock_sha256_oneshot,@function 1982.align 16 1983padlock_sha256_oneshot: 1984.L_padlock_sha256_oneshot_begin: 1985 pushl %edi 1986 pushl %esi 1987 xorl %eax,%eax 1988 movl 12(%esp),%edi 1989 movl 16(%esp),%esi 1990 movl 20(%esp),%ecx 1991 movl %esp,%edx 1992 addl $-128,%esp 1993 movups (%edi),%xmm0 1994 andl $-16,%esp 1995 movups 16(%edi),%xmm1 1996 movaps %xmm0,(%esp) 1997 movl %esp,%edi 1998 movaps %xmm1,16(%esp) 1999 xorl %eax,%eax 2000.byte 243,15,166,208 2001 movaps (%esp),%xmm0 2002 movaps 16(%esp),%xmm1 2003 movl %edx,%esp 2004 movl 12(%esp),%edi 2005 movups %xmm0,(%edi) 2006 movups %xmm1,16(%edi) 2007 popl %esi 2008 popl %edi 2009 ret 2010.size padlock_sha256_oneshot,.-.L_padlock_sha256_oneshot_begin 2011.globl padlock_sha256_blocks 2012.type padlock_sha256_blocks,@function 2013.align 16 2014padlock_sha256_blocks: 2015.L_padlock_sha256_blocks_begin: 2016 pushl %edi 2017 pushl %esi 2018 movl 12(%esp),%edi 2019 movl 16(%esp),%esi 2020 movl 20(%esp),%ecx 2021 movl %esp,%edx 2022 addl $-128,%esp 2023 movups (%edi),%xmm0 2024 andl $-16,%esp 2025 movups 16(%edi),%xmm1 2026 movaps %xmm0,(%esp) 2027 movl %esp,%edi 2028 movaps %xmm1,16(%esp) 2029 movl $-1,%eax 2030.byte 243,15,166,208 2031 movaps (%esp),%xmm0 2032 movaps 16(%esp),%xmm1 2033 movl %edx,%esp 2034 movl 12(%esp),%edi 2035 movups %xmm0,(%edi) 2036 movups %xmm1,16(%edi) 2037 popl %esi 2038 popl %edi 2039 ret 2040.size padlock_sha256_blocks,.-.L_padlock_sha256_blocks_begin 2041.globl padlock_sha512_blocks 2042.type padlock_sha512_blocks,@function 2043.align 16 2044padlock_sha512_blocks: 2045.L_padlock_sha512_blocks_begin: 2046 pushl %edi 2047 pushl %esi 2048 movl 12(%esp),%edi 2049 movl 16(%esp),%esi 2050 movl 20(%esp),%ecx 2051 movl %esp,%edx 2052 addl $-128,%esp 2053 movups (%edi),%xmm0 2054 andl $-16,%esp 2055 movups 16(%edi),%xmm1 2056 movups 32(%edi),%xmm2 2057 movups 48(%edi),%xmm3 2058 movaps %xmm0,(%esp) 2059 movl %esp,%edi 2060 movaps %xmm1,16(%esp) 2061 movaps %xmm2,32(%esp) 2062 movaps %xmm3,48(%esp) 2063.byte 243,15,166,224 2064 movaps (%esp),%xmm0 2065 movaps 16(%esp),%xmm1 2066 movaps 32(%esp),%xmm2 2067 movaps 48(%esp),%xmm3 2068 movl %edx,%esp 2069 movl 12(%esp),%edi 2070 movups %xmm0,(%edi) 2071 movups %xmm1,16(%edi) 2072 movups %xmm2,32(%edi) 2073 movups %xmm3,48(%edi) 2074 popl %esi 2075 popl %edi 2076 ret 2077.size padlock_sha512_blocks,.-.L_padlock_sha512_blocks_begin 2078.byte 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,32 2079.byte 109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65 2080.byte 77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101 2081.byte 110,115,115,108,46,111,114,103,62,0 2082.align 16 2083.data 2084.align 4 2085.Lpadlock_saved_context: 2086.long 0 2087#endif 2088