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