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