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