xref: /minix3/crypto/external/bsd/openssl/lib/libcrypto/arch/i386/bn-586.S (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1ebfedea0SLionel Sambuc#include <machine/asm.h>
2ebfedea0SLionel Sambuc.text
3ebfedea0SLionel Sambuc.globl	bn_mul_add_words
4ebfedea0SLionel Sambuc.type	bn_mul_add_words,@function
5ebfedea0SLionel Sambuc.align	16
6ebfedea0SLionel Sambucbn_mul_add_words:
7ebfedea0SLionel Sambuc.L_bn_mul_add_words_begin:
8*0a6a1f1dSLionel Sambuc	call	.L000PIC_me_up
9*0a6a1f1dSLionel Sambuc.L000PIC_me_up:
10*0a6a1f1dSLionel Sambuc	popl	%eax
11*0a6a1f1dSLionel Sambuc	leal	_GLOBAL_OFFSET_TABLE_+[.-.L000PIC_me_up](%eax),%eax
12*0a6a1f1dSLionel Sambuc	movl	OPENSSL_ia32cap_P@GOT(%eax),%eax
13*0a6a1f1dSLionel Sambuc	btl	$26,(%eax)
14*0a6a1f1dSLionel Sambuc	jnc	.L001maw_non_sse2
15*0a6a1f1dSLionel Sambuc	movl	4(%esp),%eax
16*0a6a1f1dSLionel Sambuc	movl	8(%esp),%edx
17*0a6a1f1dSLionel Sambuc	movl	12(%esp),%ecx
18*0a6a1f1dSLionel Sambuc	movd	16(%esp),%mm0
19*0a6a1f1dSLionel Sambuc	pxor	%mm1,%mm1
20*0a6a1f1dSLionel Sambuc	jmp	.L002maw_sse2_entry
21*0a6a1f1dSLionel Sambuc.align	16
22*0a6a1f1dSLionel Sambuc.L003maw_sse2_unrolled:
23*0a6a1f1dSLionel Sambuc	movd	(%eax),%mm3
24*0a6a1f1dSLionel Sambuc	paddq	%mm3,%mm1
25*0a6a1f1dSLionel Sambuc	movd	(%edx),%mm2
26*0a6a1f1dSLionel Sambuc	pmuludq	%mm0,%mm2
27*0a6a1f1dSLionel Sambuc	movd	4(%edx),%mm4
28*0a6a1f1dSLionel Sambuc	pmuludq	%mm0,%mm4
29*0a6a1f1dSLionel Sambuc	movd	8(%edx),%mm6
30*0a6a1f1dSLionel Sambuc	pmuludq	%mm0,%mm6
31*0a6a1f1dSLionel Sambuc	movd	12(%edx),%mm7
32*0a6a1f1dSLionel Sambuc	pmuludq	%mm0,%mm7
33*0a6a1f1dSLionel Sambuc	paddq	%mm2,%mm1
34*0a6a1f1dSLionel Sambuc	movd	4(%eax),%mm3
35*0a6a1f1dSLionel Sambuc	paddq	%mm4,%mm3
36*0a6a1f1dSLionel Sambuc	movd	8(%eax),%mm5
37*0a6a1f1dSLionel Sambuc	paddq	%mm6,%mm5
38*0a6a1f1dSLionel Sambuc	movd	12(%eax),%mm4
39*0a6a1f1dSLionel Sambuc	paddq	%mm4,%mm7
40*0a6a1f1dSLionel Sambuc	movd	%mm1,(%eax)
41*0a6a1f1dSLionel Sambuc	movd	16(%edx),%mm2
42*0a6a1f1dSLionel Sambuc	pmuludq	%mm0,%mm2
43*0a6a1f1dSLionel Sambuc	psrlq	$32,%mm1
44*0a6a1f1dSLionel Sambuc	movd	20(%edx),%mm4
45*0a6a1f1dSLionel Sambuc	pmuludq	%mm0,%mm4
46*0a6a1f1dSLionel Sambuc	paddq	%mm3,%mm1
47*0a6a1f1dSLionel Sambuc	movd	24(%edx),%mm6
48*0a6a1f1dSLionel Sambuc	pmuludq	%mm0,%mm6
49*0a6a1f1dSLionel Sambuc	movd	%mm1,4(%eax)
50*0a6a1f1dSLionel Sambuc	psrlq	$32,%mm1
51*0a6a1f1dSLionel Sambuc	movd	28(%edx),%mm3
52*0a6a1f1dSLionel Sambuc	addl	$32,%edx
53*0a6a1f1dSLionel Sambuc	pmuludq	%mm0,%mm3
54*0a6a1f1dSLionel Sambuc	paddq	%mm5,%mm1
55*0a6a1f1dSLionel Sambuc	movd	16(%eax),%mm5
56*0a6a1f1dSLionel Sambuc	paddq	%mm5,%mm2
57*0a6a1f1dSLionel Sambuc	movd	%mm1,8(%eax)
58*0a6a1f1dSLionel Sambuc	psrlq	$32,%mm1
59*0a6a1f1dSLionel Sambuc	paddq	%mm7,%mm1
60*0a6a1f1dSLionel Sambuc	movd	20(%eax),%mm5
61*0a6a1f1dSLionel Sambuc	paddq	%mm5,%mm4
62*0a6a1f1dSLionel Sambuc	movd	%mm1,12(%eax)
63*0a6a1f1dSLionel Sambuc	psrlq	$32,%mm1
64*0a6a1f1dSLionel Sambuc	paddq	%mm2,%mm1
65*0a6a1f1dSLionel Sambuc	movd	24(%eax),%mm5
66*0a6a1f1dSLionel Sambuc	paddq	%mm5,%mm6
67*0a6a1f1dSLionel Sambuc	movd	%mm1,16(%eax)
68*0a6a1f1dSLionel Sambuc	psrlq	$32,%mm1
69*0a6a1f1dSLionel Sambuc	paddq	%mm4,%mm1
70*0a6a1f1dSLionel Sambuc	movd	28(%eax),%mm5
71*0a6a1f1dSLionel Sambuc	paddq	%mm5,%mm3
72*0a6a1f1dSLionel Sambuc	movd	%mm1,20(%eax)
73*0a6a1f1dSLionel Sambuc	psrlq	$32,%mm1
74*0a6a1f1dSLionel Sambuc	paddq	%mm6,%mm1
75*0a6a1f1dSLionel Sambuc	movd	%mm1,24(%eax)
76*0a6a1f1dSLionel Sambuc	psrlq	$32,%mm1
77*0a6a1f1dSLionel Sambuc	paddq	%mm3,%mm1
78*0a6a1f1dSLionel Sambuc	movd	%mm1,28(%eax)
79*0a6a1f1dSLionel Sambuc	leal	32(%eax),%eax
80*0a6a1f1dSLionel Sambuc	psrlq	$32,%mm1
81*0a6a1f1dSLionel Sambuc	subl	$8,%ecx
82*0a6a1f1dSLionel Sambuc	jz	.L004maw_sse2_exit
83*0a6a1f1dSLionel Sambuc.L002maw_sse2_entry:
84*0a6a1f1dSLionel Sambuc	testl	$4294967288,%ecx
85*0a6a1f1dSLionel Sambuc	jnz	.L003maw_sse2_unrolled
86*0a6a1f1dSLionel Sambuc.align	4
87*0a6a1f1dSLionel Sambuc.L005maw_sse2_loop:
88*0a6a1f1dSLionel Sambuc	movd	(%edx),%mm2
89*0a6a1f1dSLionel Sambuc	movd	(%eax),%mm3
90*0a6a1f1dSLionel Sambuc	pmuludq	%mm0,%mm2
91*0a6a1f1dSLionel Sambuc	leal	4(%edx),%edx
92*0a6a1f1dSLionel Sambuc	paddq	%mm3,%mm1
93*0a6a1f1dSLionel Sambuc	paddq	%mm2,%mm1
94*0a6a1f1dSLionel Sambuc	movd	%mm1,(%eax)
95*0a6a1f1dSLionel Sambuc	subl	$1,%ecx
96*0a6a1f1dSLionel Sambuc	psrlq	$32,%mm1
97*0a6a1f1dSLionel Sambuc	leal	4(%eax),%eax
98*0a6a1f1dSLionel Sambuc	jnz	.L005maw_sse2_loop
99*0a6a1f1dSLionel Sambuc.L004maw_sse2_exit:
100*0a6a1f1dSLionel Sambuc	movd	%mm1,%eax
101*0a6a1f1dSLionel Sambuc	emms
102*0a6a1f1dSLionel Sambuc	ret
103*0a6a1f1dSLionel Sambuc.align	16
104*0a6a1f1dSLionel Sambuc.L001maw_non_sse2:
105ebfedea0SLionel Sambuc	pushl	%ebp
106ebfedea0SLionel Sambuc	pushl	%ebx
107ebfedea0SLionel Sambuc	pushl	%esi
108ebfedea0SLionel Sambuc	pushl	%edi
109ebfedea0SLionel Sambuc
110ebfedea0SLionel Sambuc	xorl	%esi,%esi
111ebfedea0SLionel Sambuc	movl	20(%esp),%edi
112ebfedea0SLionel Sambuc	movl	28(%esp),%ecx
113ebfedea0SLionel Sambuc	movl	24(%esp),%ebx
114ebfedea0SLionel Sambuc	andl	$4294967288,%ecx
115ebfedea0SLionel Sambuc	movl	32(%esp),%ebp
116ebfedea0SLionel Sambuc	pushl	%ecx
117*0a6a1f1dSLionel Sambuc	jz	.L006maw_finish
118ebfedea0SLionel Sambuc.align	16
119*0a6a1f1dSLionel Sambuc.L007maw_loop:
120ebfedea0SLionel Sambuc
121ebfedea0SLionel Sambuc	movl	(%ebx),%eax
122ebfedea0SLionel Sambuc	mull	%ebp
123ebfedea0SLionel Sambuc	addl	%esi,%eax
124ebfedea0SLionel Sambuc	adcl	$0,%edx
125ebfedea0SLionel Sambuc	addl	(%edi),%eax
126ebfedea0SLionel Sambuc	adcl	$0,%edx
127ebfedea0SLionel Sambuc	movl	%eax,(%edi)
128ebfedea0SLionel Sambuc	movl	%edx,%esi
129ebfedea0SLionel Sambuc
130ebfedea0SLionel Sambuc	movl	4(%ebx),%eax
131ebfedea0SLionel Sambuc	mull	%ebp
132ebfedea0SLionel Sambuc	addl	%esi,%eax
133ebfedea0SLionel Sambuc	adcl	$0,%edx
134ebfedea0SLionel Sambuc	addl	4(%edi),%eax
135ebfedea0SLionel Sambuc	adcl	$0,%edx
136ebfedea0SLionel Sambuc	movl	%eax,4(%edi)
137ebfedea0SLionel Sambuc	movl	%edx,%esi
138ebfedea0SLionel Sambuc
139ebfedea0SLionel Sambuc	movl	8(%ebx),%eax
140ebfedea0SLionel Sambuc	mull	%ebp
141ebfedea0SLionel Sambuc	addl	%esi,%eax
142ebfedea0SLionel Sambuc	adcl	$0,%edx
143ebfedea0SLionel Sambuc	addl	8(%edi),%eax
144ebfedea0SLionel Sambuc	adcl	$0,%edx
145ebfedea0SLionel Sambuc	movl	%eax,8(%edi)
146ebfedea0SLionel Sambuc	movl	%edx,%esi
147ebfedea0SLionel Sambuc
148ebfedea0SLionel Sambuc	movl	12(%ebx),%eax
149ebfedea0SLionel Sambuc	mull	%ebp
150ebfedea0SLionel Sambuc	addl	%esi,%eax
151ebfedea0SLionel Sambuc	adcl	$0,%edx
152ebfedea0SLionel Sambuc	addl	12(%edi),%eax
153ebfedea0SLionel Sambuc	adcl	$0,%edx
154ebfedea0SLionel Sambuc	movl	%eax,12(%edi)
155ebfedea0SLionel Sambuc	movl	%edx,%esi
156ebfedea0SLionel Sambuc
157ebfedea0SLionel Sambuc	movl	16(%ebx),%eax
158ebfedea0SLionel Sambuc	mull	%ebp
159ebfedea0SLionel Sambuc	addl	%esi,%eax
160ebfedea0SLionel Sambuc	adcl	$0,%edx
161ebfedea0SLionel Sambuc	addl	16(%edi),%eax
162ebfedea0SLionel Sambuc	adcl	$0,%edx
163ebfedea0SLionel Sambuc	movl	%eax,16(%edi)
164ebfedea0SLionel Sambuc	movl	%edx,%esi
165ebfedea0SLionel Sambuc
166ebfedea0SLionel Sambuc	movl	20(%ebx),%eax
167ebfedea0SLionel Sambuc	mull	%ebp
168ebfedea0SLionel Sambuc	addl	%esi,%eax
169ebfedea0SLionel Sambuc	adcl	$0,%edx
170ebfedea0SLionel Sambuc	addl	20(%edi),%eax
171ebfedea0SLionel Sambuc	adcl	$0,%edx
172ebfedea0SLionel Sambuc	movl	%eax,20(%edi)
173ebfedea0SLionel Sambuc	movl	%edx,%esi
174ebfedea0SLionel Sambuc
175ebfedea0SLionel Sambuc	movl	24(%ebx),%eax
176ebfedea0SLionel Sambuc	mull	%ebp
177ebfedea0SLionel Sambuc	addl	%esi,%eax
178ebfedea0SLionel Sambuc	adcl	$0,%edx
179ebfedea0SLionel Sambuc	addl	24(%edi),%eax
180ebfedea0SLionel Sambuc	adcl	$0,%edx
181ebfedea0SLionel Sambuc	movl	%eax,24(%edi)
182ebfedea0SLionel Sambuc	movl	%edx,%esi
183ebfedea0SLionel Sambuc
184ebfedea0SLionel Sambuc	movl	28(%ebx),%eax
185ebfedea0SLionel Sambuc	mull	%ebp
186ebfedea0SLionel Sambuc	addl	%esi,%eax
187ebfedea0SLionel Sambuc	adcl	$0,%edx
188ebfedea0SLionel Sambuc	addl	28(%edi),%eax
189ebfedea0SLionel Sambuc	adcl	$0,%edx
190ebfedea0SLionel Sambuc	movl	%eax,28(%edi)
191ebfedea0SLionel Sambuc	movl	%edx,%esi
192ebfedea0SLionel Sambuc
193ebfedea0SLionel Sambuc	subl	$8,%ecx
194ebfedea0SLionel Sambuc	leal	32(%ebx),%ebx
195ebfedea0SLionel Sambuc	leal	32(%edi),%edi
196*0a6a1f1dSLionel Sambuc	jnz	.L007maw_loop
197*0a6a1f1dSLionel Sambuc.L006maw_finish:
198ebfedea0SLionel Sambuc	movl	32(%esp),%ecx
199ebfedea0SLionel Sambuc	andl	$7,%ecx
200*0a6a1f1dSLionel Sambuc	jnz	.L008maw_finish2
201*0a6a1f1dSLionel Sambuc	jmp	.L009maw_end
202*0a6a1f1dSLionel Sambuc.L008maw_finish2:
203ebfedea0SLionel Sambuc
204ebfedea0SLionel Sambuc	movl	(%ebx),%eax
205ebfedea0SLionel Sambuc	mull	%ebp
206ebfedea0SLionel Sambuc	addl	%esi,%eax
207ebfedea0SLionel Sambuc	adcl	$0,%edx
208ebfedea0SLionel Sambuc	addl	(%edi),%eax
209ebfedea0SLionel Sambuc	adcl	$0,%edx
210ebfedea0SLionel Sambuc	decl	%ecx
211ebfedea0SLionel Sambuc	movl	%eax,(%edi)
212ebfedea0SLionel Sambuc	movl	%edx,%esi
213*0a6a1f1dSLionel Sambuc	jz	.L009maw_end
214ebfedea0SLionel Sambuc
215ebfedea0SLionel Sambuc	movl	4(%ebx),%eax
216ebfedea0SLionel Sambuc	mull	%ebp
217ebfedea0SLionel Sambuc	addl	%esi,%eax
218ebfedea0SLionel Sambuc	adcl	$0,%edx
219ebfedea0SLionel Sambuc	addl	4(%edi),%eax
220ebfedea0SLionel Sambuc	adcl	$0,%edx
221ebfedea0SLionel Sambuc	decl	%ecx
222ebfedea0SLionel Sambuc	movl	%eax,4(%edi)
223ebfedea0SLionel Sambuc	movl	%edx,%esi
224*0a6a1f1dSLionel Sambuc	jz	.L009maw_end
225ebfedea0SLionel Sambuc
226ebfedea0SLionel Sambuc	movl	8(%ebx),%eax
227ebfedea0SLionel Sambuc	mull	%ebp
228ebfedea0SLionel Sambuc	addl	%esi,%eax
229ebfedea0SLionel Sambuc	adcl	$0,%edx
230ebfedea0SLionel Sambuc	addl	8(%edi),%eax
231ebfedea0SLionel Sambuc	adcl	$0,%edx
232ebfedea0SLionel Sambuc	decl	%ecx
233ebfedea0SLionel Sambuc	movl	%eax,8(%edi)
234ebfedea0SLionel Sambuc	movl	%edx,%esi
235*0a6a1f1dSLionel Sambuc	jz	.L009maw_end
236ebfedea0SLionel Sambuc
237ebfedea0SLionel Sambuc	movl	12(%ebx),%eax
238ebfedea0SLionel Sambuc	mull	%ebp
239ebfedea0SLionel Sambuc	addl	%esi,%eax
240ebfedea0SLionel Sambuc	adcl	$0,%edx
241ebfedea0SLionel Sambuc	addl	12(%edi),%eax
242ebfedea0SLionel Sambuc	adcl	$0,%edx
243ebfedea0SLionel Sambuc	decl	%ecx
244ebfedea0SLionel Sambuc	movl	%eax,12(%edi)
245ebfedea0SLionel Sambuc	movl	%edx,%esi
246*0a6a1f1dSLionel Sambuc	jz	.L009maw_end
247ebfedea0SLionel Sambuc
248ebfedea0SLionel Sambuc	movl	16(%ebx),%eax
249ebfedea0SLionel Sambuc	mull	%ebp
250ebfedea0SLionel Sambuc	addl	%esi,%eax
251ebfedea0SLionel Sambuc	adcl	$0,%edx
252ebfedea0SLionel Sambuc	addl	16(%edi),%eax
253ebfedea0SLionel Sambuc	adcl	$0,%edx
254ebfedea0SLionel Sambuc	decl	%ecx
255ebfedea0SLionel Sambuc	movl	%eax,16(%edi)
256ebfedea0SLionel Sambuc	movl	%edx,%esi
257*0a6a1f1dSLionel Sambuc	jz	.L009maw_end
258ebfedea0SLionel Sambuc
259ebfedea0SLionel Sambuc	movl	20(%ebx),%eax
260ebfedea0SLionel Sambuc	mull	%ebp
261ebfedea0SLionel Sambuc	addl	%esi,%eax
262ebfedea0SLionel Sambuc	adcl	$0,%edx
263ebfedea0SLionel Sambuc	addl	20(%edi),%eax
264ebfedea0SLionel Sambuc	adcl	$0,%edx
265ebfedea0SLionel Sambuc	decl	%ecx
266ebfedea0SLionel Sambuc	movl	%eax,20(%edi)
267ebfedea0SLionel Sambuc	movl	%edx,%esi
268*0a6a1f1dSLionel Sambuc	jz	.L009maw_end
269ebfedea0SLionel Sambuc
270ebfedea0SLionel Sambuc	movl	24(%ebx),%eax
271ebfedea0SLionel Sambuc	mull	%ebp
272ebfedea0SLionel Sambuc	addl	%esi,%eax
273ebfedea0SLionel Sambuc	adcl	$0,%edx
274ebfedea0SLionel Sambuc	addl	24(%edi),%eax
275ebfedea0SLionel Sambuc	adcl	$0,%edx
276ebfedea0SLionel Sambuc	movl	%eax,24(%edi)
277ebfedea0SLionel Sambuc	movl	%edx,%esi
278*0a6a1f1dSLionel Sambuc.L009maw_end:
279ebfedea0SLionel Sambuc	movl	%esi,%eax
280ebfedea0SLionel Sambuc	popl	%ecx
281ebfedea0SLionel Sambuc	popl	%edi
282ebfedea0SLionel Sambuc	popl	%esi
283ebfedea0SLionel Sambuc	popl	%ebx
284ebfedea0SLionel Sambuc	popl	%ebp
285ebfedea0SLionel Sambuc	ret
286ebfedea0SLionel Sambuc.size	bn_mul_add_words,.-.L_bn_mul_add_words_begin
287ebfedea0SLionel Sambuc.globl	bn_mul_words
288ebfedea0SLionel Sambuc.type	bn_mul_words,@function
289ebfedea0SLionel Sambuc.align	16
290ebfedea0SLionel Sambucbn_mul_words:
291ebfedea0SLionel Sambuc.L_bn_mul_words_begin:
292*0a6a1f1dSLionel Sambuc	call	.L010PIC_me_up
293*0a6a1f1dSLionel Sambuc.L010PIC_me_up:
294*0a6a1f1dSLionel Sambuc	popl	%eax
295*0a6a1f1dSLionel Sambuc	leal	_GLOBAL_OFFSET_TABLE_+[.-.L010PIC_me_up](%eax),%eax
296*0a6a1f1dSLionel Sambuc	movl	OPENSSL_ia32cap_P@GOT(%eax),%eax
297*0a6a1f1dSLionel Sambuc	btl	$26,(%eax)
298*0a6a1f1dSLionel Sambuc	jnc	.L011mw_non_sse2
299*0a6a1f1dSLionel Sambuc	movl	4(%esp),%eax
300*0a6a1f1dSLionel Sambuc	movl	8(%esp),%edx
301*0a6a1f1dSLionel Sambuc	movl	12(%esp),%ecx
302*0a6a1f1dSLionel Sambuc	movd	16(%esp),%mm0
303*0a6a1f1dSLionel Sambuc	pxor	%mm1,%mm1
304*0a6a1f1dSLionel Sambuc.align	16
305*0a6a1f1dSLionel Sambuc.L012mw_sse2_loop:
306*0a6a1f1dSLionel Sambuc	movd	(%edx),%mm2
307*0a6a1f1dSLionel Sambuc	pmuludq	%mm0,%mm2
308*0a6a1f1dSLionel Sambuc	leal	4(%edx),%edx
309*0a6a1f1dSLionel Sambuc	paddq	%mm2,%mm1
310*0a6a1f1dSLionel Sambuc	movd	%mm1,(%eax)
311*0a6a1f1dSLionel Sambuc	subl	$1,%ecx
312*0a6a1f1dSLionel Sambuc	psrlq	$32,%mm1
313*0a6a1f1dSLionel Sambuc	leal	4(%eax),%eax
314*0a6a1f1dSLionel Sambuc	jnz	.L012mw_sse2_loop
315*0a6a1f1dSLionel Sambuc	movd	%mm1,%eax
316*0a6a1f1dSLionel Sambuc	emms
317*0a6a1f1dSLionel Sambuc	ret
318*0a6a1f1dSLionel Sambuc.align	16
319*0a6a1f1dSLionel Sambuc.L011mw_non_sse2:
320ebfedea0SLionel Sambuc	pushl	%ebp
321ebfedea0SLionel Sambuc	pushl	%ebx
322ebfedea0SLionel Sambuc	pushl	%esi
323ebfedea0SLionel Sambuc	pushl	%edi
324ebfedea0SLionel Sambuc
325ebfedea0SLionel Sambuc	xorl	%esi,%esi
326ebfedea0SLionel Sambuc	movl	20(%esp),%edi
327ebfedea0SLionel Sambuc	movl	24(%esp),%ebx
328ebfedea0SLionel Sambuc	movl	28(%esp),%ebp
329ebfedea0SLionel Sambuc	movl	32(%esp),%ecx
330ebfedea0SLionel Sambuc	andl	$4294967288,%ebp
331*0a6a1f1dSLionel Sambuc	jz	.L013mw_finish
332*0a6a1f1dSLionel Sambuc.L014mw_loop:
333ebfedea0SLionel Sambuc
334ebfedea0SLionel Sambuc	movl	(%ebx),%eax
335ebfedea0SLionel Sambuc	mull	%ecx
336ebfedea0SLionel Sambuc	addl	%esi,%eax
337ebfedea0SLionel Sambuc	adcl	$0,%edx
338ebfedea0SLionel Sambuc	movl	%eax,(%edi)
339ebfedea0SLionel Sambuc	movl	%edx,%esi
340ebfedea0SLionel Sambuc
341ebfedea0SLionel Sambuc	movl	4(%ebx),%eax
342ebfedea0SLionel Sambuc	mull	%ecx
343ebfedea0SLionel Sambuc	addl	%esi,%eax
344ebfedea0SLionel Sambuc	adcl	$0,%edx
345ebfedea0SLionel Sambuc	movl	%eax,4(%edi)
346ebfedea0SLionel Sambuc	movl	%edx,%esi
347ebfedea0SLionel Sambuc
348ebfedea0SLionel Sambuc	movl	8(%ebx),%eax
349ebfedea0SLionel Sambuc	mull	%ecx
350ebfedea0SLionel Sambuc	addl	%esi,%eax
351ebfedea0SLionel Sambuc	adcl	$0,%edx
352ebfedea0SLionel Sambuc	movl	%eax,8(%edi)
353ebfedea0SLionel Sambuc	movl	%edx,%esi
354ebfedea0SLionel Sambuc
355ebfedea0SLionel Sambuc	movl	12(%ebx),%eax
356ebfedea0SLionel Sambuc	mull	%ecx
357ebfedea0SLionel Sambuc	addl	%esi,%eax
358ebfedea0SLionel Sambuc	adcl	$0,%edx
359ebfedea0SLionel Sambuc	movl	%eax,12(%edi)
360ebfedea0SLionel Sambuc	movl	%edx,%esi
361ebfedea0SLionel Sambuc
362ebfedea0SLionel Sambuc	movl	16(%ebx),%eax
363ebfedea0SLionel Sambuc	mull	%ecx
364ebfedea0SLionel Sambuc	addl	%esi,%eax
365ebfedea0SLionel Sambuc	adcl	$0,%edx
366ebfedea0SLionel Sambuc	movl	%eax,16(%edi)
367ebfedea0SLionel Sambuc	movl	%edx,%esi
368ebfedea0SLionel Sambuc
369ebfedea0SLionel Sambuc	movl	20(%ebx),%eax
370ebfedea0SLionel Sambuc	mull	%ecx
371ebfedea0SLionel Sambuc	addl	%esi,%eax
372ebfedea0SLionel Sambuc	adcl	$0,%edx
373ebfedea0SLionel Sambuc	movl	%eax,20(%edi)
374ebfedea0SLionel Sambuc	movl	%edx,%esi
375ebfedea0SLionel Sambuc
376ebfedea0SLionel Sambuc	movl	24(%ebx),%eax
377ebfedea0SLionel Sambuc	mull	%ecx
378ebfedea0SLionel Sambuc	addl	%esi,%eax
379ebfedea0SLionel Sambuc	adcl	$0,%edx
380ebfedea0SLionel Sambuc	movl	%eax,24(%edi)
381ebfedea0SLionel Sambuc	movl	%edx,%esi
382ebfedea0SLionel Sambuc
383ebfedea0SLionel Sambuc	movl	28(%ebx),%eax
384ebfedea0SLionel Sambuc	mull	%ecx
385ebfedea0SLionel Sambuc	addl	%esi,%eax
386ebfedea0SLionel Sambuc	adcl	$0,%edx
387ebfedea0SLionel Sambuc	movl	%eax,28(%edi)
388ebfedea0SLionel Sambuc	movl	%edx,%esi
389ebfedea0SLionel Sambuc
390ebfedea0SLionel Sambuc	addl	$32,%ebx
391ebfedea0SLionel Sambuc	addl	$32,%edi
392ebfedea0SLionel Sambuc	subl	$8,%ebp
393*0a6a1f1dSLionel Sambuc	jz	.L013mw_finish
394*0a6a1f1dSLionel Sambuc	jmp	.L014mw_loop
395*0a6a1f1dSLionel Sambuc.L013mw_finish:
396ebfedea0SLionel Sambuc	movl	28(%esp),%ebp
397ebfedea0SLionel Sambuc	andl	$7,%ebp
398*0a6a1f1dSLionel Sambuc	jnz	.L015mw_finish2
399*0a6a1f1dSLionel Sambuc	jmp	.L016mw_end
400*0a6a1f1dSLionel Sambuc.L015mw_finish2:
401ebfedea0SLionel Sambuc
402ebfedea0SLionel Sambuc	movl	(%ebx),%eax
403ebfedea0SLionel Sambuc	mull	%ecx
404ebfedea0SLionel Sambuc	addl	%esi,%eax
405ebfedea0SLionel Sambuc	adcl	$0,%edx
406ebfedea0SLionel Sambuc	movl	%eax,(%edi)
407ebfedea0SLionel Sambuc	movl	%edx,%esi
408ebfedea0SLionel Sambuc	decl	%ebp
409*0a6a1f1dSLionel Sambuc	jz	.L016mw_end
410ebfedea0SLionel Sambuc
411ebfedea0SLionel Sambuc	movl	4(%ebx),%eax
412ebfedea0SLionel Sambuc	mull	%ecx
413ebfedea0SLionel Sambuc	addl	%esi,%eax
414ebfedea0SLionel Sambuc	adcl	$0,%edx
415ebfedea0SLionel Sambuc	movl	%eax,4(%edi)
416ebfedea0SLionel Sambuc	movl	%edx,%esi
417ebfedea0SLionel Sambuc	decl	%ebp
418*0a6a1f1dSLionel Sambuc	jz	.L016mw_end
419ebfedea0SLionel Sambuc
420ebfedea0SLionel Sambuc	movl	8(%ebx),%eax
421ebfedea0SLionel Sambuc	mull	%ecx
422ebfedea0SLionel Sambuc	addl	%esi,%eax
423ebfedea0SLionel Sambuc	adcl	$0,%edx
424ebfedea0SLionel Sambuc	movl	%eax,8(%edi)
425ebfedea0SLionel Sambuc	movl	%edx,%esi
426ebfedea0SLionel Sambuc	decl	%ebp
427*0a6a1f1dSLionel Sambuc	jz	.L016mw_end
428ebfedea0SLionel Sambuc
429ebfedea0SLionel Sambuc	movl	12(%ebx),%eax
430ebfedea0SLionel Sambuc	mull	%ecx
431ebfedea0SLionel Sambuc	addl	%esi,%eax
432ebfedea0SLionel Sambuc	adcl	$0,%edx
433ebfedea0SLionel Sambuc	movl	%eax,12(%edi)
434ebfedea0SLionel Sambuc	movl	%edx,%esi
435ebfedea0SLionel Sambuc	decl	%ebp
436*0a6a1f1dSLionel Sambuc	jz	.L016mw_end
437ebfedea0SLionel Sambuc
438ebfedea0SLionel Sambuc	movl	16(%ebx),%eax
439ebfedea0SLionel Sambuc	mull	%ecx
440ebfedea0SLionel Sambuc	addl	%esi,%eax
441ebfedea0SLionel Sambuc	adcl	$0,%edx
442ebfedea0SLionel Sambuc	movl	%eax,16(%edi)
443ebfedea0SLionel Sambuc	movl	%edx,%esi
444ebfedea0SLionel Sambuc	decl	%ebp
445*0a6a1f1dSLionel Sambuc	jz	.L016mw_end
446ebfedea0SLionel Sambuc
447ebfedea0SLionel Sambuc	movl	20(%ebx),%eax
448ebfedea0SLionel Sambuc	mull	%ecx
449ebfedea0SLionel Sambuc	addl	%esi,%eax
450ebfedea0SLionel Sambuc	adcl	$0,%edx
451ebfedea0SLionel Sambuc	movl	%eax,20(%edi)
452ebfedea0SLionel Sambuc	movl	%edx,%esi
453ebfedea0SLionel Sambuc	decl	%ebp
454*0a6a1f1dSLionel Sambuc	jz	.L016mw_end
455ebfedea0SLionel Sambuc
456ebfedea0SLionel Sambuc	movl	24(%ebx),%eax
457ebfedea0SLionel Sambuc	mull	%ecx
458ebfedea0SLionel Sambuc	addl	%esi,%eax
459ebfedea0SLionel Sambuc	adcl	$0,%edx
460ebfedea0SLionel Sambuc	movl	%eax,24(%edi)
461ebfedea0SLionel Sambuc	movl	%edx,%esi
462*0a6a1f1dSLionel Sambuc.L016mw_end:
463ebfedea0SLionel Sambuc	movl	%esi,%eax
464ebfedea0SLionel Sambuc	popl	%edi
465ebfedea0SLionel Sambuc	popl	%esi
466ebfedea0SLionel Sambuc	popl	%ebx
467ebfedea0SLionel Sambuc	popl	%ebp
468ebfedea0SLionel Sambuc	ret
469ebfedea0SLionel Sambuc.size	bn_mul_words,.-.L_bn_mul_words_begin
470ebfedea0SLionel Sambuc.globl	bn_sqr_words
471ebfedea0SLionel Sambuc.type	bn_sqr_words,@function
472ebfedea0SLionel Sambuc.align	16
473ebfedea0SLionel Sambucbn_sqr_words:
474ebfedea0SLionel Sambuc.L_bn_sqr_words_begin:
475*0a6a1f1dSLionel Sambuc	call	.L017PIC_me_up
476*0a6a1f1dSLionel Sambuc.L017PIC_me_up:
477*0a6a1f1dSLionel Sambuc	popl	%eax
478*0a6a1f1dSLionel Sambuc	leal	_GLOBAL_OFFSET_TABLE_+[.-.L017PIC_me_up](%eax),%eax
479*0a6a1f1dSLionel Sambuc	movl	OPENSSL_ia32cap_P@GOT(%eax),%eax
480*0a6a1f1dSLionel Sambuc	btl	$26,(%eax)
481*0a6a1f1dSLionel Sambuc	jnc	.L018sqr_non_sse2
482*0a6a1f1dSLionel Sambuc	movl	4(%esp),%eax
483*0a6a1f1dSLionel Sambuc	movl	8(%esp),%edx
484*0a6a1f1dSLionel Sambuc	movl	12(%esp),%ecx
485*0a6a1f1dSLionel Sambuc.align	16
486*0a6a1f1dSLionel Sambuc.L019sqr_sse2_loop:
487*0a6a1f1dSLionel Sambuc	movd	(%edx),%mm0
488*0a6a1f1dSLionel Sambuc	pmuludq	%mm0,%mm0
489*0a6a1f1dSLionel Sambuc	leal	4(%edx),%edx
490*0a6a1f1dSLionel Sambuc	movq	%mm0,(%eax)
491*0a6a1f1dSLionel Sambuc	subl	$1,%ecx
492*0a6a1f1dSLionel Sambuc	leal	8(%eax),%eax
493*0a6a1f1dSLionel Sambuc	jnz	.L019sqr_sse2_loop
494*0a6a1f1dSLionel Sambuc	emms
495*0a6a1f1dSLionel Sambuc	ret
496*0a6a1f1dSLionel Sambuc.align	16
497*0a6a1f1dSLionel Sambuc.L018sqr_non_sse2:
498ebfedea0SLionel Sambuc	pushl	%ebp
499ebfedea0SLionel Sambuc	pushl	%ebx
500ebfedea0SLionel Sambuc	pushl	%esi
501ebfedea0SLionel Sambuc	pushl	%edi
502ebfedea0SLionel Sambuc
503ebfedea0SLionel Sambuc	movl	20(%esp),%esi
504ebfedea0SLionel Sambuc	movl	24(%esp),%edi
505ebfedea0SLionel Sambuc	movl	28(%esp),%ebx
506ebfedea0SLionel Sambuc	andl	$4294967288,%ebx
507*0a6a1f1dSLionel Sambuc	jz	.L020sw_finish
508*0a6a1f1dSLionel Sambuc.L021sw_loop:
509ebfedea0SLionel Sambuc
510ebfedea0SLionel Sambuc	movl	(%edi),%eax
511ebfedea0SLionel Sambuc	mull	%eax
512ebfedea0SLionel Sambuc	movl	%eax,(%esi)
513ebfedea0SLionel Sambuc	movl	%edx,4(%esi)
514ebfedea0SLionel Sambuc
515ebfedea0SLionel Sambuc	movl	4(%edi),%eax
516ebfedea0SLionel Sambuc	mull	%eax
517ebfedea0SLionel Sambuc	movl	%eax,8(%esi)
518ebfedea0SLionel Sambuc	movl	%edx,12(%esi)
519ebfedea0SLionel Sambuc
520ebfedea0SLionel Sambuc	movl	8(%edi),%eax
521ebfedea0SLionel Sambuc	mull	%eax
522ebfedea0SLionel Sambuc	movl	%eax,16(%esi)
523ebfedea0SLionel Sambuc	movl	%edx,20(%esi)
524ebfedea0SLionel Sambuc
525ebfedea0SLionel Sambuc	movl	12(%edi),%eax
526ebfedea0SLionel Sambuc	mull	%eax
527ebfedea0SLionel Sambuc	movl	%eax,24(%esi)
528ebfedea0SLionel Sambuc	movl	%edx,28(%esi)
529ebfedea0SLionel Sambuc
530ebfedea0SLionel Sambuc	movl	16(%edi),%eax
531ebfedea0SLionel Sambuc	mull	%eax
532ebfedea0SLionel Sambuc	movl	%eax,32(%esi)
533ebfedea0SLionel Sambuc	movl	%edx,36(%esi)
534ebfedea0SLionel Sambuc
535ebfedea0SLionel Sambuc	movl	20(%edi),%eax
536ebfedea0SLionel Sambuc	mull	%eax
537ebfedea0SLionel Sambuc	movl	%eax,40(%esi)
538ebfedea0SLionel Sambuc	movl	%edx,44(%esi)
539ebfedea0SLionel Sambuc
540ebfedea0SLionel Sambuc	movl	24(%edi),%eax
541ebfedea0SLionel Sambuc	mull	%eax
542ebfedea0SLionel Sambuc	movl	%eax,48(%esi)
543ebfedea0SLionel Sambuc	movl	%edx,52(%esi)
544ebfedea0SLionel Sambuc
545ebfedea0SLionel Sambuc	movl	28(%edi),%eax
546ebfedea0SLionel Sambuc	mull	%eax
547ebfedea0SLionel Sambuc	movl	%eax,56(%esi)
548ebfedea0SLionel Sambuc	movl	%edx,60(%esi)
549ebfedea0SLionel Sambuc
550ebfedea0SLionel Sambuc	addl	$32,%edi
551ebfedea0SLionel Sambuc	addl	$64,%esi
552ebfedea0SLionel Sambuc	subl	$8,%ebx
553*0a6a1f1dSLionel Sambuc	jnz	.L021sw_loop
554*0a6a1f1dSLionel Sambuc.L020sw_finish:
555ebfedea0SLionel Sambuc	movl	28(%esp),%ebx
556ebfedea0SLionel Sambuc	andl	$7,%ebx
557*0a6a1f1dSLionel Sambuc	jz	.L022sw_end
558ebfedea0SLionel Sambuc
559ebfedea0SLionel Sambuc	movl	(%edi),%eax
560ebfedea0SLionel Sambuc	mull	%eax
561ebfedea0SLionel Sambuc	movl	%eax,(%esi)
562ebfedea0SLionel Sambuc	decl	%ebx
563ebfedea0SLionel Sambuc	movl	%edx,4(%esi)
564*0a6a1f1dSLionel Sambuc	jz	.L022sw_end
565ebfedea0SLionel Sambuc
566ebfedea0SLionel Sambuc	movl	4(%edi),%eax
567ebfedea0SLionel Sambuc	mull	%eax
568ebfedea0SLionel Sambuc	movl	%eax,8(%esi)
569ebfedea0SLionel Sambuc	decl	%ebx
570ebfedea0SLionel Sambuc	movl	%edx,12(%esi)
571*0a6a1f1dSLionel Sambuc	jz	.L022sw_end
572ebfedea0SLionel Sambuc
573ebfedea0SLionel Sambuc	movl	8(%edi),%eax
574ebfedea0SLionel Sambuc	mull	%eax
575ebfedea0SLionel Sambuc	movl	%eax,16(%esi)
576ebfedea0SLionel Sambuc	decl	%ebx
577ebfedea0SLionel Sambuc	movl	%edx,20(%esi)
578*0a6a1f1dSLionel Sambuc	jz	.L022sw_end
579ebfedea0SLionel Sambuc
580ebfedea0SLionel Sambuc	movl	12(%edi),%eax
581ebfedea0SLionel Sambuc	mull	%eax
582ebfedea0SLionel Sambuc	movl	%eax,24(%esi)
583ebfedea0SLionel Sambuc	decl	%ebx
584ebfedea0SLionel Sambuc	movl	%edx,28(%esi)
585*0a6a1f1dSLionel Sambuc	jz	.L022sw_end
586ebfedea0SLionel Sambuc
587ebfedea0SLionel Sambuc	movl	16(%edi),%eax
588ebfedea0SLionel Sambuc	mull	%eax
589ebfedea0SLionel Sambuc	movl	%eax,32(%esi)
590ebfedea0SLionel Sambuc	decl	%ebx
591ebfedea0SLionel Sambuc	movl	%edx,36(%esi)
592*0a6a1f1dSLionel Sambuc	jz	.L022sw_end
593ebfedea0SLionel Sambuc
594ebfedea0SLionel Sambuc	movl	20(%edi),%eax
595ebfedea0SLionel Sambuc	mull	%eax
596ebfedea0SLionel Sambuc	movl	%eax,40(%esi)
597ebfedea0SLionel Sambuc	decl	%ebx
598ebfedea0SLionel Sambuc	movl	%edx,44(%esi)
599*0a6a1f1dSLionel Sambuc	jz	.L022sw_end
600ebfedea0SLionel Sambuc
601ebfedea0SLionel Sambuc	movl	24(%edi),%eax
602ebfedea0SLionel Sambuc	mull	%eax
603ebfedea0SLionel Sambuc	movl	%eax,48(%esi)
604ebfedea0SLionel Sambuc	movl	%edx,52(%esi)
605*0a6a1f1dSLionel Sambuc.L022sw_end:
606ebfedea0SLionel Sambuc	popl	%edi
607ebfedea0SLionel Sambuc	popl	%esi
608ebfedea0SLionel Sambuc	popl	%ebx
609ebfedea0SLionel Sambuc	popl	%ebp
610ebfedea0SLionel Sambuc	ret
611ebfedea0SLionel Sambuc.size	bn_sqr_words,.-.L_bn_sqr_words_begin
612ebfedea0SLionel Sambuc.globl	bn_div_words
613ebfedea0SLionel Sambuc.type	bn_div_words,@function
614ebfedea0SLionel Sambuc.align	16
615ebfedea0SLionel Sambucbn_div_words:
616ebfedea0SLionel Sambuc.L_bn_div_words_begin:
617ebfedea0SLionel Sambuc	movl	4(%esp),%edx
618ebfedea0SLionel Sambuc	movl	8(%esp),%eax
619ebfedea0SLionel Sambuc	movl	12(%esp),%ecx
620ebfedea0SLionel Sambuc	divl	%ecx
621ebfedea0SLionel Sambuc	ret
622ebfedea0SLionel Sambuc.size	bn_div_words,.-.L_bn_div_words_begin
623ebfedea0SLionel Sambuc.globl	bn_add_words
624ebfedea0SLionel Sambuc.type	bn_add_words,@function
625ebfedea0SLionel Sambuc.align	16
626ebfedea0SLionel Sambucbn_add_words:
627ebfedea0SLionel Sambuc.L_bn_add_words_begin:
628ebfedea0SLionel Sambuc	pushl	%ebp
629ebfedea0SLionel Sambuc	pushl	%ebx
630ebfedea0SLionel Sambuc	pushl	%esi
631ebfedea0SLionel Sambuc	pushl	%edi
632ebfedea0SLionel Sambuc
633ebfedea0SLionel Sambuc	movl	20(%esp),%ebx
634ebfedea0SLionel Sambuc	movl	24(%esp),%esi
635ebfedea0SLionel Sambuc	movl	28(%esp),%edi
636ebfedea0SLionel Sambuc	movl	32(%esp),%ebp
637ebfedea0SLionel Sambuc	xorl	%eax,%eax
638ebfedea0SLionel Sambuc	andl	$4294967288,%ebp
639*0a6a1f1dSLionel Sambuc	jz	.L023aw_finish
640*0a6a1f1dSLionel Sambuc.L024aw_loop:
641ebfedea0SLionel Sambuc
642ebfedea0SLionel Sambuc	movl	(%esi),%ecx
643ebfedea0SLionel Sambuc	movl	(%edi),%edx
644ebfedea0SLionel Sambuc	addl	%eax,%ecx
645ebfedea0SLionel Sambuc	movl	$0,%eax
646ebfedea0SLionel Sambuc	adcl	%eax,%eax
647ebfedea0SLionel Sambuc	addl	%edx,%ecx
648ebfedea0SLionel Sambuc	adcl	$0,%eax
649ebfedea0SLionel Sambuc	movl	%ecx,(%ebx)
650ebfedea0SLionel Sambuc
651ebfedea0SLionel Sambuc	movl	4(%esi),%ecx
652ebfedea0SLionel Sambuc	movl	4(%edi),%edx
653ebfedea0SLionel Sambuc	addl	%eax,%ecx
654ebfedea0SLionel Sambuc	movl	$0,%eax
655ebfedea0SLionel Sambuc	adcl	%eax,%eax
656ebfedea0SLionel Sambuc	addl	%edx,%ecx
657ebfedea0SLionel Sambuc	adcl	$0,%eax
658ebfedea0SLionel Sambuc	movl	%ecx,4(%ebx)
659ebfedea0SLionel Sambuc
660ebfedea0SLionel Sambuc	movl	8(%esi),%ecx
661ebfedea0SLionel Sambuc	movl	8(%edi),%edx
662ebfedea0SLionel Sambuc	addl	%eax,%ecx
663ebfedea0SLionel Sambuc	movl	$0,%eax
664ebfedea0SLionel Sambuc	adcl	%eax,%eax
665ebfedea0SLionel Sambuc	addl	%edx,%ecx
666ebfedea0SLionel Sambuc	adcl	$0,%eax
667ebfedea0SLionel Sambuc	movl	%ecx,8(%ebx)
668ebfedea0SLionel Sambuc
669ebfedea0SLionel Sambuc	movl	12(%esi),%ecx
670ebfedea0SLionel Sambuc	movl	12(%edi),%edx
671ebfedea0SLionel Sambuc	addl	%eax,%ecx
672ebfedea0SLionel Sambuc	movl	$0,%eax
673ebfedea0SLionel Sambuc	adcl	%eax,%eax
674ebfedea0SLionel Sambuc	addl	%edx,%ecx
675ebfedea0SLionel Sambuc	adcl	$0,%eax
676ebfedea0SLionel Sambuc	movl	%ecx,12(%ebx)
677ebfedea0SLionel Sambuc
678ebfedea0SLionel Sambuc	movl	16(%esi),%ecx
679ebfedea0SLionel Sambuc	movl	16(%edi),%edx
680ebfedea0SLionel Sambuc	addl	%eax,%ecx
681ebfedea0SLionel Sambuc	movl	$0,%eax
682ebfedea0SLionel Sambuc	adcl	%eax,%eax
683ebfedea0SLionel Sambuc	addl	%edx,%ecx
684ebfedea0SLionel Sambuc	adcl	$0,%eax
685ebfedea0SLionel Sambuc	movl	%ecx,16(%ebx)
686ebfedea0SLionel Sambuc
687ebfedea0SLionel Sambuc	movl	20(%esi),%ecx
688ebfedea0SLionel Sambuc	movl	20(%edi),%edx
689ebfedea0SLionel Sambuc	addl	%eax,%ecx
690ebfedea0SLionel Sambuc	movl	$0,%eax
691ebfedea0SLionel Sambuc	adcl	%eax,%eax
692ebfedea0SLionel Sambuc	addl	%edx,%ecx
693ebfedea0SLionel Sambuc	adcl	$0,%eax
694ebfedea0SLionel Sambuc	movl	%ecx,20(%ebx)
695ebfedea0SLionel Sambuc
696ebfedea0SLionel Sambuc	movl	24(%esi),%ecx
697ebfedea0SLionel Sambuc	movl	24(%edi),%edx
698ebfedea0SLionel Sambuc	addl	%eax,%ecx
699ebfedea0SLionel Sambuc	movl	$0,%eax
700ebfedea0SLionel Sambuc	adcl	%eax,%eax
701ebfedea0SLionel Sambuc	addl	%edx,%ecx
702ebfedea0SLionel Sambuc	adcl	$0,%eax
703ebfedea0SLionel Sambuc	movl	%ecx,24(%ebx)
704ebfedea0SLionel Sambuc
705ebfedea0SLionel Sambuc	movl	28(%esi),%ecx
706ebfedea0SLionel Sambuc	movl	28(%edi),%edx
707ebfedea0SLionel Sambuc	addl	%eax,%ecx
708ebfedea0SLionel Sambuc	movl	$0,%eax
709ebfedea0SLionel Sambuc	adcl	%eax,%eax
710ebfedea0SLionel Sambuc	addl	%edx,%ecx
711ebfedea0SLionel Sambuc	adcl	$0,%eax
712ebfedea0SLionel Sambuc	movl	%ecx,28(%ebx)
713ebfedea0SLionel Sambuc
714ebfedea0SLionel Sambuc	addl	$32,%esi
715ebfedea0SLionel Sambuc	addl	$32,%edi
716ebfedea0SLionel Sambuc	addl	$32,%ebx
717ebfedea0SLionel Sambuc	subl	$8,%ebp
718*0a6a1f1dSLionel Sambuc	jnz	.L024aw_loop
719*0a6a1f1dSLionel Sambuc.L023aw_finish:
720ebfedea0SLionel Sambuc	movl	32(%esp),%ebp
721ebfedea0SLionel Sambuc	andl	$7,%ebp
722*0a6a1f1dSLionel Sambuc	jz	.L025aw_end
723ebfedea0SLionel Sambuc
724ebfedea0SLionel Sambuc	movl	(%esi),%ecx
725ebfedea0SLionel Sambuc	movl	(%edi),%edx
726ebfedea0SLionel Sambuc	addl	%eax,%ecx
727ebfedea0SLionel Sambuc	movl	$0,%eax
728ebfedea0SLionel Sambuc	adcl	%eax,%eax
729ebfedea0SLionel Sambuc	addl	%edx,%ecx
730ebfedea0SLionel Sambuc	adcl	$0,%eax
731ebfedea0SLionel Sambuc	decl	%ebp
732ebfedea0SLionel Sambuc	movl	%ecx,(%ebx)
733*0a6a1f1dSLionel Sambuc	jz	.L025aw_end
734ebfedea0SLionel Sambuc
735ebfedea0SLionel Sambuc	movl	4(%esi),%ecx
736ebfedea0SLionel Sambuc	movl	4(%edi),%edx
737ebfedea0SLionel Sambuc	addl	%eax,%ecx
738ebfedea0SLionel Sambuc	movl	$0,%eax
739ebfedea0SLionel Sambuc	adcl	%eax,%eax
740ebfedea0SLionel Sambuc	addl	%edx,%ecx
741ebfedea0SLionel Sambuc	adcl	$0,%eax
742ebfedea0SLionel Sambuc	decl	%ebp
743ebfedea0SLionel Sambuc	movl	%ecx,4(%ebx)
744*0a6a1f1dSLionel Sambuc	jz	.L025aw_end
745ebfedea0SLionel Sambuc
746ebfedea0SLionel Sambuc	movl	8(%esi),%ecx
747ebfedea0SLionel Sambuc	movl	8(%edi),%edx
748ebfedea0SLionel Sambuc	addl	%eax,%ecx
749ebfedea0SLionel Sambuc	movl	$0,%eax
750ebfedea0SLionel Sambuc	adcl	%eax,%eax
751ebfedea0SLionel Sambuc	addl	%edx,%ecx
752ebfedea0SLionel Sambuc	adcl	$0,%eax
753ebfedea0SLionel Sambuc	decl	%ebp
754ebfedea0SLionel Sambuc	movl	%ecx,8(%ebx)
755*0a6a1f1dSLionel Sambuc	jz	.L025aw_end
756ebfedea0SLionel Sambuc
757ebfedea0SLionel Sambuc	movl	12(%esi),%ecx
758ebfedea0SLionel Sambuc	movl	12(%edi),%edx
759ebfedea0SLionel Sambuc	addl	%eax,%ecx
760ebfedea0SLionel Sambuc	movl	$0,%eax
761ebfedea0SLionel Sambuc	adcl	%eax,%eax
762ebfedea0SLionel Sambuc	addl	%edx,%ecx
763ebfedea0SLionel Sambuc	adcl	$0,%eax
764ebfedea0SLionel Sambuc	decl	%ebp
765ebfedea0SLionel Sambuc	movl	%ecx,12(%ebx)
766*0a6a1f1dSLionel Sambuc	jz	.L025aw_end
767ebfedea0SLionel Sambuc
768ebfedea0SLionel Sambuc	movl	16(%esi),%ecx
769ebfedea0SLionel Sambuc	movl	16(%edi),%edx
770ebfedea0SLionel Sambuc	addl	%eax,%ecx
771ebfedea0SLionel Sambuc	movl	$0,%eax
772ebfedea0SLionel Sambuc	adcl	%eax,%eax
773ebfedea0SLionel Sambuc	addl	%edx,%ecx
774ebfedea0SLionel Sambuc	adcl	$0,%eax
775ebfedea0SLionel Sambuc	decl	%ebp
776ebfedea0SLionel Sambuc	movl	%ecx,16(%ebx)
777*0a6a1f1dSLionel Sambuc	jz	.L025aw_end
778ebfedea0SLionel Sambuc
779ebfedea0SLionel Sambuc	movl	20(%esi),%ecx
780ebfedea0SLionel Sambuc	movl	20(%edi),%edx
781ebfedea0SLionel Sambuc	addl	%eax,%ecx
782ebfedea0SLionel Sambuc	movl	$0,%eax
783ebfedea0SLionel Sambuc	adcl	%eax,%eax
784ebfedea0SLionel Sambuc	addl	%edx,%ecx
785ebfedea0SLionel Sambuc	adcl	$0,%eax
786ebfedea0SLionel Sambuc	decl	%ebp
787ebfedea0SLionel Sambuc	movl	%ecx,20(%ebx)
788*0a6a1f1dSLionel Sambuc	jz	.L025aw_end
789ebfedea0SLionel Sambuc
790ebfedea0SLionel Sambuc	movl	24(%esi),%ecx
791ebfedea0SLionel Sambuc	movl	24(%edi),%edx
792ebfedea0SLionel Sambuc	addl	%eax,%ecx
793ebfedea0SLionel Sambuc	movl	$0,%eax
794ebfedea0SLionel Sambuc	adcl	%eax,%eax
795ebfedea0SLionel Sambuc	addl	%edx,%ecx
796ebfedea0SLionel Sambuc	adcl	$0,%eax
797ebfedea0SLionel Sambuc	movl	%ecx,24(%ebx)
798*0a6a1f1dSLionel Sambuc.L025aw_end:
799ebfedea0SLionel Sambuc	popl	%edi
800ebfedea0SLionel Sambuc	popl	%esi
801ebfedea0SLionel Sambuc	popl	%ebx
802ebfedea0SLionel Sambuc	popl	%ebp
803ebfedea0SLionel Sambuc	ret
804ebfedea0SLionel Sambuc.size	bn_add_words,.-.L_bn_add_words_begin
805ebfedea0SLionel Sambuc.globl	bn_sub_words
806ebfedea0SLionel Sambuc.type	bn_sub_words,@function
807ebfedea0SLionel Sambuc.align	16
808ebfedea0SLionel Sambucbn_sub_words:
809ebfedea0SLionel Sambuc.L_bn_sub_words_begin:
810ebfedea0SLionel Sambuc	pushl	%ebp
811ebfedea0SLionel Sambuc	pushl	%ebx
812ebfedea0SLionel Sambuc	pushl	%esi
813ebfedea0SLionel Sambuc	pushl	%edi
814ebfedea0SLionel Sambuc
815ebfedea0SLionel Sambuc	movl	20(%esp),%ebx
816ebfedea0SLionel Sambuc	movl	24(%esp),%esi
817ebfedea0SLionel Sambuc	movl	28(%esp),%edi
818ebfedea0SLionel Sambuc	movl	32(%esp),%ebp
819ebfedea0SLionel Sambuc	xorl	%eax,%eax
820ebfedea0SLionel Sambuc	andl	$4294967288,%ebp
821*0a6a1f1dSLionel Sambuc	jz	.L026aw_finish
822*0a6a1f1dSLionel Sambuc.L027aw_loop:
823ebfedea0SLionel Sambuc
824ebfedea0SLionel Sambuc	movl	(%esi),%ecx
825ebfedea0SLionel Sambuc	movl	(%edi),%edx
826ebfedea0SLionel Sambuc	subl	%eax,%ecx
827ebfedea0SLionel Sambuc	movl	$0,%eax
828ebfedea0SLionel Sambuc	adcl	%eax,%eax
829ebfedea0SLionel Sambuc	subl	%edx,%ecx
830ebfedea0SLionel Sambuc	adcl	$0,%eax
831ebfedea0SLionel Sambuc	movl	%ecx,(%ebx)
832ebfedea0SLionel Sambuc
833ebfedea0SLionel Sambuc	movl	4(%esi),%ecx
834ebfedea0SLionel Sambuc	movl	4(%edi),%edx
835ebfedea0SLionel Sambuc	subl	%eax,%ecx
836ebfedea0SLionel Sambuc	movl	$0,%eax
837ebfedea0SLionel Sambuc	adcl	%eax,%eax
838ebfedea0SLionel Sambuc	subl	%edx,%ecx
839ebfedea0SLionel Sambuc	adcl	$0,%eax
840ebfedea0SLionel Sambuc	movl	%ecx,4(%ebx)
841ebfedea0SLionel Sambuc
842ebfedea0SLionel Sambuc	movl	8(%esi),%ecx
843ebfedea0SLionel Sambuc	movl	8(%edi),%edx
844ebfedea0SLionel Sambuc	subl	%eax,%ecx
845ebfedea0SLionel Sambuc	movl	$0,%eax
846ebfedea0SLionel Sambuc	adcl	%eax,%eax
847ebfedea0SLionel Sambuc	subl	%edx,%ecx
848ebfedea0SLionel Sambuc	adcl	$0,%eax
849ebfedea0SLionel Sambuc	movl	%ecx,8(%ebx)
850ebfedea0SLionel Sambuc
851ebfedea0SLionel Sambuc	movl	12(%esi),%ecx
852ebfedea0SLionel Sambuc	movl	12(%edi),%edx
853ebfedea0SLionel Sambuc	subl	%eax,%ecx
854ebfedea0SLionel Sambuc	movl	$0,%eax
855ebfedea0SLionel Sambuc	adcl	%eax,%eax
856ebfedea0SLionel Sambuc	subl	%edx,%ecx
857ebfedea0SLionel Sambuc	adcl	$0,%eax
858ebfedea0SLionel Sambuc	movl	%ecx,12(%ebx)
859ebfedea0SLionel Sambuc
860ebfedea0SLionel Sambuc	movl	16(%esi),%ecx
861ebfedea0SLionel Sambuc	movl	16(%edi),%edx
862ebfedea0SLionel Sambuc	subl	%eax,%ecx
863ebfedea0SLionel Sambuc	movl	$0,%eax
864ebfedea0SLionel Sambuc	adcl	%eax,%eax
865ebfedea0SLionel Sambuc	subl	%edx,%ecx
866ebfedea0SLionel Sambuc	adcl	$0,%eax
867ebfedea0SLionel Sambuc	movl	%ecx,16(%ebx)
868ebfedea0SLionel Sambuc
869ebfedea0SLionel Sambuc	movl	20(%esi),%ecx
870ebfedea0SLionel Sambuc	movl	20(%edi),%edx
871ebfedea0SLionel Sambuc	subl	%eax,%ecx
872ebfedea0SLionel Sambuc	movl	$0,%eax
873ebfedea0SLionel Sambuc	adcl	%eax,%eax
874ebfedea0SLionel Sambuc	subl	%edx,%ecx
875ebfedea0SLionel Sambuc	adcl	$0,%eax
876ebfedea0SLionel Sambuc	movl	%ecx,20(%ebx)
877ebfedea0SLionel Sambuc
878ebfedea0SLionel Sambuc	movl	24(%esi),%ecx
879ebfedea0SLionel Sambuc	movl	24(%edi),%edx
880ebfedea0SLionel Sambuc	subl	%eax,%ecx
881ebfedea0SLionel Sambuc	movl	$0,%eax
882ebfedea0SLionel Sambuc	adcl	%eax,%eax
883ebfedea0SLionel Sambuc	subl	%edx,%ecx
884ebfedea0SLionel Sambuc	adcl	$0,%eax
885ebfedea0SLionel Sambuc	movl	%ecx,24(%ebx)
886ebfedea0SLionel Sambuc
887ebfedea0SLionel Sambuc	movl	28(%esi),%ecx
888ebfedea0SLionel Sambuc	movl	28(%edi),%edx
889ebfedea0SLionel Sambuc	subl	%eax,%ecx
890ebfedea0SLionel Sambuc	movl	$0,%eax
891ebfedea0SLionel Sambuc	adcl	%eax,%eax
892ebfedea0SLionel Sambuc	subl	%edx,%ecx
893ebfedea0SLionel Sambuc	adcl	$0,%eax
894ebfedea0SLionel Sambuc	movl	%ecx,28(%ebx)
895ebfedea0SLionel Sambuc
896ebfedea0SLionel Sambuc	addl	$32,%esi
897ebfedea0SLionel Sambuc	addl	$32,%edi
898ebfedea0SLionel Sambuc	addl	$32,%ebx
899ebfedea0SLionel Sambuc	subl	$8,%ebp
900*0a6a1f1dSLionel Sambuc	jnz	.L027aw_loop
901*0a6a1f1dSLionel Sambuc.L026aw_finish:
902ebfedea0SLionel Sambuc	movl	32(%esp),%ebp
903ebfedea0SLionel Sambuc	andl	$7,%ebp
904*0a6a1f1dSLionel Sambuc	jz	.L028aw_end
905ebfedea0SLionel Sambuc
906ebfedea0SLionel Sambuc	movl	(%esi),%ecx
907ebfedea0SLionel Sambuc	movl	(%edi),%edx
908ebfedea0SLionel Sambuc	subl	%eax,%ecx
909ebfedea0SLionel Sambuc	movl	$0,%eax
910ebfedea0SLionel Sambuc	adcl	%eax,%eax
911ebfedea0SLionel Sambuc	subl	%edx,%ecx
912ebfedea0SLionel Sambuc	adcl	$0,%eax
913ebfedea0SLionel Sambuc	decl	%ebp
914ebfedea0SLionel Sambuc	movl	%ecx,(%ebx)
915*0a6a1f1dSLionel Sambuc	jz	.L028aw_end
916ebfedea0SLionel Sambuc
917ebfedea0SLionel Sambuc	movl	4(%esi),%ecx
918ebfedea0SLionel Sambuc	movl	4(%edi),%edx
919ebfedea0SLionel Sambuc	subl	%eax,%ecx
920ebfedea0SLionel Sambuc	movl	$0,%eax
921ebfedea0SLionel Sambuc	adcl	%eax,%eax
922ebfedea0SLionel Sambuc	subl	%edx,%ecx
923ebfedea0SLionel Sambuc	adcl	$0,%eax
924ebfedea0SLionel Sambuc	decl	%ebp
925ebfedea0SLionel Sambuc	movl	%ecx,4(%ebx)
926*0a6a1f1dSLionel Sambuc	jz	.L028aw_end
927ebfedea0SLionel Sambuc
928ebfedea0SLionel Sambuc	movl	8(%esi),%ecx
929ebfedea0SLionel Sambuc	movl	8(%edi),%edx
930ebfedea0SLionel Sambuc	subl	%eax,%ecx
931ebfedea0SLionel Sambuc	movl	$0,%eax
932ebfedea0SLionel Sambuc	adcl	%eax,%eax
933ebfedea0SLionel Sambuc	subl	%edx,%ecx
934ebfedea0SLionel Sambuc	adcl	$0,%eax
935ebfedea0SLionel Sambuc	decl	%ebp
936ebfedea0SLionel Sambuc	movl	%ecx,8(%ebx)
937*0a6a1f1dSLionel Sambuc	jz	.L028aw_end
938ebfedea0SLionel Sambuc
939ebfedea0SLionel Sambuc	movl	12(%esi),%ecx
940ebfedea0SLionel Sambuc	movl	12(%edi),%edx
941ebfedea0SLionel Sambuc	subl	%eax,%ecx
942ebfedea0SLionel Sambuc	movl	$0,%eax
943ebfedea0SLionel Sambuc	adcl	%eax,%eax
944ebfedea0SLionel Sambuc	subl	%edx,%ecx
945ebfedea0SLionel Sambuc	adcl	$0,%eax
946ebfedea0SLionel Sambuc	decl	%ebp
947ebfedea0SLionel Sambuc	movl	%ecx,12(%ebx)
948*0a6a1f1dSLionel Sambuc	jz	.L028aw_end
949ebfedea0SLionel Sambuc
950ebfedea0SLionel Sambuc	movl	16(%esi),%ecx
951ebfedea0SLionel Sambuc	movl	16(%edi),%edx
952ebfedea0SLionel Sambuc	subl	%eax,%ecx
953ebfedea0SLionel Sambuc	movl	$0,%eax
954ebfedea0SLionel Sambuc	adcl	%eax,%eax
955ebfedea0SLionel Sambuc	subl	%edx,%ecx
956ebfedea0SLionel Sambuc	adcl	$0,%eax
957ebfedea0SLionel Sambuc	decl	%ebp
958ebfedea0SLionel Sambuc	movl	%ecx,16(%ebx)
959*0a6a1f1dSLionel Sambuc	jz	.L028aw_end
960ebfedea0SLionel Sambuc
961ebfedea0SLionel Sambuc	movl	20(%esi),%ecx
962ebfedea0SLionel Sambuc	movl	20(%edi),%edx
963ebfedea0SLionel Sambuc	subl	%eax,%ecx
964ebfedea0SLionel Sambuc	movl	$0,%eax
965ebfedea0SLionel Sambuc	adcl	%eax,%eax
966ebfedea0SLionel Sambuc	subl	%edx,%ecx
967ebfedea0SLionel Sambuc	adcl	$0,%eax
968ebfedea0SLionel Sambuc	decl	%ebp
969ebfedea0SLionel Sambuc	movl	%ecx,20(%ebx)
970*0a6a1f1dSLionel Sambuc	jz	.L028aw_end
971ebfedea0SLionel Sambuc
972ebfedea0SLionel Sambuc	movl	24(%esi),%ecx
973ebfedea0SLionel Sambuc	movl	24(%edi),%edx
974ebfedea0SLionel Sambuc	subl	%eax,%ecx
975ebfedea0SLionel Sambuc	movl	$0,%eax
976ebfedea0SLionel Sambuc	adcl	%eax,%eax
977ebfedea0SLionel Sambuc	subl	%edx,%ecx
978ebfedea0SLionel Sambuc	adcl	$0,%eax
979ebfedea0SLionel Sambuc	movl	%ecx,24(%ebx)
980*0a6a1f1dSLionel Sambuc.L028aw_end:
981ebfedea0SLionel Sambuc	popl	%edi
982ebfedea0SLionel Sambuc	popl	%esi
983ebfedea0SLionel Sambuc	popl	%ebx
984ebfedea0SLionel Sambuc	popl	%ebp
985ebfedea0SLionel Sambuc	ret
986ebfedea0SLionel Sambuc.size	bn_sub_words,.-.L_bn_sub_words_begin
987ebfedea0SLionel Sambuc.globl	bn_sub_part_words
988ebfedea0SLionel Sambuc.type	bn_sub_part_words,@function
989ebfedea0SLionel Sambuc.align	16
990ebfedea0SLionel Sambucbn_sub_part_words:
991ebfedea0SLionel Sambuc.L_bn_sub_part_words_begin:
992ebfedea0SLionel Sambuc	pushl	%ebp
993ebfedea0SLionel Sambuc	pushl	%ebx
994ebfedea0SLionel Sambuc	pushl	%esi
995ebfedea0SLionel Sambuc	pushl	%edi
996ebfedea0SLionel Sambuc
997ebfedea0SLionel Sambuc	movl	20(%esp),%ebx
998ebfedea0SLionel Sambuc	movl	24(%esp),%esi
999ebfedea0SLionel Sambuc	movl	28(%esp),%edi
1000ebfedea0SLionel Sambuc	movl	32(%esp),%ebp
1001ebfedea0SLionel Sambuc	xorl	%eax,%eax
1002ebfedea0SLionel Sambuc	andl	$4294967288,%ebp
1003*0a6a1f1dSLionel Sambuc	jz	.L029aw_finish
1004*0a6a1f1dSLionel Sambuc.L030aw_loop:
1005ebfedea0SLionel Sambuc
1006ebfedea0SLionel Sambuc	movl	(%esi),%ecx
1007ebfedea0SLionel Sambuc	movl	(%edi),%edx
1008ebfedea0SLionel Sambuc	subl	%eax,%ecx
1009ebfedea0SLionel Sambuc	movl	$0,%eax
1010ebfedea0SLionel Sambuc	adcl	%eax,%eax
1011ebfedea0SLionel Sambuc	subl	%edx,%ecx
1012ebfedea0SLionel Sambuc	adcl	$0,%eax
1013ebfedea0SLionel Sambuc	movl	%ecx,(%ebx)
1014ebfedea0SLionel Sambuc
1015ebfedea0SLionel Sambuc	movl	4(%esi),%ecx
1016ebfedea0SLionel Sambuc	movl	4(%edi),%edx
1017ebfedea0SLionel Sambuc	subl	%eax,%ecx
1018ebfedea0SLionel Sambuc	movl	$0,%eax
1019ebfedea0SLionel Sambuc	adcl	%eax,%eax
1020ebfedea0SLionel Sambuc	subl	%edx,%ecx
1021ebfedea0SLionel Sambuc	adcl	$0,%eax
1022ebfedea0SLionel Sambuc	movl	%ecx,4(%ebx)
1023ebfedea0SLionel Sambuc
1024ebfedea0SLionel Sambuc	movl	8(%esi),%ecx
1025ebfedea0SLionel Sambuc	movl	8(%edi),%edx
1026ebfedea0SLionel Sambuc	subl	%eax,%ecx
1027ebfedea0SLionel Sambuc	movl	$0,%eax
1028ebfedea0SLionel Sambuc	adcl	%eax,%eax
1029ebfedea0SLionel Sambuc	subl	%edx,%ecx
1030ebfedea0SLionel Sambuc	adcl	$0,%eax
1031ebfedea0SLionel Sambuc	movl	%ecx,8(%ebx)
1032ebfedea0SLionel Sambuc
1033ebfedea0SLionel Sambuc	movl	12(%esi),%ecx
1034ebfedea0SLionel Sambuc	movl	12(%edi),%edx
1035ebfedea0SLionel Sambuc	subl	%eax,%ecx
1036ebfedea0SLionel Sambuc	movl	$0,%eax
1037ebfedea0SLionel Sambuc	adcl	%eax,%eax
1038ebfedea0SLionel Sambuc	subl	%edx,%ecx
1039ebfedea0SLionel Sambuc	adcl	$0,%eax
1040ebfedea0SLionel Sambuc	movl	%ecx,12(%ebx)
1041ebfedea0SLionel Sambuc
1042ebfedea0SLionel Sambuc	movl	16(%esi),%ecx
1043ebfedea0SLionel Sambuc	movl	16(%edi),%edx
1044ebfedea0SLionel Sambuc	subl	%eax,%ecx
1045ebfedea0SLionel Sambuc	movl	$0,%eax
1046ebfedea0SLionel Sambuc	adcl	%eax,%eax
1047ebfedea0SLionel Sambuc	subl	%edx,%ecx
1048ebfedea0SLionel Sambuc	adcl	$0,%eax
1049ebfedea0SLionel Sambuc	movl	%ecx,16(%ebx)
1050ebfedea0SLionel Sambuc
1051ebfedea0SLionel Sambuc	movl	20(%esi),%ecx
1052ebfedea0SLionel Sambuc	movl	20(%edi),%edx
1053ebfedea0SLionel Sambuc	subl	%eax,%ecx
1054ebfedea0SLionel Sambuc	movl	$0,%eax
1055ebfedea0SLionel Sambuc	adcl	%eax,%eax
1056ebfedea0SLionel Sambuc	subl	%edx,%ecx
1057ebfedea0SLionel Sambuc	adcl	$0,%eax
1058ebfedea0SLionel Sambuc	movl	%ecx,20(%ebx)
1059ebfedea0SLionel Sambuc
1060ebfedea0SLionel Sambuc	movl	24(%esi),%ecx
1061ebfedea0SLionel Sambuc	movl	24(%edi),%edx
1062ebfedea0SLionel Sambuc	subl	%eax,%ecx
1063ebfedea0SLionel Sambuc	movl	$0,%eax
1064ebfedea0SLionel Sambuc	adcl	%eax,%eax
1065ebfedea0SLionel Sambuc	subl	%edx,%ecx
1066ebfedea0SLionel Sambuc	adcl	$0,%eax
1067ebfedea0SLionel Sambuc	movl	%ecx,24(%ebx)
1068ebfedea0SLionel Sambuc
1069ebfedea0SLionel Sambuc	movl	28(%esi),%ecx
1070ebfedea0SLionel Sambuc	movl	28(%edi),%edx
1071ebfedea0SLionel Sambuc	subl	%eax,%ecx
1072ebfedea0SLionel Sambuc	movl	$0,%eax
1073ebfedea0SLionel Sambuc	adcl	%eax,%eax
1074ebfedea0SLionel Sambuc	subl	%edx,%ecx
1075ebfedea0SLionel Sambuc	adcl	$0,%eax
1076ebfedea0SLionel Sambuc	movl	%ecx,28(%ebx)
1077ebfedea0SLionel Sambuc
1078ebfedea0SLionel Sambuc	addl	$32,%esi
1079ebfedea0SLionel Sambuc	addl	$32,%edi
1080ebfedea0SLionel Sambuc	addl	$32,%ebx
1081ebfedea0SLionel Sambuc	subl	$8,%ebp
1082*0a6a1f1dSLionel Sambuc	jnz	.L030aw_loop
1083*0a6a1f1dSLionel Sambuc.L029aw_finish:
1084ebfedea0SLionel Sambuc	movl	32(%esp),%ebp
1085ebfedea0SLionel Sambuc	andl	$7,%ebp
1086*0a6a1f1dSLionel Sambuc	jz	.L031aw_end
1087ebfedea0SLionel Sambuc
1088ebfedea0SLionel Sambuc	movl	(%esi),%ecx
1089ebfedea0SLionel Sambuc	movl	(%edi),%edx
1090ebfedea0SLionel Sambuc	subl	%eax,%ecx
1091ebfedea0SLionel Sambuc	movl	$0,%eax
1092ebfedea0SLionel Sambuc	adcl	%eax,%eax
1093ebfedea0SLionel Sambuc	subl	%edx,%ecx
1094ebfedea0SLionel Sambuc	adcl	$0,%eax
1095ebfedea0SLionel Sambuc	movl	%ecx,(%ebx)
1096ebfedea0SLionel Sambuc	addl	$4,%esi
1097ebfedea0SLionel Sambuc	addl	$4,%edi
1098ebfedea0SLionel Sambuc	addl	$4,%ebx
1099ebfedea0SLionel Sambuc	decl	%ebp
1100*0a6a1f1dSLionel Sambuc	jz	.L031aw_end
1101ebfedea0SLionel Sambuc
1102ebfedea0SLionel Sambuc	movl	(%esi),%ecx
1103ebfedea0SLionel Sambuc	movl	(%edi),%edx
1104ebfedea0SLionel Sambuc	subl	%eax,%ecx
1105ebfedea0SLionel Sambuc	movl	$0,%eax
1106ebfedea0SLionel Sambuc	adcl	%eax,%eax
1107ebfedea0SLionel Sambuc	subl	%edx,%ecx
1108ebfedea0SLionel Sambuc	adcl	$0,%eax
1109ebfedea0SLionel Sambuc	movl	%ecx,(%ebx)
1110ebfedea0SLionel Sambuc	addl	$4,%esi
1111ebfedea0SLionel Sambuc	addl	$4,%edi
1112ebfedea0SLionel Sambuc	addl	$4,%ebx
1113ebfedea0SLionel Sambuc	decl	%ebp
1114*0a6a1f1dSLionel Sambuc	jz	.L031aw_end
1115ebfedea0SLionel Sambuc
1116ebfedea0SLionel Sambuc	movl	(%esi),%ecx
1117ebfedea0SLionel Sambuc	movl	(%edi),%edx
1118ebfedea0SLionel Sambuc	subl	%eax,%ecx
1119ebfedea0SLionel Sambuc	movl	$0,%eax
1120ebfedea0SLionel Sambuc	adcl	%eax,%eax
1121ebfedea0SLionel Sambuc	subl	%edx,%ecx
1122ebfedea0SLionel Sambuc	adcl	$0,%eax
1123ebfedea0SLionel Sambuc	movl	%ecx,(%ebx)
1124ebfedea0SLionel Sambuc	addl	$4,%esi
1125ebfedea0SLionel Sambuc	addl	$4,%edi
1126ebfedea0SLionel Sambuc	addl	$4,%ebx
1127ebfedea0SLionel Sambuc	decl	%ebp
1128*0a6a1f1dSLionel Sambuc	jz	.L031aw_end
1129ebfedea0SLionel Sambuc
1130ebfedea0SLionel Sambuc	movl	(%esi),%ecx
1131ebfedea0SLionel Sambuc	movl	(%edi),%edx
1132ebfedea0SLionel Sambuc	subl	%eax,%ecx
1133ebfedea0SLionel Sambuc	movl	$0,%eax
1134ebfedea0SLionel Sambuc	adcl	%eax,%eax
1135ebfedea0SLionel Sambuc	subl	%edx,%ecx
1136ebfedea0SLionel Sambuc	adcl	$0,%eax
1137ebfedea0SLionel Sambuc	movl	%ecx,(%ebx)
1138ebfedea0SLionel Sambuc	addl	$4,%esi
1139ebfedea0SLionel Sambuc	addl	$4,%edi
1140ebfedea0SLionel Sambuc	addl	$4,%ebx
1141ebfedea0SLionel Sambuc	decl	%ebp
1142*0a6a1f1dSLionel Sambuc	jz	.L031aw_end
1143ebfedea0SLionel Sambuc
1144ebfedea0SLionel Sambuc	movl	(%esi),%ecx
1145ebfedea0SLionel Sambuc	movl	(%edi),%edx
1146ebfedea0SLionel Sambuc	subl	%eax,%ecx
1147ebfedea0SLionel Sambuc	movl	$0,%eax
1148ebfedea0SLionel Sambuc	adcl	%eax,%eax
1149ebfedea0SLionel Sambuc	subl	%edx,%ecx
1150ebfedea0SLionel Sambuc	adcl	$0,%eax
1151ebfedea0SLionel Sambuc	movl	%ecx,(%ebx)
1152ebfedea0SLionel Sambuc	addl	$4,%esi
1153ebfedea0SLionel Sambuc	addl	$4,%edi
1154ebfedea0SLionel Sambuc	addl	$4,%ebx
1155ebfedea0SLionel Sambuc	decl	%ebp
1156*0a6a1f1dSLionel Sambuc	jz	.L031aw_end
1157ebfedea0SLionel Sambuc
1158ebfedea0SLionel Sambuc	movl	(%esi),%ecx
1159ebfedea0SLionel Sambuc	movl	(%edi),%edx
1160ebfedea0SLionel Sambuc	subl	%eax,%ecx
1161ebfedea0SLionel Sambuc	movl	$0,%eax
1162ebfedea0SLionel Sambuc	adcl	%eax,%eax
1163ebfedea0SLionel Sambuc	subl	%edx,%ecx
1164ebfedea0SLionel Sambuc	adcl	$0,%eax
1165ebfedea0SLionel Sambuc	movl	%ecx,(%ebx)
1166ebfedea0SLionel Sambuc	addl	$4,%esi
1167ebfedea0SLionel Sambuc	addl	$4,%edi
1168ebfedea0SLionel Sambuc	addl	$4,%ebx
1169ebfedea0SLionel Sambuc	decl	%ebp
1170*0a6a1f1dSLionel Sambuc	jz	.L031aw_end
1171ebfedea0SLionel Sambuc
1172ebfedea0SLionel Sambuc	movl	(%esi),%ecx
1173ebfedea0SLionel Sambuc	movl	(%edi),%edx
1174ebfedea0SLionel Sambuc	subl	%eax,%ecx
1175ebfedea0SLionel Sambuc	movl	$0,%eax
1176ebfedea0SLionel Sambuc	adcl	%eax,%eax
1177ebfedea0SLionel Sambuc	subl	%edx,%ecx
1178ebfedea0SLionel Sambuc	adcl	$0,%eax
1179ebfedea0SLionel Sambuc	movl	%ecx,(%ebx)
1180ebfedea0SLionel Sambuc	addl	$4,%esi
1181ebfedea0SLionel Sambuc	addl	$4,%edi
1182ebfedea0SLionel Sambuc	addl	$4,%ebx
1183*0a6a1f1dSLionel Sambuc.L031aw_end:
1184ebfedea0SLionel Sambuc	cmpl	$0,36(%esp)
1185*0a6a1f1dSLionel Sambuc	je	.L032pw_end
1186ebfedea0SLionel Sambuc	movl	36(%esp),%ebp
1187ebfedea0SLionel Sambuc	cmpl	$0,%ebp
1188*0a6a1f1dSLionel Sambuc	je	.L032pw_end
1189*0a6a1f1dSLionel Sambuc	jge	.L033pw_pos
1190ebfedea0SLionel Sambuc
1191ebfedea0SLionel Sambuc	movl	$0,%edx
1192ebfedea0SLionel Sambuc	subl	%ebp,%edx
1193ebfedea0SLionel Sambuc	movl	%edx,%ebp
1194ebfedea0SLionel Sambuc	andl	$4294967288,%ebp
1195*0a6a1f1dSLionel Sambuc	jz	.L034pw_neg_finish
1196*0a6a1f1dSLionel Sambuc.L035pw_neg_loop:
1197ebfedea0SLionel Sambuc
1198ebfedea0SLionel Sambuc	movl	$0,%ecx
1199ebfedea0SLionel Sambuc	movl	(%edi),%edx
1200ebfedea0SLionel Sambuc	subl	%eax,%ecx
1201ebfedea0SLionel Sambuc	movl	$0,%eax
1202ebfedea0SLionel Sambuc	adcl	%eax,%eax
1203ebfedea0SLionel Sambuc	subl	%edx,%ecx
1204ebfedea0SLionel Sambuc	adcl	$0,%eax
1205ebfedea0SLionel Sambuc	movl	%ecx,(%ebx)
1206ebfedea0SLionel Sambuc
1207ebfedea0SLionel Sambuc	movl	$0,%ecx
1208ebfedea0SLionel Sambuc	movl	4(%edi),%edx
1209ebfedea0SLionel Sambuc	subl	%eax,%ecx
1210ebfedea0SLionel Sambuc	movl	$0,%eax
1211ebfedea0SLionel Sambuc	adcl	%eax,%eax
1212ebfedea0SLionel Sambuc	subl	%edx,%ecx
1213ebfedea0SLionel Sambuc	adcl	$0,%eax
1214ebfedea0SLionel Sambuc	movl	%ecx,4(%ebx)
1215ebfedea0SLionel Sambuc
1216ebfedea0SLionel Sambuc	movl	$0,%ecx
1217ebfedea0SLionel Sambuc	movl	8(%edi),%edx
1218ebfedea0SLionel Sambuc	subl	%eax,%ecx
1219ebfedea0SLionel Sambuc	movl	$0,%eax
1220ebfedea0SLionel Sambuc	adcl	%eax,%eax
1221ebfedea0SLionel Sambuc	subl	%edx,%ecx
1222ebfedea0SLionel Sambuc	adcl	$0,%eax
1223ebfedea0SLionel Sambuc	movl	%ecx,8(%ebx)
1224ebfedea0SLionel Sambuc
1225ebfedea0SLionel Sambuc	movl	$0,%ecx
1226ebfedea0SLionel Sambuc	movl	12(%edi),%edx
1227ebfedea0SLionel Sambuc	subl	%eax,%ecx
1228ebfedea0SLionel Sambuc	movl	$0,%eax
1229ebfedea0SLionel Sambuc	adcl	%eax,%eax
1230ebfedea0SLionel Sambuc	subl	%edx,%ecx
1231ebfedea0SLionel Sambuc	adcl	$0,%eax
1232ebfedea0SLionel Sambuc	movl	%ecx,12(%ebx)
1233ebfedea0SLionel Sambuc
1234ebfedea0SLionel Sambuc	movl	$0,%ecx
1235ebfedea0SLionel Sambuc	movl	16(%edi),%edx
1236ebfedea0SLionel Sambuc	subl	%eax,%ecx
1237ebfedea0SLionel Sambuc	movl	$0,%eax
1238ebfedea0SLionel Sambuc	adcl	%eax,%eax
1239ebfedea0SLionel Sambuc	subl	%edx,%ecx
1240ebfedea0SLionel Sambuc	adcl	$0,%eax
1241ebfedea0SLionel Sambuc	movl	%ecx,16(%ebx)
1242ebfedea0SLionel Sambuc
1243ebfedea0SLionel Sambuc	movl	$0,%ecx
1244ebfedea0SLionel Sambuc	movl	20(%edi),%edx
1245ebfedea0SLionel Sambuc	subl	%eax,%ecx
1246ebfedea0SLionel Sambuc	movl	$0,%eax
1247ebfedea0SLionel Sambuc	adcl	%eax,%eax
1248ebfedea0SLionel Sambuc	subl	%edx,%ecx
1249ebfedea0SLionel Sambuc	adcl	$0,%eax
1250ebfedea0SLionel Sambuc	movl	%ecx,20(%ebx)
1251ebfedea0SLionel Sambuc
1252ebfedea0SLionel Sambuc	movl	$0,%ecx
1253ebfedea0SLionel Sambuc	movl	24(%edi),%edx
1254ebfedea0SLionel Sambuc	subl	%eax,%ecx
1255ebfedea0SLionel Sambuc	movl	$0,%eax
1256ebfedea0SLionel Sambuc	adcl	%eax,%eax
1257ebfedea0SLionel Sambuc	subl	%edx,%ecx
1258ebfedea0SLionel Sambuc	adcl	$0,%eax
1259ebfedea0SLionel Sambuc	movl	%ecx,24(%ebx)
1260ebfedea0SLionel Sambuc
1261ebfedea0SLionel Sambuc	movl	$0,%ecx
1262ebfedea0SLionel Sambuc	movl	28(%edi),%edx
1263ebfedea0SLionel Sambuc	subl	%eax,%ecx
1264ebfedea0SLionel Sambuc	movl	$0,%eax
1265ebfedea0SLionel Sambuc	adcl	%eax,%eax
1266ebfedea0SLionel Sambuc	subl	%edx,%ecx
1267ebfedea0SLionel Sambuc	adcl	$0,%eax
1268ebfedea0SLionel Sambuc	movl	%ecx,28(%ebx)
1269ebfedea0SLionel Sambuc
1270ebfedea0SLionel Sambuc	addl	$32,%edi
1271ebfedea0SLionel Sambuc	addl	$32,%ebx
1272ebfedea0SLionel Sambuc	subl	$8,%ebp
1273*0a6a1f1dSLionel Sambuc	jnz	.L035pw_neg_loop
1274*0a6a1f1dSLionel Sambuc.L034pw_neg_finish:
1275ebfedea0SLionel Sambuc	movl	36(%esp),%edx
1276ebfedea0SLionel Sambuc	movl	$0,%ebp
1277ebfedea0SLionel Sambuc	subl	%edx,%ebp
1278ebfedea0SLionel Sambuc	andl	$7,%ebp
1279*0a6a1f1dSLionel Sambuc	jz	.L032pw_end
1280ebfedea0SLionel Sambuc
1281ebfedea0SLionel Sambuc	movl	$0,%ecx
1282ebfedea0SLionel Sambuc	movl	(%edi),%edx
1283ebfedea0SLionel Sambuc	subl	%eax,%ecx
1284ebfedea0SLionel Sambuc	movl	$0,%eax
1285ebfedea0SLionel Sambuc	adcl	%eax,%eax
1286ebfedea0SLionel Sambuc	subl	%edx,%ecx
1287ebfedea0SLionel Sambuc	adcl	$0,%eax
1288ebfedea0SLionel Sambuc	decl	%ebp
1289ebfedea0SLionel Sambuc	movl	%ecx,(%ebx)
1290*0a6a1f1dSLionel Sambuc	jz	.L032pw_end
1291ebfedea0SLionel Sambuc
1292ebfedea0SLionel Sambuc	movl	$0,%ecx
1293ebfedea0SLionel Sambuc	movl	4(%edi),%edx
1294ebfedea0SLionel Sambuc	subl	%eax,%ecx
1295ebfedea0SLionel Sambuc	movl	$0,%eax
1296ebfedea0SLionel Sambuc	adcl	%eax,%eax
1297ebfedea0SLionel Sambuc	subl	%edx,%ecx
1298ebfedea0SLionel Sambuc	adcl	$0,%eax
1299ebfedea0SLionel Sambuc	decl	%ebp
1300ebfedea0SLionel Sambuc	movl	%ecx,4(%ebx)
1301*0a6a1f1dSLionel Sambuc	jz	.L032pw_end
1302ebfedea0SLionel Sambuc
1303ebfedea0SLionel Sambuc	movl	$0,%ecx
1304ebfedea0SLionel Sambuc	movl	8(%edi),%edx
1305ebfedea0SLionel Sambuc	subl	%eax,%ecx
1306ebfedea0SLionel Sambuc	movl	$0,%eax
1307ebfedea0SLionel Sambuc	adcl	%eax,%eax
1308ebfedea0SLionel Sambuc	subl	%edx,%ecx
1309ebfedea0SLionel Sambuc	adcl	$0,%eax
1310ebfedea0SLionel Sambuc	decl	%ebp
1311ebfedea0SLionel Sambuc	movl	%ecx,8(%ebx)
1312*0a6a1f1dSLionel Sambuc	jz	.L032pw_end
1313ebfedea0SLionel Sambuc
1314ebfedea0SLionel Sambuc	movl	$0,%ecx
1315ebfedea0SLionel Sambuc	movl	12(%edi),%edx
1316ebfedea0SLionel Sambuc	subl	%eax,%ecx
1317ebfedea0SLionel Sambuc	movl	$0,%eax
1318ebfedea0SLionel Sambuc	adcl	%eax,%eax
1319ebfedea0SLionel Sambuc	subl	%edx,%ecx
1320ebfedea0SLionel Sambuc	adcl	$0,%eax
1321ebfedea0SLionel Sambuc	decl	%ebp
1322ebfedea0SLionel Sambuc	movl	%ecx,12(%ebx)
1323*0a6a1f1dSLionel Sambuc	jz	.L032pw_end
1324ebfedea0SLionel Sambuc
1325ebfedea0SLionel Sambuc	movl	$0,%ecx
1326ebfedea0SLionel Sambuc	movl	16(%edi),%edx
1327ebfedea0SLionel Sambuc	subl	%eax,%ecx
1328ebfedea0SLionel Sambuc	movl	$0,%eax
1329ebfedea0SLionel Sambuc	adcl	%eax,%eax
1330ebfedea0SLionel Sambuc	subl	%edx,%ecx
1331ebfedea0SLionel Sambuc	adcl	$0,%eax
1332ebfedea0SLionel Sambuc	decl	%ebp
1333ebfedea0SLionel Sambuc	movl	%ecx,16(%ebx)
1334*0a6a1f1dSLionel Sambuc	jz	.L032pw_end
1335ebfedea0SLionel Sambuc
1336ebfedea0SLionel Sambuc	movl	$0,%ecx
1337ebfedea0SLionel Sambuc	movl	20(%edi),%edx
1338ebfedea0SLionel Sambuc	subl	%eax,%ecx
1339ebfedea0SLionel Sambuc	movl	$0,%eax
1340ebfedea0SLionel Sambuc	adcl	%eax,%eax
1341ebfedea0SLionel Sambuc	subl	%edx,%ecx
1342ebfedea0SLionel Sambuc	adcl	$0,%eax
1343ebfedea0SLionel Sambuc	decl	%ebp
1344ebfedea0SLionel Sambuc	movl	%ecx,20(%ebx)
1345*0a6a1f1dSLionel Sambuc	jz	.L032pw_end
1346ebfedea0SLionel Sambuc
1347ebfedea0SLionel Sambuc	movl	$0,%ecx
1348ebfedea0SLionel Sambuc	movl	24(%edi),%edx
1349ebfedea0SLionel Sambuc	subl	%eax,%ecx
1350ebfedea0SLionel Sambuc	movl	$0,%eax
1351ebfedea0SLionel Sambuc	adcl	%eax,%eax
1352ebfedea0SLionel Sambuc	subl	%edx,%ecx
1353ebfedea0SLionel Sambuc	adcl	$0,%eax
1354ebfedea0SLionel Sambuc	movl	%ecx,24(%ebx)
1355*0a6a1f1dSLionel Sambuc	jmp	.L032pw_end
1356*0a6a1f1dSLionel Sambuc.L033pw_pos:
1357ebfedea0SLionel Sambuc	andl	$4294967288,%ebp
1358*0a6a1f1dSLionel Sambuc	jz	.L036pw_pos_finish
1359*0a6a1f1dSLionel Sambuc.L037pw_pos_loop:
1360ebfedea0SLionel Sambuc
1361ebfedea0SLionel Sambuc	movl	(%esi),%ecx
1362ebfedea0SLionel Sambuc	subl	%eax,%ecx
1363ebfedea0SLionel Sambuc	movl	%ecx,(%ebx)
1364*0a6a1f1dSLionel Sambuc	jnc	.L038pw_nc0
1365ebfedea0SLionel Sambuc
1366ebfedea0SLionel Sambuc	movl	4(%esi),%ecx
1367ebfedea0SLionel Sambuc	subl	%eax,%ecx
1368ebfedea0SLionel Sambuc	movl	%ecx,4(%ebx)
1369*0a6a1f1dSLionel Sambuc	jnc	.L039pw_nc1
1370ebfedea0SLionel Sambuc
1371ebfedea0SLionel Sambuc	movl	8(%esi),%ecx
1372ebfedea0SLionel Sambuc	subl	%eax,%ecx
1373ebfedea0SLionel Sambuc	movl	%ecx,8(%ebx)
1374*0a6a1f1dSLionel Sambuc	jnc	.L040pw_nc2
1375ebfedea0SLionel Sambuc
1376ebfedea0SLionel Sambuc	movl	12(%esi),%ecx
1377ebfedea0SLionel Sambuc	subl	%eax,%ecx
1378ebfedea0SLionel Sambuc	movl	%ecx,12(%ebx)
1379*0a6a1f1dSLionel Sambuc	jnc	.L041pw_nc3
1380ebfedea0SLionel Sambuc
1381ebfedea0SLionel Sambuc	movl	16(%esi),%ecx
1382ebfedea0SLionel Sambuc	subl	%eax,%ecx
1383ebfedea0SLionel Sambuc	movl	%ecx,16(%ebx)
1384*0a6a1f1dSLionel Sambuc	jnc	.L042pw_nc4
1385ebfedea0SLionel Sambuc
1386ebfedea0SLionel Sambuc	movl	20(%esi),%ecx
1387ebfedea0SLionel Sambuc	subl	%eax,%ecx
1388ebfedea0SLionel Sambuc	movl	%ecx,20(%ebx)
1389*0a6a1f1dSLionel Sambuc	jnc	.L043pw_nc5
1390ebfedea0SLionel Sambuc
1391ebfedea0SLionel Sambuc	movl	24(%esi),%ecx
1392ebfedea0SLionel Sambuc	subl	%eax,%ecx
1393ebfedea0SLionel Sambuc	movl	%ecx,24(%ebx)
1394*0a6a1f1dSLionel Sambuc	jnc	.L044pw_nc6
1395ebfedea0SLionel Sambuc
1396ebfedea0SLionel Sambuc	movl	28(%esi),%ecx
1397ebfedea0SLionel Sambuc	subl	%eax,%ecx
1398ebfedea0SLionel Sambuc	movl	%ecx,28(%ebx)
1399*0a6a1f1dSLionel Sambuc	jnc	.L045pw_nc7
1400ebfedea0SLionel Sambuc
1401ebfedea0SLionel Sambuc	addl	$32,%esi
1402ebfedea0SLionel Sambuc	addl	$32,%ebx
1403ebfedea0SLionel Sambuc	subl	$8,%ebp
1404*0a6a1f1dSLionel Sambuc	jnz	.L037pw_pos_loop
1405*0a6a1f1dSLionel Sambuc.L036pw_pos_finish:
1406ebfedea0SLionel Sambuc	movl	36(%esp),%ebp
1407ebfedea0SLionel Sambuc	andl	$7,%ebp
1408*0a6a1f1dSLionel Sambuc	jz	.L032pw_end
1409ebfedea0SLionel Sambuc
1410ebfedea0SLionel Sambuc	movl	(%esi),%ecx
1411ebfedea0SLionel Sambuc	subl	%eax,%ecx
1412ebfedea0SLionel Sambuc	movl	%ecx,(%ebx)
1413*0a6a1f1dSLionel Sambuc	jnc	.L046pw_tail_nc0
1414ebfedea0SLionel Sambuc	decl	%ebp
1415*0a6a1f1dSLionel Sambuc	jz	.L032pw_end
1416ebfedea0SLionel Sambuc
1417ebfedea0SLionel Sambuc	movl	4(%esi),%ecx
1418ebfedea0SLionel Sambuc	subl	%eax,%ecx
1419ebfedea0SLionel Sambuc	movl	%ecx,4(%ebx)
1420*0a6a1f1dSLionel Sambuc	jnc	.L047pw_tail_nc1
1421ebfedea0SLionel Sambuc	decl	%ebp
1422*0a6a1f1dSLionel Sambuc	jz	.L032pw_end
1423ebfedea0SLionel Sambuc
1424ebfedea0SLionel Sambuc	movl	8(%esi),%ecx
1425ebfedea0SLionel Sambuc	subl	%eax,%ecx
1426ebfedea0SLionel Sambuc	movl	%ecx,8(%ebx)
1427*0a6a1f1dSLionel Sambuc	jnc	.L048pw_tail_nc2
1428ebfedea0SLionel Sambuc	decl	%ebp
1429*0a6a1f1dSLionel Sambuc	jz	.L032pw_end
1430ebfedea0SLionel Sambuc
1431ebfedea0SLionel Sambuc	movl	12(%esi),%ecx
1432ebfedea0SLionel Sambuc	subl	%eax,%ecx
1433ebfedea0SLionel Sambuc	movl	%ecx,12(%ebx)
1434*0a6a1f1dSLionel Sambuc	jnc	.L049pw_tail_nc3
1435ebfedea0SLionel Sambuc	decl	%ebp
1436*0a6a1f1dSLionel Sambuc	jz	.L032pw_end
1437ebfedea0SLionel Sambuc
1438ebfedea0SLionel Sambuc	movl	16(%esi),%ecx
1439ebfedea0SLionel Sambuc	subl	%eax,%ecx
1440ebfedea0SLionel Sambuc	movl	%ecx,16(%ebx)
1441*0a6a1f1dSLionel Sambuc	jnc	.L050pw_tail_nc4
1442ebfedea0SLionel Sambuc	decl	%ebp
1443*0a6a1f1dSLionel Sambuc	jz	.L032pw_end
1444ebfedea0SLionel Sambuc
1445ebfedea0SLionel Sambuc	movl	20(%esi),%ecx
1446ebfedea0SLionel Sambuc	subl	%eax,%ecx
1447ebfedea0SLionel Sambuc	movl	%ecx,20(%ebx)
1448*0a6a1f1dSLionel Sambuc	jnc	.L051pw_tail_nc5
1449ebfedea0SLionel Sambuc	decl	%ebp
1450*0a6a1f1dSLionel Sambuc	jz	.L032pw_end
1451ebfedea0SLionel Sambuc
1452ebfedea0SLionel Sambuc	movl	24(%esi),%ecx
1453ebfedea0SLionel Sambuc	subl	%eax,%ecx
1454ebfedea0SLionel Sambuc	movl	%ecx,24(%ebx)
1455*0a6a1f1dSLionel Sambuc	jnc	.L052pw_tail_nc6
1456ebfedea0SLionel Sambuc	movl	$1,%eax
1457*0a6a1f1dSLionel Sambuc	jmp	.L032pw_end
1458*0a6a1f1dSLionel Sambuc.L053pw_nc_loop:
1459ebfedea0SLionel Sambuc	movl	(%esi),%ecx
1460ebfedea0SLionel Sambuc	movl	%ecx,(%ebx)
1461*0a6a1f1dSLionel Sambuc.L038pw_nc0:
1462ebfedea0SLionel Sambuc	movl	4(%esi),%ecx
1463ebfedea0SLionel Sambuc	movl	%ecx,4(%ebx)
1464*0a6a1f1dSLionel Sambuc.L039pw_nc1:
1465ebfedea0SLionel Sambuc	movl	8(%esi),%ecx
1466ebfedea0SLionel Sambuc	movl	%ecx,8(%ebx)
1467*0a6a1f1dSLionel Sambuc.L040pw_nc2:
1468ebfedea0SLionel Sambuc	movl	12(%esi),%ecx
1469ebfedea0SLionel Sambuc	movl	%ecx,12(%ebx)
1470*0a6a1f1dSLionel Sambuc.L041pw_nc3:
1471ebfedea0SLionel Sambuc	movl	16(%esi),%ecx
1472ebfedea0SLionel Sambuc	movl	%ecx,16(%ebx)
1473*0a6a1f1dSLionel Sambuc.L042pw_nc4:
1474ebfedea0SLionel Sambuc	movl	20(%esi),%ecx
1475ebfedea0SLionel Sambuc	movl	%ecx,20(%ebx)
1476*0a6a1f1dSLionel Sambuc.L043pw_nc5:
1477ebfedea0SLionel Sambuc	movl	24(%esi),%ecx
1478ebfedea0SLionel Sambuc	movl	%ecx,24(%ebx)
1479*0a6a1f1dSLionel Sambuc.L044pw_nc6:
1480ebfedea0SLionel Sambuc	movl	28(%esi),%ecx
1481ebfedea0SLionel Sambuc	movl	%ecx,28(%ebx)
1482*0a6a1f1dSLionel Sambuc.L045pw_nc7:
1483ebfedea0SLionel Sambuc
1484ebfedea0SLionel Sambuc	addl	$32,%esi
1485ebfedea0SLionel Sambuc	addl	$32,%ebx
1486ebfedea0SLionel Sambuc	subl	$8,%ebp
1487*0a6a1f1dSLionel Sambuc	jnz	.L053pw_nc_loop
1488ebfedea0SLionel Sambuc	movl	36(%esp),%ebp
1489ebfedea0SLionel Sambuc	andl	$7,%ebp
1490*0a6a1f1dSLionel Sambuc	jz	.L054pw_nc_end
1491ebfedea0SLionel Sambuc	movl	(%esi),%ecx
1492ebfedea0SLionel Sambuc	movl	%ecx,(%ebx)
1493*0a6a1f1dSLionel Sambuc.L046pw_tail_nc0:
1494ebfedea0SLionel Sambuc	decl	%ebp
1495*0a6a1f1dSLionel Sambuc	jz	.L054pw_nc_end
1496ebfedea0SLionel Sambuc	movl	4(%esi),%ecx
1497ebfedea0SLionel Sambuc	movl	%ecx,4(%ebx)
1498*0a6a1f1dSLionel Sambuc.L047pw_tail_nc1:
1499ebfedea0SLionel Sambuc	decl	%ebp
1500*0a6a1f1dSLionel Sambuc	jz	.L054pw_nc_end
1501ebfedea0SLionel Sambuc	movl	8(%esi),%ecx
1502ebfedea0SLionel Sambuc	movl	%ecx,8(%ebx)
1503*0a6a1f1dSLionel Sambuc.L048pw_tail_nc2:
1504ebfedea0SLionel Sambuc	decl	%ebp
1505*0a6a1f1dSLionel Sambuc	jz	.L054pw_nc_end
1506ebfedea0SLionel Sambuc	movl	12(%esi),%ecx
1507ebfedea0SLionel Sambuc	movl	%ecx,12(%ebx)
1508*0a6a1f1dSLionel Sambuc.L049pw_tail_nc3:
1509ebfedea0SLionel Sambuc	decl	%ebp
1510*0a6a1f1dSLionel Sambuc	jz	.L054pw_nc_end
1511ebfedea0SLionel Sambuc	movl	16(%esi),%ecx
1512ebfedea0SLionel Sambuc	movl	%ecx,16(%ebx)
1513*0a6a1f1dSLionel Sambuc.L050pw_tail_nc4:
1514ebfedea0SLionel Sambuc	decl	%ebp
1515*0a6a1f1dSLionel Sambuc	jz	.L054pw_nc_end
1516ebfedea0SLionel Sambuc	movl	20(%esi),%ecx
1517ebfedea0SLionel Sambuc	movl	%ecx,20(%ebx)
1518*0a6a1f1dSLionel Sambuc.L051pw_tail_nc5:
1519ebfedea0SLionel Sambuc	decl	%ebp
1520*0a6a1f1dSLionel Sambuc	jz	.L054pw_nc_end
1521ebfedea0SLionel Sambuc	movl	24(%esi),%ecx
1522ebfedea0SLionel Sambuc	movl	%ecx,24(%ebx)
1523*0a6a1f1dSLionel Sambuc.L052pw_tail_nc6:
1524*0a6a1f1dSLionel Sambuc.L054pw_nc_end:
1525ebfedea0SLionel Sambuc	movl	$0,%eax
1526*0a6a1f1dSLionel Sambuc.L032pw_end:
1527ebfedea0SLionel Sambuc	popl	%edi
1528ebfedea0SLionel Sambuc	popl	%esi
1529ebfedea0SLionel Sambuc	popl	%ebx
1530ebfedea0SLionel Sambuc	popl	%ebp
1531ebfedea0SLionel Sambuc	ret
1532ebfedea0SLionel Sambuc.size	bn_sub_part_words,.-.L_bn_sub_part_words_begin
1533*0a6a1f1dSLionel Sambuc.comm	OPENSSL_ia32cap_P,8,4
1534