xref: /aosp_15_r20/external/boringssl/src/gen/bcm/co-586-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	_bn_mul_comba8
9*8fb009dcSAndroid Build Coastguard Worker.private_extern	_bn_mul_comba8
10*8fb009dcSAndroid Build Coastguard Worker.align	4
11*8fb009dcSAndroid Build Coastguard Worker_bn_mul_comba8:
12*8fb009dcSAndroid Build Coastguard WorkerL_bn_mul_comba8_begin:
13*8fb009dcSAndroid Build Coastguard Worker	pushl	%esi
14*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esp),%esi
15*8fb009dcSAndroid Build Coastguard Worker	pushl	%edi
16*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%edi
17*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebp
18*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
19*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebx,%ebx
20*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%eax
21*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ecx
22*8fb009dcSAndroid Build Coastguard Worker	movl	(%edi),%edx
23*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 0
24*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebp,%ebp
25*8fb009dcSAndroid Build Coastguard Worker	# mul a[0]*b[0]
26*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
27*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
28*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
29*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
30*8fb009dcSAndroid Build Coastguard Worker	movl	(%edi),%edx
31*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
32*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,(%eax)
33*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%eax
34*8fb009dcSAndroid Build Coastguard Worker	# saved r[0]
35*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 1
36*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebx,%ebx
37*8fb009dcSAndroid Build Coastguard Worker	# mul a[1]*b[0]
38*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
39*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
40*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%eax
41*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
42*8fb009dcSAndroid Build Coastguard Worker	movl	4(%edi),%edx
43*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
44*8fb009dcSAndroid Build Coastguard Worker	# mul a[0]*b[1]
45*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
46*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
47*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
48*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
49*8fb009dcSAndroid Build Coastguard Worker	movl	(%edi),%edx
50*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
51*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,4(%eax)
52*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%eax
53*8fb009dcSAndroid Build Coastguard Worker	# saved r[1]
54*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 2
55*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ecx
56*8fb009dcSAndroid Build Coastguard Worker	# mul a[2]*b[0]
57*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
58*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
59*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%eax
60*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
61*8fb009dcSAndroid Build Coastguard Worker	movl	4(%edi),%edx
62*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
63*8fb009dcSAndroid Build Coastguard Worker	# mul a[1]*b[1]
64*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
65*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
66*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%eax
67*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
68*8fb009dcSAndroid Build Coastguard Worker	movl	8(%edi),%edx
69*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
70*8fb009dcSAndroid Build Coastguard Worker	# mul a[0]*b[2]
71*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
72*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
73*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
74*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
75*8fb009dcSAndroid Build Coastguard Worker	movl	(%edi),%edx
76*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
77*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,8(%eax)
78*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%eax
79*8fb009dcSAndroid Build Coastguard Worker	# saved r[2]
80*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 3
81*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebp,%ebp
82*8fb009dcSAndroid Build Coastguard Worker	# mul a[3]*b[0]
83*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
84*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
85*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%eax
86*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
87*8fb009dcSAndroid Build Coastguard Worker	movl	4(%edi),%edx
88*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
89*8fb009dcSAndroid Build Coastguard Worker	# mul a[2]*b[1]
90*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
91*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
92*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%eax
93*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
94*8fb009dcSAndroid Build Coastguard Worker	movl	8(%edi),%edx
95*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
96*8fb009dcSAndroid Build Coastguard Worker	# mul a[1]*b[2]
97*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
98*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
99*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%eax
100*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
101*8fb009dcSAndroid Build Coastguard Worker	movl	12(%edi),%edx
102*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
103*8fb009dcSAndroid Build Coastguard Worker	# mul a[0]*b[3]
104*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
105*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
106*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
107*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
108*8fb009dcSAndroid Build Coastguard Worker	movl	(%edi),%edx
109*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
110*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,12(%eax)
111*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%eax
112*8fb009dcSAndroid Build Coastguard Worker	# saved r[3]
113*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 4
114*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebx,%ebx
115*8fb009dcSAndroid Build Coastguard Worker	# mul a[4]*b[0]
116*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
117*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
118*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%eax
119*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
120*8fb009dcSAndroid Build Coastguard Worker	movl	4(%edi),%edx
121*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
122*8fb009dcSAndroid Build Coastguard Worker	# mul a[3]*b[1]
123*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
124*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
125*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%eax
126*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
127*8fb009dcSAndroid Build Coastguard Worker	movl	8(%edi),%edx
128*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
129*8fb009dcSAndroid Build Coastguard Worker	# mul a[2]*b[2]
130*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
131*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
132*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%eax
133*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
134*8fb009dcSAndroid Build Coastguard Worker	movl	12(%edi),%edx
135*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
136*8fb009dcSAndroid Build Coastguard Worker	# mul a[1]*b[3]
137*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
138*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
139*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%eax
140*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
141*8fb009dcSAndroid Build Coastguard Worker	movl	16(%edi),%edx
142*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
143*8fb009dcSAndroid Build Coastguard Worker	# mul a[0]*b[4]
144*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
145*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
146*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
147*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
148*8fb009dcSAndroid Build Coastguard Worker	movl	(%edi),%edx
149*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
150*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,16(%eax)
151*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%eax
152*8fb009dcSAndroid Build Coastguard Worker	# saved r[4]
153*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 5
154*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ecx
155*8fb009dcSAndroid Build Coastguard Worker	# mul a[5]*b[0]
156*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
157*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
158*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%eax
159*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
160*8fb009dcSAndroid Build Coastguard Worker	movl	4(%edi),%edx
161*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
162*8fb009dcSAndroid Build Coastguard Worker	# mul a[4]*b[1]
163*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
164*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
165*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%eax
166*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
167*8fb009dcSAndroid Build Coastguard Worker	movl	8(%edi),%edx
168*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
169*8fb009dcSAndroid Build Coastguard Worker	# mul a[3]*b[2]
170*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
171*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
172*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%eax
173*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
174*8fb009dcSAndroid Build Coastguard Worker	movl	12(%edi),%edx
175*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
176*8fb009dcSAndroid Build Coastguard Worker	# mul a[2]*b[3]
177*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
178*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
179*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%eax
180*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
181*8fb009dcSAndroid Build Coastguard Worker	movl	16(%edi),%edx
182*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
183*8fb009dcSAndroid Build Coastguard Worker	# mul a[1]*b[4]
184*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
185*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
186*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%eax
187*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
188*8fb009dcSAndroid Build Coastguard Worker	movl	20(%edi),%edx
189*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
190*8fb009dcSAndroid Build Coastguard Worker	# mul a[0]*b[5]
191*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
192*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
193*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
194*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
195*8fb009dcSAndroid Build Coastguard Worker	movl	(%edi),%edx
196*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
197*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,20(%eax)
198*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%eax
199*8fb009dcSAndroid Build Coastguard Worker	# saved r[5]
200*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 6
201*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebp,%ebp
202*8fb009dcSAndroid Build Coastguard Worker	# mul a[6]*b[0]
203*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
204*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
205*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%eax
206*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
207*8fb009dcSAndroid Build Coastguard Worker	movl	4(%edi),%edx
208*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
209*8fb009dcSAndroid Build Coastguard Worker	# mul a[5]*b[1]
210*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
211*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
212*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%eax
213*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
214*8fb009dcSAndroid Build Coastguard Worker	movl	8(%edi),%edx
215*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
216*8fb009dcSAndroid Build Coastguard Worker	# mul a[4]*b[2]
217*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
218*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
219*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%eax
220*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
221*8fb009dcSAndroid Build Coastguard Worker	movl	12(%edi),%edx
222*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
223*8fb009dcSAndroid Build Coastguard Worker	# mul a[3]*b[3]
224*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
225*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
226*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%eax
227*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
228*8fb009dcSAndroid Build Coastguard Worker	movl	16(%edi),%edx
229*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
230*8fb009dcSAndroid Build Coastguard Worker	# mul a[2]*b[4]
231*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
232*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
233*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%eax
234*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
235*8fb009dcSAndroid Build Coastguard Worker	movl	20(%edi),%edx
236*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
237*8fb009dcSAndroid Build Coastguard Worker	# mul a[1]*b[5]
238*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
239*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
240*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%eax
241*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
242*8fb009dcSAndroid Build Coastguard Worker	movl	24(%edi),%edx
243*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
244*8fb009dcSAndroid Build Coastguard Worker	# mul a[0]*b[6]
245*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
246*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
247*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
248*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
249*8fb009dcSAndroid Build Coastguard Worker	movl	(%edi),%edx
250*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
251*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,24(%eax)
252*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esi),%eax
253*8fb009dcSAndroid Build Coastguard Worker	# saved r[6]
254*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 7
255*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebx,%ebx
256*8fb009dcSAndroid Build Coastguard Worker	# mul a[7]*b[0]
257*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
258*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
259*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%eax
260*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
261*8fb009dcSAndroid Build Coastguard Worker	movl	4(%edi),%edx
262*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
263*8fb009dcSAndroid Build Coastguard Worker	# mul a[6]*b[1]
264*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
265*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
266*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%eax
267*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
268*8fb009dcSAndroid Build Coastguard Worker	movl	8(%edi),%edx
269*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
270*8fb009dcSAndroid Build Coastguard Worker	# mul a[5]*b[2]
271*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
272*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
273*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%eax
274*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
275*8fb009dcSAndroid Build Coastguard Worker	movl	12(%edi),%edx
276*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
277*8fb009dcSAndroid Build Coastguard Worker	# mul a[4]*b[3]
278*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
279*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
280*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%eax
281*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
282*8fb009dcSAndroid Build Coastguard Worker	movl	16(%edi),%edx
283*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
284*8fb009dcSAndroid Build Coastguard Worker	# mul a[3]*b[4]
285*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
286*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
287*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%eax
288*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
289*8fb009dcSAndroid Build Coastguard Worker	movl	20(%edi),%edx
290*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
291*8fb009dcSAndroid Build Coastguard Worker	# mul a[2]*b[5]
292*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
293*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
294*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%eax
295*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
296*8fb009dcSAndroid Build Coastguard Worker	movl	24(%edi),%edx
297*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
298*8fb009dcSAndroid Build Coastguard Worker	# mul a[1]*b[6]
299*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
300*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
301*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%eax
302*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
303*8fb009dcSAndroid Build Coastguard Worker	movl	28(%edi),%edx
304*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
305*8fb009dcSAndroid Build Coastguard Worker	# mul a[0]*b[7]
306*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
307*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
308*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
309*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
310*8fb009dcSAndroid Build Coastguard Worker	movl	4(%edi),%edx
311*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
312*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,28(%eax)
313*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esi),%eax
314*8fb009dcSAndroid Build Coastguard Worker	# saved r[7]
315*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 8
316*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ecx
317*8fb009dcSAndroid Build Coastguard Worker	# mul a[7]*b[1]
318*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
319*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
320*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%eax
321*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
322*8fb009dcSAndroid Build Coastguard Worker	movl	8(%edi),%edx
323*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
324*8fb009dcSAndroid Build Coastguard Worker	# mul a[6]*b[2]
325*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
326*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
327*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%eax
328*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
329*8fb009dcSAndroid Build Coastguard Worker	movl	12(%edi),%edx
330*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
331*8fb009dcSAndroid Build Coastguard Worker	# mul a[5]*b[3]
332*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
333*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
334*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%eax
335*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
336*8fb009dcSAndroid Build Coastguard Worker	movl	16(%edi),%edx
337*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
338*8fb009dcSAndroid Build Coastguard Worker	# mul a[4]*b[4]
339*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
340*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
341*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%eax
342*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
343*8fb009dcSAndroid Build Coastguard Worker	movl	20(%edi),%edx
344*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
345*8fb009dcSAndroid Build Coastguard Worker	# mul a[3]*b[5]
346*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
347*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
348*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%eax
349*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
350*8fb009dcSAndroid Build Coastguard Worker	movl	24(%edi),%edx
351*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
352*8fb009dcSAndroid Build Coastguard Worker	# mul a[2]*b[6]
353*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
354*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
355*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%eax
356*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
357*8fb009dcSAndroid Build Coastguard Worker	movl	28(%edi),%edx
358*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
359*8fb009dcSAndroid Build Coastguard Worker	# mul a[1]*b[7]
360*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
361*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
362*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
363*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
364*8fb009dcSAndroid Build Coastguard Worker	movl	8(%edi),%edx
365*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
366*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,32(%eax)
367*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esi),%eax
368*8fb009dcSAndroid Build Coastguard Worker	# saved r[8]
369*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 9
370*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebp,%ebp
371*8fb009dcSAndroid Build Coastguard Worker	# mul a[7]*b[2]
372*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
373*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
374*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%eax
375*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
376*8fb009dcSAndroid Build Coastguard Worker	movl	12(%edi),%edx
377*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
378*8fb009dcSAndroid Build Coastguard Worker	# mul a[6]*b[3]
379*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
380*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
381*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%eax
382*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
383*8fb009dcSAndroid Build Coastguard Worker	movl	16(%edi),%edx
384*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
385*8fb009dcSAndroid Build Coastguard Worker	# mul a[5]*b[4]
386*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
387*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
388*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%eax
389*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
390*8fb009dcSAndroid Build Coastguard Worker	movl	20(%edi),%edx
391*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
392*8fb009dcSAndroid Build Coastguard Worker	# mul a[4]*b[5]
393*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
394*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
395*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%eax
396*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
397*8fb009dcSAndroid Build Coastguard Worker	movl	24(%edi),%edx
398*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
399*8fb009dcSAndroid Build Coastguard Worker	# mul a[3]*b[6]
400*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
401*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
402*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%eax
403*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
404*8fb009dcSAndroid Build Coastguard Worker	movl	28(%edi),%edx
405*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
406*8fb009dcSAndroid Build Coastguard Worker	# mul a[2]*b[7]
407*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
408*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
409*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
410*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
411*8fb009dcSAndroid Build Coastguard Worker	movl	12(%edi),%edx
412*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
413*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,36(%eax)
414*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esi),%eax
415*8fb009dcSAndroid Build Coastguard Worker	# saved r[9]
416*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 10
417*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebx,%ebx
418*8fb009dcSAndroid Build Coastguard Worker	# mul a[7]*b[3]
419*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
420*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
421*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%eax
422*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
423*8fb009dcSAndroid Build Coastguard Worker	movl	16(%edi),%edx
424*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
425*8fb009dcSAndroid Build Coastguard Worker	# mul a[6]*b[4]
426*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
427*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
428*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%eax
429*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
430*8fb009dcSAndroid Build Coastguard Worker	movl	20(%edi),%edx
431*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
432*8fb009dcSAndroid Build Coastguard Worker	# mul a[5]*b[5]
433*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
434*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
435*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%eax
436*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
437*8fb009dcSAndroid Build Coastguard Worker	movl	24(%edi),%edx
438*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
439*8fb009dcSAndroid Build Coastguard Worker	# mul a[4]*b[6]
440*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
441*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
442*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%eax
443*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
444*8fb009dcSAndroid Build Coastguard Worker	movl	28(%edi),%edx
445*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
446*8fb009dcSAndroid Build Coastguard Worker	# mul a[3]*b[7]
447*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
448*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
449*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
450*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
451*8fb009dcSAndroid Build Coastguard Worker	movl	16(%edi),%edx
452*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
453*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,40(%eax)
454*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esi),%eax
455*8fb009dcSAndroid Build Coastguard Worker	# saved r[10]
456*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 11
457*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ecx
458*8fb009dcSAndroid Build Coastguard Worker	# mul a[7]*b[4]
459*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
460*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
461*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%eax
462*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
463*8fb009dcSAndroid Build Coastguard Worker	movl	20(%edi),%edx
464*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
465*8fb009dcSAndroid Build Coastguard Worker	# mul a[6]*b[5]
466*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
467*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
468*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%eax
469*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
470*8fb009dcSAndroid Build Coastguard Worker	movl	24(%edi),%edx
471*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
472*8fb009dcSAndroid Build Coastguard Worker	# mul a[5]*b[6]
473*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
474*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
475*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%eax
476*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
477*8fb009dcSAndroid Build Coastguard Worker	movl	28(%edi),%edx
478*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
479*8fb009dcSAndroid Build Coastguard Worker	# mul a[4]*b[7]
480*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
481*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
482*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
483*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
484*8fb009dcSAndroid Build Coastguard Worker	movl	20(%edi),%edx
485*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
486*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,44(%eax)
487*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esi),%eax
488*8fb009dcSAndroid Build Coastguard Worker	# saved r[11]
489*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 12
490*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebp,%ebp
491*8fb009dcSAndroid Build Coastguard Worker	# mul a[7]*b[5]
492*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
493*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
494*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%eax
495*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
496*8fb009dcSAndroid Build Coastguard Worker	movl	24(%edi),%edx
497*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
498*8fb009dcSAndroid Build Coastguard Worker	# mul a[6]*b[6]
499*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
500*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
501*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%eax
502*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
503*8fb009dcSAndroid Build Coastguard Worker	movl	28(%edi),%edx
504*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
505*8fb009dcSAndroid Build Coastguard Worker	# mul a[5]*b[7]
506*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
507*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
508*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
509*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
510*8fb009dcSAndroid Build Coastguard Worker	movl	24(%edi),%edx
511*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
512*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,48(%eax)
513*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esi),%eax
514*8fb009dcSAndroid Build Coastguard Worker	# saved r[12]
515*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 13
516*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebx,%ebx
517*8fb009dcSAndroid Build Coastguard Worker	# mul a[7]*b[6]
518*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
519*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
520*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%eax
521*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
522*8fb009dcSAndroid Build Coastguard Worker	movl	28(%edi),%edx
523*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
524*8fb009dcSAndroid Build Coastguard Worker	# mul a[6]*b[7]
525*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
526*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
527*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
528*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
529*8fb009dcSAndroid Build Coastguard Worker	movl	28(%edi),%edx
530*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
531*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,52(%eax)
532*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esi),%eax
533*8fb009dcSAndroid Build Coastguard Worker	# saved r[13]
534*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 14
535*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ecx
536*8fb009dcSAndroid Build Coastguard Worker	# mul a[7]*b[7]
537*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
538*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
539*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
540*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
541*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
542*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,56(%eax)
543*8fb009dcSAndroid Build Coastguard Worker	# saved r[14]
544*8fb009dcSAndroid Build Coastguard Worker	# save r[15]
545*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,60(%eax)
546*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
547*8fb009dcSAndroid Build Coastguard Worker	popl	%ebp
548*8fb009dcSAndroid Build Coastguard Worker	popl	%edi
549*8fb009dcSAndroid Build Coastguard Worker	popl	%esi
550*8fb009dcSAndroid Build Coastguard Worker	ret
551*8fb009dcSAndroid Build Coastguard Worker.globl	_bn_mul_comba4
552*8fb009dcSAndroid Build Coastguard Worker.private_extern	_bn_mul_comba4
553*8fb009dcSAndroid Build Coastguard Worker.align	4
554*8fb009dcSAndroid Build Coastguard Worker_bn_mul_comba4:
555*8fb009dcSAndroid Build Coastguard WorkerL_bn_mul_comba4_begin:
556*8fb009dcSAndroid Build Coastguard Worker	pushl	%esi
557*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esp),%esi
558*8fb009dcSAndroid Build Coastguard Worker	pushl	%edi
559*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%edi
560*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebp
561*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
562*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebx,%ebx
563*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%eax
564*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ecx
565*8fb009dcSAndroid Build Coastguard Worker	movl	(%edi),%edx
566*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 0
567*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebp,%ebp
568*8fb009dcSAndroid Build Coastguard Worker	# mul a[0]*b[0]
569*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
570*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
571*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
572*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
573*8fb009dcSAndroid Build Coastguard Worker	movl	(%edi),%edx
574*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
575*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,(%eax)
576*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%eax
577*8fb009dcSAndroid Build Coastguard Worker	# saved r[0]
578*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 1
579*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebx,%ebx
580*8fb009dcSAndroid Build Coastguard Worker	# mul a[1]*b[0]
581*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
582*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
583*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%eax
584*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
585*8fb009dcSAndroid Build Coastguard Worker	movl	4(%edi),%edx
586*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
587*8fb009dcSAndroid Build Coastguard Worker	# mul a[0]*b[1]
588*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
589*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
590*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
591*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
592*8fb009dcSAndroid Build Coastguard Worker	movl	(%edi),%edx
593*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
594*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,4(%eax)
595*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%eax
596*8fb009dcSAndroid Build Coastguard Worker	# saved r[1]
597*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 2
598*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ecx
599*8fb009dcSAndroid Build Coastguard Worker	# mul a[2]*b[0]
600*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
601*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
602*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%eax
603*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
604*8fb009dcSAndroid Build Coastguard Worker	movl	4(%edi),%edx
605*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
606*8fb009dcSAndroid Build Coastguard Worker	# mul a[1]*b[1]
607*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
608*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
609*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%eax
610*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
611*8fb009dcSAndroid Build Coastguard Worker	movl	8(%edi),%edx
612*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
613*8fb009dcSAndroid Build Coastguard Worker	# mul a[0]*b[2]
614*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
615*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
616*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
617*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
618*8fb009dcSAndroid Build Coastguard Worker	movl	(%edi),%edx
619*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
620*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,8(%eax)
621*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%eax
622*8fb009dcSAndroid Build Coastguard Worker	# saved r[2]
623*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 3
624*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebp,%ebp
625*8fb009dcSAndroid Build Coastguard Worker	# mul a[3]*b[0]
626*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
627*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
628*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%eax
629*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
630*8fb009dcSAndroid Build Coastguard Worker	movl	4(%edi),%edx
631*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
632*8fb009dcSAndroid Build Coastguard Worker	# mul a[2]*b[1]
633*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
634*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
635*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%eax
636*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
637*8fb009dcSAndroid Build Coastguard Worker	movl	8(%edi),%edx
638*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
639*8fb009dcSAndroid Build Coastguard Worker	# mul a[1]*b[2]
640*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
641*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
642*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%eax
643*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
644*8fb009dcSAndroid Build Coastguard Worker	movl	12(%edi),%edx
645*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
646*8fb009dcSAndroid Build Coastguard Worker	# mul a[0]*b[3]
647*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
648*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
649*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
650*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
651*8fb009dcSAndroid Build Coastguard Worker	movl	4(%edi),%edx
652*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
653*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,12(%eax)
654*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%eax
655*8fb009dcSAndroid Build Coastguard Worker	# saved r[3]
656*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 4
657*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebx,%ebx
658*8fb009dcSAndroid Build Coastguard Worker	# mul a[3]*b[1]
659*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
660*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
661*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%eax
662*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
663*8fb009dcSAndroid Build Coastguard Worker	movl	8(%edi),%edx
664*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
665*8fb009dcSAndroid Build Coastguard Worker	# mul a[2]*b[2]
666*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
667*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
668*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%eax
669*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
670*8fb009dcSAndroid Build Coastguard Worker	movl	12(%edi),%edx
671*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
672*8fb009dcSAndroid Build Coastguard Worker	# mul a[1]*b[3]
673*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
674*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
675*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
676*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
677*8fb009dcSAndroid Build Coastguard Worker	movl	8(%edi),%edx
678*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
679*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,16(%eax)
680*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%eax
681*8fb009dcSAndroid Build Coastguard Worker	# saved r[4]
682*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 5
683*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ecx
684*8fb009dcSAndroid Build Coastguard Worker	# mul a[3]*b[2]
685*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
686*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
687*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%eax
688*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
689*8fb009dcSAndroid Build Coastguard Worker	movl	12(%edi),%edx
690*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
691*8fb009dcSAndroid Build Coastguard Worker	# mul a[2]*b[3]
692*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
693*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
694*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
695*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
696*8fb009dcSAndroid Build Coastguard Worker	movl	12(%edi),%edx
697*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
698*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,20(%eax)
699*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%eax
700*8fb009dcSAndroid Build Coastguard Worker	# saved r[5]
701*8fb009dcSAndroid Build Coastguard Worker	# ################## Calculate word 6
702*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebp,%ebp
703*8fb009dcSAndroid Build Coastguard Worker	# mul a[3]*b[3]
704*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
705*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
706*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
707*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
708*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
709*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,24(%eax)
710*8fb009dcSAndroid Build Coastguard Worker	# saved r[6]
711*8fb009dcSAndroid Build Coastguard Worker	# save r[7]
712*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,28(%eax)
713*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
714*8fb009dcSAndroid Build Coastguard Worker	popl	%ebp
715*8fb009dcSAndroid Build Coastguard Worker	popl	%edi
716*8fb009dcSAndroid Build Coastguard Worker	popl	%esi
717*8fb009dcSAndroid Build Coastguard Worker	ret
718*8fb009dcSAndroid Build Coastguard Worker.globl	_bn_sqr_comba8
719*8fb009dcSAndroid Build Coastguard Worker.private_extern	_bn_sqr_comba8
720*8fb009dcSAndroid Build Coastguard Worker.align	4
721*8fb009dcSAndroid Build Coastguard Worker_bn_sqr_comba8:
722*8fb009dcSAndroid Build Coastguard WorkerL_bn_sqr_comba8_begin:
723*8fb009dcSAndroid Build Coastguard Worker	pushl	%esi
724*8fb009dcSAndroid Build Coastguard Worker	pushl	%edi
725*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebp
726*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
727*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%edi
728*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esp),%esi
729*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebx,%ebx
730*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ecx
731*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%eax
732*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 0
733*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebp,%ebp
734*8fb009dcSAndroid Build Coastguard Worker	# sqr a[0]*a[0]
735*8fb009dcSAndroid Build Coastguard Worker	mull	%eax
736*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
737*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
738*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%edx
739*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
740*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,(%edi)
741*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%eax
742*8fb009dcSAndroid Build Coastguard Worker	# saved r[0]
743*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 1
744*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebx,%ebx
745*8fb009dcSAndroid Build Coastguard Worker	# sqr a[1]*a[0]
746*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
747*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
748*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
749*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
750*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
751*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
752*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%eax
753*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
754*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,4(%edi)
755*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%edx
756*8fb009dcSAndroid Build Coastguard Worker	# saved r[1]
757*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 2
758*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ecx
759*8fb009dcSAndroid Build Coastguard Worker	# sqr a[2]*a[0]
760*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
761*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
762*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
763*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
764*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
765*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
766*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%eax
767*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
768*8fb009dcSAndroid Build Coastguard Worker	# sqr a[1]*a[1]
769*8fb009dcSAndroid Build Coastguard Worker	mull	%eax
770*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
771*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
772*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%edx
773*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
774*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,8(%edi)
775*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%eax
776*8fb009dcSAndroid Build Coastguard Worker	# saved r[2]
777*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 3
778*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebp,%ebp
779*8fb009dcSAndroid Build Coastguard Worker	# sqr a[3]*a[0]
780*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
781*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
782*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
783*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
784*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
785*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
786*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%eax
787*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
788*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%edx
789*8fb009dcSAndroid Build Coastguard Worker	# sqr a[2]*a[1]
790*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
791*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
792*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
793*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
794*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
795*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
796*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%eax
797*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
798*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,12(%edi)
799*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%edx
800*8fb009dcSAndroid Build Coastguard Worker	# saved r[3]
801*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 4
802*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebx,%ebx
803*8fb009dcSAndroid Build Coastguard Worker	# sqr a[4]*a[0]
804*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
805*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
806*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
807*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
808*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
809*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
810*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%eax
811*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
812*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%edx
813*8fb009dcSAndroid Build Coastguard Worker	# sqr a[3]*a[1]
814*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
815*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
816*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
817*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
818*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
819*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
820*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%eax
821*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
822*8fb009dcSAndroid Build Coastguard Worker	# sqr a[2]*a[2]
823*8fb009dcSAndroid Build Coastguard Worker	mull	%eax
824*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
825*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
826*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%edx
827*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
828*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,16(%edi)
829*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%eax
830*8fb009dcSAndroid Build Coastguard Worker	# saved r[4]
831*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 5
832*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ecx
833*8fb009dcSAndroid Build Coastguard Worker	# sqr a[5]*a[0]
834*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
835*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
836*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
837*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
838*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
839*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
840*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%eax
841*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
842*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%edx
843*8fb009dcSAndroid Build Coastguard Worker	# sqr a[4]*a[1]
844*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
845*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
846*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
847*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
848*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
849*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
850*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%eax
851*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
852*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%edx
853*8fb009dcSAndroid Build Coastguard Worker	# sqr a[3]*a[2]
854*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
855*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
856*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
857*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
858*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
859*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
860*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%eax
861*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
862*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,20(%edi)
863*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%edx
864*8fb009dcSAndroid Build Coastguard Worker	# saved r[5]
865*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 6
866*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebp,%ebp
867*8fb009dcSAndroid Build Coastguard Worker	# sqr a[6]*a[0]
868*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
869*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
870*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
871*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
872*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
873*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
874*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%eax
875*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
876*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%edx
877*8fb009dcSAndroid Build Coastguard Worker	# sqr a[5]*a[1]
878*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
879*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
880*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
881*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
882*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
883*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
884*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%eax
885*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
886*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%edx
887*8fb009dcSAndroid Build Coastguard Worker	# sqr a[4]*a[2]
888*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
889*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
890*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
891*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
892*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
893*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
894*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%eax
895*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
896*8fb009dcSAndroid Build Coastguard Worker	# sqr a[3]*a[3]
897*8fb009dcSAndroid Build Coastguard Worker	mull	%eax
898*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
899*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
900*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%edx
901*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
902*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,24(%edi)
903*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esi),%eax
904*8fb009dcSAndroid Build Coastguard Worker	# saved r[6]
905*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 7
906*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebx,%ebx
907*8fb009dcSAndroid Build Coastguard Worker	# sqr a[7]*a[0]
908*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
909*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
910*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
911*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
912*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
913*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
914*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%eax
915*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
916*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%edx
917*8fb009dcSAndroid Build Coastguard Worker	# sqr a[6]*a[1]
918*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
919*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
920*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
921*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
922*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
923*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
924*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%eax
925*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
926*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%edx
927*8fb009dcSAndroid Build Coastguard Worker	# sqr a[5]*a[2]
928*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
929*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
930*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
931*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
932*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
933*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
934*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%eax
935*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
936*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%edx
937*8fb009dcSAndroid Build Coastguard Worker	# sqr a[4]*a[3]
938*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
939*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
940*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
941*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
942*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
943*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
944*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esi),%eax
945*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
946*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,28(%edi)
947*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%edx
948*8fb009dcSAndroid Build Coastguard Worker	# saved r[7]
949*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 8
950*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ecx
951*8fb009dcSAndroid Build Coastguard Worker	# sqr a[7]*a[1]
952*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
953*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
954*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
955*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
956*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
957*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
958*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%eax
959*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
960*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%edx
961*8fb009dcSAndroid Build Coastguard Worker	# sqr a[6]*a[2]
962*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
963*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
964*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
965*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
966*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
967*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
968*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%eax
969*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
970*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%edx
971*8fb009dcSAndroid Build Coastguard Worker	# sqr a[5]*a[3]
972*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
973*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
974*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
975*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
976*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
977*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
978*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%eax
979*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
980*8fb009dcSAndroid Build Coastguard Worker	# sqr a[4]*a[4]
981*8fb009dcSAndroid Build Coastguard Worker	mull	%eax
982*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
983*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
984*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%edx
985*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
986*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,32(%edi)
987*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esi),%eax
988*8fb009dcSAndroid Build Coastguard Worker	# saved r[8]
989*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 9
990*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebp,%ebp
991*8fb009dcSAndroid Build Coastguard Worker	# sqr a[7]*a[2]
992*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
993*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
994*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
995*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
996*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
997*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
998*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%eax
999*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
1000*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%edx
1001*8fb009dcSAndroid Build Coastguard Worker	# sqr a[6]*a[3]
1002*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
1003*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
1004*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
1005*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
1006*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
1007*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
1008*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%eax
1009*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
1010*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%edx
1011*8fb009dcSAndroid Build Coastguard Worker	# sqr a[5]*a[4]
1012*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
1013*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
1014*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
1015*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
1016*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
1017*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
1018*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esi),%eax
1019*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
1020*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,36(%edi)
1021*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%edx
1022*8fb009dcSAndroid Build Coastguard Worker	# saved r[9]
1023*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 10
1024*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebx,%ebx
1025*8fb009dcSAndroid Build Coastguard Worker	# sqr a[7]*a[3]
1026*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
1027*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
1028*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
1029*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
1030*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
1031*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
1032*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%eax
1033*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
1034*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%edx
1035*8fb009dcSAndroid Build Coastguard Worker	# sqr a[6]*a[4]
1036*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
1037*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
1038*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
1039*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
1040*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
1041*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
1042*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%eax
1043*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
1044*8fb009dcSAndroid Build Coastguard Worker	# sqr a[5]*a[5]
1045*8fb009dcSAndroid Build Coastguard Worker	mull	%eax
1046*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
1047*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
1048*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%edx
1049*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
1050*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,40(%edi)
1051*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esi),%eax
1052*8fb009dcSAndroid Build Coastguard Worker	# saved r[10]
1053*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 11
1054*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ecx
1055*8fb009dcSAndroid Build Coastguard Worker	# sqr a[7]*a[4]
1056*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
1057*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
1058*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
1059*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
1060*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
1061*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
1062*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%eax
1063*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
1064*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%edx
1065*8fb009dcSAndroid Build Coastguard Worker	# sqr a[6]*a[5]
1066*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
1067*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
1068*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
1069*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
1070*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
1071*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
1072*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esi),%eax
1073*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
1074*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,44(%edi)
1075*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%edx
1076*8fb009dcSAndroid Build Coastguard Worker	# saved r[11]
1077*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 12
1078*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebp,%ebp
1079*8fb009dcSAndroid Build Coastguard Worker	# sqr a[7]*a[5]
1080*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
1081*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
1082*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
1083*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
1084*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
1085*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
1086*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%eax
1087*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
1088*8fb009dcSAndroid Build Coastguard Worker	# sqr a[6]*a[6]
1089*8fb009dcSAndroid Build Coastguard Worker	mull	%eax
1090*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
1091*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
1092*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%edx
1093*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
1094*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,48(%edi)
1095*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esi),%eax
1096*8fb009dcSAndroid Build Coastguard Worker	# saved r[12]
1097*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 13
1098*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebx,%ebx
1099*8fb009dcSAndroid Build Coastguard Worker	# sqr a[7]*a[6]
1100*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
1101*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
1102*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
1103*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
1104*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
1105*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
1106*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esi),%eax
1107*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
1108*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,52(%edi)
1109*8fb009dcSAndroid Build Coastguard Worker	# saved r[13]
1110*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 14
1111*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ecx
1112*8fb009dcSAndroid Build Coastguard Worker	# sqr a[7]*a[7]
1113*8fb009dcSAndroid Build Coastguard Worker	mull	%eax
1114*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
1115*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
1116*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
1117*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,56(%edi)
1118*8fb009dcSAndroid Build Coastguard Worker	# saved r[14]
1119*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,60(%edi)
1120*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
1121*8fb009dcSAndroid Build Coastguard Worker	popl	%ebp
1122*8fb009dcSAndroid Build Coastguard Worker	popl	%edi
1123*8fb009dcSAndroid Build Coastguard Worker	popl	%esi
1124*8fb009dcSAndroid Build Coastguard Worker	ret
1125*8fb009dcSAndroid Build Coastguard Worker.globl	_bn_sqr_comba4
1126*8fb009dcSAndroid Build Coastguard Worker.private_extern	_bn_sqr_comba4
1127*8fb009dcSAndroid Build Coastguard Worker.align	4
1128*8fb009dcSAndroid Build Coastguard Worker_bn_sqr_comba4:
1129*8fb009dcSAndroid Build Coastguard WorkerL_bn_sqr_comba4_begin:
1130*8fb009dcSAndroid Build Coastguard Worker	pushl	%esi
1131*8fb009dcSAndroid Build Coastguard Worker	pushl	%edi
1132*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebp
1133*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
1134*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%edi
1135*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esp),%esi
1136*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebx,%ebx
1137*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ecx
1138*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%eax
1139*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 0
1140*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebp,%ebp
1141*8fb009dcSAndroid Build Coastguard Worker	# sqr a[0]*a[0]
1142*8fb009dcSAndroid Build Coastguard Worker	mull	%eax
1143*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
1144*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
1145*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%edx
1146*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
1147*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,(%edi)
1148*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%eax
1149*8fb009dcSAndroid Build Coastguard Worker	# saved r[0]
1150*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 1
1151*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebx,%ebx
1152*8fb009dcSAndroid Build Coastguard Worker	# sqr a[1]*a[0]
1153*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
1154*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
1155*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
1156*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
1157*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
1158*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
1159*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%eax
1160*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
1161*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,4(%edi)
1162*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%edx
1163*8fb009dcSAndroid Build Coastguard Worker	# saved r[1]
1164*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 2
1165*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ecx
1166*8fb009dcSAndroid Build Coastguard Worker	# sqr a[2]*a[0]
1167*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
1168*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
1169*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
1170*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
1171*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
1172*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
1173*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%eax
1174*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
1175*8fb009dcSAndroid Build Coastguard Worker	# sqr a[1]*a[1]
1176*8fb009dcSAndroid Build Coastguard Worker	mull	%eax
1177*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
1178*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
1179*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%edx
1180*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
1181*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,8(%edi)
1182*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%eax
1183*8fb009dcSAndroid Build Coastguard Worker	# saved r[2]
1184*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 3
1185*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebp,%ebp
1186*8fb009dcSAndroid Build Coastguard Worker	# sqr a[3]*a[0]
1187*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
1188*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
1189*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
1190*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
1191*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
1192*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
1193*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%eax
1194*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
1195*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%edx
1196*8fb009dcSAndroid Build Coastguard Worker	# sqr a[2]*a[1]
1197*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
1198*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
1199*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
1200*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
1201*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
1202*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
1203*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%eax
1204*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
1205*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,12(%edi)
1206*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%edx
1207*8fb009dcSAndroid Build Coastguard Worker	# saved r[3]
1208*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 4
1209*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebx,%ebx
1210*8fb009dcSAndroid Build Coastguard Worker	# sqr a[3]*a[1]
1211*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
1212*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
1213*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
1214*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
1215*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
1216*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
1217*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%eax
1218*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
1219*8fb009dcSAndroid Build Coastguard Worker	# sqr a[2]*a[2]
1220*8fb009dcSAndroid Build Coastguard Worker	mull	%eax
1221*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
1222*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebp
1223*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%edx
1224*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebx
1225*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,16(%edi)
1226*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%eax
1227*8fb009dcSAndroid Build Coastguard Worker	# saved r[4]
1228*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 5
1229*8fb009dcSAndroid Build Coastguard Worker	xorl	%ecx,%ecx
1230*8fb009dcSAndroid Build Coastguard Worker	# sqr a[3]*a[2]
1231*8fb009dcSAndroid Build Coastguard Worker	mull	%edx
1232*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%eax
1233*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%edx
1234*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
1235*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebp
1236*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ebx
1237*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%eax
1238*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ecx
1239*8fb009dcSAndroid Build Coastguard Worker	movl	%ebp,20(%edi)
1240*8fb009dcSAndroid Build Coastguard Worker	# saved r[5]
1241*8fb009dcSAndroid Build Coastguard Worker	# ############### Calculate word 6
1242*8fb009dcSAndroid Build Coastguard Worker	xorl	%ebp,%ebp
1243*8fb009dcSAndroid Build Coastguard Worker	# sqr a[3]*a[3]
1244*8fb009dcSAndroid Build Coastguard Worker	mull	%eax
1245*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ebx
1246*8fb009dcSAndroid Build Coastguard Worker	adcl	%edx,%ecx
1247*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%ebp
1248*8fb009dcSAndroid Build Coastguard Worker	movl	%ebx,24(%edi)
1249*8fb009dcSAndroid Build Coastguard Worker	# saved r[6]
1250*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,28(%edi)
1251*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
1252*8fb009dcSAndroid Build Coastguard Worker	popl	%ebp
1253*8fb009dcSAndroid Build Coastguard Worker	popl	%edi
1254*8fb009dcSAndroid Build Coastguard Worker	popl	%esi
1255*8fb009dcSAndroid Build Coastguard Worker	ret
1256*8fb009dcSAndroid Build Coastguard Worker#endif  // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__APPLE__)
1257