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