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