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