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