Home | History | Annotate | Download | only in asm
      1 .file	"vpaes-x86.s"
      2 .text
      3 .align	64
      4 .L_vpaes_consts:
      5 .long	218628480,235210255,168496130,67568393
      6 .long	252381056,17041926,33884169,51187212
      7 .long	252645135,252645135,252645135,252645135
      8 .long	1512730624,3266504856,1377990664,3401244816
      9 .long	830229760,1275146365,2969422977,3447763452
     10 .long	3411033600,2979783055,338359620,2782886510
     11 .long	4209124096,907596821,221174255,1006095553
     12 .long	191964160,3799684038,3164090317,1589111125
     13 .long	182528256,1777043520,2877432650,3265356744
     14 .long	1874708224,3503451415,3305285752,363511674
     15 .long	1606117888,3487855781,1093350906,2384367825
     16 .long	197121,67569157,134941193,202313229
     17 .long	67569157,134941193,202313229,197121
     18 .long	134941193,202313229,197121,67569157
     19 .long	202313229,197121,67569157,134941193
     20 .long	33619971,100992007,168364043,235736079
     21 .long	235736079,33619971,100992007,168364043
     22 .long	168364043,235736079,33619971,100992007
     23 .long	100992007,168364043,235736079,33619971
     24 .long	50462976,117835012,185207048,252579084
     25 .long	252314880,51251460,117574920,184942860
     26 .long	184682752,252054788,50987272,118359308
     27 .long	118099200,185467140,251790600,50727180
     28 .long	2946363062,528716217,1300004225,1881839624
     29 .long	1532713819,1532713819,1532713819,1532713819
     30 .long	3602276352,4288629033,3737020424,4153884961
     31 .long	1354558464,32357713,2958822624,3775749553
     32 .long	1201988352,132424512,1572796698,503232858
     33 .long	2213177600,1597421020,4103937655,675398315
     34 .long	2749646592,4273543773,1511898873,121693092
     35 .long	3040248576,1103263732,2871565598,1608280554
     36 .long	2236667136,2588920351,482954393,64377734
     37 .long	3069987328,291237287,2117370568,3650299247
     38 .long	533321216,3573750986,2572112006,1401264716
     39 .long	1339849704,2721158661,548607111,3445553514
     40 .long	2128193280,3054596040,2183486460,1257083700
     41 .long	655635200,1165381986,3923443150,2344132524
     42 .long	190078720,256924420,290342170,357187870
     43 .long	1610966272,2263057382,4103205268,309794674
     44 .long	2592527872,2233205587,1335446729,3402964816
     45 .long	3973531904,3225098121,3002836325,1918774430
     46 .long	3870401024,2102906079,2284471353,4117666579
     47 .long	617007872,1021508343,366931923,691083277
     48 .long	2528395776,3491914898,2968704004,1613121270
     49 .long	3445188352,3247741094,844474987,4093578302
     50 .long	651481088,1190302358,1689581232,574775300
     51 .long	4289380608,206939853,2555985458,2489840491
     52 .long	2130264064,327674451,3566485037,3349835193
     53 .long	2470714624,316102159,3636825756,3393945945
     54 .byte	86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
     55 .byte	111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83
     56 .byte	83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117
     57 .byte	114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105
     58 .byte	118,101,114,115,105,116,121,41,0
     59 .align	64
     60 .type	_vpaes_preheat,@function
     61 .align	16
     62 _vpaes_preheat:
     63 	addl	(%esp),%ebp
     64 	movdqa	-48(%ebp),%xmm7
     65 	movdqa	-16(%ebp),%xmm6
     66 	ret
     67 .size	_vpaes_preheat,.-_vpaes_preheat
     68 .type	_vpaes_encrypt_core,@function
     69 .align	16
     70 _vpaes_encrypt_core:
     71 	movl	$16,%ecx
     72 	movl	240(%edx),%eax
     73 	movdqa	%xmm6,%xmm1
     74 	movdqa	(%ebp),%xmm2
     75 	pandn	%xmm0,%xmm1
     76 	movdqu	(%edx),%xmm5
     77 	psrld	$4,%xmm1
     78 	pand	%xmm6,%xmm0
     79 .byte	102,15,56,0,208
     80 	movdqa	16(%ebp),%xmm0
     81 .byte	102,15,56,0,193
     82 	pxor	%xmm5,%xmm2
     83 	pxor	%xmm2,%xmm0
     84 	addl	$16,%edx
     85 	leal	192(%ebp),%ebx
     86 	jmp	.L000enc_entry
     87 .align	16
     88 .L001enc_loop:
     89 	movdqa	32(%ebp),%xmm4
     90 .byte	102,15,56,0,226
     91 	pxor	%xmm5,%xmm4
     92 	movdqa	48(%ebp),%xmm0
     93 .byte	102,15,56,0,195
     94 	pxor	%xmm4,%xmm0
     95 	movdqa	64(%ebp),%xmm5
     96 .byte	102,15,56,0,234
     97 	movdqa	-64(%ebx,%ecx,1),%xmm1
     98 	movdqa	80(%ebp),%xmm2
     99 .byte	102,15,56,0,211
    100 	pxor	%xmm5,%xmm2
    101 	movdqa	(%ebx,%ecx,1),%xmm4
    102 	movdqa	%xmm0,%xmm3
    103 .byte	102,15,56,0,193
    104 	addl	$16,%edx
    105 	pxor	%xmm2,%xmm0
    106 .byte	102,15,56,0,220
    107 	addl	$16,%ecx
    108 	pxor	%xmm0,%xmm3
    109 .byte	102,15,56,0,193
    110 	andl	$48,%ecx
    111 	pxor	%xmm3,%xmm0
    112 	subl	$1,%eax
    113 .L000enc_entry:
    114 	movdqa	%xmm6,%xmm1
    115 	pandn	%xmm0,%xmm1
    116 	psrld	$4,%xmm1
    117 	pand	%xmm6,%xmm0
    118 	movdqa	-32(%ebp),%xmm5
    119 .byte	102,15,56,0,232
    120 	pxor	%xmm1,%xmm0
    121 	movdqa	%xmm7,%xmm3
    122 .byte	102,15,56,0,217
    123 	pxor	%xmm5,%xmm3
    124 	movdqa	%xmm7,%xmm4
    125 .byte	102,15,56,0,224
    126 	pxor	%xmm5,%xmm4
    127 	movdqa	%xmm7,%xmm2
    128 .byte	102,15,56,0,211
    129 	pxor	%xmm0,%xmm2
    130 	movdqa	%xmm7,%xmm3
    131 	movdqu	(%edx),%xmm5
    132 .byte	102,15,56,0,220
    133 	pxor	%xmm1,%xmm3
    134 	jnz	.L001enc_loop
    135 	movdqa	96(%ebp),%xmm4
    136 	movdqa	112(%ebp),%xmm0
    137 .byte	102,15,56,0,226
    138 	pxor	%xmm5,%xmm4
    139 .byte	102,15,56,0,195
    140 	movdqa	64(%ebx,%ecx,1),%xmm1
    141 	pxor	%xmm4,%xmm0
    142 .byte	102,15,56,0,193
    143 	ret
    144 .size	_vpaes_encrypt_core,.-_vpaes_encrypt_core
    145 .type	_vpaes_decrypt_core,@function
    146 .align	16
    147 _vpaes_decrypt_core:
    148 	movl	240(%edx),%eax
    149 	leal	608(%ebp),%ebx
    150 	movdqa	%xmm6,%xmm1
    151 	movdqa	-64(%ebx),%xmm2
    152 	pandn	%xmm0,%xmm1
    153 	movl	%eax,%ecx
    154 	psrld	$4,%xmm1
    155 	movdqu	(%edx),%xmm5
    156 	shll	$4,%ecx
    157 	pand	%xmm6,%xmm0
    158 .byte	102,15,56,0,208
    159 	movdqa	-48(%ebx),%xmm0
    160 	xorl	$48,%ecx
    161 .byte	102,15,56,0,193
    162 	andl	$48,%ecx
    163 	pxor	%xmm5,%xmm2
    164 	movdqa	176(%ebp),%xmm5
    165 	pxor	%xmm2,%xmm0
    166 	addl	$16,%edx
    167 	leal	-352(%ebx,%ecx,1),%ecx
    168 	jmp	.L002dec_entry
    169 .align	16
    170 .L003dec_loop:
    171 	movdqa	-32(%ebx),%xmm4
    172 .byte	102,15,56,0,226
    173 	pxor	%xmm0,%xmm4
    174 	movdqa	-16(%ebx),%xmm0
    175 .byte	102,15,56,0,195
    176 	pxor	%xmm4,%xmm0
    177 	addl	$16,%edx
    178 .byte	102,15,56,0,197
    179 	movdqa	(%ebx),%xmm4
    180 .byte	102,15,56,0,226
    181 	pxor	%xmm0,%xmm4
    182 	movdqa	16(%ebx),%xmm0
    183 .byte	102,15,56,0,195
    184 	pxor	%xmm4,%xmm0
    185 	subl	$1,%eax
    186 .byte	102,15,56,0,197
    187 	movdqa	32(%ebx),%xmm4
    188 .byte	102,15,56,0,226
    189 	pxor	%xmm0,%xmm4
    190 	movdqa	48(%ebx),%xmm0
    191 .byte	102,15,56,0,195
    192 	pxor	%xmm4,%xmm0
    193 .byte	102,15,56,0,197
    194 	movdqa	64(%ebx),%xmm4
    195 .byte	102,15,56,0,226
    196 	pxor	%xmm0,%xmm4
    197 	movdqa	80(%ebx),%xmm0
    198 .byte	102,15,56,0,195
    199 	pxor	%xmm4,%xmm0
    200 .byte	102,15,58,15,237,12
    201 .L002dec_entry:
    202 	movdqa	%xmm6,%xmm1
    203 	pandn	%xmm0,%xmm1
    204 	psrld	$4,%xmm1
    205 	pand	%xmm6,%xmm0
    206 	movdqa	-32(%ebp),%xmm2
    207 .byte	102,15,56,0,208
    208 	pxor	%xmm1,%xmm0
    209 	movdqa	%xmm7,%xmm3
    210 .byte	102,15,56,0,217
    211 	pxor	%xmm2,%xmm3
    212 	movdqa	%xmm7,%xmm4
    213 .byte	102,15,56,0,224
    214 	pxor	%xmm2,%xmm4
    215 	movdqa	%xmm7,%xmm2
    216 .byte	102,15,56,0,211
    217 	pxor	%xmm0,%xmm2
    218 	movdqa	%xmm7,%xmm3
    219 .byte	102,15,56,0,220
    220 	pxor	%xmm1,%xmm3
    221 	movdqu	(%edx),%xmm0
    222 	jnz	.L003dec_loop
    223 	movdqa	96(%ebx),%xmm4
    224 .byte	102,15,56,0,226
    225 	pxor	%xmm0,%xmm4
    226 	movdqa	112(%ebx),%xmm0
    227 	movdqa	(%ecx),%xmm2
    228 .byte	102,15,56,0,195
    229 	pxor	%xmm4,%xmm0
    230 .byte	102,15,56,0,194
    231 	ret
    232 .size	_vpaes_decrypt_core,.-_vpaes_decrypt_core
    233 .type	_vpaes_schedule_core,@function
    234 .align	16
    235 _vpaes_schedule_core:
    236 	addl	(%esp),%ebp
    237 	movdqu	(%esi),%xmm0
    238 	movdqa	320(%ebp),%xmm2
    239 	movdqa	%xmm0,%xmm3
    240 	leal	(%ebp),%ebx
    241 	movdqa	%xmm2,4(%esp)
    242 	call	_vpaes_schedule_transform
    243 	movdqa	%xmm0,%xmm7
    244 	testl	%edi,%edi
    245 	jnz	.L004schedule_am_decrypting
    246 	movdqu	%xmm0,(%edx)
    247 	jmp	.L005schedule_go
    248 .L004schedule_am_decrypting:
    249 	movdqa	256(%ebp,%ecx,1),%xmm1
    250 .byte	102,15,56,0,217
    251 	movdqu	%xmm3,(%edx)
    252 	xorl	$48,%ecx
    253 .L005schedule_go:
    254 	cmpl	$192,%eax
    255 	ja	.L006schedule_256
    256 	je	.L007schedule_192
    257 .L008schedule_128:
    258 	movl	$10,%eax
    259 .L009loop_schedule_128:
    260 	call	_vpaes_schedule_round
    261 	decl	%eax
    262 	jz	.L010schedule_mangle_last
    263 	call	_vpaes_schedule_mangle
    264 	jmp	.L009loop_schedule_128
    265 .align	16
    266 .L007schedule_192:
    267 	movdqu	8(%esi),%xmm0
    268 	call	_vpaes_schedule_transform
    269 	movdqa	%xmm0,%xmm6
    270 	pxor	%xmm4,%xmm4
    271 	movhlps	%xmm4,%xmm6
    272 	movl	$4,%eax
    273 .L011loop_schedule_192:
    274 	call	_vpaes_schedule_round
    275 .byte	102,15,58,15,198,8
    276 	call	_vpaes_schedule_mangle
    277 	call	_vpaes_schedule_192_smear
    278 	call	_vpaes_schedule_mangle
    279 	call	_vpaes_schedule_round
    280 	decl	%eax
    281 	jz	.L010schedule_mangle_last
    282 	call	_vpaes_schedule_mangle
    283 	call	_vpaes_schedule_192_smear
    284 	jmp	.L011loop_schedule_192
    285 .align	16
    286 .L006schedule_256:
    287 	movdqu	16(%esi),%xmm0
    288 	call	_vpaes_schedule_transform
    289 	movl	$7,%eax
    290 .L012loop_schedule_256:
    291 	call	_vpaes_schedule_mangle
    292 	movdqa	%xmm0,%xmm6
    293 	call	_vpaes_schedule_round
    294 	decl	%eax
    295 	jz	.L010schedule_mangle_last
    296 	call	_vpaes_schedule_mangle
    297 	pshufd	$255,%xmm0,%xmm0
    298 	movdqa	%xmm7,20(%esp)
    299 	movdqa	%xmm6,%xmm7
    300 	call	.L_vpaes_schedule_low_round
    301 	movdqa	20(%esp),%xmm7
    302 	jmp	.L012loop_schedule_256
    303 .align	16
    304 .L010schedule_mangle_last:
    305 	leal	384(%ebp),%ebx
    306 	testl	%edi,%edi
    307 	jnz	.L013schedule_mangle_last_dec
    308 	movdqa	256(%ebp,%ecx,1),%xmm1
    309 .byte	102,15,56,0,193
    310 	leal	352(%ebp),%ebx
    311 	addl	$32,%edx
    312 .L013schedule_mangle_last_dec:
    313 	addl	$-16,%edx
    314 	pxor	336(%ebp),%xmm0
    315 	call	_vpaes_schedule_transform
    316 	movdqu	%xmm0,(%edx)
    317 	pxor	%xmm0,%xmm0
    318 	pxor	%xmm1,%xmm1
    319 	pxor	%xmm2,%xmm2
    320 	pxor	%xmm3,%xmm3
    321 	pxor	%xmm4,%xmm4
    322 	pxor	%xmm5,%xmm5
    323 	pxor	%xmm6,%xmm6
    324 	pxor	%xmm7,%xmm7
    325 	ret
    326 .size	_vpaes_schedule_core,.-_vpaes_schedule_core
    327 .type	_vpaes_schedule_192_smear,@function
    328 .align	16
    329 _vpaes_schedule_192_smear:
    330 	pshufd	$128,%xmm6,%xmm0
    331 	pxor	%xmm0,%xmm6
    332 	pshufd	$254,%xmm7,%xmm0
    333 	pxor	%xmm0,%xmm6
    334 	movdqa	%xmm6,%xmm0
    335 	pxor	%xmm1,%xmm1
    336 	movhlps	%xmm1,%xmm6
    337 	ret
    338 .size	_vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear
    339 .type	_vpaes_schedule_round,@function
    340 .align	16
    341 _vpaes_schedule_round:
    342 	movdqa	8(%esp),%xmm2
    343 	pxor	%xmm1,%xmm1
    344 .byte	102,15,58,15,202,15
    345 .byte	102,15,58,15,210,15
    346 	pxor	%xmm1,%xmm7
    347 	pshufd	$255,%xmm0,%xmm0
    348 .byte	102,15,58,15,192,1
    349 	movdqa	%xmm2,8(%esp)
    350 .L_vpaes_schedule_low_round:
    351 	movdqa	%xmm7,%xmm1
    352 	pslldq	$4,%xmm7
    353 	pxor	%xmm1,%xmm7
    354 	movdqa	%xmm7,%xmm1
    355 	pslldq	$8,%xmm7
    356 	pxor	%xmm1,%xmm7
    357 	pxor	336(%ebp),%xmm7
    358 	movdqa	-16(%ebp),%xmm4
    359 	movdqa	-48(%ebp),%xmm5
    360 	movdqa	%xmm4,%xmm1
    361 	pandn	%xmm0,%xmm1
    362 	psrld	$4,%xmm1
    363 	pand	%xmm4,%xmm0
    364 	movdqa	-32(%ebp),%xmm2
    365 .byte	102,15,56,0,208
    366 	pxor	%xmm1,%xmm0
    367 	movdqa	%xmm5,%xmm3
    368 .byte	102,15,56,0,217
    369 	pxor	%xmm2,%xmm3
    370 	movdqa	%xmm5,%xmm4
    371 .byte	102,15,56,0,224
    372 	pxor	%xmm2,%xmm4
    373 	movdqa	%xmm5,%xmm2
    374 .byte	102,15,56,0,211
    375 	pxor	%xmm0,%xmm2
    376 	movdqa	%xmm5,%xmm3
    377 .byte	102,15,56,0,220
    378 	pxor	%xmm1,%xmm3
    379 	movdqa	32(%ebp),%xmm4
    380 .byte	102,15,56,0,226
    381 	movdqa	48(%ebp),%xmm0
    382 .byte	102,15,56,0,195
    383 	pxor	%xmm4,%xmm0
    384 	pxor	%xmm7,%xmm0
    385 	movdqa	%xmm0,%xmm7
    386 	ret
    387 .size	_vpaes_schedule_round,.-_vpaes_schedule_round
    388 .type	_vpaes_schedule_transform,@function
    389 .align	16
    390 _vpaes_schedule_transform:
    391 	movdqa	-16(%ebp),%xmm2
    392 	movdqa	%xmm2,%xmm1
    393 	pandn	%xmm0,%xmm1
    394 	psrld	$4,%xmm1
    395 	pand	%xmm2,%xmm0
    396 	movdqa	(%ebx),%xmm2
    397 .byte	102,15,56,0,208
    398 	movdqa	16(%ebx),%xmm0
    399 .byte	102,15,56,0,193
    400 	pxor	%xmm2,%xmm0
    401 	ret
    402 .size	_vpaes_schedule_transform,.-_vpaes_schedule_transform
    403 .type	_vpaes_schedule_mangle,@function
    404 .align	16
    405 _vpaes_schedule_mangle:
    406 	movdqa	%xmm0,%xmm4
    407 	movdqa	128(%ebp),%xmm5
    408 	testl	%edi,%edi
    409 	jnz	.L014schedule_mangle_dec
    410 	addl	$16,%edx
    411 	pxor	336(%ebp),%xmm4
    412 .byte	102,15,56,0,229
    413 	movdqa	%xmm4,%xmm3
    414 .byte	102,15,56,0,229
    415 	pxor	%xmm4,%xmm3
    416 .byte	102,15,56,0,229
    417 	pxor	%xmm4,%xmm3
    418 	jmp	.L015schedule_mangle_both
    419 .align	16
    420 .L014schedule_mangle_dec:
    421 	movdqa	-16(%ebp),%xmm2
    422 	leal	416(%ebp),%esi
    423 	movdqa	%xmm2,%xmm1
    424 	pandn	%xmm4,%xmm1
    425 	psrld	$4,%xmm1
    426 	pand	%xmm2,%xmm4
    427 	movdqa	(%esi),%xmm2
    428 .byte	102,15,56,0,212
    429 	movdqa	16(%esi),%xmm3
    430 .byte	102,15,56,0,217
    431 	pxor	%xmm2,%xmm3
    432 .byte	102,15,56,0,221
    433 	movdqa	32(%esi),%xmm2
    434 .byte	102,15,56,0,212
    435 	pxor	%xmm3,%xmm2
    436 	movdqa	48(%esi),%xmm3
    437 .byte	102,15,56,0,217
    438 	pxor	%xmm2,%xmm3
    439 .byte	102,15,56,0,221
    440 	movdqa	64(%esi),%xmm2
    441 .byte	102,15,56,0,212
    442 	pxor	%xmm3,%xmm2
    443 	movdqa	80(%esi),%xmm3
    444 .byte	102,15,56,0,217
    445 	pxor	%xmm2,%xmm3
    446 .byte	102,15,56,0,221
    447 	movdqa	96(%esi),%xmm2
    448 .byte	102,15,56,0,212
    449 	pxor	%xmm3,%xmm2
    450 	movdqa	112(%esi),%xmm3
    451 .byte	102,15,56,0,217
    452 	pxor	%xmm2,%xmm3
    453 	addl	$-16,%edx
    454 .L015schedule_mangle_both:
    455 	movdqa	256(%ebp,%ecx,1),%xmm1
    456 .byte	102,15,56,0,217
    457 	addl	$-16,%ecx
    458 	andl	$48,%ecx
    459 	movdqu	%xmm3,(%edx)
    460 	ret
    461 .size	_vpaes_schedule_mangle,.-_vpaes_schedule_mangle
    462 .globl	vpaes_set_encrypt_key
    463 .type	vpaes_set_encrypt_key,@function
    464 .align	16
    465 vpaes_set_encrypt_key:
    466 .L_vpaes_set_encrypt_key_begin:
    467 	pushl	%ebp
    468 	pushl	%ebx
    469 	pushl	%esi
    470 	pushl	%edi
    471 	movl	20(%esp),%esi
    472 	leal	-56(%esp),%ebx
    473 	movl	24(%esp),%eax
    474 	andl	$-16,%ebx
    475 	movl	28(%esp),%edx
    476 	xchgl	%esp,%ebx
    477 	movl	%ebx,48(%esp)
    478 	movl	%eax,%ebx
    479 	shrl	$5,%ebx
    480 	addl	$5,%ebx
    481 	movl	%ebx,240(%edx)
    482 	movl	$48,%ecx
    483 	movl	$0,%edi
    484 	leal	.L_vpaes_consts+0x30-.L016pic_point,%ebp
    485 	call	_vpaes_schedule_core
    486 .L016pic_point:
    487 	movl	48(%esp),%esp
    488 	xorl	%eax,%eax
    489 	popl	%edi
    490 	popl	%esi
    491 	popl	%ebx
    492 	popl	%ebp
    493 	ret
    494 .size	vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin
    495 .globl	vpaes_set_decrypt_key
    496 .type	vpaes_set_decrypt_key,@function
    497 .align	16
    498 vpaes_set_decrypt_key:
    499 .L_vpaes_set_decrypt_key_begin:
    500 	pushl	%ebp
    501 	pushl	%ebx
    502 	pushl	%esi
    503 	pushl	%edi
    504 	movl	20(%esp),%esi
    505 	leal	-56(%esp),%ebx
    506 	movl	24(%esp),%eax
    507 	andl	$-16,%ebx
    508 	movl	28(%esp),%edx
    509 	xchgl	%esp,%ebx
    510 	movl	%ebx,48(%esp)
    511 	movl	%eax,%ebx
    512 	shrl	$5,%ebx
    513 	addl	$5,%ebx
    514 	movl	%ebx,240(%edx)
    515 	shll	$4,%ebx
    516 	leal	16(%edx,%ebx,1),%edx
    517 	movl	$1,%edi
    518 	movl	%eax,%ecx
    519 	shrl	$1,%ecx
    520 	andl	$32,%ecx
    521 	xorl	$32,%ecx
    522 	leal	.L_vpaes_consts+0x30-.L017pic_point,%ebp
    523 	call	_vpaes_schedule_core
    524 .L017pic_point:
    525 	movl	48(%esp),%esp
    526 	xorl	%eax,%eax
    527 	popl	%edi
    528 	popl	%esi
    529 	popl	%ebx
    530 	popl	%ebp
    531 	ret
    532 .size	vpaes_set_decrypt_key,.-.L_vpaes_set_decrypt_key_begin
    533 .globl	vpaes_encrypt
    534 .type	vpaes_encrypt,@function
    535 .align	16
    536 vpaes_encrypt:
    537 .L_vpaes_encrypt_begin:
    538 	pushl	%ebp
    539 	pushl	%ebx
    540 	pushl	%esi
    541 	pushl	%edi
    542 	leal	.L_vpaes_consts+0x30-.L018pic_point,%ebp
    543 	call	_vpaes_preheat
    544 .L018pic_point:
    545 	movl	20(%esp),%esi
    546 	leal	-56(%esp),%ebx
    547 	movl	24(%esp),%edi
    548 	andl	$-16,%ebx
    549 	movl	28(%esp),%edx
    550 	xchgl	%esp,%ebx
    551 	movl	%ebx,48(%esp)
    552 	movdqu	(%esi),%xmm0
    553 	call	_vpaes_encrypt_core
    554 	movdqu	%xmm0,(%edi)
    555 	movl	48(%esp),%esp
    556 	popl	%edi
    557 	popl	%esi
    558 	popl	%ebx
    559 	popl	%ebp
    560 	ret
    561 .size	vpaes_encrypt,.-.L_vpaes_encrypt_begin
    562 .globl	vpaes_decrypt
    563 .type	vpaes_decrypt,@function
    564 .align	16
    565 vpaes_decrypt:
    566 .L_vpaes_decrypt_begin:
    567 	pushl	%ebp
    568 	pushl	%ebx
    569 	pushl	%esi
    570 	pushl	%edi
    571 	leal	.L_vpaes_consts+0x30-.L019pic_point,%ebp
    572 	call	_vpaes_preheat
    573 .L019pic_point:
    574 	movl	20(%esp),%esi
    575 	leal	-56(%esp),%ebx
    576 	movl	24(%esp),%edi
    577 	andl	$-16,%ebx
    578 	movl	28(%esp),%edx
    579 	xchgl	%esp,%ebx
    580 	movl	%ebx,48(%esp)
    581 	movdqu	(%esi),%xmm0
    582 	call	_vpaes_decrypt_core
    583 	movdqu	%xmm0,(%edi)
    584 	movl	48(%esp),%esp
    585 	popl	%edi
    586 	popl	%esi
    587 	popl	%ebx
    588 	popl	%ebp
    589 	ret
    590 .size	vpaes_decrypt,.-.L_vpaes_decrypt_begin
    591 .globl	vpaes_cbc_encrypt
    592 .type	vpaes_cbc_encrypt,@function
    593 .align	16
    594 vpaes_cbc_encrypt:
    595 .L_vpaes_cbc_encrypt_begin:
    596 	pushl	%ebp
    597 	pushl	%ebx
    598 	pushl	%esi
    599 	pushl	%edi
    600 	movl	20(%esp),%esi
    601 	movl	24(%esp),%edi
    602 	movl	28(%esp),%eax
    603 	movl	32(%esp),%edx
    604 	subl	$16,%eax
    605 	jc	.L020cbc_abort
    606 	leal	-56(%esp),%ebx
    607 	movl	36(%esp),%ebp
    608 	andl	$-16,%ebx
    609 	movl	40(%esp),%ecx
    610 	xchgl	%esp,%ebx
    611 	movdqu	(%ebp),%xmm1
    612 	subl	%esi,%edi
    613 	movl	%ebx,48(%esp)
    614 	movl	%edi,(%esp)
    615 	movl	%edx,4(%esp)
    616 	movl	%ebp,8(%esp)
    617 	movl	%eax,%edi
    618 	leal	.L_vpaes_consts+0x30-.L021pic_point,%ebp
    619 	call	_vpaes_preheat
    620 .L021pic_point:
    621 	cmpl	$0,%ecx
    622 	je	.L022cbc_dec_loop
    623 	jmp	.L023cbc_enc_loop
    624 .align	16
    625 .L023cbc_enc_loop:
    626 	movdqu	(%esi),%xmm0
    627 	pxor	%xmm1,%xmm0
    628 	call	_vpaes_encrypt_core
    629 	movl	(%esp),%ebx
    630 	movl	4(%esp),%edx
    631 	movdqa	%xmm0,%xmm1
    632 	movdqu	%xmm0,(%ebx,%esi,1)
    633 	leal	16(%esi),%esi
    634 	subl	$16,%edi
    635 	jnc	.L023cbc_enc_loop
    636 	jmp	.L024cbc_done
    637 .align	16
    638 .L022cbc_dec_loop:
    639 	movdqu	(%esi),%xmm0
    640 	movdqa	%xmm1,16(%esp)
    641 	movdqa	%xmm0,32(%esp)
    642 	call	_vpaes_decrypt_core
    643 	movl	(%esp),%ebx
    644 	movl	4(%esp),%edx
    645 	pxor	16(%esp),%xmm0
    646 	movdqa	32(%esp),%xmm1
    647 	movdqu	%xmm0,(%ebx,%esi,1)
    648 	leal	16(%esi),%esi
    649 	subl	$16,%edi
    650 	jnc	.L022cbc_dec_loop
    651 .L024cbc_done:
    652 	movl	8(%esp),%ebx
    653 	movl	48(%esp),%esp
    654 	movdqu	%xmm1,(%ebx)
    655 .L020cbc_abort:
    656 	popl	%edi
    657 	popl	%esi
    658 	popl	%ebx
    659 	popl	%ebp
    660 	ret
    661 .size	vpaes_cbc_encrypt,.-.L_vpaes_cbc_encrypt_begin
    662