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