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