xref: /aosp_15_r20/external/boringssl/src/gen/crypto/chacha-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.globl	ChaCha20_ctr32_nohw
9*8fb009dcSAndroid Build Coastguard Worker.hidden	ChaCha20_ctr32_nohw
10*8fb009dcSAndroid Build Coastguard Worker.type	ChaCha20_ctr32_nohw,@function
11*8fb009dcSAndroid Build Coastguard Worker.align	16
12*8fb009dcSAndroid Build Coastguard WorkerChaCha20_ctr32_nohw:
13*8fb009dcSAndroid Build Coastguard Worker.L_ChaCha20_ctr32_nohw_begin:
14*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebp
15*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
16*8fb009dcSAndroid Build Coastguard Worker	pushl	%esi
17*8fb009dcSAndroid Build Coastguard Worker	pushl	%edi
18*8fb009dcSAndroid Build Coastguard Worker	movl	32(%esp),%esi
19*8fb009dcSAndroid Build Coastguard Worker	movl	36(%esp),%edi
20*8fb009dcSAndroid Build Coastguard Worker	subl	$132,%esp
21*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%eax
22*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%ebx
23*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%ecx
24*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%edx
25*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,80(%esp)
26*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,84(%esp)
27*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,88(%esp)
28*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,92(%esp)
29*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%eax
30*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%ebx
31*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%ecx
32*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esi),%edx
33*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,96(%esp)
34*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,100(%esp)
35*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,104(%esp)
36*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,108(%esp)
37*8fb009dcSAndroid Build Coastguard Worker	movl	(%edi),%eax
38*8fb009dcSAndroid Build Coastguard Worker	movl	4(%edi),%ebx
39*8fb009dcSAndroid Build Coastguard Worker	movl	8(%edi),%ecx
40*8fb009dcSAndroid Build Coastguard Worker	movl	12(%edi),%edx
41*8fb009dcSAndroid Build Coastguard Worker	subl	$1,%eax
42*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,112(%esp)
43*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,116(%esp)
44*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,120(%esp)
45*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,124(%esp)
46*8fb009dcSAndroid Build Coastguard Worker	jmp	.L000entry
47*8fb009dcSAndroid Build Coastguard Worker.align	16
48*8fb009dcSAndroid Build Coastguard Worker.L001outer_loop:
49*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,156(%esp)
50*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,152(%esp)
51*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,160(%esp)
52*8fb009dcSAndroid Build Coastguard Worker.L000entry:
53*8fb009dcSAndroid Build Coastguard Worker	movl	$1634760805,%eax
54*8fb009dcSAndroid Build Coastguard Worker	movl	$857760878,4(%esp)
55*8fb009dcSAndroid Build Coastguard Worker	movl	$2036477234,8(%esp)
56*8fb009dcSAndroid Build Coastguard Worker	movl	$1797285236,12(%esp)
57*8fb009dcSAndroid Build Coastguard Worker	movl	84(%esp),%ebx
58*8fb009dcSAndroid Build Coastguard Worker	movl	88(%esp),%ebp
59*8fb009dcSAndroid Build Coastguard Worker	movl	104(%esp),%ecx
60*8fb009dcSAndroid Build Coastguard Worker	movl	108(%esp),%esi
61*8fb009dcSAndroid Build Coastguard Worker	movl	116(%esp),%edx
62*8fb009dcSAndroid Build Coastguard Worker	movl	120(%esp),%edi
63*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,20(%esp)
64*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,24(%esp)
65*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,40(%esp)
66*8fb009dcSAndroid Build Coastguard Worker	movl	%esi,44(%esp)
67*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,52(%esp)
68*8fb009dcSAndroid Build Coastguard Worker	movl	%edi,56(%esp)
69*8fb009dcSAndroid Build Coastguard Worker	movl	92(%esp),%ebx
70*8fb009dcSAndroid Build Coastguard Worker	movl	124(%esp),%edi
71*8fb009dcSAndroid Build Coastguard Worker	movl	112(%esp),%edx
72*8fb009dcSAndroid Build Coastguard Worker	movl	80(%esp),%ebp
73*8fb009dcSAndroid Build Coastguard Worker	movl	96(%esp),%ecx
74*8fb009dcSAndroid Build Coastguard Worker	movl	100(%esp),%esi
75*8fb009dcSAndroid Build Coastguard Worker	addl	$1,%edx
76*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,28(%esp)
77*8fb009dcSAndroid Build Coastguard Worker	movl	%edi,60(%esp)
78*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,112(%esp)
79*8fb009dcSAndroid Build Coastguard Worker	movl	$10,%ebx
80*8fb009dcSAndroid Build Coastguard Worker	jmp	.L002loop
81*8fb009dcSAndroid Build Coastguard Worker.align	16
82*8fb009dcSAndroid Build Coastguard Worker.L002loop:
83*8fb009dcSAndroid Build Coastguard Worker	addl	%ebp,%eax
84*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,128(%esp)
85*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,%ebx
86*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%edx
87*8fb009dcSAndroid Build Coastguard Worker	roll	$16,%edx
88*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
89*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ebx
90*8fb009dcSAndroid Build Coastguard Worker	movl	52(%esp),%edi
91*8fb009dcSAndroid Build Coastguard Worker	roll	$12,%ebx
92*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%ebp
93*8fb009dcSAndroid Build Coastguard Worker	addl	%ebx,%eax
94*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%edx
95*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,(%esp)
96*8fb009dcSAndroid Build Coastguard Worker	roll	$8,%edx
97*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esp),%eax
98*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
99*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,48(%esp)
100*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ebx
101*8fb009dcSAndroid Build Coastguard Worker	addl	%ebp,%eax
102*8fb009dcSAndroid Build Coastguard Worker	roll	$7,%ebx
103*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%edi
104*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,32(%esp)
105*8fb009dcSAndroid Build Coastguard Worker	roll	$16,%edi
106*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,16(%esp)
107*8fb009dcSAndroid Build Coastguard Worker	addl	%edi,%esi
108*8fb009dcSAndroid Build Coastguard Worker	movl	40(%esp),%ecx
109*8fb009dcSAndroid Build Coastguard Worker	xorl	%esi,%ebp
110*8fb009dcSAndroid Build Coastguard Worker	movl	56(%esp),%edx
111*8fb009dcSAndroid Build Coastguard Worker	roll	$12,%ebp
112*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esp),%ebx
113*8fb009dcSAndroid Build Coastguard Worker	addl	%ebp,%eax
114*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%edi
115*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,4(%esp)
116*8fb009dcSAndroid Build Coastguard Worker	roll	$8,%edi
117*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esp),%eax
118*8fb009dcSAndroid Build Coastguard Worker	addl	%edi,%esi
119*8fb009dcSAndroid Build Coastguard Worker	movl	%edi,52(%esp)
120*8fb009dcSAndroid Build Coastguard Worker	xorl	%esi,%ebp
121*8fb009dcSAndroid Build Coastguard Worker	addl	%ebx,%eax
122*8fb009dcSAndroid Build Coastguard Worker	roll	$7,%ebp
123*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%edx
124*8fb009dcSAndroid Build Coastguard Worker	movl	%esi,36(%esp)
125*8fb009dcSAndroid Build Coastguard Worker	roll	$16,%edx
126*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,20(%esp)
127*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
128*8fb009dcSAndroid Build Coastguard Worker	movl	44(%esp),%esi
129*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ebx
130*8fb009dcSAndroid Build Coastguard Worker	movl	60(%esp),%edi
131*8fb009dcSAndroid Build Coastguard Worker	roll	$12,%ebx
132*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esp),%ebp
133*8fb009dcSAndroid Build Coastguard Worker	addl	%ebx,%eax
134*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%edx
135*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,8(%esp)
136*8fb009dcSAndroid Build Coastguard Worker	roll	$8,%edx
137*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esp),%eax
138*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
139*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,56(%esp)
140*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ebx
141*8fb009dcSAndroid Build Coastguard Worker	addl	%ebp,%eax
142*8fb009dcSAndroid Build Coastguard Worker	roll	$7,%ebx
143*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%edi
144*8fb009dcSAndroid Build Coastguard Worker	roll	$16,%edi
145*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,24(%esp)
146*8fb009dcSAndroid Build Coastguard Worker	addl	%edi,%esi
147*8fb009dcSAndroid Build Coastguard Worker	xorl	%esi,%ebp
148*8fb009dcSAndroid Build Coastguard Worker	roll	$12,%ebp
149*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%ebx
150*8fb009dcSAndroid Build Coastguard Worker	addl	%ebp,%eax
151*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%edi
152*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,12(%esp)
153*8fb009dcSAndroid Build Coastguard Worker	roll	$8,%edi
154*8fb009dcSAndroid Build Coastguard Worker	movl	(%esp),%eax
155*8fb009dcSAndroid Build Coastguard Worker	addl	%edi,%esi
156*8fb009dcSAndroid Build Coastguard Worker	movl	%edi,%edx
157*8fb009dcSAndroid Build Coastguard Worker	xorl	%esi,%ebp
158*8fb009dcSAndroid Build Coastguard Worker	addl	%ebx,%eax
159*8fb009dcSAndroid Build Coastguard Worker	roll	$7,%ebp
160*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%edx
161*8fb009dcSAndroid Build Coastguard Worker	roll	$16,%edx
162*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,28(%esp)
163*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
164*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ebx
165*8fb009dcSAndroid Build Coastguard Worker	movl	48(%esp),%edi
166*8fb009dcSAndroid Build Coastguard Worker	roll	$12,%ebx
167*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esp),%ebp
168*8fb009dcSAndroid Build Coastguard Worker	addl	%ebx,%eax
169*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%edx
170*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,(%esp)
171*8fb009dcSAndroid Build Coastguard Worker	roll	$8,%edx
172*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esp),%eax
173*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
174*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,60(%esp)
175*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ebx
176*8fb009dcSAndroid Build Coastguard Worker	addl	%ebp,%eax
177*8fb009dcSAndroid Build Coastguard Worker	roll	$7,%ebx
178*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%edi
179*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,40(%esp)
180*8fb009dcSAndroid Build Coastguard Worker	roll	$16,%edi
181*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,20(%esp)
182*8fb009dcSAndroid Build Coastguard Worker	addl	%edi,%esi
183*8fb009dcSAndroid Build Coastguard Worker	movl	32(%esp),%ecx
184*8fb009dcSAndroid Build Coastguard Worker	xorl	%esi,%ebp
185*8fb009dcSAndroid Build Coastguard Worker	movl	52(%esp),%edx
186*8fb009dcSAndroid Build Coastguard Worker	roll	$12,%ebp
187*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esp),%ebx
188*8fb009dcSAndroid Build Coastguard Worker	addl	%ebp,%eax
189*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%edi
190*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,4(%esp)
191*8fb009dcSAndroid Build Coastguard Worker	roll	$8,%edi
192*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esp),%eax
193*8fb009dcSAndroid Build Coastguard Worker	addl	%edi,%esi
194*8fb009dcSAndroid Build Coastguard Worker	movl	%edi,48(%esp)
195*8fb009dcSAndroid Build Coastguard Worker	xorl	%esi,%ebp
196*8fb009dcSAndroid Build Coastguard Worker	addl	%ebx,%eax
197*8fb009dcSAndroid Build Coastguard Worker	roll	$7,%ebp
198*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%edx
199*8fb009dcSAndroid Build Coastguard Worker	movl	%esi,44(%esp)
200*8fb009dcSAndroid Build Coastguard Worker	roll	$16,%edx
201*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,24(%esp)
202*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
203*8fb009dcSAndroid Build Coastguard Worker	movl	36(%esp),%esi
204*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ebx
205*8fb009dcSAndroid Build Coastguard Worker	movl	56(%esp),%edi
206*8fb009dcSAndroid Build Coastguard Worker	roll	$12,%ebx
207*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esp),%ebp
208*8fb009dcSAndroid Build Coastguard Worker	addl	%ebx,%eax
209*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%edx
210*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,8(%esp)
211*8fb009dcSAndroid Build Coastguard Worker	roll	$8,%edx
212*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esp),%eax
213*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
214*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,52(%esp)
215*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ebx
216*8fb009dcSAndroid Build Coastguard Worker	addl	%ebp,%eax
217*8fb009dcSAndroid Build Coastguard Worker	roll	$7,%ebx
218*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%edi
219*8fb009dcSAndroid Build Coastguard Worker	roll	$16,%edi
220*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,28(%esp)
221*8fb009dcSAndroid Build Coastguard Worker	addl	%edi,%esi
222*8fb009dcSAndroid Build Coastguard Worker	xorl	%esi,%ebp
223*8fb009dcSAndroid Build Coastguard Worker	movl	48(%esp),%edx
224*8fb009dcSAndroid Build Coastguard Worker	roll	$12,%ebp
225*8fb009dcSAndroid Build Coastguard Worker	movl	128(%esp),%ebx
226*8fb009dcSAndroid Build Coastguard Worker	addl	%ebp,%eax
227*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%edi
228*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,12(%esp)
229*8fb009dcSAndroid Build Coastguard Worker	roll	$8,%edi
230*8fb009dcSAndroid Build Coastguard Worker	movl	(%esp),%eax
231*8fb009dcSAndroid Build Coastguard Worker	addl	%edi,%esi
232*8fb009dcSAndroid Build Coastguard Worker	movl	%edi,56(%esp)
233*8fb009dcSAndroid Build Coastguard Worker	xorl	%esi,%ebp
234*8fb009dcSAndroid Build Coastguard Worker	roll	$7,%ebp
235*8fb009dcSAndroid Build Coastguard Worker	decl	%ebx
236*8fb009dcSAndroid Build Coastguard Worker	jnz	.L002loop
237*8fb009dcSAndroid Build Coastguard Worker	movl	160(%esp),%ebx
238*8fb009dcSAndroid Build Coastguard Worker	addl	$1634760805,%eax
239*8fb009dcSAndroid Build Coastguard Worker	addl	80(%esp),%ebp
240*8fb009dcSAndroid Build Coastguard Worker	addl	96(%esp),%ecx
241*8fb009dcSAndroid Build Coastguard Worker	addl	100(%esp),%esi
242*8fb009dcSAndroid Build Coastguard Worker	cmpl	$64,%ebx
243*8fb009dcSAndroid Build Coastguard Worker	jb	.L003tail
244*8fb009dcSAndroid Build Coastguard Worker	movl	156(%esp),%ebx
245*8fb009dcSAndroid Build Coastguard Worker	addl	112(%esp),%edx
246*8fb009dcSAndroid Build Coastguard Worker	addl	120(%esp),%edi
247*8fb009dcSAndroid Build Coastguard Worker	xorl	(%ebx),%eax
248*8fb009dcSAndroid Build Coastguard Worker	xorl	16(%ebx),%ebp
249*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,(%esp)
250*8fb009dcSAndroid Build Coastguard Worker	movl	152(%esp),%eax
251*8fb009dcSAndroid Build Coastguard Worker	xorl	32(%ebx),%ecx
252*8fb009dcSAndroid Build Coastguard Worker	xorl	36(%ebx),%esi
253*8fb009dcSAndroid Build Coastguard Worker	xorl	48(%ebx),%edx
254*8fb009dcSAndroid Build Coastguard Worker	xorl	56(%ebx),%edi
255*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,16(%eax)
256*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,32(%eax)
257*8fb009dcSAndroid Build Coastguard Worker	movl	%esi,36(%eax)
258*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,48(%eax)
259*8fb009dcSAndroid Build Coastguard Worker	movl	%edi,56(%eax)
260*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esp),%ebp
261*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esp),%ecx
262*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esp),%esi
263*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%edx
264*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esp),%edi
265*8fb009dcSAndroid Build Coastguard Worker	addl	$857760878,%ebp
266*8fb009dcSAndroid Build Coastguard Worker	addl	$2036477234,%ecx
267*8fb009dcSAndroid Build Coastguard Worker	addl	$1797285236,%esi
268*8fb009dcSAndroid Build Coastguard Worker	addl	84(%esp),%edx
269*8fb009dcSAndroid Build Coastguard Worker	addl	88(%esp),%edi
270*8fb009dcSAndroid Build Coastguard Worker	xorl	4(%ebx),%ebp
271*8fb009dcSAndroid Build Coastguard Worker	xorl	8(%ebx),%ecx
272*8fb009dcSAndroid Build Coastguard Worker	xorl	12(%ebx),%esi
273*8fb009dcSAndroid Build Coastguard Worker	xorl	20(%ebx),%edx
274*8fb009dcSAndroid Build Coastguard Worker	xorl	24(%ebx),%edi
275*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,4(%eax)
276*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,8(%eax)
277*8fb009dcSAndroid Build Coastguard Worker	movl	%esi,12(%eax)
278*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,20(%eax)
279*8fb009dcSAndroid Build Coastguard Worker	movl	%edi,24(%eax)
280*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esp),%ebp
281*8fb009dcSAndroid Build Coastguard Worker	movl	40(%esp),%ecx
282*8fb009dcSAndroid Build Coastguard Worker	movl	44(%esp),%esi
283*8fb009dcSAndroid Build Coastguard Worker	movl	52(%esp),%edx
284*8fb009dcSAndroid Build Coastguard Worker	movl	60(%esp),%edi
285*8fb009dcSAndroid Build Coastguard Worker	addl	92(%esp),%ebp
286*8fb009dcSAndroid Build Coastguard Worker	addl	104(%esp),%ecx
287*8fb009dcSAndroid Build Coastguard Worker	addl	108(%esp),%esi
288*8fb009dcSAndroid Build Coastguard Worker	addl	116(%esp),%edx
289*8fb009dcSAndroid Build Coastguard Worker	addl	124(%esp),%edi
290*8fb009dcSAndroid Build Coastguard Worker	xorl	28(%ebx),%ebp
291*8fb009dcSAndroid Build Coastguard Worker	xorl	40(%ebx),%ecx
292*8fb009dcSAndroid Build Coastguard Worker	xorl	44(%ebx),%esi
293*8fb009dcSAndroid Build Coastguard Worker	xorl	52(%ebx),%edx
294*8fb009dcSAndroid Build Coastguard Worker	xorl	60(%ebx),%edi
295*8fb009dcSAndroid Build Coastguard Worker	leal	64(%ebx),%ebx
296*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,28(%eax)
297*8fb009dcSAndroid Build Coastguard Worker	movl	(%esp),%ebp
298*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,40(%eax)
299*8fb009dcSAndroid Build Coastguard Worker	movl	160(%esp),%ecx
300*8fb009dcSAndroid Build Coastguard Worker	movl	%esi,44(%eax)
301*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,52(%eax)
302*8fb009dcSAndroid Build Coastguard Worker	movl	%edi,60(%eax)
303*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,(%eax)
304*8fb009dcSAndroid Build Coastguard Worker	leal	64(%eax),%eax
305*8fb009dcSAndroid Build Coastguard Worker	subl	$64,%ecx
306*8fb009dcSAndroid Build Coastguard Worker	jnz	.L001outer_loop
307*8fb009dcSAndroid Build Coastguard Worker	jmp	.L004done
308*8fb009dcSAndroid Build Coastguard Worker.L003tail:
309*8fb009dcSAndroid Build Coastguard Worker	addl	112(%esp),%edx
310*8fb009dcSAndroid Build Coastguard Worker	addl	120(%esp),%edi
311*8fb009dcSAndroid Build Coastguard Worker	movl	%eax,(%esp)
312*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,16(%esp)
313*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,32(%esp)
314*8fb009dcSAndroid Build Coastguard Worker	movl	%esi,36(%esp)
315*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,48(%esp)
316*8fb009dcSAndroid Build Coastguard Worker	movl	%edi,56(%esp)
317*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esp),%ebp
318*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esp),%ecx
319*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esp),%esi
320*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%edx
321*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esp),%edi
322*8fb009dcSAndroid Build Coastguard Worker	addl	$857760878,%ebp
323*8fb009dcSAndroid Build Coastguard Worker	addl	$2036477234,%ecx
324*8fb009dcSAndroid Build Coastguard Worker	addl	$1797285236,%esi
325*8fb009dcSAndroid Build Coastguard Worker	addl	84(%esp),%edx
326*8fb009dcSAndroid Build Coastguard Worker	addl	88(%esp),%edi
327*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,4(%esp)
328*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,8(%esp)
329*8fb009dcSAndroid Build Coastguard Worker	movl	%esi,12(%esp)
330*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,20(%esp)
331*8fb009dcSAndroid Build Coastguard Worker	movl	%edi,24(%esp)
332*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esp),%ebp
333*8fb009dcSAndroid Build Coastguard Worker	movl	40(%esp),%ecx
334*8fb009dcSAndroid Build Coastguard Worker	movl	44(%esp),%esi
335*8fb009dcSAndroid Build Coastguard Worker	movl	52(%esp),%edx
336*8fb009dcSAndroid Build Coastguard Worker	movl	60(%esp),%edi
337*8fb009dcSAndroid Build Coastguard Worker	addl	92(%esp),%ebp
338*8fb009dcSAndroid Build Coastguard Worker	addl	104(%esp),%ecx
339*8fb009dcSAndroid Build Coastguard Worker	addl	108(%esp),%esi
340*8fb009dcSAndroid Build Coastguard Worker	addl	116(%esp),%edx
341*8fb009dcSAndroid Build Coastguard Worker	addl	124(%esp),%edi
342*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,28(%esp)
343*8fb009dcSAndroid Build Coastguard Worker	movl	156(%esp),%ebp
344*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,40(%esp)
345*8fb009dcSAndroid Build Coastguard Worker	movl	152(%esp),%ecx
346*8fb009dcSAndroid Build Coastguard Worker	movl	%esi,44(%esp)
347*8fb009dcSAndroid Build Coastguard Worker	xorl	%esi,%esi
348*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,52(%esp)
349*8fb009dcSAndroid Build Coastguard Worker	movl	%edi,60(%esp)
350*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%eax
351*8fb009dcSAndroid Build Coastguard Worker	xorl	%edx,%edx
352*8fb009dcSAndroid Build Coastguard Worker.L005tail_loop:
353*8fb009dcSAndroid Build Coastguard Worker	movb	(%esi,%ebp,1),%al
354*8fb009dcSAndroid Build Coastguard Worker	movb	(%esp,%esi,1),%dl
355*8fb009dcSAndroid Build Coastguard Worker	leal	1(%esi),%esi
356*8fb009dcSAndroid Build Coastguard Worker	xorb	%dl,%al
357*8fb009dcSAndroid Build Coastguard Worker	movb	%al,-1(%ecx,%esi,1)
358*8fb009dcSAndroid Build Coastguard Worker	decl	%ebx
359*8fb009dcSAndroid Build Coastguard Worker	jnz	.L005tail_loop
360*8fb009dcSAndroid Build Coastguard Worker.L004done:
361*8fb009dcSAndroid Build Coastguard Worker	addl	$132,%esp
362*8fb009dcSAndroid Build Coastguard Worker	popl	%edi
363*8fb009dcSAndroid Build Coastguard Worker	popl	%esi
364*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
365*8fb009dcSAndroid Build Coastguard Worker	popl	%ebp
366*8fb009dcSAndroid Build Coastguard Worker	ret
367*8fb009dcSAndroid Build Coastguard Worker.size	ChaCha20_ctr32_nohw,.-.L_ChaCha20_ctr32_nohw_begin
368*8fb009dcSAndroid Build Coastguard Worker.globl	ChaCha20_ctr32_ssse3
369*8fb009dcSAndroid Build Coastguard Worker.hidden	ChaCha20_ctr32_ssse3
370*8fb009dcSAndroid Build Coastguard Worker.type	ChaCha20_ctr32_ssse3,@function
371*8fb009dcSAndroid Build Coastguard Worker.align	16
372*8fb009dcSAndroid Build Coastguard WorkerChaCha20_ctr32_ssse3:
373*8fb009dcSAndroid Build Coastguard Worker.L_ChaCha20_ctr32_ssse3_begin:
374*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebp
375*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
376*8fb009dcSAndroid Build Coastguard Worker	pushl	%esi
377*8fb009dcSAndroid Build Coastguard Worker	pushl	%edi
378*8fb009dcSAndroid Build Coastguard Worker	call	.Lpic_point
379*8fb009dcSAndroid Build Coastguard Worker.Lpic_point:
380*8fb009dcSAndroid Build Coastguard Worker	popl	%eax
381*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%edi
382*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esp),%esi
383*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esp),%ecx
384*8fb009dcSAndroid Build Coastguard Worker	movl	32(%esp),%edx
385*8fb009dcSAndroid Build Coastguard Worker	movl	36(%esp),%ebx
386*8fb009dcSAndroid Build Coastguard Worker	movl	%esp,%ebp
387*8fb009dcSAndroid Build Coastguard Worker	subl	$524,%esp
388*8fb009dcSAndroid Build Coastguard Worker	andl	$-64,%esp
389*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,512(%esp)
390*8fb009dcSAndroid Build Coastguard Worker	leal	.Lssse3_data-.Lpic_point(%eax),%eax
391*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%ebx),%xmm3
392*8fb009dcSAndroid Build Coastguard Worker	cmpl	$256,%ecx
393*8fb009dcSAndroid Build Coastguard Worker	jb	.L0061x
394*8fb009dcSAndroid Build Coastguard Worker	movl	%edx,516(%esp)
395*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,520(%esp)
396*8fb009dcSAndroid Build Coastguard Worker	subl	$256,%ecx
397*8fb009dcSAndroid Build Coastguard Worker	leal	384(%esp),%ebp
398*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%edx),%xmm7
399*8fb009dcSAndroid Build Coastguard Worker	pshufd	$0,%xmm3,%xmm0
400*8fb009dcSAndroid Build Coastguard Worker	pshufd	$85,%xmm3,%xmm1
401*8fb009dcSAndroid Build Coastguard Worker	pshufd	$170,%xmm3,%xmm2
402*8fb009dcSAndroid Build Coastguard Worker	pshufd	$255,%xmm3,%xmm3
403*8fb009dcSAndroid Build Coastguard Worker	paddd	48(%eax),%xmm0
404*8fb009dcSAndroid Build Coastguard Worker	pshufd	$0,%xmm7,%xmm4
405*8fb009dcSAndroid Build Coastguard Worker	pshufd	$85,%xmm7,%xmm5
406*8fb009dcSAndroid Build Coastguard Worker	psubd	64(%eax),%xmm0
407*8fb009dcSAndroid Build Coastguard Worker	pshufd	$170,%xmm7,%xmm6
408*8fb009dcSAndroid Build Coastguard Worker	pshufd	$255,%xmm7,%xmm7
409*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,64(%ebp)
410*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,80(%ebp)
411*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,96(%ebp)
412*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,112(%ebp)
413*8fb009dcSAndroid Build Coastguard Worker	movdqu	16(%edx),%xmm3
414*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm4,-64(%ebp)
415*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm5,-48(%ebp)
416*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,-32(%ebp)
417*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,-16(%ebp)
418*8fb009dcSAndroid Build Coastguard Worker	movdqa	32(%eax),%xmm7
419*8fb009dcSAndroid Build Coastguard Worker	leal	128(%esp),%ebx
420*8fb009dcSAndroid Build Coastguard Worker	pshufd	$0,%xmm3,%xmm0
421*8fb009dcSAndroid Build Coastguard Worker	pshufd	$85,%xmm3,%xmm1
422*8fb009dcSAndroid Build Coastguard Worker	pshufd	$170,%xmm3,%xmm2
423*8fb009dcSAndroid Build Coastguard Worker	pshufd	$255,%xmm3,%xmm3
424*8fb009dcSAndroid Build Coastguard Worker	pshufd	$0,%xmm7,%xmm4
425*8fb009dcSAndroid Build Coastguard Worker	pshufd	$85,%xmm7,%xmm5
426*8fb009dcSAndroid Build Coastguard Worker	pshufd	$170,%xmm7,%xmm6
427*8fb009dcSAndroid Build Coastguard Worker	pshufd	$255,%xmm7,%xmm7
428*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,(%ebp)
429*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,16(%ebp)
430*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,32(%ebp)
431*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,48(%ebp)
432*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm4,-128(%ebp)
433*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm5,-112(%ebp)
434*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,-96(%ebp)
435*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,-80(%ebp)
436*8fb009dcSAndroid Build Coastguard Worker	leal	128(%esi),%esi
437*8fb009dcSAndroid Build Coastguard Worker	leal	128(%edi),%edi
438*8fb009dcSAndroid Build Coastguard Worker	jmp	.L007outer_loop
439*8fb009dcSAndroid Build Coastguard Worker.align	16
440*8fb009dcSAndroid Build Coastguard Worker.L007outer_loop:
441*8fb009dcSAndroid Build Coastguard Worker	movdqa	-112(%ebp),%xmm1
442*8fb009dcSAndroid Build Coastguard Worker	movdqa	-96(%ebp),%xmm2
443*8fb009dcSAndroid Build Coastguard Worker	movdqa	-80(%ebp),%xmm3
444*8fb009dcSAndroid Build Coastguard Worker	movdqa	-48(%ebp),%xmm5
445*8fb009dcSAndroid Build Coastguard Worker	movdqa	-32(%ebp),%xmm6
446*8fb009dcSAndroid Build Coastguard Worker	movdqa	-16(%ebp),%xmm7
447*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,-112(%ebx)
448*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,-96(%ebx)
449*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,-80(%ebx)
450*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm5,-48(%ebx)
451*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,-32(%ebx)
452*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,-16(%ebx)
453*8fb009dcSAndroid Build Coastguard Worker	movdqa	32(%ebp),%xmm2
454*8fb009dcSAndroid Build Coastguard Worker	movdqa	48(%ebp),%xmm3
455*8fb009dcSAndroid Build Coastguard Worker	movdqa	64(%ebp),%xmm4
456*8fb009dcSAndroid Build Coastguard Worker	movdqa	80(%ebp),%xmm5
457*8fb009dcSAndroid Build Coastguard Worker	movdqa	96(%ebp),%xmm6
458*8fb009dcSAndroid Build Coastguard Worker	movdqa	112(%ebp),%xmm7
459*8fb009dcSAndroid Build Coastguard Worker	paddd	64(%eax),%xmm4
460*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,32(%ebx)
461*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,48(%ebx)
462*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm4,64(%ebx)
463*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm5,80(%ebx)
464*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,96(%ebx)
465*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,112(%ebx)
466*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm4,64(%ebp)
467*8fb009dcSAndroid Build Coastguard Worker	movdqa	-128(%ebp),%xmm0
468*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm4,%xmm6
469*8fb009dcSAndroid Build Coastguard Worker	movdqa	-64(%ebp),%xmm3
470*8fb009dcSAndroid Build Coastguard Worker	movdqa	(%ebp),%xmm4
471*8fb009dcSAndroid Build Coastguard Worker	movdqa	16(%ebp),%xmm5
472*8fb009dcSAndroid Build Coastguard Worker	movl	$10,%edx
473*8fb009dcSAndroid Build Coastguard Worker	nop
474*8fb009dcSAndroid Build Coastguard Worker.align	16
475*8fb009dcSAndroid Build Coastguard Worker.L008loop:
476*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm3,%xmm0
477*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,%xmm2
478*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm6
479*8fb009dcSAndroid Build Coastguard Worker	pshufb	(%eax),%xmm6
480*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm6,%xmm4
481*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm2
482*8fb009dcSAndroid Build Coastguard Worker	movdqa	-48(%ebx),%xmm3
483*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm1
484*8fb009dcSAndroid Build Coastguard Worker	pslld	$12,%xmm2
485*8fb009dcSAndroid Build Coastguard Worker	psrld	$20,%xmm1
486*8fb009dcSAndroid Build Coastguard Worker	por	%xmm1,%xmm2
487*8fb009dcSAndroid Build Coastguard Worker	movdqa	-112(%ebx),%xmm1
488*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm2,%xmm0
489*8fb009dcSAndroid Build Coastguard Worker	movdqa	80(%ebx),%xmm7
490*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm6
491*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,-128(%ebx)
492*8fb009dcSAndroid Build Coastguard Worker	pshufb	16(%eax),%xmm6
493*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm6,%xmm4
494*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,64(%ebx)
495*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm2
496*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm3,%xmm1
497*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm0
498*8fb009dcSAndroid Build Coastguard Worker	pslld	$7,%xmm2
499*8fb009dcSAndroid Build Coastguard Worker	psrld	$25,%xmm0
500*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm7
501*8fb009dcSAndroid Build Coastguard Worker	por	%xmm0,%xmm2
502*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm4,(%ebx)
503*8fb009dcSAndroid Build Coastguard Worker	pshufb	(%eax),%xmm7
504*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,-64(%ebx)
505*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm7,%xmm5
506*8fb009dcSAndroid Build Coastguard Worker	movdqa	32(%ebx),%xmm4
507*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm3
508*8fb009dcSAndroid Build Coastguard Worker	movdqa	-32(%ebx),%xmm2
509*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,%xmm0
510*8fb009dcSAndroid Build Coastguard Worker	pslld	$12,%xmm3
511*8fb009dcSAndroid Build Coastguard Worker	psrld	$20,%xmm0
512*8fb009dcSAndroid Build Coastguard Worker	por	%xmm0,%xmm3
513*8fb009dcSAndroid Build Coastguard Worker	movdqa	-96(%ebx),%xmm0
514*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm3,%xmm1
515*8fb009dcSAndroid Build Coastguard Worker	movdqa	96(%ebx),%xmm6
516*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm7
517*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,-112(%ebx)
518*8fb009dcSAndroid Build Coastguard Worker	pshufb	16(%eax),%xmm7
519*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm7,%xmm5
520*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,80(%ebx)
521*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm3
522*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm2,%xmm0
523*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,%xmm1
524*8fb009dcSAndroid Build Coastguard Worker	pslld	$7,%xmm3
525*8fb009dcSAndroid Build Coastguard Worker	psrld	$25,%xmm1
526*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm6
527*8fb009dcSAndroid Build Coastguard Worker	por	%xmm1,%xmm3
528*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm5,16(%ebx)
529*8fb009dcSAndroid Build Coastguard Worker	pshufb	(%eax),%xmm6
530*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,-48(%ebx)
531*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm6,%xmm4
532*8fb009dcSAndroid Build Coastguard Worker	movdqa	48(%ebx),%xmm5
533*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm2
534*8fb009dcSAndroid Build Coastguard Worker	movdqa	-16(%ebx),%xmm3
535*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm1
536*8fb009dcSAndroid Build Coastguard Worker	pslld	$12,%xmm2
537*8fb009dcSAndroid Build Coastguard Worker	psrld	$20,%xmm1
538*8fb009dcSAndroid Build Coastguard Worker	por	%xmm1,%xmm2
539*8fb009dcSAndroid Build Coastguard Worker	movdqa	-80(%ebx),%xmm1
540*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm2,%xmm0
541*8fb009dcSAndroid Build Coastguard Worker	movdqa	112(%ebx),%xmm7
542*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm6
543*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,-96(%ebx)
544*8fb009dcSAndroid Build Coastguard Worker	pshufb	16(%eax),%xmm6
545*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm6,%xmm4
546*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,96(%ebx)
547*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm2
548*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm3,%xmm1
549*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm0
550*8fb009dcSAndroid Build Coastguard Worker	pslld	$7,%xmm2
551*8fb009dcSAndroid Build Coastguard Worker	psrld	$25,%xmm0
552*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm7
553*8fb009dcSAndroid Build Coastguard Worker	por	%xmm0,%xmm2
554*8fb009dcSAndroid Build Coastguard Worker	pshufb	(%eax),%xmm7
555*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,-32(%ebx)
556*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm7,%xmm5
557*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm3
558*8fb009dcSAndroid Build Coastguard Worker	movdqa	-48(%ebx),%xmm2
559*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,%xmm0
560*8fb009dcSAndroid Build Coastguard Worker	pslld	$12,%xmm3
561*8fb009dcSAndroid Build Coastguard Worker	psrld	$20,%xmm0
562*8fb009dcSAndroid Build Coastguard Worker	por	%xmm0,%xmm3
563*8fb009dcSAndroid Build Coastguard Worker	movdqa	-128(%ebx),%xmm0
564*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm3,%xmm1
565*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm7
566*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,-80(%ebx)
567*8fb009dcSAndroid Build Coastguard Worker	pshufb	16(%eax),%xmm7
568*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm7,%xmm5
569*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,%xmm6
570*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm3
571*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm2,%xmm0
572*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,%xmm1
573*8fb009dcSAndroid Build Coastguard Worker	pslld	$7,%xmm3
574*8fb009dcSAndroid Build Coastguard Worker	psrld	$25,%xmm1
575*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm6
576*8fb009dcSAndroid Build Coastguard Worker	por	%xmm1,%xmm3
577*8fb009dcSAndroid Build Coastguard Worker	pshufb	(%eax),%xmm6
578*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,-16(%ebx)
579*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm6,%xmm4
580*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm2
581*8fb009dcSAndroid Build Coastguard Worker	movdqa	-32(%ebx),%xmm3
582*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm1
583*8fb009dcSAndroid Build Coastguard Worker	pslld	$12,%xmm2
584*8fb009dcSAndroid Build Coastguard Worker	psrld	$20,%xmm1
585*8fb009dcSAndroid Build Coastguard Worker	por	%xmm1,%xmm2
586*8fb009dcSAndroid Build Coastguard Worker	movdqa	-112(%ebx),%xmm1
587*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm2,%xmm0
588*8fb009dcSAndroid Build Coastguard Worker	movdqa	64(%ebx),%xmm7
589*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm6
590*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,-128(%ebx)
591*8fb009dcSAndroid Build Coastguard Worker	pshufb	16(%eax),%xmm6
592*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm6,%xmm4
593*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,112(%ebx)
594*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm2
595*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm3,%xmm1
596*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm0
597*8fb009dcSAndroid Build Coastguard Worker	pslld	$7,%xmm2
598*8fb009dcSAndroid Build Coastguard Worker	psrld	$25,%xmm0
599*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm7
600*8fb009dcSAndroid Build Coastguard Worker	por	%xmm0,%xmm2
601*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm4,32(%ebx)
602*8fb009dcSAndroid Build Coastguard Worker	pshufb	(%eax),%xmm7
603*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,-48(%ebx)
604*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm7,%xmm5
605*8fb009dcSAndroid Build Coastguard Worker	movdqa	(%ebx),%xmm4
606*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm3
607*8fb009dcSAndroid Build Coastguard Worker	movdqa	-16(%ebx),%xmm2
608*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,%xmm0
609*8fb009dcSAndroid Build Coastguard Worker	pslld	$12,%xmm3
610*8fb009dcSAndroid Build Coastguard Worker	psrld	$20,%xmm0
611*8fb009dcSAndroid Build Coastguard Worker	por	%xmm0,%xmm3
612*8fb009dcSAndroid Build Coastguard Worker	movdqa	-96(%ebx),%xmm0
613*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm3,%xmm1
614*8fb009dcSAndroid Build Coastguard Worker	movdqa	80(%ebx),%xmm6
615*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm7
616*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,-112(%ebx)
617*8fb009dcSAndroid Build Coastguard Worker	pshufb	16(%eax),%xmm7
618*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm7,%xmm5
619*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,64(%ebx)
620*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm3
621*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm2,%xmm0
622*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,%xmm1
623*8fb009dcSAndroid Build Coastguard Worker	pslld	$7,%xmm3
624*8fb009dcSAndroid Build Coastguard Worker	psrld	$25,%xmm1
625*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm6
626*8fb009dcSAndroid Build Coastguard Worker	por	%xmm1,%xmm3
627*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm5,48(%ebx)
628*8fb009dcSAndroid Build Coastguard Worker	pshufb	(%eax),%xmm6
629*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,-32(%ebx)
630*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm6,%xmm4
631*8fb009dcSAndroid Build Coastguard Worker	movdqa	16(%ebx),%xmm5
632*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm2
633*8fb009dcSAndroid Build Coastguard Worker	movdqa	-64(%ebx),%xmm3
634*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm1
635*8fb009dcSAndroid Build Coastguard Worker	pslld	$12,%xmm2
636*8fb009dcSAndroid Build Coastguard Worker	psrld	$20,%xmm1
637*8fb009dcSAndroid Build Coastguard Worker	por	%xmm1,%xmm2
638*8fb009dcSAndroid Build Coastguard Worker	movdqa	-80(%ebx),%xmm1
639*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm2,%xmm0
640*8fb009dcSAndroid Build Coastguard Worker	movdqa	96(%ebx),%xmm7
641*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm6
642*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,-96(%ebx)
643*8fb009dcSAndroid Build Coastguard Worker	pshufb	16(%eax),%xmm6
644*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm6,%xmm4
645*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,80(%ebx)
646*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm2
647*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm3,%xmm1
648*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm0
649*8fb009dcSAndroid Build Coastguard Worker	pslld	$7,%xmm2
650*8fb009dcSAndroid Build Coastguard Worker	psrld	$25,%xmm0
651*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm7
652*8fb009dcSAndroid Build Coastguard Worker	por	%xmm0,%xmm2
653*8fb009dcSAndroid Build Coastguard Worker	pshufb	(%eax),%xmm7
654*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,-16(%ebx)
655*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm7,%xmm5
656*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm3
657*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,%xmm0
658*8fb009dcSAndroid Build Coastguard Worker	pslld	$12,%xmm3
659*8fb009dcSAndroid Build Coastguard Worker	psrld	$20,%xmm0
660*8fb009dcSAndroid Build Coastguard Worker	por	%xmm0,%xmm3
661*8fb009dcSAndroid Build Coastguard Worker	movdqa	-128(%ebx),%xmm0
662*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm3,%xmm1
663*8fb009dcSAndroid Build Coastguard Worker	movdqa	64(%ebx),%xmm6
664*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm7
665*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,-80(%ebx)
666*8fb009dcSAndroid Build Coastguard Worker	pshufb	16(%eax),%xmm7
667*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm7,%xmm5
668*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,96(%ebx)
669*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm3
670*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,%xmm1
671*8fb009dcSAndroid Build Coastguard Worker	pslld	$7,%xmm3
672*8fb009dcSAndroid Build Coastguard Worker	psrld	$25,%xmm1
673*8fb009dcSAndroid Build Coastguard Worker	por	%xmm1,%xmm3
674*8fb009dcSAndroid Build Coastguard Worker	decl	%edx
675*8fb009dcSAndroid Build Coastguard Worker	jnz	.L008loop
676*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,-64(%ebx)
677*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm4,(%ebx)
678*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm5,16(%ebx)
679*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,64(%ebx)
680*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm7,96(%ebx)
681*8fb009dcSAndroid Build Coastguard Worker	movdqa	-112(%ebx),%xmm1
682*8fb009dcSAndroid Build Coastguard Worker	movdqa	-96(%ebx),%xmm2
683*8fb009dcSAndroid Build Coastguard Worker	movdqa	-80(%ebx),%xmm3
684*8fb009dcSAndroid Build Coastguard Worker	paddd	-128(%ebp),%xmm0
685*8fb009dcSAndroid Build Coastguard Worker	paddd	-112(%ebp),%xmm1
686*8fb009dcSAndroid Build Coastguard Worker	paddd	-96(%ebp),%xmm2
687*8fb009dcSAndroid Build Coastguard Worker	paddd	-80(%ebp),%xmm3
688*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm6
689*8fb009dcSAndroid Build Coastguard Worker	punpckldq	%xmm1,%xmm0
690*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm7
691*8fb009dcSAndroid Build Coastguard Worker	punpckldq	%xmm3,%xmm2
692*8fb009dcSAndroid Build Coastguard Worker	punpckhdq	%xmm1,%xmm6
693*8fb009dcSAndroid Build Coastguard Worker	punpckhdq	%xmm3,%xmm7
694*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm1
695*8fb009dcSAndroid Build Coastguard Worker	punpcklqdq	%xmm2,%xmm0
696*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,%xmm3
697*8fb009dcSAndroid Build Coastguard Worker	punpcklqdq	%xmm7,%xmm6
698*8fb009dcSAndroid Build Coastguard Worker	punpckhqdq	%xmm2,%xmm1
699*8fb009dcSAndroid Build Coastguard Worker	punpckhqdq	%xmm7,%xmm3
700*8fb009dcSAndroid Build Coastguard Worker	movdqu	-128(%esi),%xmm4
701*8fb009dcSAndroid Build Coastguard Worker	movdqu	-64(%esi),%xmm5
702*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%esi),%xmm2
703*8fb009dcSAndroid Build Coastguard Worker	movdqu	64(%esi),%xmm7
704*8fb009dcSAndroid Build Coastguard Worker	leal	16(%esi),%esi
705*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
706*8fb009dcSAndroid Build Coastguard Worker	movdqa	-64(%ebx),%xmm0
707*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm5
708*8fb009dcSAndroid Build Coastguard Worker	movdqa	-48(%ebx),%xmm1
709*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm6
710*8fb009dcSAndroid Build Coastguard Worker	movdqa	-32(%ebx),%xmm2
711*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm7
712*8fb009dcSAndroid Build Coastguard Worker	movdqa	-16(%ebx),%xmm3
713*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm4,-128(%edi)
714*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm5,-64(%edi)
715*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm6,(%edi)
716*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm7,64(%edi)
717*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edi),%edi
718*8fb009dcSAndroid Build Coastguard Worker	paddd	-64(%ebp),%xmm0
719*8fb009dcSAndroid Build Coastguard Worker	paddd	-48(%ebp),%xmm1
720*8fb009dcSAndroid Build Coastguard Worker	paddd	-32(%ebp),%xmm2
721*8fb009dcSAndroid Build Coastguard Worker	paddd	-16(%ebp),%xmm3
722*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm6
723*8fb009dcSAndroid Build Coastguard Worker	punpckldq	%xmm1,%xmm0
724*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm7
725*8fb009dcSAndroid Build Coastguard Worker	punpckldq	%xmm3,%xmm2
726*8fb009dcSAndroid Build Coastguard Worker	punpckhdq	%xmm1,%xmm6
727*8fb009dcSAndroid Build Coastguard Worker	punpckhdq	%xmm3,%xmm7
728*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm1
729*8fb009dcSAndroid Build Coastguard Worker	punpcklqdq	%xmm2,%xmm0
730*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,%xmm3
731*8fb009dcSAndroid Build Coastguard Worker	punpcklqdq	%xmm7,%xmm6
732*8fb009dcSAndroid Build Coastguard Worker	punpckhqdq	%xmm2,%xmm1
733*8fb009dcSAndroid Build Coastguard Worker	punpckhqdq	%xmm7,%xmm3
734*8fb009dcSAndroid Build Coastguard Worker	movdqu	-128(%esi),%xmm4
735*8fb009dcSAndroid Build Coastguard Worker	movdqu	-64(%esi),%xmm5
736*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%esi),%xmm2
737*8fb009dcSAndroid Build Coastguard Worker	movdqu	64(%esi),%xmm7
738*8fb009dcSAndroid Build Coastguard Worker	leal	16(%esi),%esi
739*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
740*8fb009dcSAndroid Build Coastguard Worker	movdqa	(%ebx),%xmm0
741*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm5
742*8fb009dcSAndroid Build Coastguard Worker	movdqa	16(%ebx),%xmm1
743*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm6
744*8fb009dcSAndroid Build Coastguard Worker	movdqa	32(%ebx),%xmm2
745*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm7
746*8fb009dcSAndroid Build Coastguard Worker	movdqa	48(%ebx),%xmm3
747*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm4,-128(%edi)
748*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm5,-64(%edi)
749*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm6,(%edi)
750*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm7,64(%edi)
751*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edi),%edi
752*8fb009dcSAndroid Build Coastguard Worker	paddd	(%ebp),%xmm0
753*8fb009dcSAndroid Build Coastguard Worker	paddd	16(%ebp),%xmm1
754*8fb009dcSAndroid Build Coastguard Worker	paddd	32(%ebp),%xmm2
755*8fb009dcSAndroid Build Coastguard Worker	paddd	48(%ebp),%xmm3
756*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm6
757*8fb009dcSAndroid Build Coastguard Worker	punpckldq	%xmm1,%xmm0
758*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm7
759*8fb009dcSAndroid Build Coastguard Worker	punpckldq	%xmm3,%xmm2
760*8fb009dcSAndroid Build Coastguard Worker	punpckhdq	%xmm1,%xmm6
761*8fb009dcSAndroid Build Coastguard Worker	punpckhdq	%xmm3,%xmm7
762*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm1
763*8fb009dcSAndroid Build Coastguard Worker	punpcklqdq	%xmm2,%xmm0
764*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,%xmm3
765*8fb009dcSAndroid Build Coastguard Worker	punpcklqdq	%xmm7,%xmm6
766*8fb009dcSAndroid Build Coastguard Worker	punpckhqdq	%xmm2,%xmm1
767*8fb009dcSAndroid Build Coastguard Worker	punpckhqdq	%xmm7,%xmm3
768*8fb009dcSAndroid Build Coastguard Worker	movdqu	-128(%esi),%xmm4
769*8fb009dcSAndroid Build Coastguard Worker	movdqu	-64(%esi),%xmm5
770*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%esi),%xmm2
771*8fb009dcSAndroid Build Coastguard Worker	movdqu	64(%esi),%xmm7
772*8fb009dcSAndroid Build Coastguard Worker	leal	16(%esi),%esi
773*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
774*8fb009dcSAndroid Build Coastguard Worker	movdqa	64(%ebx),%xmm0
775*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm5
776*8fb009dcSAndroid Build Coastguard Worker	movdqa	80(%ebx),%xmm1
777*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm6
778*8fb009dcSAndroid Build Coastguard Worker	movdqa	96(%ebx),%xmm2
779*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm7
780*8fb009dcSAndroid Build Coastguard Worker	movdqa	112(%ebx),%xmm3
781*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm4,-128(%edi)
782*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm5,-64(%edi)
783*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm6,(%edi)
784*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm7,64(%edi)
785*8fb009dcSAndroid Build Coastguard Worker	leal	16(%edi),%edi
786*8fb009dcSAndroid Build Coastguard Worker	paddd	64(%ebp),%xmm0
787*8fb009dcSAndroid Build Coastguard Worker	paddd	80(%ebp),%xmm1
788*8fb009dcSAndroid Build Coastguard Worker	paddd	96(%ebp),%xmm2
789*8fb009dcSAndroid Build Coastguard Worker	paddd	112(%ebp),%xmm3
790*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm6
791*8fb009dcSAndroid Build Coastguard Worker	punpckldq	%xmm1,%xmm0
792*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm7
793*8fb009dcSAndroid Build Coastguard Worker	punpckldq	%xmm3,%xmm2
794*8fb009dcSAndroid Build Coastguard Worker	punpckhdq	%xmm1,%xmm6
795*8fb009dcSAndroid Build Coastguard Worker	punpckhdq	%xmm3,%xmm7
796*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm1
797*8fb009dcSAndroid Build Coastguard Worker	punpcklqdq	%xmm2,%xmm0
798*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,%xmm3
799*8fb009dcSAndroid Build Coastguard Worker	punpcklqdq	%xmm7,%xmm6
800*8fb009dcSAndroid Build Coastguard Worker	punpckhqdq	%xmm2,%xmm1
801*8fb009dcSAndroid Build Coastguard Worker	punpckhqdq	%xmm7,%xmm3
802*8fb009dcSAndroid Build Coastguard Worker	movdqu	-128(%esi),%xmm4
803*8fb009dcSAndroid Build Coastguard Worker	movdqu	-64(%esi),%xmm5
804*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%esi),%xmm2
805*8fb009dcSAndroid Build Coastguard Worker	movdqu	64(%esi),%xmm7
806*8fb009dcSAndroid Build Coastguard Worker	leal	208(%esi),%esi
807*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
808*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm5
809*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm6
810*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm7
811*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm4,-128(%edi)
812*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm5,-64(%edi)
813*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm6,(%edi)
814*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm7,64(%edi)
815*8fb009dcSAndroid Build Coastguard Worker	leal	208(%edi),%edi
816*8fb009dcSAndroid Build Coastguard Worker	subl	$256,%ecx
817*8fb009dcSAndroid Build Coastguard Worker	jnc	.L007outer_loop
818*8fb009dcSAndroid Build Coastguard Worker	addl	$256,%ecx
819*8fb009dcSAndroid Build Coastguard Worker	jz	.L009done
820*8fb009dcSAndroid Build Coastguard Worker	movl	520(%esp),%ebx
821*8fb009dcSAndroid Build Coastguard Worker	leal	-128(%esi),%esi
822*8fb009dcSAndroid Build Coastguard Worker	movl	516(%esp),%edx
823*8fb009dcSAndroid Build Coastguard Worker	leal	-128(%edi),%edi
824*8fb009dcSAndroid Build Coastguard Worker	movd	64(%ebp),%xmm2
825*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%ebx),%xmm3
826*8fb009dcSAndroid Build Coastguard Worker	paddd	96(%eax),%xmm2
827*8fb009dcSAndroid Build Coastguard Worker	pand	112(%eax),%xmm3
828*8fb009dcSAndroid Build Coastguard Worker	por	%xmm2,%xmm3
829*8fb009dcSAndroid Build Coastguard Worker.L0061x:
830*8fb009dcSAndroid Build Coastguard Worker	movdqa	32(%eax),%xmm0
831*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%edx),%xmm1
832*8fb009dcSAndroid Build Coastguard Worker	movdqu	16(%edx),%xmm2
833*8fb009dcSAndroid Build Coastguard Worker	movdqa	(%eax),%xmm6
834*8fb009dcSAndroid Build Coastguard Worker	movdqa	16(%eax),%xmm7
835*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,48(%esp)
836*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,(%esp)
837*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,16(%esp)
838*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,32(%esp)
839*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,48(%esp)
840*8fb009dcSAndroid Build Coastguard Worker	movl	$10,%edx
841*8fb009dcSAndroid Build Coastguard Worker	jmp	.L010loop1x
842*8fb009dcSAndroid Build Coastguard Worker.align	16
843*8fb009dcSAndroid Build Coastguard Worker.L011outer1x:
844*8fb009dcSAndroid Build Coastguard Worker	movdqa	80(%eax),%xmm3
845*8fb009dcSAndroid Build Coastguard Worker	movdqa	(%esp),%xmm0
846*8fb009dcSAndroid Build Coastguard Worker	movdqa	16(%esp),%xmm1
847*8fb009dcSAndroid Build Coastguard Worker	movdqa	32(%esp),%xmm2
848*8fb009dcSAndroid Build Coastguard Worker	paddd	48(%esp),%xmm3
849*8fb009dcSAndroid Build Coastguard Worker	movl	$10,%edx
850*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,48(%esp)
851*8fb009dcSAndroid Build Coastguard Worker	jmp	.L010loop1x
852*8fb009dcSAndroid Build Coastguard Worker.align	16
853*8fb009dcSAndroid Build Coastguard Worker.L010loop1x:
854*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm1,%xmm0
855*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
856*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,222
857*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm3,%xmm2
858*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
859*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,%xmm4
860*8fb009dcSAndroid Build Coastguard Worker	psrld	$20,%xmm1
861*8fb009dcSAndroid Build Coastguard Worker	pslld	$12,%xmm4
862*8fb009dcSAndroid Build Coastguard Worker	por	%xmm4,%xmm1
863*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm1,%xmm0
864*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
865*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,223
866*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm3,%xmm2
867*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
868*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,%xmm4
869*8fb009dcSAndroid Build Coastguard Worker	psrld	$25,%xmm1
870*8fb009dcSAndroid Build Coastguard Worker	pslld	$7,%xmm4
871*8fb009dcSAndroid Build Coastguard Worker	por	%xmm4,%xmm1
872*8fb009dcSAndroid Build Coastguard Worker	pshufd	$78,%xmm2,%xmm2
873*8fb009dcSAndroid Build Coastguard Worker	pshufd	$57,%xmm1,%xmm1
874*8fb009dcSAndroid Build Coastguard Worker	pshufd	$147,%xmm3,%xmm3
875*8fb009dcSAndroid Build Coastguard Worker	nop
876*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm1,%xmm0
877*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
878*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,222
879*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm3,%xmm2
880*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
881*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,%xmm4
882*8fb009dcSAndroid Build Coastguard Worker	psrld	$20,%xmm1
883*8fb009dcSAndroid Build Coastguard Worker	pslld	$12,%xmm4
884*8fb009dcSAndroid Build Coastguard Worker	por	%xmm4,%xmm1
885*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm1,%xmm0
886*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
887*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,223
888*8fb009dcSAndroid Build Coastguard Worker	paddd	%xmm3,%xmm2
889*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm1
890*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,%xmm4
891*8fb009dcSAndroid Build Coastguard Worker	psrld	$25,%xmm1
892*8fb009dcSAndroid Build Coastguard Worker	pslld	$7,%xmm4
893*8fb009dcSAndroid Build Coastguard Worker	por	%xmm4,%xmm1
894*8fb009dcSAndroid Build Coastguard Worker	pshufd	$78,%xmm2,%xmm2
895*8fb009dcSAndroid Build Coastguard Worker	pshufd	$147,%xmm1,%xmm1
896*8fb009dcSAndroid Build Coastguard Worker	pshufd	$57,%xmm3,%xmm3
897*8fb009dcSAndroid Build Coastguard Worker	decl	%edx
898*8fb009dcSAndroid Build Coastguard Worker	jnz	.L010loop1x
899*8fb009dcSAndroid Build Coastguard Worker	paddd	(%esp),%xmm0
900*8fb009dcSAndroid Build Coastguard Worker	paddd	16(%esp),%xmm1
901*8fb009dcSAndroid Build Coastguard Worker	paddd	32(%esp),%xmm2
902*8fb009dcSAndroid Build Coastguard Worker	paddd	48(%esp),%xmm3
903*8fb009dcSAndroid Build Coastguard Worker	cmpl	$64,%ecx
904*8fb009dcSAndroid Build Coastguard Worker	jb	.L012tail
905*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%esi),%xmm4
906*8fb009dcSAndroid Build Coastguard Worker	movdqu	16(%esi),%xmm5
907*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm0
908*8fb009dcSAndroid Build Coastguard Worker	movdqu	32(%esi),%xmm4
909*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm1
910*8fb009dcSAndroid Build Coastguard Worker	movdqu	48(%esi),%xmm5
911*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm2
912*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm3
913*8fb009dcSAndroid Build Coastguard Worker	leal	64(%esi),%esi
914*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm0,(%edi)
915*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm1,16(%edi)
916*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm2,32(%edi)
917*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm3,48(%edi)
918*8fb009dcSAndroid Build Coastguard Worker	leal	64(%edi),%edi
919*8fb009dcSAndroid Build Coastguard Worker	subl	$64,%ecx
920*8fb009dcSAndroid Build Coastguard Worker	jnz	.L011outer1x
921*8fb009dcSAndroid Build Coastguard Worker	jmp	.L009done
922*8fb009dcSAndroid Build Coastguard Worker.L012tail:
923*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,(%esp)
924*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm1,16(%esp)
925*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,32(%esp)
926*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,48(%esp)
927*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%eax
928*8fb009dcSAndroid Build Coastguard Worker	xorl	%edx,%edx
929*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebp,%ebp
930*8fb009dcSAndroid Build Coastguard Worker.L013tail_loop:
931*8fb009dcSAndroid Build Coastguard Worker	movb	(%esp,%ebp,1),%al
932*8fb009dcSAndroid Build Coastguard Worker	movb	(%esi,%ebp,1),%dl
933*8fb009dcSAndroid Build Coastguard Worker	leal	1(%ebp),%ebp
934*8fb009dcSAndroid Build Coastguard Worker	xorb	%dl,%al
935*8fb009dcSAndroid Build Coastguard Worker	movb	%al,-1(%edi,%ebp,1)
936*8fb009dcSAndroid Build Coastguard Worker	decl	%ecx
937*8fb009dcSAndroid Build Coastguard Worker	jnz	.L013tail_loop
938*8fb009dcSAndroid Build Coastguard Worker.L009done:
939*8fb009dcSAndroid Build Coastguard Worker	movl	512(%esp),%esp
940*8fb009dcSAndroid Build Coastguard Worker	popl	%edi
941*8fb009dcSAndroid Build Coastguard Worker	popl	%esi
942*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
943*8fb009dcSAndroid Build Coastguard Worker	popl	%ebp
944*8fb009dcSAndroid Build Coastguard Worker	ret
945*8fb009dcSAndroid Build Coastguard Worker.size	ChaCha20_ctr32_ssse3,.-.L_ChaCha20_ctr32_ssse3_begin
946*8fb009dcSAndroid Build Coastguard Worker.align	64
947*8fb009dcSAndroid Build Coastguard Worker.Lssse3_data:
948*8fb009dcSAndroid Build Coastguard Worker.byte	2,3,0,1,6,7,4,5,10,11,8,9,14,15,12,13
949*8fb009dcSAndroid Build Coastguard Worker.byte	3,0,1,2,7,4,5,6,11,8,9,10,15,12,13,14
950*8fb009dcSAndroid Build Coastguard Worker.long	1634760805,857760878,2036477234,1797285236
951*8fb009dcSAndroid Build Coastguard Worker.long	0,1,2,3
952*8fb009dcSAndroid Build Coastguard Worker.long	4,4,4,4
953*8fb009dcSAndroid Build Coastguard Worker.long	1,0,0,0
954*8fb009dcSAndroid Build Coastguard Worker.long	4,0,0,0
955*8fb009dcSAndroid Build Coastguard Worker.long	0,-1,-1,-1
956*8fb009dcSAndroid Build Coastguard Worker.align	64
957*8fb009dcSAndroid Build Coastguard Worker.byte	67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54
958*8fb009dcSAndroid Build Coastguard Worker.byte	44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32
959*8fb009dcSAndroid Build Coastguard Worker.byte	60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111
960*8fb009dcSAndroid Build Coastguard Worker.byte	114,103,62,0
961*8fb009dcSAndroid Build Coastguard Worker#endif  // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__)
962