Home | History | Annotate | Download | only in aes
      1 #if defined(__i386__)
      2 .file	"src/crypto/aes/asm/aesni-x86.S"
      3 .text
      4 .globl	aesni_encrypt
      5 .hidden	aesni_encrypt
      6 .type	aesni_encrypt,@function
      7 .align	16
      8 aesni_encrypt:
      9 .L_aesni_encrypt_begin:
     10 	movl	4(%esp),%eax
     11 	movl	12(%esp),%edx
     12 	movups	(%eax),%xmm2
     13 	movl	240(%edx),%ecx
     14 	movl	8(%esp),%eax
     15 	movups	(%edx),%xmm0
     16 	movups	16(%edx),%xmm1
     17 	leal	32(%edx),%edx
     18 	xorps	%xmm0,%xmm2
     19 .L000enc1_loop_1:
     20 .byte	102,15,56,220,209
     21 	decl	%ecx
     22 	movups	(%edx),%xmm1
     23 	leal	16(%edx),%edx
     24 	jnz	.L000enc1_loop_1
     25 .byte	102,15,56,221,209
     26 	pxor	%xmm0,%xmm0
     27 	pxor	%xmm1,%xmm1
     28 	movups	%xmm2,(%eax)
     29 	pxor	%xmm2,%xmm2
     30 	ret
     31 .size	aesni_encrypt,.-.L_aesni_encrypt_begin
     32 .globl	aesni_decrypt
     33 .hidden	aesni_decrypt
     34 .type	aesni_decrypt,@function
     35 .align	16
     36 aesni_decrypt:
     37 .L_aesni_decrypt_begin:
     38 	movl	4(%esp),%eax
     39 	movl	12(%esp),%edx
     40 	movups	(%eax),%xmm2
     41 	movl	240(%edx),%ecx
     42 	movl	8(%esp),%eax
     43 	movups	(%edx),%xmm0
     44 	movups	16(%edx),%xmm1
     45 	leal	32(%edx),%edx
     46 	xorps	%xmm0,%xmm2
     47 .L001dec1_loop_2:
     48 .byte	102,15,56,222,209
     49 	decl	%ecx
     50 	movups	(%edx),%xmm1
     51 	leal	16(%edx),%edx
     52 	jnz	.L001dec1_loop_2
     53 .byte	102,15,56,223,209
     54 	pxor	%xmm0,%xmm0
     55 	pxor	%xmm1,%xmm1
     56 	movups	%xmm2,(%eax)
     57 	pxor	%xmm2,%xmm2
     58 	ret
     59 .size	aesni_decrypt,.-.L_aesni_decrypt_begin
     60 .hidden	_aesni_encrypt2
     61 .type	_aesni_encrypt2,@function
     62 .align	16
     63 _aesni_encrypt2:
     64 	movups	(%edx),%xmm0
     65 	shll	$4,%ecx
     66 	movups	16(%edx),%xmm1
     67 	xorps	%xmm0,%xmm2
     68 	pxor	%xmm0,%xmm3
     69 	movups	32(%edx),%xmm0
     70 	leal	32(%edx,%ecx,1),%edx
     71 	negl	%ecx
     72 	addl	$16,%ecx
     73 .L002enc2_loop:
     74 .byte	102,15,56,220,209
     75 .byte	102,15,56,220,217
     76 	movups	(%edx,%ecx,1),%xmm1
     77 	addl	$32,%ecx
     78 .byte	102,15,56,220,208
     79 .byte	102,15,56,220,216
     80 	movups	-16(%edx,%ecx,1),%xmm0
     81 	jnz	.L002enc2_loop
     82 .byte	102,15,56,220,209
     83 .byte	102,15,56,220,217
     84 .byte	102,15,56,221,208
     85 .byte	102,15,56,221,216
     86 	ret
     87 .size	_aesni_encrypt2,.-_aesni_encrypt2
     88 .hidden	_aesni_decrypt2
     89 .type	_aesni_decrypt2,@function
     90 .align	16
     91 _aesni_decrypt2:
     92 	movups	(%edx),%xmm0
     93 	shll	$4,%ecx
     94 	movups	16(%edx),%xmm1
     95 	xorps	%xmm0,%xmm2
     96 	pxor	%xmm0,%xmm3
     97 	movups	32(%edx),%xmm0
     98 	leal	32(%edx,%ecx,1),%edx
     99 	negl	%ecx
    100 	addl	$16,%ecx
    101 .L003dec2_loop:
    102 .byte	102,15,56,222,209
    103 .byte	102,15,56,222,217
    104 	movups	(%edx,%ecx,1),%xmm1
    105 	addl	$32,%ecx
    106 .byte	102,15,56,222,208
    107 .byte	102,15,56,222,216
    108 	movups	-16(%edx,%ecx,1),%xmm0
    109 	jnz	.L003dec2_loop
    110 .byte	102,15,56,222,209
    111 .byte	102,15,56,222,217
    112 .byte	102,15,56,223,208
    113 .byte	102,15,56,223,216
    114 	ret
    115 .size	_aesni_decrypt2,.-_aesni_decrypt2
    116 .hidden	_aesni_encrypt3
    117 .type	_aesni_encrypt3,@function
    118 .align	16
    119 _aesni_encrypt3:
    120 	movups	(%edx),%xmm0
    121 	shll	$4,%ecx
    122 	movups	16(%edx),%xmm1
    123 	xorps	%xmm0,%xmm2
    124 	pxor	%xmm0,%xmm3
    125 	pxor	%xmm0,%xmm4
    126 	movups	32(%edx),%xmm0
    127 	leal	32(%edx,%ecx,1),%edx
    128 	negl	%ecx
    129 	addl	$16,%ecx
    130 .L004enc3_loop:
    131 .byte	102,15,56,220,209
    132 .byte	102,15,56,220,217
    133 .byte	102,15,56,220,225
    134 	movups	(%edx,%ecx,1),%xmm1
    135 	addl	$32,%ecx
    136 .byte	102,15,56,220,208
    137 .byte	102,15,56,220,216
    138 .byte	102,15,56,220,224
    139 	movups	-16(%edx,%ecx,1),%xmm0
    140 	jnz	.L004enc3_loop
    141 .byte	102,15,56,220,209
    142 .byte	102,15,56,220,217
    143 .byte	102,15,56,220,225
    144 .byte	102,15,56,221,208
    145 .byte	102,15,56,221,216
    146 .byte	102,15,56,221,224
    147 	ret
    148 .size	_aesni_encrypt3,.-_aesni_encrypt3
    149 .hidden	_aesni_decrypt3
    150 .type	_aesni_decrypt3,@function
    151 .align	16
    152 _aesni_decrypt3:
    153 	movups	(%edx),%xmm0
    154 	shll	$4,%ecx
    155 	movups	16(%edx),%xmm1
    156 	xorps	%xmm0,%xmm2
    157 	pxor	%xmm0,%xmm3
    158 	pxor	%xmm0,%xmm4
    159 	movups	32(%edx),%xmm0
    160 	leal	32(%edx,%ecx,1),%edx
    161 	negl	%ecx
    162 	addl	$16,%ecx
    163 .L005dec3_loop:
    164 .byte	102,15,56,222,209
    165 .byte	102,15,56,222,217
    166 .byte	102,15,56,222,225
    167 	movups	(%edx,%ecx,1),%xmm1
    168 	addl	$32,%ecx
    169 .byte	102,15,56,222,208
    170 .byte	102,15,56,222,216
    171 .byte	102,15,56,222,224
    172 	movups	-16(%edx,%ecx,1),%xmm0
    173 	jnz	.L005dec3_loop
    174 .byte	102,15,56,222,209
    175 .byte	102,15,56,222,217
    176 .byte	102,15,56,222,225
    177 .byte	102,15,56,223,208
    178 .byte	102,15,56,223,216
    179 .byte	102,15,56,223,224
    180 	ret
    181 .size	_aesni_decrypt3,.-_aesni_decrypt3
    182 .hidden	_aesni_encrypt4
    183 .type	_aesni_encrypt4,@function
    184 .align	16
    185 _aesni_encrypt4:
    186 	movups	(%edx),%xmm0
    187 	movups	16(%edx),%xmm1
    188 	shll	$4,%ecx
    189 	xorps	%xmm0,%xmm2
    190 	pxor	%xmm0,%xmm3
    191 	pxor	%xmm0,%xmm4
    192 	pxor	%xmm0,%xmm5
    193 	movups	32(%edx),%xmm0
    194 	leal	32(%edx,%ecx,1),%edx
    195 	negl	%ecx
    196 .byte	15,31,64,0
    197 	addl	$16,%ecx
    198 .L006enc4_loop:
    199 .byte	102,15,56,220,209
    200 .byte	102,15,56,220,217
    201 .byte	102,15,56,220,225
    202 .byte	102,15,56,220,233
    203 	movups	(%edx,%ecx,1),%xmm1
    204 	addl	$32,%ecx
    205 .byte	102,15,56,220,208
    206 .byte	102,15,56,220,216
    207 .byte	102,15,56,220,224
    208 .byte	102,15,56,220,232
    209 	movups	-16(%edx,%ecx,1),%xmm0
    210 	jnz	.L006enc4_loop
    211 .byte	102,15,56,220,209
    212 .byte	102,15,56,220,217
    213 .byte	102,15,56,220,225
    214 .byte	102,15,56,220,233
    215 .byte	102,15,56,221,208
    216 .byte	102,15,56,221,216
    217 .byte	102,15,56,221,224
    218 .byte	102,15,56,221,232
    219 	ret
    220 .size	_aesni_encrypt4,.-_aesni_encrypt4
    221 .hidden	_aesni_decrypt4
    222 .type	_aesni_decrypt4,@function
    223 .align	16
    224 _aesni_decrypt4:
    225 	movups	(%edx),%xmm0
    226 	movups	16(%edx),%xmm1
    227 	shll	$4,%ecx
    228 	xorps	%xmm0,%xmm2
    229 	pxor	%xmm0,%xmm3
    230 	pxor	%xmm0,%xmm4
    231 	pxor	%xmm0,%xmm5
    232 	movups	32(%edx),%xmm0
    233 	leal	32(%edx,%ecx,1),%edx
    234 	negl	%ecx
    235 .byte	15,31,64,0
    236 	addl	$16,%ecx
    237 .L007dec4_loop:
    238 .byte	102,15,56,222,209
    239 .byte	102,15,56,222,217
    240 .byte	102,15,56,222,225
    241 .byte	102,15,56,222,233
    242 	movups	(%edx,%ecx,1),%xmm1
    243 	addl	$32,%ecx
    244 .byte	102,15,56,222,208
    245 .byte	102,15,56,222,216
    246 .byte	102,15,56,222,224
    247 .byte	102,15,56,222,232
    248 	movups	-16(%edx,%ecx,1),%xmm0
    249 	jnz	.L007dec4_loop
    250 .byte	102,15,56,222,209
    251 .byte	102,15,56,222,217
    252 .byte	102,15,56,222,225
    253 .byte	102,15,56,222,233
    254 .byte	102,15,56,223,208
    255 .byte	102,15,56,223,216
    256 .byte	102,15,56,223,224
    257 .byte	102,15,56,223,232
    258 	ret
    259 .size	_aesni_decrypt4,.-_aesni_decrypt4
    260 .hidden	_aesni_encrypt6
    261 .type	_aesni_encrypt6,@function
    262 .align	16
    263 _aesni_encrypt6:
    264 	movups	(%edx),%xmm0
    265 	shll	$4,%ecx
    266 	movups	16(%edx),%xmm1
    267 	xorps	%xmm0,%xmm2
    268 	pxor	%xmm0,%xmm3
    269 	pxor	%xmm0,%xmm4
    270 .byte	102,15,56,220,209
    271 	pxor	%xmm0,%xmm5
    272 	pxor	%xmm0,%xmm6
    273 .byte	102,15,56,220,217
    274 	leal	32(%edx,%ecx,1),%edx
    275 	negl	%ecx
    276 .byte	102,15,56,220,225
    277 	pxor	%xmm0,%xmm7
    278 	movups	(%edx,%ecx,1),%xmm0
    279 	addl	$16,%ecx
    280 	jmp	.L008_aesni_encrypt6_inner
    281 .align	16
    282 .L009enc6_loop:
    283 .byte	102,15,56,220,209
    284 .byte	102,15,56,220,217
    285 .byte	102,15,56,220,225
    286 .L008_aesni_encrypt6_inner:
    287 .byte	102,15,56,220,233
    288 .byte	102,15,56,220,241
    289 .byte	102,15,56,220,249
    290 .L_aesni_encrypt6_enter:
    291 	movups	(%edx,%ecx,1),%xmm1
    292 	addl	$32,%ecx
    293 .byte	102,15,56,220,208
    294 .byte	102,15,56,220,216
    295 .byte	102,15,56,220,224
    296 .byte	102,15,56,220,232
    297 .byte	102,15,56,220,240
    298 .byte	102,15,56,220,248
    299 	movups	-16(%edx,%ecx,1),%xmm0
    300 	jnz	.L009enc6_loop
    301 .byte	102,15,56,220,209
    302 .byte	102,15,56,220,217
    303 .byte	102,15,56,220,225
    304 .byte	102,15,56,220,233
    305 .byte	102,15,56,220,241
    306 .byte	102,15,56,220,249
    307 .byte	102,15,56,221,208
    308 .byte	102,15,56,221,216
    309 .byte	102,15,56,221,224
    310 .byte	102,15,56,221,232
    311 .byte	102,15,56,221,240
    312 .byte	102,15,56,221,248
    313 	ret
    314 .size	_aesni_encrypt6,.-_aesni_encrypt6
    315 .hidden	_aesni_decrypt6
    316 .type	_aesni_decrypt6,@function
    317 .align	16
    318 _aesni_decrypt6:
    319 	movups	(%edx),%xmm0
    320 	shll	$4,%ecx
    321 	movups	16(%edx),%xmm1
    322 	xorps	%xmm0,%xmm2
    323 	pxor	%xmm0,%xmm3
    324 	pxor	%xmm0,%xmm4
    325 .byte	102,15,56,222,209
    326 	pxor	%xmm0,%xmm5
    327 	pxor	%xmm0,%xmm6
    328 .byte	102,15,56,222,217
    329 	leal	32(%edx,%ecx,1),%edx
    330 	negl	%ecx
    331 .byte	102,15,56,222,225
    332 	pxor	%xmm0,%xmm7
    333 	movups	(%edx,%ecx,1),%xmm0
    334 	addl	$16,%ecx
    335 	jmp	.L010_aesni_decrypt6_inner
    336 .align	16
    337 .L011dec6_loop:
    338 .byte	102,15,56,222,209
    339 .byte	102,15,56,222,217
    340 .byte	102,15,56,222,225
    341 .L010_aesni_decrypt6_inner:
    342 .byte	102,15,56,222,233
    343 .byte	102,15,56,222,241
    344 .byte	102,15,56,222,249
    345 .L_aesni_decrypt6_enter:
    346 	movups	(%edx,%ecx,1),%xmm1
    347 	addl	$32,%ecx
    348 .byte	102,15,56,222,208
    349 .byte	102,15,56,222,216
    350 .byte	102,15,56,222,224
    351 .byte	102,15,56,222,232
    352 .byte	102,15,56,222,240
    353 .byte	102,15,56,222,248
    354 	movups	-16(%edx,%ecx,1),%xmm0
    355 	jnz	.L011dec6_loop
    356 .byte	102,15,56,222,209
    357 .byte	102,15,56,222,217
    358 .byte	102,15,56,222,225
    359 .byte	102,15,56,222,233
    360 .byte	102,15,56,222,241
    361 .byte	102,15,56,222,249
    362 .byte	102,15,56,223,208
    363 .byte	102,15,56,223,216
    364 .byte	102,15,56,223,224
    365 .byte	102,15,56,223,232
    366 .byte	102,15,56,223,240
    367 .byte	102,15,56,223,248
    368 	ret
    369 .size	_aesni_decrypt6,.-_aesni_decrypt6
    370 .globl	aesni_ecb_encrypt
    371 .hidden	aesni_ecb_encrypt
    372 .type	aesni_ecb_encrypt,@function
    373 .align	16
    374 aesni_ecb_encrypt:
    375 .L_aesni_ecb_encrypt_begin:
    376 	pushl	%ebp
    377 	pushl	%ebx
    378 	pushl	%esi
    379 	pushl	%edi
    380 	movl	20(%esp),%esi
    381 	movl	24(%esp),%edi
    382 	movl	28(%esp),%eax
    383 	movl	32(%esp),%edx
    384 	movl	36(%esp),%ebx
    385 	andl	$-16,%eax
    386 	jz	.L012ecb_ret
    387 	movl	240(%edx),%ecx
    388 	testl	%ebx,%ebx
    389 	jz	.L013ecb_decrypt
    390 	movl	%edx,%ebp
    391 	movl	%ecx,%ebx
    392 	cmpl	$96,%eax
    393 	jb	.L014ecb_enc_tail
    394 	movdqu	(%esi),%xmm2
    395 	movdqu	16(%esi),%xmm3
    396 	movdqu	32(%esi),%xmm4
    397 	movdqu	48(%esi),%xmm5
    398 	movdqu	64(%esi),%xmm6
    399 	movdqu	80(%esi),%xmm7
    400 	leal	96(%esi),%esi
    401 	subl	$96,%eax
    402 	jmp	.L015ecb_enc_loop6_enter
    403 .align	16
    404 .L016ecb_enc_loop6:
    405 	movups	%xmm2,(%edi)
    406 	movdqu	(%esi),%xmm2
    407 	movups	%xmm3,16(%edi)
    408 	movdqu	16(%esi),%xmm3
    409 	movups	%xmm4,32(%edi)
    410 	movdqu	32(%esi),%xmm4
    411 	movups	%xmm5,48(%edi)
    412 	movdqu	48(%esi),%xmm5
    413 	movups	%xmm6,64(%edi)
    414 	movdqu	64(%esi),%xmm6
    415 	movups	%xmm7,80(%edi)
    416 	leal	96(%edi),%edi
    417 	movdqu	80(%esi),%xmm7
    418 	leal	96(%esi),%esi
    419 .L015ecb_enc_loop6_enter:
    420 	call	_aesni_encrypt6
    421 	movl	%ebp,%edx
    422 	movl	%ebx,%ecx
    423 	subl	$96,%eax
    424 	jnc	.L016ecb_enc_loop6
    425 	movups	%xmm2,(%edi)
    426 	movups	%xmm3,16(%edi)
    427 	movups	%xmm4,32(%edi)
    428 	movups	%xmm5,48(%edi)
    429 	movups	%xmm6,64(%edi)
    430 	movups	%xmm7,80(%edi)
    431 	leal	96(%edi),%edi
    432 	addl	$96,%eax
    433 	jz	.L012ecb_ret
    434 .L014ecb_enc_tail:
    435 	movups	(%esi),%xmm2
    436 	cmpl	$32,%eax
    437 	jb	.L017ecb_enc_one
    438 	movups	16(%esi),%xmm3
    439 	je	.L018ecb_enc_two
    440 	movups	32(%esi),%xmm4
    441 	cmpl	$64,%eax
    442 	jb	.L019ecb_enc_three
    443 	movups	48(%esi),%xmm5
    444 	je	.L020ecb_enc_four
    445 	movups	64(%esi),%xmm6
    446 	xorps	%xmm7,%xmm7
    447 	call	_aesni_encrypt6
    448 	movups	%xmm2,(%edi)
    449 	movups	%xmm3,16(%edi)
    450 	movups	%xmm4,32(%edi)
    451 	movups	%xmm5,48(%edi)
    452 	movups	%xmm6,64(%edi)
    453 	jmp	.L012ecb_ret
    454 .align	16
    455 .L017ecb_enc_one:
    456 	movups	(%edx),%xmm0
    457 	movups	16(%edx),%xmm1
    458 	leal	32(%edx),%edx
    459 	xorps	%xmm0,%xmm2
    460 .L021enc1_loop_3:
    461 .byte	102,15,56,220,209
    462 	decl	%ecx
    463 	movups	(%edx),%xmm1
    464 	leal	16(%edx),%edx
    465 	jnz	.L021enc1_loop_3
    466 .byte	102,15,56,221,209
    467 	movups	%xmm2,(%edi)
    468 	jmp	.L012ecb_ret
    469 .align	16
    470 .L018ecb_enc_two:
    471 	call	_aesni_encrypt2
    472 	movups	%xmm2,(%edi)
    473 	movups	%xmm3,16(%edi)
    474 	jmp	.L012ecb_ret
    475 .align	16
    476 .L019ecb_enc_three:
    477 	call	_aesni_encrypt3
    478 	movups	%xmm2,(%edi)
    479 	movups	%xmm3,16(%edi)
    480 	movups	%xmm4,32(%edi)
    481 	jmp	.L012ecb_ret
    482 .align	16
    483 .L020ecb_enc_four:
    484 	call	_aesni_encrypt4
    485 	movups	%xmm2,(%edi)
    486 	movups	%xmm3,16(%edi)
    487 	movups	%xmm4,32(%edi)
    488 	movups	%xmm5,48(%edi)
    489 	jmp	.L012ecb_ret
    490 .align	16
    491 .L013ecb_decrypt:
    492 	movl	%edx,%ebp
    493 	movl	%ecx,%ebx
    494 	cmpl	$96,%eax
    495 	jb	.L022ecb_dec_tail
    496 	movdqu	(%esi),%xmm2
    497 	movdqu	16(%esi),%xmm3
    498 	movdqu	32(%esi),%xmm4
    499 	movdqu	48(%esi),%xmm5
    500 	movdqu	64(%esi),%xmm6
    501 	movdqu	80(%esi),%xmm7
    502 	leal	96(%esi),%esi
    503 	subl	$96,%eax
    504 	jmp	.L023ecb_dec_loop6_enter
    505 .align	16
    506 .L024ecb_dec_loop6:
    507 	movups	%xmm2,(%edi)
    508 	movdqu	(%esi),%xmm2
    509 	movups	%xmm3,16(%edi)
    510 	movdqu	16(%esi),%xmm3
    511 	movups	%xmm4,32(%edi)
    512 	movdqu	32(%esi),%xmm4
    513 	movups	%xmm5,48(%edi)
    514 	movdqu	48(%esi),%xmm5
    515 	movups	%xmm6,64(%edi)
    516 	movdqu	64(%esi),%xmm6
    517 	movups	%xmm7,80(%edi)
    518 	leal	96(%edi),%edi
    519 	movdqu	80(%esi),%xmm7
    520 	leal	96(%esi),%esi
    521 .L023ecb_dec_loop6_enter:
    522 	call	_aesni_decrypt6
    523 	movl	%ebp,%edx
    524 	movl	%ebx,%ecx
    525 	subl	$96,%eax
    526 	jnc	.L024ecb_dec_loop6
    527 	movups	%xmm2,(%edi)
    528 	movups	%xmm3,16(%edi)
    529 	movups	%xmm4,32(%edi)
    530 	movups	%xmm5,48(%edi)
    531 	movups	%xmm6,64(%edi)
    532 	movups	%xmm7,80(%edi)
    533 	leal	96(%edi),%edi
    534 	addl	$96,%eax
    535 	jz	.L012ecb_ret
    536 .L022ecb_dec_tail:
    537 	movups	(%esi),%xmm2
    538 	cmpl	$32,%eax
    539 	jb	.L025ecb_dec_one
    540 	movups	16(%esi),%xmm3
    541 	je	.L026ecb_dec_two
    542 	movups	32(%esi),%xmm4
    543 	cmpl	$64,%eax
    544 	jb	.L027ecb_dec_three
    545 	movups	48(%esi),%xmm5
    546 	je	.L028ecb_dec_four
    547 	movups	64(%esi),%xmm6
    548 	xorps	%xmm7,%xmm7
    549 	call	_aesni_decrypt6
    550 	movups	%xmm2,(%edi)
    551 	movups	%xmm3,16(%edi)
    552 	movups	%xmm4,32(%edi)
    553 	movups	%xmm5,48(%edi)
    554 	movups	%xmm6,64(%edi)
    555 	jmp	.L012ecb_ret
    556 .align	16
    557 .L025ecb_dec_one:
    558 	movups	(%edx),%xmm0
    559 	movups	16(%edx),%xmm1
    560 	leal	32(%edx),%edx
    561 	xorps	%xmm0,%xmm2
    562 .L029dec1_loop_4:
    563 .byte	102,15,56,222,209
    564 	decl	%ecx
    565 	movups	(%edx),%xmm1
    566 	leal	16(%edx),%edx
    567 	jnz	.L029dec1_loop_4
    568 .byte	102,15,56,223,209
    569 	movups	%xmm2,(%edi)
    570 	jmp	.L012ecb_ret
    571 .align	16
    572 .L026ecb_dec_two:
    573 	call	_aesni_decrypt2
    574 	movups	%xmm2,(%edi)
    575 	movups	%xmm3,16(%edi)
    576 	jmp	.L012ecb_ret
    577 .align	16
    578 .L027ecb_dec_three:
    579 	call	_aesni_decrypt3
    580 	movups	%xmm2,(%edi)
    581 	movups	%xmm3,16(%edi)
    582 	movups	%xmm4,32(%edi)
    583 	jmp	.L012ecb_ret
    584 .align	16
    585 .L028ecb_dec_four:
    586 	call	_aesni_decrypt4
    587 	movups	%xmm2,(%edi)
    588 	movups	%xmm3,16(%edi)
    589 	movups	%xmm4,32(%edi)
    590 	movups	%xmm5,48(%edi)
    591 .L012ecb_ret:
    592 	pxor	%xmm0,%xmm0
    593 	pxor	%xmm1,%xmm1
    594 	pxor	%xmm2,%xmm2
    595 	pxor	%xmm3,%xmm3
    596 	pxor	%xmm4,%xmm4
    597 	pxor	%xmm5,%xmm5
    598 	pxor	%xmm6,%xmm6
    599 	pxor	%xmm7,%xmm7
    600 	popl	%edi
    601 	popl	%esi
    602 	popl	%ebx
    603 	popl	%ebp
    604 	ret
    605 .size	aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin
    606 .globl	aesni_ccm64_encrypt_blocks
    607 .hidden	aesni_ccm64_encrypt_blocks
    608 .type	aesni_ccm64_encrypt_blocks,@function
    609 .align	16
    610 aesni_ccm64_encrypt_blocks:
    611 .L_aesni_ccm64_encrypt_blocks_begin:
    612 	pushl	%ebp
    613 	pushl	%ebx
    614 	pushl	%esi
    615 	pushl	%edi
    616 	movl	20(%esp),%esi
    617 	movl	24(%esp),%edi
    618 	movl	28(%esp),%eax
    619 	movl	32(%esp),%edx
    620 	movl	36(%esp),%ebx
    621 	movl	40(%esp),%ecx
    622 	movl	%esp,%ebp
    623 	subl	$60,%esp
    624 	andl	$-16,%esp
    625 	movl	%ebp,48(%esp)
    626 	movdqu	(%ebx),%xmm7
    627 	movdqu	(%ecx),%xmm3
    628 	movl	240(%edx),%ecx
    629 	movl	$202182159,(%esp)
    630 	movl	$134810123,4(%esp)
    631 	movl	$67438087,8(%esp)
    632 	movl	$66051,12(%esp)
    633 	movl	$1,%ebx
    634 	xorl	%ebp,%ebp
    635 	movl	%ebx,16(%esp)
    636 	movl	%ebp,20(%esp)
    637 	movl	%ebp,24(%esp)
    638 	movl	%ebp,28(%esp)
    639 	shll	$4,%ecx
    640 	movl	$16,%ebx
    641 	leal	(%edx),%ebp
    642 	movdqa	(%esp),%xmm5
    643 	movdqa	%xmm7,%xmm2
    644 	leal	32(%edx,%ecx,1),%edx
    645 	subl	%ecx,%ebx
    646 .byte	102,15,56,0,253
    647 .L030ccm64_enc_outer:
    648 	movups	(%ebp),%xmm0
    649 	movl	%ebx,%ecx
    650 	movups	(%esi),%xmm6
    651 	xorps	%xmm0,%xmm2
    652 	movups	16(%ebp),%xmm1
    653 	xorps	%xmm6,%xmm0
    654 	xorps	%xmm0,%xmm3
    655 	movups	32(%ebp),%xmm0
    656 .L031ccm64_enc2_loop:
    657 .byte	102,15,56,220,209
    658 .byte	102,15,56,220,217
    659 	movups	(%edx,%ecx,1),%xmm1
    660 	addl	$32,%ecx
    661 .byte	102,15,56,220,208
    662 .byte	102,15,56,220,216
    663 	movups	-16(%edx,%ecx,1),%xmm0
    664 	jnz	.L031ccm64_enc2_loop
    665 .byte	102,15,56,220,209
    666 .byte	102,15,56,220,217
    667 	paddq	16(%esp),%xmm7
    668 	decl	%eax
    669 .byte	102,15,56,221,208
    670 .byte	102,15,56,221,216
    671 	leal	16(%esi),%esi
    672 	xorps	%xmm2,%xmm6
    673 	movdqa	%xmm7,%xmm2
    674 	movups	%xmm6,(%edi)
    675 .byte	102,15,56,0,213
    676 	leal	16(%edi),%edi
    677 	jnz	.L030ccm64_enc_outer
    678 	movl	48(%esp),%esp
    679 	movl	40(%esp),%edi
    680 	movups	%xmm3,(%edi)
    681 	pxor	%xmm0,%xmm0
    682 	pxor	%xmm1,%xmm1
    683 	pxor	%xmm2,%xmm2
    684 	pxor	%xmm3,%xmm3
    685 	pxor	%xmm4,%xmm4
    686 	pxor	%xmm5,%xmm5
    687 	pxor	%xmm6,%xmm6
    688 	pxor	%xmm7,%xmm7
    689 	popl	%edi
    690 	popl	%esi
    691 	popl	%ebx
    692 	popl	%ebp
    693 	ret
    694 .size	aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin
    695 .globl	aesni_ccm64_decrypt_blocks
    696 .hidden	aesni_ccm64_decrypt_blocks
    697 .type	aesni_ccm64_decrypt_blocks,@function
    698 .align	16
    699 aesni_ccm64_decrypt_blocks:
    700 .L_aesni_ccm64_decrypt_blocks_begin:
    701 	pushl	%ebp
    702 	pushl	%ebx
    703 	pushl	%esi
    704 	pushl	%edi
    705 	movl	20(%esp),%esi
    706 	movl	24(%esp),%edi
    707 	movl	28(%esp),%eax
    708 	movl	32(%esp),%edx
    709 	movl	36(%esp),%ebx
    710 	movl	40(%esp),%ecx
    711 	movl	%esp,%ebp
    712 	subl	$60,%esp
    713 	andl	$-16,%esp
    714 	movl	%ebp,48(%esp)
    715 	movdqu	(%ebx),%xmm7
    716 	movdqu	(%ecx),%xmm3
    717 	movl	240(%edx),%ecx
    718 	movl	$202182159,(%esp)
    719 	movl	$134810123,4(%esp)
    720 	movl	$67438087,8(%esp)
    721 	movl	$66051,12(%esp)
    722 	movl	$1,%ebx
    723 	xorl	%ebp,%ebp
    724 	movl	%ebx,16(%esp)
    725 	movl	%ebp,20(%esp)
    726 	movl	%ebp,24(%esp)
    727 	movl	%ebp,28(%esp)
    728 	movdqa	(%esp),%xmm5
    729 	movdqa	%xmm7,%xmm2
    730 	movl	%edx,%ebp
    731 	movl	%ecx,%ebx
    732 .byte	102,15,56,0,253
    733 	movups	(%edx),%xmm0
    734 	movups	16(%edx),%xmm1
    735 	leal	32(%edx),%edx
    736 	xorps	%xmm0,%xmm2
    737 .L032enc1_loop_5:
    738 .byte	102,15,56,220,209
    739 	decl	%ecx
    740 	movups	(%edx),%xmm1
    741 	leal	16(%edx),%edx
    742 	jnz	.L032enc1_loop_5
    743 .byte	102,15,56,221,209
    744 	shll	$4,%ebx
    745 	movl	$16,%ecx
    746 	movups	(%esi),%xmm6
    747 	paddq	16(%esp),%xmm7
    748 	leal	16(%esi),%esi
    749 	subl	%ebx,%ecx
    750 	leal	32(%ebp,%ebx,1),%edx
    751 	movl	%ecx,%ebx
    752 	jmp	.L033ccm64_dec_outer
    753 .align	16
    754 .L033ccm64_dec_outer:
    755 	xorps	%xmm2,%xmm6
    756 	movdqa	%xmm7,%xmm2
    757 	movups	%xmm6,(%edi)
    758 	leal	16(%edi),%edi
    759 .byte	102,15,56,0,213
    760 	subl	$1,%eax
    761 	jz	.L034ccm64_dec_break
    762 	movups	(%ebp),%xmm0
    763 	movl	%ebx,%ecx
    764 	movups	16(%ebp),%xmm1
    765 	xorps	%xmm0,%xmm6
    766 	xorps	%xmm0,%xmm2
    767 	xorps	%xmm6,%xmm3
    768 	movups	32(%ebp),%xmm0
    769 .L035ccm64_dec2_loop:
    770 .byte	102,15,56,220,209
    771 .byte	102,15,56,220,217
    772 	movups	(%edx,%ecx,1),%xmm1
    773 	addl	$32,%ecx
    774 .byte	102,15,56,220,208
    775 .byte	102,15,56,220,216
    776 	movups	-16(%edx,%ecx,1),%xmm0
    777 	jnz	.L035ccm64_dec2_loop
    778 	movups	(%esi),%xmm6
    779 	paddq	16(%esp),%xmm7
    780 .byte	102,15,56,220,209
    781 .byte	102,15,56,220,217
    782 .byte	102,15,56,221,208
    783 .byte	102,15,56,221,216
    784 	leal	16(%esi),%esi
    785 	jmp	.L033ccm64_dec_outer
    786 .align	16
    787 .L034ccm64_dec_break:
    788 	movl	240(%ebp),%ecx
    789 	movl	%ebp,%edx
    790 	movups	(%edx),%xmm0
    791 	movups	16(%edx),%xmm1
    792 	xorps	%xmm0,%xmm6
    793 	leal	32(%edx),%edx
    794 	xorps	%xmm6,%xmm3
    795 .L036enc1_loop_6:
    796 .byte	102,15,56,220,217
    797 	decl	%ecx
    798 	movups	(%edx),%xmm1
    799 	leal	16(%edx),%edx
    800 	jnz	.L036enc1_loop_6
    801 .byte	102,15,56,221,217
    802 	movl	48(%esp),%esp
    803 	movl	40(%esp),%edi
    804 	movups	%xmm3,(%edi)
    805 	pxor	%xmm0,%xmm0
    806 	pxor	%xmm1,%xmm1
    807 	pxor	%xmm2,%xmm2
    808 	pxor	%xmm3,%xmm3
    809 	pxor	%xmm4,%xmm4
    810 	pxor	%xmm5,%xmm5
    811 	pxor	%xmm6,%xmm6
    812 	pxor	%xmm7,%xmm7
    813 	popl	%edi
    814 	popl	%esi
    815 	popl	%ebx
    816 	popl	%ebp
    817 	ret
    818 .size	aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin
    819 .globl	aesni_ctr32_encrypt_blocks
    820 .hidden	aesni_ctr32_encrypt_blocks
    821 .type	aesni_ctr32_encrypt_blocks,@function
    822 .align	16
    823 aesni_ctr32_encrypt_blocks:
    824 .L_aesni_ctr32_encrypt_blocks_begin:
    825 	pushl	%ebp
    826 	pushl	%ebx
    827 	pushl	%esi
    828 	pushl	%edi
    829 	movl	20(%esp),%esi
    830 	movl	24(%esp),%edi
    831 	movl	28(%esp),%eax
    832 	movl	32(%esp),%edx
    833 	movl	36(%esp),%ebx
    834 	movl	%esp,%ebp
    835 	subl	$88,%esp
    836 	andl	$-16,%esp
    837 	movl	%ebp,80(%esp)
    838 	cmpl	$1,%eax
    839 	je	.L037ctr32_one_shortcut
    840 	movdqu	(%ebx),%xmm7
    841 	movl	$202182159,(%esp)
    842 	movl	$134810123,4(%esp)
    843 	movl	$67438087,8(%esp)
    844 	movl	$66051,12(%esp)
    845 	movl	$6,%ecx
    846 	xorl	%ebp,%ebp
    847 	movl	%ecx,16(%esp)
    848 	movl	%ecx,20(%esp)
    849 	movl	%ecx,24(%esp)
    850 	movl	%ebp,28(%esp)
    851 .byte	102,15,58,22,251,3
    852 .byte	102,15,58,34,253,3
    853 	movl	240(%edx),%ecx
    854 	bswap	%ebx
    855 	pxor	%xmm0,%xmm0
    856 	pxor	%xmm1,%xmm1
    857 	movdqa	(%esp),%xmm2
    858 .byte	102,15,58,34,195,0
    859 	leal	3(%ebx),%ebp
    860 .byte	102,15,58,34,205,0
    861 	incl	%ebx
    862 .byte	102,15,58,34,195,1
    863 	incl	%ebp
    864 .byte	102,15,58,34,205,1
    865 	incl	%ebx
    866 .byte	102,15,58,34,195,2
    867 	incl	%ebp
    868 .byte	102,15,58,34,205,2
    869 	movdqa	%xmm0,48(%esp)
    870 .byte	102,15,56,0,194
    871 	movdqu	(%edx),%xmm6
    872 	movdqa	%xmm1,64(%esp)
    873 .byte	102,15,56,0,202
    874 	pshufd	$192,%xmm0,%xmm2
    875 	pshufd	$128,%xmm0,%xmm3
    876 	cmpl	$6,%eax
    877 	jb	.L038ctr32_tail
    878 	pxor	%xmm6,%xmm7
    879 	shll	$4,%ecx
    880 	movl	$16,%ebx
    881 	movdqa	%xmm7,32(%esp)
    882 	movl	%edx,%ebp
    883 	subl	%ecx,%ebx
    884 	leal	32(%edx,%ecx,1),%edx
    885 	subl	$6,%eax
    886 	jmp	.L039ctr32_loop6
    887 .align	16
    888 .L039ctr32_loop6:
    889 	pshufd	$64,%xmm0,%xmm4
    890 	movdqa	32(%esp),%xmm0
    891 	pshufd	$192,%xmm1,%xmm5
    892 	pxor	%xmm0,%xmm2
    893 	pshufd	$128,%xmm1,%xmm6
    894 	pxor	%xmm0,%xmm3
    895 	pshufd	$64,%xmm1,%xmm7
    896 	movups	16(%ebp),%xmm1
    897 	pxor	%xmm0,%xmm4
    898 	pxor	%xmm0,%xmm5
    899 .byte	102,15,56,220,209
    900 	pxor	%xmm0,%xmm6
    901 	pxor	%xmm0,%xmm7
    902 .byte	102,15,56,220,217
    903 	movups	32(%ebp),%xmm0
    904 	movl	%ebx,%ecx
    905 .byte	102,15,56,220,225
    906 .byte	102,15,56,220,233
    907 .byte	102,15,56,220,241
    908 .byte	102,15,56,220,249
    909 	call	.L_aesni_encrypt6_enter
    910 	movups	(%esi),%xmm1
    911 	movups	16(%esi),%xmm0
    912 	xorps	%xmm1,%xmm2
    913 	movups	32(%esi),%xmm1
    914 	xorps	%xmm0,%xmm3
    915 	movups	%xmm2,(%edi)
    916 	movdqa	16(%esp),%xmm0
    917 	xorps	%xmm1,%xmm4
    918 	movdqa	64(%esp),%xmm1
    919 	movups	%xmm3,16(%edi)
    920 	movups	%xmm4,32(%edi)
    921 	paddd	%xmm0,%xmm1
    922 	paddd	48(%esp),%xmm0
    923 	movdqa	(%esp),%xmm2
    924 	movups	48(%esi),%xmm3
    925 	movups	64(%esi),%xmm4
    926 	xorps	%xmm3,%xmm5
    927 	movups	80(%esi),%xmm3
    928 	leal	96(%esi),%esi
    929 	movdqa	%xmm0,48(%esp)
    930 .byte	102,15,56,0,194
    931 	xorps	%xmm4,%xmm6
    932 	movups	%xmm5,48(%edi)
    933 	xorps	%xmm3,%xmm7
    934 	movdqa	%xmm1,64(%esp)
    935 .byte	102,15,56,0,202
    936 	movups	%xmm6,64(%edi)
    937 	pshufd	$192,%xmm0,%xmm2
    938 	movups	%xmm7,80(%edi)
    939 	leal	96(%edi),%edi
    940 	pshufd	$128,%xmm0,%xmm3
    941 	subl	$6,%eax
    942 	jnc	.L039ctr32_loop6
    943 	addl	$6,%eax
    944 	jz	.L040ctr32_ret
    945 	movdqu	(%ebp),%xmm7
    946 	movl	%ebp,%edx
    947 	pxor	32(%esp),%xmm7
    948 	movl	240(%ebp),%ecx
    949 .L038ctr32_tail:
    950 	por	%xmm7,%xmm2
    951 	cmpl	$2,%eax
    952 	jb	.L041ctr32_one
    953 	pshufd	$64,%xmm0,%xmm4
    954 	por	%xmm7,%xmm3
    955 	je	.L042ctr32_two
    956 	pshufd	$192,%xmm1,%xmm5
    957 	por	%xmm7,%xmm4
    958 	cmpl	$4,%eax
    959 	jb	.L043ctr32_three
    960 	pshufd	$128,%xmm1,%xmm6
    961 	por	%xmm7,%xmm5
    962 	je	.L044ctr32_four
    963 	por	%xmm7,%xmm6
    964 	call	_aesni_encrypt6
    965 	movups	(%esi),%xmm1
    966 	movups	16(%esi),%xmm0
    967 	xorps	%xmm1,%xmm2
    968 	movups	32(%esi),%xmm1
    969 	xorps	%xmm0,%xmm3
    970 	movups	48(%esi),%xmm0
    971 	xorps	%xmm1,%xmm4
    972 	movups	64(%esi),%xmm1
    973 	xorps	%xmm0,%xmm5
    974 	movups	%xmm2,(%edi)
    975 	xorps	%xmm1,%xmm6
    976 	movups	%xmm3,16(%edi)
    977 	movups	%xmm4,32(%edi)
    978 	movups	%xmm5,48(%edi)
    979 	movups	%xmm6,64(%edi)
    980 	jmp	.L040ctr32_ret
    981 .align	16
    982 .L037ctr32_one_shortcut:
    983 	movups	(%ebx),%xmm2
    984 	movl	240(%edx),%ecx
    985 .L041ctr32_one:
    986 	movups	(%edx),%xmm0
    987 	movups	16(%edx),%xmm1
    988 	leal	32(%edx),%edx
    989 	xorps	%xmm0,%xmm2
    990 .L045enc1_loop_7:
    991 .byte	102,15,56,220,209
    992 	decl	%ecx
    993 	movups	(%edx),%xmm1
    994 	leal	16(%edx),%edx
    995 	jnz	.L045enc1_loop_7
    996 .byte	102,15,56,221,209
    997 	movups	(%esi),%xmm6
    998 	xorps	%xmm2,%xmm6
    999 	movups	%xmm6,(%edi)
   1000 	jmp	.L040ctr32_ret
   1001 .align	16
   1002 .L042ctr32_two:
   1003 	call	_aesni_encrypt2
   1004 	movups	(%esi),%xmm5
   1005 	movups	16(%esi),%xmm6
   1006 	xorps	%xmm5,%xmm2
   1007 	xorps	%xmm6,%xmm3
   1008 	movups	%xmm2,(%edi)
   1009 	movups	%xmm3,16(%edi)
   1010 	jmp	.L040ctr32_ret
   1011 .align	16
   1012 .L043ctr32_three:
   1013 	call	_aesni_encrypt3
   1014 	movups	(%esi),%xmm5
   1015 	movups	16(%esi),%xmm6
   1016 	xorps	%xmm5,%xmm2
   1017 	movups	32(%esi),%xmm7
   1018 	xorps	%xmm6,%xmm3
   1019 	movups	%xmm2,(%edi)
   1020 	xorps	%xmm7,%xmm4
   1021 	movups	%xmm3,16(%edi)
   1022 	movups	%xmm4,32(%edi)
   1023 	jmp	.L040ctr32_ret
   1024 .align	16
   1025 .L044ctr32_four:
   1026 	call	_aesni_encrypt4
   1027 	movups	(%esi),%xmm6
   1028 	movups	16(%esi),%xmm7
   1029 	movups	32(%esi),%xmm1
   1030 	xorps	%xmm6,%xmm2
   1031 	movups	48(%esi),%xmm0
   1032 	xorps	%xmm7,%xmm3
   1033 	movups	%xmm2,(%edi)
   1034 	xorps	%xmm1,%xmm4
   1035 	movups	%xmm3,16(%edi)
   1036 	xorps	%xmm0,%xmm5
   1037 	movups	%xmm4,32(%edi)
   1038 	movups	%xmm5,48(%edi)
   1039 .L040ctr32_ret:
   1040 	pxor	%xmm0,%xmm0
   1041 	pxor	%xmm1,%xmm1
   1042 	pxor	%xmm2,%xmm2
   1043 	pxor	%xmm3,%xmm3
   1044 	pxor	%xmm4,%xmm4
   1045 	movdqa	%xmm0,32(%esp)
   1046 	pxor	%xmm5,%xmm5
   1047 	movdqa	%xmm0,48(%esp)
   1048 	pxor	%xmm6,%xmm6
   1049 	movdqa	%xmm0,64(%esp)
   1050 	pxor	%xmm7,%xmm7
   1051 	movl	80(%esp),%esp
   1052 	popl	%edi
   1053 	popl	%esi
   1054 	popl	%ebx
   1055 	popl	%ebp
   1056 	ret
   1057 .size	aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin
   1058 .globl	aesni_xts_encrypt
   1059 .hidden	aesni_xts_encrypt
   1060 .type	aesni_xts_encrypt,@function
   1061 .align	16
   1062 aesni_xts_encrypt:
   1063 .L_aesni_xts_encrypt_begin:
   1064 	pushl	%ebp
   1065 	pushl	%ebx
   1066 	pushl	%esi
   1067 	pushl	%edi
   1068 	movl	36(%esp),%edx
   1069 	movl	40(%esp),%esi
   1070 	movl	240(%edx),%ecx
   1071 	movups	(%esi),%xmm2
   1072 	movups	(%edx),%xmm0
   1073 	movups	16(%edx),%xmm1
   1074 	leal	32(%edx),%edx
   1075 	xorps	%xmm0,%xmm2
   1076 .L046enc1_loop_8:
   1077 .byte	102,15,56,220,209
   1078 	decl	%ecx
   1079 	movups	(%edx),%xmm1
   1080 	leal	16(%edx),%edx
   1081 	jnz	.L046enc1_loop_8
   1082 .byte	102,15,56,221,209
   1083 	movl	20(%esp),%esi
   1084 	movl	24(%esp),%edi
   1085 	movl	28(%esp),%eax
   1086 	movl	32(%esp),%edx
   1087 	movl	%esp,%ebp
   1088 	subl	$120,%esp
   1089 	movl	240(%edx),%ecx
   1090 	andl	$-16,%esp
   1091 	movl	$135,96(%esp)
   1092 	movl	$0,100(%esp)
   1093 	movl	$1,104(%esp)
   1094 	movl	$0,108(%esp)
   1095 	movl	%eax,112(%esp)
   1096 	movl	%ebp,116(%esp)
   1097 	movdqa	%xmm2,%xmm1
   1098 	pxor	%xmm0,%xmm0
   1099 	movdqa	96(%esp),%xmm3
   1100 	pcmpgtd	%xmm1,%xmm0
   1101 	andl	$-16,%eax
   1102 	movl	%edx,%ebp
   1103 	movl	%ecx,%ebx
   1104 	subl	$96,%eax
   1105 	jc	.L047xts_enc_short
   1106 	shll	$4,%ecx
   1107 	movl	$16,%ebx
   1108 	subl	%ecx,%ebx
   1109 	leal	32(%edx,%ecx,1),%edx
   1110 	jmp	.L048xts_enc_loop6
   1111 .align	16
   1112 .L048xts_enc_loop6:
   1113 	pshufd	$19,%xmm0,%xmm2
   1114 	pxor	%xmm0,%xmm0
   1115 	movdqa	%xmm1,(%esp)
   1116 	paddq	%xmm1,%xmm1
   1117 	pand	%xmm3,%xmm2
   1118 	pcmpgtd	%xmm1,%xmm0
   1119 	pxor	%xmm2,%xmm1
   1120 	pshufd	$19,%xmm0,%xmm2
   1121 	pxor	%xmm0,%xmm0
   1122 	movdqa	%xmm1,16(%esp)
   1123 	paddq	%xmm1,%xmm1
   1124 	pand	%xmm3,%xmm2
   1125 	pcmpgtd	%xmm1,%xmm0
   1126 	pxor	%xmm2,%xmm1
   1127 	pshufd	$19,%xmm0,%xmm2
   1128 	pxor	%xmm0,%xmm0
   1129 	movdqa	%xmm1,32(%esp)
   1130 	paddq	%xmm1,%xmm1
   1131 	pand	%xmm3,%xmm2
   1132 	pcmpgtd	%xmm1,%xmm0
   1133 	pxor	%xmm2,%xmm1
   1134 	pshufd	$19,%xmm0,%xmm2
   1135 	pxor	%xmm0,%xmm0
   1136 	movdqa	%xmm1,48(%esp)
   1137 	paddq	%xmm1,%xmm1
   1138 	pand	%xmm3,%xmm2
   1139 	pcmpgtd	%xmm1,%xmm0
   1140 	pxor	%xmm2,%xmm1
   1141 	pshufd	$19,%xmm0,%xmm7
   1142 	movdqa	%xmm1,64(%esp)
   1143 	paddq	%xmm1,%xmm1
   1144 	movups	(%ebp),%xmm0
   1145 	pand	%xmm3,%xmm7
   1146 	movups	(%esi),%xmm2
   1147 	pxor	%xmm1,%xmm7
   1148 	movl	%ebx,%ecx
   1149 	movdqu	16(%esi),%xmm3
   1150 	xorps	%xmm0,%xmm2
   1151 	movdqu	32(%esi),%xmm4
   1152 	pxor	%xmm0,%xmm3
   1153 	movdqu	48(%esi),%xmm5
   1154 	pxor	%xmm0,%xmm4
   1155 	movdqu	64(%esi),%xmm6
   1156 	pxor	%xmm0,%xmm5
   1157 	movdqu	80(%esi),%xmm1
   1158 	pxor	%xmm0,%xmm6
   1159 	leal	96(%esi),%esi
   1160 	pxor	(%esp),%xmm2
   1161 	movdqa	%xmm7,80(%esp)
   1162 	pxor	%xmm1,%xmm7
   1163 	movups	16(%ebp),%xmm1
   1164 	pxor	16(%esp),%xmm3
   1165 	pxor	32(%esp),%xmm4
   1166 .byte	102,15,56,220,209
   1167 	pxor	48(%esp),%xmm5
   1168 	pxor	64(%esp),%xmm6
   1169 .byte	102,15,56,220,217
   1170 	pxor	%xmm0,%xmm7
   1171 	movups	32(%ebp),%xmm0
   1172 .byte	102,15,56,220,225
   1173 .byte	102,15,56,220,233
   1174 .byte	102,15,56,220,241
   1175 .byte	102,15,56,220,249
   1176 	call	.L_aesni_encrypt6_enter
   1177 	movdqa	80(%esp),%xmm1
   1178 	pxor	%xmm0,%xmm0
   1179 	xorps	(%esp),%xmm2
   1180 	pcmpgtd	%xmm1,%xmm0
   1181 	xorps	16(%esp),%xmm3
   1182 	movups	%xmm2,(%edi)
   1183 	xorps	32(%esp),%xmm4
   1184 	movups	%xmm3,16(%edi)
   1185 	xorps	48(%esp),%xmm5
   1186 	movups	%xmm4,32(%edi)
   1187 	xorps	64(%esp),%xmm6
   1188 	movups	%xmm5,48(%edi)
   1189 	xorps	%xmm1,%xmm7
   1190 	movups	%xmm6,64(%edi)
   1191 	pshufd	$19,%xmm0,%xmm2
   1192 	movups	%xmm7,80(%edi)
   1193 	leal	96(%edi),%edi
   1194 	movdqa	96(%esp),%xmm3
   1195 	pxor	%xmm0,%xmm0
   1196 	paddq	%xmm1,%xmm1
   1197 	pand	%xmm3,%xmm2
   1198 	pcmpgtd	%xmm1,%xmm0
   1199 	pxor	%xmm2,%xmm1
   1200 	subl	$96,%eax
   1201 	jnc	.L048xts_enc_loop6
   1202 	movl	240(%ebp),%ecx
   1203 	movl	%ebp,%edx
   1204 	movl	%ecx,%ebx
   1205 .L047xts_enc_short:
   1206 	addl	$96,%eax
   1207 	jz	.L049xts_enc_done6x
   1208 	movdqa	%xmm1,%xmm5
   1209 	cmpl	$32,%eax
   1210 	jb	.L050xts_enc_one
   1211 	pshufd	$19,%xmm0,%xmm2
   1212 	pxor	%xmm0,%xmm0
   1213 	paddq	%xmm1,%xmm1
   1214 	pand	%xmm3,%xmm2
   1215 	pcmpgtd	%xmm1,%xmm0
   1216 	pxor	%xmm2,%xmm1
   1217 	je	.L051xts_enc_two
   1218 	pshufd	$19,%xmm0,%xmm2
   1219 	pxor	%xmm0,%xmm0
   1220 	movdqa	%xmm1,%xmm6
   1221 	paddq	%xmm1,%xmm1
   1222 	pand	%xmm3,%xmm2
   1223 	pcmpgtd	%xmm1,%xmm0
   1224 	pxor	%xmm2,%xmm1
   1225 	cmpl	$64,%eax
   1226 	jb	.L052xts_enc_three
   1227 	pshufd	$19,%xmm0,%xmm2
   1228 	pxor	%xmm0,%xmm0
   1229 	movdqa	%xmm1,%xmm7
   1230 	paddq	%xmm1,%xmm1
   1231 	pand	%xmm3,%xmm2
   1232 	pcmpgtd	%xmm1,%xmm0
   1233 	pxor	%xmm2,%xmm1
   1234 	movdqa	%xmm5,(%esp)
   1235 	movdqa	%xmm6,16(%esp)
   1236 	je	.L053xts_enc_four
   1237 	movdqa	%xmm7,32(%esp)
   1238 	pshufd	$19,%xmm0,%xmm7
   1239 	movdqa	%xmm1,48(%esp)
   1240 	paddq	%xmm1,%xmm1
   1241 	pand	%xmm3,%xmm7
   1242 	pxor	%xmm1,%xmm7
   1243 	movdqu	(%esi),%xmm2
   1244 	movdqu	16(%esi),%xmm3
   1245 	movdqu	32(%esi),%xmm4
   1246 	pxor	(%esp),%xmm2
   1247 	movdqu	48(%esi),%xmm5
   1248 	pxor	16(%esp),%xmm3
   1249 	movdqu	64(%esi),%xmm6
   1250 	pxor	32(%esp),%xmm4
   1251 	leal	80(%esi),%esi
   1252 	pxor	48(%esp),%xmm5
   1253 	movdqa	%xmm7,64(%esp)
   1254 	pxor	%xmm7,%xmm6
   1255 	call	_aesni_encrypt6
   1256 	movaps	64(%esp),%xmm1
   1257 	xorps	(%esp),%xmm2
   1258 	xorps	16(%esp),%xmm3
   1259 	xorps	32(%esp),%xmm4
   1260 	movups	%xmm2,(%edi)
   1261 	xorps	48(%esp),%xmm5
   1262 	movups	%xmm3,16(%edi)
   1263 	xorps	%xmm1,%xmm6
   1264 	movups	%xmm4,32(%edi)
   1265 	movups	%xmm5,48(%edi)
   1266 	movups	%xmm6,64(%edi)
   1267 	leal	80(%edi),%edi
   1268 	jmp	.L054xts_enc_done
   1269 .align	16
   1270 .L050xts_enc_one:
   1271 	movups	(%esi),%xmm2
   1272 	leal	16(%esi),%esi
   1273 	xorps	%xmm5,%xmm2
   1274 	movups	(%edx),%xmm0
   1275 	movups	16(%edx),%xmm1
   1276 	leal	32(%edx),%edx
   1277 	xorps	%xmm0,%xmm2
   1278 .L055enc1_loop_9:
   1279 .byte	102,15,56,220,209
   1280 	decl	%ecx
   1281 	movups	(%edx),%xmm1
   1282 	leal	16(%edx),%edx
   1283 	jnz	.L055enc1_loop_9
   1284 .byte	102,15,56,221,209
   1285 	xorps	%xmm5,%xmm2
   1286 	movups	%xmm2,(%edi)
   1287 	leal	16(%edi),%edi
   1288 	movdqa	%xmm5,%xmm1
   1289 	jmp	.L054xts_enc_done
   1290 .align	16
   1291 .L051xts_enc_two:
   1292 	movaps	%xmm1,%xmm6
   1293 	movups	(%esi),%xmm2
   1294 	movups	16(%esi),%xmm3
   1295 	leal	32(%esi),%esi
   1296 	xorps	%xmm5,%xmm2
   1297 	xorps	%xmm6,%xmm3
   1298 	call	_aesni_encrypt2
   1299 	xorps	%xmm5,%xmm2
   1300 	xorps	%xmm6,%xmm3
   1301 	movups	%xmm2,(%edi)
   1302 	movups	%xmm3,16(%edi)
   1303 	leal	32(%edi),%edi
   1304 	movdqa	%xmm6,%xmm1
   1305 	jmp	.L054xts_enc_done
   1306 .align	16
   1307 .L052xts_enc_three:
   1308 	movaps	%xmm1,%xmm7
   1309 	movups	(%esi),%xmm2
   1310 	movups	16(%esi),%xmm3
   1311 	movups	32(%esi),%xmm4
   1312 	leal	48(%esi),%esi
   1313 	xorps	%xmm5,%xmm2
   1314 	xorps	%xmm6,%xmm3
   1315 	xorps	%xmm7,%xmm4
   1316 	call	_aesni_encrypt3
   1317 	xorps	%xmm5,%xmm2
   1318 	xorps	%xmm6,%xmm3
   1319 	xorps	%xmm7,%xmm4
   1320 	movups	%xmm2,(%edi)
   1321 	movups	%xmm3,16(%edi)
   1322 	movups	%xmm4,32(%edi)
   1323 	leal	48(%edi),%edi
   1324 	movdqa	%xmm7,%xmm1
   1325 	jmp	.L054xts_enc_done
   1326 .align	16
   1327 .L053xts_enc_four:
   1328 	movaps	%xmm1,%xmm6
   1329 	movups	(%esi),%xmm2
   1330 	movups	16(%esi),%xmm3
   1331 	movups	32(%esi),%xmm4
   1332 	xorps	(%esp),%xmm2
   1333 	movups	48(%esi),%xmm5
   1334 	leal	64(%esi),%esi
   1335 	xorps	16(%esp),%xmm3
   1336 	xorps	%xmm7,%xmm4
   1337 	xorps	%xmm6,%xmm5
   1338 	call	_aesni_encrypt4
   1339 	xorps	(%esp),%xmm2
   1340 	xorps	16(%esp),%xmm3
   1341 	xorps	%xmm7,%xmm4
   1342 	movups	%xmm2,(%edi)
   1343 	xorps	%xmm6,%xmm5
   1344 	movups	%xmm3,16(%edi)
   1345 	movups	%xmm4,32(%edi)
   1346 	movups	%xmm5,48(%edi)
   1347 	leal	64(%edi),%edi
   1348 	movdqa	%xmm6,%xmm1
   1349 	jmp	.L054xts_enc_done
   1350 .align	16
   1351 .L049xts_enc_done6x:
   1352 	movl	112(%esp),%eax
   1353 	andl	$15,%eax
   1354 	jz	.L056xts_enc_ret
   1355 	movdqa	%xmm1,%xmm5
   1356 	movl	%eax,112(%esp)
   1357 	jmp	.L057xts_enc_steal
   1358 .align	16
   1359 .L054xts_enc_done:
   1360 	movl	112(%esp),%eax
   1361 	pxor	%xmm0,%xmm0
   1362 	andl	$15,%eax
   1363 	jz	.L056xts_enc_ret
   1364 	pcmpgtd	%xmm1,%xmm0
   1365 	movl	%eax,112(%esp)
   1366 	pshufd	$19,%xmm0,%xmm5
   1367 	paddq	%xmm1,%xmm1
   1368 	pand	96(%esp),%xmm5
   1369 	pxor	%xmm1,%xmm5
   1370 .L057xts_enc_steal:
   1371 	movzbl	(%esi),%ecx
   1372 	movzbl	-16(%edi),%edx
   1373 	leal	1(%esi),%esi
   1374 	movb	%cl,-16(%edi)
   1375 	movb	%dl,(%edi)
   1376 	leal	1(%edi),%edi
   1377 	subl	$1,%eax
   1378 	jnz	.L057xts_enc_steal
   1379 	subl	112(%esp),%edi
   1380 	movl	%ebp,%edx
   1381 	movl	%ebx,%ecx
   1382 	movups	-16(%edi),%xmm2
   1383 	xorps	%xmm5,%xmm2
   1384 	movups	(%edx),%xmm0
   1385 	movups	16(%edx),%xmm1
   1386 	leal	32(%edx),%edx
   1387 	xorps	%xmm0,%xmm2
   1388 .L058enc1_loop_10:
   1389 .byte	102,15,56,220,209
   1390 	decl	%ecx
   1391 	movups	(%edx),%xmm1
   1392 	leal	16(%edx),%edx
   1393 	jnz	.L058enc1_loop_10
   1394 .byte	102,15,56,221,209
   1395 	xorps	%xmm5,%xmm2
   1396 	movups	%xmm2,-16(%edi)
   1397 .L056xts_enc_ret:
   1398 	pxor	%xmm0,%xmm0
   1399 	pxor	%xmm1,%xmm1
   1400 	pxor	%xmm2,%xmm2
   1401 	movdqa	%xmm0,(%esp)
   1402 	pxor	%xmm3,%xmm3
   1403 	movdqa	%xmm0,16(%esp)
   1404 	pxor	%xmm4,%xmm4
   1405 	movdqa	%xmm0,32(%esp)
   1406 	pxor	%xmm5,%xmm5
   1407 	movdqa	%xmm0,48(%esp)
   1408 	pxor	%xmm6,%xmm6
   1409 	movdqa	%xmm0,64(%esp)
   1410 	pxor	%xmm7,%xmm7
   1411 	movdqa	%xmm0,80(%esp)
   1412 	movl	116(%esp),%esp
   1413 	popl	%edi
   1414 	popl	%esi
   1415 	popl	%ebx
   1416 	popl	%ebp
   1417 	ret
   1418 .size	aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin
   1419 .globl	aesni_xts_decrypt
   1420 .hidden	aesni_xts_decrypt
   1421 .type	aesni_xts_decrypt,@function
   1422 .align	16
   1423 aesni_xts_decrypt:
   1424 .L_aesni_xts_decrypt_begin:
   1425 	pushl	%ebp
   1426 	pushl	%ebx
   1427 	pushl	%esi
   1428 	pushl	%edi
   1429 	movl	36(%esp),%edx
   1430 	movl	40(%esp),%esi
   1431 	movl	240(%edx),%ecx
   1432 	movups	(%esi),%xmm2
   1433 	movups	(%edx),%xmm0
   1434 	movups	16(%edx),%xmm1
   1435 	leal	32(%edx),%edx
   1436 	xorps	%xmm0,%xmm2
   1437 .L059enc1_loop_11:
   1438 .byte	102,15,56,220,209
   1439 	decl	%ecx
   1440 	movups	(%edx),%xmm1
   1441 	leal	16(%edx),%edx
   1442 	jnz	.L059enc1_loop_11
   1443 .byte	102,15,56,221,209
   1444 	movl	20(%esp),%esi
   1445 	movl	24(%esp),%edi
   1446 	movl	28(%esp),%eax
   1447 	movl	32(%esp),%edx
   1448 	movl	%esp,%ebp
   1449 	subl	$120,%esp
   1450 	andl	$-16,%esp
   1451 	xorl	%ebx,%ebx
   1452 	testl	$15,%eax
   1453 	setnz	%bl
   1454 	shll	$4,%ebx
   1455 	subl	%ebx,%eax
   1456 	movl	$135,96(%esp)
   1457 	movl	$0,100(%esp)
   1458 	movl	$1,104(%esp)
   1459 	movl	$0,108(%esp)
   1460 	movl	%eax,112(%esp)
   1461 	movl	%ebp,116(%esp)
   1462 	movl	240(%edx),%ecx
   1463 	movl	%edx,%ebp
   1464 	movl	%ecx,%ebx
   1465 	movdqa	%xmm2,%xmm1
   1466 	pxor	%xmm0,%xmm0
   1467 	movdqa	96(%esp),%xmm3
   1468 	pcmpgtd	%xmm1,%xmm0
   1469 	andl	$-16,%eax
   1470 	subl	$96,%eax
   1471 	jc	.L060xts_dec_short
   1472 	shll	$4,%ecx
   1473 	movl	$16,%ebx
   1474 	subl	%ecx,%ebx
   1475 	leal	32(%edx,%ecx,1),%edx
   1476 	jmp	.L061xts_dec_loop6
   1477 .align	16
   1478 .L061xts_dec_loop6:
   1479 	pshufd	$19,%xmm0,%xmm2
   1480 	pxor	%xmm0,%xmm0
   1481 	movdqa	%xmm1,(%esp)
   1482 	paddq	%xmm1,%xmm1
   1483 	pand	%xmm3,%xmm2
   1484 	pcmpgtd	%xmm1,%xmm0
   1485 	pxor	%xmm2,%xmm1
   1486 	pshufd	$19,%xmm0,%xmm2
   1487 	pxor	%xmm0,%xmm0
   1488 	movdqa	%xmm1,16(%esp)
   1489 	paddq	%xmm1,%xmm1
   1490 	pand	%xmm3,%xmm2
   1491 	pcmpgtd	%xmm1,%xmm0
   1492 	pxor	%xmm2,%xmm1
   1493 	pshufd	$19,%xmm0,%xmm2
   1494 	pxor	%xmm0,%xmm0
   1495 	movdqa	%xmm1,32(%esp)
   1496 	paddq	%xmm1,%xmm1
   1497 	pand	%xmm3,%xmm2
   1498 	pcmpgtd	%xmm1,%xmm0
   1499 	pxor	%xmm2,%xmm1
   1500 	pshufd	$19,%xmm0,%xmm2
   1501 	pxor	%xmm0,%xmm0
   1502 	movdqa	%xmm1,48(%esp)
   1503 	paddq	%xmm1,%xmm1
   1504 	pand	%xmm3,%xmm2
   1505 	pcmpgtd	%xmm1,%xmm0
   1506 	pxor	%xmm2,%xmm1
   1507 	pshufd	$19,%xmm0,%xmm7
   1508 	movdqa	%xmm1,64(%esp)
   1509 	paddq	%xmm1,%xmm1
   1510 	movups	(%ebp),%xmm0
   1511 	pand	%xmm3,%xmm7
   1512 	movups	(%esi),%xmm2
   1513 	pxor	%xmm1,%xmm7
   1514 	movl	%ebx,%ecx
   1515 	movdqu	16(%esi),%xmm3
   1516 	xorps	%xmm0,%xmm2
   1517 	movdqu	32(%esi),%xmm4
   1518 	pxor	%xmm0,%xmm3
   1519 	movdqu	48(%esi),%xmm5
   1520 	pxor	%xmm0,%xmm4
   1521 	movdqu	64(%esi),%xmm6
   1522 	pxor	%xmm0,%xmm5
   1523 	movdqu	80(%esi),%xmm1
   1524 	pxor	%xmm0,%xmm6
   1525 	leal	96(%esi),%esi
   1526 	pxor	(%esp),%xmm2
   1527 	movdqa	%xmm7,80(%esp)
   1528 	pxor	%xmm1,%xmm7
   1529 	movups	16(%ebp),%xmm1
   1530 	pxor	16(%esp),%xmm3
   1531 	pxor	32(%esp),%xmm4
   1532 .byte	102,15,56,222,209
   1533 	pxor	48(%esp),%xmm5
   1534 	pxor	64(%esp),%xmm6
   1535 .byte	102,15,56,222,217
   1536 	pxor	%xmm0,%xmm7
   1537 	movups	32(%ebp),%xmm0
   1538 .byte	102,15,56,222,225
   1539 .byte	102,15,56,222,233
   1540 .byte	102,15,56,222,241
   1541 .byte	102,15,56,222,249
   1542 	call	.L_aesni_decrypt6_enter
   1543 	movdqa	80(%esp),%xmm1
   1544 	pxor	%xmm0,%xmm0
   1545 	xorps	(%esp),%xmm2
   1546 	pcmpgtd	%xmm1,%xmm0
   1547 	xorps	16(%esp),%xmm3
   1548 	movups	%xmm2,(%edi)
   1549 	xorps	32(%esp),%xmm4
   1550 	movups	%xmm3,16(%edi)
   1551 	xorps	48(%esp),%xmm5
   1552 	movups	%xmm4,32(%edi)
   1553 	xorps	64(%esp),%xmm6
   1554 	movups	%xmm5,48(%edi)
   1555 	xorps	%xmm1,%xmm7
   1556 	movups	%xmm6,64(%edi)
   1557 	pshufd	$19,%xmm0,%xmm2
   1558 	movups	%xmm7,80(%edi)
   1559 	leal	96(%edi),%edi
   1560 	movdqa	96(%esp),%xmm3
   1561 	pxor	%xmm0,%xmm0
   1562 	paddq	%xmm1,%xmm1
   1563 	pand	%xmm3,%xmm2
   1564 	pcmpgtd	%xmm1,%xmm0
   1565 	pxor	%xmm2,%xmm1
   1566 	subl	$96,%eax
   1567 	jnc	.L061xts_dec_loop6
   1568 	movl	240(%ebp),%ecx
   1569 	movl	%ebp,%edx
   1570 	movl	%ecx,%ebx
   1571 .L060xts_dec_short:
   1572 	addl	$96,%eax
   1573 	jz	.L062xts_dec_done6x
   1574 	movdqa	%xmm1,%xmm5
   1575 	cmpl	$32,%eax
   1576 	jb	.L063xts_dec_one
   1577 	pshufd	$19,%xmm0,%xmm2
   1578 	pxor	%xmm0,%xmm0
   1579 	paddq	%xmm1,%xmm1
   1580 	pand	%xmm3,%xmm2
   1581 	pcmpgtd	%xmm1,%xmm0
   1582 	pxor	%xmm2,%xmm1
   1583 	je	.L064xts_dec_two
   1584 	pshufd	$19,%xmm0,%xmm2
   1585 	pxor	%xmm0,%xmm0
   1586 	movdqa	%xmm1,%xmm6
   1587 	paddq	%xmm1,%xmm1
   1588 	pand	%xmm3,%xmm2
   1589 	pcmpgtd	%xmm1,%xmm0
   1590 	pxor	%xmm2,%xmm1
   1591 	cmpl	$64,%eax
   1592 	jb	.L065xts_dec_three
   1593 	pshufd	$19,%xmm0,%xmm2
   1594 	pxor	%xmm0,%xmm0
   1595 	movdqa	%xmm1,%xmm7
   1596 	paddq	%xmm1,%xmm1
   1597 	pand	%xmm3,%xmm2
   1598 	pcmpgtd	%xmm1,%xmm0
   1599 	pxor	%xmm2,%xmm1
   1600 	movdqa	%xmm5,(%esp)
   1601 	movdqa	%xmm6,16(%esp)
   1602 	je	.L066xts_dec_four
   1603 	movdqa	%xmm7,32(%esp)
   1604 	pshufd	$19,%xmm0,%xmm7
   1605 	movdqa	%xmm1,48(%esp)
   1606 	paddq	%xmm1,%xmm1
   1607 	pand	%xmm3,%xmm7
   1608 	pxor	%xmm1,%xmm7
   1609 	movdqu	(%esi),%xmm2
   1610 	movdqu	16(%esi),%xmm3
   1611 	movdqu	32(%esi),%xmm4
   1612 	pxor	(%esp),%xmm2
   1613 	movdqu	48(%esi),%xmm5
   1614 	pxor	16(%esp),%xmm3
   1615 	movdqu	64(%esi),%xmm6
   1616 	pxor	32(%esp),%xmm4
   1617 	leal	80(%esi),%esi
   1618 	pxor	48(%esp),%xmm5
   1619 	movdqa	%xmm7,64(%esp)
   1620 	pxor	%xmm7,%xmm6
   1621 	call	_aesni_decrypt6
   1622 	movaps	64(%esp),%xmm1
   1623 	xorps	(%esp),%xmm2
   1624 	xorps	16(%esp),%xmm3
   1625 	xorps	32(%esp),%xmm4
   1626 	movups	%xmm2,(%edi)
   1627 	xorps	48(%esp),%xmm5
   1628 	movups	%xmm3,16(%edi)
   1629 	xorps	%xmm1,%xmm6
   1630 	movups	%xmm4,32(%edi)
   1631 	movups	%xmm5,48(%edi)
   1632 	movups	%xmm6,64(%edi)
   1633 	leal	80(%edi),%edi
   1634 	jmp	.L067xts_dec_done
   1635 .align	16
   1636 .L063xts_dec_one:
   1637 	movups	(%esi),%xmm2
   1638 	leal	16(%esi),%esi
   1639 	xorps	%xmm5,%xmm2
   1640 	movups	(%edx),%xmm0
   1641 	movups	16(%edx),%xmm1
   1642 	leal	32(%edx),%edx
   1643 	xorps	%xmm0,%xmm2
   1644 .L068dec1_loop_12:
   1645 .byte	102,15,56,222,209
   1646 	decl	%ecx
   1647 	movups	(%edx),%xmm1
   1648 	leal	16(%edx),%edx
   1649 	jnz	.L068dec1_loop_12
   1650 .byte	102,15,56,223,209
   1651 	xorps	%xmm5,%xmm2
   1652 	movups	%xmm2,(%edi)
   1653 	leal	16(%edi),%edi
   1654 	movdqa	%xmm5,%xmm1
   1655 	jmp	.L067xts_dec_done
   1656 .align	16
   1657 .L064xts_dec_two:
   1658 	movaps	%xmm1,%xmm6
   1659 	movups	(%esi),%xmm2
   1660 	movups	16(%esi),%xmm3
   1661 	leal	32(%esi),%esi
   1662 	xorps	%xmm5,%xmm2
   1663 	xorps	%xmm6,%xmm3
   1664 	call	_aesni_decrypt2
   1665 	xorps	%xmm5,%xmm2
   1666 	xorps	%xmm6,%xmm3
   1667 	movups	%xmm2,(%edi)
   1668 	movups	%xmm3,16(%edi)
   1669 	leal	32(%edi),%edi
   1670 	movdqa	%xmm6,%xmm1
   1671 	jmp	.L067xts_dec_done
   1672 .align	16
   1673 .L065xts_dec_three:
   1674 	movaps	%xmm1,%xmm7
   1675 	movups	(%esi),%xmm2
   1676 	movups	16(%esi),%xmm3
   1677 	movups	32(%esi),%xmm4
   1678 	leal	48(%esi),%esi
   1679 	xorps	%xmm5,%xmm2
   1680 	xorps	%xmm6,%xmm3
   1681 	xorps	%xmm7,%xmm4
   1682 	call	_aesni_decrypt3
   1683 	xorps	%xmm5,%xmm2
   1684 	xorps	%xmm6,%xmm3
   1685 	xorps	%xmm7,%xmm4
   1686 	movups	%xmm2,(%edi)
   1687 	movups	%xmm3,16(%edi)
   1688 	movups	%xmm4,32(%edi)
   1689 	leal	48(%edi),%edi
   1690 	movdqa	%xmm7,%xmm1
   1691 	jmp	.L067xts_dec_done
   1692 .align	16
   1693 .L066xts_dec_four:
   1694 	movaps	%xmm1,%xmm6
   1695 	movups	(%esi),%xmm2
   1696 	movups	16(%esi),%xmm3
   1697 	movups	32(%esi),%xmm4
   1698 	xorps	(%esp),%xmm2
   1699 	movups	48(%esi),%xmm5
   1700 	leal	64(%esi),%esi
   1701 	xorps	16(%esp),%xmm3
   1702 	xorps	%xmm7,%xmm4
   1703 	xorps	%xmm6,%xmm5
   1704 	call	_aesni_decrypt4
   1705 	xorps	(%esp),%xmm2
   1706 	xorps	16(%esp),%xmm3
   1707 	xorps	%xmm7,%xmm4
   1708 	movups	%xmm2,(%edi)
   1709 	xorps	%xmm6,%xmm5
   1710 	movups	%xmm3,16(%edi)
   1711 	movups	%xmm4,32(%edi)
   1712 	movups	%xmm5,48(%edi)
   1713 	leal	64(%edi),%edi
   1714 	movdqa	%xmm6,%xmm1
   1715 	jmp	.L067xts_dec_done
   1716 .align	16
   1717 .L062xts_dec_done6x:
   1718 	movl	112(%esp),%eax
   1719 	andl	$15,%eax
   1720 	jz	.L069xts_dec_ret
   1721 	movl	%eax,112(%esp)
   1722 	jmp	.L070xts_dec_only_one_more
   1723 .align	16
   1724 .L067xts_dec_done:
   1725 	movl	112(%esp),%eax
   1726 	pxor	%xmm0,%xmm0
   1727 	andl	$15,%eax
   1728 	jz	.L069xts_dec_ret
   1729 	pcmpgtd	%xmm1,%xmm0
   1730 	movl	%eax,112(%esp)
   1731 	pshufd	$19,%xmm0,%xmm2
   1732 	pxor	%xmm0,%xmm0
   1733 	movdqa	96(%esp),%xmm3
   1734 	paddq	%xmm1,%xmm1
   1735 	pand	%xmm3,%xmm2
   1736 	pcmpgtd	%xmm1,%xmm0
   1737 	pxor	%xmm2,%xmm1
   1738 .L070xts_dec_only_one_more:
   1739 	pshufd	$19,%xmm0,%xmm5
   1740 	movdqa	%xmm1,%xmm6
   1741 	paddq	%xmm1,%xmm1
   1742 	pand	%xmm3,%xmm5
   1743 	pxor	%xmm1,%xmm5
   1744 	movl	%ebp,%edx
   1745 	movl	%ebx,%ecx
   1746 	movups	(%esi),%xmm2
   1747 	xorps	%xmm5,%xmm2
   1748 	movups	(%edx),%xmm0
   1749 	movups	16(%edx),%xmm1
   1750 	leal	32(%edx),%edx
   1751 	xorps	%xmm0,%xmm2
   1752 .L071dec1_loop_13:
   1753 .byte	102,15,56,222,209
   1754 	decl	%ecx
   1755 	movups	(%edx),%xmm1
   1756 	leal	16(%edx),%edx
   1757 	jnz	.L071dec1_loop_13
   1758 .byte	102,15,56,223,209
   1759 	xorps	%xmm5,%xmm2
   1760 	movups	%xmm2,(%edi)
   1761 .L072xts_dec_steal:
   1762 	movzbl	16(%esi),%ecx
   1763 	movzbl	(%edi),%edx
   1764 	leal	1(%esi),%esi
   1765 	movb	%cl,(%edi)
   1766 	movb	%dl,16(%edi)
   1767 	leal	1(%edi),%edi
   1768 	subl	$1,%eax
   1769 	jnz	.L072xts_dec_steal
   1770 	subl	112(%esp),%edi
   1771 	movl	%ebp,%edx
   1772 	movl	%ebx,%ecx
   1773 	movups	(%edi),%xmm2
   1774 	xorps	%xmm6,%xmm2
   1775 	movups	(%edx),%xmm0
   1776 	movups	16(%edx),%xmm1
   1777 	leal	32(%edx),%edx
   1778 	xorps	%xmm0,%xmm2
   1779 .L073dec1_loop_14:
   1780 .byte	102,15,56,222,209
   1781 	decl	%ecx
   1782 	movups	(%edx),%xmm1
   1783 	leal	16(%edx),%edx
   1784 	jnz	.L073dec1_loop_14
   1785 .byte	102,15,56,223,209
   1786 	xorps	%xmm6,%xmm2
   1787 	movups	%xmm2,(%edi)
   1788 .L069xts_dec_ret:
   1789 	pxor	%xmm0,%xmm0
   1790 	pxor	%xmm1,%xmm1
   1791 	pxor	%xmm2,%xmm2
   1792 	movdqa	%xmm0,(%esp)
   1793 	pxor	%xmm3,%xmm3
   1794 	movdqa	%xmm0,16(%esp)
   1795 	pxor	%xmm4,%xmm4
   1796 	movdqa	%xmm0,32(%esp)
   1797 	pxor	%xmm5,%xmm5
   1798 	movdqa	%xmm0,48(%esp)
   1799 	pxor	%xmm6,%xmm6
   1800 	movdqa	%xmm0,64(%esp)
   1801 	pxor	%xmm7,%xmm7
   1802 	movdqa	%xmm0,80(%esp)
   1803 	movl	116(%esp),%esp
   1804 	popl	%edi
   1805 	popl	%esi
   1806 	popl	%ebx
   1807 	popl	%ebp
   1808 	ret
   1809 .size	aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin
   1810 .globl	aesni_cbc_encrypt
   1811 .hidden	aesni_cbc_encrypt
   1812 .type	aesni_cbc_encrypt,@function
   1813 .align	16
   1814 aesni_cbc_encrypt:
   1815 .L_aesni_cbc_encrypt_begin:
   1816 	pushl	%ebp
   1817 	pushl	%ebx
   1818 	pushl	%esi
   1819 	pushl	%edi
   1820 	movl	20(%esp),%esi
   1821 	movl	%esp,%ebx
   1822 	movl	24(%esp),%edi
   1823 	subl	$24,%ebx
   1824 	movl	28(%esp),%eax
   1825 	andl	$-16,%ebx
   1826 	movl	32(%esp),%edx
   1827 	movl	36(%esp),%ebp
   1828 	testl	%eax,%eax
   1829 	jz	.L074cbc_abort
   1830 	cmpl	$0,40(%esp)
   1831 	xchgl	%esp,%ebx
   1832 	movups	(%ebp),%xmm7
   1833 	movl	240(%edx),%ecx
   1834 	movl	%edx,%ebp
   1835 	movl	%ebx,16(%esp)
   1836 	movl	%ecx,%ebx
   1837 	je	.L075cbc_decrypt
   1838 	movaps	%xmm7,%xmm2
   1839 	cmpl	$16,%eax
   1840 	jb	.L076cbc_enc_tail
   1841 	subl	$16,%eax
   1842 	jmp	.L077cbc_enc_loop
   1843 .align	16
   1844 .L077cbc_enc_loop:
   1845 	movups	(%esi),%xmm7
   1846 	leal	16(%esi),%esi
   1847 	movups	(%edx),%xmm0
   1848 	movups	16(%edx),%xmm1
   1849 	xorps	%xmm0,%xmm7
   1850 	leal	32(%edx),%edx
   1851 	xorps	%xmm7,%xmm2
   1852 .L078enc1_loop_15:
   1853 .byte	102,15,56,220,209
   1854 	decl	%ecx
   1855 	movups	(%edx),%xmm1
   1856 	leal	16(%edx),%edx
   1857 	jnz	.L078enc1_loop_15
   1858 .byte	102,15,56,221,209
   1859 	movl	%ebx,%ecx
   1860 	movl	%ebp,%edx
   1861 	movups	%xmm2,(%edi)
   1862 	leal	16(%edi),%edi
   1863 	subl	$16,%eax
   1864 	jnc	.L077cbc_enc_loop
   1865 	addl	$16,%eax
   1866 	jnz	.L076cbc_enc_tail
   1867 	movaps	%xmm2,%xmm7
   1868 	pxor	%xmm2,%xmm2
   1869 	jmp	.L079cbc_ret
   1870 .L076cbc_enc_tail:
   1871 	movl	%eax,%ecx
   1872 .long	2767451785
   1873 	movl	$16,%ecx
   1874 	subl	%eax,%ecx
   1875 	xorl	%eax,%eax
   1876 .long	2868115081
   1877 	leal	-16(%edi),%edi
   1878 	movl	%ebx,%ecx
   1879 	movl	%edi,%esi
   1880 	movl	%ebp,%edx
   1881 	jmp	.L077cbc_enc_loop
   1882 .align	16
   1883 .L075cbc_decrypt:
   1884 	cmpl	$80,%eax
   1885 	jbe	.L080cbc_dec_tail
   1886 	movaps	%xmm7,(%esp)
   1887 	subl	$80,%eax
   1888 	jmp	.L081cbc_dec_loop6_enter
   1889 .align	16
   1890 .L082cbc_dec_loop6:
   1891 	movaps	%xmm0,(%esp)
   1892 	movups	%xmm7,(%edi)
   1893 	leal	16(%edi),%edi
   1894 .L081cbc_dec_loop6_enter:
   1895 	movdqu	(%esi),%xmm2
   1896 	movdqu	16(%esi),%xmm3
   1897 	movdqu	32(%esi),%xmm4
   1898 	movdqu	48(%esi),%xmm5
   1899 	movdqu	64(%esi),%xmm6
   1900 	movdqu	80(%esi),%xmm7
   1901 	call	_aesni_decrypt6
   1902 	movups	(%esi),%xmm1
   1903 	movups	16(%esi),%xmm0
   1904 	xorps	(%esp),%xmm2
   1905 	xorps	%xmm1,%xmm3
   1906 	movups	32(%esi),%xmm1
   1907 	xorps	%xmm0,%xmm4
   1908 	movups	48(%esi),%xmm0
   1909 	xorps	%xmm1,%xmm5
   1910 	movups	64(%esi),%xmm1
   1911 	xorps	%xmm0,%xmm6
   1912 	movups	80(%esi),%xmm0
   1913 	xorps	%xmm1,%xmm7
   1914 	movups	%xmm2,(%edi)
   1915 	movups	%xmm3,16(%edi)
   1916 	leal	96(%esi),%esi
   1917 	movups	%xmm4,32(%edi)
   1918 	movl	%ebx,%ecx
   1919 	movups	%xmm5,48(%edi)
   1920 	movl	%ebp,%edx
   1921 	movups	%xmm6,64(%edi)
   1922 	leal	80(%edi),%edi
   1923 	subl	$96,%eax
   1924 	ja	.L082cbc_dec_loop6
   1925 	movaps	%xmm7,%xmm2
   1926 	movaps	%xmm0,%xmm7
   1927 	addl	$80,%eax
   1928 	jle	.L083cbc_dec_clear_tail_collected
   1929 	movups	%xmm2,(%edi)
   1930 	leal	16(%edi),%edi
   1931 .L080cbc_dec_tail:
   1932 	movups	(%esi),%xmm2
   1933 	movaps	%xmm2,%xmm6
   1934 	cmpl	$16,%eax
   1935 	jbe	.L084cbc_dec_one
   1936 	movups	16(%esi),%xmm3
   1937 	movaps	%xmm3,%xmm5
   1938 	cmpl	$32,%eax
   1939 	jbe	.L085cbc_dec_two
   1940 	movups	32(%esi),%xmm4
   1941 	cmpl	$48,%eax
   1942 	jbe	.L086cbc_dec_three
   1943 	movups	48(%esi),%xmm5
   1944 	cmpl	$64,%eax
   1945 	jbe	.L087cbc_dec_four
   1946 	movups	64(%esi),%xmm6
   1947 	movaps	%xmm7,(%esp)
   1948 	movups	(%esi),%xmm2
   1949 	xorps	%xmm7,%xmm7
   1950 	call	_aesni_decrypt6
   1951 	movups	(%esi),%xmm1
   1952 	movups	16(%esi),%xmm0
   1953 	xorps	(%esp),%xmm2
   1954 	xorps	%xmm1,%xmm3
   1955 	movups	32(%esi),%xmm1
   1956 	xorps	%xmm0,%xmm4
   1957 	movups	48(%esi),%xmm0
   1958 	xorps	%xmm1,%xmm5
   1959 	movups	64(%esi),%xmm7
   1960 	xorps	%xmm0,%xmm6
   1961 	movups	%xmm2,(%edi)
   1962 	movups	%xmm3,16(%edi)
   1963 	pxor	%xmm3,%xmm3
   1964 	movups	%xmm4,32(%edi)
   1965 	pxor	%xmm4,%xmm4
   1966 	movups	%xmm5,48(%edi)
   1967 	pxor	%xmm5,%xmm5
   1968 	leal	64(%edi),%edi
   1969 	movaps	%xmm6,%xmm2
   1970 	pxor	%xmm6,%xmm6
   1971 	subl	$80,%eax
   1972 	jmp	.L088cbc_dec_tail_collected
   1973 .align	16
   1974 .L084cbc_dec_one:
   1975 	movups	(%edx),%xmm0
   1976 	movups	16(%edx),%xmm1
   1977 	leal	32(%edx),%edx
   1978 	xorps	%xmm0,%xmm2
   1979 .L089dec1_loop_16:
   1980 .byte	102,15,56,222,209
   1981 	decl	%ecx
   1982 	movups	(%edx),%xmm1
   1983 	leal	16(%edx),%edx
   1984 	jnz	.L089dec1_loop_16
   1985 .byte	102,15,56,223,209
   1986 	xorps	%xmm7,%xmm2
   1987 	movaps	%xmm6,%xmm7
   1988 	subl	$16,%eax
   1989 	jmp	.L088cbc_dec_tail_collected
   1990 .align	16
   1991 .L085cbc_dec_two:
   1992 	call	_aesni_decrypt2
   1993 	xorps	%xmm7,%xmm2
   1994 	xorps	%xmm6,%xmm3
   1995 	movups	%xmm2,(%edi)
   1996 	movaps	%xmm3,%xmm2
   1997 	pxor	%xmm3,%xmm3
   1998 	leal	16(%edi),%edi
   1999 	movaps	%xmm5,%xmm7
   2000 	subl	$32,%eax
   2001 	jmp	.L088cbc_dec_tail_collected
   2002 .align	16
   2003 .L086cbc_dec_three:
   2004 	call	_aesni_decrypt3
   2005 	xorps	%xmm7,%xmm2
   2006 	xorps	%xmm6,%xmm3
   2007 	xorps	%xmm5,%xmm4
   2008 	movups	%xmm2,(%edi)
   2009 	movaps	%xmm4,%xmm2
   2010 	pxor	%xmm4,%xmm4
   2011 	movups	%xmm3,16(%edi)
   2012 	pxor	%xmm3,%xmm3
   2013 	leal	32(%edi),%edi
   2014 	movups	32(%esi),%xmm7
   2015 	subl	$48,%eax
   2016 	jmp	.L088cbc_dec_tail_collected
   2017 .align	16
   2018 .L087cbc_dec_four:
   2019 	call	_aesni_decrypt4
   2020 	movups	16(%esi),%xmm1
   2021 	movups	32(%esi),%xmm0
   2022 	xorps	%xmm7,%xmm2
   2023 	movups	48(%esi),%xmm7
   2024 	xorps	%xmm6,%xmm3
   2025 	movups	%xmm2,(%edi)
   2026 	xorps	%xmm1,%xmm4
   2027 	movups	%xmm3,16(%edi)
   2028 	pxor	%xmm3,%xmm3
   2029 	xorps	%xmm0,%xmm5
   2030 	movups	%xmm4,32(%edi)
   2031 	pxor	%xmm4,%xmm4
   2032 	leal	48(%edi),%edi
   2033 	movaps	%xmm5,%xmm2
   2034 	pxor	%xmm5,%xmm5
   2035 	subl	$64,%eax
   2036 	jmp	.L088cbc_dec_tail_collected
   2037 .align	16
   2038 .L083cbc_dec_clear_tail_collected:
   2039 	pxor	%xmm3,%xmm3
   2040 	pxor	%xmm4,%xmm4
   2041 	pxor	%xmm5,%xmm5
   2042 	pxor	%xmm6,%xmm6
   2043 .L088cbc_dec_tail_collected:
   2044 	andl	$15,%eax
   2045 	jnz	.L090cbc_dec_tail_partial
   2046 	movups	%xmm2,(%edi)
   2047 	pxor	%xmm0,%xmm0
   2048 	jmp	.L079cbc_ret
   2049 .align	16
   2050 .L090cbc_dec_tail_partial:
   2051 	movaps	%xmm2,(%esp)
   2052 	pxor	%xmm0,%xmm0
   2053 	movl	$16,%ecx
   2054 	movl	%esp,%esi
   2055 	subl	%eax,%ecx
   2056 .long	2767451785
   2057 	movdqa	%xmm2,(%esp)
   2058 .L079cbc_ret:
   2059 	movl	16(%esp),%esp
   2060 	movl	36(%esp),%ebp
   2061 	pxor	%xmm2,%xmm2
   2062 	pxor	%xmm1,%xmm1
   2063 	movups	%xmm7,(%ebp)
   2064 	pxor	%xmm7,%xmm7
   2065 .L074cbc_abort:
   2066 	popl	%edi
   2067 	popl	%esi
   2068 	popl	%ebx
   2069 	popl	%ebp
   2070 	ret
   2071 .size	aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin
   2072 .hidden	_aesni_set_encrypt_key
   2073 .type	_aesni_set_encrypt_key,@function
   2074 .align	16
   2075 _aesni_set_encrypt_key:
   2076 	pushl	%ebp
   2077 	pushl	%ebx
   2078 	testl	%eax,%eax
   2079 	jz	.L091bad_pointer
   2080 	testl	%edx,%edx
   2081 	jz	.L091bad_pointer
   2082 	call	.L092pic
   2083 .L092pic:
   2084 	popl	%ebx
   2085 	leal	.Lkey_const-.L092pic(%ebx),%ebx
   2086 	leal	OPENSSL_ia32cap_P-.Lkey_const(%ebx),%ebp
   2087 	movups	(%eax),%xmm0
   2088 	xorps	%xmm4,%xmm4
   2089 	movl	4(%ebp),%ebp
   2090 	leal	16(%edx),%edx
   2091 	andl	$268437504,%ebp
   2092 	cmpl	$256,%ecx
   2093 	je	.L09314rounds
   2094 	cmpl	$192,%ecx
   2095 	je	.L09412rounds
   2096 	cmpl	$128,%ecx
   2097 	jne	.L095bad_keybits
   2098 .align	16
   2099 .L09610rounds:
   2100 	cmpl	$268435456,%ebp
   2101 	je	.L09710rounds_alt
   2102 	movl	$9,%ecx
   2103 	movups	%xmm0,-16(%edx)
   2104 .byte	102,15,58,223,200,1
   2105 	call	.L098key_128_cold
   2106 .byte	102,15,58,223,200,2
   2107 	call	.L099key_128
   2108 .byte	102,15,58,223,200,4
   2109 	call	.L099key_128
   2110 .byte	102,15,58,223,200,8
   2111 	call	.L099key_128
   2112 .byte	102,15,58,223,200,16
   2113 	call	.L099key_128
   2114 .byte	102,15,58,223,200,32
   2115 	call	.L099key_128
   2116 .byte	102,15,58,223,200,64
   2117 	call	.L099key_128
   2118 .byte	102,15,58,223,200,128
   2119 	call	.L099key_128
   2120 .byte	102,15,58,223,200,27
   2121 	call	.L099key_128
   2122 .byte	102,15,58,223,200,54
   2123 	call	.L099key_128
   2124 	movups	%xmm0,(%edx)
   2125 	movl	%ecx,80(%edx)
   2126 	jmp	.L100good_key
   2127 .align	16
   2128 .L099key_128:
   2129 	movups	%xmm0,(%edx)
   2130 	leal	16(%edx),%edx
   2131 .L098key_128_cold:
   2132 	shufps	$16,%xmm0,%xmm4
   2133 	xorps	%xmm4,%xmm0
   2134 	shufps	$140,%xmm0,%xmm4
   2135 	xorps	%xmm4,%xmm0
   2136 	shufps	$255,%xmm1,%xmm1
   2137 	xorps	%xmm1,%xmm0
   2138 	ret
   2139 .align	16
   2140 .L09710rounds_alt:
   2141 	movdqa	(%ebx),%xmm5
   2142 	movl	$8,%ecx
   2143 	movdqa	32(%ebx),%xmm4
   2144 	movdqa	%xmm0,%xmm2
   2145 	movdqu	%xmm0,-16(%edx)
   2146 .L101loop_key128:
   2147 .byte	102,15,56,0,197
   2148 .byte	102,15,56,221,196
   2149 	pslld	$1,%xmm4
   2150 	leal	16(%edx),%edx
   2151 	movdqa	%xmm2,%xmm3
   2152 	pslldq	$4,%xmm2
   2153 	pxor	%xmm2,%xmm3
   2154 	pslldq	$4,%xmm2
   2155 	pxor	%xmm2,%xmm3
   2156 	pslldq	$4,%xmm2
   2157 	pxor	%xmm3,%xmm2
   2158 	pxor	%xmm2,%xmm0
   2159 	movdqu	%xmm0,-16(%edx)
   2160 	movdqa	%xmm0,%xmm2
   2161 	decl	%ecx
   2162 	jnz	.L101loop_key128
   2163 	movdqa	48(%ebx),%xmm4
   2164 .byte	102,15,56,0,197
   2165 .byte	102,15,56,221,196
   2166 	pslld	$1,%xmm4
   2167 	movdqa	%xmm2,%xmm3
   2168 	pslldq	$4,%xmm2
   2169 	pxor	%xmm2,%xmm3
   2170 	pslldq	$4,%xmm2
   2171 	pxor	%xmm2,%xmm3
   2172 	pslldq	$4,%xmm2
   2173 	pxor	%xmm3,%xmm2
   2174 	pxor	%xmm2,%xmm0
   2175 	movdqu	%xmm0,(%edx)
   2176 	movdqa	%xmm0,%xmm2
   2177 .byte	102,15,56,0,197
   2178 .byte	102,15,56,221,196
   2179 	movdqa	%xmm2,%xmm3
   2180 	pslldq	$4,%xmm2
   2181 	pxor	%xmm2,%xmm3
   2182 	pslldq	$4,%xmm2
   2183 	pxor	%xmm2,%xmm3
   2184 	pslldq	$4,%xmm2
   2185 	pxor	%xmm3,%xmm2
   2186 	pxor	%xmm2,%xmm0
   2187 	movdqu	%xmm0,16(%edx)
   2188 	movl	$9,%ecx
   2189 	movl	%ecx,96(%edx)
   2190 	jmp	.L100good_key
   2191 .align	16
   2192 .L09412rounds:
   2193 	movq	16(%eax),%xmm2
   2194 	cmpl	$268435456,%ebp
   2195 	je	.L10212rounds_alt
   2196 	movl	$11,%ecx
   2197 	movups	%xmm0,-16(%edx)
   2198 .byte	102,15,58,223,202,1
   2199 	call	.L103key_192a_cold
   2200 .byte	102,15,58,223,202,2
   2201 	call	.L104key_192b
   2202 .byte	102,15,58,223,202,4
   2203 	call	.L105key_192a
   2204 .byte	102,15,58,223,202,8
   2205 	call	.L104key_192b
   2206 .byte	102,15,58,223,202,16
   2207 	call	.L105key_192a
   2208 .byte	102,15,58,223,202,32
   2209 	call	.L104key_192b
   2210 .byte	102,15,58,223,202,64
   2211 	call	.L105key_192a
   2212 .byte	102,15,58,223,202,128
   2213 	call	.L104key_192b
   2214 	movups	%xmm0,(%edx)
   2215 	movl	%ecx,48(%edx)
   2216 	jmp	.L100good_key
   2217 .align	16
   2218 .L105key_192a:
   2219 	movups	%xmm0,(%edx)
   2220 	leal	16(%edx),%edx
   2221 .align	16
   2222 .L103key_192a_cold:
   2223 	movaps	%xmm2,%xmm5
   2224 .L106key_192b_warm:
   2225 	shufps	$16,%xmm0,%xmm4
   2226 	movdqa	%xmm2,%xmm3
   2227 	xorps	%xmm4,%xmm0
   2228 	shufps	$140,%xmm0,%xmm4
   2229 	pslldq	$4,%xmm3
   2230 	xorps	%xmm4,%xmm0
   2231 	pshufd	$85,%xmm1,%xmm1
   2232 	pxor	%xmm3,%xmm2
   2233 	pxor	%xmm1,%xmm0
   2234 	pshufd	$255,%xmm0,%xmm3
   2235 	pxor	%xmm3,%xmm2
   2236 	ret
   2237 .align	16
   2238 .L104key_192b:
   2239 	movaps	%xmm0,%xmm3
   2240 	shufps	$68,%xmm0,%xmm5
   2241 	movups	%xmm5,(%edx)
   2242 	shufps	$78,%xmm2,%xmm3
   2243 	movups	%xmm3,16(%edx)
   2244 	leal	32(%edx),%edx
   2245 	jmp	.L106key_192b_warm
   2246 .align	16
   2247 .L10212rounds_alt:
   2248 	movdqa	16(%ebx),%xmm5
   2249 	movdqa	32(%ebx),%xmm4
   2250 	movl	$8,%ecx
   2251 	movdqu	%xmm0,-16(%edx)
   2252 .L107loop_key192:
   2253 	movq	%xmm2,(%edx)
   2254 	movdqa	%xmm2,%xmm1
   2255 .byte	102,15,56,0,213
   2256 .byte	102,15,56,221,212
   2257 	pslld	$1,%xmm4
   2258 	leal	24(%edx),%edx
   2259 	movdqa	%xmm0,%xmm3
   2260 	pslldq	$4,%xmm0
   2261 	pxor	%xmm0,%xmm3
   2262 	pslldq	$4,%xmm0
   2263 	pxor	%xmm0,%xmm3
   2264 	pslldq	$4,%xmm0
   2265 	pxor	%xmm3,%xmm0
   2266 	pshufd	$255,%xmm0,%xmm3
   2267 	pxor	%xmm1,%xmm3
   2268 	pslldq	$4,%xmm1
   2269 	pxor	%xmm1,%xmm3
   2270 	pxor	%xmm2,%xmm0
   2271 	pxor	%xmm3,%xmm2
   2272 	movdqu	%xmm0,-16(%edx)
   2273 	decl	%ecx
   2274 	jnz	.L107loop_key192
   2275 	movl	$11,%ecx
   2276 	movl	%ecx,32(%edx)
   2277 	jmp	.L100good_key
   2278 .align	16
   2279 .L09314rounds:
   2280 	movups	16(%eax),%xmm2
   2281 	leal	16(%edx),%edx
   2282 	cmpl	$268435456,%ebp
   2283 	je	.L10814rounds_alt
   2284 	movl	$13,%ecx
   2285 	movups	%xmm0,-32(%edx)
   2286 	movups	%xmm2,-16(%edx)
   2287 .byte	102,15,58,223,202,1
   2288 	call	.L109key_256a_cold
   2289 .byte	102,15,58,223,200,1
   2290 	call	.L110key_256b
   2291 .byte	102,15,58,223,202,2
   2292 	call	.L111key_256a
   2293 .byte	102,15,58,223,200,2
   2294 	call	.L110key_256b
   2295 .byte	102,15,58,223,202,4
   2296 	call	.L111key_256a
   2297 .byte	102,15,58,223,200,4
   2298 	call	.L110key_256b
   2299 .byte	102,15,58,223,202,8
   2300 	call	.L111key_256a
   2301 .byte	102,15,58,223,200,8
   2302 	call	.L110key_256b
   2303 .byte	102,15,58,223,202,16
   2304 	call	.L111key_256a
   2305 .byte	102,15,58,223,200,16
   2306 	call	.L110key_256b
   2307 .byte	102,15,58,223,202,32
   2308 	call	.L111key_256a
   2309 .byte	102,15,58,223,200,32
   2310 	call	.L110key_256b
   2311 .byte	102,15,58,223,202,64
   2312 	call	.L111key_256a
   2313 	movups	%xmm0,(%edx)
   2314 	movl	%ecx,16(%edx)
   2315 	xorl	%eax,%eax
   2316 	jmp	.L100good_key
   2317 .align	16
   2318 .L111key_256a:
   2319 	movups	%xmm2,(%edx)
   2320 	leal	16(%edx),%edx
   2321 .L109key_256a_cold:
   2322 	shufps	$16,%xmm0,%xmm4
   2323 	xorps	%xmm4,%xmm0
   2324 	shufps	$140,%xmm0,%xmm4
   2325 	xorps	%xmm4,%xmm0
   2326 	shufps	$255,%xmm1,%xmm1
   2327 	xorps	%xmm1,%xmm0
   2328 	ret
   2329 .align	16
   2330 .L110key_256b:
   2331 	movups	%xmm0,(%edx)
   2332 	leal	16(%edx),%edx
   2333 	shufps	$16,%xmm2,%xmm4
   2334 	xorps	%xmm4,%xmm2
   2335 	shufps	$140,%xmm2,%xmm4
   2336 	xorps	%xmm4,%xmm2
   2337 	shufps	$170,%xmm1,%xmm1
   2338 	xorps	%xmm1,%xmm2
   2339 	ret
   2340 .align	16
   2341 .L10814rounds_alt:
   2342 	movdqa	(%ebx),%xmm5
   2343 	movdqa	32(%ebx),%xmm4
   2344 	movl	$7,%ecx
   2345 	movdqu	%xmm0,-32(%edx)
   2346 	movdqa	%xmm2,%xmm1
   2347 	movdqu	%xmm2,-16(%edx)
   2348 .L112loop_key256:
   2349 .byte	102,15,56,0,213
   2350 .byte	102,15,56,221,212
   2351 	movdqa	%xmm0,%xmm3
   2352 	pslldq	$4,%xmm0
   2353 	pxor	%xmm0,%xmm3
   2354 	pslldq	$4,%xmm0
   2355 	pxor	%xmm0,%xmm3
   2356 	pslldq	$4,%xmm0
   2357 	pxor	%xmm3,%xmm0
   2358 	pslld	$1,%xmm4
   2359 	pxor	%xmm2,%xmm0
   2360 	movdqu	%xmm0,(%edx)
   2361 	decl	%ecx
   2362 	jz	.L113done_key256
   2363 	pshufd	$255,%xmm0,%xmm2
   2364 	pxor	%xmm3,%xmm3
   2365 .byte	102,15,56,221,211
   2366 	movdqa	%xmm1,%xmm3
   2367 	pslldq	$4,%xmm1
   2368 	pxor	%xmm1,%xmm3
   2369 	pslldq	$4,%xmm1
   2370 	pxor	%xmm1,%xmm3
   2371 	pslldq	$4,%xmm1
   2372 	pxor	%xmm3,%xmm1
   2373 	pxor	%xmm1,%xmm2
   2374 	movdqu	%xmm2,16(%edx)
   2375 	leal	32(%edx),%edx
   2376 	movdqa	%xmm2,%xmm1
   2377 	jmp	.L112loop_key256
   2378 .L113done_key256:
   2379 	movl	$13,%ecx
   2380 	movl	%ecx,16(%edx)
   2381 .L100good_key:
   2382 	pxor	%xmm0,%xmm0
   2383 	pxor	%xmm1,%xmm1
   2384 	pxor	%xmm2,%xmm2
   2385 	pxor	%xmm3,%xmm3
   2386 	pxor	%xmm4,%xmm4
   2387 	pxor	%xmm5,%xmm5
   2388 	xorl	%eax,%eax
   2389 	popl	%ebx
   2390 	popl	%ebp
   2391 	ret
   2392 .align	4
   2393 .L091bad_pointer:
   2394 	movl	$-1,%eax
   2395 	popl	%ebx
   2396 	popl	%ebp
   2397 	ret
   2398 .align	4
   2399 .L095bad_keybits:
   2400 	pxor	%xmm0,%xmm0
   2401 	movl	$-2,%eax
   2402 	popl	%ebx
   2403 	popl	%ebp
   2404 	ret
   2405 .size	_aesni_set_encrypt_key,.-_aesni_set_encrypt_key
   2406 .globl	aesni_set_encrypt_key
   2407 .hidden	aesni_set_encrypt_key
   2408 .type	aesni_set_encrypt_key,@function
   2409 .align	16
   2410 aesni_set_encrypt_key:
   2411 .L_aesni_set_encrypt_key_begin:
   2412 	movl	4(%esp),%eax
   2413 	movl	8(%esp),%ecx
   2414 	movl	12(%esp),%edx
   2415 	call	_aesni_set_encrypt_key
   2416 	ret
   2417 .size	aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin
   2418 .globl	aesni_set_decrypt_key
   2419 .hidden	aesni_set_decrypt_key
   2420 .type	aesni_set_decrypt_key,@function
   2421 .align	16
   2422 aesni_set_decrypt_key:
   2423 .L_aesni_set_decrypt_key_begin:
   2424 	movl	4(%esp),%eax
   2425 	movl	8(%esp),%ecx
   2426 	movl	12(%esp),%edx
   2427 	call	_aesni_set_encrypt_key
   2428 	movl	12(%esp),%edx
   2429 	shll	$4,%ecx
   2430 	testl	%eax,%eax
   2431 	jnz	.L114dec_key_ret
   2432 	leal	16(%edx,%ecx,1),%eax
   2433 	movups	(%edx),%xmm0
   2434 	movups	(%eax),%xmm1
   2435 	movups	%xmm0,(%eax)
   2436 	movups	%xmm1,(%edx)
   2437 	leal	16(%edx),%edx
   2438 	leal	-16(%eax),%eax
   2439 .L115dec_key_inverse:
   2440 	movups	(%edx),%xmm0
   2441 	movups	(%eax),%xmm1
   2442 .byte	102,15,56,219,192
   2443 .byte	102,15,56,219,201
   2444 	leal	16(%edx),%edx
   2445 	leal	-16(%eax),%eax
   2446 	movups	%xmm0,16(%eax)
   2447 	movups	%xmm1,-16(%edx)
   2448 	cmpl	%edx,%eax
   2449 	ja	.L115dec_key_inverse
   2450 	movups	(%edx),%xmm0
   2451 .byte	102,15,56,219,192
   2452 	movups	%xmm0,(%edx)
   2453 	pxor	%xmm0,%xmm0
   2454 	pxor	%xmm1,%xmm1
   2455 	xorl	%eax,%eax
   2456 .L114dec_key_ret:
   2457 	ret
   2458 .size	aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin
   2459 .align	64
   2460 .Lkey_const:
   2461 .long	202313229,202313229,202313229,202313229
   2462 .long	67569157,67569157,67569157,67569157
   2463 .long	1,1,1,1
   2464 .long	27,27,27,27
   2465 .byte	65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
   2466 .byte	83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
   2467 .byte	32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
   2468 .byte	115,108,46,111,114,103,62,0
   2469 #endif
   2470