xref: /aosp_15_r20/external/boringssl/src/gen/bcm/bn-586-linux.S (revision 8fb009dc861624b67b6cdb62ea21f0f22d0c584b)
1*8fb009dcSAndroid Build Coastguard Worker// This file is generated from a similarly-named Perl script in the BoringSSL
2*8fb009dcSAndroid Build Coastguard Worker// source tree. Do not edit by hand.
3*8fb009dcSAndroid Build Coastguard Worker
4*8fb009dcSAndroid Build Coastguard Worker#include <openssl/asm_base.h>
5*8fb009dcSAndroid Build Coastguard Worker
6*8fb009dcSAndroid Build Coastguard Worker#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__)
7*8fb009dcSAndroid Build Coastguard Worker.text
8*8fb009dcSAndroid Build Coastguard Worker.globl	bn_mul_add_words
9*8fb009dcSAndroid Build Coastguard Worker.hidden	bn_mul_add_words
10*8fb009dcSAndroid Build Coastguard Worker.type	bn_mul_add_words,@function
11*8fb009dcSAndroid Build Coastguard Worker.align	16
12*8fb009dcSAndroid Build Coastguard Workerbn_mul_add_words:
13*8fb009dcSAndroid Build Coastguard Worker.L_bn_mul_add_words_begin:
14*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esp),%eax
15*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esp),%edx
16*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esp),%ecx
17*8fb009dcSAndroid Build Coastguard Worker	movd	16(%esp),%mm0
18*8fb009dcSAndroid Build Coastguard Worker	pxor	%mm1,%mm1
19*8fb009dcSAndroid Build Coastguard Worker	jmp	.L000maw_sse2_entry
20*8fb009dcSAndroid Build Coastguard Worker.align	16
21*8fb009dcSAndroid Build Coastguard Worker.L001maw_sse2_unrolled:
22*8fb009dcSAndroid Build Coastguard Worker	movd	(%eax),%mm3
23*8fb009dcSAndroid Build Coastguard Worker	paddq	%mm3,%mm1
24*8fb009dcSAndroid Build Coastguard Worker	movd	(%edx),%mm2
25*8fb009dcSAndroid Build Coastguard Worker	pmuludq	%mm0,%mm2
26*8fb009dcSAndroid Build Coastguard Worker	movd	4(%edx),%mm4
27*8fb009dcSAndroid Build Coastguard Worker	pmuludq	%mm0,%mm4
28*8fb009dcSAndroid Build Coastguard Worker	movd	8(%edx),%mm6
29*8fb009dcSAndroid Build Coastguard Worker	pmuludq	%mm0,%mm6
30*8fb009dcSAndroid Build Coastguard Worker	movd	12(%edx),%mm7
31*8fb009dcSAndroid Build Coastguard Worker	pmuludq	%mm0,%mm7
32*8fb009dcSAndroid Build Coastguard Worker	paddq	%mm2,%mm1
33*8fb009dcSAndroid Build Coastguard Worker	movd	4(%eax),%mm3
34*8fb009dcSAndroid Build Coastguard Worker	paddq	%mm4,%mm3
35*8fb009dcSAndroid Build Coastguard Worker	movd	8(%eax),%mm5
36*8fb009dcSAndroid Build Coastguard Worker	paddq	%mm6,%mm5
37*8fb009dcSAndroid Build Coastguard Worker	movd	12(%eax),%mm4
38*8fb009dcSAndroid Build Coastguard Worker	paddq	%mm4,%mm7
39*8fb009dcSAndroid Build Coastguard Worker	movd	%mm1,(%eax)
40*8fb009dcSAndroid Build Coastguard Worker	movd	16(%edx),%mm2
41*8fb009dcSAndroid Build Coastguard Worker	pmuludq	%mm0,%mm2
42*8fb009dcSAndroid Build Coastguard Worker	psrlq	$32,%mm1
43*8fb009dcSAndroid Build Coastguard Worker	movd	20(%edx),%mm4
44*8fb009dcSAndroid Build Coastguard Worker	pmuludq	%mm0,%mm4
45*8fb009dcSAndroid Build Coastguard Worker	paddq	%mm3,%mm1
46*8fb009dcSAndroid Build Coastguard Worker	movd	24(%edx),%mm6
47*8fb009dcSAndroid Build Coastguard Worker	pmuludq	%mm0,%mm6
48*8fb009dcSAndroid Build Coastguard Worker	movd	%mm1,4(%eax)
49*8fb009dcSAndroid Build Coastguard Worker	psrlq	$32,%mm1
50*8fb009dcSAndroid Build Coastguard Worker	movd	28(%edx),%mm3
51*8fb009dcSAndroid Build Coastguard Worker	addl	$32,%edx
52*8fb009dcSAndroid Build Coastguard Worker	pmuludq	%mm0,%mm3
53*8fb009dcSAndroid Build Coastguard Worker	paddq	%mm5,%mm1
54*8fb009dcSAndroid Build Coastguard Worker	movd	16(%eax),%mm5
55*8fb009dcSAndroid Build Coastguard Worker	paddq	%mm5,%mm2
56*8fb009dcSAndroid Build Coastguard Worker	movd	%mm1,8(%eax)
57*8fb009dcSAndroid Build Coastguard Worker	psrlq	$32,%mm1
58*8fb009dcSAndroid Build Coastguard Worker	paddq	%mm7,%mm1
59*8fb009dcSAndroid Build Coastguard Worker	movd	20(%eax),%mm5
60*8fb009dcSAndroid Build Coastguard Worker	paddq	%mm5,%mm4
61*8fb009dcSAndroid Build Coastguard Worker	movd	%mm1,12(%eax)
62*8fb009dcSAndroid Build Coastguard Worker	psrlq	$32,%mm1
63*8fb009dcSAndroid Build Coastguard Worker	paddq	%mm2,%mm1
64*8fb009dcSAndroid Build Coastguard Worker	movd	24(%eax),%mm5
65*8fb009dcSAndroid Build Coastguard Worker	paddq	%mm5,%mm6
66*8fb009dcSAndroid Build Coastguard Worker	movd	%mm1,16(%eax)
67*8fb009dcSAndroid Build Coastguard Worker	psrlq	$32,%mm1
68*8fb009dcSAndroid Build Coastguard Worker	paddq	%mm4,%mm1
69*8fb009dcSAndroid Build Coastguard Worker	movd	28(%eax),%mm5
70*8fb009dcSAndroid Build Coastguard Worker	paddq	%mm5,%mm3
71*8fb009dcSAndroid Build Coastguard Worker	movd	%mm1,20(%eax)
72*8fb009dcSAndroid Build Coastguard Worker	psrlq	$32,%mm1
73*8fb009dcSAndroid Build Coastguard Worker	paddq	%mm6,%mm1
74*8fb009dcSAndroid Build Coastguard Worker	movd	%mm1,24(%eax)
75*8fb009dcSAndroid Build Coastguard Worker	psrlq	$32,%mm1
76*8fb009dcSAndroid Build Coastguard Worker	paddq	%mm3,%mm1
77*8fb009dcSAndroid Build Coastguard Worker	movd	%mm1,28(%eax)
78*8fb009dcSAndroid Build Coastguard Worker	leal	32(%eax),%eax
79*8fb009dcSAndroid Build Coastguard Worker	psrlq	$32,%mm1
80*8fb009dcSAndroid Build Coastguard Worker	subl	$8,%ecx
81*8fb009dcSAndroid Build Coastguard Worker	jz	.L002maw_sse2_exit
82*8fb009dcSAndroid Build Coastguard Worker.L000maw_sse2_entry:
83*8fb009dcSAndroid Build Coastguard Worker	testl	$4294967288,%ecx
84*8fb009dcSAndroid Build Coastguard Worker	jnz	.L001maw_sse2_unrolled
85*8fb009dcSAndroid Build Coastguard Worker.align	4
86*8fb009dcSAndroid Build Coastguard Worker.L003maw_sse2_loop:
87*8fb009dcSAndroid Build Coastguard Worker	movd	(%edx),%mm2
88*8fb009dcSAndroid Build Coastguard Worker	movd	(%eax),%mm3
89*8fb009dcSAndroid Build Coastguard Worker	pmuludq	%mm0,%mm2
90*8fb009dcSAndroid Build Coastguard Worker	leal	4(%edx),%edx
91*8fb009dcSAndroid Build Coastguard Worker	paddq	%mm3,%mm1
92*8fb009dcSAndroid Build Coastguard Worker	paddq	%mm2,%mm1
93*8fb009dcSAndroid Build Coastguard Worker	movd	%mm1,(%eax)
94*8fb009dcSAndroid Build Coastguard Worker	subl	$1,%ecx
95*8fb009dcSAndroid Build Coastguard Worker	psrlq	$32,%mm1
96*8fb009dcSAndroid Build Coastguard Worker	leal	4(%eax),%eax
97*8fb009dcSAndroid Build Coastguard Worker	jnz	.L003maw_sse2_loop
98*8fb009dcSAndroid Build Coastguard Worker.L002maw_sse2_exit:
99*8fb009dcSAndroid Build Coastguard Worker	movd	%mm1,%eax
100*8fb009dcSAndroid Build Coastguard Worker	emms
101*8fb009dcSAndroid Build Coastguard Worker	ret
102*8fb009dcSAndroid Build Coastguard Worker	popl	%edi
103*8fb009dcSAndroid Build Coastguard Worker	popl	%esi
104*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
105*8fb009dcSAndroid Build Coastguard Worker	popl	%ebp
106*8fb009dcSAndroid Build Coastguard Worker	ret
107*8fb009dcSAndroid Build Coastguard Worker.size	bn_mul_add_words,.-.L_bn_mul_add_words_begin
108*8fb009dcSAndroid Build Coastguard Worker.globl	bn_mul_words
109*8fb009dcSAndroid Build Coastguard Worker.hidden	bn_mul_words
110*8fb009dcSAndroid Build Coastguard Worker.type	bn_mul_words,@function
111*8fb009dcSAndroid Build Coastguard Worker.align	16
112*8fb009dcSAndroid Build Coastguard Workerbn_mul_words:
113*8fb009dcSAndroid Build Coastguard Worker.L_bn_mul_words_begin:
114*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esp),%eax
115*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esp),%edx
116*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esp),%ecx
117*8fb009dcSAndroid Build Coastguard Worker	movd	16(%esp),%mm0
118*8fb009dcSAndroid Build Coastguard Worker	pxor	%mm1,%mm1
119*8fb009dcSAndroid Build Coastguard Worker.align	16
120*8fb009dcSAndroid Build Coastguard Worker.L004mw_sse2_loop:
121*8fb009dcSAndroid Build Coastguard Worker	movd	(%edx),%mm2
122*8fb009dcSAndroid Build Coastguard Worker	pmuludq	%mm0,%mm2
123*8fb009dcSAndroid Build Coastguard Worker	leal	4(%edx),%edx
124*8fb009dcSAndroid Build Coastguard Worker	paddq	%mm2,%mm1
125*8fb009dcSAndroid Build Coastguard Worker	movd	%mm1,(%eax)
126*8fb009dcSAndroid Build Coastguard Worker	subl	$1,%ecx
127*8fb009dcSAndroid Build Coastguard Worker	psrlq	$32,%mm1
128*8fb009dcSAndroid Build Coastguard Worker	leal	4(%eax),%eax
129*8fb009dcSAndroid Build Coastguard Worker	jnz	.L004mw_sse2_loop
130*8fb009dcSAndroid Build Coastguard Worker	movd	%mm1,%eax
131*8fb009dcSAndroid Build Coastguard Worker	emms
132*8fb009dcSAndroid Build Coastguard Worker	ret
133*8fb009dcSAndroid Build Coastguard Worker	popl	%edi
134*8fb009dcSAndroid Build Coastguard Worker	popl	%esi
135*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
136*8fb009dcSAndroid Build Coastguard Worker	popl	%ebp
137*8fb009dcSAndroid Build Coastguard Worker	ret
138*8fb009dcSAndroid Build Coastguard Worker.size	bn_mul_words,.-.L_bn_mul_words_begin
139*8fb009dcSAndroid Build Coastguard Worker.globl	bn_sqr_words
140*8fb009dcSAndroid Build Coastguard Worker.hidden	bn_sqr_words
141*8fb009dcSAndroid Build Coastguard Worker.type	bn_sqr_words,@function
142*8fb009dcSAndroid Build Coastguard Worker.align	16
143*8fb009dcSAndroid Build Coastguard Workerbn_sqr_words:
144*8fb009dcSAndroid Build Coastguard Worker.L_bn_sqr_words_begin:
145*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esp),%eax
146*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esp),%edx
147*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esp),%ecx
148*8fb009dcSAndroid Build Coastguard Worker.align	16
149*8fb009dcSAndroid Build Coastguard Worker.L005sqr_sse2_loop:
150*8fb009dcSAndroid Build Coastguard Worker	movd	(%edx),%mm0
151*8fb009dcSAndroid Build Coastguard Worker	pmuludq	%mm0,%mm0
152*8fb009dcSAndroid Build Coastguard Worker	leal	4(%edx),%edx
153*8fb009dcSAndroid Build Coastguard Worker	movq	%mm0,(%eax)
154*8fb009dcSAndroid Build Coastguard Worker	subl	$1,%ecx
155*8fb009dcSAndroid Build Coastguard Worker	leal	8(%eax),%eax
156*8fb009dcSAndroid Build Coastguard Worker	jnz	.L005sqr_sse2_loop
157*8fb009dcSAndroid Build Coastguard Worker	emms
158*8fb009dcSAndroid Build Coastguard Worker	ret
159*8fb009dcSAndroid Build Coastguard Worker	popl	%edi
160*8fb009dcSAndroid Build Coastguard Worker	popl	%esi
161*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
162*8fb009dcSAndroid Build Coastguard Worker	popl	%ebp
163*8fb009dcSAndroid Build Coastguard Worker	ret
164*8fb009dcSAndroid Build Coastguard Worker.size	bn_sqr_words,.-.L_bn_sqr_words_begin
165*8fb009dcSAndroid Build Coastguard Worker.globl	bn_div_words
166*8fb009dcSAndroid Build Coastguard Worker.hidden	bn_div_words
167*8fb009dcSAndroid Build Coastguard Worker.type	bn_div_words,@function
168*8fb009dcSAndroid Build Coastguard Worker.align	16
169*8fb009dcSAndroid Build Coastguard Workerbn_div_words:
170*8fb009dcSAndroid Build Coastguard Worker.L_bn_div_words_begin:
171*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esp),%edx
172*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esp),%eax
173*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esp),%ecx
174*8fb009dcSAndroid Build Coastguard Worker	divl	%ecx
175*8fb009dcSAndroid Build Coastguard Worker	ret
176*8fb009dcSAndroid Build Coastguard Worker.size	bn_div_words,.-.L_bn_div_words_begin
177*8fb009dcSAndroid Build Coastguard Worker.globl	bn_add_words
178*8fb009dcSAndroid Build Coastguard Worker.hidden	bn_add_words
179*8fb009dcSAndroid Build Coastguard Worker.type	bn_add_words,@function
180*8fb009dcSAndroid Build Coastguard Worker.align	16
181*8fb009dcSAndroid Build Coastguard Workerbn_add_words:
182*8fb009dcSAndroid Build Coastguard Worker.L_bn_add_words_begin:
183*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebp
184*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
185*8fb009dcSAndroid Build Coastguard Worker	pushl	%esi
186*8fb009dcSAndroid Build Coastguard Worker	pushl	%edi
187*8fb009dcSAndroid Build Coastguard Worker
188*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%ebx
189*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esp),%esi
190*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esp),%edi
191*8fb009dcSAndroid Build Coastguard Worker	movl	32(%esp),%ebp
192*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%eax
193*8fb009dcSAndroid Build Coastguard Worker	andl	$4294967288,%ebp
194*8fb009dcSAndroid Build Coastguard Worker	jz	.L006aw_finish
195*8fb009dcSAndroid Build Coastguard Worker.L007aw_loop:
196*8fb009dcSAndroid Build Coastguard Worker
197*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%ecx
198*8fb009dcSAndroid Build Coastguard Worker	movl	(%edi),%edx
199*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
200*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
201*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
202*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
203*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
204*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,(%ebx)
205*8fb009dcSAndroid Build Coastguard Worker
206*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%ecx
207*8fb009dcSAndroid Build Coastguard Worker	movl	4(%edi),%edx
208*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
209*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
210*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
211*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
212*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
213*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,4(%ebx)
214*8fb009dcSAndroid Build Coastguard Worker
215*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%ecx
216*8fb009dcSAndroid Build Coastguard Worker	movl	8(%edi),%edx
217*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
218*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
219*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
220*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
221*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
222*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,8(%ebx)
223*8fb009dcSAndroid Build Coastguard Worker
224*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%ecx
225*8fb009dcSAndroid Build Coastguard Worker	movl	12(%edi),%edx
226*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
227*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
228*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
229*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
230*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
231*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,12(%ebx)
232*8fb009dcSAndroid Build Coastguard Worker
233*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%ecx
234*8fb009dcSAndroid Build Coastguard Worker	movl	16(%edi),%edx
235*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
236*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
237*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
238*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
239*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
240*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,16(%ebx)
241*8fb009dcSAndroid Build Coastguard Worker
242*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%ecx
243*8fb009dcSAndroid Build Coastguard Worker	movl	20(%edi),%edx
244*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
245*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
246*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
247*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
248*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
249*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,20(%ebx)
250*8fb009dcSAndroid Build Coastguard Worker
251*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%ecx
252*8fb009dcSAndroid Build Coastguard Worker	movl	24(%edi),%edx
253*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
254*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
255*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
256*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
257*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
258*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,24(%ebx)
259*8fb009dcSAndroid Build Coastguard Worker
260*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esi),%ecx
261*8fb009dcSAndroid Build Coastguard Worker	movl	28(%edi),%edx
262*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
263*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
264*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
265*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
266*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
267*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,28(%ebx)
268*8fb009dcSAndroid Build Coastguard Worker
269*8fb009dcSAndroid Build Coastguard Worker	addl	$32,%esi
270*8fb009dcSAndroid Build Coastguard Worker	addl	$32,%edi
271*8fb009dcSAndroid Build Coastguard Worker	addl	$32,%ebx
272*8fb009dcSAndroid Build Coastguard Worker	subl	$8,%ebp
273*8fb009dcSAndroid Build Coastguard Worker	jnz	.L007aw_loop
274*8fb009dcSAndroid Build Coastguard Worker.L006aw_finish:
275*8fb009dcSAndroid Build Coastguard Worker	movl	32(%esp),%ebp
276*8fb009dcSAndroid Build Coastguard Worker	andl	$7,%ebp
277*8fb009dcSAndroid Build Coastguard Worker	jz	.L008aw_end
278*8fb009dcSAndroid Build Coastguard Worker
279*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%ecx
280*8fb009dcSAndroid Build Coastguard Worker	movl	(%edi),%edx
281*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
282*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
283*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
284*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
285*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
286*8fb009dcSAndroid Build Coastguard Worker	decl	%ebp
287*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,(%ebx)
288*8fb009dcSAndroid Build Coastguard Worker	jz	.L008aw_end
289*8fb009dcSAndroid Build Coastguard Worker
290*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%ecx
291*8fb009dcSAndroid Build Coastguard Worker	movl	4(%edi),%edx
292*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
293*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
294*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
295*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
296*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
297*8fb009dcSAndroid Build Coastguard Worker	decl	%ebp
298*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,4(%ebx)
299*8fb009dcSAndroid Build Coastguard Worker	jz	.L008aw_end
300*8fb009dcSAndroid Build Coastguard Worker
301*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%ecx
302*8fb009dcSAndroid Build Coastguard Worker	movl	8(%edi),%edx
303*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
304*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
305*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
306*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
307*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
308*8fb009dcSAndroid Build Coastguard Worker	decl	%ebp
309*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,8(%ebx)
310*8fb009dcSAndroid Build Coastguard Worker	jz	.L008aw_end
311*8fb009dcSAndroid Build Coastguard Worker
312*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%ecx
313*8fb009dcSAndroid Build Coastguard Worker	movl	12(%edi),%edx
314*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
315*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
316*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
317*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
318*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
319*8fb009dcSAndroid Build Coastguard Worker	decl	%ebp
320*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,12(%ebx)
321*8fb009dcSAndroid Build Coastguard Worker	jz	.L008aw_end
322*8fb009dcSAndroid Build Coastguard Worker
323*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%ecx
324*8fb009dcSAndroid Build Coastguard Worker	movl	16(%edi),%edx
325*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
326*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
327*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
328*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
329*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
330*8fb009dcSAndroid Build Coastguard Worker	decl	%ebp
331*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,16(%ebx)
332*8fb009dcSAndroid Build Coastguard Worker	jz	.L008aw_end
333*8fb009dcSAndroid Build Coastguard Worker
334*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%ecx
335*8fb009dcSAndroid Build Coastguard Worker	movl	20(%edi),%edx
336*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
337*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
338*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
339*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
340*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
341*8fb009dcSAndroid Build Coastguard Worker	decl	%ebp
342*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,20(%ebx)
343*8fb009dcSAndroid Build Coastguard Worker	jz	.L008aw_end
344*8fb009dcSAndroid Build Coastguard Worker
345*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%ecx
346*8fb009dcSAndroid Build Coastguard Worker	movl	24(%edi),%edx
347*8fb009dcSAndroid Build Coastguard Worker	addl	%eax,%ecx
348*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
349*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
350*8fb009dcSAndroid Build Coastguard Worker	addl	%edx,%ecx
351*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
352*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,24(%ebx)
353*8fb009dcSAndroid Build Coastguard Worker.L008aw_end:
354*8fb009dcSAndroid Build Coastguard Worker	popl	%edi
355*8fb009dcSAndroid Build Coastguard Worker	popl	%esi
356*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
357*8fb009dcSAndroid Build Coastguard Worker	popl	%ebp
358*8fb009dcSAndroid Build Coastguard Worker	ret
359*8fb009dcSAndroid Build Coastguard Worker.size	bn_add_words,.-.L_bn_add_words_begin
360*8fb009dcSAndroid Build Coastguard Worker.globl	bn_sub_words
361*8fb009dcSAndroid Build Coastguard Worker.hidden	bn_sub_words
362*8fb009dcSAndroid Build Coastguard Worker.type	bn_sub_words,@function
363*8fb009dcSAndroid Build Coastguard Worker.align	16
364*8fb009dcSAndroid Build Coastguard Workerbn_sub_words:
365*8fb009dcSAndroid Build Coastguard Worker.L_bn_sub_words_begin:
366*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebp
367*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
368*8fb009dcSAndroid Build Coastguard Worker	pushl	%esi
369*8fb009dcSAndroid Build Coastguard Worker	pushl	%edi
370*8fb009dcSAndroid Build Coastguard Worker
371*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%ebx
372*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esp),%esi
373*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esp),%edi
374*8fb009dcSAndroid Build Coastguard Worker	movl	32(%esp),%ebp
375*8fb009dcSAndroid Build Coastguard Worker	xorl	%eax,%eax
376*8fb009dcSAndroid Build Coastguard Worker	andl	$4294967288,%ebp
377*8fb009dcSAndroid Build Coastguard Worker	jz	.L009aw_finish
378*8fb009dcSAndroid Build Coastguard Worker.L010aw_loop:
379*8fb009dcSAndroid Build Coastguard Worker
380*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%ecx
381*8fb009dcSAndroid Build Coastguard Worker	movl	(%edi),%edx
382*8fb009dcSAndroid Build Coastguard Worker	subl	%eax,%ecx
383*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
384*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
385*8fb009dcSAndroid Build Coastguard Worker	subl	%edx,%ecx
386*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
387*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,(%ebx)
388*8fb009dcSAndroid Build Coastguard Worker
389*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%ecx
390*8fb009dcSAndroid Build Coastguard Worker	movl	4(%edi),%edx
391*8fb009dcSAndroid Build Coastguard Worker	subl	%eax,%ecx
392*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
393*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
394*8fb009dcSAndroid Build Coastguard Worker	subl	%edx,%ecx
395*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
396*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,4(%ebx)
397*8fb009dcSAndroid Build Coastguard Worker
398*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%ecx
399*8fb009dcSAndroid Build Coastguard Worker	movl	8(%edi),%edx
400*8fb009dcSAndroid Build Coastguard Worker	subl	%eax,%ecx
401*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
402*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
403*8fb009dcSAndroid Build Coastguard Worker	subl	%edx,%ecx
404*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
405*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,8(%ebx)
406*8fb009dcSAndroid Build Coastguard Worker
407*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%ecx
408*8fb009dcSAndroid Build Coastguard Worker	movl	12(%edi),%edx
409*8fb009dcSAndroid Build Coastguard Worker	subl	%eax,%ecx
410*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
411*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
412*8fb009dcSAndroid Build Coastguard Worker	subl	%edx,%ecx
413*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
414*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,12(%ebx)
415*8fb009dcSAndroid Build Coastguard Worker
416*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%ecx
417*8fb009dcSAndroid Build Coastguard Worker	movl	16(%edi),%edx
418*8fb009dcSAndroid Build Coastguard Worker	subl	%eax,%ecx
419*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
420*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
421*8fb009dcSAndroid Build Coastguard Worker	subl	%edx,%ecx
422*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
423*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,16(%ebx)
424*8fb009dcSAndroid Build Coastguard Worker
425*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%ecx
426*8fb009dcSAndroid Build Coastguard Worker	movl	20(%edi),%edx
427*8fb009dcSAndroid Build Coastguard Worker	subl	%eax,%ecx
428*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
429*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
430*8fb009dcSAndroid Build Coastguard Worker	subl	%edx,%ecx
431*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
432*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,20(%ebx)
433*8fb009dcSAndroid Build Coastguard Worker
434*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%ecx
435*8fb009dcSAndroid Build Coastguard Worker	movl	24(%edi),%edx
436*8fb009dcSAndroid Build Coastguard Worker	subl	%eax,%ecx
437*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
438*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
439*8fb009dcSAndroid Build Coastguard Worker	subl	%edx,%ecx
440*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
441*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,24(%ebx)
442*8fb009dcSAndroid Build Coastguard Worker
443*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esi),%ecx
444*8fb009dcSAndroid Build Coastguard Worker	movl	28(%edi),%edx
445*8fb009dcSAndroid Build Coastguard Worker	subl	%eax,%ecx
446*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
447*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
448*8fb009dcSAndroid Build Coastguard Worker	subl	%edx,%ecx
449*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
450*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,28(%ebx)
451*8fb009dcSAndroid Build Coastguard Worker
452*8fb009dcSAndroid Build Coastguard Worker	addl	$32,%esi
453*8fb009dcSAndroid Build Coastguard Worker	addl	$32,%edi
454*8fb009dcSAndroid Build Coastguard Worker	addl	$32,%ebx
455*8fb009dcSAndroid Build Coastguard Worker	subl	$8,%ebp
456*8fb009dcSAndroid Build Coastguard Worker	jnz	.L010aw_loop
457*8fb009dcSAndroid Build Coastguard Worker.L009aw_finish:
458*8fb009dcSAndroid Build Coastguard Worker	movl	32(%esp),%ebp
459*8fb009dcSAndroid Build Coastguard Worker	andl	$7,%ebp
460*8fb009dcSAndroid Build Coastguard Worker	jz	.L011aw_end
461*8fb009dcSAndroid Build Coastguard Worker
462*8fb009dcSAndroid Build Coastguard Worker	movl	(%esi),%ecx
463*8fb009dcSAndroid Build Coastguard Worker	movl	(%edi),%edx
464*8fb009dcSAndroid Build Coastguard Worker	subl	%eax,%ecx
465*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
466*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
467*8fb009dcSAndroid Build Coastguard Worker	subl	%edx,%ecx
468*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
469*8fb009dcSAndroid Build Coastguard Worker	decl	%ebp
470*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,(%ebx)
471*8fb009dcSAndroid Build Coastguard Worker	jz	.L011aw_end
472*8fb009dcSAndroid Build Coastguard Worker
473*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esi),%ecx
474*8fb009dcSAndroid Build Coastguard Worker	movl	4(%edi),%edx
475*8fb009dcSAndroid Build Coastguard Worker	subl	%eax,%ecx
476*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
477*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
478*8fb009dcSAndroid Build Coastguard Worker	subl	%edx,%ecx
479*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
480*8fb009dcSAndroid Build Coastguard Worker	decl	%ebp
481*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,4(%ebx)
482*8fb009dcSAndroid Build Coastguard Worker	jz	.L011aw_end
483*8fb009dcSAndroid Build Coastguard Worker
484*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esi),%ecx
485*8fb009dcSAndroid Build Coastguard Worker	movl	8(%edi),%edx
486*8fb009dcSAndroid Build Coastguard Worker	subl	%eax,%ecx
487*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
488*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
489*8fb009dcSAndroid Build Coastguard Worker	subl	%edx,%ecx
490*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
491*8fb009dcSAndroid Build Coastguard Worker	decl	%ebp
492*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,8(%ebx)
493*8fb009dcSAndroid Build Coastguard Worker	jz	.L011aw_end
494*8fb009dcSAndroid Build Coastguard Worker
495*8fb009dcSAndroid Build Coastguard Worker	movl	12(%esi),%ecx
496*8fb009dcSAndroid Build Coastguard Worker	movl	12(%edi),%edx
497*8fb009dcSAndroid Build Coastguard Worker	subl	%eax,%ecx
498*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
499*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
500*8fb009dcSAndroid Build Coastguard Worker	subl	%edx,%ecx
501*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
502*8fb009dcSAndroid Build Coastguard Worker	decl	%ebp
503*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,12(%ebx)
504*8fb009dcSAndroid Build Coastguard Worker	jz	.L011aw_end
505*8fb009dcSAndroid Build Coastguard Worker
506*8fb009dcSAndroid Build Coastguard Worker	movl	16(%esi),%ecx
507*8fb009dcSAndroid Build Coastguard Worker	movl	16(%edi),%edx
508*8fb009dcSAndroid Build Coastguard Worker	subl	%eax,%ecx
509*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
510*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
511*8fb009dcSAndroid Build Coastguard Worker	subl	%edx,%ecx
512*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
513*8fb009dcSAndroid Build Coastguard Worker	decl	%ebp
514*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,16(%ebx)
515*8fb009dcSAndroid Build Coastguard Worker	jz	.L011aw_end
516*8fb009dcSAndroid Build Coastguard Worker
517*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esi),%ecx
518*8fb009dcSAndroid Build Coastguard Worker	movl	20(%edi),%edx
519*8fb009dcSAndroid Build Coastguard Worker	subl	%eax,%ecx
520*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
521*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
522*8fb009dcSAndroid Build Coastguard Worker	subl	%edx,%ecx
523*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
524*8fb009dcSAndroid Build Coastguard Worker	decl	%ebp
525*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,20(%ebx)
526*8fb009dcSAndroid Build Coastguard Worker	jz	.L011aw_end
527*8fb009dcSAndroid Build Coastguard Worker
528*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esi),%ecx
529*8fb009dcSAndroid Build Coastguard Worker	movl	24(%edi),%edx
530*8fb009dcSAndroid Build Coastguard Worker	subl	%eax,%ecx
531*8fb009dcSAndroid Build Coastguard Worker	movl	$0,%eax
532*8fb009dcSAndroid Build Coastguard Worker	adcl	%eax,%eax
533*8fb009dcSAndroid Build Coastguard Worker	subl	%edx,%ecx
534*8fb009dcSAndroid Build Coastguard Worker	adcl	$0,%eax
535*8fb009dcSAndroid Build Coastguard Worker	movl	%ecx,24(%ebx)
536*8fb009dcSAndroid Build Coastguard Worker.L011aw_end:
537*8fb009dcSAndroid Build Coastguard Worker	popl	%edi
538*8fb009dcSAndroid Build Coastguard Worker	popl	%esi
539*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
540*8fb009dcSAndroid Build Coastguard Worker	popl	%ebp
541*8fb009dcSAndroid Build Coastguard Worker	ret
542*8fb009dcSAndroid Build Coastguard Worker.size	bn_sub_words,.-.L_bn_sub_words_begin
543*8fb009dcSAndroid Build Coastguard Worker#endif  // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__)
544