xref: /aosp_15_r20/external/boringssl/src/gen/bcm/aesni-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.globl	_aes_hw_encrypt
11*8fb009dcSAndroid Build Coastguard Worker.private_extern	_aes_hw_encrypt
12*8fb009dcSAndroid Build Coastguard Worker.align	4
13*8fb009dcSAndroid Build Coastguard Worker_aes_hw_encrypt:
14*8fb009dcSAndroid Build Coastguard WorkerL_aes_hw_encrypt_begin:
15*8fb009dcSAndroid Build Coastguard Worker#ifdef BORINGSSL_DISPATCH_TEST
16*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
17*8fb009dcSAndroid Build Coastguard Worker	pushl	%edx
18*8fb009dcSAndroid Build Coastguard Worker	call	L000pic_for_function_hit
19*8fb009dcSAndroid Build Coastguard WorkerL000pic_for_function_hit:
20*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
21*8fb009dcSAndroid Build Coastguard Worker	leal	_BORINGSSL_function_hit+1-L000pic_for_function_hit(%ebx),%ebx
22*8fb009dcSAndroid Build Coastguard Worker	movl	$1,%edx
23*8fb009dcSAndroid Build Coastguard Worker	movb	%dl,(%ebx)
24*8fb009dcSAndroid Build Coastguard Worker	popl	%edx
25*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
26*8fb009dcSAndroid Build Coastguard Worker#endif
27*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esp),%eax
28*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esp),%edx
29*8fb009dcSAndroid Build Coastguard Worker	movups	(%eax),%xmm2
30*8fb009dcSAndroid Build Coastguard Worker	movl	240(%edx),%ecx
31*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esp),%eax
32*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
33*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
34*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx),%edx
35*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
36*8fb009dcSAndroid Build Coastguard WorkerL001enc1_loop_1:
37*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
38*8fb009dcSAndroid Build Coastguard Worker	decl	%ecx
39*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm1
40*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
41*8fb009dcSAndroid Build Coastguard Worker	jnz	L001enc1_loop_1
42*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,209
43*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
44*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm1
45*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%eax)
46*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm2
47*8fb009dcSAndroid Build Coastguard Worker	ret
48*8fb009dcSAndroid Build Coastguard Worker.globl	_aes_hw_decrypt
49*8fb009dcSAndroid Build Coastguard Worker.private_extern	_aes_hw_decrypt
50*8fb009dcSAndroid Build Coastguard Worker.align	4
51*8fb009dcSAndroid Build Coastguard Worker_aes_hw_decrypt:
52*8fb009dcSAndroid Build Coastguard WorkerL_aes_hw_decrypt_begin:
53*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esp),%eax
54*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esp),%edx
55*8fb009dcSAndroid Build Coastguard Worker	movups	(%eax),%xmm2
56*8fb009dcSAndroid Build Coastguard Worker	movl	240(%edx),%ecx
57*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esp),%eax
58*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
59*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
60*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx),%edx
61*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
62*8fb009dcSAndroid Build Coastguard WorkerL002dec1_loop_2:
63*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,209
64*8fb009dcSAndroid Build Coastguard Worker	decl	%ecx
65*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm1
66*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
67*8fb009dcSAndroid Build Coastguard Worker	jnz	L002dec1_loop_2
68*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,209
69*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
70*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm1
71*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%eax)
72*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm2
73*8fb009dcSAndroid Build Coastguard Worker	ret
74*8fb009dcSAndroid Build Coastguard Worker.private_extern	__aesni_encrypt2
75*8fb009dcSAndroid Build Coastguard Worker.align	4
76*8fb009dcSAndroid Build Coastguard Worker__aesni_encrypt2:
77*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
78*8fb009dcSAndroid Build Coastguard Worker	shll	$4,%ecx
79*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
80*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
81*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
82*8fb009dcSAndroid Build Coastguard Worker	movups	32(%edx),%xmm0
83*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx,%ecx,1),%edx
84*8fb009dcSAndroid Build Coastguard Worker	negl	%ecx
85*8fb009dcSAndroid Build Coastguard Worker	addl	$16,%ecx
86*8fb009dcSAndroid Build Coastguard WorkerL003enc2_loop:
87*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
88*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,217
89*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx,%ecx,1),%xmm1
90*8fb009dcSAndroid Build Coastguard Worker	addl	$32,%ecx
91*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,208
92*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,216
93*8fb009dcSAndroid Build Coastguard Worker	movups	-16(%edx,%ecx,1),%xmm0
94*8fb009dcSAndroid Build Coastguard Worker	jnz	L003enc2_loop
95*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
96*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,217
97*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,208
98*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,216
99*8fb009dcSAndroid Build Coastguard Worker	ret
100*8fb009dcSAndroid Build Coastguard Worker.private_extern	__aesni_decrypt2
101*8fb009dcSAndroid Build Coastguard Worker.align	4
102*8fb009dcSAndroid Build Coastguard Worker__aesni_decrypt2:
103*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
104*8fb009dcSAndroid Build Coastguard Worker	shll	$4,%ecx
105*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
106*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
107*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
108*8fb009dcSAndroid Build Coastguard Worker	movups	32(%edx),%xmm0
109*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx,%ecx,1),%edx
110*8fb009dcSAndroid Build Coastguard Worker	negl	%ecx
111*8fb009dcSAndroid Build Coastguard Worker	addl	$16,%ecx
112*8fb009dcSAndroid Build Coastguard WorkerL004dec2_loop:
113*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,209
114*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,217
115*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx,%ecx,1),%xmm1
116*8fb009dcSAndroid Build Coastguard Worker	addl	$32,%ecx
117*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,208
118*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,216
119*8fb009dcSAndroid Build Coastguard Worker	movups	-16(%edx,%ecx,1),%xmm0
120*8fb009dcSAndroid Build Coastguard Worker	jnz	L004dec2_loop
121*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,209
122*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,217
123*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,208
124*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,216
125*8fb009dcSAndroid Build Coastguard Worker	ret
126*8fb009dcSAndroid Build Coastguard Worker.private_extern	__aesni_encrypt3
127*8fb009dcSAndroid Build Coastguard Worker.align	4
128*8fb009dcSAndroid Build Coastguard Worker__aesni_encrypt3:
129*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
130*8fb009dcSAndroid Build Coastguard Worker	shll	$4,%ecx
131*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
132*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
133*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
134*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
135*8fb009dcSAndroid Build Coastguard Worker	movups	32(%edx),%xmm0
136*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx,%ecx,1),%edx
137*8fb009dcSAndroid Build Coastguard Worker	negl	%ecx
138*8fb009dcSAndroid Build Coastguard Worker	addl	$16,%ecx
139*8fb009dcSAndroid Build Coastguard WorkerL005enc3_loop:
140*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
141*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,217
142*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,225
143*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx,%ecx,1),%xmm1
144*8fb009dcSAndroid Build Coastguard Worker	addl	$32,%ecx
145*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,208
146*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,216
147*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,224
148*8fb009dcSAndroid Build Coastguard Worker	movups	-16(%edx,%ecx,1),%xmm0
149*8fb009dcSAndroid Build Coastguard Worker	jnz	L005enc3_loop
150*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
151*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,217
152*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,225
153*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,208
154*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,216
155*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,224
156*8fb009dcSAndroid Build Coastguard Worker	ret
157*8fb009dcSAndroid Build Coastguard Worker.private_extern	__aesni_decrypt3
158*8fb009dcSAndroid Build Coastguard Worker.align	4
159*8fb009dcSAndroid Build Coastguard Worker__aesni_decrypt3:
160*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
161*8fb009dcSAndroid Build Coastguard Worker	shll	$4,%ecx
162*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
163*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
164*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
165*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
166*8fb009dcSAndroid Build Coastguard Worker	movups	32(%edx),%xmm0
167*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx,%ecx,1),%edx
168*8fb009dcSAndroid Build Coastguard Worker	negl	%ecx
169*8fb009dcSAndroid Build Coastguard Worker	addl	$16,%ecx
170*8fb009dcSAndroid Build Coastguard WorkerL006dec3_loop:
171*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,209
172*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,217
173*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,225
174*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx,%ecx,1),%xmm1
175*8fb009dcSAndroid Build Coastguard Worker	addl	$32,%ecx
176*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,208
177*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,216
178*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,224
179*8fb009dcSAndroid Build Coastguard Worker	movups	-16(%edx,%ecx,1),%xmm0
180*8fb009dcSAndroid Build Coastguard Worker	jnz	L006dec3_loop
181*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,209
182*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,217
183*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,225
184*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,208
185*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,216
186*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,224
187*8fb009dcSAndroid Build Coastguard Worker	ret
188*8fb009dcSAndroid Build Coastguard Worker.private_extern	__aesni_encrypt4
189*8fb009dcSAndroid Build Coastguard Worker.align	4
190*8fb009dcSAndroid Build Coastguard Worker__aesni_encrypt4:
191*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
192*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
193*8fb009dcSAndroid Build Coastguard Worker	shll	$4,%ecx
194*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
195*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
196*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
197*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm5
198*8fb009dcSAndroid Build Coastguard Worker	movups	32(%edx),%xmm0
199*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx,%ecx,1),%edx
200*8fb009dcSAndroid Build Coastguard Worker	negl	%ecx
201*8fb009dcSAndroid Build Coastguard Worker.byte	15,31,64,0
202*8fb009dcSAndroid Build Coastguard Worker	addl	$16,%ecx
203*8fb009dcSAndroid Build Coastguard WorkerL007enc4_loop:
204*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
205*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,217
206*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,225
207*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,233
208*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx,%ecx,1),%xmm1
209*8fb009dcSAndroid Build Coastguard Worker	addl	$32,%ecx
210*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,208
211*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,216
212*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,224
213*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,232
214*8fb009dcSAndroid Build Coastguard Worker	movups	-16(%edx,%ecx,1),%xmm0
215*8fb009dcSAndroid Build Coastguard Worker	jnz	L007enc4_loop
216*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
217*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,217
218*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,225
219*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,233
220*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,208
221*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,216
222*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,224
223*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,232
224*8fb009dcSAndroid Build Coastguard Worker	ret
225*8fb009dcSAndroid Build Coastguard Worker.private_extern	__aesni_decrypt4
226*8fb009dcSAndroid Build Coastguard Worker.align	4
227*8fb009dcSAndroid Build Coastguard Worker__aesni_decrypt4:
228*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
229*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
230*8fb009dcSAndroid Build Coastguard Worker	shll	$4,%ecx
231*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
232*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
233*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
234*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm5
235*8fb009dcSAndroid Build Coastguard Worker	movups	32(%edx),%xmm0
236*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx,%ecx,1),%edx
237*8fb009dcSAndroid Build Coastguard Worker	negl	%ecx
238*8fb009dcSAndroid Build Coastguard Worker.byte	15,31,64,0
239*8fb009dcSAndroid Build Coastguard Worker	addl	$16,%ecx
240*8fb009dcSAndroid Build Coastguard WorkerL008dec4_loop:
241*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,209
242*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,217
243*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,225
244*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,233
245*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx,%ecx,1),%xmm1
246*8fb009dcSAndroid Build Coastguard Worker	addl	$32,%ecx
247*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,208
248*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,216
249*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,224
250*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,232
251*8fb009dcSAndroid Build Coastguard Worker	movups	-16(%edx,%ecx,1),%xmm0
252*8fb009dcSAndroid Build Coastguard Worker	jnz	L008dec4_loop
253*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,209
254*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,217
255*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,225
256*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,233
257*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,208
258*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,216
259*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,224
260*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,232
261*8fb009dcSAndroid Build Coastguard Worker	ret
262*8fb009dcSAndroid Build Coastguard Worker.private_extern	__aesni_encrypt6
263*8fb009dcSAndroid Build Coastguard Worker.align	4
264*8fb009dcSAndroid Build Coastguard Worker__aesni_encrypt6:
265*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
266*8fb009dcSAndroid Build Coastguard Worker	shll	$4,%ecx
267*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
268*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
269*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
270*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
271*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
272*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm5
273*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm6
274*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,217
275*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx,%ecx,1),%edx
276*8fb009dcSAndroid Build Coastguard Worker	negl	%ecx
277*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,225
278*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm7
279*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx,%ecx,1),%xmm0
280*8fb009dcSAndroid Build Coastguard Worker	addl	$16,%ecx
281*8fb009dcSAndroid Build Coastguard Worker	jmp	L009_aesni_encrypt6_inner
282*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
283*8fb009dcSAndroid Build Coastguard WorkerL010enc6_loop:
284*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
285*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,217
286*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,225
287*8fb009dcSAndroid Build Coastguard WorkerL009_aesni_encrypt6_inner:
288*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,233
289*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,241
290*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,249
291*8fb009dcSAndroid Build Coastguard WorkerL_aesni_encrypt6_enter:
292*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx,%ecx,1),%xmm1
293*8fb009dcSAndroid Build Coastguard Worker	addl	$32,%ecx
294*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,208
295*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,216
296*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,224
297*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,232
298*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,240
299*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,248
300*8fb009dcSAndroid Build Coastguard Worker	movups	-16(%edx,%ecx,1),%xmm0
301*8fb009dcSAndroid Build Coastguard Worker	jnz	L010enc6_loop
302*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
303*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,217
304*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,225
305*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,233
306*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,241
307*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,249
308*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,208
309*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,216
310*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,224
311*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,232
312*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,240
313*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,248
314*8fb009dcSAndroid Build Coastguard Worker	ret
315*8fb009dcSAndroid Build Coastguard Worker.private_extern	__aesni_decrypt6
316*8fb009dcSAndroid Build Coastguard Worker.align	4
317*8fb009dcSAndroid Build Coastguard Worker__aesni_decrypt6:
318*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
319*8fb009dcSAndroid Build Coastguard Worker	shll	$4,%ecx
320*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
321*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
322*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
323*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
324*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,209
325*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm5
326*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm6
327*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,217
328*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx,%ecx,1),%edx
329*8fb009dcSAndroid Build Coastguard Worker	negl	%ecx
330*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,225
331*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm7
332*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx,%ecx,1),%xmm0
333*8fb009dcSAndroid Build Coastguard Worker	addl	$16,%ecx
334*8fb009dcSAndroid Build Coastguard Worker	jmp	L011_aesni_decrypt6_inner
335*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
336*8fb009dcSAndroid Build Coastguard WorkerL012dec6_loop:
337*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,209
338*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,217
339*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,225
340*8fb009dcSAndroid Build Coastguard WorkerL011_aesni_decrypt6_inner:
341*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,233
342*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,241
343*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,249
344*8fb009dcSAndroid Build Coastguard WorkerL_aesni_decrypt6_enter:
345*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx,%ecx,1),%xmm1
346*8fb009dcSAndroid Build Coastguard Worker	addl	$32,%ecx
347*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,208
348*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,216
349*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,224
350*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,232
351*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,240
352*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,248
353*8fb009dcSAndroid Build Coastguard Worker	movups	-16(%edx,%ecx,1),%xmm0
354*8fb009dcSAndroid Build Coastguard Worker	jnz	L012dec6_loop
355*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,209
356*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,217
357*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,225
358*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,233
359*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,241
360*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,249
361*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,208
362*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,216
363*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,224
364*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,232
365*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,240
366*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,248
367*8fb009dcSAndroid Build Coastguard Worker	ret
368*8fb009dcSAndroid Build Coastguard Worker.globl	_aes_hw_ecb_encrypt
369*8fb009dcSAndroid Build Coastguard Worker.private_extern	_aes_hw_ecb_encrypt
370*8fb009dcSAndroid Build Coastguard Worker.align	4
371*8fb009dcSAndroid Build Coastguard Worker_aes_hw_ecb_encrypt:
372*8fb009dcSAndroid Build Coastguard WorkerL_aes_hw_ecb_encrypt_begin:
373*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebp
374*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
375*8fb009dcSAndroid Build Coastguard Worker	pushl	%esi
376*8fb009dcSAndroid Build Coastguard Worker	pushl	%edi
377*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%esi
378*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esp),%edi
379*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esp),%eax
380*8fb009dcSAndroid Build Coastguard Worker	movl	32(%esp),%edx
381*8fb009dcSAndroid Build Coastguard Worker	movl	36(%esp),%ebx
382*8fb009dcSAndroid Build Coastguard Worker	andl	$-16,%eax
383*8fb009dcSAndroid Build Coastguard Worker	jz	L013ecb_ret
384*8fb009dcSAndroid Build Coastguard Worker	movl	240(%edx),%ecx
385*8fb009dcSAndroid Build Coastguard Worker	testl	%ebx,%ebx
386*8fb009dcSAndroid Build Coastguard Worker	jz	L014ecb_decrypt
387*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,%ebp
388*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,%ebx
389*8fb009dcSAndroid Build Coastguard Worker	cmpl	$96,%eax
390*8fb009dcSAndroid Build Coastguard Worker	jb	L015ecb_enc_tail
391*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%esi),%xmm2
392*8fb009dcSAndroid Build Coastguard Worker	movdqu	16(%esi),%xmm3
393*8fb009dcSAndroid Build Coastguard Worker	movdqu	32(%esi),%xmm4
394*8fb009dcSAndroid Build Coastguard Worker	movdqu	48(%esi),%xmm5
395*8fb009dcSAndroid Build Coastguard Worker	movdqu	64(%esi),%xmm6
396*8fb009dcSAndroid Build Coastguard Worker	movdqu	80(%esi),%xmm7
397*8fb009dcSAndroid Build Coastguard Worker	leal	96(%esi),%esi
398*8fb009dcSAndroid Build Coastguard Worker	subl	$96,%eax
399*8fb009dcSAndroid Build Coastguard Worker	jmp	L016ecb_enc_loop6_enter
400*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
401*8fb009dcSAndroid Build Coastguard WorkerL017ecb_enc_loop6:
402*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
403*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%esi),%xmm2
404*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
405*8fb009dcSAndroid Build Coastguard Worker	movdqu	16(%esi),%xmm3
406*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
407*8fb009dcSAndroid Build Coastguard Worker	movdqu	32(%esi),%xmm4
408*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm5,48(%edi)
409*8fb009dcSAndroid Build Coastguard Worker	movdqu	48(%esi),%xmm5
410*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm6,64(%edi)
411*8fb009dcSAndroid Build Coastguard Worker	movdqu	64(%esi),%xmm6
412*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm7,80(%edi)
413*8fb009dcSAndroid Build Coastguard Worker	leal	96(%edi),%edi
414*8fb009dcSAndroid Build Coastguard Worker	movdqu	80(%esi),%xmm7
415*8fb009dcSAndroid Build Coastguard Worker	leal	96(%esi),%esi
416*8fb009dcSAndroid Build Coastguard WorkerL016ecb_enc_loop6_enter:
417*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_encrypt6
418*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,%edx
419*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,%ecx
420*8fb009dcSAndroid Build Coastguard Worker	subl	$96,%eax
421*8fb009dcSAndroid Build Coastguard Worker	jnc	L017ecb_enc_loop6
422*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
423*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
424*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
425*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm5,48(%edi)
426*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm6,64(%edi)
427*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm7,80(%edi)
428*8fb009dcSAndroid Build Coastguard Worker	leal	96(%edi),%edi
429*8fb009dcSAndroid Build Coastguard Worker	addl	$96,%eax
430*8fb009dcSAndroid Build Coastguard Worker	jz	L013ecb_ret
431*8fb009dcSAndroid Build Coastguard WorkerL015ecb_enc_tail:
432*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm2
433*8fb009dcSAndroid Build Coastguard Worker	cmpl	$32,%eax
434*8fb009dcSAndroid Build Coastguard Worker	jb	L018ecb_enc_one
435*8fb009dcSAndroid Build Coastguard Worker	movups	16(%esi),%xmm3
436*8fb009dcSAndroid Build Coastguard Worker	je	L019ecb_enc_two
437*8fb009dcSAndroid Build Coastguard Worker	movups	32(%esi),%xmm4
438*8fb009dcSAndroid Build Coastguard Worker	cmpl	$64,%eax
439*8fb009dcSAndroid Build Coastguard Worker	jb	L020ecb_enc_three
440*8fb009dcSAndroid Build Coastguard Worker	movups	48(%esi),%xmm5
441*8fb009dcSAndroid Build Coastguard Worker	je	L021ecb_enc_four
442*8fb009dcSAndroid Build Coastguard Worker	movups	64(%esi),%xmm6
443*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm7,%xmm7
444*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_encrypt6
445*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
446*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
447*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
448*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm5,48(%edi)
449*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm6,64(%edi)
450*8fb009dcSAndroid Build Coastguard Worker	jmp	L013ecb_ret
451*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
452*8fb009dcSAndroid Build Coastguard WorkerL018ecb_enc_one:
453*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
454*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
455*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx),%edx
456*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
457*8fb009dcSAndroid Build Coastguard WorkerL022enc1_loop_3:
458*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
459*8fb009dcSAndroid Build Coastguard Worker	decl	%ecx
460*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm1
461*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
462*8fb009dcSAndroid Build Coastguard Worker	jnz	L022enc1_loop_3
463*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,209
464*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
465*8fb009dcSAndroid Build Coastguard Worker	jmp	L013ecb_ret
466*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
467*8fb009dcSAndroid Build Coastguard WorkerL019ecb_enc_two:
468*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_encrypt2
469*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
470*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
471*8fb009dcSAndroid Build Coastguard Worker	jmp	L013ecb_ret
472*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
473*8fb009dcSAndroid Build Coastguard WorkerL020ecb_enc_three:
474*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_encrypt3
475*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
476*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
477*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
478*8fb009dcSAndroid Build Coastguard Worker	jmp	L013ecb_ret
479*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
480*8fb009dcSAndroid Build Coastguard WorkerL021ecb_enc_four:
481*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_encrypt4
482*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
483*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
484*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
485*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm5,48(%edi)
486*8fb009dcSAndroid Build Coastguard Worker	jmp	L013ecb_ret
487*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
488*8fb009dcSAndroid Build Coastguard WorkerL014ecb_decrypt:
489*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,%ebp
490*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,%ebx
491*8fb009dcSAndroid Build Coastguard Worker	cmpl	$96,%eax
492*8fb009dcSAndroid Build Coastguard Worker	jb	L023ecb_dec_tail
493*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%esi),%xmm2
494*8fb009dcSAndroid Build Coastguard Worker	movdqu	16(%esi),%xmm3
495*8fb009dcSAndroid Build Coastguard Worker	movdqu	32(%esi),%xmm4
496*8fb009dcSAndroid Build Coastguard Worker	movdqu	48(%esi),%xmm5
497*8fb009dcSAndroid Build Coastguard Worker	movdqu	64(%esi),%xmm6
498*8fb009dcSAndroid Build Coastguard Worker	movdqu	80(%esi),%xmm7
499*8fb009dcSAndroid Build Coastguard Worker	leal	96(%esi),%esi
500*8fb009dcSAndroid Build Coastguard Worker	subl	$96,%eax
501*8fb009dcSAndroid Build Coastguard Worker	jmp	L024ecb_dec_loop6_enter
502*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
503*8fb009dcSAndroid Build Coastguard WorkerL025ecb_dec_loop6:
504*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
505*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%esi),%xmm2
506*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
507*8fb009dcSAndroid Build Coastguard Worker	movdqu	16(%esi),%xmm3
508*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
509*8fb009dcSAndroid Build Coastguard Worker	movdqu	32(%esi),%xmm4
510*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm5,48(%edi)
511*8fb009dcSAndroid Build Coastguard Worker	movdqu	48(%esi),%xmm5
512*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm6,64(%edi)
513*8fb009dcSAndroid Build Coastguard Worker	movdqu	64(%esi),%xmm6
514*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm7,80(%edi)
515*8fb009dcSAndroid Build Coastguard Worker	leal	96(%edi),%edi
516*8fb009dcSAndroid Build Coastguard Worker	movdqu	80(%esi),%xmm7
517*8fb009dcSAndroid Build Coastguard Worker	leal	96(%esi),%esi
518*8fb009dcSAndroid Build Coastguard WorkerL024ecb_dec_loop6_enter:
519*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_decrypt6
520*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,%edx
521*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,%ecx
522*8fb009dcSAndroid Build Coastguard Worker	subl	$96,%eax
523*8fb009dcSAndroid Build Coastguard Worker	jnc	L025ecb_dec_loop6
524*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
525*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
526*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
527*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm5,48(%edi)
528*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm6,64(%edi)
529*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm7,80(%edi)
530*8fb009dcSAndroid Build Coastguard Worker	leal	96(%edi),%edi
531*8fb009dcSAndroid Build Coastguard Worker	addl	$96,%eax
532*8fb009dcSAndroid Build Coastguard Worker	jz	L013ecb_ret
533*8fb009dcSAndroid Build Coastguard WorkerL023ecb_dec_tail:
534*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm2
535*8fb009dcSAndroid Build Coastguard Worker	cmpl	$32,%eax
536*8fb009dcSAndroid Build Coastguard Worker	jb	L026ecb_dec_one
537*8fb009dcSAndroid Build Coastguard Worker	movups	16(%esi),%xmm3
538*8fb009dcSAndroid Build Coastguard Worker	je	L027ecb_dec_two
539*8fb009dcSAndroid Build Coastguard Worker	movups	32(%esi),%xmm4
540*8fb009dcSAndroid Build Coastguard Worker	cmpl	$64,%eax
541*8fb009dcSAndroid Build Coastguard Worker	jb	L028ecb_dec_three
542*8fb009dcSAndroid Build Coastguard Worker	movups	48(%esi),%xmm5
543*8fb009dcSAndroid Build Coastguard Worker	je	L029ecb_dec_four
544*8fb009dcSAndroid Build Coastguard Worker	movups	64(%esi),%xmm6
545*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm7,%xmm7
546*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_decrypt6
547*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
548*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
549*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
550*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm5,48(%edi)
551*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm6,64(%edi)
552*8fb009dcSAndroid Build Coastguard Worker	jmp	L013ecb_ret
553*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
554*8fb009dcSAndroid Build Coastguard WorkerL026ecb_dec_one:
555*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
556*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
557*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx),%edx
558*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
559*8fb009dcSAndroid Build Coastguard WorkerL030dec1_loop_4:
560*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,209
561*8fb009dcSAndroid Build Coastguard Worker	decl	%ecx
562*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm1
563*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
564*8fb009dcSAndroid Build Coastguard Worker	jnz	L030dec1_loop_4
565*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,209
566*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
567*8fb009dcSAndroid Build Coastguard Worker	jmp	L013ecb_ret
568*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
569*8fb009dcSAndroid Build Coastguard WorkerL027ecb_dec_two:
570*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_decrypt2
571*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
572*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
573*8fb009dcSAndroid Build Coastguard Worker	jmp	L013ecb_ret
574*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
575*8fb009dcSAndroid Build Coastguard WorkerL028ecb_dec_three:
576*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_decrypt3
577*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
578*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
579*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
580*8fb009dcSAndroid Build Coastguard Worker	jmp	L013ecb_ret
581*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
582*8fb009dcSAndroid Build Coastguard WorkerL029ecb_dec_four:
583*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_decrypt4
584*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
585*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
586*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
587*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm5,48(%edi)
588*8fb009dcSAndroid Build Coastguard WorkerL013ecb_ret:
589*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
590*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm1
591*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm2
592*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm3
593*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm4
594*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm5
595*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm6,%xmm6
596*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm7,%xmm7
597*8fb009dcSAndroid Build Coastguard Worker	popl	%edi
598*8fb009dcSAndroid Build Coastguard Worker	popl	%esi
599*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
600*8fb009dcSAndroid Build Coastguard Worker	popl	%ebp
601*8fb009dcSAndroid Build Coastguard Worker	ret
602*8fb009dcSAndroid Build Coastguard Worker.globl	_aes_hw_ccm64_encrypt_blocks
603*8fb009dcSAndroid Build Coastguard Worker.private_extern	_aes_hw_ccm64_encrypt_blocks
604*8fb009dcSAndroid Build Coastguard Worker.align	4
605*8fb009dcSAndroid Build Coastguard Worker_aes_hw_ccm64_encrypt_blocks:
606*8fb009dcSAndroid Build Coastguard WorkerL_aes_hw_ccm64_encrypt_blocks_begin:
607*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebp
608*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
609*8fb009dcSAndroid Build Coastguard Worker	pushl	%esi
610*8fb009dcSAndroid Build Coastguard Worker	pushl	%edi
611*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%esi
612*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esp),%edi
613*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esp),%eax
614*8fb009dcSAndroid Build Coastguard Worker	movl	32(%esp),%edx
615*8fb009dcSAndroid Build Coastguard Worker	movl	36(%esp),%ebx
616*8fb009dcSAndroid Build Coastguard Worker	movl	40(%esp),%ecx
617*8fb009dcSAndroid Build Coastguard Worker	movl	%esp,%ebp
618*8fb009dcSAndroid Build Coastguard Worker	subl	$60,%esp
619*8fb009dcSAndroid Build Coastguard Worker	andl	$-16,%esp
620*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,48(%esp)
621*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%ebx),%xmm7
622*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%ecx),%xmm3
623*8fb009dcSAndroid Build Coastguard Worker	movl	240(%edx),%ecx
624*8fb009dcSAndroid Build Coastguard Worker	movl	$202182159,(%esp)
625*8fb009dcSAndroid Build Coastguard Worker	movl	$134810123,4(%esp)
626*8fb009dcSAndroid Build Coastguard Worker	movl	$67438087,8(%esp)
627*8fb009dcSAndroid Build Coastguard Worker	movl	$66051,12(%esp)
628*8fb009dcSAndroid Build Coastguard Worker	movl	$1,%ebx
629*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebp,%ebp
630*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,16(%esp)
631*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,20(%esp)
632*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,24(%esp)
633*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,28(%esp)
634*8fb009dcSAndroid Build Coastguard Worker	shll	$4,%ecx
635*8fb009dcSAndroid Build Coastguard Worker	movl	$16,%ebx
636*8fb009dcSAndroid Build Coastguard Worker	leal	(%edx),%ebp
637*8fb009dcSAndroid Build Coastguard Worker	movdqa	(%esp),%xmm5
638*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,%xmm2
639*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx,%ecx,1),%edx
640*8fb009dcSAndroid Build Coastguard Worker	subl	%ecx,%ebx
641*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,253
642*8fb009dcSAndroid Build Coastguard WorkerL031ccm64_enc_outer:
643*8fb009dcSAndroid Build Coastguard Worker	movups	(%ebp),%xmm0
644*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,%ecx
645*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm6
646*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
647*8fb009dcSAndroid Build Coastguard Worker	movups	16(%ebp),%xmm1
648*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm0
649*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm3
650*8fb009dcSAndroid Build Coastguard Worker	movups	32(%ebp),%xmm0
651*8fb009dcSAndroid Build Coastguard WorkerL032ccm64_enc2_loop:
652*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
653*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,217
654*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx,%ecx,1),%xmm1
655*8fb009dcSAndroid Build Coastguard Worker	addl	$32,%ecx
656*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,208
657*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,216
658*8fb009dcSAndroid Build Coastguard Worker	movups	-16(%edx,%ecx,1),%xmm0
659*8fb009dcSAndroid Build Coastguard Worker	jnz	L032ccm64_enc2_loop
660*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
661*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,217
662*8fb009dcSAndroid Build Coastguard Worker	paddq	16(%esp),%xmm7
663*8fb009dcSAndroid Build Coastguard Worker	decl	%eax
664*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,208
665*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,216
666*8fb009dcSAndroid Build Coastguard Worker	leal	16(%esi),%esi
667*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm2,%xmm6
668*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,%xmm2
669*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm6,(%edi)
670*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,213
671*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edi),%edi
672*8fb009dcSAndroid Build Coastguard Worker	jnz	L031ccm64_enc_outer
673*8fb009dcSAndroid Build Coastguard Worker	movl	48(%esp),%esp
674*8fb009dcSAndroid Build Coastguard Worker	movl	40(%esp),%edi
675*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,(%edi)
676*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
677*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm1
678*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm2
679*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm3
680*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm4
681*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm5
682*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm6,%xmm6
683*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm7,%xmm7
684*8fb009dcSAndroid Build Coastguard Worker	popl	%edi
685*8fb009dcSAndroid Build Coastguard Worker	popl	%esi
686*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
687*8fb009dcSAndroid Build Coastguard Worker	popl	%ebp
688*8fb009dcSAndroid Build Coastguard Worker	ret
689*8fb009dcSAndroid Build Coastguard Worker.globl	_aes_hw_ccm64_decrypt_blocks
690*8fb009dcSAndroid Build Coastguard Worker.private_extern	_aes_hw_ccm64_decrypt_blocks
691*8fb009dcSAndroid Build Coastguard Worker.align	4
692*8fb009dcSAndroid Build Coastguard Worker_aes_hw_ccm64_decrypt_blocks:
693*8fb009dcSAndroid Build Coastguard WorkerL_aes_hw_ccm64_decrypt_blocks_begin:
694*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebp
695*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
696*8fb009dcSAndroid Build Coastguard Worker	pushl	%esi
697*8fb009dcSAndroid Build Coastguard Worker	pushl	%edi
698*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%esi
699*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esp),%edi
700*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esp),%eax
701*8fb009dcSAndroid Build Coastguard Worker	movl	32(%esp),%edx
702*8fb009dcSAndroid Build Coastguard Worker	movl	36(%esp),%ebx
703*8fb009dcSAndroid Build Coastguard Worker	movl	40(%esp),%ecx
704*8fb009dcSAndroid Build Coastguard Worker	movl	%esp,%ebp
705*8fb009dcSAndroid Build Coastguard Worker	subl	$60,%esp
706*8fb009dcSAndroid Build Coastguard Worker	andl	$-16,%esp
707*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,48(%esp)
708*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%ebx),%xmm7
709*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%ecx),%xmm3
710*8fb009dcSAndroid Build Coastguard Worker	movl	240(%edx),%ecx
711*8fb009dcSAndroid Build Coastguard Worker	movl	$202182159,(%esp)
712*8fb009dcSAndroid Build Coastguard Worker	movl	$134810123,4(%esp)
713*8fb009dcSAndroid Build Coastguard Worker	movl	$67438087,8(%esp)
714*8fb009dcSAndroid Build Coastguard Worker	movl	$66051,12(%esp)
715*8fb009dcSAndroid Build Coastguard Worker	movl	$1,%ebx
716*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebp,%ebp
717*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,16(%esp)
718*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,20(%esp)
719*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,24(%esp)
720*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,28(%esp)
721*8fb009dcSAndroid Build Coastguard Worker	movdqa	(%esp),%xmm5
722*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,%xmm2
723*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,%ebp
724*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,%ebx
725*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,253
726*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
727*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
728*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx),%edx
729*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
730*8fb009dcSAndroid Build Coastguard WorkerL033enc1_loop_5:
731*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
732*8fb009dcSAndroid Build Coastguard Worker	decl	%ecx
733*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm1
734*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
735*8fb009dcSAndroid Build Coastguard Worker	jnz	L033enc1_loop_5
736*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,209
737*8fb009dcSAndroid Build Coastguard Worker	shll	$4,%ebx
738*8fb009dcSAndroid Build Coastguard Worker	movl	$16,%ecx
739*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm6
740*8fb009dcSAndroid Build Coastguard Worker	paddq	16(%esp),%xmm7
741*8fb009dcSAndroid Build Coastguard Worker	leal	16(%esi),%esi
742*8fb009dcSAndroid Build Coastguard Worker	subl	%ebx,%ecx
743*8fb009dcSAndroid Build Coastguard Worker	leal	32(%ebp,%ebx,1),%edx
744*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,%ebx
745*8fb009dcSAndroid Build Coastguard Worker	jmp	L034ccm64_dec_outer
746*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
747*8fb009dcSAndroid Build Coastguard WorkerL034ccm64_dec_outer:
748*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm2,%xmm6
749*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,%xmm2
750*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm6,(%edi)
751*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edi),%edi
752*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,213
753*8fb009dcSAndroid Build Coastguard Worker	subl	$1,%eax
754*8fb009dcSAndroid Build Coastguard Worker	jz	L035ccm64_dec_break
755*8fb009dcSAndroid Build Coastguard Worker	movups	(%ebp),%xmm0
756*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,%ecx
757*8fb009dcSAndroid Build Coastguard Worker	movups	16(%ebp),%xmm1
758*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm6
759*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
760*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm3
761*8fb009dcSAndroid Build Coastguard Worker	movups	32(%ebp),%xmm0
762*8fb009dcSAndroid Build Coastguard WorkerL036ccm64_dec2_loop:
763*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
764*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,217
765*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx,%ecx,1),%xmm1
766*8fb009dcSAndroid Build Coastguard Worker	addl	$32,%ecx
767*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,208
768*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,216
769*8fb009dcSAndroid Build Coastguard Worker	movups	-16(%edx,%ecx,1),%xmm0
770*8fb009dcSAndroid Build Coastguard Worker	jnz	L036ccm64_dec2_loop
771*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm6
772*8fb009dcSAndroid Build Coastguard Worker	paddq	16(%esp),%xmm7
773*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
774*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,217
775*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,208
776*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,216
777*8fb009dcSAndroid Build Coastguard Worker	leal	16(%esi),%esi
778*8fb009dcSAndroid Build Coastguard Worker	jmp	L034ccm64_dec_outer
779*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
780*8fb009dcSAndroid Build Coastguard WorkerL035ccm64_dec_break:
781*8fb009dcSAndroid Build Coastguard Worker	movl	240(%ebp),%ecx
782*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,%edx
783*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
784*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
785*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm6
786*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx),%edx
787*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm3
788*8fb009dcSAndroid Build Coastguard WorkerL037enc1_loop_6:
789*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,217
790*8fb009dcSAndroid Build Coastguard Worker	decl	%ecx
791*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm1
792*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
793*8fb009dcSAndroid Build Coastguard Worker	jnz	L037enc1_loop_6
794*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,217
795*8fb009dcSAndroid Build Coastguard Worker	movl	48(%esp),%esp
796*8fb009dcSAndroid Build Coastguard Worker	movl	40(%esp),%edi
797*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,(%edi)
798*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
799*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm1
800*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm2
801*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm3
802*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm4
803*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm5
804*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm6,%xmm6
805*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm7,%xmm7
806*8fb009dcSAndroid Build Coastguard Worker	popl	%edi
807*8fb009dcSAndroid Build Coastguard Worker	popl	%esi
808*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
809*8fb009dcSAndroid Build Coastguard Worker	popl	%ebp
810*8fb009dcSAndroid Build Coastguard Worker	ret
811*8fb009dcSAndroid Build Coastguard Worker.globl	_aes_hw_ctr32_encrypt_blocks
812*8fb009dcSAndroid Build Coastguard Worker.private_extern	_aes_hw_ctr32_encrypt_blocks
813*8fb009dcSAndroid Build Coastguard Worker.align	4
814*8fb009dcSAndroid Build Coastguard Worker_aes_hw_ctr32_encrypt_blocks:
815*8fb009dcSAndroid Build Coastguard WorkerL_aes_hw_ctr32_encrypt_blocks_begin:
816*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebp
817*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
818*8fb009dcSAndroid Build Coastguard Worker	pushl	%esi
819*8fb009dcSAndroid Build Coastguard Worker	pushl	%edi
820*8fb009dcSAndroid Build Coastguard Worker#ifdef BORINGSSL_DISPATCH_TEST
821*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
822*8fb009dcSAndroid Build Coastguard Worker	pushl	%edx
823*8fb009dcSAndroid Build Coastguard Worker	call	L038pic_for_function_hit
824*8fb009dcSAndroid Build Coastguard WorkerL038pic_for_function_hit:
825*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
826*8fb009dcSAndroid Build Coastguard Worker	leal	_BORINGSSL_function_hit+0-L038pic_for_function_hit(%ebx),%ebx
827*8fb009dcSAndroid Build Coastguard Worker	movl	$1,%edx
828*8fb009dcSAndroid Build Coastguard Worker	movb	%dl,(%ebx)
829*8fb009dcSAndroid Build Coastguard Worker	popl	%edx
830*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
831*8fb009dcSAndroid Build Coastguard Worker#endif
832*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%esi
833*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esp),%edi
834*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esp),%eax
835*8fb009dcSAndroid Build Coastguard Worker	movl	32(%esp),%edx
836*8fb009dcSAndroid Build Coastguard Worker	movl	36(%esp),%ebx
837*8fb009dcSAndroid Build Coastguard Worker	movl	%esp,%ebp
838*8fb009dcSAndroid Build Coastguard Worker	subl	$88,%esp
839*8fb009dcSAndroid Build Coastguard Worker	andl	$-16,%esp
840*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,80(%esp)
841*8fb009dcSAndroid Build Coastguard Worker	cmpl	$1,%eax
842*8fb009dcSAndroid Build Coastguard Worker	je	L039ctr32_one_shortcut
843*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%ebx),%xmm7
844*8fb009dcSAndroid Build Coastguard Worker	movl	$202182159,(%esp)
845*8fb009dcSAndroid Build Coastguard Worker	movl	$134810123,4(%esp)
846*8fb009dcSAndroid Build Coastguard Worker	movl	$67438087,8(%esp)
847*8fb009dcSAndroid Build Coastguard Worker	movl	$66051,12(%esp)
848*8fb009dcSAndroid Build Coastguard Worker	movl	$6,%ecx
849*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebp,%ebp
850*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,16(%esp)
851*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,20(%esp)
852*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,24(%esp)
853*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,28(%esp)
854*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,22,251,3
855*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,34,253,3
856*8fb009dcSAndroid Build Coastguard Worker	movl	240(%edx),%ecx
857*8fb009dcSAndroid Build Coastguard Worker	bswap	%ebx
858*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
859*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm1
860*8fb009dcSAndroid Build Coastguard Worker	movdqa	(%esp),%xmm2
861*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,34,195,0
862*8fb009dcSAndroid Build Coastguard Worker	leal	3(%ebx),%ebp
863*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,34,205,0
864*8fb009dcSAndroid Build Coastguard Worker	incl	%ebx
865*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,34,195,1
866*8fb009dcSAndroid Build Coastguard Worker	incl	%ebp
867*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,34,205,1
868*8fb009dcSAndroid Build Coastguard Worker	incl	%ebx
869*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,34,195,2
870*8fb009dcSAndroid Build Coastguard Worker	incl	%ebp
871*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,34,205,2
872*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,48(%esp)
873*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,194
874*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%edx),%xmm6
875*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,64(%esp)
876*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,202
877*8fb009dcSAndroid Build Coastguard Worker	pshufd	$192,%xmm0,%xmm2
878*8fb009dcSAndroid Build Coastguard Worker	pshufd	$128,%xmm0,%xmm3
879*8fb009dcSAndroid Build Coastguard Worker	cmpl	$6,%eax
880*8fb009dcSAndroid Build Coastguard Worker	jb	L040ctr32_tail
881*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm6,%xmm7
882*8fb009dcSAndroid Build Coastguard Worker	shll	$4,%ecx
883*8fb009dcSAndroid Build Coastguard Worker	movl	$16,%ebx
884*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,32(%esp)
885*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,%ebp
886*8fb009dcSAndroid Build Coastguard Worker	subl	%ecx,%ebx
887*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx,%ecx,1),%edx
888*8fb009dcSAndroid Build Coastguard Worker	subl	$6,%eax
889*8fb009dcSAndroid Build Coastguard Worker	jmp	L041ctr32_loop6
890*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
891*8fb009dcSAndroid Build Coastguard WorkerL041ctr32_loop6:
892*8fb009dcSAndroid Build Coastguard Worker	pshufd	$64,%xmm0,%xmm4
893*8fb009dcSAndroid Build Coastguard Worker	movdqa	32(%esp),%xmm0
894*8fb009dcSAndroid Build Coastguard Worker	pshufd	$192,%xmm1,%xmm5
895*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm2
896*8fb009dcSAndroid Build Coastguard Worker	pshufd	$128,%xmm1,%xmm6
897*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
898*8fb009dcSAndroid Build Coastguard Worker	pshufd	$64,%xmm1,%xmm7
899*8fb009dcSAndroid Build Coastguard Worker	movups	16(%ebp),%xmm1
900*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
901*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm5
902*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
903*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm6
904*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm7
905*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,217
906*8fb009dcSAndroid Build Coastguard Worker	movups	32(%ebp),%xmm0
907*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,%ecx
908*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,225
909*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,233
910*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,241
911*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,249
912*8fb009dcSAndroid Build Coastguard Worker	call	L_aesni_encrypt6_enter
913*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm1
914*8fb009dcSAndroid Build Coastguard Worker	movups	16(%esi),%xmm0
915*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm2
916*8fb009dcSAndroid Build Coastguard Worker	movups	32(%esi),%xmm1
917*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm3
918*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
919*8fb009dcSAndroid Build Coastguard Worker	movdqa	16(%esp),%xmm0
920*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm4
921*8fb009dcSAndroid Build Coastguard Worker	movdqa	64(%esp),%xmm1
922*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
923*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
924*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm0,%xmm1
925*8fb009dcSAndroid Build Coastguard Worker	paddd	48(%esp),%xmm0
926*8fb009dcSAndroid Build Coastguard Worker	movdqa	(%esp),%xmm2
927*8fb009dcSAndroid Build Coastguard Worker	movups	48(%esi),%xmm3
928*8fb009dcSAndroid Build Coastguard Worker	movups	64(%esi),%xmm4
929*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm3,%xmm5
930*8fb009dcSAndroid Build Coastguard Worker	movups	80(%esi),%xmm3
931*8fb009dcSAndroid Build Coastguard Worker	leal	96(%esi),%esi
932*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,48(%esp)
933*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,194
934*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm4,%xmm6
935*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm5,48(%edi)
936*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm3,%xmm7
937*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,64(%esp)
938*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,202
939*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm6,64(%edi)
940*8fb009dcSAndroid Build Coastguard Worker	pshufd	$192,%xmm0,%xmm2
941*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm7,80(%edi)
942*8fb009dcSAndroid Build Coastguard Worker	leal	96(%edi),%edi
943*8fb009dcSAndroid Build Coastguard Worker	pshufd	$128,%xmm0,%xmm3
944*8fb009dcSAndroid Build Coastguard Worker	subl	$6,%eax
945*8fb009dcSAndroid Build Coastguard Worker	jnc	L041ctr32_loop6
946*8fb009dcSAndroid Build Coastguard Worker	addl	$6,%eax
947*8fb009dcSAndroid Build Coastguard Worker	jz	L042ctr32_ret
948*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%ebp),%xmm7
949*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,%edx
950*8fb009dcSAndroid Build Coastguard Worker	pxor	32(%esp),%xmm7
951*8fb009dcSAndroid Build Coastguard Worker	movl	240(%ebp),%ecx
952*8fb009dcSAndroid Build Coastguard WorkerL040ctr32_tail:
953*8fb009dcSAndroid Build Coastguard Worker	por	%xmm7,%xmm2
954*8fb009dcSAndroid Build Coastguard Worker	cmpl	$2,%eax
955*8fb009dcSAndroid Build Coastguard Worker	jb	L043ctr32_one
956*8fb009dcSAndroid Build Coastguard Worker	pshufd	$64,%xmm0,%xmm4
957*8fb009dcSAndroid Build Coastguard Worker	por	%xmm7,%xmm3
958*8fb009dcSAndroid Build Coastguard Worker	je	L044ctr32_two
959*8fb009dcSAndroid Build Coastguard Worker	pshufd	$192,%xmm1,%xmm5
960*8fb009dcSAndroid Build Coastguard Worker	por	%xmm7,%xmm4
961*8fb009dcSAndroid Build Coastguard Worker	cmpl	$4,%eax
962*8fb009dcSAndroid Build Coastguard Worker	jb	L045ctr32_three
963*8fb009dcSAndroid Build Coastguard Worker	pshufd	$128,%xmm1,%xmm6
964*8fb009dcSAndroid Build Coastguard Worker	por	%xmm7,%xmm5
965*8fb009dcSAndroid Build Coastguard Worker	je	L046ctr32_four
966*8fb009dcSAndroid Build Coastguard Worker	por	%xmm7,%xmm6
967*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_encrypt6
968*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm1
969*8fb009dcSAndroid Build Coastguard Worker	movups	16(%esi),%xmm0
970*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm2
971*8fb009dcSAndroid Build Coastguard Worker	movups	32(%esi),%xmm1
972*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm3
973*8fb009dcSAndroid Build Coastguard Worker	movups	48(%esi),%xmm0
974*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm4
975*8fb009dcSAndroid Build Coastguard Worker	movups	64(%esi),%xmm1
976*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm5
977*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
978*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm6
979*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
980*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
981*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm5,48(%edi)
982*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm6,64(%edi)
983*8fb009dcSAndroid Build Coastguard Worker	jmp	L042ctr32_ret
984*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
985*8fb009dcSAndroid Build Coastguard WorkerL039ctr32_one_shortcut:
986*8fb009dcSAndroid Build Coastguard Worker	movups	(%ebx),%xmm2
987*8fb009dcSAndroid Build Coastguard Worker	movl	240(%edx),%ecx
988*8fb009dcSAndroid Build Coastguard WorkerL043ctr32_one:
989*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
990*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
991*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx),%edx
992*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
993*8fb009dcSAndroid Build Coastguard WorkerL047enc1_loop_7:
994*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
995*8fb009dcSAndroid Build Coastguard Worker	decl	%ecx
996*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm1
997*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
998*8fb009dcSAndroid Build Coastguard Worker	jnz	L047enc1_loop_7
999*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,209
1000*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm6
1001*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm2,%xmm6
1002*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm6,(%edi)
1003*8fb009dcSAndroid Build Coastguard Worker	jmp	L042ctr32_ret
1004*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1005*8fb009dcSAndroid Build Coastguard WorkerL044ctr32_two:
1006*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_encrypt2
1007*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm5
1008*8fb009dcSAndroid Build Coastguard Worker	movups	16(%esi),%xmm6
1009*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm5,%xmm2
1010*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm3
1011*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1012*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
1013*8fb009dcSAndroid Build Coastguard Worker	jmp	L042ctr32_ret
1014*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1015*8fb009dcSAndroid Build Coastguard WorkerL045ctr32_three:
1016*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_encrypt3
1017*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm5
1018*8fb009dcSAndroid Build Coastguard Worker	movups	16(%esi),%xmm6
1019*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm5,%xmm2
1020*8fb009dcSAndroid Build Coastguard Worker	movups	32(%esi),%xmm7
1021*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm3
1022*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1023*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm7,%xmm4
1024*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
1025*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
1026*8fb009dcSAndroid Build Coastguard Worker	jmp	L042ctr32_ret
1027*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1028*8fb009dcSAndroid Build Coastguard WorkerL046ctr32_four:
1029*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_encrypt4
1030*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm6
1031*8fb009dcSAndroid Build Coastguard Worker	movups	16(%esi),%xmm7
1032*8fb009dcSAndroid Build Coastguard Worker	movups	32(%esi),%xmm1
1033*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm2
1034*8fb009dcSAndroid Build Coastguard Worker	movups	48(%esi),%xmm0
1035*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm7,%xmm3
1036*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1037*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm4
1038*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
1039*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm5
1040*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
1041*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm5,48(%edi)
1042*8fb009dcSAndroid Build Coastguard WorkerL042ctr32_ret:
1043*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1044*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm1
1045*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm2
1046*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm3
1047*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm4
1048*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,32(%esp)
1049*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm5
1050*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,48(%esp)
1051*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm6,%xmm6
1052*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,64(%esp)
1053*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm7,%xmm7
1054*8fb009dcSAndroid Build Coastguard Worker	movl	80(%esp),%esp
1055*8fb009dcSAndroid Build Coastguard Worker	popl	%edi
1056*8fb009dcSAndroid Build Coastguard Worker	popl	%esi
1057*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
1058*8fb009dcSAndroid Build Coastguard Worker	popl	%ebp
1059*8fb009dcSAndroid Build Coastguard Worker	ret
1060*8fb009dcSAndroid Build Coastguard Worker.globl	_aes_hw_xts_encrypt
1061*8fb009dcSAndroid Build Coastguard Worker.private_extern	_aes_hw_xts_encrypt
1062*8fb009dcSAndroid Build Coastguard Worker.align	4
1063*8fb009dcSAndroid Build Coastguard Worker_aes_hw_xts_encrypt:
1064*8fb009dcSAndroid Build Coastguard WorkerL_aes_hw_xts_encrypt_begin:
1065*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebp
1066*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
1067*8fb009dcSAndroid Build Coastguard Worker	pushl	%esi
1068*8fb009dcSAndroid Build Coastguard Worker	pushl	%edi
1069*8fb009dcSAndroid Build Coastguard Worker	movl	36(%esp),%edx
1070*8fb009dcSAndroid Build Coastguard Worker	movl	40(%esp),%esi
1071*8fb009dcSAndroid Build Coastguard Worker	movl	240(%edx),%ecx
1072*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm2
1073*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
1074*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
1075*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx),%edx
1076*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
1077*8fb009dcSAndroid Build Coastguard WorkerL048enc1_loop_8:
1078*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
1079*8fb009dcSAndroid Build Coastguard Worker	decl	%ecx
1080*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm1
1081*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
1082*8fb009dcSAndroid Build Coastguard Worker	jnz	L048enc1_loop_8
1083*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,209
1084*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%esi
1085*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esp),%edi
1086*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esp),%eax
1087*8fb009dcSAndroid Build Coastguard Worker	movl	32(%esp),%edx
1088*8fb009dcSAndroid Build Coastguard Worker	movl	%esp,%ebp
1089*8fb009dcSAndroid Build Coastguard Worker	subl	$120,%esp
1090*8fb009dcSAndroid Build Coastguard Worker	movl	240(%edx),%ecx
1091*8fb009dcSAndroid Build Coastguard Worker	andl	$-16,%esp
1092*8fb009dcSAndroid Build Coastguard Worker	movl	$135,96(%esp)
1093*8fb009dcSAndroid Build Coastguard Worker	movl	$0,100(%esp)
1094*8fb009dcSAndroid Build Coastguard Worker	movl	$1,104(%esp)
1095*8fb009dcSAndroid Build Coastguard Worker	movl	$0,108(%esp)
1096*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,112(%esp)
1097*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,116(%esp)
1098*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm1
1099*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1100*8fb009dcSAndroid Build Coastguard Worker	movdqa	96(%esp),%xmm3
1101*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1102*8fb009dcSAndroid Build Coastguard Worker	andl	$-16,%eax
1103*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,%ebp
1104*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,%ebx
1105*8fb009dcSAndroid Build Coastguard Worker	subl	$96,%eax
1106*8fb009dcSAndroid Build Coastguard Worker	jc	L049xts_enc_short
1107*8fb009dcSAndroid Build Coastguard Worker	shll	$4,%ecx
1108*8fb009dcSAndroid Build Coastguard Worker	movl	$16,%ebx
1109*8fb009dcSAndroid Build Coastguard Worker	subl	%ecx,%ebx
1110*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx,%ecx,1),%edx
1111*8fb009dcSAndroid Build Coastguard Worker	jmp	L050xts_enc_loop6
1112*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1113*8fb009dcSAndroid Build Coastguard WorkerL050xts_enc_loop6:
1114*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm2
1115*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1116*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,(%esp)
1117*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1118*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm2
1119*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1120*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
1121*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm2
1122*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1123*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,16(%esp)
1124*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1125*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm2
1126*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1127*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
1128*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm2
1129*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1130*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,32(%esp)
1131*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1132*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm2
1133*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1134*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
1135*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm2
1136*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1137*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,48(%esp)
1138*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1139*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm2
1140*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1141*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
1142*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm7
1143*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,64(%esp)
1144*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1145*8fb009dcSAndroid Build Coastguard Worker	movups	(%ebp),%xmm0
1146*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm7
1147*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm2
1148*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm7
1149*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,%ecx
1150*8fb009dcSAndroid Build Coastguard Worker	movdqu	16(%esi),%xmm3
1151*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
1152*8fb009dcSAndroid Build Coastguard Worker	movdqu	32(%esi),%xmm4
1153*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
1154*8fb009dcSAndroid Build Coastguard Worker	movdqu	48(%esi),%xmm5
1155*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
1156*8fb009dcSAndroid Build Coastguard Worker	movdqu	64(%esi),%xmm6
1157*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm5
1158*8fb009dcSAndroid Build Coastguard Worker	movdqu	80(%esi),%xmm1
1159*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm6
1160*8fb009dcSAndroid Build Coastguard Worker	leal	96(%esi),%esi
1161*8fb009dcSAndroid Build Coastguard Worker	pxor	(%esp),%xmm2
1162*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,80(%esp)
1163*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm7
1164*8fb009dcSAndroid Build Coastguard Worker	movups	16(%ebp),%xmm1
1165*8fb009dcSAndroid Build Coastguard Worker	pxor	16(%esp),%xmm3
1166*8fb009dcSAndroid Build Coastguard Worker	pxor	32(%esp),%xmm4
1167*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
1168*8fb009dcSAndroid Build Coastguard Worker	pxor	48(%esp),%xmm5
1169*8fb009dcSAndroid Build Coastguard Worker	pxor	64(%esp),%xmm6
1170*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,217
1171*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm7
1172*8fb009dcSAndroid Build Coastguard Worker	movups	32(%ebp),%xmm0
1173*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,225
1174*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,233
1175*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,241
1176*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,249
1177*8fb009dcSAndroid Build Coastguard Worker	call	L_aesni_encrypt6_enter
1178*8fb009dcSAndroid Build Coastguard Worker	movdqa	80(%esp),%xmm1
1179*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1180*8fb009dcSAndroid Build Coastguard Worker	xorps	(%esp),%xmm2
1181*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1182*8fb009dcSAndroid Build Coastguard Worker	xorps	16(%esp),%xmm3
1183*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1184*8fb009dcSAndroid Build Coastguard Worker	xorps	32(%esp),%xmm4
1185*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
1186*8fb009dcSAndroid Build Coastguard Worker	xorps	48(%esp),%xmm5
1187*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
1188*8fb009dcSAndroid Build Coastguard Worker	xorps	64(%esp),%xmm6
1189*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm5,48(%edi)
1190*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm7
1191*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm6,64(%edi)
1192*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm2
1193*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm7,80(%edi)
1194*8fb009dcSAndroid Build Coastguard Worker	leal	96(%edi),%edi
1195*8fb009dcSAndroid Build Coastguard Worker	movdqa	96(%esp),%xmm3
1196*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1197*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1198*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm2
1199*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1200*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
1201*8fb009dcSAndroid Build Coastguard Worker	subl	$96,%eax
1202*8fb009dcSAndroid Build Coastguard Worker	jnc	L050xts_enc_loop6
1203*8fb009dcSAndroid Build Coastguard Worker	movl	240(%ebp),%ecx
1204*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,%edx
1205*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,%ebx
1206*8fb009dcSAndroid Build Coastguard WorkerL049xts_enc_short:
1207*8fb009dcSAndroid Build Coastguard Worker	addl	$96,%eax
1208*8fb009dcSAndroid Build Coastguard Worker	jz	L051xts_enc_done6x
1209*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,%xmm5
1210*8fb009dcSAndroid Build Coastguard Worker	cmpl	$32,%eax
1211*8fb009dcSAndroid Build Coastguard Worker	jb	L052xts_enc_one
1212*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm2
1213*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1214*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1215*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm2
1216*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1217*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
1218*8fb009dcSAndroid Build Coastguard Worker	je	L053xts_enc_two
1219*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm2
1220*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1221*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,%xmm6
1222*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1223*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm2
1224*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1225*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
1226*8fb009dcSAndroid Build Coastguard Worker	cmpl	$64,%eax
1227*8fb009dcSAndroid Build Coastguard Worker	jb	L054xts_enc_three
1228*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm2
1229*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1230*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,%xmm7
1231*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1232*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm2
1233*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1234*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
1235*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm5,(%esp)
1236*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,16(%esp)
1237*8fb009dcSAndroid Build Coastguard Worker	je	L055xts_enc_four
1238*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,32(%esp)
1239*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm7
1240*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,48(%esp)
1241*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1242*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm7
1243*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm7
1244*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%esi),%xmm2
1245*8fb009dcSAndroid Build Coastguard Worker	movdqu	16(%esi),%xmm3
1246*8fb009dcSAndroid Build Coastguard Worker	movdqu	32(%esi),%xmm4
1247*8fb009dcSAndroid Build Coastguard Worker	pxor	(%esp),%xmm2
1248*8fb009dcSAndroid Build Coastguard Worker	movdqu	48(%esi),%xmm5
1249*8fb009dcSAndroid Build Coastguard Worker	pxor	16(%esp),%xmm3
1250*8fb009dcSAndroid Build Coastguard Worker	movdqu	64(%esi),%xmm6
1251*8fb009dcSAndroid Build Coastguard Worker	pxor	32(%esp),%xmm4
1252*8fb009dcSAndroid Build Coastguard Worker	leal	80(%esi),%esi
1253*8fb009dcSAndroid Build Coastguard Worker	pxor	48(%esp),%xmm5
1254*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,64(%esp)
1255*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm7,%xmm6
1256*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_encrypt6
1257*8fb009dcSAndroid Build Coastguard Worker	movaps	64(%esp),%xmm1
1258*8fb009dcSAndroid Build Coastguard Worker	xorps	(%esp),%xmm2
1259*8fb009dcSAndroid Build Coastguard Worker	xorps	16(%esp),%xmm3
1260*8fb009dcSAndroid Build Coastguard Worker	xorps	32(%esp),%xmm4
1261*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1262*8fb009dcSAndroid Build Coastguard Worker	xorps	48(%esp),%xmm5
1263*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
1264*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm6
1265*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
1266*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm5,48(%edi)
1267*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm6,64(%edi)
1268*8fb009dcSAndroid Build Coastguard Worker	leal	80(%edi),%edi
1269*8fb009dcSAndroid Build Coastguard Worker	jmp	L056xts_enc_done
1270*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1271*8fb009dcSAndroid Build Coastguard WorkerL052xts_enc_one:
1272*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm2
1273*8fb009dcSAndroid Build Coastguard Worker	leal	16(%esi),%esi
1274*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm5,%xmm2
1275*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
1276*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
1277*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx),%edx
1278*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
1279*8fb009dcSAndroid Build Coastguard WorkerL057enc1_loop_9:
1280*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
1281*8fb009dcSAndroid Build Coastguard Worker	decl	%ecx
1282*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm1
1283*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
1284*8fb009dcSAndroid Build Coastguard Worker	jnz	L057enc1_loop_9
1285*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,209
1286*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm5,%xmm2
1287*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1288*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edi),%edi
1289*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm5,%xmm1
1290*8fb009dcSAndroid Build Coastguard Worker	jmp	L056xts_enc_done
1291*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1292*8fb009dcSAndroid Build Coastguard WorkerL053xts_enc_two:
1293*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm1,%xmm6
1294*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm2
1295*8fb009dcSAndroid Build Coastguard Worker	movups	16(%esi),%xmm3
1296*8fb009dcSAndroid Build Coastguard Worker	leal	32(%esi),%esi
1297*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm5,%xmm2
1298*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm3
1299*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_encrypt2
1300*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm5,%xmm2
1301*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm3
1302*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1303*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
1304*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edi),%edi
1305*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,%xmm1
1306*8fb009dcSAndroid Build Coastguard Worker	jmp	L056xts_enc_done
1307*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1308*8fb009dcSAndroid Build Coastguard WorkerL054xts_enc_three:
1309*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm1,%xmm7
1310*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm2
1311*8fb009dcSAndroid Build Coastguard Worker	movups	16(%esi),%xmm3
1312*8fb009dcSAndroid Build Coastguard Worker	movups	32(%esi),%xmm4
1313*8fb009dcSAndroid Build Coastguard Worker	leal	48(%esi),%esi
1314*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm5,%xmm2
1315*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm3
1316*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm7,%xmm4
1317*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_encrypt3
1318*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm5,%xmm2
1319*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm3
1320*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm7,%xmm4
1321*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1322*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
1323*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
1324*8fb009dcSAndroid Build Coastguard Worker	leal	48(%edi),%edi
1325*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,%xmm1
1326*8fb009dcSAndroid Build Coastguard Worker	jmp	L056xts_enc_done
1327*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1328*8fb009dcSAndroid Build Coastguard WorkerL055xts_enc_four:
1329*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm1,%xmm6
1330*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm2
1331*8fb009dcSAndroid Build Coastguard Worker	movups	16(%esi),%xmm3
1332*8fb009dcSAndroid Build Coastguard Worker	movups	32(%esi),%xmm4
1333*8fb009dcSAndroid Build Coastguard Worker	xorps	(%esp),%xmm2
1334*8fb009dcSAndroid Build Coastguard Worker	movups	48(%esi),%xmm5
1335*8fb009dcSAndroid Build Coastguard Worker	leal	64(%esi),%esi
1336*8fb009dcSAndroid Build Coastguard Worker	xorps	16(%esp),%xmm3
1337*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm7,%xmm4
1338*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm5
1339*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_encrypt4
1340*8fb009dcSAndroid Build Coastguard Worker	xorps	(%esp),%xmm2
1341*8fb009dcSAndroid Build Coastguard Worker	xorps	16(%esp),%xmm3
1342*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm7,%xmm4
1343*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1344*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm5
1345*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
1346*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
1347*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm5,48(%edi)
1348*8fb009dcSAndroid Build Coastguard Worker	leal	64(%edi),%edi
1349*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,%xmm1
1350*8fb009dcSAndroid Build Coastguard Worker	jmp	L056xts_enc_done
1351*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1352*8fb009dcSAndroid Build Coastguard WorkerL051xts_enc_done6x:
1353*8fb009dcSAndroid Build Coastguard Worker	movl	112(%esp),%eax
1354*8fb009dcSAndroid Build Coastguard Worker	andl	$15,%eax
1355*8fb009dcSAndroid Build Coastguard Worker	jz	L058xts_enc_ret
1356*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,%xmm5
1357*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,112(%esp)
1358*8fb009dcSAndroid Build Coastguard Worker	jmp	L059xts_enc_steal
1359*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1360*8fb009dcSAndroid Build Coastguard WorkerL056xts_enc_done:
1361*8fb009dcSAndroid Build Coastguard Worker	movl	112(%esp),%eax
1362*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1363*8fb009dcSAndroid Build Coastguard Worker	andl	$15,%eax
1364*8fb009dcSAndroid Build Coastguard Worker	jz	L058xts_enc_ret
1365*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1366*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,112(%esp)
1367*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm5
1368*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1369*8fb009dcSAndroid Build Coastguard Worker	pand	96(%esp),%xmm5
1370*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm5
1371*8fb009dcSAndroid Build Coastguard WorkerL059xts_enc_steal:
1372*8fb009dcSAndroid Build Coastguard Worker	movzbl	(%esi),%ecx
1373*8fb009dcSAndroid Build Coastguard Worker	movzbl	-16(%edi),%edx
1374*8fb009dcSAndroid Build Coastguard Worker	leal	1(%esi),%esi
1375*8fb009dcSAndroid Build Coastguard Worker	movb	%cl,-16(%edi)
1376*8fb009dcSAndroid Build Coastguard Worker	movb	%dl,(%edi)
1377*8fb009dcSAndroid Build Coastguard Worker	leal	1(%edi),%edi
1378*8fb009dcSAndroid Build Coastguard Worker	subl	$1,%eax
1379*8fb009dcSAndroid Build Coastguard Worker	jnz	L059xts_enc_steal
1380*8fb009dcSAndroid Build Coastguard Worker	subl	112(%esp),%edi
1381*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,%edx
1382*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,%ecx
1383*8fb009dcSAndroid Build Coastguard Worker	movups	-16(%edi),%xmm2
1384*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm5,%xmm2
1385*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
1386*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
1387*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx),%edx
1388*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
1389*8fb009dcSAndroid Build Coastguard WorkerL060enc1_loop_10:
1390*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
1391*8fb009dcSAndroid Build Coastguard Worker	decl	%ecx
1392*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm1
1393*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
1394*8fb009dcSAndroid Build Coastguard Worker	jnz	L060enc1_loop_10
1395*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,209
1396*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm5,%xmm2
1397*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,-16(%edi)
1398*8fb009dcSAndroid Build Coastguard WorkerL058xts_enc_ret:
1399*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1400*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm1
1401*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm2
1402*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,(%esp)
1403*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm3
1404*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,16(%esp)
1405*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm4
1406*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,32(%esp)
1407*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm5
1408*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,48(%esp)
1409*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm6,%xmm6
1410*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,64(%esp)
1411*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm7,%xmm7
1412*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,80(%esp)
1413*8fb009dcSAndroid Build Coastguard Worker	movl	116(%esp),%esp
1414*8fb009dcSAndroid Build Coastguard Worker	popl	%edi
1415*8fb009dcSAndroid Build Coastguard Worker	popl	%esi
1416*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
1417*8fb009dcSAndroid Build Coastguard Worker	popl	%ebp
1418*8fb009dcSAndroid Build Coastguard Worker	ret
1419*8fb009dcSAndroid Build Coastguard Worker.globl	_aes_hw_xts_decrypt
1420*8fb009dcSAndroid Build Coastguard Worker.private_extern	_aes_hw_xts_decrypt
1421*8fb009dcSAndroid Build Coastguard Worker.align	4
1422*8fb009dcSAndroid Build Coastguard Worker_aes_hw_xts_decrypt:
1423*8fb009dcSAndroid Build Coastguard WorkerL_aes_hw_xts_decrypt_begin:
1424*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebp
1425*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
1426*8fb009dcSAndroid Build Coastguard Worker	pushl	%esi
1427*8fb009dcSAndroid Build Coastguard Worker	pushl	%edi
1428*8fb009dcSAndroid Build Coastguard Worker	movl	36(%esp),%edx
1429*8fb009dcSAndroid Build Coastguard Worker	movl	40(%esp),%esi
1430*8fb009dcSAndroid Build Coastguard Worker	movl	240(%edx),%ecx
1431*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm2
1432*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
1433*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
1434*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx),%edx
1435*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
1436*8fb009dcSAndroid Build Coastguard WorkerL061enc1_loop_11:
1437*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
1438*8fb009dcSAndroid Build Coastguard Worker	decl	%ecx
1439*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm1
1440*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
1441*8fb009dcSAndroid Build Coastguard Worker	jnz	L061enc1_loop_11
1442*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,209
1443*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%esi
1444*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esp),%edi
1445*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esp),%eax
1446*8fb009dcSAndroid Build Coastguard Worker	movl	32(%esp),%edx
1447*8fb009dcSAndroid Build Coastguard Worker	movl	%esp,%ebp
1448*8fb009dcSAndroid Build Coastguard Worker	subl	$120,%esp
1449*8fb009dcSAndroid Build Coastguard Worker	andl	$-16,%esp
1450*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebx,%ebx
1451*8fb009dcSAndroid Build Coastguard Worker	testl	$15,%eax
1452*8fb009dcSAndroid Build Coastguard Worker	setnz	%bl
1453*8fb009dcSAndroid Build Coastguard Worker	shll	$4,%ebx
1454*8fb009dcSAndroid Build Coastguard Worker	subl	%ebx,%eax
1455*8fb009dcSAndroid Build Coastguard Worker	movl	$135,96(%esp)
1456*8fb009dcSAndroid Build Coastguard Worker	movl	$0,100(%esp)
1457*8fb009dcSAndroid Build Coastguard Worker	movl	$1,104(%esp)
1458*8fb009dcSAndroid Build Coastguard Worker	movl	$0,108(%esp)
1459*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,112(%esp)
1460*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,116(%esp)
1461*8fb009dcSAndroid Build Coastguard Worker	movl	240(%edx),%ecx
1462*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,%ebp
1463*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,%ebx
1464*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm1
1465*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1466*8fb009dcSAndroid Build Coastguard Worker	movdqa	96(%esp),%xmm3
1467*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1468*8fb009dcSAndroid Build Coastguard Worker	andl	$-16,%eax
1469*8fb009dcSAndroid Build Coastguard Worker	subl	$96,%eax
1470*8fb009dcSAndroid Build Coastguard Worker	jc	L062xts_dec_short
1471*8fb009dcSAndroid Build Coastguard Worker	shll	$4,%ecx
1472*8fb009dcSAndroid Build Coastguard Worker	movl	$16,%ebx
1473*8fb009dcSAndroid Build Coastguard Worker	subl	%ecx,%ebx
1474*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx,%ecx,1),%edx
1475*8fb009dcSAndroid Build Coastguard Worker	jmp	L063xts_dec_loop6
1476*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1477*8fb009dcSAndroid Build Coastguard WorkerL063xts_dec_loop6:
1478*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm2
1479*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1480*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,(%esp)
1481*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1482*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm2
1483*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1484*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
1485*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm2
1486*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1487*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,16(%esp)
1488*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1489*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm2
1490*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1491*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
1492*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm2
1493*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1494*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,32(%esp)
1495*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1496*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm2
1497*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1498*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
1499*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm2
1500*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1501*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,48(%esp)
1502*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1503*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm2
1504*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1505*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
1506*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm7
1507*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,64(%esp)
1508*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1509*8fb009dcSAndroid Build Coastguard Worker	movups	(%ebp),%xmm0
1510*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm7
1511*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm2
1512*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm7
1513*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,%ecx
1514*8fb009dcSAndroid Build Coastguard Worker	movdqu	16(%esi),%xmm3
1515*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
1516*8fb009dcSAndroid Build Coastguard Worker	movdqu	32(%esi),%xmm4
1517*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
1518*8fb009dcSAndroid Build Coastguard Worker	movdqu	48(%esi),%xmm5
1519*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
1520*8fb009dcSAndroid Build Coastguard Worker	movdqu	64(%esi),%xmm6
1521*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm5
1522*8fb009dcSAndroid Build Coastguard Worker	movdqu	80(%esi),%xmm1
1523*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm6
1524*8fb009dcSAndroid Build Coastguard Worker	leal	96(%esi),%esi
1525*8fb009dcSAndroid Build Coastguard Worker	pxor	(%esp),%xmm2
1526*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,80(%esp)
1527*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm7
1528*8fb009dcSAndroid Build Coastguard Worker	movups	16(%ebp),%xmm1
1529*8fb009dcSAndroid Build Coastguard Worker	pxor	16(%esp),%xmm3
1530*8fb009dcSAndroid Build Coastguard Worker	pxor	32(%esp),%xmm4
1531*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,209
1532*8fb009dcSAndroid Build Coastguard Worker	pxor	48(%esp),%xmm5
1533*8fb009dcSAndroid Build Coastguard Worker	pxor	64(%esp),%xmm6
1534*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,217
1535*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm7
1536*8fb009dcSAndroid Build Coastguard Worker	movups	32(%ebp),%xmm0
1537*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,225
1538*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,233
1539*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,241
1540*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,249
1541*8fb009dcSAndroid Build Coastguard Worker	call	L_aesni_decrypt6_enter
1542*8fb009dcSAndroid Build Coastguard Worker	movdqa	80(%esp),%xmm1
1543*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1544*8fb009dcSAndroid Build Coastguard Worker	xorps	(%esp),%xmm2
1545*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1546*8fb009dcSAndroid Build Coastguard Worker	xorps	16(%esp),%xmm3
1547*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1548*8fb009dcSAndroid Build Coastguard Worker	xorps	32(%esp),%xmm4
1549*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
1550*8fb009dcSAndroid Build Coastguard Worker	xorps	48(%esp),%xmm5
1551*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
1552*8fb009dcSAndroid Build Coastguard Worker	xorps	64(%esp),%xmm6
1553*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm5,48(%edi)
1554*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm7
1555*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm6,64(%edi)
1556*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm2
1557*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm7,80(%edi)
1558*8fb009dcSAndroid Build Coastguard Worker	leal	96(%edi),%edi
1559*8fb009dcSAndroid Build Coastguard Worker	movdqa	96(%esp),%xmm3
1560*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1561*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1562*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm2
1563*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1564*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
1565*8fb009dcSAndroid Build Coastguard Worker	subl	$96,%eax
1566*8fb009dcSAndroid Build Coastguard Worker	jnc	L063xts_dec_loop6
1567*8fb009dcSAndroid Build Coastguard Worker	movl	240(%ebp),%ecx
1568*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,%edx
1569*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,%ebx
1570*8fb009dcSAndroid Build Coastguard WorkerL062xts_dec_short:
1571*8fb009dcSAndroid Build Coastguard Worker	addl	$96,%eax
1572*8fb009dcSAndroid Build Coastguard Worker	jz	L064xts_dec_done6x
1573*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,%xmm5
1574*8fb009dcSAndroid Build Coastguard Worker	cmpl	$32,%eax
1575*8fb009dcSAndroid Build Coastguard Worker	jb	L065xts_dec_one
1576*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm2
1577*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1578*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1579*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm2
1580*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1581*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
1582*8fb009dcSAndroid Build Coastguard Worker	je	L066xts_dec_two
1583*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm2
1584*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1585*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,%xmm6
1586*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1587*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm2
1588*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1589*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
1590*8fb009dcSAndroid Build Coastguard Worker	cmpl	$64,%eax
1591*8fb009dcSAndroid Build Coastguard Worker	jb	L067xts_dec_three
1592*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm2
1593*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1594*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,%xmm7
1595*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1596*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm2
1597*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1598*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
1599*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm5,(%esp)
1600*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,16(%esp)
1601*8fb009dcSAndroid Build Coastguard Worker	je	L068xts_dec_four
1602*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,32(%esp)
1603*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm7
1604*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,48(%esp)
1605*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1606*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm7
1607*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm7
1608*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%esi),%xmm2
1609*8fb009dcSAndroid Build Coastguard Worker	movdqu	16(%esi),%xmm3
1610*8fb009dcSAndroid Build Coastguard Worker	movdqu	32(%esi),%xmm4
1611*8fb009dcSAndroid Build Coastguard Worker	pxor	(%esp),%xmm2
1612*8fb009dcSAndroid Build Coastguard Worker	movdqu	48(%esi),%xmm5
1613*8fb009dcSAndroid Build Coastguard Worker	pxor	16(%esp),%xmm3
1614*8fb009dcSAndroid Build Coastguard Worker	movdqu	64(%esi),%xmm6
1615*8fb009dcSAndroid Build Coastguard Worker	pxor	32(%esp),%xmm4
1616*8fb009dcSAndroid Build Coastguard Worker	leal	80(%esi),%esi
1617*8fb009dcSAndroid Build Coastguard Worker	pxor	48(%esp),%xmm5
1618*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,64(%esp)
1619*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm7,%xmm6
1620*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_decrypt6
1621*8fb009dcSAndroid Build Coastguard Worker	movaps	64(%esp),%xmm1
1622*8fb009dcSAndroid Build Coastguard Worker	xorps	(%esp),%xmm2
1623*8fb009dcSAndroid Build Coastguard Worker	xorps	16(%esp),%xmm3
1624*8fb009dcSAndroid Build Coastguard Worker	xorps	32(%esp),%xmm4
1625*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1626*8fb009dcSAndroid Build Coastguard Worker	xorps	48(%esp),%xmm5
1627*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
1628*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm6
1629*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
1630*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm5,48(%edi)
1631*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm6,64(%edi)
1632*8fb009dcSAndroid Build Coastguard Worker	leal	80(%edi),%edi
1633*8fb009dcSAndroid Build Coastguard Worker	jmp	L069xts_dec_done
1634*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1635*8fb009dcSAndroid Build Coastguard WorkerL065xts_dec_one:
1636*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm2
1637*8fb009dcSAndroid Build Coastguard Worker	leal	16(%esi),%esi
1638*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm5,%xmm2
1639*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
1640*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
1641*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx),%edx
1642*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
1643*8fb009dcSAndroid Build Coastguard WorkerL070dec1_loop_12:
1644*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,209
1645*8fb009dcSAndroid Build Coastguard Worker	decl	%ecx
1646*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm1
1647*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
1648*8fb009dcSAndroid Build Coastguard Worker	jnz	L070dec1_loop_12
1649*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,209
1650*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm5,%xmm2
1651*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1652*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edi),%edi
1653*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm5,%xmm1
1654*8fb009dcSAndroid Build Coastguard Worker	jmp	L069xts_dec_done
1655*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1656*8fb009dcSAndroid Build Coastguard WorkerL066xts_dec_two:
1657*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm1,%xmm6
1658*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm2
1659*8fb009dcSAndroid Build Coastguard Worker	movups	16(%esi),%xmm3
1660*8fb009dcSAndroid Build Coastguard Worker	leal	32(%esi),%esi
1661*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm5,%xmm2
1662*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm3
1663*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_decrypt2
1664*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm5,%xmm2
1665*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm3
1666*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1667*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
1668*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edi),%edi
1669*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,%xmm1
1670*8fb009dcSAndroid Build Coastguard Worker	jmp	L069xts_dec_done
1671*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1672*8fb009dcSAndroid Build Coastguard WorkerL067xts_dec_three:
1673*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm1,%xmm7
1674*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm2
1675*8fb009dcSAndroid Build Coastguard Worker	movups	16(%esi),%xmm3
1676*8fb009dcSAndroid Build Coastguard Worker	movups	32(%esi),%xmm4
1677*8fb009dcSAndroid Build Coastguard Worker	leal	48(%esi),%esi
1678*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm5,%xmm2
1679*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm3
1680*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm7,%xmm4
1681*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_decrypt3
1682*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm5,%xmm2
1683*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm3
1684*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm7,%xmm4
1685*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1686*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
1687*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
1688*8fb009dcSAndroid Build Coastguard Worker	leal	48(%edi),%edi
1689*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,%xmm1
1690*8fb009dcSAndroid Build Coastguard Worker	jmp	L069xts_dec_done
1691*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1692*8fb009dcSAndroid Build Coastguard WorkerL068xts_dec_four:
1693*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm1,%xmm6
1694*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm2
1695*8fb009dcSAndroid Build Coastguard Worker	movups	16(%esi),%xmm3
1696*8fb009dcSAndroid Build Coastguard Worker	movups	32(%esi),%xmm4
1697*8fb009dcSAndroid Build Coastguard Worker	xorps	(%esp),%xmm2
1698*8fb009dcSAndroid Build Coastguard Worker	movups	48(%esi),%xmm5
1699*8fb009dcSAndroid Build Coastguard Worker	leal	64(%esi),%esi
1700*8fb009dcSAndroid Build Coastguard Worker	xorps	16(%esp),%xmm3
1701*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm7,%xmm4
1702*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm5
1703*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_decrypt4
1704*8fb009dcSAndroid Build Coastguard Worker	xorps	(%esp),%xmm2
1705*8fb009dcSAndroid Build Coastguard Worker	xorps	16(%esp),%xmm3
1706*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm7,%xmm4
1707*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1708*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm5
1709*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
1710*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
1711*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm5,48(%edi)
1712*8fb009dcSAndroid Build Coastguard Worker	leal	64(%edi),%edi
1713*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,%xmm1
1714*8fb009dcSAndroid Build Coastguard Worker	jmp	L069xts_dec_done
1715*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1716*8fb009dcSAndroid Build Coastguard WorkerL064xts_dec_done6x:
1717*8fb009dcSAndroid Build Coastguard Worker	movl	112(%esp),%eax
1718*8fb009dcSAndroid Build Coastguard Worker	andl	$15,%eax
1719*8fb009dcSAndroid Build Coastguard Worker	jz	L071xts_dec_ret
1720*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,112(%esp)
1721*8fb009dcSAndroid Build Coastguard Worker	jmp	L072xts_dec_only_one_more
1722*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1723*8fb009dcSAndroid Build Coastguard WorkerL069xts_dec_done:
1724*8fb009dcSAndroid Build Coastguard Worker	movl	112(%esp),%eax
1725*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1726*8fb009dcSAndroid Build Coastguard Worker	andl	$15,%eax
1727*8fb009dcSAndroid Build Coastguard Worker	jz	L071xts_dec_ret
1728*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1729*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,112(%esp)
1730*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm2
1731*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1732*8fb009dcSAndroid Build Coastguard Worker	movdqa	96(%esp),%xmm3
1733*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1734*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm2
1735*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm1,%xmm0
1736*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
1737*8fb009dcSAndroid Build Coastguard WorkerL072xts_dec_only_one_more:
1738*8fb009dcSAndroid Build Coastguard Worker	pshufd	$19,%xmm0,%xmm5
1739*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,%xmm6
1740*8fb009dcSAndroid Build Coastguard Worker	paddq	%xmm1,%xmm1
1741*8fb009dcSAndroid Build Coastguard Worker	pand	%xmm3,%xmm5
1742*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm5
1743*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,%edx
1744*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,%ecx
1745*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm2
1746*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm5,%xmm2
1747*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
1748*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
1749*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx),%edx
1750*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
1751*8fb009dcSAndroid Build Coastguard WorkerL073dec1_loop_13:
1752*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,209
1753*8fb009dcSAndroid Build Coastguard Worker	decl	%ecx
1754*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm1
1755*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
1756*8fb009dcSAndroid Build Coastguard Worker	jnz	L073dec1_loop_13
1757*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,209
1758*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm5,%xmm2
1759*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1760*8fb009dcSAndroid Build Coastguard WorkerL074xts_dec_steal:
1761*8fb009dcSAndroid Build Coastguard Worker	movzbl	16(%esi),%ecx
1762*8fb009dcSAndroid Build Coastguard Worker	movzbl	(%edi),%edx
1763*8fb009dcSAndroid Build Coastguard Worker	leal	1(%esi),%esi
1764*8fb009dcSAndroid Build Coastguard Worker	movb	%cl,(%edi)
1765*8fb009dcSAndroid Build Coastguard Worker	movb	%dl,16(%edi)
1766*8fb009dcSAndroid Build Coastguard Worker	leal	1(%edi),%edi
1767*8fb009dcSAndroid Build Coastguard Worker	subl	$1,%eax
1768*8fb009dcSAndroid Build Coastguard Worker	jnz	L074xts_dec_steal
1769*8fb009dcSAndroid Build Coastguard Worker	subl	112(%esp),%edi
1770*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,%edx
1771*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,%ecx
1772*8fb009dcSAndroid Build Coastguard Worker	movups	(%edi),%xmm2
1773*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm2
1774*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
1775*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
1776*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx),%edx
1777*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
1778*8fb009dcSAndroid Build Coastguard WorkerL075dec1_loop_14:
1779*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,209
1780*8fb009dcSAndroid Build Coastguard Worker	decl	%ecx
1781*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm1
1782*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
1783*8fb009dcSAndroid Build Coastguard Worker	jnz	L075dec1_loop_14
1784*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,209
1785*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm2
1786*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1787*8fb009dcSAndroid Build Coastguard WorkerL071xts_dec_ret:
1788*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
1789*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm1
1790*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm2
1791*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,(%esp)
1792*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm3
1793*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,16(%esp)
1794*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm4
1795*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,32(%esp)
1796*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm5
1797*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,48(%esp)
1798*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm6,%xmm6
1799*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,64(%esp)
1800*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm7,%xmm7
1801*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,80(%esp)
1802*8fb009dcSAndroid Build Coastguard Worker	movl	116(%esp),%esp
1803*8fb009dcSAndroid Build Coastguard Worker	popl	%edi
1804*8fb009dcSAndroid Build Coastguard Worker	popl	%esi
1805*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
1806*8fb009dcSAndroid Build Coastguard Worker	popl	%ebp
1807*8fb009dcSAndroid Build Coastguard Worker	ret
1808*8fb009dcSAndroid Build Coastguard Worker.globl	_aes_hw_cbc_encrypt
1809*8fb009dcSAndroid Build Coastguard Worker.private_extern	_aes_hw_cbc_encrypt
1810*8fb009dcSAndroid Build Coastguard Worker.align	4
1811*8fb009dcSAndroid Build Coastguard Worker_aes_hw_cbc_encrypt:
1812*8fb009dcSAndroid Build Coastguard WorkerL_aes_hw_cbc_encrypt_begin:
1813*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebp
1814*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
1815*8fb009dcSAndroid Build Coastguard Worker	pushl	%esi
1816*8fb009dcSAndroid Build Coastguard Worker	pushl	%edi
1817*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%esi
1818*8fb009dcSAndroid Build Coastguard Worker	movl	%esp,%ebx
1819*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esp),%edi
1820*8fb009dcSAndroid Build Coastguard Worker	subl	$24,%ebx
1821*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esp),%eax
1822*8fb009dcSAndroid Build Coastguard Worker	andl	$-16,%ebx
1823*8fb009dcSAndroid Build Coastguard Worker	movl	32(%esp),%edx
1824*8fb009dcSAndroid Build Coastguard Worker	movl	36(%esp),%ebp
1825*8fb009dcSAndroid Build Coastguard Worker	testl	%eax,%eax
1826*8fb009dcSAndroid Build Coastguard Worker	jz	L076cbc_abort
1827*8fb009dcSAndroid Build Coastguard Worker	cmpl	$0,40(%esp)
1828*8fb009dcSAndroid Build Coastguard Worker	xchgl	%esp,%ebx
1829*8fb009dcSAndroid Build Coastguard Worker	movups	(%ebp),%xmm7
1830*8fb009dcSAndroid Build Coastguard Worker	movl	240(%edx),%ecx
1831*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,%ebp
1832*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,16(%esp)
1833*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,%ebx
1834*8fb009dcSAndroid Build Coastguard Worker	je	L077cbc_decrypt
1835*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm7,%xmm2
1836*8fb009dcSAndroid Build Coastguard Worker	cmpl	$16,%eax
1837*8fb009dcSAndroid Build Coastguard Worker	jb	L078cbc_enc_tail
1838*8fb009dcSAndroid Build Coastguard Worker	subl	$16,%eax
1839*8fb009dcSAndroid Build Coastguard Worker	jmp	L079cbc_enc_loop
1840*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1841*8fb009dcSAndroid Build Coastguard WorkerL079cbc_enc_loop:
1842*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm7
1843*8fb009dcSAndroid Build Coastguard Worker	leal	16(%esi),%esi
1844*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
1845*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
1846*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm7
1847*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx),%edx
1848*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm7,%xmm2
1849*8fb009dcSAndroid Build Coastguard WorkerL080enc1_loop_15:
1850*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,220,209
1851*8fb009dcSAndroid Build Coastguard Worker	decl	%ecx
1852*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm1
1853*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
1854*8fb009dcSAndroid Build Coastguard Worker	jnz	L080enc1_loop_15
1855*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,209
1856*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,%ecx
1857*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,%edx
1858*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1859*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edi),%edi
1860*8fb009dcSAndroid Build Coastguard Worker	subl	$16,%eax
1861*8fb009dcSAndroid Build Coastguard Worker	jnc	L079cbc_enc_loop
1862*8fb009dcSAndroid Build Coastguard Worker	addl	$16,%eax
1863*8fb009dcSAndroid Build Coastguard Worker	jnz	L078cbc_enc_tail
1864*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm2,%xmm7
1865*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm2
1866*8fb009dcSAndroid Build Coastguard Worker	jmp	L081cbc_ret
1867*8fb009dcSAndroid Build Coastguard WorkerL078cbc_enc_tail:
1868*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,%ecx
1869*8fb009dcSAndroid Build Coastguard Worker.long	2767451785
1870*8fb009dcSAndroid Build Coastguard Worker	movl	$16,%ecx
1871*8fb009dcSAndroid Build Coastguard Worker	subl	%eax,%ecx
1872*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%eax
1873*8fb009dcSAndroid Build Coastguard Worker.long	2868115081
1874*8fb009dcSAndroid Build Coastguard Worker	leal	-16(%edi),%edi
1875*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,%ecx
1876*8fb009dcSAndroid Build Coastguard Worker	movl	%edi,%esi
1877*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,%edx
1878*8fb009dcSAndroid Build Coastguard Worker	jmp	L079cbc_enc_loop
1879*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1880*8fb009dcSAndroid Build Coastguard WorkerL077cbc_decrypt:
1881*8fb009dcSAndroid Build Coastguard Worker	cmpl	$80,%eax
1882*8fb009dcSAndroid Build Coastguard Worker	jbe	L082cbc_dec_tail
1883*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm7,(%esp)
1884*8fb009dcSAndroid Build Coastguard Worker	subl	$80,%eax
1885*8fb009dcSAndroid Build Coastguard Worker	jmp	L083cbc_dec_loop6_enter
1886*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1887*8fb009dcSAndroid Build Coastguard WorkerL084cbc_dec_loop6:
1888*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm0,(%esp)
1889*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm7,(%edi)
1890*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edi),%edi
1891*8fb009dcSAndroid Build Coastguard WorkerL083cbc_dec_loop6_enter:
1892*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%esi),%xmm2
1893*8fb009dcSAndroid Build Coastguard Worker	movdqu	16(%esi),%xmm3
1894*8fb009dcSAndroid Build Coastguard Worker	movdqu	32(%esi),%xmm4
1895*8fb009dcSAndroid Build Coastguard Worker	movdqu	48(%esi),%xmm5
1896*8fb009dcSAndroid Build Coastguard Worker	movdqu	64(%esi),%xmm6
1897*8fb009dcSAndroid Build Coastguard Worker	movdqu	80(%esi),%xmm7
1898*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_decrypt6
1899*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm1
1900*8fb009dcSAndroid Build Coastguard Worker	movups	16(%esi),%xmm0
1901*8fb009dcSAndroid Build Coastguard Worker	xorps	(%esp),%xmm2
1902*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm3
1903*8fb009dcSAndroid Build Coastguard Worker	movups	32(%esi),%xmm1
1904*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm4
1905*8fb009dcSAndroid Build Coastguard Worker	movups	48(%esi),%xmm0
1906*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm5
1907*8fb009dcSAndroid Build Coastguard Worker	movups	64(%esi),%xmm1
1908*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm6
1909*8fb009dcSAndroid Build Coastguard Worker	movups	80(%esi),%xmm0
1910*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm7
1911*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1912*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
1913*8fb009dcSAndroid Build Coastguard Worker	leal	96(%esi),%esi
1914*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
1915*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,%ecx
1916*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm5,48(%edi)
1917*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,%edx
1918*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm6,64(%edi)
1919*8fb009dcSAndroid Build Coastguard Worker	leal	80(%edi),%edi
1920*8fb009dcSAndroid Build Coastguard Worker	subl	$96,%eax
1921*8fb009dcSAndroid Build Coastguard Worker	ja	L084cbc_dec_loop6
1922*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm7,%xmm2
1923*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm0,%xmm7
1924*8fb009dcSAndroid Build Coastguard Worker	addl	$80,%eax
1925*8fb009dcSAndroid Build Coastguard Worker	jle	L085cbc_dec_clear_tail_collected
1926*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1927*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edi),%edi
1928*8fb009dcSAndroid Build Coastguard WorkerL082cbc_dec_tail:
1929*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm2
1930*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm2,%xmm6
1931*8fb009dcSAndroid Build Coastguard Worker	cmpl	$16,%eax
1932*8fb009dcSAndroid Build Coastguard Worker	jbe	L086cbc_dec_one
1933*8fb009dcSAndroid Build Coastguard Worker	movups	16(%esi),%xmm3
1934*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm3,%xmm5
1935*8fb009dcSAndroid Build Coastguard Worker	cmpl	$32,%eax
1936*8fb009dcSAndroid Build Coastguard Worker	jbe	L087cbc_dec_two
1937*8fb009dcSAndroid Build Coastguard Worker	movups	32(%esi),%xmm4
1938*8fb009dcSAndroid Build Coastguard Worker	cmpl	$48,%eax
1939*8fb009dcSAndroid Build Coastguard Worker	jbe	L088cbc_dec_three
1940*8fb009dcSAndroid Build Coastguard Worker	movups	48(%esi),%xmm5
1941*8fb009dcSAndroid Build Coastguard Worker	cmpl	$64,%eax
1942*8fb009dcSAndroid Build Coastguard Worker	jbe	L089cbc_dec_four
1943*8fb009dcSAndroid Build Coastguard Worker	movups	64(%esi),%xmm6
1944*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm7,(%esp)
1945*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm2
1946*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm7,%xmm7
1947*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_decrypt6
1948*8fb009dcSAndroid Build Coastguard Worker	movups	(%esi),%xmm1
1949*8fb009dcSAndroid Build Coastguard Worker	movups	16(%esi),%xmm0
1950*8fb009dcSAndroid Build Coastguard Worker	xorps	(%esp),%xmm2
1951*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm3
1952*8fb009dcSAndroid Build Coastguard Worker	movups	32(%esi),%xmm1
1953*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm4
1954*8fb009dcSAndroid Build Coastguard Worker	movups	48(%esi),%xmm0
1955*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm5
1956*8fb009dcSAndroid Build Coastguard Worker	movups	64(%esi),%xmm7
1957*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm6
1958*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1959*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
1960*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm3
1961*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
1962*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm4
1963*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm5,48(%edi)
1964*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm5
1965*8fb009dcSAndroid Build Coastguard Worker	leal	64(%edi),%edi
1966*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm6,%xmm2
1967*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm6,%xmm6
1968*8fb009dcSAndroid Build Coastguard Worker	subl	$80,%eax
1969*8fb009dcSAndroid Build Coastguard Worker	jmp	L090cbc_dec_tail_collected
1970*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1971*8fb009dcSAndroid Build Coastguard WorkerL086cbc_dec_one:
1972*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
1973*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm1
1974*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx),%edx
1975*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm2
1976*8fb009dcSAndroid Build Coastguard WorkerL091dec1_loop_16:
1977*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,222,209
1978*8fb009dcSAndroid Build Coastguard Worker	decl	%ecx
1979*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm1
1980*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
1981*8fb009dcSAndroid Build Coastguard Worker	jnz	L091dec1_loop_16
1982*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,223,209
1983*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm7,%xmm2
1984*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm6,%xmm7
1985*8fb009dcSAndroid Build Coastguard Worker	subl	$16,%eax
1986*8fb009dcSAndroid Build Coastguard Worker	jmp	L090cbc_dec_tail_collected
1987*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
1988*8fb009dcSAndroid Build Coastguard WorkerL087cbc_dec_two:
1989*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_decrypt2
1990*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm7,%xmm2
1991*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm3
1992*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
1993*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm3,%xmm2
1994*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm3
1995*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edi),%edi
1996*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm5,%xmm7
1997*8fb009dcSAndroid Build Coastguard Worker	subl	$32,%eax
1998*8fb009dcSAndroid Build Coastguard Worker	jmp	L090cbc_dec_tail_collected
1999*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
2000*8fb009dcSAndroid Build Coastguard WorkerL088cbc_dec_three:
2001*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_decrypt3
2002*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm7,%xmm2
2003*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm3
2004*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm5,%xmm4
2005*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
2006*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm4,%xmm2
2007*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm4
2008*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
2009*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm3
2010*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edi),%edi
2011*8fb009dcSAndroid Build Coastguard Worker	movups	32(%esi),%xmm7
2012*8fb009dcSAndroid Build Coastguard Worker	subl	$48,%eax
2013*8fb009dcSAndroid Build Coastguard Worker	jmp	L090cbc_dec_tail_collected
2014*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
2015*8fb009dcSAndroid Build Coastguard WorkerL089cbc_dec_four:
2016*8fb009dcSAndroid Build Coastguard Worker	call	__aesni_decrypt4
2017*8fb009dcSAndroid Build Coastguard Worker	movups	16(%esi),%xmm1
2018*8fb009dcSAndroid Build Coastguard Worker	movups	32(%esi),%xmm0
2019*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm7,%xmm2
2020*8fb009dcSAndroid Build Coastguard Worker	movups	48(%esi),%xmm7
2021*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm3
2022*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
2023*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm4
2024*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edi)
2025*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm3
2026*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm5
2027*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm4,32(%edi)
2028*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm4
2029*8fb009dcSAndroid Build Coastguard Worker	leal	48(%edi),%edi
2030*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm5,%xmm2
2031*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm5
2032*8fb009dcSAndroid Build Coastguard Worker	subl	$64,%eax
2033*8fb009dcSAndroid Build Coastguard Worker	jmp	L090cbc_dec_tail_collected
2034*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
2035*8fb009dcSAndroid Build Coastguard WorkerL085cbc_dec_clear_tail_collected:
2036*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm3
2037*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm4
2038*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm5
2039*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm6,%xmm6
2040*8fb009dcSAndroid Build Coastguard WorkerL090cbc_dec_tail_collected:
2041*8fb009dcSAndroid Build Coastguard Worker	andl	$15,%eax
2042*8fb009dcSAndroid Build Coastguard Worker	jnz	L092cbc_dec_tail_partial
2043*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edi)
2044*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
2045*8fb009dcSAndroid Build Coastguard Worker	jmp	L081cbc_ret
2046*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
2047*8fb009dcSAndroid Build Coastguard WorkerL092cbc_dec_tail_partial:
2048*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm2,(%esp)
2049*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
2050*8fb009dcSAndroid Build Coastguard Worker	movl	$16,%ecx
2051*8fb009dcSAndroid Build Coastguard Worker	movl	%esp,%esi
2052*8fb009dcSAndroid Build Coastguard Worker	subl	%eax,%ecx
2053*8fb009dcSAndroid Build Coastguard Worker.long	2767451785
2054*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,(%esp)
2055*8fb009dcSAndroid Build Coastguard WorkerL081cbc_ret:
2056*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esp),%esp
2057*8fb009dcSAndroid Build Coastguard Worker	movl	36(%esp),%ebp
2058*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm2
2059*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm1
2060*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm7,(%ebp)
2061*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm7,%xmm7
2062*8fb009dcSAndroid Build Coastguard WorkerL076cbc_abort:
2063*8fb009dcSAndroid Build Coastguard Worker	popl	%edi
2064*8fb009dcSAndroid Build Coastguard Worker	popl	%esi
2065*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
2066*8fb009dcSAndroid Build Coastguard Worker	popl	%ebp
2067*8fb009dcSAndroid Build Coastguard Worker	ret
2068*8fb009dcSAndroid Build Coastguard Worker.globl	_aes_hw_set_encrypt_key_base
2069*8fb009dcSAndroid Build Coastguard Worker.private_extern	_aes_hw_set_encrypt_key_base
2070*8fb009dcSAndroid Build Coastguard Worker.align	4
2071*8fb009dcSAndroid Build Coastguard Worker_aes_hw_set_encrypt_key_base:
2072*8fb009dcSAndroid Build Coastguard WorkerL_aes_hw_set_encrypt_key_base_begin:
2073*8fb009dcSAndroid Build Coastguard Worker#ifdef BORINGSSL_DISPATCH_TEST
2074*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
2075*8fb009dcSAndroid Build Coastguard Worker	pushl	%edx
2076*8fb009dcSAndroid Build Coastguard Worker	call	L093pic_for_function_hit
2077*8fb009dcSAndroid Build Coastguard WorkerL093pic_for_function_hit:
2078*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
2079*8fb009dcSAndroid Build Coastguard Worker	leal	_BORINGSSL_function_hit+3-L093pic_for_function_hit(%ebx),%ebx
2080*8fb009dcSAndroid Build Coastguard Worker	movl	$1,%edx
2081*8fb009dcSAndroid Build Coastguard Worker	movb	%dl,(%ebx)
2082*8fb009dcSAndroid Build Coastguard Worker	popl	%edx
2083*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
2084*8fb009dcSAndroid Build Coastguard Worker#endif
2085*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esp),%eax
2086*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esp),%ecx
2087*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esp),%edx
2088*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
2089*8fb009dcSAndroid Build Coastguard Worker	call	L094pic
2090*8fb009dcSAndroid Build Coastguard WorkerL094pic:
2091*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
2092*8fb009dcSAndroid Build Coastguard Worker	leal	Lkey_const-L094pic(%ebx),%ebx
2093*8fb009dcSAndroid Build Coastguard Worker	movups	(%eax),%xmm0
2094*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm4,%xmm4
2095*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
2096*8fb009dcSAndroid Build Coastguard Worker	cmpl	$256,%ecx
2097*8fb009dcSAndroid Build Coastguard Worker	je	L09514rounds
2098*8fb009dcSAndroid Build Coastguard Worker	cmpl	$192,%ecx
2099*8fb009dcSAndroid Build Coastguard Worker	je	L09612rounds
2100*8fb009dcSAndroid Build Coastguard Worker	cmpl	$128,%ecx
2101*8fb009dcSAndroid Build Coastguard Worker	jne	L097bad_keybits
2102*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
2103*8fb009dcSAndroid Build Coastguard WorkerL09810rounds:
2104*8fb009dcSAndroid Build Coastguard Worker	movl	$9,%ecx
2105*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm0,-16(%edx)
2106*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,200,1
2107*8fb009dcSAndroid Build Coastguard Worker	call	L099key_128_cold
2108*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,200,2
2109*8fb009dcSAndroid Build Coastguard Worker	call	L100key_128
2110*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,200,4
2111*8fb009dcSAndroid Build Coastguard Worker	call	L100key_128
2112*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,200,8
2113*8fb009dcSAndroid Build Coastguard Worker	call	L100key_128
2114*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,200,16
2115*8fb009dcSAndroid Build Coastguard Worker	call	L100key_128
2116*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,200,32
2117*8fb009dcSAndroid Build Coastguard Worker	call	L100key_128
2118*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,200,64
2119*8fb009dcSAndroid Build Coastguard Worker	call	L100key_128
2120*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,200,128
2121*8fb009dcSAndroid Build Coastguard Worker	call	L100key_128
2122*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,200,27
2123*8fb009dcSAndroid Build Coastguard Worker	call	L100key_128
2124*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,200,54
2125*8fb009dcSAndroid Build Coastguard Worker	call	L100key_128
2126*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm0,(%edx)
2127*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,80(%edx)
2128*8fb009dcSAndroid Build Coastguard Worker	jmp	L101good_key
2129*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
2130*8fb009dcSAndroid Build Coastguard WorkerL100key_128:
2131*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm0,(%edx)
2132*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
2133*8fb009dcSAndroid Build Coastguard WorkerL099key_128_cold:
2134*8fb009dcSAndroid Build Coastguard Worker	shufps	$16,%xmm0,%xmm4
2135*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm4,%xmm0
2136*8fb009dcSAndroid Build Coastguard Worker	shufps	$140,%xmm0,%xmm4
2137*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm4,%xmm0
2138*8fb009dcSAndroid Build Coastguard Worker	shufps	$255,%xmm1,%xmm1
2139*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm0
2140*8fb009dcSAndroid Build Coastguard Worker	ret
2141*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
2142*8fb009dcSAndroid Build Coastguard WorkerL09612rounds:
2143*8fb009dcSAndroid Build Coastguard Worker	movq	16(%eax),%xmm2
2144*8fb009dcSAndroid Build Coastguard Worker	movl	$11,%ecx
2145*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm0,-16(%edx)
2146*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,202,1
2147*8fb009dcSAndroid Build Coastguard Worker	call	L102key_192a_cold
2148*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,202,2
2149*8fb009dcSAndroid Build Coastguard Worker	call	L103key_192b
2150*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,202,4
2151*8fb009dcSAndroid Build Coastguard Worker	call	L104key_192a
2152*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,202,8
2153*8fb009dcSAndroid Build Coastguard Worker	call	L103key_192b
2154*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,202,16
2155*8fb009dcSAndroid Build Coastguard Worker	call	L104key_192a
2156*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,202,32
2157*8fb009dcSAndroid Build Coastguard Worker	call	L103key_192b
2158*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,202,64
2159*8fb009dcSAndroid Build Coastguard Worker	call	L104key_192a
2160*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,202,128
2161*8fb009dcSAndroid Build Coastguard Worker	call	L103key_192b
2162*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm0,(%edx)
2163*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,48(%edx)
2164*8fb009dcSAndroid Build Coastguard Worker	jmp	L101good_key
2165*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
2166*8fb009dcSAndroid Build Coastguard WorkerL104key_192a:
2167*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm0,(%edx)
2168*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
2169*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
2170*8fb009dcSAndroid Build Coastguard WorkerL102key_192a_cold:
2171*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm2,%xmm5
2172*8fb009dcSAndroid Build Coastguard WorkerL105key_192b_warm:
2173*8fb009dcSAndroid Build Coastguard Worker	shufps	$16,%xmm0,%xmm4
2174*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm3
2175*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm4,%xmm0
2176*8fb009dcSAndroid Build Coastguard Worker	shufps	$140,%xmm0,%xmm4
2177*8fb009dcSAndroid Build Coastguard Worker	pslldq	$4,%xmm3
2178*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm4,%xmm0
2179*8fb009dcSAndroid Build Coastguard Worker	pshufd	$85,%xmm1,%xmm1
2180*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm2
2181*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm0
2182*8fb009dcSAndroid Build Coastguard Worker	pshufd	$255,%xmm0,%xmm3
2183*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm2
2184*8fb009dcSAndroid Build Coastguard Worker	ret
2185*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
2186*8fb009dcSAndroid Build Coastguard WorkerL103key_192b:
2187*8fb009dcSAndroid Build Coastguard Worker	movaps	%xmm0,%xmm3
2188*8fb009dcSAndroid Build Coastguard Worker	shufps	$68,%xmm0,%xmm5
2189*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm5,(%edx)
2190*8fb009dcSAndroid Build Coastguard Worker	shufps	$78,%xmm2,%xmm3
2191*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm3,16(%edx)
2192*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx),%edx
2193*8fb009dcSAndroid Build Coastguard Worker	jmp	L105key_192b_warm
2194*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
2195*8fb009dcSAndroid Build Coastguard WorkerL09514rounds:
2196*8fb009dcSAndroid Build Coastguard Worker	movups	16(%eax),%xmm2
2197*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
2198*8fb009dcSAndroid Build Coastguard Worker	movl	$13,%ecx
2199*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm0,-32(%edx)
2200*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,-16(%edx)
2201*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,202,1
2202*8fb009dcSAndroid Build Coastguard Worker	call	L106key_256a_cold
2203*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,200,1
2204*8fb009dcSAndroid Build Coastguard Worker	call	L107key_256b
2205*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,202,2
2206*8fb009dcSAndroid Build Coastguard Worker	call	L108key_256a
2207*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,200,2
2208*8fb009dcSAndroid Build Coastguard Worker	call	L107key_256b
2209*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,202,4
2210*8fb009dcSAndroid Build Coastguard Worker	call	L108key_256a
2211*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,200,4
2212*8fb009dcSAndroid Build Coastguard Worker	call	L107key_256b
2213*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,202,8
2214*8fb009dcSAndroid Build Coastguard Worker	call	L108key_256a
2215*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,200,8
2216*8fb009dcSAndroid Build Coastguard Worker	call	L107key_256b
2217*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,202,16
2218*8fb009dcSAndroid Build Coastguard Worker	call	L108key_256a
2219*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,200,16
2220*8fb009dcSAndroid Build Coastguard Worker	call	L107key_256b
2221*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,202,32
2222*8fb009dcSAndroid Build Coastguard Worker	call	L108key_256a
2223*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,200,32
2224*8fb009dcSAndroid Build Coastguard Worker	call	L107key_256b
2225*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,223,202,64
2226*8fb009dcSAndroid Build Coastguard Worker	call	L108key_256a
2227*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm0,(%edx)
2228*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,16(%edx)
2229*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%eax
2230*8fb009dcSAndroid Build Coastguard Worker	jmp	L101good_key
2231*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
2232*8fb009dcSAndroid Build Coastguard WorkerL108key_256a:
2233*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm2,(%edx)
2234*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
2235*8fb009dcSAndroid Build Coastguard WorkerL106key_256a_cold:
2236*8fb009dcSAndroid Build Coastguard Worker	shufps	$16,%xmm0,%xmm4
2237*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm4,%xmm0
2238*8fb009dcSAndroid Build Coastguard Worker	shufps	$140,%xmm0,%xmm4
2239*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm4,%xmm0
2240*8fb009dcSAndroid Build Coastguard Worker	shufps	$255,%xmm1,%xmm1
2241*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm0
2242*8fb009dcSAndroid Build Coastguard Worker	ret
2243*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
2244*8fb009dcSAndroid Build Coastguard WorkerL107key_256b:
2245*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm0,(%edx)
2246*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
2247*8fb009dcSAndroid Build Coastguard Worker	shufps	$16,%xmm2,%xmm4
2248*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm4,%xmm2
2249*8fb009dcSAndroid Build Coastguard Worker	shufps	$140,%xmm2,%xmm4
2250*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm4,%xmm2
2251*8fb009dcSAndroid Build Coastguard Worker	shufps	$170,%xmm1,%xmm1
2252*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm2
2253*8fb009dcSAndroid Build Coastguard Worker	ret
2254*8fb009dcSAndroid Build Coastguard WorkerL101good_key:
2255*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
2256*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm1
2257*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm2
2258*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm3
2259*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm4
2260*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm5
2261*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%eax
2262*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
2263*8fb009dcSAndroid Build Coastguard Worker	ret
2264*8fb009dcSAndroid Build Coastguard Worker.align	2,0x90
2265*8fb009dcSAndroid Build Coastguard WorkerL097bad_keybits:
2266*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
2267*8fb009dcSAndroid Build Coastguard Worker	movl	$-2,%eax
2268*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
2269*8fb009dcSAndroid Build Coastguard Worker	ret
2270*8fb009dcSAndroid Build Coastguard Worker.globl	_aes_hw_set_encrypt_key_alt
2271*8fb009dcSAndroid Build Coastguard Worker.private_extern	_aes_hw_set_encrypt_key_alt
2272*8fb009dcSAndroid Build Coastguard Worker.align	4
2273*8fb009dcSAndroid Build Coastguard Worker_aes_hw_set_encrypt_key_alt:
2274*8fb009dcSAndroid Build Coastguard WorkerL_aes_hw_set_encrypt_key_alt_begin:
2275*8fb009dcSAndroid Build Coastguard Worker#ifdef BORINGSSL_DISPATCH_TEST
2276*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
2277*8fb009dcSAndroid Build Coastguard Worker	pushl	%edx
2278*8fb009dcSAndroid Build Coastguard Worker	call	L109pic_for_function_hit
2279*8fb009dcSAndroid Build Coastguard WorkerL109pic_for_function_hit:
2280*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
2281*8fb009dcSAndroid Build Coastguard Worker	leal	_BORINGSSL_function_hit+3-L109pic_for_function_hit(%ebx),%ebx
2282*8fb009dcSAndroid Build Coastguard Worker	movl	$1,%edx
2283*8fb009dcSAndroid Build Coastguard Worker	movb	%dl,(%ebx)
2284*8fb009dcSAndroid Build Coastguard Worker	popl	%edx
2285*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
2286*8fb009dcSAndroid Build Coastguard Worker#endif
2287*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esp),%eax
2288*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esp),%ecx
2289*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esp),%edx
2290*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
2291*8fb009dcSAndroid Build Coastguard Worker	call	L110pic
2292*8fb009dcSAndroid Build Coastguard WorkerL110pic:
2293*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
2294*8fb009dcSAndroid Build Coastguard Worker	leal	Lkey_const-L110pic(%ebx),%ebx
2295*8fb009dcSAndroid Build Coastguard Worker	movups	(%eax),%xmm0
2296*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm4,%xmm4
2297*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
2298*8fb009dcSAndroid Build Coastguard Worker	cmpl	$256,%ecx
2299*8fb009dcSAndroid Build Coastguard Worker	je	L11114rounds_alt
2300*8fb009dcSAndroid Build Coastguard Worker	cmpl	$192,%ecx
2301*8fb009dcSAndroid Build Coastguard Worker	je	L11212rounds_alt
2302*8fb009dcSAndroid Build Coastguard Worker	cmpl	$128,%ecx
2303*8fb009dcSAndroid Build Coastguard Worker	jne	L113bad_keybits
2304*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
2305*8fb009dcSAndroid Build Coastguard WorkerL11410rounds_alt:
2306*8fb009dcSAndroid Build Coastguard Worker	movdqa	(%ebx),%xmm5
2307*8fb009dcSAndroid Build Coastguard Worker	movl	$8,%ecx
2308*8fb009dcSAndroid Build Coastguard Worker	movdqa	32(%ebx),%xmm4
2309*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm2
2310*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm0,-16(%edx)
2311*8fb009dcSAndroid Build Coastguard WorkerL115loop_key128:
2312*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,197
2313*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,196
2314*8fb009dcSAndroid Build Coastguard Worker	pslld	$1,%xmm4
2315*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
2316*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm3
2317*8fb009dcSAndroid Build Coastguard Worker	pslldq	$4,%xmm2
2318*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm3
2319*8fb009dcSAndroid Build Coastguard Worker	pslldq	$4,%xmm2
2320*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm3
2321*8fb009dcSAndroid Build Coastguard Worker	pslldq	$4,%xmm2
2322*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm2
2323*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm0
2324*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm0,-16(%edx)
2325*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm2
2326*8fb009dcSAndroid Build Coastguard Worker	decl	%ecx
2327*8fb009dcSAndroid Build Coastguard Worker	jnz	L115loop_key128
2328*8fb009dcSAndroid Build Coastguard Worker	movdqa	48(%ebx),%xmm4
2329*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,197
2330*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,196
2331*8fb009dcSAndroid Build Coastguard Worker	pslld	$1,%xmm4
2332*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm3
2333*8fb009dcSAndroid Build Coastguard Worker	pslldq	$4,%xmm2
2334*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm3
2335*8fb009dcSAndroid Build Coastguard Worker	pslldq	$4,%xmm2
2336*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm3
2337*8fb009dcSAndroid Build Coastguard Worker	pslldq	$4,%xmm2
2338*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm2
2339*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm0
2340*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm0,(%edx)
2341*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm2
2342*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,197
2343*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,196
2344*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm3
2345*8fb009dcSAndroid Build Coastguard Worker	pslldq	$4,%xmm2
2346*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm3
2347*8fb009dcSAndroid Build Coastguard Worker	pslldq	$4,%xmm2
2348*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm3
2349*8fb009dcSAndroid Build Coastguard Worker	pslldq	$4,%xmm2
2350*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm2
2351*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm0
2352*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm0,16(%edx)
2353*8fb009dcSAndroid Build Coastguard Worker	movl	$9,%ecx
2354*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,96(%edx)
2355*8fb009dcSAndroid Build Coastguard Worker	jmp	L116good_key
2356*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
2357*8fb009dcSAndroid Build Coastguard WorkerL11212rounds_alt:
2358*8fb009dcSAndroid Build Coastguard Worker	movq	16(%eax),%xmm2
2359*8fb009dcSAndroid Build Coastguard Worker	movdqa	16(%ebx),%xmm5
2360*8fb009dcSAndroid Build Coastguard Worker	movdqa	32(%ebx),%xmm4
2361*8fb009dcSAndroid Build Coastguard Worker	movl	$8,%ecx
2362*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm0,-16(%edx)
2363*8fb009dcSAndroid Build Coastguard WorkerL117loop_key192:
2364*8fb009dcSAndroid Build Coastguard Worker	movq	%xmm2,(%edx)
2365*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm1
2366*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,213
2367*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,212
2368*8fb009dcSAndroid Build Coastguard Worker	pslld	$1,%xmm4
2369*8fb009dcSAndroid Build Coastguard Worker	leal	24(%edx),%edx
2370*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm3
2371*8fb009dcSAndroid Build Coastguard Worker	pslldq	$4,%xmm0
2372*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
2373*8fb009dcSAndroid Build Coastguard Worker	pslldq	$4,%xmm0
2374*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
2375*8fb009dcSAndroid Build Coastguard Worker	pslldq	$4,%xmm0
2376*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm0
2377*8fb009dcSAndroid Build Coastguard Worker	pshufd	$255,%xmm0,%xmm3
2378*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm3
2379*8fb009dcSAndroid Build Coastguard Worker	pslldq	$4,%xmm1
2380*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm3
2381*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm0
2382*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm2
2383*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm0,-16(%edx)
2384*8fb009dcSAndroid Build Coastguard Worker	decl	%ecx
2385*8fb009dcSAndroid Build Coastguard Worker	jnz	L117loop_key192
2386*8fb009dcSAndroid Build Coastguard Worker	movl	$11,%ecx
2387*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,32(%edx)
2388*8fb009dcSAndroid Build Coastguard Worker	jmp	L116good_key
2389*8fb009dcSAndroid Build Coastguard Worker.align	4,0x90
2390*8fb009dcSAndroid Build Coastguard WorkerL11114rounds_alt:
2391*8fb009dcSAndroid Build Coastguard Worker	movups	16(%eax),%xmm2
2392*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
2393*8fb009dcSAndroid Build Coastguard Worker	movdqa	(%ebx),%xmm5
2394*8fb009dcSAndroid Build Coastguard Worker	movdqa	32(%ebx),%xmm4
2395*8fb009dcSAndroid Build Coastguard Worker	movl	$7,%ecx
2396*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm0,-32(%edx)
2397*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm1
2398*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm2,-16(%edx)
2399*8fb009dcSAndroid Build Coastguard WorkerL118loop_key256:
2400*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,213
2401*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,212
2402*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm3
2403*8fb009dcSAndroid Build Coastguard Worker	pslldq	$4,%xmm0
2404*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
2405*8fb009dcSAndroid Build Coastguard Worker	pslldq	$4,%xmm0
2406*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
2407*8fb009dcSAndroid Build Coastguard Worker	pslldq	$4,%xmm0
2408*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm0
2409*8fb009dcSAndroid Build Coastguard Worker	pslld	$1,%xmm4
2410*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm0
2411*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm0,(%edx)
2412*8fb009dcSAndroid Build Coastguard Worker	decl	%ecx
2413*8fb009dcSAndroid Build Coastguard Worker	jz	L119done_key256
2414*8fb009dcSAndroid Build Coastguard Worker	pshufd	$255,%xmm0,%xmm2
2415*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm3
2416*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,221,211
2417*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,%xmm3
2418*8fb009dcSAndroid Build Coastguard Worker	pslldq	$4,%xmm1
2419*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm3
2420*8fb009dcSAndroid Build Coastguard Worker	pslldq	$4,%xmm1
2421*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm3
2422*8fb009dcSAndroid Build Coastguard Worker	pslldq	$4,%xmm1
2423*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm1
2424*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm2
2425*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm2,16(%edx)
2426*8fb009dcSAndroid Build Coastguard Worker	leal	32(%edx),%edx
2427*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm1
2428*8fb009dcSAndroid Build Coastguard Worker	jmp	L118loop_key256
2429*8fb009dcSAndroid Build Coastguard WorkerL119done_key256:
2430*8fb009dcSAndroid Build Coastguard Worker	movl	$13,%ecx
2431*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,16(%edx)
2432*8fb009dcSAndroid Build Coastguard WorkerL116good_key:
2433*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
2434*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm1
2435*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm2
2436*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm3
2437*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm4
2438*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm5
2439*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%eax
2440*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
2441*8fb009dcSAndroid Build Coastguard Worker	ret
2442*8fb009dcSAndroid Build Coastguard Worker.align	2,0x90
2443*8fb009dcSAndroid Build Coastguard WorkerL113bad_keybits:
2444*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
2445*8fb009dcSAndroid Build Coastguard Worker	movl	$-2,%eax
2446*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
2447*8fb009dcSAndroid Build Coastguard Worker	ret
2448*8fb009dcSAndroid Build Coastguard Worker.globl	_aes_hw_encrypt_key_to_decrypt_key
2449*8fb009dcSAndroid Build Coastguard Worker.private_extern	_aes_hw_encrypt_key_to_decrypt_key
2450*8fb009dcSAndroid Build Coastguard Worker.align	4
2451*8fb009dcSAndroid Build Coastguard Worker_aes_hw_encrypt_key_to_decrypt_key:
2452*8fb009dcSAndroid Build Coastguard WorkerL_aes_hw_encrypt_key_to_decrypt_key_begin:
2453*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esp),%edx
2454*8fb009dcSAndroid Build Coastguard Worker	movl	240(%edx),%ecx
2455*8fb009dcSAndroid Build Coastguard Worker	shll	$4,%ecx
2456*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx,%ecx,1),%eax
2457*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
2458*8fb009dcSAndroid Build Coastguard Worker	movups	(%eax),%xmm1
2459*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm0,(%eax)
2460*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm1,(%edx)
2461*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
2462*8fb009dcSAndroid Build Coastguard Worker	leal	-16(%eax),%eax
2463*8fb009dcSAndroid Build Coastguard WorkerL120dec_key_inverse:
2464*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
2465*8fb009dcSAndroid Build Coastguard Worker	movups	(%eax),%xmm1
2466*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,219,192
2467*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,219,201
2468*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edx),%edx
2469*8fb009dcSAndroid Build Coastguard Worker	leal	-16(%eax),%eax
2470*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm0,16(%eax)
2471*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm1,-16(%edx)
2472*8fb009dcSAndroid Build Coastguard Worker	cmpl	%edx,%eax
2473*8fb009dcSAndroid Build Coastguard Worker	ja	L120dec_key_inverse
2474*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm0
2475*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,219,192
2476*8fb009dcSAndroid Build Coastguard Worker	movups	%xmm0,(%edx)
2477*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm0
2478*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm1
2479*8fb009dcSAndroid Build Coastguard Worker	ret
2480*8fb009dcSAndroid Build Coastguard Worker.align	6,0x90
2481*8fb009dcSAndroid Build Coastguard WorkerLkey_const:
2482*8fb009dcSAndroid Build Coastguard Worker.long	202313229,202313229,202313229,202313229
2483*8fb009dcSAndroid Build Coastguard Worker.long	67569157,67569157,67569157,67569157
2484*8fb009dcSAndroid Build Coastguard Worker.long	1,1,1,1
2485*8fb009dcSAndroid Build Coastguard Worker.long	27,27,27,27
2486*8fb009dcSAndroid Build Coastguard Worker.byte	65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
2487*8fb009dcSAndroid Build Coastguard Worker.byte	83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
2488*8fb009dcSAndroid Build Coastguard Worker.byte	32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
2489*8fb009dcSAndroid Build Coastguard Worker.byte	115,108,46,111,114,103,62,0
2490*8fb009dcSAndroid Build Coastguard Worker#endif  // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__APPLE__)
2491