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