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