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