Home | History | Annotate | Download | only in fipsmodule
      1 # This file is generated from a similarly-named Perl script in the BoringSSL
      2 # source tree. Do not edit by hand.
      3 
      4 #if defined(__i386__)
      5 #if defined(BORINGSSL_PREFIX)
      6 #include <boringssl_prefix_symbols_asm.h>
      7 #endif
      8 .text
      9 #ifndef NDEBUG
     10 #endif
     11 .align	6,0x90
     12 L_vpaes_consts:
     13 .long	218628480,235210255,168496130,67568393
     14 .long	252381056,17041926,33884169,51187212
     15 .long	252645135,252645135,252645135,252645135
     16 .long	1512730624,3266504856,1377990664,3401244816
     17 .long	830229760,1275146365,2969422977,3447763452
     18 .long	3411033600,2979783055,338359620,2782886510
     19 .long	4209124096,907596821,221174255,1006095553
     20 .long	191964160,3799684038,3164090317,1589111125
     21 .long	182528256,1777043520,2877432650,3265356744
     22 .long	1874708224,3503451415,3305285752,363511674
     23 .long	1606117888,3487855781,1093350906,2384367825
     24 .long	197121,67569157,134941193,202313229
     25 .long	67569157,134941193,202313229,197121
     26 .long	134941193,202313229,197121,67569157
     27 .long	202313229,197121,67569157,134941193
     28 .long	33619971,100992007,168364043,235736079
     29 .long	235736079,33619971,100992007,168364043
     30 .long	168364043,235736079,33619971,100992007
     31 .long	100992007,168364043,235736079,33619971
     32 .long	50462976,117835012,185207048,252579084
     33 .long	252314880,51251460,117574920,184942860
     34 .long	184682752,252054788,50987272,118359308
     35 .long	118099200,185467140,251790600,50727180
     36 .long	2946363062,528716217,1300004225,1881839624
     37 .long	1532713819,1532713819,1532713819,1532713819
     38 .long	3602276352,4288629033,3737020424,4153884961
     39 .long	1354558464,32357713,2958822624,3775749553
     40 .long	1201988352,132424512,1572796698,503232858
     41 .long	2213177600,1597421020,4103937655,675398315
     42 .long	2749646592,4273543773,1511898873,121693092
     43 .long	3040248576,1103263732,2871565598,1608280554
     44 .long	2236667136,2588920351,482954393,64377734
     45 .long	3069987328,291237287,2117370568,3650299247
     46 .long	533321216,3573750986,2572112006,1401264716
     47 .long	1339849704,2721158661,548607111,3445553514
     48 .long	2128193280,3054596040,2183486460,1257083700
     49 .long	655635200,1165381986,3923443150,2344132524
     50 .long	190078720,256924420,290342170,357187870
     51 .long	1610966272,2263057382,4103205268,309794674
     52 .long	2592527872,2233205587,1335446729,3402964816
     53 .long	3973531904,3225098121,3002836325,1918774430
     54 .long	3870401024,2102906079,2284471353,4117666579
     55 .long	617007872,1021508343,366931923,691083277
     56 .long	2528395776,3491914898,2968704004,1613121270
     57 .long	3445188352,3247741094,844474987,4093578302
     58 .long	651481088,1190302358,1689581232,574775300
     59 .long	4289380608,206939853,2555985458,2489840491
     60 .long	2130264064,327674451,3566485037,3349835193
     61 .long	2470714624,316102159,3636825756,3393945945
     62 .byte	86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
     63 .byte	111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83
     64 .byte	83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117
     65 .byte	114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105
     66 .byte	118,101,114,115,105,116,121,41,0
     67 .align	6,0x90
     68 .private_extern	__vpaes_preheat
     69 .align	4
     70 __vpaes_preheat:
     71 	addl	(%esp),%ebp
     72 	movdqa	-48(%ebp),%xmm7
     73 	movdqa	-16(%ebp),%xmm6
     74 	ret
     75 .private_extern	__vpaes_encrypt_core
     76 .align	4
     77 __vpaes_encrypt_core:
     78 	movl	$16,%ecx
     79 	movl	240(%edx),%eax
     80 	movdqa	%xmm6,%xmm1
     81 	movdqa	(%ebp),%xmm2
     82 	pandn	%xmm0,%xmm1
     83 	pand	%xmm6,%xmm0
     84 	movdqu	(%edx),%xmm5
     85 .byte	102,15,56,0,208
     86 	movdqa	16(%ebp),%xmm0
     87 	pxor	%xmm5,%xmm2
     88 	psrld	$4,%xmm1
     89 	addl	$16,%edx
     90 .byte	102,15,56,0,193
     91 	leal	192(%ebp),%ebx
     92 	pxor	%xmm2,%xmm0
     93 	jmp	L000enc_entry
     94 .align	4,0x90
     95 L001enc_loop:
     96 	movdqa	32(%ebp),%xmm4
     97 	movdqa	48(%ebp),%xmm0
     98 .byte	102,15,56,0,226
     99 .byte	102,15,56,0,195
    100 	pxor	%xmm5,%xmm4
    101 	movdqa	64(%ebp),%xmm5
    102 	pxor	%xmm4,%xmm0
    103 	movdqa	-64(%ebx,%ecx,1),%xmm1
    104 .byte	102,15,56,0,234
    105 	movdqa	80(%ebp),%xmm2
    106 	movdqa	(%ebx,%ecx,1),%xmm4
    107 .byte	102,15,56,0,211
    108 	movdqa	%xmm0,%xmm3
    109 	pxor	%xmm5,%xmm2
    110 .byte	102,15,56,0,193
    111 	addl	$16,%edx
    112 	pxor	%xmm2,%xmm0
    113 .byte	102,15,56,0,220
    114 	addl	$16,%ecx
    115 	pxor	%xmm0,%xmm3
    116 .byte	102,15,56,0,193
    117 	andl	$48,%ecx
    118 	subl	$1,%eax
    119 	pxor	%xmm3,%xmm0
    120 L000enc_entry:
    121 	movdqa	%xmm6,%xmm1
    122 	movdqa	-32(%ebp),%xmm5
    123 	pandn	%xmm0,%xmm1
    124 	psrld	$4,%xmm1
    125 	pand	%xmm6,%xmm0
    126 .byte	102,15,56,0,232
    127 	movdqa	%xmm7,%xmm3
    128 	pxor	%xmm1,%xmm0
    129 .byte	102,15,56,0,217
    130 	movdqa	%xmm7,%xmm4
    131 	pxor	%xmm5,%xmm3
    132 .byte	102,15,56,0,224
    133 	movdqa	%xmm7,%xmm2
    134 	pxor	%xmm5,%xmm4
    135 .byte	102,15,56,0,211
    136 	movdqa	%xmm7,%xmm3
    137 	pxor	%xmm0,%xmm2
    138 .byte	102,15,56,0,220
    139 	movdqu	(%edx),%xmm5
    140 	pxor	%xmm1,%xmm3
    141 	jnz	L001enc_loop
    142 	movdqa	96(%ebp),%xmm4
    143 	movdqa	112(%ebp),%xmm0
    144 .byte	102,15,56,0,226
    145 	pxor	%xmm5,%xmm4
    146 .byte	102,15,56,0,195
    147 	movdqa	64(%ebx,%ecx,1),%xmm1
    148 	pxor	%xmm4,%xmm0
    149 .byte	102,15,56,0,193
    150 	ret
    151 .private_extern	__vpaes_decrypt_core
    152 .align	4
    153 __vpaes_decrypt_core:
    154 	leal	608(%ebp),%ebx
    155 	movl	240(%edx),%eax
    156 	movdqa	%xmm6,%xmm1
    157 	movdqa	-64(%ebx),%xmm2
    158 	pandn	%xmm0,%xmm1
    159 	movl	%eax,%ecx
    160 	psrld	$4,%xmm1
    161 	movdqu	(%edx),%xmm5
    162 	shll	$4,%ecx
    163 	pand	%xmm6,%xmm0
    164 .byte	102,15,56,0,208
    165 	movdqa	-48(%ebx),%xmm0
    166 	xorl	$48,%ecx
    167 .byte	102,15,56,0,193
    168 	andl	$48,%ecx
    169 	pxor	%xmm5,%xmm2
    170 	movdqa	176(%ebp),%xmm5
    171 	pxor	%xmm2,%xmm0
    172 	addl	$16,%edx
    173 	leal	-352(%ebx,%ecx,1),%ecx
    174 	jmp	L002dec_entry
    175 .align	4,0x90
    176 L003dec_loop:
    177 	movdqa	-32(%ebx),%xmm4
    178 	movdqa	-16(%ebx),%xmm1
    179 .byte	102,15,56,0,226
    180 .byte	102,15,56,0,203
    181 	pxor	%xmm4,%xmm0
    182 	movdqa	(%ebx),%xmm4
    183 	pxor	%xmm1,%xmm0
    184 	movdqa	16(%ebx),%xmm1
    185 .byte	102,15,56,0,226
    186 .byte	102,15,56,0,197
    187 .byte	102,15,56,0,203
    188 	pxor	%xmm4,%xmm0
    189 	movdqa	32(%ebx),%xmm4
    190 	pxor	%xmm1,%xmm0
    191 	movdqa	48(%ebx),%xmm1
    192 .byte	102,15,56,0,226
    193 .byte	102,15,56,0,197
    194 .byte	102,15,56,0,203
    195 	pxor	%xmm4,%xmm0
    196 	movdqa	64(%ebx),%xmm4
    197 	pxor	%xmm1,%xmm0
    198 	movdqa	80(%ebx),%xmm1
    199 .byte	102,15,56,0,226
    200 .byte	102,15,56,0,197
    201 .byte	102,15,56,0,203
    202 	pxor	%xmm4,%xmm0
    203 	addl	$16,%edx
    204 .byte	102,15,58,15,237,12
    205 	pxor	%xmm1,%xmm0
    206 	subl	$1,%eax
    207 L002dec_entry:
    208 	movdqa	%xmm6,%xmm1
    209 	movdqa	-32(%ebp),%xmm2
    210 	pandn	%xmm0,%xmm1
    211 	pand	%xmm6,%xmm0
    212 	psrld	$4,%xmm1
    213 .byte	102,15,56,0,208
    214 	movdqa	%xmm7,%xmm3
    215 	pxor	%xmm1,%xmm0
    216 .byte	102,15,56,0,217
    217 	movdqa	%xmm7,%xmm4
    218 	pxor	%xmm2,%xmm3
    219 .byte	102,15,56,0,224
    220 	pxor	%xmm2,%xmm4
    221 	movdqa	%xmm7,%xmm2
    222 .byte	102,15,56,0,211
    223 	movdqa	%xmm7,%xmm3
    224 	pxor	%xmm0,%xmm2
    225 .byte	102,15,56,0,220
    226 	movdqu	(%edx),%xmm0
    227 	pxor	%xmm1,%xmm3
    228 	jnz	L003dec_loop
    229 	movdqa	96(%ebx),%xmm4
    230 .byte	102,15,56,0,226
    231 	pxor	%xmm0,%xmm4
    232 	movdqa	112(%ebx),%xmm0
    233 	movdqa	(%ecx),%xmm2
    234 .byte	102,15,56,0,195
    235 	pxor	%xmm4,%xmm0
    236 .byte	102,15,56,0,194
    237 	ret
    238 .private_extern	__vpaes_schedule_core
    239 .align	4
    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	4,0x90
    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	4,0x90
    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	4,0x90
    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 .private_extern	__vpaes_schedule_192_smear
    332 .align	4
    333 __vpaes_schedule_192_smear:
    334 	pshufd	$128,%xmm6,%xmm1
    335 	pshufd	$254,%xmm7,%xmm0
    336 	pxor	%xmm1,%xmm6
    337 	pxor	%xmm1,%xmm1
    338 	pxor	%xmm0,%xmm6
    339 	movdqa	%xmm6,%xmm0
    340 	movhlps	%xmm1,%xmm6
    341 	ret
    342 .private_extern	__vpaes_schedule_round
    343 .align	4
    344 __vpaes_schedule_round:
    345 	movdqa	8(%esp),%xmm2
    346 	pxor	%xmm1,%xmm1
    347 .byte	102,15,58,15,202,15
    348 .byte	102,15,58,15,210,15
    349 	pxor	%xmm1,%xmm7
    350 	pshufd	$255,%xmm0,%xmm0
    351 .byte	102,15,58,15,192,1
    352 	movdqa	%xmm2,8(%esp)
    353 L_vpaes_schedule_low_round:
    354 	movdqa	%xmm7,%xmm1
    355 	pslldq	$4,%xmm7
    356 	pxor	%xmm1,%xmm7
    357 	movdqa	%xmm7,%xmm1
    358 	pslldq	$8,%xmm7
    359 	pxor	%xmm1,%xmm7
    360 	pxor	336(%ebp),%xmm7
    361 	movdqa	-16(%ebp),%xmm4
    362 	movdqa	-48(%ebp),%xmm5
    363 	movdqa	%xmm4,%xmm1
    364 	pandn	%xmm0,%xmm1
    365 	psrld	$4,%xmm1
    366 	pand	%xmm4,%xmm0
    367 	movdqa	-32(%ebp),%xmm2
    368 .byte	102,15,56,0,208
    369 	pxor	%xmm1,%xmm0
    370 	movdqa	%xmm5,%xmm3
    371 .byte	102,15,56,0,217
    372 	pxor	%xmm2,%xmm3
    373 	movdqa	%xmm5,%xmm4
    374 .byte	102,15,56,0,224
    375 	pxor	%xmm2,%xmm4
    376 	movdqa	%xmm5,%xmm2
    377 .byte	102,15,56,0,211
    378 	pxor	%xmm0,%xmm2
    379 	movdqa	%xmm5,%xmm3
    380 .byte	102,15,56,0,220
    381 	pxor	%xmm1,%xmm3
    382 	movdqa	32(%ebp),%xmm4
    383 .byte	102,15,56,0,226
    384 	movdqa	48(%ebp),%xmm0
    385 .byte	102,15,56,0,195
    386 	pxor	%xmm4,%xmm0
    387 	pxor	%xmm7,%xmm0
    388 	movdqa	%xmm0,%xmm7
    389 	ret
    390 .private_extern	__vpaes_schedule_transform
    391 .align	4
    392 __vpaes_schedule_transform:
    393 	movdqa	-16(%ebp),%xmm2
    394 	movdqa	%xmm2,%xmm1
    395 	pandn	%xmm0,%xmm1
    396 	psrld	$4,%xmm1
    397 	pand	%xmm2,%xmm0
    398 	movdqa	(%ebx),%xmm2
    399 .byte	102,15,56,0,208
    400 	movdqa	16(%ebx),%xmm0
    401 .byte	102,15,56,0,193
    402 	pxor	%xmm2,%xmm0
    403 	ret
    404 .private_extern	__vpaes_schedule_mangle
    405 .align	4
    406 __vpaes_schedule_mangle:
    407 	movdqa	%xmm0,%xmm4
    408 	movdqa	128(%ebp),%xmm5
    409 	testl	%edi,%edi
    410 	jnz	L014schedule_mangle_dec
    411 	addl	$16,%edx
    412 	pxor	336(%ebp),%xmm4
    413 .byte	102,15,56,0,229
    414 	movdqa	%xmm4,%xmm3
    415 .byte	102,15,56,0,229
    416 	pxor	%xmm4,%xmm3
    417 .byte	102,15,56,0,229
    418 	pxor	%xmm4,%xmm3
    419 	jmp	L015schedule_mangle_both
    420 .align	4,0x90
    421 L014schedule_mangle_dec:
    422 	movdqa	-16(%ebp),%xmm2
    423 	leal	416(%ebp),%esi
    424 	movdqa	%xmm2,%xmm1
    425 	pandn	%xmm4,%xmm1
    426 	psrld	$4,%xmm1
    427 	pand	%xmm2,%xmm4
    428 	movdqa	(%esi),%xmm2
    429 .byte	102,15,56,0,212
    430 	movdqa	16(%esi),%xmm3
    431 .byte	102,15,56,0,217
    432 	pxor	%xmm2,%xmm3
    433 .byte	102,15,56,0,221
    434 	movdqa	32(%esi),%xmm2
    435 .byte	102,15,56,0,212
    436 	pxor	%xmm3,%xmm2
    437 	movdqa	48(%esi),%xmm3
    438 .byte	102,15,56,0,217
    439 	pxor	%xmm2,%xmm3
    440 .byte	102,15,56,0,221
    441 	movdqa	64(%esi),%xmm2
    442 .byte	102,15,56,0,212
    443 	pxor	%xmm3,%xmm2
    444 	movdqa	80(%esi),%xmm3
    445 .byte	102,15,56,0,217
    446 	pxor	%xmm2,%xmm3
    447 .byte	102,15,56,0,221
    448 	movdqa	96(%esi),%xmm2
    449 .byte	102,15,56,0,212
    450 	pxor	%xmm3,%xmm2
    451 	movdqa	112(%esi),%xmm3
    452 .byte	102,15,56,0,217
    453 	pxor	%xmm2,%xmm3
    454 	addl	$-16,%edx
    455 L015schedule_mangle_both:
    456 	movdqa	256(%ebp,%ecx,1),%xmm1
    457 .byte	102,15,56,0,217
    458 	addl	$-16,%ecx
    459 	andl	$48,%ecx
    460 	movdqu	%xmm3,(%edx)
    461 	ret
    462 .globl	_vpaes_set_encrypt_key
    463 .private_extern	_vpaes_set_encrypt_key
    464 .align	4
    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 #ifndef NDEBUG
    472 	pushl	%ebx
    473 	pushl	%edx
    474 	call	L016pic
    475 L016pic:
    476 	popl	%ebx
    477 	leal	_BORINGSSL_function_hit+5-L016pic(%ebx),%ebx
    478 	movl	$1,%edx
    479 	movb	%dl,(%ebx)
    480 	popl	%edx
    481 	popl	%ebx
    482 #endif
    483 	movl	20(%esp),%esi
    484 	leal	-56(%esp),%ebx
    485 	movl	24(%esp),%eax
    486 	andl	$-16,%ebx
    487 	movl	28(%esp),%edx
    488 	xchgl	%esp,%ebx
    489 	movl	%ebx,48(%esp)
    490 	movl	%eax,%ebx
    491 	shrl	$5,%ebx
    492 	addl	$5,%ebx
    493 	movl	%ebx,240(%edx)
    494 	movl	$48,%ecx
    495 	movl	$0,%edi
    496 	leal	L_vpaes_consts+0x30-L017pic_point,%ebp
    497 	call	__vpaes_schedule_core
    498 L017pic_point:
    499 	movl	48(%esp),%esp
    500 	xorl	%eax,%eax
    501 	popl	%edi
    502 	popl	%esi
    503 	popl	%ebx
    504 	popl	%ebp
    505 	ret
    506 .globl	_vpaes_set_decrypt_key
    507 .private_extern	_vpaes_set_decrypt_key
    508 .align	4
    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-L018pic_point,%ebp
    534 	call	__vpaes_schedule_core
    535 L018pic_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 .globl	_vpaes_encrypt
    544 .private_extern	_vpaes_encrypt
    545 .align	4
    546 _vpaes_encrypt:
    547 L_vpaes_encrypt_begin:
    548 	pushl	%ebp
    549 	pushl	%ebx
    550 	pushl	%esi
    551 	pushl	%edi
    552 #ifndef NDEBUG
    553 	pushl	%ebx
    554 	pushl	%edx
    555 	call	L019pic
    556 L019pic:
    557 	popl	%ebx
    558 	leal	_BORINGSSL_function_hit+4-L019pic(%ebx),%ebx
    559 	movl	$1,%edx
    560 	movb	%dl,(%ebx)
    561 	popl	%edx
    562 	popl	%ebx
    563 #endif
    564 	leal	L_vpaes_consts+0x30-L020pic_point,%ebp
    565 	call	__vpaes_preheat
    566 L020pic_point:
    567 	movl	20(%esp),%esi
    568 	leal	-56(%esp),%ebx
    569 	movl	24(%esp),%edi
    570 	andl	$-16,%ebx
    571 	movl	28(%esp),%edx
    572 	xchgl	%esp,%ebx
    573 	movl	%ebx,48(%esp)
    574 	movdqu	(%esi),%xmm0
    575 	call	__vpaes_encrypt_core
    576 	movdqu	%xmm0,(%edi)
    577 	movl	48(%esp),%esp
    578 	popl	%edi
    579 	popl	%esi
    580 	popl	%ebx
    581 	popl	%ebp
    582 	ret
    583 .globl	_vpaes_decrypt
    584 .private_extern	_vpaes_decrypt
    585 .align	4
    586 _vpaes_decrypt:
    587 L_vpaes_decrypt_begin:
    588 	pushl	%ebp
    589 	pushl	%ebx
    590 	pushl	%esi
    591 	pushl	%edi
    592 	leal	L_vpaes_consts+0x30-L021pic_point,%ebp
    593 	call	__vpaes_preheat
    594 L021pic_point:
    595 	movl	20(%esp),%esi
    596 	leal	-56(%esp),%ebx
    597 	movl	24(%esp),%edi
    598 	andl	$-16,%ebx
    599 	movl	28(%esp),%edx
    600 	xchgl	%esp,%ebx
    601 	movl	%ebx,48(%esp)
    602 	movdqu	(%esi),%xmm0
    603 	call	__vpaes_decrypt_core
    604 	movdqu	%xmm0,(%edi)
    605 	movl	48(%esp),%esp
    606 	popl	%edi
    607 	popl	%esi
    608 	popl	%ebx
    609 	popl	%ebp
    610 	ret
    611 .globl	_vpaes_cbc_encrypt
    612 .private_extern	_vpaes_cbc_encrypt
    613 .align	4
    614 _vpaes_cbc_encrypt:
    615 L_vpaes_cbc_encrypt_begin:
    616 	pushl	%ebp
    617 	pushl	%ebx
    618 	pushl	%esi
    619 	pushl	%edi
    620 	movl	20(%esp),%esi
    621 	movl	24(%esp),%edi
    622 	movl	28(%esp),%eax
    623 	movl	32(%esp),%edx
    624 	subl	$16,%eax
    625 	jc	L022cbc_abort
    626 	leal	-56(%esp),%ebx
    627 	movl	36(%esp),%ebp
    628 	andl	$-16,%ebx
    629 	movl	40(%esp),%ecx
    630 	xchgl	%esp,%ebx
    631 	movdqu	(%ebp),%xmm1
    632 	subl	%esi,%edi
    633 	movl	%ebx,48(%esp)
    634 	movl	%edi,(%esp)
    635 	movl	%edx,4(%esp)
    636 	movl	%ebp,8(%esp)
    637 	movl	%eax,%edi
    638 	leal	L_vpaes_consts+0x30-L023pic_point,%ebp
    639 	call	__vpaes_preheat
    640 L023pic_point:
    641 	cmpl	$0,%ecx
    642 	je	L024cbc_dec_loop
    643 	jmp	L025cbc_enc_loop
    644 .align	4,0x90
    645 L025cbc_enc_loop:
    646 	movdqu	(%esi),%xmm0
    647 	pxor	%xmm1,%xmm0
    648 	call	__vpaes_encrypt_core
    649 	movl	(%esp),%ebx
    650 	movl	4(%esp),%edx
    651 	movdqa	%xmm0,%xmm1
    652 	movdqu	%xmm0,(%ebx,%esi,1)
    653 	leal	16(%esi),%esi
    654 	subl	$16,%edi
    655 	jnc	L025cbc_enc_loop
    656 	jmp	L026cbc_done
    657 .align	4,0x90
    658 L024cbc_dec_loop:
    659 	movdqu	(%esi),%xmm0
    660 	movdqa	%xmm1,16(%esp)
    661 	movdqa	%xmm0,32(%esp)
    662 	call	__vpaes_decrypt_core
    663 	movl	(%esp),%ebx
    664 	movl	4(%esp),%edx
    665 	pxor	16(%esp),%xmm0
    666 	movdqa	32(%esp),%xmm1
    667 	movdqu	%xmm0,(%ebx,%esi,1)
    668 	leal	16(%esi),%esi
    669 	subl	$16,%edi
    670 	jnc	L024cbc_dec_loop
    671 L026cbc_done:
    672 	movl	8(%esp),%ebx
    673 	movl	48(%esp),%esp
    674 	movdqu	%xmm1,(%ebx)
    675 L022cbc_abort:
    676 	popl	%edi
    677 	popl	%esi
    678 	popl	%ebx
    679 	popl	%ebp
    680 	ret
    681 #endif
    682