• 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(__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
12L_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
95L001enc_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
120L000enc_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
176L003dec_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
207L002dec_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
253L004schedule_am_decrypting:
254	movdqa	256(%ebp,%ecx,1),%xmm1
255.byte	102,15,56,0,217
256	movdqu	%xmm3,(%edx)
257	xorl	$48,%ecx
258L005schedule_go:
259	cmpl	$192,%eax
260	ja	L006schedule_256
261	je	L007schedule_192
262L008schedule_128:
263	movl	$10,%eax
264L009loop_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
271L007schedule_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
278L011loop_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
291L006schedule_256:
292	movdqu	16(%esi),%xmm0
293	call	__vpaes_schedule_transform
294	movl	$7,%eax
295L012loop_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
309L010schedule_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
317L013schedule_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)
353L_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
421L014schedule_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
455L015schedule_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:
466L_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
475L016pic:
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
498L017pic_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:
510L_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
535L018pic_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:
547L_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
556L019pic:
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
566L020pic_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:
587L_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
594L021pic_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:
615L_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
640L023pic_point:
641	cmpl	$0,%ecx
642	je	L024cbc_dec_loop
643	jmp	L025cbc_enc_loop
644.align	4,0x90
645L025cbc_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
658L024cbc_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
671L026cbc_done:
672	movl	8(%esp),%ebx
673	movl	48(%esp),%esp
674	movdqu	%xmm1,(%ebx)
675L022cbc_abort:
676	popl	%edi
677	popl	%esi
678	popl	%ebx
679	popl	%ebp
680	ret
681#endif
682