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#ifdef BORINGSSL_DISPATCH_TEST
10#endif
11.align	64
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	64
68.hidden	_vpaes_preheat
69.type	_vpaes_preheat,@function
70.align	16
71_vpaes_preheat:
72	addl	(%esp),%ebp
73	movdqa	-48(%ebp),%xmm7
74	movdqa	-16(%ebp),%xmm6
75	ret
76.size	_vpaes_preheat,.-_vpaes_preheat
77.hidden	_vpaes_encrypt_core
78.type	_vpaes_encrypt_core,@function
79.align	16
80_vpaes_encrypt_core:
81	movl	$16,%ecx
82	movl	240(%edx),%eax
83	movdqa	%xmm6,%xmm1
84	movdqa	(%ebp),%xmm2
85	pandn	%xmm0,%xmm1
86	pand	%xmm6,%xmm0
87	movdqu	(%edx),%xmm5
88.byte	102,15,56,0,208
89	movdqa	16(%ebp),%xmm0
90	pxor	%xmm5,%xmm2
91	psrld	$4,%xmm1
92	addl	$16,%edx
93.byte	102,15,56,0,193
94	leal	192(%ebp),%ebx
95	pxor	%xmm2,%xmm0
96	jmp	.L000enc_entry
97.align	16
98.L001enc_loop:
99	movdqa	32(%ebp),%xmm4
100	movdqa	48(%ebp),%xmm0
101.byte	102,15,56,0,226
102.byte	102,15,56,0,195
103	pxor	%xmm5,%xmm4
104	movdqa	64(%ebp),%xmm5
105	pxor	%xmm4,%xmm0
106	movdqa	-64(%ebx,%ecx,1),%xmm1
107.byte	102,15,56,0,234
108	movdqa	80(%ebp),%xmm2
109	movdqa	(%ebx,%ecx,1),%xmm4
110.byte	102,15,56,0,211
111	movdqa	%xmm0,%xmm3
112	pxor	%xmm5,%xmm2
113.byte	102,15,56,0,193
114	addl	$16,%edx
115	pxor	%xmm2,%xmm0
116.byte	102,15,56,0,220
117	addl	$16,%ecx
118	pxor	%xmm0,%xmm3
119.byte	102,15,56,0,193
120	andl	$48,%ecx
121	subl	$1,%eax
122	pxor	%xmm3,%xmm0
123.L000enc_entry:
124	movdqa	%xmm6,%xmm1
125	movdqa	-32(%ebp),%xmm5
126	pandn	%xmm0,%xmm1
127	psrld	$4,%xmm1
128	pand	%xmm6,%xmm0
129.byte	102,15,56,0,232
130	movdqa	%xmm7,%xmm3
131	pxor	%xmm1,%xmm0
132.byte	102,15,56,0,217
133	movdqa	%xmm7,%xmm4
134	pxor	%xmm5,%xmm3
135.byte	102,15,56,0,224
136	movdqa	%xmm7,%xmm2
137	pxor	%xmm5,%xmm4
138.byte	102,15,56,0,211
139	movdqa	%xmm7,%xmm3
140	pxor	%xmm0,%xmm2
141.byte	102,15,56,0,220
142	movdqu	(%edx),%xmm5
143	pxor	%xmm1,%xmm3
144	jnz	.L001enc_loop
145	movdqa	96(%ebp),%xmm4
146	movdqa	112(%ebp),%xmm0
147.byte	102,15,56,0,226
148	pxor	%xmm5,%xmm4
149.byte	102,15,56,0,195
150	movdqa	64(%ebx,%ecx,1),%xmm1
151	pxor	%xmm4,%xmm0
152.byte	102,15,56,0,193
153	ret
154.size	_vpaes_encrypt_core,.-_vpaes_encrypt_core
155.hidden	_vpaes_decrypt_core
156.type	_vpaes_decrypt_core,@function
157.align	16
158_vpaes_decrypt_core:
159	leal	608(%ebp),%ebx
160	movl	240(%edx),%eax
161	movdqa	%xmm6,%xmm1
162	movdqa	-64(%ebx),%xmm2
163	pandn	%xmm0,%xmm1
164	movl	%eax,%ecx
165	psrld	$4,%xmm1
166	movdqu	(%edx),%xmm5
167	shll	$4,%ecx
168	pand	%xmm6,%xmm0
169.byte	102,15,56,0,208
170	movdqa	-48(%ebx),%xmm0
171	xorl	$48,%ecx
172.byte	102,15,56,0,193
173	andl	$48,%ecx
174	pxor	%xmm5,%xmm2
175	movdqa	176(%ebp),%xmm5
176	pxor	%xmm2,%xmm0
177	addl	$16,%edx
178	leal	-352(%ebx,%ecx,1),%ecx
179	jmp	.L002dec_entry
180.align	16
181.L003dec_loop:
182	movdqa	-32(%ebx),%xmm4
183	movdqa	-16(%ebx),%xmm1
184.byte	102,15,56,0,226
185.byte	102,15,56,0,203
186	pxor	%xmm4,%xmm0
187	movdqa	(%ebx),%xmm4
188	pxor	%xmm1,%xmm0
189	movdqa	16(%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	32(%ebx),%xmm4
195	pxor	%xmm1,%xmm0
196	movdqa	48(%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	movdqa	64(%ebx),%xmm4
202	pxor	%xmm1,%xmm0
203	movdqa	80(%ebx),%xmm1
204.byte	102,15,56,0,226
205.byte	102,15,56,0,197
206.byte	102,15,56,0,203
207	pxor	%xmm4,%xmm0
208	addl	$16,%edx
209.byte	102,15,58,15,237,12
210	pxor	%xmm1,%xmm0
211	subl	$1,%eax
212.L002dec_entry:
213	movdqa	%xmm6,%xmm1
214	movdqa	-32(%ebp),%xmm2
215	pandn	%xmm0,%xmm1
216	pand	%xmm6,%xmm0
217	psrld	$4,%xmm1
218.byte	102,15,56,0,208
219	movdqa	%xmm7,%xmm3
220	pxor	%xmm1,%xmm0
221.byte	102,15,56,0,217
222	movdqa	%xmm7,%xmm4
223	pxor	%xmm2,%xmm3
224.byte	102,15,56,0,224
225	pxor	%xmm2,%xmm4
226	movdqa	%xmm7,%xmm2
227.byte	102,15,56,0,211
228	movdqa	%xmm7,%xmm3
229	pxor	%xmm0,%xmm2
230.byte	102,15,56,0,220
231	movdqu	(%edx),%xmm0
232	pxor	%xmm1,%xmm3
233	jnz	.L003dec_loop
234	movdqa	96(%ebx),%xmm4
235.byte	102,15,56,0,226
236	pxor	%xmm0,%xmm4
237	movdqa	112(%ebx),%xmm0
238	movdqa	(%ecx),%xmm2
239.byte	102,15,56,0,195
240	pxor	%xmm4,%xmm0
241.byte	102,15,56,0,194
242	ret
243.size	_vpaes_decrypt_core,.-_vpaes_decrypt_core
244.hidden	_vpaes_schedule_core
245.type	_vpaes_schedule_core,@function
246.align	16
247_vpaes_schedule_core:
248	addl	(%esp),%ebp
249	movdqu	(%esi),%xmm0
250	movdqa	320(%ebp),%xmm2
251	movdqa	%xmm0,%xmm3
252	leal	(%ebp),%ebx
253	movdqa	%xmm2,4(%esp)
254	call	_vpaes_schedule_transform
255	movdqa	%xmm0,%xmm7
256	testl	%edi,%edi
257	jnz	.L004schedule_am_decrypting
258	movdqu	%xmm0,(%edx)
259	jmp	.L005schedule_go
260.L004schedule_am_decrypting:
261	movdqa	256(%ebp,%ecx,1),%xmm1
262.byte	102,15,56,0,217
263	movdqu	%xmm3,(%edx)
264	xorl	$48,%ecx
265.L005schedule_go:
266	cmpl	$192,%eax
267	ja	.L006schedule_256
268	je	.L007schedule_192
269.L008schedule_128:
270	movl	$10,%eax
271.L009loop_schedule_128:
272	call	_vpaes_schedule_round
273	decl	%eax
274	jz	.L010schedule_mangle_last
275	call	_vpaes_schedule_mangle
276	jmp	.L009loop_schedule_128
277.align	16
278.L007schedule_192:
279	movdqu	8(%esi),%xmm0
280	call	_vpaes_schedule_transform
281	movdqa	%xmm0,%xmm6
282	pxor	%xmm4,%xmm4
283	movhlps	%xmm4,%xmm6
284	movl	$4,%eax
285.L011loop_schedule_192:
286	call	_vpaes_schedule_round
287.byte	102,15,58,15,198,8
288	call	_vpaes_schedule_mangle
289	call	_vpaes_schedule_192_smear
290	call	_vpaes_schedule_mangle
291	call	_vpaes_schedule_round
292	decl	%eax
293	jz	.L010schedule_mangle_last
294	call	_vpaes_schedule_mangle
295	call	_vpaes_schedule_192_smear
296	jmp	.L011loop_schedule_192
297.align	16
298.L006schedule_256:
299	movdqu	16(%esi),%xmm0
300	call	_vpaes_schedule_transform
301	movl	$7,%eax
302.L012loop_schedule_256:
303	call	_vpaes_schedule_mangle
304	movdqa	%xmm0,%xmm6
305	call	_vpaes_schedule_round
306	decl	%eax
307	jz	.L010schedule_mangle_last
308	call	_vpaes_schedule_mangle
309	pshufd	$255,%xmm0,%xmm0
310	movdqa	%xmm7,20(%esp)
311	movdqa	%xmm6,%xmm7
312	call	.L_vpaes_schedule_low_round
313	movdqa	20(%esp),%xmm7
314	jmp	.L012loop_schedule_256
315.align	16
316.L010schedule_mangle_last:
317	leal	384(%ebp),%ebx
318	testl	%edi,%edi
319	jnz	.L013schedule_mangle_last_dec
320	movdqa	256(%ebp,%ecx,1),%xmm1
321.byte	102,15,56,0,193
322	leal	352(%ebp),%ebx
323	addl	$32,%edx
324.L013schedule_mangle_last_dec:
325	addl	$-16,%edx
326	pxor	336(%ebp),%xmm0
327	call	_vpaes_schedule_transform
328	movdqu	%xmm0,(%edx)
329	pxor	%xmm0,%xmm0
330	pxor	%xmm1,%xmm1
331	pxor	%xmm2,%xmm2
332	pxor	%xmm3,%xmm3
333	pxor	%xmm4,%xmm4
334	pxor	%xmm5,%xmm5
335	pxor	%xmm6,%xmm6
336	pxor	%xmm7,%xmm7
337	ret
338.size	_vpaes_schedule_core,.-_vpaes_schedule_core
339.hidden	_vpaes_schedule_192_smear
340.type	_vpaes_schedule_192_smear,@function
341.align	16
342_vpaes_schedule_192_smear:
343	pshufd	$128,%xmm6,%xmm1
344	pshufd	$254,%xmm7,%xmm0
345	pxor	%xmm1,%xmm6
346	pxor	%xmm1,%xmm1
347	pxor	%xmm0,%xmm6
348	movdqa	%xmm6,%xmm0
349	movhlps	%xmm1,%xmm6
350	ret
351.size	_vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear
352.hidden	_vpaes_schedule_round
353.type	_vpaes_schedule_round,@function
354.align	16
355_vpaes_schedule_round:
356	movdqa	8(%esp),%xmm2
357	pxor	%xmm1,%xmm1
358.byte	102,15,58,15,202,15
359.byte	102,15,58,15,210,15
360	pxor	%xmm1,%xmm7
361	pshufd	$255,%xmm0,%xmm0
362.byte	102,15,58,15,192,1
363	movdqa	%xmm2,8(%esp)
364.L_vpaes_schedule_low_round:
365	movdqa	%xmm7,%xmm1
366	pslldq	$4,%xmm7
367	pxor	%xmm1,%xmm7
368	movdqa	%xmm7,%xmm1
369	pslldq	$8,%xmm7
370	pxor	%xmm1,%xmm7
371	pxor	336(%ebp),%xmm7
372	movdqa	-16(%ebp),%xmm4
373	movdqa	-48(%ebp),%xmm5
374	movdqa	%xmm4,%xmm1
375	pandn	%xmm0,%xmm1
376	psrld	$4,%xmm1
377	pand	%xmm4,%xmm0
378	movdqa	-32(%ebp),%xmm2
379.byte	102,15,56,0,208
380	pxor	%xmm1,%xmm0
381	movdqa	%xmm5,%xmm3
382.byte	102,15,56,0,217
383	pxor	%xmm2,%xmm3
384	movdqa	%xmm5,%xmm4
385.byte	102,15,56,0,224
386	pxor	%xmm2,%xmm4
387	movdqa	%xmm5,%xmm2
388.byte	102,15,56,0,211
389	pxor	%xmm0,%xmm2
390	movdqa	%xmm5,%xmm3
391.byte	102,15,56,0,220
392	pxor	%xmm1,%xmm3
393	movdqa	32(%ebp),%xmm4
394.byte	102,15,56,0,226
395	movdqa	48(%ebp),%xmm0
396.byte	102,15,56,0,195
397	pxor	%xmm4,%xmm0
398	pxor	%xmm7,%xmm0
399	movdqa	%xmm0,%xmm7
400	ret
401.size	_vpaes_schedule_round,.-_vpaes_schedule_round
402.hidden	_vpaes_schedule_transform
403.type	_vpaes_schedule_transform,@function
404.align	16
405_vpaes_schedule_transform:
406	movdqa	-16(%ebp),%xmm2
407	movdqa	%xmm2,%xmm1
408	pandn	%xmm0,%xmm1
409	psrld	$4,%xmm1
410	pand	%xmm2,%xmm0
411	movdqa	(%ebx),%xmm2
412.byte	102,15,56,0,208
413	movdqa	16(%ebx),%xmm0
414.byte	102,15,56,0,193
415	pxor	%xmm2,%xmm0
416	ret
417.size	_vpaes_schedule_transform,.-_vpaes_schedule_transform
418.hidden	_vpaes_schedule_mangle
419.type	_vpaes_schedule_mangle,@function
420.align	16
421_vpaes_schedule_mangle:
422	movdqa	%xmm0,%xmm4
423	movdqa	128(%ebp),%xmm5
424	testl	%edi,%edi
425	jnz	.L014schedule_mangle_dec
426	addl	$16,%edx
427	pxor	336(%ebp),%xmm4
428.byte	102,15,56,0,229
429	movdqa	%xmm4,%xmm3
430.byte	102,15,56,0,229
431	pxor	%xmm4,%xmm3
432.byte	102,15,56,0,229
433	pxor	%xmm4,%xmm3
434	jmp	.L015schedule_mangle_both
435.align	16
436.L014schedule_mangle_dec:
437	movdqa	-16(%ebp),%xmm2
438	leal	416(%ebp),%esi
439	movdqa	%xmm2,%xmm1
440	pandn	%xmm4,%xmm1
441	psrld	$4,%xmm1
442	pand	%xmm2,%xmm4
443	movdqa	(%esi),%xmm2
444.byte	102,15,56,0,212
445	movdqa	16(%esi),%xmm3
446.byte	102,15,56,0,217
447	pxor	%xmm2,%xmm3
448.byte	102,15,56,0,221
449	movdqa	32(%esi),%xmm2
450.byte	102,15,56,0,212
451	pxor	%xmm3,%xmm2
452	movdqa	48(%esi),%xmm3
453.byte	102,15,56,0,217
454	pxor	%xmm2,%xmm3
455.byte	102,15,56,0,221
456	movdqa	64(%esi),%xmm2
457.byte	102,15,56,0,212
458	pxor	%xmm3,%xmm2
459	movdqa	80(%esi),%xmm3
460.byte	102,15,56,0,217
461	pxor	%xmm2,%xmm3
462.byte	102,15,56,0,221
463	movdqa	96(%esi),%xmm2
464.byte	102,15,56,0,212
465	pxor	%xmm3,%xmm2
466	movdqa	112(%esi),%xmm3
467.byte	102,15,56,0,217
468	pxor	%xmm2,%xmm3
469	addl	$-16,%edx
470.L015schedule_mangle_both:
471	movdqa	256(%ebp,%ecx,1),%xmm1
472.byte	102,15,56,0,217
473	addl	$-16,%ecx
474	andl	$48,%ecx
475	movdqu	%xmm3,(%edx)
476	ret
477.size	_vpaes_schedule_mangle,.-_vpaes_schedule_mangle
478.globl	vpaes_set_encrypt_key
479.hidden	vpaes_set_encrypt_key
480.type	vpaes_set_encrypt_key,@function
481.align	16
482vpaes_set_encrypt_key:
483.L_vpaes_set_encrypt_key_begin:
484	pushl	%ebp
485	pushl	%ebx
486	pushl	%esi
487	pushl	%edi
488#ifdef BORINGSSL_DISPATCH_TEST
489	pushl	%ebx
490	pushl	%edx
491	call	.L016pic
492.L016pic:
493	popl	%ebx
494	leal	BORINGSSL_function_hit+5-.L016pic(%ebx),%ebx
495	movl	$1,%edx
496	movb	%dl,(%ebx)
497	popl	%edx
498	popl	%ebx
499#endif
500	movl	20(%esp),%esi
501	leal	-56(%esp),%ebx
502	movl	24(%esp),%eax
503	andl	$-16,%ebx
504	movl	28(%esp),%edx
505	xchgl	%esp,%ebx
506	movl	%ebx,48(%esp)
507	movl	%eax,%ebx
508	shrl	$5,%ebx
509	addl	$5,%ebx
510	movl	%ebx,240(%edx)
511	movl	$48,%ecx
512	movl	$0,%edi
513	leal	.L_vpaes_consts+0x30-.L017pic_point,%ebp
514	call	_vpaes_schedule_core
515.L017pic_point:
516	movl	48(%esp),%esp
517	xorl	%eax,%eax
518	popl	%edi
519	popl	%esi
520	popl	%ebx
521	popl	%ebp
522	ret
523.size	vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin
524.globl	vpaes_set_decrypt_key
525.hidden	vpaes_set_decrypt_key
526.type	vpaes_set_decrypt_key,@function
527.align	16
528vpaes_set_decrypt_key:
529.L_vpaes_set_decrypt_key_begin:
530	pushl	%ebp
531	pushl	%ebx
532	pushl	%esi
533	pushl	%edi
534	movl	20(%esp),%esi
535	leal	-56(%esp),%ebx
536	movl	24(%esp),%eax
537	andl	$-16,%ebx
538	movl	28(%esp),%edx
539	xchgl	%esp,%ebx
540	movl	%ebx,48(%esp)
541	movl	%eax,%ebx
542	shrl	$5,%ebx
543	addl	$5,%ebx
544	movl	%ebx,240(%edx)
545	shll	$4,%ebx
546	leal	16(%edx,%ebx,1),%edx
547	movl	$1,%edi
548	movl	%eax,%ecx
549	shrl	$1,%ecx
550	andl	$32,%ecx
551	xorl	$32,%ecx
552	leal	.L_vpaes_consts+0x30-.L018pic_point,%ebp
553	call	_vpaes_schedule_core
554.L018pic_point:
555	movl	48(%esp),%esp
556	xorl	%eax,%eax
557	popl	%edi
558	popl	%esi
559	popl	%ebx
560	popl	%ebp
561	ret
562.size	vpaes_set_decrypt_key,.-.L_vpaes_set_decrypt_key_begin
563.globl	vpaes_encrypt
564.hidden	vpaes_encrypt
565.type	vpaes_encrypt,@function
566.align	16
567vpaes_encrypt:
568.L_vpaes_encrypt_begin:
569	pushl	%ebp
570	pushl	%ebx
571	pushl	%esi
572	pushl	%edi
573#ifdef BORINGSSL_DISPATCH_TEST
574	pushl	%ebx
575	pushl	%edx
576	call	.L019pic
577.L019pic:
578	popl	%ebx
579	leal	BORINGSSL_function_hit+4-.L019pic(%ebx),%ebx
580	movl	$1,%edx
581	movb	%dl,(%ebx)
582	popl	%edx
583	popl	%ebx
584#endif
585	leal	.L_vpaes_consts+0x30-.L020pic_point,%ebp
586	call	_vpaes_preheat
587.L020pic_point:
588	movl	20(%esp),%esi
589	leal	-56(%esp),%ebx
590	movl	24(%esp),%edi
591	andl	$-16,%ebx
592	movl	28(%esp),%edx
593	xchgl	%esp,%ebx
594	movl	%ebx,48(%esp)
595	movdqu	(%esi),%xmm0
596	call	_vpaes_encrypt_core
597	movdqu	%xmm0,(%edi)
598	movl	48(%esp),%esp
599	popl	%edi
600	popl	%esi
601	popl	%ebx
602	popl	%ebp
603	ret
604.size	vpaes_encrypt,.-.L_vpaes_encrypt_begin
605.globl	vpaes_decrypt
606.hidden	vpaes_decrypt
607.type	vpaes_decrypt,@function
608.align	16
609vpaes_decrypt:
610.L_vpaes_decrypt_begin:
611	pushl	%ebp
612	pushl	%ebx
613	pushl	%esi
614	pushl	%edi
615	leal	.L_vpaes_consts+0x30-.L021pic_point,%ebp
616	call	_vpaes_preheat
617.L021pic_point:
618	movl	20(%esp),%esi
619	leal	-56(%esp),%ebx
620	movl	24(%esp),%edi
621	andl	$-16,%ebx
622	movl	28(%esp),%edx
623	xchgl	%esp,%ebx
624	movl	%ebx,48(%esp)
625	movdqu	(%esi),%xmm0
626	call	_vpaes_decrypt_core
627	movdqu	%xmm0,(%edi)
628	movl	48(%esp),%esp
629	popl	%edi
630	popl	%esi
631	popl	%ebx
632	popl	%ebp
633	ret
634.size	vpaes_decrypt,.-.L_vpaes_decrypt_begin
635.globl	vpaes_cbc_encrypt
636.hidden	vpaes_cbc_encrypt
637.type	vpaes_cbc_encrypt,@function
638.align	16
639vpaes_cbc_encrypt:
640.L_vpaes_cbc_encrypt_begin:
641	pushl	%ebp
642	pushl	%ebx
643	pushl	%esi
644	pushl	%edi
645	movl	20(%esp),%esi
646	movl	24(%esp),%edi
647	movl	28(%esp),%eax
648	movl	32(%esp),%edx
649	subl	$16,%eax
650	jc	.L022cbc_abort
651	leal	-56(%esp),%ebx
652	movl	36(%esp),%ebp
653	andl	$-16,%ebx
654	movl	40(%esp),%ecx
655	xchgl	%esp,%ebx
656	movdqu	(%ebp),%xmm1
657	subl	%esi,%edi
658	movl	%ebx,48(%esp)
659	movl	%edi,(%esp)
660	movl	%edx,4(%esp)
661	movl	%ebp,8(%esp)
662	movl	%eax,%edi
663	leal	.L_vpaes_consts+0x30-.L023pic_point,%ebp
664	call	_vpaes_preheat
665.L023pic_point:
666	cmpl	$0,%ecx
667	je	.L024cbc_dec_loop
668	jmp	.L025cbc_enc_loop
669.align	16
670.L025cbc_enc_loop:
671	movdqu	(%esi),%xmm0
672	pxor	%xmm1,%xmm0
673	call	_vpaes_encrypt_core
674	movl	(%esp),%ebx
675	movl	4(%esp),%edx
676	movdqa	%xmm0,%xmm1
677	movdqu	%xmm0,(%ebx,%esi,1)
678	leal	16(%esi),%esi
679	subl	$16,%edi
680	jnc	.L025cbc_enc_loop
681	jmp	.L026cbc_done
682.align	16
683.L024cbc_dec_loop:
684	movdqu	(%esi),%xmm0
685	movdqa	%xmm1,16(%esp)
686	movdqa	%xmm0,32(%esp)
687	call	_vpaes_decrypt_core
688	movl	(%esp),%ebx
689	movl	4(%esp),%edx
690	pxor	16(%esp),%xmm0
691	movdqa	32(%esp),%xmm1
692	movdqu	%xmm0,(%ebx,%esi,1)
693	leal	16(%esi),%esi
694	subl	$16,%edi
695	jnc	.L024cbc_dec_loop
696.L026cbc_done:
697	movl	8(%esp),%ebx
698	movl	48(%esp),%esp
699	movdqu	%xmm1,(%ebx)
700.L022cbc_abort:
701	popl	%edi
702	popl	%esi
703	popl	%ebx
704	popl	%ebp
705	ret
706.size	vpaes_cbc_encrypt,.-.L_vpaes_cbc_encrypt_begin
707#endif
708.section	.note.GNU-stack,"",@progbits
709