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