xref: /freebsd/sys/crypto/openssl/i386/bn-586.S (revision c0855eaa3ee9614804b6bd6a255aa9f71e095f43)
1bc3d5698SJohn Baldwin/* Do not modify. This file is auto-generated from bn-586.pl. */
2bc3d5698SJohn Baldwin#ifdef PIC
3bc3d5698SJohn Baldwin.text
4bc3d5698SJohn Baldwin.globl	bn_mul_add_words
5bc3d5698SJohn Baldwin.type	bn_mul_add_words,@function
6bc3d5698SJohn Baldwin.align	16
7bc3d5698SJohn Baldwinbn_mul_add_words:
8bc3d5698SJohn Baldwin.L_bn_mul_add_words_begin:
9*c0855eaaSJohn Baldwin	#ifdef __CET__
10*c0855eaaSJohn Baldwin
11*c0855eaaSJohn Baldwin.byte	243,15,30,251
12*c0855eaaSJohn Baldwin	#endif
13*c0855eaaSJohn Baldwin
14bc3d5698SJohn Baldwin	call	.L000PIC_me_up
15bc3d5698SJohn Baldwin.L000PIC_me_up:
16bc3d5698SJohn Baldwin	popl	%eax
17bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P-.L000PIC_me_up(%eax),%eax
18bc3d5698SJohn Baldwin	btl	$26,(%eax)
19bc3d5698SJohn Baldwin	jnc	.L001maw_non_sse2
20bc3d5698SJohn Baldwin	movl	4(%esp),%eax
21bc3d5698SJohn Baldwin	movl	8(%esp),%edx
22bc3d5698SJohn Baldwin	movl	12(%esp),%ecx
23bc3d5698SJohn Baldwin	movd	16(%esp),%mm0
24bc3d5698SJohn Baldwin	pxor	%mm1,%mm1
25bc3d5698SJohn Baldwin	jmp	.L002maw_sse2_entry
26bc3d5698SJohn Baldwin.align	16
27bc3d5698SJohn Baldwin.L003maw_sse2_unrolled:
28bc3d5698SJohn Baldwin	movd	(%eax),%mm3
29bc3d5698SJohn Baldwin	paddq	%mm3,%mm1
30bc3d5698SJohn Baldwin	movd	(%edx),%mm2
31bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm2
32bc3d5698SJohn Baldwin	movd	4(%edx),%mm4
33bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm4
34bc3d5698SJohn Baldwin	movd	8(%edx),%mm6
35bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm6
36bc3d5698SJohn Baldwin	movd	12(%edx),%mm7
37bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm7
38bc3d5698SJohn Baldwin	paddq	%mm2,%mm1
39bc3d5698SJohn Baldwin	movd	4(%eax),%mm3
40bc3d5698SJohn Baldwin	paddq	%mm4,%mm3
41bc3d5698SJohn Baldwin	movd	8(%eax),%mm5
42bc3d5698SJohn Baldwin	paddq	%mm6,%mm5
43bc3d5698SJohn Baldwin	movd	12(%eax),%mm4
44bc3d5698SJohn Baldwin	paddq	%mm4,%mm7
45bc3d5698SJohn Baldwin	movd	%mm1,(%eax)
46bc3d5698SJohn Baldwin	movd	16(%edx),%mm2
47bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm2
48bc3d5698SJohn Baldwin	psrlq	$32,%mm1
49bc3d5698SJohn Baldwin	movd	20(%edx),%mm4
50bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm4
51bc3d5698SJohn Baldwin	paddq	%mm3,%mm1
52bc3d5698SJohn Baldwin	movd	24(%edx),%mm6
53bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm6
54bc3d5698SJohn Baldwin	movd	%mm1,4(%eax)
55bc3d5698SJohn Baldwin	psrlq	$32,%mm1
56bc3d5698SJohn Baldwin	movd	28(%edx),%mm3
57bc3d5698SJohn Baldwin	addl	$32,%edx
58bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm3
59bc3d5698SJohn Baldwin	paddq	%mm5,%mm1
60bc3d5698SJohn Baldwin	movd	16(%eax),%mm5
61bc3d5698SJohn Baldwin	paddq	%mm5,%mm2
62bc3d5698SJohn Baldwin	movd	%mm1,8(%eax)
63bc3d5698SJohn Baldwin	psrlq	$32,%mm1
64bc3d5698SJohn Baldwin	paddq	%mm7,%mm1
65bc3d5698SJohn Baldwin	movd	20(%eax),%mm5
66bc3d5698SJohn Baldwin	paddq	%mm5,%mm4
67bc3d5698SJohn Baldwin	movd	%mm1,12(%eax)
68bc3d5698SJohn Baldwin	psrlq	$32,%mm1
69bc3d5698SJohn Baldwin	paddq	%mm2,%mm1
70bc3d5698SJohn Baldwin	movd	24(%eax),%mm5
71bc3d5698SJohn Baldwin	paddq	%mm5,%mm6
72bc3d5698SJohn Baldwin	movd	%mm1,16(%eax)
73bc3d5698SJohn Baldwin	psrlq	$32,%mm1
74bc3d5698SJohn Baldwin	paddq	%mm4,%mm1
75bc3d5698SJohn Baldwin	movd	28(%eax),%mm5
76bc3d5698SJohn Baldwin	paddq	%mm5,%mm3
77bc3d5698SJohn Baldwin	movd	%mm1,20(%eax)
78bc3d5698SJohn Baldwin	psrlq	$32,%mm1
79bc3d5698SJohn Baldwin	paddq	%mm6,%mm1
80bc3d5698SJohn Baldwin	movd	%mm1,24(%eax)
81bc3d5698SJohn Baldwin	psrlq	$32,%mm1
82bc3d5698SJohn Baldwin	paddq	%mm3,%mm1
83bc3d5698SJohn Baldwin	movd	%mm1,28(%eax)
84bc3d5698SJohn Baldwin	leal	32(%eax),%eax
85bc3d5698SJohn Baldwin	psrlq	$32,%mm1
86bc3d5698SJohn Baldwin	subl	$8,%ecx
87bc3d5698SJohn Baldwin	jz	.L004maw_sse2_exit
88bc3d5698SJohn Baldwin.L002maw_sse2_entry:
89bc3d5698SJohn Baldwin	testl	$4294967288,%ecx
90bc3d5698SJohn Baldwin	jnz	.L003maw_sse2_unrolled
91bc3d5698SJohn Baldwin.align	4
92bc3d5698SJohn Baldwin.L005maw_sse2_loop:
93bc3d5698SJohn Baldwin	movd	(%edx),%mm2
94bc3d5698SJohn Baldwin	movd	(%eax),%mm3
95bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm2
96bc3d5698SJohn Baldwin	leal	4(%edx),%edx
97bc3d5698SJohn Baldwin	paddq	%mm3,%mm1
98bc3d5698SJohn Baldwin	paddq	%mm2,%mm1
99bc3d5698SJohn Baldwin	movd	%mm1,(%eax)
100bc3d5698SJohn Baldwin	subl	$1,%ecx
101bc3d5698SJohn Baldwin	psrlq	$32,%mm1
102bc3d5698SJohn Baldwin	leal	4(%eax),%eax
103bc3d5698SJohn Baldwin	jnz	.L005maw_sse2_loop
104bc3d5698SJohn Baldwin.L004maw_sse2_exit:
105bc3d5698SJohn Baldwin	movd	%mm1,%eax
106bc3d5698SJohn Baldwin	emms
107bc3d5698SJohn Baldwin	ret
108bc3d5698SJohn Baldwin.align	16
109bc3d5698SJohn Baldwin.L001maw_non_sse2:
110bc3d5698SJohn Baldwin	pushl	%ebp
111bc3d5698SJohn Baldwin	pushl	%ebx
112bc3d5698SJohn Baldwin	pushl	%esi
113bc3d5698SJohn Baldwin	pushl	%edi
114bc3d5698SJohn Baldwin
115bc3d5698SJohn Baldwin	xorl	%esi,%esi
116bc3d5698SJohn Baldwin	movl	20(%esp),%edi
117bc3d5698SJohn Baldwin	movl	28(%esp),%ecx
118bc3d5698SJohn Baldwin	movl	24(%esp),%ebx
119bc3d5698SJohn Baldwin	andl	$4294967288,%ecx
120bc3d5698SJohn Baldwin	movl	32(%esp),%ebp
121bc3d5698SJohn Baldwin	pushl	%ecx
122bc3d5698SJohn Baldwin	jz	.L006maw_finish
123bc3d5698SJohn Baldwin.align	16
124bc3d5698SJohn Baldwin.L007maw_loop:
125bc3d5698SJohn Baldwin
126bc3d5698SJohn Baldwin	movl	(%ebx),%eax
127bc3d5698SJohn Baldwin	mull	%ebp
128bc3d5698SJohn Baldwin	addl	%esi,%eax
129bc3d5698SJohn Baldwin	adcl	$0,%edx
130bc3d5698SJohn Baldwin	addl	(%edi),%eax
131bc3d5698SJohn Baldwin	adcl	$0,%edx
132bc3d5698SJohn Baldwin	movl	%eax,(%edi)
133bc3d5698SJohn Baldwin	movl	%edx,%esi
134bc3d5698SJohn Baldwin
135bc3d5698SJohn Baldwin	movl	4(%ebx),%eax
136bc3d5698SJohn Baldwin	mull	%ebp
137bc3d5698SJohn Baldwin	addl	%esi,%eax
138bc3d5698SJohn Baldwin	adcl	$0,%edx
139bc3d5698SJohn Baldwin	addl	4(%edi),%eax
140bc3d5698SJohn Baldwin	adcl	$0,%edx
141bc3d5698SJohn Baldwin	movl	%eax,4(%edi)
142bc3d5698SJohn Baldwin	movl	%edx,%esi
143bc3d5698SJohn Baldwin
144bc3d5698SJohn Baldwin	movl	8(%ebx),%eax
145bc3d5698SJohn Baldwin	mull	%ebp
146bc3d5698SJohn Baldwin	addl	%esi,%eax
147bc3d5698SJohn Baldwin	adcl	$0,%edx
148bc3d5698SJohn Baldwin	addl	8(%edi),%eax
149bc3d5698SJohn Baldwin	adcl	$0,%edx
150bc3d5698SJohn Baldwin	movl	%eax,8(%edi)
151bc3d5698SJohn Baldwin	movl	%edx,%esi
152bc3d5698SJohn Baldwin
153bc3d5698SJohn Baldwin	movl	12(%ebx),%eax
154bc3d5698SJohn Baldwin	mull	%ebp
155bc3d5698SJohn Baldwin	addl	%esi,%eax
156bc3d5698SJohn Baldwin	adcl	$0,%edx
157bc3d5698SJohn Baldwin	addl	12(%edi),%eax
158bc3d5698SJohn Baldwin	adcl	$0,%edx
159bc3d5698SJohn Baldwin	movl	%eax,12(%edi)
160bc3d5698SJohn Baldwin	movl	%edx,%esi
161bc3d5698SJohn Baldwin
162bc3d5698SJohn Baldwin	movl	16(%ebx),%eax
163bc3d5698SJohn Baldwin	mull	%ebp
164bc3d5698SJohn Baldwin	addl	%esi,%eax
165bc3d5698SJohn Baldwin	adcl	$0,%edx
166bc3d5698SJohn Baldwin	addl	16(%edi),%eax
167bc3d5698SJohn Baldwin	adcl	$0,%edx
168bc3d5698SJohn Baldwin	movl	%eax,16(%edi)
169bc3d5698SJohn Baldwin	movl	%edx,%esi
170bc3d5698SJohn Baldwin
171bc3d5698SJohn Baldwin	movl	20(%ebx),%eax
172bc3d5698SJohn Baldwin	mull	%ebp
173bc3d5698SJohn Baldwin	addl	%esi,%eax
174bc3d5698SJohn Baldwin	adcl	$0,%edx
175bc3d5698SJohn Baldwin	addl	20(%edi),%eax
176bc3d5698SJohn Baldwin	adcl	$0,%edx
177bc3d5698SJohn Baldwin	movl	%eax,20(%edi)
178bc3d5698SJohn Baldwin	movl	%edx,%esi
179bc3d5698SJohn Baldwin
180bc3d5698SJohn Baldwin	movl	24(%ebx),%eax
181bc3d5698SJohn Baldwin	mull	%ebp
182bc3d5698SJohn Baldwin	addl	%esi,%eax
183bc3d5698SJohn Baldwin	adcl	$0,%edx
184bc3d5698SJohn Baldwin	addl	24(%edi),%eax
185bc3d5698SJohn Baldwin	adcl	$0,%edx
186bc3d5698SJohn Baldwin	movl	%eax,24(%edi)
187bc3d5698SJohn Baldwin	movl	%edx,%esi
188bc3d5698SJohn Baldwin
189bc3d5698SJohn Baldwin	movl	28(%ebx),%eax
190bc3d5698SJohn Baldwin	mull	%ebp
191bc3d5698SJohn Baldwin	addl	%esi,%eax
192bc3d5698SJohn Baldwin	adcl	$0,%edx
193bc3d5698SJohn Baldwin	addl	28(%edi),%eax
194bc3d5698SJohn Baldwin	adcl	$0,%edx
195bc3d5698SJohn Baldwin	movl	%eax,28(%edi)
196bc3d5698SJohn Baldwin	movl	%edx,%esi
197bc3d5698SJohn Baldwin
198bc3d5698SJohn Baldwin	subl	$8,%ecx
199bc3d5698SJohn Baldwin	leal	32(%ebx),%ebx
200bc3d5698SJohn Baldwin	leal	32(%edi),%edi
201bc3d5698SJohn Baldwin	jnz	.L007maw_loop
202bc3d5698SJohn Baldwin.L006maw_finish:
203bc3d5698SJohn Baldwin	movl	32(%esp),%ecx
204bc3d5698SJohn Baldwin	andl	$7,%ecx
205bc3d5698SJohn Baldwin	jnz	.L008maw_finish2
206bc3d5698SJohn Baldwin	jmp	.L009maw_end
207bc3d5698SJohn Baldwin.L008maw_finish2:
208bc3d5698SJohn Baldwin
209bc3d5698SJohn Baldwin	movl	(%ebx),%eax
210bc3d5698SJohn Baldwin	mull	%ebp
211bc3d5698SJohn Baldwin	addl	%esi,%eax
212bc3d5698SJohn Baldwin	adcl	$0,%edx
213bc3d5698SJohn Baldwin	addl	(%edi),%eax
214bc3d5698SJohn Baldwin	adcl	$0,%edx
215bc3d5698SJohn Baldwin	decl	%ecx
216bc3d5698SJohn Baldwin	movl	%eax,(%edi)
217bc3d5698SJohn Baldwin	movl	%edx,%esi
218bc3d5698SJohn Baldwin	jz	.L009maw_end
219bc3d5698SJohn Baldwin
220bc3d5698SJohn Baldwin	movl	4(%ebx),%eax
221bc3d5698SJohn Baldwin	mull	%ebp
222bc3d5698SJohn Baldwin	addl	%esi,%eax
223bc3d5698SJohn Baldwin	adcl	$0,%edx
224bc3d5698SJohn Baldwin	addl	4(%edi),%eax
225bc3d5698SJohn Baldwin	adcl	$0,%edx
226bc3d5698SJohn Baldwin	decl	%ecx
227bc3d5698SJohn Baldwin	movl	%eax,4(%edi)
228bc3d5698SJohn Baldwin	movl	%edx,%esi
229bc3d5698SJohn Baldwin	jz	.L009maw_end
230bc3d5698SJohn Baldwin
231bc3d5698SJohn Baldwin	movl	8(%ebx),%eax
232bc3d5698SJohn Baldwin	mull	%ebp
233bc3d5698SJohn Baldwin	addl	%esi,%eax
234bc3d5698SJohn Baldwin	adcl	$0,%edx
235bc3d5698SJohn Baldwin	addl	8(%edi),%eax
236bc3d5698SJohn Baldwin	adcl	$0,%edx
237bc3d5698SJohn Baldwin	decl	%ecx
238bc3d5698SJohn Baldwin	movl	%eax,8(%edi)
239bc3d5698SJohn Baldwin	movl	%edx,%esi
240bc3d5698SJohn Baldwin	jz	.L009maw_end
241bc3d5698SJohn Baldwin
242bc3d5698SJohn Baldwin	movl	12(%ebx),%eax
243bc3d5698SJohn Baldwin	mull	%ebp
244bc3d5698SJohn Baldwin	addl	%esi,%eax
245bc3d5698SJohn Baldwin	adcl	$0,%edx
246bc3d5698SJohn Baldwin	addl	12(%edi),%eax
247bc3d5698SJohn Baldwin	adcl	$0,%edx
248bc3d5698SJohn Baldwin	decl	%ecx
249bc3d5698SJohn Baldwin	movl	%eax,12(%edi)
250bc3d5698SJohn Baldwin	movl	%edx,%esi
251bc3d5698SJohn Baldwin	jz	.L009maw_end
252bc3d5698SJohn Baldwin
253bc3d5698SJohn Baldwin	movl	16(%ebx),%eax
254bc3d5698SJohn Baldwin	mull	%ebp
255bc3d5698SJohn Baldwin	addl	%esi,%eax
256bc3d5698SJohn Baldwin	adcl	$0,%edx
257bc3d5698SJohn Baldwin	addl	16(%edi),%eax
258bc3d5698SJohn Baldwin	adcl	$0,%edx
259bc3d5698SJohn Baldwin	decl	%ecx
260bc3d5698SJohn Baldwin	movl	%eax,16(%edi)
261bc3d5698SJohn Baldwin	movl	%edx,%esi
262bc3d5698SJohn Baldwin	jz	.L009maw_end
263bc3d5698SJohn Baldwin
264bc3d5698SJohn Baldwin	movl	20(%ebx),%eax
265bc3d5698SJohn Baldwin	mull	%ebp
266bc3d5698SJohn Baldwin	addl	%esi,%eax
267bc3d5698SJohn Baldwin	adcl	$0,%edx
268bc3d5698SJohn Baldwin	addl	20(%edi),%eax
269bc3d5698SJohn Baldwin	adcl	$0,%edx
270bc3d5698SJohn Baldwin	decl	%ecx
271bc3d5698SJohn Baldwin	movl	%eax,20(%edi)
272bc3d5698SJohn Baldwin	movl	%edx,%esi
273bc3d5698SJohn Baldwin	jz	.L009maw_end
274bc3d5698SJohn Baldwin
275bc3d5698SJohn Baldwin	movl	24(%ebx),%eax
276bc3d5698SJohn Baldwin	mull	%ebp
277bc3d5698SJohn Baldwin	addl	%esi,%eax
278bc3d5698SJohn Baldwin	adcl	$0,%edx
279bc3d5698SJohn Baldwin	addl	24(%edi),%eax
280bc3d5698SJohn Baldwin	adcl	$0,%edx
281bc3d5698SJohn Baldwin	movl	%eax,24(%edi)
282bc3d5698SJohn Baldwin	movl	%edx,%esi
283bc3d5698SJohn Baldwin.L009maw_end:
284bc3d5698SJohn Baldwin	movl	%esi,%eax
285bc3d5698SJohn Baldwin	popl	%ecx
286bc3d5698SJohn Baldwin	popl	%edi
287bc3d5698SJohn Baldwin	popl	%esi
288bc3d5698SJohn Baldwin	popl	%ebx
289bc3d5698SJohn Baldwin	popl	%ebp
290bc3d5698SJohn Baldwin	ret
291bc3d5698SJohn Baldwin.size	bn_mul_add_words,.-.L_bn_mul_add_words_begin
292bc3d5698SJohn Baldwin.globl	bn_mul_words
293bc3d5698SJohn Baldwin.type	bn_mul_words,@function
294bc3d5698SJohn Baldwin.align	16
295bc3d5698SJohn Baldwinbn_mul_words:
296bc3d5698SJohn Baldwin.L_bn_mul_words_begin:
297*c0855eaaSJohn Baldwin	#ifdef __CET__
298*c0855eaaSJohn Baldwin
299*c0855eaaSJohn Baldwin.byte	243,15,30,251
300*c0855eaaSJohn Baldwin	#endif
301*c0855eaaSJohn Baldwin
302bc3d5698SJohn Baldwin	call	.L010PIC_me_up
303bc3d5698SJohn Baldwin.L010PIC_me_up:
304bc3d5698SJohn Baldwin	popl	%eax
305bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P-.L010PIC_me_up(%eax),%eax
306bc3d5698SJohn Baldwin	btl	$26,(%eax)
307bc3d5698SJohn Baldwin	jnc	.L011mw_non_sse2
308bc3d5698SJohn Baldwin	movl	4(%esp),%eax
309bc3d5698SJohn Baldwin	movl	8(%esp),%edx
310bc3d5698SJohn Baldwin	movl	12(%esp),%ecx
311bc3d5698SJohn Baldwin	movd	16(%esp),%mm0
312bc3d5698SJohn Baldwin	pxor	%mm1,%mm1
313bc3d5698SJohn Baldwin.align	16
314bc3d5698SJohn Baldwin.L012mw_sse2_loop:
315bc3d5698SJohn Baldwin	movd	(%edx),%mm2
316bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm2
317bc3d5698SJohn Baldwin	leal	4(%edx),%edx
318bc3d5698SJohn Baldwin	paddq	%mm2,%mm1
319bc3d5698SJohn Baldwin	movd	%mm1,(%eax)
320bc3d5698SJohn Baldwin	subl	$1,%ecx
321bc3d5698SJohn Baldwin	psrlq	$32,%mm1
322bc3d5698SJohn Baldwin	leal	4(%eax),%eax
323bc3d5698SJohn Baldwin	jnz	.L012mw_sse2_loop
324bc3d5698SJohn Baldwin	movd	%mm1,%eax
325bc3d5698SJohn Baldwin	emms
326bc3d5698SJohn Baldwin	ret
327bc3d5698SJohn Baldwin.align	16
328bc3d5698SJohn Baldwin.L011mw_non_sse2:
329bc3d5698SJohn Baldwin	pushl	%ebp
330bc3d5698SJohn Baldwin	pushl	%ebx
331bc3d5698SJohn Baldwin	pushl	%esi
332bc3d5698SJohn Baldwin	pushl	%edi
333bc3d5698SJohn Baldwin
334bc3d5698SJohn Baldwin	xorl	%esi,%esi
335bc3d5698SJohn Baldwin	movl	20(%esp),%edi
336bc3d5698SJohn Baldwin	movl	24(%esp),%ebx
337bc3d5698SJohn Baldwin	movl	28(%esp),%ebp
338bc3d5698SJohn Baldwin	movl	32(%esp),%ecx
339bc3d5698SJohn Baldwin	andl	$4294967288,%ebp
340bc3d5698SJohn Baldwin	jz	.L013mw_finish
341bc3d5698SJohn Baldwin.L014mw_loop:
342bc3d5698SJohn Baldwin
343bc3d5698SJohn Baldwin	movl	(%ebx),%eax
344bc3d5698SJohn Baldwin	mull	%ecx
345bc3d5698SJohn Baldwin	addl	%esi,%eax
346bc3d5698SJohn Baldwin	adcl	$0,%edx
347bc3d5698SJohn Baldwin	movl	%eax,(%edi)
348bc3d5698SJohn Baldwin	movl	%edx,%esi
349bc3d5698SJohn Baldwin
350bc3d5698SJohn Baldwin	movl	4(%ebx),%eax
351bc3d5698SJohn Baldwin	mull	%ecx
352bc3d5698SJohn Baldwin	addl	%esi,%eax
353bc3d5698SJohn Baldwin	adcl	$0,%edx
354bc3d5698SJohn Baldwin	movl	%eax,4(%edi)
355bc3d5698SJohn Baldwin	movl	%edx,%esi
356bc3d5698SJohn Baldwin
357bc3d5698SJohn Baldwin	movl	8(%ebx),%eax
358bc3d5698SJohn Baldwin	mull	%ecx
359bc3d5698SJohn Baldwin	addl	%esi,%eax
360bc3d5698SJohn Baldwin	adcl	$0,%edx
361bc3d5698SJohn Baldwin	movl	%eax,8(%edi)
362bc3d5698SJohn Baldwin	movl	%edx,%esi
363bc3d5698SJohn Baldwin
364bc3d5698SJohn Baldwin	movl	12(%ebx),%eax
365bc3d5698SJohn Baldwin	mull	%ecx
366bc3d5698SJohn Baldwin	addl	%esi,%eax
367bc3d5698SJohn Baldwin	adcl	$0,%edx
368bc3d5698SJohn Baldwin	movl	%eax,12(%edi)
369bc3d5698SJohn Baldwin	movl	%edx,%esi
370bc3d5698SJohn Baldwin
371bc3d5698SJohn Baldwin	movl	16(%ebx),%eax
372bc3d5698SJohn Baldwin	mull	%ecx
373bc3d5698SJohn Baldwin	addl	%esi,%eax
374bc3d5698SJohn Baldwin	adcl	$0,%edx
375bc3d5698SJohn Baldwin	movl	%eax,16(%edi)
376bc3d5698SJohn Baldwin	movl	%edx,%esi
377bc3d5698SJohn Baldwin
378bc3d5698SJohn Baldwin	movl	20(%ebx),%eax
379bc3d5698SJohn Baldwin	mull	%ecx
380bc3d5698SJohn Baldwin	addl	%esi,%eax
381bc3d5698SJohn Baldwin	adcl	$0,%edx
382bc3d5698SJohn Baldwin	movl	%eax,20(%edi)
383bc3d5698SJohn Baldwin	movl	%edx,%esi
384bc3d5698SJohn Baldwin
385bc3d5698SJohn Baldwin	movl	24(%ebx),%eax
386bc3d5698SJohn Baldwin	mull	%ecx
387bc3d5698SJohn Baldwin	addl	%esi,%eax
388bc3d5698SJohn Baldwin	adcl	$0,%edx
389bc3d5698SJohn Baldwin	movl	%eax,24(%edi)
390bc3d5698SJohn Baldwin	movl	%edx,%esi
391bc3d5698SJohn Baldwin
392bc3d5698SJohn Baldwin	movl	28(%ebx),%eax
393bc3d5698SJohn Baldwin	mull	%ecx
394bc3d5698SJohn Baldwin	addl	%esi,%eax
395bc3d5698SJohn Baldwin	adcl	$0,%edx
396bc3d5698SJohn Baldwin	movl	%eax,28(%edi)
397bc3d5698SJohn Baldwin	movl	%edx,%esi
398bc3d5698SJohn Baldwin
399bc3d5698SJohn Baldwin	addl	$32,%ebx
400bc3d5698SJohn Baldwin	addl	$32,%edi
401bc3d5698SJohn Baldwin	subl	$8,%ebp
402bc3d5698SJohn Baldwin	jz	.L013mw_finish
403bc3d5698SJohn Baldwin	jmp	.L014mw_loop
404bc3d5698SJohn Baldwin.L013mw_finish:
405bc3d5698SJohn Baldwin	movl	28(%esp),%ebp
406bc3d5698SJohn Baldwin	andl	$7,%ebp
407bc3d5698SJohn Baldwin	jnz	.L015mw_finish2
408bc3d5698SJohn Baldwin	jmp	.L016mw_end
409bc3d5698SJohn Baldwin.L015mw_finish2:
410bc3d5698SJohn Baldwin
411bc3d5698SJohn Baldwin	movl	(%ebx),%eax
412bc3d5698SJohn Baldwin	mull	%ecx
413bc3d5698SJohn Baldwin	addl	%esi,%eax
414bc3d5698SJohn Baldwin	adcl	$0,%edx
415bc3d5698SJohn Baldwin	movl	%eax,(%edi)
416bc3d5698SJohn Baldwin	movl	%edx,%esi
417bc3d5698SJohn Baldwin	decl	%ebp
418bc3d5698SJohn Baldwin	jz	.L016mw_end
419bc3d5698SJohn Baldwin
420bc3d5698SJohn Baldwin	movl	4(%ebx),%eax
421bc3d5698SJohn Baldwin	mull	%ecx
422bc3d5698SJohn Baldwin	addl	%esi,%eax
423bc3d5698SJohn Baldwin	adcl	$0,%edx
424bc3d5698SJohn Baldwin	movl	%eax,4(%edi)
425bc3d5698SJohn Baldwin	movl	%edx,%esi
426bc3d5698SJohn Baldwin	decl	%ebp
427bc3d5698SJohn Baldwin	jz	.L016mw_end
428bc3d5698SJohn Baldwin
429bc3d5698SJohn Baldwin	movl	8(%ebx),%eax
430bc3d5698SJohn Baldwin	mull	%ecx
431bc3d5698SJohn Baldwin	addl	%esi,%eax
432bc3d5698SJohn Baldwin	adcl	$0,%edx
433bc3d5698SJohn Baldwin	movl	%eax,8(%edi)
434bc3d5698SJohn Baldwin	movl	%edx,%esi
435bc3d5698SJohn Baldwin	decl	%ebp
436bc3d5698SJohn Baldwin	jz	.L016mw_end
437bc3d5698SJohn Baldwin
438bc3d5698SJohn Baldwin	movl	12(%ebx),%eax
439bc3d5698SJohn Baldwin	mull	%ecx
440bc3d5698SJohn Baldwin	addl	%esi,%eax
441bc3d5698SJohn Baldwin	adcl	$0,%edx
442bc3d5698SJohn Baldwin	movl	%eax,12(%edi)
443bc3d5698SJohn Baldwin	movl	%edx,%esi
444bc3d5698SJohn Baldwin	decl	%ebp
445bc3d5698SJohn Baldwin	jz	.L016mw_end
446bc3d5698SJohn Baldwin
447bc3d5698SJohn Baldwin	movl	16(%ebx),%eax
448bc3d5698SJohn Baldwin	mull	%ecx
449bc3d5698SJohn Baldwin	addl	%esi,%eax
450bc3d5698SJohn Baldwin	adcl	$0,%edx
451bc3d5698SJohn Baldwin	movl	%eax,16(%edi)
452bc3d5698SJohn Baldwin	movl	%edx,%esi
453bc3d5698SJohn Baldwin	decl	%ebp
454bc3d5698SJohn Baldwin	jz	.L016mw_end
455bc3d5698SJohn Baldwin
456bc3d5698SJohn Baldwin	movl	20(%ebx),%eax
457bc3d5698SJohn Baldwin	mull	%ecx
458bc3d5698SJohn Baldwin	addl	%esi,%eax
459bc3d5698SJohn Baldwin	adcl	$0,%edx
460bc3d5698SJohn Baldwin	movl	%eax,20(%edi)
461bc3d5698SJohn Baldwin	movl	%edx,%esi
462bc3d5698SJohn Baldwin	decl	%ebp
463bc3d5698SJohn Baldwin	jz	.L016mw_end
464bc3d5698SJohn Baldwin
465bc3d5698SJohn Baldwin	movl	24(%ebx),%eax
466bc3d5698SJohn Baldwin	mull	%ecx
467bc3d5698SJohn Baldwin	addl	%esi,%eax
468bc3d5698SJohn Baldwin	adcl	$0,%edx
469bc3d5698SJohn Baldwin	movl	%eax,24(%edi)
470bc3d5698SJohn Baldwin	movl	%edx,%esi
471bc3d5698SJohn Baldwin.L016mw_end:
472bc3d5698SJohn Baldwin	movl	%esi,%eax
473bc3d5698SJohn Baldwin	popl	%edi
474bc3d5698SJohn Baldwin	popl	%esi
475bc3d5698SJohn Baldwin	popl	%ebx
476bc3d5698SJohn Baldwin	popl	%ebp
477bc3d5698SJohn Baldwin	ret
478bc3d5698SJohn Baldwin.size	bn_mul_words,.-.L_bn_mul_words_begin
479bc3d5698SJohn Baldwin.globl	bn_sqr_words
480bc3d5698SJohn Baldwin.type	bn_sqr_words,@function
481bc3d5698SJohn Baldwin.align	16
482bc3d5698SJohn Baldwinbn_sqr_words:
483bc3d5698SJohn Baldwin.L_bn_sqr_words_begin:
484*c0855eaaSJohn Baldwin	#ifdef __CET__
485*c0855eaaSJohn Baldwin
486*c0855eaaSJohn Baldwin.byte	243,15,30,251
487*c0855eaaSJohn Baldwin	#endif
488*c0855eaaSJohn Baldwin
489bc3d5698SJohn Baldwin	call	.L017PIC_me_up
490bc3d5698SJohn Baldwin.L017PIC_me_up:
491bc3d5698SJohn Baldwin	popl	%eax
492bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P-.L017PIC_me_up(%eax),%eax
493bc3d5698SJohn Baldwin	btl	$26,(%eax)
494bc3d5698SJohn Baldwin	jnc	.L018sqr_non_sse2
495bc3d5698SJohn Baldwin	movl	4(%esp),%eax
496bc3d5698SJohn Baldwin	movl	8(%esp),%edx
497bc3d5698SJohn Baldwin	movl	12(%esp),%ecx
498bc3d5698SJohn Baldwin.align	16
499bc3d5698SJohn Baldwin.L019sqr_sse2_loop:
500bc3d5698SJohn Baldwin	movd	(%edx),%mm0
501bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm0
502bc3d5698SJohn Baldwin	leal	4(%edx),%edx
503bc3d5698SJohn Baldwin	movq	%mm0,(%eax)
504bc3d5698SJohn Baldwin	subl	$1,%ecx
505bc3d5698SJohn Baldwin	leal	8(%eax),%eax
506bc3d5698SJohn Baldwin	jnz	.L019sqr_sse2_loop
507bc3d5698SJohn Baldwin	emms
508bc3d5698SJohn Baldwin	ret
509bc3d5698SJohn Baldwin.align	16
510bc3d5698SJohn Baldwin.L018sqr_non_sse2:
511bc3d5698SJohn Baldwin	pushl	%ebp
512bc3d5698SJohn Baldwin	pushl	%ebx
513bc3d5698SJohn Baldwin	pushl	%esi
514bc3d5698SJohn Baldwin	pushl	%edi
515bc3d5698SJohn Baldwin
516bc3d5698SJohn Baldwin	movl	20(%esp),%esi
517bc3d5698SJohn Baldwin	movl	24(%esp),%edi
518bc3d5698SJohn Baldwin	movl	28(%esp),%ebx
519bc3d5698SJohn Baldwin	andl	$4294967288,%ebx
520bc3d5698SJohn Baldwin	jz	.L020sw_finish
521bc3d5698SJohn Baldwin.L021sw_loop:
522bc3d5698SJohn Baldwin
523bc3d5698SJohn Baldwin	movl	(%edi),%eax
524bc3d5698SJohn Baldwin	mull	%eax
525bc3d5698SJohn Baldwin	movl	%eax,(%esi)
526bc3d5698SJohn Baldwin	movl	%edx,4(%esi)
527bc3d5698SJohn Baldwin
528bc3d5698SJohn Baldwin	movl	4(%edi),%eax
529bc3d5698SJohn Baldwin	mull	%eax
530bc3d5698SJohn Baldwin	movl	%eax,8(%esi)
531bc3d5698SJohn Baldwin	movl	%edx,12(%esi)
532bc3d5698SJohn Baldwin
533bc3d5698SJohn Baldwin	movl	8(%edi),%eax
534bc3d5698SJohn Baldwin	mull	%eax
535bc3d5698SJohn Baldwin	movl	%eax,16(%esi)
536bc3d5698SJohn Baldwin	movl	%edx,20(%esi)
537bc3d5698SJohn Baldwin
538bc3d5698SJohn Baldwin	movl	12(%edi),%eax
539bc3d5698SJohn Baldwin	mull	%eax
540bc3d5698SJohn Baldwin	movl	%eax,24(%esi)
541bc3d5698SJohn Baldwin	movl	%edx,28(%esi)
542bc3d5698SJohn Baldwin
543bc3d5698SJohn Baldwin	movl	16(%edi),%eax
544bc3d5698SJohn Baldwin	mull	%eax
545bc3d5698SJohn Baldwin	movl	%eax,32(%esi)
546bc3d5698SJohn Baldwin	movl	%edx,36(%esi)
547bc3d5698SJohn Baldwin
548bc3d5698SJohn Baldwin	movl	20(%edi),%eax
549bc3d5698SJohn Baldwin	mull	%eax
550bc3d5698SJohn Baldwin	movl	%eax,40(%esi)
551bc3d5698SJohn Baldwin	movl	%edx,44(%esi)
552bc3d5698SJohn Baldwin
553bc3d5698SJohn Baldwin	movl	24(%edi),%eax
554bc3d5698SJohn Baldwin	mull	%eax
555bc3d5698SJohn Baldwin	movl	%eax,48(%esi)
556bc3d5698SJohn Baldwin	movl	%edx,52(%esi)
557bc3d5698SJohn Baldwin
558bc3d5698SJohn Baldwin	movl	28(%edi),%eax
559bc3d5698SJohn Baldwin	mull	%eax
560bc3d5698SJohn Baldwin	movl	%eax,56(%esi)
561bc3d5698SJohn Baldwin	movl	%edx,60(%esi)
562bc3d5698SJohn Baldwin
563bc3d5698SJohn Baldwin	addl	$32,%edi
564bc3d5698SJohn Baldwin	addl	$64,%esi
565bc3d5698SJohn Baldwin	subl	$8,%ebx
566bc3d5698SJohn Baldwin	jnz	.L021sw_loop
567bc3d5698SJohn Baldwin.L020sw_finish:
568bc3d5698SJohn Baldwin	movl	28(%esp),%ebx
569bc3d5698SJohn Baldwin	andl	$7,%ebx
570bc3d5698SJohn Baldwin	jz	.L022sw_end
571bc3d5698SJohn Baldwin
572bc3d5698SJohn Baldwin	movl	(%edi),%eax
573bc3d5698SJohn Baldwin	mull	%eax
574bc3d5698SJohn Baldwin	movl	%eax,(%esi)
575bc3d5698SJohn Baldwin	decl	%ebx
576bc3d5698SJohn Baldwin	movl	%edx,4(%esi)
577bc3d5698SJohn Baldwin	jz	.L022sw_end
578bc3d5698SJohn Baldwin
579bc3d5698SJohn Baldwin	movl	4(%edi),%eax
580bc3d5698SJohn Baldwin	mull	%eax
581bc3d5698SJohn Baldwin	movl	%eax,8(%esi)
582bc3d5698SJohn Baldwin	decl	%ebx
583bc3d5698SJohn Baldwin	movl	%edx,12(%esi)
584bc3d5698SJohn Baldwin	jz	.L022sw_end
585bc3d5698SJohn Baldwin
586bc3d5698SJohn Baldwin	movl	8(%edi),%eax
587bc3d5698SJohn Baldwin	mull	%eax
588bc3d5698SJohn Baldwin	movl	%eax,16(%esi)
589bc3d5698SJohn Baldwin	decl	%ebx
590bc3d5698SJohn Baldwin	movl	%edx,20(%esi)
591bc3d5698SJohn Baldwin	jz	.L022sw_end
592bc3d5698SJohn Baldwin
593bc3d5698SJohn Baldwin	movl	12(%edi),%eax
594bc3d5698SJohn Baldwin	mull	%eax
595bc3d5698SJohn Baldwin	movl	%eax,24(%esi)
596bc3d5698SJohn Baldwin	decl	%ebx
597bc3d5698SJohn Baldwin	movl	%edx,28(%esi)
598bc3d5698SJohn Baldwin	jz	.L022sw_end
599bc3d5698SJohn Baldwin
600bc3d5698SJohn Baldwin	movl	16(%edi),%eax
601bc3d5698SJohn Baldwin	mull	%eax
602bc3d5698SJohn Baldwin	movl	%eax,32(%esi)
603bc3d5698SJohn Baldwin	decl	%ebx
604bc3d5698SJohn Baldwin	movl	%edx,36(%esi)
605bc3d5698SJohn Baldwin	jz	.L022sw_end
606bc3d5698SJohn Baldwin
607bc3d5698SJohn Baldwin	movl	20(%edi),%eax
608bc3d5698SJohn Baldwin	mull	%eax
609bc3d5698SJohn Baldwin	movl	%eax,40(%esi)
610bc3d5698SJohn Baldwin	decl	%ebx
611bc3d5698SJohn Baldwin	movl	%edx,44(%esi)
612bc3d5698SJohn Baldwin	jz	.L022sw_end
613bc3d5698SJohn Baldwin
614bc3d5698SJohn Baldwin	movl	24(%edi),%eax
615bc3d5698SJohn Baldwin	mull	%eax
616bc3d5698SJohn Baldwin	movl	%eax,48(%esi)
617bc3d5698SJohn Baldwin	movl	%edx,52(%esi)
618bc3d5698SJohn Baldwin.L022sw_end:
619bc3d5698SJohn Baldwin	popl	%edi
620bc3d5698SJohn Baldwin	popl	%esi
621bc3d5698SJohn Baldwin	popl	%ebx
622bc3d5698SJohn Baldwin	popl	%ebp
623bc3d5698SJohn Baldwin	ret
624bc3d5698SJohn Baldwin.size	bn_sqr_words,.-.L_bn_sqr_words_begin
625bc3d5698SJohn Baldwin.globl	bn_div_words
626bc3d5698SJohn Baldwin.type	bn_div_words,@function
627bc3d5698SJohn Baldwin.align	16
628bc3d5698SJohn Baldwinbn_div_words:
629bc3d5698SJohn Baldwin.L_bn_div_words_begin:
630*c0855eaaSJohn Baldwin	#ifdef __CET__
631*c0855eaaSJohn Baldwin
632*c0855eaaSJohn Baldwin.byte	243,15,30,251
633*c0855eaaSJohn Baldwin	#endif
634*c0855eaaSJohn Baldwin
635bc3d5698SJohn Baldwin	movl	4(%esp),%edx
636bc3d5698SJohn Baldwin	movl	8(%esp),%eax
637bc3d5698SJohn Baldwin	movl	12(%esp),%ecx
638bc3d5698SJohn Baldwin	divl	%ecx
639bc3d5698SJohn Baldwin	ret
640bc3d5698SJohn Baldwin.size	bn_div_words,.-.L_bn_div_words_begin
641bc3d5698SJohn Baldwin.globl	bn_add_words
642bc3d5698SJohn Baldwin.type	bn_add_words,@function
643bc3d5698SJohn Baldwin.align	16
644bc3d5698SJohn Baldwinbn_add_words:
645bc3d5698SJohn Baldwin.L_bn_add_words_begin:
646*c0855eaaSJohn Baldwin	#ifdef __CET__
647*c0855eaaSJohn Baldwin
648*c0855eaaSJohn Baldwin.byte	243,15,30,251
649*c0855eaaSJohn Baldwin	#endif
650*c0855eaaSJohn Baldwin
651bc3d5698SJohn Baldwin	pushl	%ebp
652bc3d5698SJohn Baldwin	pushl	%ebx
653bc3d5698SJohn Baldwin	pushl	%esi
654bc3d5698SJohn Baldwin	pushl	%edi
655bc3d5698SJohn Baldwin
656bc3d5698SJohn Baldwin	movl	20(%esp),%ebx
657bc3d5698SJohn Baldwin	movl	24(%esp),%esi
658bc3d5698SJohn Baldwin	movl	28(%esp),%edi
659bc3d5698SJohn Baldwin	movl	32(%esp),%ebp
660bc3d5698SJohn Baldwin	xorl	%eax,%eax
661bc3d5698SJohn Baldwin	andl	$4294967288,%ebp
662bc3d5698SJohn Baldwin	jz	.L023aw_finish
663bc3d5698SJohn Baldwin.L024aw_loop:
664bc3d5698SJohn Baldwin
665bc3d5698SJohn Baldwin	movl	(%esi),%ecx
666bc3d5698SJohn Baldwin	movl	(%edi),%edx
667bc3d5698SJohn Baldwin	addl	%eax,%ecx
668bc3d5698SJohn Baldwin	movl	$0,%eax
669bc3d5698SJohn Baldwin	adcl	%eax,%eax
670bc3d5698SJohn Baldwin	addl	%edx,%ecx
671bc3d5698SJohn Baldwin	adcl	$0,%eax
672bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
673bc3d5698SJohn Baldwin
674bc3d5698SJohn Baldwin	movl	4(%esi),%ecx
675bc3d5698SJohn Baldwin	movl	4(%edi),%edx
676bc3d5698SJohn Baldwin	addl	%eax,%ecx
677bc3d5698SJohn Baldwin	movl	$0,%eax
678bc3d5698SJohn Baldwin	adcl	%eax,%eax
679bc3d5698SJohn Baldwin	addl	%edx,%ecx
680bc3d5698SJohn Baldwin	adcl	$0,%eax
681bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
682bc3d5698SJohn Baldwin
683bc3d5698SJohn Baldwin	movl	8(%esi),%ecx
684bc3d5698SJohn Baldwin	movl	8(%edi),%edx
685bc3d5698SJohn Baldwin	addl	%eax,%ecx
686bc3d5698SJohn Baldwin	movl	$0,%eax
687bc3d5698SJohn Baldwin	adcl	%eax,%eax
688bc3d5698SJohn Baldwin	addl	%edx,%ecx
689bc3d5698SJohn Baldwin	adcl	$0,%eax
690bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
691bc3d5698SJohn Baldwin
692bc3d5698SJohn Baldwin	movl	12(%esi),%ecx
693bc3d5698SJohn Baldwin	movl	12(%edi),%edx
694bc3d5698SJohn Baldwin	addl	%eax,%ecx
695bc3d5698SJohn Baldwin	movl	$0,%eax
696bc3d5698SJohn Baldwin	adcl	%eax,%eax
697bc3d5698SJohn Baldwin	addl	%edx,%ecx
698bc3d5698SJohn Baldwin	adcl	$0,%eax
699bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
700bc3d5698SJohn Baldwin
701bc3d5698SJohn Baldwin	movl	16(%esi),%ecx
702bc3d5698SJohn Baldwin	movl	16(%edi),%edx
703bc3d5698SJohn Baldwin	addl	%eax,%ecx
704bc3d5698SJohn Baldwin	movl	$0,%eax
705bc3d5698SJohn Baldwin	adcl	%eax,%eax
706bc3d5698SJohn Baldwin	addl	%edx,%ecx
707bc3d5698SJohn Baldwin	adcl	$0,%eax
708bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
709bc3d5698SJohn Baldwin
710bc3d5698SJohn Baldwin	movl	20(%esi),%ecx
711bc3d5698SJohn Baldwin	movl	20(%edi),%edx
712bc3d5698SJohn Baldwin	addl	%eax,%ecx
713bc3d5698SJohn Baldwin	movl	$0,%eax
714bc3d5698SJohn Baldwin	adcl	%eax,%eax
715bc3d5698SJohn Baldwin	addl	%edx,%ecx
716bc3d5698SJohn Baldwin	adcl	$0,%eax
717bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
718bc3d5698SJohn Baldwin
719bc3d5698SJohn Baldwin	movl	24(%esi),%ecx
720bc3d5698SJohn Baldwin	movl	24(%edi),%edx
721bc3d5698SJohn Baldwin	addl	%eax,%ecx
722bc3d5698SJohn Baldwin	movl	$0,%eax
723bc3d5698SJohn Baldwin	adcl	%eax,%eax
724bc3d5698SJohn Baldwin	addl	%edx,%ecx
725bc3d5698SJohn Baldwin	adcl	$0,%eax
726bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
727bc3d5698SJohn Baldwin
728bc3d5698SJohn Baldwin	movl	28(%esi),%ecx
729bc3d5698SJohn Baldwin	movl	28(%edi),%edx
730bc3d5698SJohn Baldwin	addl	%eax,%ecx
731bc3d5698SJohn Baldwin	movl	$0,%eax
732bc3d5698SJohn Baldwin	adcl	%eax,%eax
733bc3d5698SJohn Baldwin	addl	%edx,%ecx
734bc3d5698SJohn Baldwin	adcl	$0,%eax
735bc3d5698SJohn Baldwin	movl	%ecx,28(%ebx)
736bc3d5698SJohn Baldwin
737bc3d5698SJohn Baldwin	addl	$32,%esi
738bc3d5698SJohn Baldwin	addl	$32,%edi
739bc3d5698SJohn Baldwin	addl	$32,%ebx
740bc3d5698SJohn Baldwin	subl	$8,%ebp
741bc3d5698SJohn Baldwin	jnz	.L024aw_loop
742bc3d5698SJohn Baldwin.L023aw_finish:
743bc3d5698SJohn Baldwin	movl	32(%esp),%ebp
744bc3d5698SJohn Baldwin	andl	$7,%ebp
745bc3d5698SJohn Baldwin	jz	.L025aw_end
746bc3d5698SJohn Baldwin
747bc3d5698SJohn Baldwin	movl	(%esi),%ecx
748bc3d5698SJohn Baldwin	movl	(%edi),%edx
749bc3d5698SJohn Baldwin	addl	%eax,%ecx
750bc3d5698SJohn Baldwin	movl	$0,%eax
751bc3d5698SJohn Baldwin	adcl	%eax,%eax
752bc3d5698SJohn Baldwin	addl	%edx,%ecx
753bc3d5698SJohn Baldwin	adcl	$0,%eax
754bc3d5698SJohn Baldwin	decl	%ebp
755bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
756bc3d5698SJohn Baldwin	jz	.L025aw_end
757bc3d5698SJohn Baldwin
758bc3d5698SJohn Baldwin	movl	4(%esi),%ecx
759bc3d5698SJohn Baldwin	movl	4(%edi),%edx
760bc3d5698SJohn Baldwin	addl	%eax,%ecx
761bc3d5698SJohn Baldwin	movl	$0,%eax
762bc3d5698SJohn Baldwin	adcl	%eax,%eax
763bc3d5698SJohn Baldwin	addl	%edx,%ecx
764bc3d5698SJohn Baldwin	adcl	$0,%eax
765bc3d5698SJohn Baldwin	decl	%ebp
766bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
767bc3d5698SJohn Baldwin	jz	.L025aw_end
768bc3d5698SJohn Baldwin
769bc3d5698SJohn Baldwin	movl	8(%esi),%ecx
770bc3d5698SJohn Baldwin	movl	8(%edi),%edx
771bc3d5698SJohn Baldwin	addl	%eax,%ecx
772bc3d5698SJohn Baldwin	movl	$0,%eax
773bc3d5698SJohn Baldwin	adcl	%eax,%eax
774bc3d5698SJohn Baldwin	addl	%edx,%ecx
775bc3d5698SJohn Baldwin	adcl	$0,%eax
776bc3d5698SJohn Baldwin	decl	%ebp
777bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
778bc3d5698SJohn Baldwin	jz	.L025aw_end
779bc3d5698SJohn Baldwin
780bc3d5698SJohn Baldwin	movl	12(%esi),%ecx
781bc3d5698SJohn Baldwin	movl	12(%edi),%edx
782bc3d5698SJohn Baldwin	addl	%eax,%ecx
783bc3d5698SJohn Baldwin	movl	$0,%eax
784bc3d5698SJohn Baldwin	adcl	%eax,%eax
785bc3d5698SJohn Baldwin	addl	%edx,%ecx
786bc3d5698SJohn Baldwin	adcl	$0,%eax
787bc3d5698SJohn Baldwin	decl	%ebp
788bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
789bc3d5698SJohn Baldwin	jz	.L025aw_end
790bc3d5698SJohn Baldwin
791bc3d5698SJohn Baldwin	movl	16(%esi),%ecx
792bc3d5698SJohn Baldwin	movl	16(%edi),%edx
793bc3d5698SJohn Baldwin	addl	%eax,%ecx
794bc3d5698SJohn Baldwin	movl	$0,%eax
795bc3d5698SJohn Baldwin	adcl	%eax,%eax
796bc3d5698SJohn Baldwin	addl	%edx,%ecx
797bc3d5698SJohn Baldwin	adcl	$0,%eax
798bc3d5698SJohn Baldwin	decl	%ebp
799bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
800bc3d5698SJohn Baldwin	jz	.L025aw_end
801bc3d5698SJohn Baldwin
802bc3d5698SJohn Baldwin	movl	20(%esi),%ecx
803bc3d5698SJohn Baldwin	movl	20(%edi),%edx
804bc3d5698SJohn Baldwin	addl	%eax,%ecx
805bc3d5698SJohn Baldwin	movl	$0,%eax
806bc3d5698SJohn Baldwin	adcl	%eax,%eax
807bc3d5698SJohn Baldwin	addl	%edx,%ecx
808bc3d5698SJohn Baldwin	adcl	$0,%eax
809bc3d5698SJohn Baldwin	decl	%ebp
810bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
811bc3d5698SJohn Baldwin	jz	.L025aw_end
812bc3d5698SJohn Baldwin
813bc3d5698SJohn Baldwin	movl	24(%esi),%ecx
814bc3d5698SJohn Baldwin	movl	24(%edi),%edx
815bc3d5698SJohn Baldwin	addl	%eax,%ecx
816bc3d5698SJohn Baldwin	movl	$0,%eax
817bc3d5698SJohn Baldwin	adcl	%eax,%eax
818bc3d5698SJohn Baldwin	addl	%edx,%ecx
819bc3d5698SJohn Baldwin	adcl	$0,%eax
820bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
821bc3d5698SJohn Baldwin.L025aw_end:
822bc3d5698SJohn Baldwin	popl	%edi
823bc3d5698SJohn Baldwin	popl	%esi
824bc3d5698SJohn Baldwin	popl	%ebx
825bc3d5698SJohn Baldwin	popl	%ebp
826bc3d5698SJohn Baldwin	ret
827bc3d5698SJohn Baldwin.size	bn_add_words,.-.L_bn_add_words_begin
828bc3d5698SJohn Baldwin.globl	bn_sub_words
829bc3d5698SJohn Baldwin.type	bn_sub_words,@function
830bc3d5698SJohn Baldwin.align	16
831bc3d5698SJohn Baldwinbn_sub_words:
832bc3d5698SJohn Baldwin.L_bn_sub_words_begin:
833*c0855eaaSJohn Baldwin	#ifdef __CET__
834*c0855eaaSJohn Baldwin
835*c0855eaaSJohn Baldwin.byte	243,15,30,251
836*c0855eaaSJohn Baldwin	#endif
837*c0855eaaSJohn Baldwin
838bc3d5698SJohn Baldwin	pushl	%ebp
839bc3d5698SJohn Baldwin	pushl	%ebx
840bc3d5698SJohn Baldwin	pushl	%esi
841bc3d5698SJohn Baldwin	pushl	%edi
842bc3d5698SJohn Baldwin
843bc3d5698SJohn Baldwin	movl	20(%esp),%ebx
844bc3d5698SJohn Baldwin	movl	24(%esp),%esi
845bc3d5698SJohn Baldwin	movl	28(%esp),%edi
846bc3d5698SJohn Baldwin	movl	32(%esp),%ebp
847bc3d5698SJohn Baldwin	xorl	%eax,%eax
848bc3d5698SJohn Baldwin	andl	$4294967288,%ebp
849bc3d5698SJohn Baldwin	jz	.L026aw_finish
850bc3d5698SJohn Baldwin.L027aw_loop:
851bc3d5698SJohn Baldwin
852bc3d5698SJohn Baldwin	movl	(%esi),%ecx
853bc3d5698SJohn Baldwin	movl	(%edi),%edx
854bc3d5698SJohn Baldwin	subl	%eax,%ecx
855bc3d5698SJohn Baldwin	movl	$0,%eax
856bc3d5698SJohn Baldwin	adcl	%eax,%eax
857bc3d5698SJohn Baldwin	subl	%edx,%ecx
858bc3d5698SJohn Baldwin	adcl	$0,%eax
859bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
860bc3d5698SJohn Baldwin
861bc3d5698SJohn Baldwin	movl	4(%esi),%ecx
862bc3d5698SJohn Baldwin	movl	4(%edi),%edx
863bc3d5698SJohn Baldwin	subl	%eax,%ecx
864bc3d5698SJohn Baldwin	movl	$0,%eax
865bc3d5698SJohn Baldwin	adcl	%eax,%eax
866bc3d5698SJohn Baldwin	subl	%edx,%ecx
867bc3d5698SJohn Baldwin	adcl	$0,%eax
868bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
869bc3d5698SJohn Baldwin
870bc3d5698SJohn Baldwin	movl	8(%esi),%ecx
871bc3d5698SJohn Baldwin	movl	8(%edi),%edx
872bc3d5698SJohn Baldwin	subl	%eax,%ecx
873bc3d5698SJohn Baldwin	movl	$0,%eax
874bc3d5698SJohn Baldwin	adcl	%eax,%eax
875bc3d5698SJohn Baldwin	subl	%edx,%ecx
876bc3d5698SJohn Baldwin	adcl	$0,%eax
877bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
878bc3d5698SJohn Baldwin
879bc3d5698SJohn Baldwin	movl	12(%esi),%ecx
880bc3d5698SJohn Baldwin	movl	12(%edi),%edx
881bc3d5698SJohn Baldwin	subl	%eax,%ecx
882bc3d5698SJohn Baldwin	movl	$0,%eax
883bc3d5698SJohn Baldwin	adcl	%eax,%eax
884bc3d5698SJohn Baldwin	subl	%edx,%ecx
885bc3d5698SJohn Baldwin	adcl	$0,%eax
886bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
887bc3d5698SJohn Baldwin
888bc3d5698SJohn Baldwin	movl	16(%esi),%ecx
889bc3d5698SJohn Baldwin	movl	16(%edi),%edx
890bc3d5698SJohn Baldwin	subl	%eax,%ecx
891bc3d5698SJohn Baldwin	movl	$0,%eax
892bc3d5698SJohn Baldwin	adcl	%eax,%eax
893bc3d5698SJohn Baldwin	subl	%edx,%ecx
894bc3d5698SJohn Baldwin	adcl	$0,%eax
895bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
896bc3d5698SJohn Baldwin
897bc3d5698SJohn Baldwin	movl	20(%esi),%ecx
898bc3d5698SJohn Baldwin	movl	20(%edi),%edx
899bc3d5698SJohn Baldwin	subl	%eax,%ecx
900bc3d5698SJohn Baldwin	movl	$0,%eax
901bc3d5698SJohn Baldwin	adcl	%eax,%eax
902bc3d5698SJohn Baldwin	subl	%edx,%ecx
903bc3d5698SJohn Baldwin	adcl	$0,%eax
904bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
905bc3d5698SJohn Baldwin
906bc3d5698SJohn Baldwin	movl	24(%esi),%ecx
907bc3d5698SJohn Baldwin	movl	24(%edi),%edx
908bc3d5698SJohn Baldwin	subl	%eax,%ecx
909bc3d5698SJohn Baldwin	movl	$0,%eax
910bc3d5698SJohn Baldwin	adcl	%eax,%eax
911bc3d5698SJohn Baldwin	subl	%edx,%ecx
912bc3d5698SJohn Baldwin	adcl	$0,%eax
913bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
914bc3d5698SJohn Baldwin
915bc3d5698SJohn Baldwin	movl	28(%esi),%ecx
916bc3d5698SJohn Baldwin	movl	28(%edi),%edx
917bc3d5698SJohn Baldwin	subl	%eax,%ecx
918bc3d5698SJohn Baldwin	movl	$0,%eax
919bc3d5698SJohn Baldwin	adcl	%eax,%eax
920bc3d5698SJohn Baldwin	subl	%edx,%ecx
921bc3d5698SJohn Baldwin	adcl	$0,%eax
922bc3d5698SJohn Baldwin	movl	%ecx,28(%ebx)
923bc3d5698SJohn Baldwin
924bc3d5698SJohn Baldwin	addl	$32,%esi
925bc3d5698SJohn Baldwin	addl	$32,%edi
926bc3d5698SJohn Baldwin	addl	$32,%ebx
927bc3d5698SJohn Baldwin	subl	$8,%ebp
928bc3d5698SJohn Baldwin	jnz	.L027aw_loop
929bc3d5698SJohn Baldwin.L026aw_finish:
930bc3d5698SJohn Baldwin	movl	32(%esp),%ebp
931bc3d5698SJohn Baldwin	andl	$7,%ebp
932bc3d5698SJohn Baldwin	jz	.L028aw_end
933bc3d5698SJohn Baldwin
934bc3d5698SJohn Baldwin	movl	(%esi),%ecx
935bc3d5698SJohn Baldwin	movl	(%edi),%edx
936bc3d5698SJohn Baldwin	subl	%eax,%ecx
937bc3d5698SJohn Baldwin	movl	$0,%eax
938bc3d5698SJohn Baldwin	adcl	%eax,%eax
939bc3d5698SJohn Baldwin	subl	%edx,%ecx
940bc3d5698SJohn Baldwin	adcl	$0,%eax
941bc3d5698SJohn Baldwin	decl	%ebp
942bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
943bc3d5698SJohn Baldwin	jz	.L028aw_end
944bc3d5698SJohn Baldwin
945bc3d5698SJohn Baldwin	movl	4(%esi),%ecx
946bc3d5698SJohn Baldwin	movl	4(%edi),%edx
947bc3d5698SJohn Baldwin	subl	%eax,%ecx
948bc3d5698SJohn Baldwin	movl	$0,%eax
949bc3d5698SJohn Baldwin	adcl	%eax,%eax
950bc3d5698SJohn Baldwin	subl	%edx,%ecx
951bc3d5698SJohn Baldwin	adcl	$0,%eax
952bc3d5698SJohn Baldwin	decl	%ebp
953bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
954bc3d5698SJohn Baldwin	jz	.L028aw_end
955bc3d5698SJohn Baldwin
956bc3d5698SJohn Baldwin	movl	8(%esi),%ecx
957bc3d5698SJohn Baldwin	movl	8(%edi),%edx
958bc3d5698SJohn Baldwin	subl	%eax,%ecx
959bc3d5698SJohn Baldwin	movl	$0,%eax
960bc3d5698SJohn Baldwin	adcl	%eax,%eax
961bc3d5698SJohn Baldwin	subl	%edx,%ecx
962bc3d5698SJohn Baldwin	adcl	$0,%eax
963bc3d5698SJohn Baldwin	decl	%ebp
964bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
965bc3d5698SJohn Baldwin	jz	.L028aw_end
966bc3d5698SJohn Baldwin
967bc3d5698SJohn Baldwin	movl	12(%esi),%ecx
968bc3d5698SJohn Baldwin	movl	12(%edi),%edx
969bc3d5698SJohn Baldwin	subl	%eax,%ecx
970bc3d5698SJohn Baldwin	movl	$0,%eax
971bc3d5698SJohn Baldwin	adcl	%eax,%eax
972bc3d5698SJohn Baldwin	subl	%edx,%ecx
973bc3d5698SJohn Baldwin	adcl	$0,%eax
974bc3d5698SJohn Baldwin	decl	%ebp
975bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
976bc3d5698SJohn Baldwin	jz	.L028aw_end
977bc3d5698SJohn Baldwin
978bc3d5698SJohn Baldwin	movl	16(%esi),%ecx
979bc3d5698SJohn Baldwin	movl	16(%edi),%edx
980bc3d5698SJohn Baldwin	subl	%eax,%ecx
981bc3d5698SJohn Baldwin	movl	$0,%eax
982bc3d5698SJohn Baldwin	adcl	%eax,%eax
983bc3d5698SJohn Baldwin	subl	%edx,%ecx
984bc3d5698SJohn Baldwin	adcl	$0,%eax
985bc3d5698SJohn Baldwin	decl	%ebp
986bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
987bc3d5698SJohn Baldwin	jz	.L028aw_end
988bc3d5698SJohn Baldwin
989bc3d5698SJohn Baldwin	movl	20(%esi),%ecx
990bc3d5698SJohn Baldwin	movl	20(%edi),%edx
991bc3d5698SJohn Baldwin	subl	%eax,%ecx
992bc3d5698SJohn Baldwin	movl	$0,%eax
993bc3d5698SJohn Baldwin	adcl	%eax,%eax
994bc3d5698SJohn Baldwin	subl	%edx,%ecx
995bc3d5698SJohn Baldwin	adcl	$0,%eax
996bc3d5698SJohn Baldwin	decl	%ebp
997bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
998bc3d5698SJohn Baldwin	jz	.L028aw_end
999bc3d5698SJohn Baldwin
1000bc3d5698SJohn Baldwin	movl	24(%esi),%ecx
1001bc3d5698SJohn Baldwin	movl	24(%edi),%edx
1002bc3d5698SJohn Baldwin	subl	%eax,%ecx
1003bc3d5698SJohn Baldwin	movl	$0,%eax
1004bc3d5698SJohn Baldwin	adcl	%eax,%eax
1005bc3d5698SJohn Baldwin	subl	%edx,%ecx
1006bc3d5698SJohn Baldwin	adcl	$0,%eax
1007bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
1008bc3d5698SJohn Baldwin.L028aw_end:
1009bc3d5698SJohn Baldwin	popl	%edi
1010bc3d5698SJohn Baldwin	popl	%esi
1011bc3d5698SJohn Baldwin	popl	%ebx
1012bc3d5698SJohn Baldwin	popl	%ebp
1013bc3d5698SJohn Baldwin	ret
1014bc3d5698SJohn Baldwin.size	bn_sub_words,.-.L_bn_sub_words_begin
1015bc3d5698SJohn Baldwin.globl	bn_sub_part_words
1016bc3d5698SJohn Baldwin.type	bn_sub_part_words,@function
1017bc3d5698SJohn Baldwin.align	16
1018bc3d5698SJohn Baldwinbn_sub_part_words:
1019bc3d5698SJohn Baldwin.L_bn_sub_part_words_begin:
1020*c0855eaaSJohn Baldwin	#ifdef __CET__
1021*c0855eaaSJohn Baldwin
1022*c0855eaaSJohn Baldwin.byte	243,15,30,251
1023*c0855eaaSJohn Baldwin	#endif
1024*c0855eaaSJohn Baldwin
1025bc3d5698SJohn Baldwin	pushl	%ebp
1026bc3d5698SJohn Baldwin	pushl	%ebx
1027bc3d5698SJohn Baldwin	pushl	%esi
1028bc3d5698SJohn Baldwin	pushl	%edi
1029bc3d5698SJohn Baldwin
1030bc3d5698SJohn Baldwin	movl	20(%esp),%ebx
1031bc3d5698SJohn Baldwin	movl	24(%esp),%esi
1032bc3d5698SJohn Baldwin	movl	28(%esp),%edi
1033bc3d5698SJohn Baldwin	movl	32(%esp),%ebp
1034bc3d5698SJohn Baldwin	xorl	%eax,%eax
1035bc3d5698SJohn Baldwin	andl	$4294967288,%ebp
1036bc3d5698SJohn Baldwin	jz	.L029aw_finish
1037bc3d5698SJohn Baldwin.L030aw_loop:
1038bc3d5698SJohn Baldwin
1039bc3d5698SJohn Baldwin	movl	(%esi),%ecx
1040bc3d5698SJohn Baldwin	movl	(%edi),%edx
1041bc3d5698SJohn Baldwin	subl	%eax,%ecx
1042bc3d5698SJohn Baldwin	movl	$0,%eax
1043bc3d5698SJohn Baldwin	adcl	%eax,%eax
1044bc3d5698SJohn Baldwin	subl	%edx,%ecx
1045bc3d5698SJohn Baldwin	adcl	$0,%eax
1046bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
1047bc3d5698SJohn Baldwin
1048bc3d5698SJohn Baldwin	movl	4(%esi),%ecx
1049bc3d5698SJohn Baldwin	movl	4(%edi),%edx
1050bc3d5698SJohn Baldwin	subl	%eax,%ecx
1051bc3d5698SJohn Baldwin	movl	$0,%eax
1052bc3d5698SJohn Baldwin	adcl	%eax,%eax
1053bc3d5698SJohn Baldwin	subl	%edx,%ecx
1054bc3d5698SJohn Baldwin	adcl	$0,%eax
1055bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
1056bc3d5698SJohn Baldwin
1057bc3d5698SJohn Baldwin	movl	8(%esi),%ecx
1058bc3d5698SJohn Baldwin	movl	8(%edi),%edx
1059bc3d5698SJohn Baldwin	subl	%eax,%ecx
1060bc3d5698SJohn Baldwin	movl	$0,%eax
1061bc3d5698SJohn Baldwin	adcl	%eax,%eax
1062bc3d5698SJohn Baldwin	subl	%edx,%ecx
1063bc3d5698SJohn Baldwin	adcl	$0,%eax
1064bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
1065bc3d5698SJohn Baldwin
1066bc3d5698SJohn Baldwin	movl	12(%esi),%ecx
1067bc3d5698SJohn Baldwin	movl	12(%edi),%edx
1068bc3d5698SJohn Baldwin	subl	%eax,%ecx
1069bc3d5698SJohn Baldwin	movl	$0,%eax
1070bc3d5698SJohn Baldwin	adcl	%eax,%eax
1071bc3d5698SJohn Baldwin	subl	%edx,%ecx
1072bc3d5698SJohn Baldwin	adcl	$0,%eax
1073bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
1074bc3d5698SJohn Baldwin
1075bc3d5698SJohn Baldwin	movl	16(%esi),%ecx
1076bc3d5698SJohn Baldwin	movl	16(%edi),%edx
1077bc3d5698SJohn Baldwin	subl	%eax,%ecx
1078bc3d5698SJohn Baldwin	movl	$0,%eax
1079bc3d5698SJohn Baldwin	adcl	%eax,%eax
1080bc3d5698SJohn Baldwin	subl	%edx,%ecx
1081bc3d5698SJohn Baldwin	adcl	$0,%eax
1082bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
1083bc3d5698SJohn Baldwin
1084bc3d5698SJohn Baldwin	movl	20(%esi),%ecx
1085bc3d5698SJohn Baldwin	movl	20(%edi),%edx
1086bc3d5698SJohn Baldwin	subl	%eax,%ecx
1087bc3d5698SJohn Baldwin	movl	$0,%eax
1088bc3d5698SJohn Baldwin	adcl	%eax,%eax
1089bc3d5698SJohn Baldwin	subl	%edx,%ecx
1090bc3d5698SJohn Baldwin	adcl	$0,%eax
1091bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
1092bc3d5698SJohn Baldwin
1093bc3d5698SJohn Baldwin	movl	24(%esi),%ecx
1094bc3d5698SJohn Baldwin	movl	24(%edi),%edx
1095bc3d5698SJohn Baldwin	subl	%eax,%ecx
1096bc3d5698SJohn Baldwin	movl	$0,%eax
1097bc3d5698SJohn Baldwin	adcl	%eax,%eax
1098bc3d5698SJohn Baldwin	subl	%edx,%ecx
1099bc3d5698SJohn Baldwin	adcl	$0,%eax
1100bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
1101bc3d5698SJohn Baldwin
1102bc3d5698SJohn Baldwin	movl	28(%esi),%ecx
1103bc3d5698SJohn Baldwin	movl	28(%edi),%edx
1104bc3d5698SJohn Baldwin	subl	%eax,%ecx
1105bc3d5698SJohn Baldwin	movl	$0,%eax
1106bc3d5698SJohn Baldwin	adcl	%eax,%eax
1107bc3d5698SJohn Baldwin	subl	%edx,%ecx
1108bc3d5698SJohn Baldwin	adcl	$0,%eax
1109bc3d5698SJohn Baldwin	movl	%ecx,28(%ebx)
1110bc3d5698SJohn Baldwin
1111bc3d5698SJohn Baldwin	addl	$32,%esi
1112bc3d5698SJohn Baldwin	addl	$32,%edi
1113bc3d5698SJohn Baldwin	addl	$32,%ebx
1114bc3d5698SJohn Baldwin	subl	$8,%ebp
1115bc3d5698SJohn Baldwin	jnz	.L030aw_loop
1116bc3d5698SJohn Baldwin.L029aw_finish:
1117bc3d5698SJohn Baldwin	movl	32(%esp),%ebp
1118bc3d5698SJohn Baldwin	andl	$7,%ebp
1119bc3d5698SJohn Baldwin	jz	.L031aw_end
1120bc3d5698SJohn Baldwin
1121bc3d5698SJohn Baldwin	movl	(%esi),%ecx
1122bc3d5698SJohn Baldwin	movl	(%edi),%edx
1123bc3d5698SJohn Baldwin	subl	%eax,%ecx
1124bc3d5698SJohn Baldwin	movl	$0,%eax
1125bc3d5698SJohn Baldwin	adcl	%eax,%eax
1126bc3d5698SJohn Baldwin	subl	%edx,%ecx
1127bc3d5698SJohn Baldwin	adcl	$0,%eax
1128bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
1129bc3d5698SJohn Baldwin	addl	$4,%esi
1130bc3d5698SJohn Baldwin	addl	$4,%edi
1131bc3d5698SJohn Baldwin	addl	$4,%ebx
1132bc3d5698SJohn Baldwin	decl	%ebp
1133bc3d5698SJohn Baldwin	jz	.L031aw_end
1134bc3d5698SJohn Baldwin
1135bc3d5698SJohn Baldwin	movl	(%esi),%ecx
1136bc3d5698SJohn Baldwin	movl	(%edi),%edx
1137bc3d5698SJohn Baldwin	subl	%eax,%ecx
1138bc3d5698SJohn Baldwin	movl	$0,%eax
1139bc3d5698SJohn Baldwin	adcl	%eax,%eax
1140bc3d5698SJohn Baldwin	subl	%edx,%ecx
1141bc3d5698SJohn Baldwin	adcl	$0,%eax
1142bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
1143bc3d5698SJohn Baldwin	addl	$4,%esi
1144bc3d5698SJohn Baldwin	addl	$4,%edi
1145bc3d5698SJohn Baldwin	addl	$4,%ebx
1146bc3d5698SJohn Baldwin	decl	%ebp
1147bc3d5698SJohn Baldwin	jz	.L031aw_end
1148bc3d5698SJohn Baldwin
1149bc3d5698SJohn Baldwin	movl	(%esi),%ecx
1150bc3d5698SJohn Baldwin	movl	(%edi),%edx
1151bc3d5698SJohn Baldwin	subl	%eax,%ecx
1152bc3d5698SJohn Baldwin	movl	$0,%eax
1153bc3d5698SJohn Baldwin	adcl	%eax,%eax
1154bc3d5698SJohn Baldwin	subl	%edx,%ecx
1155bc3d5698SJohn Baldwin	adcl	$0,%eax
1156bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
1157bc3d5698SJohn Baldwin	addl	$4,%esi
1158bc3d5698SJohn Baldwin	addl	$4,%edi
1159bc3d5698SJohn Baldwin	addl	$4,%ebx
1160bc3d5698SJohn Baldwin	decl	%ebp
1161bc3d5698SJohn Baldwin	jz	.L031aw_end
1162bc3d5698SJohn Baldwin
1163bc3d5698SJohn Baldwin	movl	(%esi),%ecx
1164bc3d5698SJohn Baldwin	movl	(%edi),%edx
1165bc3d5698SJohn Baldwin	subl	%eax,%ecx
1166bc3d5698SJohn Baldwin	movl	$0,%eax
1167bc3d5698SJohn Baldwin	adcl	%eax,%eax
1168bc3d5698SJohn Baldwin	subl	%edx,%ecx
1169bc3d5698SJohn Baldwin	adcl	$0,%eax
1170bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
1171bc3d5698SJohn Baldwin	addl	$4,%esi
1172bc3d5698SJohn Baldwin	addl	$4,%edi
1173bc3d5698SJohn Baldwin	addl	$4,%ebx
1174bc3d5698SJohn Baldwin	decl	%ebp
1175bc3d5698SJohn Baldwin	jz	.L031aw_end
1176bc3d5698SJohn Baldwin
1177bc3d5698SJohn Baldwin	movl	(%esi),%ecx
1178bc3d5698SJohn Baldwin	movl	(%edi),%edx
1179bc3d5698SJohn Baldwin	subl	%eax,%ecx
1180bc3d5698SJohn Baldwin	movl	$0,%eax
1181bc3d5698SJohn Baldwin	adcl	%eax,%eax
1182bc3d5698SJohn Baldwin	subl	%edx,%ecx
1183bc3d5698SJohn Baldwin	adcl	$0,%eax
1184bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
1185bc3d5698SJohn Baldwin	addl	$4,%esi
1186bc3d5698SJohn Baldwin	addl	$4,%edi
1187bc3d5698SJohn Baldwin	addl	$4,%ebx
1188bc3d5698SJohn Baldwin	decl	%ebp
1189bc3d5698SJohn Baldwin	jz	.L031aw_end
1190bc3d5698SJohn Baldwin
1191bc3d5698SJohn Baldwin	movl	(%esi),%ecx
1192bc3d5698SJohn Baldwin	movl	(%edi),%edx
1193bc3d5698SJohn Baldwin	subl	%eax,%ecx
1194bc3d5698SJohn Baldwin	movl	$0,%eax
1195bc3d5698SJohn Baldwin	adcl	%eax,%eax
1196bc3d5698SJohn Baldwin	subl	%edx,%ecx
1197bc3d5698SJohn Baldwin	adcl	$0,%eax
1198bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
1199bc3d5698SJohn Baldwin	addl	$4,%esi
1200bc3d5698SJohn Baldwin	addl	$4,%edi
1201bc3d5698SJohn Baldwin	addl	$4,%ebx
1202bc3d5698SJohn Baldwin	decl	%ebp
1203bc3d5698SJohn Baldwin	jz	.L031aw_end
1204bc3d5698SJohn Baldwin
1205bc3d5698SJohn Baldwin	movl	(%esi),%ecx
1206bc3d5698SJohn Baldwin	movl	(%edi),%edx
1207bc3d5698SJohn Baldwin	subl	%eax,%ecx
1208bc3d5698SJohn Baldwin	movl	$0,%eax
1209bc3d5698SJohn Baldwin	adcl	%eax,%eax
1210bc3d5698SJohn Baldwin	subl	%edx,%ecx
1211bc3d5698SJohn Baldwin	adcl	$0,%eax
1212bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
1213bc3d5698SJohn Baldwin	addl	$4,%esi
1214bc3d5698SJohn Baldwin	addl	$4,%edi
1215bc3d5698SJohn Baldwin	addl	$4,%ebx
1216bc3d5698SJohn Baldwin.L031aw_end:
1217bc3d5698SJohn Baldwin	cmpl	$0,36(%esp)
1218bc3d5698SJohn Baldwin	je	.L032pw_end
1219bc3d5698SJohn Baldwin	movl	36(%esp),%ebp
1220bc3d5698SJohn Baldwin	cmpl	$0,%ebp
1221bc3d5698SJohn Baldwin	je	.L032pw_end
1222bc3d5698SJohn Baldwin	jge	.L033pw_pos
1223bc3d5698SJohn Baldwin
1224bc3d5698SJohn Baldwin	movl	$0,%edx
1225bc3d5698SJohn Baldwin	subl	%ebp,%edx
1226bc3d5698SJohn Baldwin	movl	%edx,%ebp
1227bc3d5698SJohn Baldwin	andl	$4294967288,%ebp
1228bc3d5698SJohn Baldwin	jz	.L034pw_neg_finish
1229bc3d5698SJohn Baldwin.L035pw_neg_loop:
1230bc3d5698SJohn Baldwin
1231bc3d5698SJohn Baldwin	movl	$0,%ecx
1232bc3d5698SJohn Baldwin	movl	(%edi),%edx
1233bc3d5698SJohn Baldwin	subl	%eax,%ecx
1234bc3d5698SJohn Baldwin	movl	$0,%eax
1235bc3d5698SJohn Baldwin	adcl	%eax,%eax
1236bc3d5698SJohn Baldwin	subl	%edx,%ecx
1237bc3d5698SJohn Baldwin	adcl	$0,%eax
1238bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
1239bc3d5698SJohn Baldwin
1240bc3d5698SJohn Baldwin	movl	$0,%ecx
1241bc3d5698SJohn Baldwin	movl	4(%edi),%edx
1242bc3d5698SJohn Baldwin	subl	%eax,%ecx
1243bc3d5698SJohn Baldwin	movl	$0,%eax
1244bc3d5698SJohn Baldwin	adcl	%eax,%eax
1245bc3d5698SJohn Baldwin	subl	%edx,%ecx
1246bc3d5698SJohn Baldwin	adcl	$0,%eax
1247bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
1248bc3d5698SJohn Baldwin
1249bc3d5698SJohn Baldwin	movl	$0,%ecx
1250bc3d5698SJohn Baldwin	movl	8(%edi),%edx
1251bc3d5698SJohn Baldwin	subl	%eax,%ecx
1252bc3d5698SJohn Baldwin	movl	$0,%eax
1253bc3d5698SJohn Baldwin	adcl	%eax,%eax
1254bc3d5698SJohn Baldwin	subl	%edx,%ecx
1255bc3d5698SJohn Baldwin	adcl	$0,%eax
1256bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
1257bc3d5698SJohn Baldwin
1258bc3d5698SJohn Baldwin	movl	$0,%ecx
1259bc3d5698SJohn Baldwin	movl	12(%edi),%edx
1260bc3d5698SJohn Baldwin	subl	%eax,%ecx
1261bc3d5698SJohn Baldwin	movl	$0,%eax
1262bc3d5698SJohn Baldwin	adcl	%eax,%eax
1263bc3d5698SJohn Baldwin	subl	%edx,%ecx
1264bc3d5698SJohn Baldwin	adcl	$0,%eax
1265bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
1266bc3d5698SJohn Baldwin
1267bc3d5698SJohn Baldwin	movl	$0,%ecx
1268bc3d5698SJohn Baldwin	movl	16(%edi),%edx
1269bc3d5698SJohn Baldwin	subl	%eax,%ecx
1270bc3d5698SJohn Baldwin	movl	$0,%eax
1271bc3d5698SJohn Baldwin	adcl	%eax,%eax
1272bc3d5698SJohn Baldwin	subl	%edx,%ecx
1273bc3d5698SJohn Baldwin	adcl	$0,%eax
1274bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
1275bc3d5698SJohn Baldwin
1276bc3d5698SJohn Baldwin	movl	$0,%ecx
1277bc3d5698SJohn Baldwin	movl	20(%edi),%edx
1278bc3d5698SJohn Baldwin	subl	%eax,%ecx
1279bc3d5698SJohn Baldwin	movl	$0,%eax
1280bc3d5698SJohn Baldwin	adcl	%eax,%eax
1281bc3d5698SJohn Baldwin	subl	%edx,%ecx
1282bc3d5698SJohn Baldwin	adcl	$0,%eax
1283bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
1284bc3d5698SJohn Baldwin
1285bc3d5698SJohn Baldwin	movl	$0,%ecx
1286bc3d5698SJohn Baldwin	movl	24(%edi),%edx
1287bc3d5698SJohn Baldwin	subl	%eax,%ecx
1288bc3d5698SJohn Baldwin	movl	$0,%eax
1289bc3d5698SJohn Baldwin	adcl	%eax,%eax
1290bc3d5698SJohn Baldwin	subl	%edx,%ecx
1291bc3d5698SJohn Baldwin	adcl	$0,%eax
1292bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
1293bc3d5698SJohn Baldwin
1294bc3d5698SJohn Baldwin	movl	$0,%ecx
1295bc3d5698SJohn Baldwin	movl	28(%edi),%edx
1296bc3d5698SJohn Baldwin	subl	%eax,%ecx
1297bc3d5698SJohn Baldwin	movl	$0,%eax
1298bc3d5698SJohn Baldwin	adcl	%eax,%eax
1299bc3d5698SJohn Baldwin	subl	%edx,%ecx
1300bc3d5698SJohn Baldwin	adcl	$0,%eax
1301bc3d5698SJohn Baldwin	movl	%ecx,28(%ebx)
1302bc3d5698SJohn Baldwin
1303bc3d5698SJohn Baldwin	addl	$32,%edi
1304bc3d5698SJohn Baldwin	addl	$32,%ebx
1305bc3d5698SJohn Baldwin	subl	$8,%ebp
1306bc3d5698SJohn Baldwin	jnz	.L035pw_neg_loop
1307bc3d5698SJohn Baldwin.L034pw_neg_finish:
1308bc3d5698SJohn Baldwin	movl	36(%esp),%edx
1309bc3d5698SJohn Baldwin	movl	$0,%ebp
1310bc3d5698SJohn Baldwin	subl	%edx,%ebp
1311bc3d5698SJohn Baldwin	andl	$7,%ebp
1312bc3d5698SJohn Baldwin	jz	.L032pw_end
1313bc3d5698SJohn Baldwin
1314bc3d5698SJohn Baldwin	movl	$0,%ecx
1315bc3d5698SJohn Baldwin	movl	(%edi),%edx
1316bc3d5698SJohn Baldwin	subl	%eax,%ecx
1317bc3d5698SJohn Baldwin	movl	$0,%eax
1318bc3d5698SJohn Baldwin	adcl	%eax,%eax
1319bc3d5698SJohn Baldwin	subl	%edx,%ecx
1320bc3d5698SJohn Baldwin	adcl	$0,%eax
1321bc3d5698SJohn Baldwin	decl	%ebp
1322bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
1323bc3d5698SJohn Baldwin	jz	.L032pw_end
1324bc3d5698SJohn Baldwin
1325bc3d5698SJohn Baldwin	movl	$0,%ecx
1326bc3d5698SJohn Baldwin	movl	4(%edi),%edx
1327bc3d5698SJohn Baldwin	subl	%eax,%ecx
1328bc3d5698SJohn Baldwin	movl	$0,%eax
1329bc3d5698SJohn Baldwin	adcl	%eax,%eax
1330bc3d5698SJohn Baldwin	subl	%edx,%ecx
1331bc3d5698SJohn Baldwin	adcl	$0,%eax
1332bc3d5698SJohn Baldwin	decl	%ebp
1333bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
1334bc3d5698SJohn Baldwin	jz	.L032pw_end
1335bc3d5698SJohn Baldwin
1336bc3d5698SJohn Baldwin	movl	$0,%ecx
1337bc3d5698SJohn Baldwin	movl	8(%edi),%edx
1338bc3d5698SJohn Baldwin	subl	%eax,%ecx
1339bc3d5698SJohn Baldwin	movl	$0,%eax
1340bc3d5698SJohn Baldwin	adcl	%eax,%eax
1341bc3d5698SJohn Baldwin	subl	%edx,%ecx
1342bc3d5698SJohn Baldwin	adcl	$0,%eax
1343bc3d5698SJohn Baldwin	decl	%ebp
1344bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
1345bc3d5698SJohn Baldwin	jz	.L032pw_end
1346bc3d5698SJohn Baldwin
1347bc3d5698SJohn Baldwin	movl	$0,%ecx
1348bc3d5698SJohn Baldwin	movl	12(%edi),%edx
1349bc3d5698SJohn Baldwin	subl	%eax,%ecx
1350bc3d5698SJohn Baldwin	movl	$0,%eax
1351bc3d5698SJohn Baldwin	adcl	%eax,%eax
1352bc3d5698SJohn Baldwin	subl	%edx,%ecx
1353bc3d5698SJohn Baldwin	adcl	$0,%eax
1354bc3d5698SJohn Baldwin	decl	%ebp
1355bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
1356bc3d5698SJohn Baldwin	jz	.L032pw_end
1357bc3d5698SJohn Baldwin
1358bc3d5698SJohn Baldwin	movl	$0,%ecx
1359bc3d5698SJohn Baldwin	movl	16(%edi),%edx
1360bc3d5698SJohn Baldwin	subl	%eax,%ecx
1361bc3d5698SJohn Baldwin	movl	$0,%eax
1362bc3d5698SJohn Baldwin	adcl	%eax,%eax
1363bc3d5698SJohn Baldwin	subl	%edx,%ecx
1364bc3d5698SJohn Baldwin	adcl	$0,%eax
1365bc3d5698SJohn Baldwin	decl	%ebp
1366bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
1367bc3d5698SJohn Baldwin	jz	.L032pw_end
1368bc3d5698SJohn Baldwin
1369bc3d5698SJohn Baldwin	movl	$0,%ecx
1370bc3d5698SJohn Baldwin	movl	20(%edi),%edx
1371bc3d5698SJohn Baldwin	subl	%eax,%ecx
1372bc3d5698SJohn Baldwin	movl	$0,%eax
1373bc3d5698SJohn Baldwin	adcl	%eax,%eax
1374bc3d5698SJohn Baldwin	subl	%edx,%ecx
1375bc3d5698SJohn Baldwin	adcl	$0,%eax
1376bc3d5698SJohn Baldwin	decl	%ebp
1377bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
1378bc3d5698SJohn Baldwin	jz	.L032pw_end
1379bc3d5698SJohn Baldwin
1380bc3d5698SJohn Baldwin	movl	$0,%ecx
1381bc3d5698SJohn Baldwin	movl	24(%edi),%edx
1382bc3d5698SJohn Baldwin	subl	%eax,%ecx
1383bc3d5698SJohn Baldwin	movl	$0,%eax
1384bc3d5698SJohn Baldwin	adcl	%eax,%eax
1385bc3d5698SJohn Baldwin	subl	%edx,%ecx
1386bc3d5698SJohn Baldwin	adcl	$0,%eax
1387bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
1388bc3d5698SJohn Baldwin	jmp	.L032pw_end
1389bc3d5698SJohn Baldwin.L033pw_pos:
1390bc3d5698SJohn Baldwin	andl	$4294967288,%ebp
1391bc3d5698SJohn Baldwin	jz	.L036pw_pos_finish
1392bc3d5698SJohn Baldwin.L037pw_pos_loop:
1393bc3d5698SJohn Baldwin
1394bc3d5698SJohn Baldwin	movl	(%esi),%ecx
1395bc3d5698SJohn Baldwin	subl	%eax,%ecx
1396bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
1397bc3d5698SJohn Baldwin	jnc	.L038pw_nc0
1398bc3d5698SJohn Baldwin
1399bc3d5698SJohn Baldwin	movl	4(%esi),%ecx
1400bc3d5698SJohn Baldwin	subl	%eax,%ecx
1401bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
1402bc3d5698SJohn Baldwin	jnc	.L039pw_nc1
1403bc3d5698SJohn Baldwin
1404bc3d5698SJohn Baldwin	movl	8(%esi),%ecx
1405bc3d5698SJohn Baldwin	subl	%eax,%ecx
1406bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
1407bc3d5698SJohn Baldwin	jnc	.L040pw_nc2
1408bc3d5698SJohn Baldwin
1409bc3d5698SJohn Baldwin	movl	12(%esi),%ecx
1410bc3d5698SJohn Baldwin	subl	%eax,%ecx
1411bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
1412bc3d5698SJohn Baldwin	jnc	.L041pw_nc3
1413bc3d5698SJohn Baldwin
1414bc3d5698SJohn Baldwin	movl	16(%esi),%ecx
1415bc3d5698SJohn Baldwin	subl	%eax,%ecx
1416bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
1417bc3d5698SJohn Baldwin	jnc	.L042pw_nc4
1418bc3d5698SJohn Baldwin
1419bc3d5698SJohn Baldwin	movl	20(%esi),%ecx
1420bc3d5698SJohn Baldwin	subl	%eax,%ecx
1421bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
1422bc3d5698SJohn Baldwin	jnc	.L043pw_nc5
1423bc3d5698SJohn Baldwin
1424bc3d5698SJohn Baldwin	movl	24(%esi),%ecx
1425bc3d5698SJohn Baldwin	subl	%eax,%ecx
1426bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
1427bc3d5698SJohn Baldwin	jnc	.L044pw_nc6
1428bc3d5698SJohn Baldwin
1429bc3d5698SJohn Baldwin	movl	28(%esi),%ecx
1430bc3d5698SJohn Baldwin	subl	%eax,%ecx
1431bc3d5698SJohn Baldwin	movl	%ecx,28(%ebx)
1432bc3d5698SJohn Baldwin	jnc	.L045pw_nc7
1433bc3d5698SJohn Baldwin
1434bc3d5698SJohn Baldwin	addl	$32,%esi
1435bc3d5698SJohn Baldwin	addl	$32,%ebx
1436bc3d5698SJohn Baldwin	subl	$8,%ebp
1437bc3d5698SJohn Baldwin	jnz	.L037pw_pos_loop
1438bc3d5698SJohn Baldwin.L036pw_pos_finish:
1439bc3d5698SJohn Baldwin	movl	36(%esp),%ebp
1440bc3d5698SJohn Baldwin	andl	$7,%ebp
1441bc3d5698SJohn Baldwin	jz	.L032pw_end
1442bc3d5698SJohn Baldwin
1443bc3d5698SJohn Baldwin	movl	(%esi),%ecx
1444bc3d5698SJohn Baldwin	subl	%eax,%ecx
1445bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
1446bc3d5698SJohn Baldwin	jnc	.L046pw_tail_nc0
1447bc3d5698SJohn Baldwin	decl	%ebp
1448bc3d5698SJohn Baldwin	jz	.L032pw_end
1449bc3d5698SJohn Baldwin
1450bc3d5698SJohn Baldwin	movl	4(%esi),%ecx
1451bc3d5698SJohn Baldwin	subl	%eax,%ecx
1452bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
1453bc3d5698SJohn Baldwin	jnc	.L047pw_tail_nc1
1454bc3d5698SJohn Baldwin	decl	%ebp
1455bc3d5698SJohn Baldwin	jz	.L032pw_end
1456bc3d5698SJohn Baldwin
1457bc3d5698SJohn Baldwin	movl	8(%esi),%ecx
1458bc3d5698SJohn Baldwin	subl	%eax,%ecx
1459bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
1460bc3d5698SJohn Baldwin	jnc	.L048pw_tail_nc2
1461bc3d5698SJohn Baldwin	decl	%ebp
1462bc3d5698SJohn Baldwin	jz	.L032pw_end
1463bc3d5698SJohn Baldwin
1464bc3d5698SJohn Baldwin	movl	12(%esi),%ecx
1465bc3d5698SJohn Baldwin	subl	%eax,%ecx
1466bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
1467bc3d5698SJohn Baldwin	jnc	.L049pw_tail_nc3
1468bc3d5698SJohn Baldwin	decl	%ebp
1469bc3d5698SJohn Baldwin	jz	.L032pw_end
1470bc3d5698SJohn Baldwin
1471bc3d5698SJohn Baldwin	movl	16(%esi),%ecx
1472bc3d5698SJohn Baldwin	subl	%eax,%ecx
1473bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
1474bc3d5698SJohn Baldwin	jnc	.L050pw_tail_nc4
1475bc3d5698SJohn Baldwin	decl	%ebp
1476bc3d5698SJohn Baldwin	jz	.L032pw_end
1477bc3d5698SJohn Baldwin
1478bc3d5698SJohn Baldwin	movl	20(%esi),%ecx
1479bc3d5698SJohn Baldwin	subl	%eax,%ecx
1480bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
1481bc3d5698SJohn Baldwin	jnc	.L051pw_tail_nc5
1482bc3d5698SJohn Baldwin	decl	%ebp
1483bc3d5698SJohn Baldwin	jz	.L032pw_end
1484bc3d5698SJohn Baldwin
1485bc3d5698SJohn Baldwin	movl	24(%esi),%ecx
1486bc3d5698SJohn Baldwin	subl	%eax,%ecx
1487bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
1488bc3d5698SJohn Baldwin	jnc	.L052pw_tail_nc6
1489bc3d5698SJohn Baldwin	movl	$1,%eax
1490bc3d5698SJohn Baldwin	jmp	.L032pw_end
1491bc3d5698SJohn Baldwin.L053pw_nc_loop:
1492bc3d5698SJohn Baldwin	movl	(%esi),%ecx
1493bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
1494bc3d5698SJohn Baldwin.L038pw_nc0:
1495bc3d5698SJohn Baldwin	movl	4(%esi),%ecx
1496bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
1497bc3d5698SJohn Baldwin.L039pw_nc1:
1498bc3d5698SJohn Baldwin	movl	8(%esi),%ecx
1499bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
1500bc3d5698SJohn Baldwin.L040pw_nc2:
1501bc3d5698SJohn Baldwin	movl	12(%esi),%ecx
1502bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
1503bc3d5698SJohn Baldwin.L041pw_nc3:
1504bc3d5698SJohn Baldwin	movl	16(%esi),%ecx
1505bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
1506bc3d5698SJohn Baldwin.L042pw_nc4:
1507bc3d5698SJohn Baldwin	movl	20(%esi),%ecx
1508bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
1509bc3d5698SJohn Baldwin.L043pw_nc5:
1510bc3d5698SJohn Baldwin	movl	24(%esi),%ecx
1511bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
1512bc3d5698SJohn Baldwin.L044pw_nc6:
1513bc3d5698SJohn Baldwin	movl	28(%esi),%ecx
1514bc3d5698SJohn Baldwin	movl	%ecx,28(%ebx)
1515bc3d5698SJohn Baldwin.L045pw_nc7:
1516bc3d5698SJohn Baldwin
1517bc3d5698SJohn Baldwin	addl	$32,%esi
1518bc3d5698SJohn Baldwin	addl	$32,%ebx
1519bc3d5698SJohn Baldwin	subl	$8,%ebp
1520bc3d5698SJohn Baldwin	jnz	.L053pw_nc_loop
1521bc3d5698SJohn Baldwin	movl	36(%esp),%ebp
1522bc3d5698SJohn Baldwin	andl	$7,%ebp
1523bc3d5698SJohn Baldwin	jz	.L054pw_nc_end
1524bc3d5698SJohn Baldwin	movl	(%esi),%ecx
1525bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
1526bc3d5698SJohn Baldwin.L046pw_tail_nc0:
1527bc3d5698SJohn Baldwin	decl	%ebp
1528bc3d5698SJohn Baldwin	jz	.L054pw_nc_end
1529bc3d5698SJohn Baldwin	movl	4(%esi),%ecx
1530bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
1531bc3d5698SJohn Baldwin.L047pw_tail_nc1:
1532bc3d5698SJohn Baldwin	decl	%ebp
1533bc3d5698SJohn Baldwin	jz	.L054pw_nc_end
1534bc3d5698SJohn Baldwin	movl	8(%esi),%ecx
1535bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
1536bc3d5698SJohn Baldwin.L048pw_tail_nc2:
1537bc3d5698SJohn Baldwin	decl	%ebp
1538bc3d5698SJohn Baldwin	jz	.L054pw_nc_end
1539bc3d5698SJohn Baldwin	movl	12(%esi),%ecx
1540bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
1541bc3d5698SJohn Baldwin.L049pw_tail_nc3:
1542bc3d5698SJohn Baldwin	decl	%ebp
1543bc3d5698SJohn Baldwin	jz	.L054pw_nc_end
1544bc3d5698SJohn Baldwin	movl	16(%esi),%ecx
1545bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
1546bc3d5698SJohn Baldwin.L050pw_tail_nc4:
1547bc3d5698SJohn Baldwin	decl	%ebp
1548bc3d5698SJohn Baldwin	jz	.L054pw_nc_end
1549bc3d5698SJohn Baldwin	movl	20(%esi),%ecx
1550bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
1551bc3d5698SJohn Baldwin.L051pw_tail_nc5:
1552bc3d5698SJohn Baldwin	decl	%ebp
1553bc3d5698SJohn Baldwin	jz	.L054pw_nc_end
1554bc3d5698SJohn Baldwin	movl	24(%esi),%ecx
1555bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
1556bc3d5698SJohn Baldwin.L052pw_tail_nc6:
1557bc3d5698SJohn Baldwin.L054pw_nc_end:
1558bc3d5698SJohn Baldwin	movl	$0,%eax
1559bc3d5698SJohn Baldwin.L032pw_end:
1560bc3d5698SJohn Baldwin	popl	%edi
1561bc3d5698SJohn Baldwin	popl	%esi
1562bc3d5698SJohn Baldwin	popl	%ebx
1563bc3d5698SJohn Baldwin	popl	%ebp
1564bc3d5698SJohn Baldwin	ret
1565bc3d5698SJohn Baldwin.size	bn_sub_part_words,.-.L_bn_sub_part_words_begin
1566bc3d5698SJohn Baldwin.comm	OPENSSL_ia32cap_P,16,4
1567*c0855eaaSJohn Baldwin
1568*c0855eaaSJohn Baldwin	.section ".note.gnu.property", "a"
1569*c0855eaaSJohn Baldwin	.p2align 2
1570*c0855eaaSJohn Baldwin	.long 1f - 0f
1571*c0855eaaSJohn Baldwin	.long 4f - 1f
1572*c0855eaaSJohn Baldwin	.long 5
1573*c0855eaaSJohn Baldwin0:
1574*c0855eaaSJohn Baldwin	.asciz "GNU"
1575*c0855eaaSJohn Baldwin1:
1576*c0855eaaSJohn Baldwin	.p2align 2
1577*c0855eaaSJohn Baldwin	.long 0xc0000002
1578*c0855eaaSJohn Baldwin	.long 3f - 2f
1579*c0855eaaSJohn Baldwin2:
1580*c0855eaaSJohn Baldwin	.long 3
1581*c0855eaaSJohn Baldwin3:
1582*c0855eaaSJohn Baldwin	.p2align 2
1583*c0855eaaSJohn Baldwin4:
1584bc3d5698SJohn Baldwin#else
1585bc3d5698SJohn Baldwin.text
1586bc3d5698SJohn Baldwin.globl	bn_mul_add_words
1587bc3d5698SJohn Baldwin.type	bn_mul_add_words,@function
1588bc3d5698SJohn Baldwin.align	16
1589bc3d5698SJohn Baldwinbn_mul_add_words:
1590bc3d5698SJohn Baldwin.L_bn_mul_add_words_begin:
1591*c0855eaaSJohn Baldwin	#ifdef __CET__
1592*c0855eaaSJohn Baldwin
1593*c0855eaaSJohn Baldwin.byte	243,15,30,251
1594*c0855eaaSJohn Baldwin	#endif
1595*c0855eaaSJohn Baldwin
1596bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P,%eax
1597bc3d5698SJohn Baldwin	btl	$26,(%eax)
1598bc3d5698SJohn Baldwin	jnc	.L000maw_non_sse2
1599bc3d5698SJohn Baldwin	movl	4(%esp),%eax
1600bc3d5698SJohn Baldwin	movl	8(%esp),%edx
1601bc3d5698SJohn Baldwin	movl	12(%esp),%ecx
1602bc3d5698SJohn Baldwin	movd	16(%esp),%mm0
1603bc3d5698SJohn Baldwin	pxor	%mm1,%mm1
1604bc3d5698SJohn Baldwin	jmp	.L001maw_sse2_entry
1605bc3d5698SJohn Baldwin.align	16
1606bc3d5698SJohn Baldwin.L002maw_sse2_unrolled:
1607bc3d5698SJohn Baldwin	movd	(%eax),%mm3
1608bc3d5698SJohn Baldwin	paddq	%mm3,%mm1
1609bc3d5698SJohn Baldwin	movd	(%edx),%mm2
1610bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm2
1611bc3d5698SJohn Baldwin	movd	4(%edx),%mm4
1612bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm4
1613bc3d5698SJohn Baldwin	movd	8(%edx),%mm6
1614bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm6
1615bc3d5698SJohn Baldwin	movd	12(%edx),%mm7
1616bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm7
1617bc3d5698SJohn Baldwin	paddq	%mm2,%mm1
1618bc3d5698SJohn Baldwin	movd	4(%eax),%mm3
1619bc3d5698SJohn Baldwin	paddq	%mm4,%mm3
1620bc3d5698SJohn Baldwin	movd	8(%eax),%mm5
1621bc3d5698SJohn Baldwin	paddq	%mm6,%mm5
1622bc3d5698SJohn Baldwin	movd	12(%eax),%mm4
1623bc3d5698SJohn Baldwin	paddq	%mm4,%mm7
1624bc3d5698SJohn Baldwin	movd	%mm1,(%eax)
1625bc3d5698SJohn Baldwin	movd	16(%edx),%mm2
1626bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm2
1627bc3d5698SJohn Baldwin	psrlq	$32,%mm1
1628bc3d5698SJohn Baldwin	movd	20(%edx),%mm4
1629bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm4
1630bc3d5698SJohn Baldwin	paddq	%mm3,%mm1
1631bc3d5698SJohn Baldwin	movd	24(%edx),%mm6
1632bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm6
1633bc3d5698SJohn Baldwin	movd	%mm1,4(%eax)
1634bc3d5698SJohn Baldwin	psrlq	$32,%mm1
1635bc3d5698SJohn Baldwin	movd	28(%edx),%mm3
1636bc3d5698SJohn Baldwin	addl	$32,%edx
1637bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm3
1638bc3d5698SJohn Baldwin	paddq	%mm5,%mm1
1639bc3d5698SJohn Baldwin	movd	16(%eax),%mm5
1640bc3d5698SJohn Baldwin	paddq	%mm5,%mm2
1641bc3d5698SJohn Baldwin	movd	%mm1,8(%eax)
1642bc3d5698SJohn Baldwin	psrlq	$32,%mm1
1643bc3d5698SJohn Baldwin	paddq	%mm7,%mm1
1644bc3d5698SJohn Baldwin	movd	20(%eax),%mm5
1645bc3d5698SJohn Baldwin	paddq	%mm5,%mm4
1646bc3d5698SJohn Baldwin	movd	%mm1,12(%eax)
1647bc3d5698SJohn Baldwin	psrlq	$32,%mm1
1648bc3d5698SJohn Baldwin	paddq	%mm2,%mm1
1649bc3d5698SJohn Baldwin	movd	24(%eax),%mm5
1650bc3d5698SJohn Baldwin	paddq	%mm5,%mm6
1651bc3d5698SJohn Baldwin	movd	%mm1,16(%eax)
1652bc3d5698SJohn Baldwin	psrlq	$32,%mm1
1653bc3d5698SJohn Baldwin	paddq	%mm4,%mm1
1654bc3d5698SJohn Baldwin	movd	28(%eax),%mm5
1655bc3d5698SJohn Baldwin	paddq	%mm5,%mm3
1656bc3d5698SJohn Baldwin	movd	%mm1,20(%eax)
1657bc3d5698SJohn Baldwin	psrlq	$32,%mm1
1658bc3d5698SJohn Baldwin	paddq	%mm6,%mm1
1659bc3d5698SJohn Baldwin	movd	%mm1,24(%eax)
1660bc3d5698SJohn Baldwin	psrlq	$32,%mm1
1661bc3d5698SJohn Baldwin	paddq	%mm3,%mm1
1662bc3d5698SJohn Baldwin	movd	%mm1,28(%eax)
1663bc3d5698SJohn Baldwin	leal	32(%eax),%eax
1664bc3d5698SJohn Baldwin	psrlq	$32,%mm1
1665bc3d5698SJohn Baldwin	subl	$8,%ecx
1666bc3d5698SJohn Baldwin	jz	.L003maw_sse2_exit
1667bc3d5698SJohn Baldwin.L001maw_sse2_entry:
1668bc3d5698SJohn Baldwin	testl	$4294967288,%ecx
1669bc3d5698SJohn Baldwin	jnz	.L002maw_sse2_unrolled
1670bc3d5698SJohn Baldwin.align	4
1671bc3d5698SJohn Baldwin.L004maw_sse2_loop:
1672bc3d5698SJohn Baldwin	movd	(%edx),%mm2
1673bc3d5698SJohn Baldwin	movd	(%eax),%mm3
1674bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm2
1675bc3d5698SJohn Baldwin	leal	4(%edx),%edx
1676bc3d5698SJohn Baldwin	paddq	%mm3,%mm1
1677bc3d5698SJohn Baldwin	paddq	%mm2,%mm1
1678bc3d5698SJohn Baldwin	movd	%mm1,(%eax)
1679bc3d5698SJohn Baldwin	subl	$1,%ecx
1680bc3d5698SJohn Baldwin	psrlq	$32,%mm1
1681bc3d5698SJohn Baldwin	leal	4(%eax),%eax
1682bc3d5698SJohn Baldwin	jnz	.L004maw_sse2_loop
1683bc3d5698SJohn Baldwin.L003maw_sse2_exit:
1684bc3d5698SJohn Baldwin	movd	%mm1,%eax
1685bc3d5698SJohn Baldwin	emms
1686bc3d5698SJohn Baldwin	ret
1687bc3d5698SJohn Baldwin.align	16
1688bc3d5698SJohn Baldwin.L000maw_non_sse2:
1689bc3d5698SJohn Baldwin	pushl	%ebp
1690bc3d5698SJohn Baldwin	pushl	%ebx
1691bc3d5698SJohn Baldwin	pushl	%esi
1692bc3d5698SJohn Baldwin	pushl	%edi
1693bc3d5698SJohn Baldwin
1694bc3d5698SJohn Baldwin	xorl	%esi,%esi
1695bc3d5698SJohn Baldwin	movl	20(%esp),%edi
1696bc3d5698SJohn Baldwin	movl	28(%esp),%ecx
1697bc3d5698SJohn Baldwin	movl	24(%esp),%ebx
1698bc3d5698SJohn Baldwin	andl	$4294967288,%ecx
1699bc3d5698SJohn Baldwin	movl	32(%esp),%ebp
1700bc3d5698SJohn Baldwin	pushl	%ecx
1701bc3d5698SJohn Baldwin	jz	.L005maw_finish
1702bc3d5698SJohn Baldwin.align	16
1703bc3d5698SJohn Baldwin.L006maw_loop:
1704bc3d5698SJohn Baldwin
1705bc3d5698SJohn Baldwin	movl	(%ebx),%eax
1706bc3d5698SJohn Baldwin	mull	%ebp
1707bc3d5698SJohn Baldwin	addl	%esi,%eax
1708bc3d5698SJohn Baldwin	adcl	$0,%edx
1709bc3d5698SJohn Baldwin	addl	(%edi),%eax
1710bc3d5698SJohn Baldwin	adcl	$0,%edx
1711bc3d5698SJohn Baldwin	movl	%eax,(%edi)
1712bc3d5698SJohn Baldwin	movl	%edx,%esi
1713bc3d5698SJohn Baldwin
1714bc3d5698SJohn Baldwin	movl	4(%ebx),%eax
1715bc3d5698SJohn Baldwin	mull	%ebp
1716bc3d5698SJohn Baldwin	addl	%esi,%eax
1717bc3d5698SJohn Baldwin	adcl	$0,%edx
1718bc3d5698SJohn Baldwin	addl	4(%edi),%eax
1719bc3d5698SJohn Baldwin	adcl	$0,%edx
1720bc3d5698SJohn Baldwin	movl	%eax,4(%edi)
1721bc3d5698SJohn Baldwin	movl	%edx,%esi
1722bc3d5698SJohn Baldwin
1723bc3d5698SJohn Baldwin	movl	8(%ebx),%eax
1724bc3d5698SJohn Baldwin	mull	%ebp
1725bc3d5698SJohn Baldwin	addl	%esi,%eax
1726bc3d5698SJohn Baldwin	adcl	$0,%edx
1727bc3d5698SJohn Baldwin	addl	8(%edi),%eax
1728bc3d5698SJohn Baldwin	adcl	$0,%edx
1729bc3d5698SJohn Baldwin	movl	%eax,8(%edi)
1730bc3d5698SJohn Baldwin	movl	%edx,%esi
1731bc3d5698SJohn Baldwin
1732bc3d5698SJohn Baldwin	movl	12(%ebx),%eax
1733bc3d5698SJohn Baldwin	mull	%ebp
1734bc3d5698SJohn Baldwin	addl	%esi,%eax
1735bc3d5698SJohn Baldwin	adcl	$0,%edx
1736bc3d5698SJohn Baldwin	addl	12(%edi),%eax
1737bc3d5698SJohn Baldwin	adcl	$0,%edx
1738bc3d5698SJohn Baldwin	movl	%eax,12(%edi)
1739bc3d5698SJohn Baldwin	movl	%edx,%esi
1740bc3d5698SJohn Baldwin
1741bc3d5698SJohn Baldwin	movl	16(%ebx),%eax
1742bc3d5698SJohn Baldwin	mull	%ebp
1743bc3d5698SJohn Baldwin	addl	%esi,%eax
1744bc3d5698SJohn Baldwin	adcl	$0,%edx
1745bc3d5698SJohn Baldwin	addl	16(%edi),%eax
1746bc3d5698SJohn Baldwin	adcl	$0,%edx
1747bc3d5698SJohn Baldwin	movl	%eax,16(%edi)
1748bc3d5698SJohn Baldwin	movl	%edx,%esi
1749bc3d5698SJohn Baldwin
1750bc3d5698SJohn Baldwin	movl	20(%ebx),%eax
1751bc3d5698SJohn Baldwin	mull	%ebp
1752bc3d5698SJohn Baldwin	addl	%esi,%eax
1753bc3d5698SJohn Baldwin	adcl	$0,%edx
1754bc3d5698SJohn Baldwin	addl	20(%edi),%eax
1755bc3d5698SJohn Baldwin	adcl	$0,%edx
1756bc3d5698SJohn Baldwin	movl	%eax,20(%edi)
1757bc3d5698SJohn Baldwin	movl	%edx,%esi
1758bc3d5698SJohn Baldwin
1759bc3d5698SJohn Baldwin	movl	24(%ebx),%eax
1760bc3d5698SJohn Baldwin	mull	%ebp
1761bc3d5698SJohn Baldwin	addl	%esi,%eax
1762bc3d5698SJohn Baldwin	adcl	$0,%edx
1763bc3d5698SJohn Baldwin	addl	24(%edi),%eax
1764bc3d5698SJohn Baldwin	adcl	$0,%edx
1765bc3d5698SJohn Baldwin	movl	%eax,24(%edi)
1766bc3d5698SJohn Baldwin	movl	%edx,%esi
1767bc3d5698SJohn Baldwin
1768bc3d5698SJohn Baldwin	movl	28(%ebx),%eax
1769bc3d5698SJohn Baldwin	mull	%ebp
1770bc3d5698SJohn Baldwin	addl	%esi,%eax
1771bc3d5698SJohn Baldwin	adcl	$0,%edx
1772bc3d5698SJohn Baldwin	addl	28(%edi),%eax
1773bc3d5698SJohn Baldwin	adcl	$0,%edx
1774bc3d5698SJohn Baldwin	movl	%eax,28(%edi)
1775bc3d5698SJohn Baldwin	movl	%edx,%esi
1776bc3d5698SJohn Baldwin
1777bc3d5698SJohn Baldwin	subl	$8,%ecx
1778bc3d5698SJohn Baldwin	leal	32(%ebx),%ebx
1779bc3d5698SJohn Baldwin	leal	32(%edi),%edi
1780bc3d5698SJohn Baldwin	jnz	.L006maw_loop
1781bc3d5698SJohn Baldwin.L005maw_finish:
1782bc3d5698SJohn Baldwin	movl	32(%esp),%ecx
1783bc3d5698SJohn Baldwin	andl	$7,%ecx
1784bc3d5698SJohn Baldwin	jnz	.L007maw_finish2
1785bc3d5698SJohn Baldwin	jmp	.L008maw_end
1786bc3d5698SJohn Baldwin.L007maw_finish2:
1787bc3d5698SJohn Baldwin
1788bc3d5698SJohn Baldwin	movl	(%ebx),%eax
1789bc3d5698SJohn Baldwin	mull	%ebp
1790bc3d5698SJohn Baldwin	addl	%esi,%eax
1791bc3d5698SJohn Baldwin	adcl	$0,%edx
1792bc3d5698SJohn Baldwin	addl	(%edi),%eax
1793bc3d5698SJohn Baldwin	adcl	$0,%edx
1794bc3d5698SJohn Baldwin	decl	%ecx
1795bc3d5698SJohn Baldwin	movl	%eax,(%edi)
1796bc3d5698SJohn Baldwin	movl	%edx,%esi
1797bc3d5698SJohn Baldwin	jz	.L008maw_end
1798bc3d5698SJohn Baldwin
1799bc3d5698SJohn Baldwin	movl	4(%ebx),%eax
1800bc3d5698SJohn Baldwin	mull	%ebp
1801bc3d5698SJohn Baldwin	addl	%esi,%eax
1802bc3d5698SJohn Baldwin	adcl	$0,%edx
1803bc3d5698SJohn Baldwin	addl	4(%edi),%eax
1804bc3d5698SJohn Baldwin	adcl	$0,%edx
1805bc3d5698SJohn Baldwin	decl	%ecx
1806bc3d5698SJohn Baldwin	movl	%eax,4(%edi)
1807bc3d5698SJohn Baldwin	movl	%edx,%esi
1808bc3d5698SJohn Baldwin	jz	.L008maw_end
1809bc3d5698SJohn Baldwin
1810bc3d5698SJohn Baldwin	movl	8(%ebx),%eax
1811bc3d5698SJohn Baldwin	mull	%ebp
1812bc3d5698SJohn Baldwin	addl	%esi,%eax
1813bc3d5698SJohn Baldwin	adcl	$0,%edx
1814bc3d5698SJohn Baldwin	addl	8(%edi),%eax
1815bc3d5698SJohn Baldwin	adcl	$0,%edx
1816bc3d5698SJohn Baldwin	decl	%ecx
1817bc3d5698SJohn Baldwin	movl	%eax,8(%edi)
1818bc3d5698SJohn Baldwin	movl	%edx,%esi
1819bc3d5698SJohn Baldwin	jz	.L008maw_end
1820bc3d5698SJohn Baldwin
1821bc3d5698SJohn Baldwin	movl	12(%ebx),%eax
1822bc3d5698SJohn Baldwin	mull	%ebp
1823bc3d5698SJohn Baldwin	addl	%esi,%eax
1824bc3d5698SJohn Baldwin	adcl	$0,%edx
1825bc3d5698SJohn Baldwin	addl	12(%edi),%eax
1826bc3d5698SJohn Baldwin	adcl	$0,%edx
1827bc3d5698SJohn Baldwin	decl	%ecx
1828bc3d5698SJohn Baldwin	movl	%eax,12(%edi)
1829bc3d5698SJohn Baldwin	movl	%edx,%esi
1830bc3d5698SJohn Baldwin	jz	.L008maw_end
1831bc3d5698SJohn Baldwin
1832bc3d5698SJohn Baldwin	movl	16(%ebx),%eax
1833bc3d5698SJohn Baldwin	mull	%ebp
1834bc3d5698SJohn Baldwin	addl	%esi,%eax
1835bc3d5698SJohn Baldwin	adcl	$0,%edx
1836bc3d5698SJohn Baldwin	addl	16(%edi),%eax
1837bc3d5698SJohn Baldwin	adcl	$0,%edx
1838bc3d5698SJohn Baldwin	decl	%ecx
1839bc3d5698SJohn Baldwin	movl	%eax,16(%edi)
1840bc3d5698SJohn Baldwin	movl	%edx,%esi
1841bc3d5698SJohn Baldwin	jz	.L008maw_end
1842bc3d5698SJohn Baldwin
1843bc3d5698SJohn Baldwin	movl	20(%ebx),%eax
1844bc3d5698SJohn Baldwin	mull	%ebp
1845bc3d5698SJohn Baldwin	addl	%esi,%eax
1846bc3d5698SJohn Baldwin	adcl	$0,%edx
1847bc3d5698SJohn Baldwin	addl	20(%edi),%eax
1848bc3d5698SJohn Baldwin	adcl	$0,%edx
1849bc3d5698SJohn Baldwin	decl	%ecx
1850bc3d5698SJohn Baldwin	movl	%eax,20(%edi)
1851bc3d5698SJohn Baldwin	movl	%edx,%esi
1852bc3d5698SJohn Baldwin	jz	.L008maw_end
1853bc3d5698SJohn Baldwin
1854bc3d5698SJohn Baldwin	movl	24(%ebx),%eax
1855bc3d5698SJohn Baldwin	mull	%ebp
1856bc3d5698SJohn Baldwin	addl	%esi,%eax
1857bc3d5698SJohn Baldwin	adcl	$0,%edx
1858bc3d5698SJohn Baldwin	addl	24(%edi),%eax
1859bc3d5698SJohn Baldwin	adcl	$0,%edx
1860bc3d5698SJohn Baldwin	movl	%eax,24(%edi)
1861bc3d5698SJohn Baldwin	movl	%edx,%esi
1862bc3d5698SJohn Baldwin.L008maw_end:
1863bc3d5698SJohn Baldwin	movl	%esi,%eax
1864bc3d5698SJohn Baldwin	popl	%ecx
1865bc3d5698SJohn Baldwin	popl	%edi
1866bc3d5698SJohn Baldwin	popl	%esi
1867bc3d5698SJohn Baldwin	popl	%ebx
1868bc3d5698SJohn Baldwin	popl	%ebp
1869bc3d5698SJohn Baldwin	ret
1870bc3d5698SJohn Baldwin.size	bn_mul_add_words,.-.L_bn_mul_add_words_begin
1871bc3d5698SJohn Baldwin.globl	bn_mul_words
1872bc3d5698SJohn Baldwin.type	bn_mul_words,@function
1873bc3d5698SJohn Baldwin.align	16
1874bc3d5698SJohn Baldwinbn_mul_words:
1875bc3d5698SJohn Baldwin.L_bn_mul_words_begin:
1876*c0855eaaSJohn Baldwin	#ifdef __CET__
1877*c0855eaaSJohn Baldwin
1878*c0855eaaSJohn Baldwin.byte	243,15,30,251
1879*c0855eaaSJohn Baldwin	#endif
1880*c0855eaaSJohn Baldwin
1881bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P,%eax
1882bc3d5698SJohn Baldwin	btl	$26,(%eax)
1883bc3d5698SJohn Baldwin	jnc	.L009mw_non_sse2
1884bc3d5698SJohn Baldwin	movl	4(%esp),%eax
1885bc3d5698SJohn Baldwin	movl	8(%esp),%edx
1886bc3d5698SJohn Baldwin	movl	12(%esp),%ecx
1887bc3d5698SJohn Baldwin	movd	16(%esp),%mm0
1888bc3d5698SJohn Baldwin	pxor	%mm1,%mm1
1889bc3d5698SJohn Baldwin.align	16
1890bc3d5698SJohn Baldwin.L010mw_sse2_loop:
1891bc3d5698SJohn Baldwin	movd	(%edx),%mm2
1892bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm2
1893bc3d5698SJohn Baldwin	leal	4(%edx),%edx
1894bc3d5698SJohn Baldwin	paddq	%mm2,%mm1
1895bc3d5698SJohn Baldwin	movd	%mm1,(%eax)
1896bc3d5698SJohn Baldwin	subl	$1,%ecx
1897bc3d5698SJohn Baldwin	psrlq	$32,%mm1
1898bc3d5698SJohn Baldwin	leal	4(%eax),%eax
1899bc3d5698SJohn Baldwin	jnz	.L010mw_sse2_loop
1900bc3d5698SJohn Baldwin	movd	%mm1,%eax
1901bc3d5698SJohn Baldwin	emms
1902bc3d5698SJohn Baldwin	ret
1903bc3d5698SJohn Baldwin.align	16
1904bc3d5698SJohn Baldwin.L009mw_non_sse2:
1905bc3d5698SJohn Baldwin	pushl	%ebp
1906bc3d5698SJohn Baldwin	pushl	%ebx
1907bc3d5698SJohn Baldwin	pushl	%esi
1908bc3d5698SJohn Baldwin	pushl	%edi
1909bc3d5698SJohn Baldwin
1910bc3d5698SJohn Baldwin	xorl	%esi,%esi
1911bc3d5698SJohn Baldwin	movl	20(%esp),%edi
1912bc3d5698SJohn Baldwin	movl	24(%esp),%ebx
1913bc3d5698SJohn Baldwin	movl	28(%esp),%ebp
1914bc3d5698SJohn Baldwin	movl	32(%esp),%ecx
1915bc3d5698SJohn Baldwin	andl	$4294967288,%ebp
1916bc3d5698SJohn Baldwin	jz	.L011mw_finish
1917bc3d5698SJohn Baldwin.L012mw_loop:
1918bc3d5698SJohn Baldwin
1919bc3d5698SJohn Baldwin	movl	(%ebx),%eax
1920bc3d5698SJohn Baldwin	mull	%ecx
1921bc3d5698SJohn Baldwin	addl	%esi,%eax
1922bc3d5698SJohn Baldwin	adcl	$0,%edx
1923bc3d5698SJohn Baldwin	movl	%eax,(%edi)
1924bc3d5698SJohn Baldwin	movl	%edx,%esi
1925bc3d5698SJohn Baldwin
1926bc3d5698SJohn Baldwin	movl	4(%ebx),%eax
1927bc3d5698SJohn Baldwin	mull	%ecx
1928bc3d5698SJohn Baldwin	addl	%esi,%eax
1929bc3d5698SJohn Baldwin	adcl	$0,%edx
1930bc3d5698SJohn Baldwin	movl	%eax,4(%edi)
1931bc3d5698SJohn Baldwin	movl	%edx,%esi
1932bc3d5698SJohn Baldwin
1933bc3d5698SJohn Baldwin	movl	8(%ebx),%eax
1934bc3d5698SJohn Baldwin	mull	%ecx
1935bc3d5698SJohn Baldwin	addl	%esi,%eax
1936bc3d5698SJohn Baldwin	adcl	$0,%edx
1937bc3d5698SJohn Baldwin	movl	%eax,8(%edi)
1938bc3d5698SJohn Baldwin	movl	%edx,%esi
1939bc3d5698SJohn Baldwin
1940bc3d5698SJohn Baldwin	movl	12(%ebx),%eax
1941bc3d5698SJohn Baldwin	mull	%ecx
1942bc3d5698SJohn Baldwin	addl	%esi,%eax
1943bc3d5698SJohn Baldwin	adcl	$0,%edx
1944bc3d5698SJohn Baldwin	movl	%eax,12(%edi)
1945bc3d5698SJohn Baldwin	movl	%edx,%esi
1946bc3d5698SJohn Baldwin
1947bc3d5698SJohn Baldwin	movl	16(%ebx),%eax
1948bc3d5698SJohn Baldwin	mull	%ecx
1949bc3d5698SJohn Baldwin	addl	%esi,%eax
1950bc3d5698SJohn Baldwin	adcl	$0,%edx
1951bc3d5698SJohn Baldwin	movl	%eax,16(%edi)
1952bc3d5698SJohn Baldwin	movl	%edx,%esi
1953bc3d5698SJohn Baldwin
1954bc3d5698SJohn Baldwin	movl	20(%ebx),%eax
1955bc3d5698SJohn Baldwin	mull	%ecx
1956bc3d5698SJohn Baldwin	addl	%esi,%eax
1957bc3d5698SJohn Baldwin	adcl	$0,%edx
1958bc3d5698SJohn Baldwin	movl	%eax,20(%edi)
1959bc3d5698SJohn Baldwin	movl	%edx,%esi
1960bc3d5698SJohn Baldwin
1961bc3d5698SJohn Baldwin	movl	24(%ebx),%eax
1962bc3d5698SJohn Baldwin	mull	%ecx
1963bc3d5698SJohn Baldwin	addl	%esi,%eax
1964bc3d5698SJohn Baldwin	adcl	$0,%edx
1965bc3d5698SJohn Baldwin	movl	%eax,24(%edi)
1966bc3d5698SJohn Baldwin	movl	%edx,%esi
1967bc3d5698SJohn Baldwin
1968bc3d5698SJohn Baldwin	movl	28(%ebx),%eax
1969bc3d5698SJohn Baldwin	mull	%ecx
1970bc3d5698SJohn Baldwin	addl	%esi,%eax
1971bc3d5698SJohn Baldwin	adcl	$0,%edx
1972bc3d5698SJohn Baldwin	movl	%eax,28(%edi)
1973bc3d5698SJohn Baldwin	movl	%edx,%esi
1974bc3d5698SJohn Baldwin
1975bc3d5698SJohn Baldwin	addl	$32,%ebx
1976bc3d5698SJohn Baldwin	addl	$32,%edi
1977bc3d5698SJohn Baldwin	subl	$8,%ebp
1978bc3d5698SJohn Baldwin	jz	.L011mw_finish
1979bc3d5698SJohn Baldwin	jmp	.L012mw_loop
1980bc3d5698SJohn Baldwin.L011mw_finish:
1981bc3d5698SJohn Baldwin	movl	28(%esp),%ebp
1982bc3d5698SJohn Baldwin	andl	$7,%ebp
1983bc3d5698SJohn Baldwin	jnz	.L013mw_finish2
1984bc3d5698SJohn Baldwin	jmp	.L014mw_end
1985bc3d5698SJohn Baldwin.L013mw_finish2:
1986bc3d5698SJohn Baldwin
1987bc3d5698SJohn Baldwin	movl	(%ebx),%eax
1988bc3d5698SJohn Baldwin	mull	%ecx
1989bc3d5698SJohn Baldwin	addl	%esi,%eax
1990bc3d5698SJohn Baldwin	adcl	$0,%edx
1991bc3d5698SJohn Baldwin	movl	%eax,(%edi)
1992bc3d5698SJohn Baldwin	movl	%edx,%esi
1993bc3d5698SJohn Baldwin	decl	%ebp
1994bc3d5698SJohn Baldwin	jz	.L014mw_end
1995bc3d5698SJohn Baldwin
1996bc3d5698SJohn Baldwin	movl	4(%ebx),%eax
1997bc3d5698SJohn Baldwin	mull	%ecx
1998bc3d5698SJohn Baldwin	addl	%esi,%eax
1999bc3d5698SJohn Baldwin	adcl	$0,%edx
2000bc3d5698SJohn Baldwin	movl	%eax,4(%edi)
2001bc3d5698SJohn Baldwin	movl	%edx,%esi
2002bc3d5698SJohn Baldwin	decl	%ebp
2003bc3d5698SJohn Baldwin	jz	.L014mw_end
2004bc3d5698SJohn Baldwin
2005bc3d5698SJohn Baldwin	movl	8(%ebx),%eax
2006bc3d5698SJohn Baldwin	mull	%ecx
2007bc3d5698SJohn Baldwin	addl	%esi,%eax
2008bc3d5698SJohn Baldwin	adcl	$0,%edx
2009bc3d5698SJohn Baldwin	movl	%eax,8(%edi)
2010bc3d5698SJohn Baldwin	movl	%edx,%esi
2011bc3d5698SJohn Baldwin	decl	%ebp
2012bc3d5698SJohn Baldwin	jz	.L014mw_end
2013bc3d5698SJohn Baldwin
2014bc3d5698SJohn Baldwin	movl	12(%ebx),%eax
2015bc3d5698SJohn Baldwin	mull	%ecx
2016bc3d5698SJohn Baldwin	addl	%esi,%eax
2017bc3d5698SJohn Baldwin	adcl	$0,%edx
2018bc3d5698SJohn Baldwin	movl	%eax,12(%edi)
2019bc3d5698SJohn Baldwin	movl	%edx,%esi
2020bc3d5698SJohn Baldwin	decl	%ebp
2021bc3d5698SJohn Baldwin	jz	.L014mw_end
2022bc3d5698SJohn Baldwin
2023bc3d5698SJohn Baldwin	movl	16(%ebx),%eax
2024bc3d5698SJohn Baldwin	mull	%ecx
2025bc3d5698SJohn Baldwin	addl	%esi,%eax
2026bc3d5698SJohn Baldwin	adcl	$0,%edx
2027bc3d5698SJohn Baldwin	movl	%eax,16(%edi)
2028bc3d5698SJohn Baldwin	movl	%edx,%esi
2029bc3d5698SJohn Baldwin	decl	%ebp
2030bc3d5698SJohn Baldwin	jz	.L014mw_end
2031bc3d5698SJohn Baldwin
2032bc3d5698SJohn Baldwin	movl	20(%ebx),%eax
2033bc3d5698SJohn Baldwin	mull	%ecx
2034bc3d5698SJohn Baldwin	addl	%esi,%eax
2035bc3d5698SJohn Baldwin	adcl	$0,%edx
2036bc3d5698SJohn Baldwin	movl	%eax,20(%edi)
2037bc3d5698SJohn Baldwin	movl	%edx,%esi
2038bc3d5698SJohn Baldwin	decl	%ebp
2039bc3d5698SJohn Baldwin	jz	.L014mw_end
2040bc3d5698SJohn Baldwin
2041bc3d5698SJohn Baldwin	movl	24(%ebx),%eax
2042bc3d5698SJohn Baldwin	mull	%ecx
2043bc3d5698SJohn Baldwin	addl	%esi,%eax
2044bc3d5698SJohn Baldwin	adcl	$0,%edx
2045bc3d5698SJohn Baldwin	movl	%eax,24(%edi)
2046bc3d5698SJohn Baldwin	movl	%edx,%esi
2047bc3d5698SJohn Baldwin.L014mw_end:
2048bc3d5698SJohn Baldwin	movl	%esi,%eax
2049bc3d5698SJohn Baldwin	popl	%edi
2050bc3d5698SJohn Baldwin	popl	%esi
2051bc3d5698SJohn Baldwin	popl	%ebx
2052bc3d5698SJohn Baldwin	popl	%ebp
2053bc3d5698SJohn Baldwin	ret
2054bc3d5698SJohn Baldwin.size	bn_mul_words,.-.L_bn_mul_words_begin
2055bc3d5698SJohn Baldwin.globl	bn_sqr_words
2056bc3d5698SJohn Baldwin.type	bn_sqr_words,@function
2057bc3d5698SJohn Baldwin.align	16
2058bc3d5698SJohn Baldwinbn_sqr_words:
2059bc3d5698SJohn Baldwin.L_bn_sqr_words_begin:
2060*c0855eaaSJohn Baldwin	#ifdef __CET__
2061*c0855eaaSJohn Baldwin
2062*c0855eaaSJohn Baldwin.byte	243,15,30,251
2063*c0855eaaSJohn Baldwin	#endif
2064*c0855eaaSJohn Baldwin
2065bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P,%eax
2066bc3d5698SJohn Baldwin	btl	$26,(%eax)
2067bc3d5698SJohn Baldwin	jnc	.L015sqr_non_sse2
2068bc3d5698SJohn Baldwin	movl	4(%esp),%eax
2069bc3d5698SJohn Baldwin	movl	8(%esp),%edx
2070bc3d5698SJohn Baldwin	movl	12(%esp),%ecx
2071bc3d5698SJohn Baldwin.align	16
2072bc3d5698SJohn Baldwin.L016sqr_sse2_loop:
2073bc3d5698SJohn Baldwin	movd	(%edx),%mm0
2074bc3d5698SJohn Baldwin	pmuludq	%mm0,%mm0
2075bc3d5698SJohn Baldwin	leal	4(%edx),%edx
2076bc3d5698SJohn Baldwin	movq	%mm0,(%eax)
2077bc3d5698SJohn Baldwin	subl	$1,%ecx
2078bc3d5698SJohn Baldwin	leal	8(%eax),%eax
2079bc3d5698SJohn Baldwin	jnz	.L016sqr_sse2_loop
2080bc3d5698SJohn Baldwin	emms
2081bc3d5698SJohn Baldwin	ret
2082bc3d5698SJohn Baldwin.align	16
2083bc3d5698SJohn Baldwin.L015sqr_non_sse2:
2084bc3d5698SJohn Baldwin	pushl	%ebp
2085bc3d5698SJohn Baldwin	pushl	%ebx
2086bc3d5698SJohn Baldwin	pushl	%esi
2087bc3d5698SJohn Baldwin	pushl	%edi
2088bc3d5698SJohn Baldwin
2089bc3d5698SJohn Baldwin	movl	20(%esp),%esi
2090bc3d5698SJohn Baldwin	movl	24(%esp),%edi
2091bc3d5698SJohn Baldwin	movl	28(%esp),%ebx
2092bc3d5698SJohn Baldwin	andl	$4294967288,%ebx
2093bc3d5698SJohn Baldwin	jz	.L017sw_finish
2094bc3d5698SJohn Baldwin.L018sw_loop:
2095bc3d5698SJohn Baldwin
2096bc3d5698SJohn Baldwin	movl	(%edi),%eax
2097bc3d5698SJohn Baldwin	mull	%eax
2098bc3d5698SJohn Baldwin	movl	%eax,(%esi)
2099bc3d5698SJohn Baldwin	movl	%edx,4(%esi)
2100bc3d5698SJohn Baldwin
2101bc3d5698SJohn Baldwin	movl	4(%edi),%eax
2102bc3d5698SJohn Baldwin	mull	%eax
2103bc3d5698SJohn Baldwin	movl	%eax,8(%esi)
2104bc3d5698SJohn Baldwin	movl	%edx,12(%esi)
2105bc3d5698SJohn Baldwin
2106bc3d5698SJohn Baldwin	movl	8(%edi),%eax
2107bc3d5698SJohn Baldwin	mull	%eax
2108bc3d5698SJohn Baldwin	movl	%eax,16(%esi)
2109bc3d5698SJohn Baldwin	movl	%edx,20(%esi)
2110bc3d5698SJohn Baldwin
2111bc3d5698SJohn Baldwin	movl	12(%edi),%eax
2112bc3d5698SJohn Baldwin	mull	%eax
2113bc3d5698SJohn Baldwin	movl	%eax,24(%esi)
2114bc3d5698SJohn Baldwin	movl	%edx,28(%esi)
2115bc3d5698SJohn Baldwin
2116bc3d5698SJohn Baldwin	movl	16(%edi),%eax
2117bc3d5698SJohn Baldwin	mull	%eax
2118bc3d5698SJohn Baldwin	movl	%eax,32(%esi)
2119bc3d5698SJohn Baldwin	movl	%edx,36(%esi)
2120bc3d5698SJohn Baldwin
2121bc3d5698SJohn Baldwin	movl	20(%edi),%eax
2122bc3d5698SJohn Baldwin	mull	%eax
2123bc3d5698SJohn Baldwin	movl	%eax,40(%esi)
2124bc3d5698SJohn Baldwin	movl	%edx,44(%esi)
2125bc3d5698SJohn Baldwin
2126bc3d5698SJohn Baldwin	movl	24(%edi),%eax
2127bc3d5698SJohn Baldwin	mull	%eax
2128bc3d5698SJohn Baldwin	movl	%eax,48(%esi)
2129bc3d5698SJohn Baldwin	movl	%edx,52(%esi)
2130bc3d5698SJohn Baldwin
2131bc3d5698SJohn Baldwin	movl	28(%edi),%eax
2132bc3d5698SJohn Baldwin	mull	%eax
2133bc3d5698SJohn Baldwin	movl	%eax,56(%esi)
2134bc3d5698SJohn Baldwin	movl	%edx,60(%esi)
2135bc3d5698SJohn Baldwin
2136bc3d5698SJohn Baldwin	addl	$32,%edi
2137bc3d5698SJohn Baldwin	addl	$64,%esi
2138bc3d5698SJohn Baldwin	subl	$8,%ebx
2139bc3d5698SJohn Baldwin	jnz	.L018sw_loop
2140bc3d5698SJohn Baldwin.L017sw_finish:
2141bc3d5698SJohn Baldwin	movl	28(%esp),%ebx
2142bc3d5698SJohn Baldwin	andl	$7,%ebx
2143bc3d5698SJohn Baldwin	jz	.L019sw_end
2144bc3d5698SJohn Baldwin
2145bc3d5698SJohn Baldwin	movl	(%edi),%eax
2146bc3d5698SJohn Baldwin	mull	%eax
2147bc3d5698SJohn Baldwin	movl	%eax,(%esi)
2148bc3d5698SJohn Baldwin	decl	%ebx
2149bc3d5698SJohn Baldwin	movl	%edx,4(%esi)
2150bc3d5698SJohn Baldwin	jz	.L019sw_end
2151bc3d5698SJohn Baldwin
2152bc3d5698SJohn Baldwin	movl	4(%edi),%eax
2153bc3d5698SJohn Baldwin	mull	%eax
2154bc3d5698SJohn Baldwin	movl	%eax,8(%esi)
2155bc3d5698SJohn Baldwin	decl	%ebx
2156bc3d5698SJohn Baldwin	movl	%edx,12(%esi)
2157bc3d5698SJohn Baldwin	jz	.L019sw_end
2158bc3d5698SJohn Baldwin
2159bc3d5698SJohn Baldwin	movl	8(%edi),%eax
2160bc3d5698SJohn Baldwin	mull	%eax
2161bc3d5698SJohn Baldwin	movl	%eax,16(%esi)
2162bc3d5698SJohn Baldwin	decl	%ebx
2163bc3d5698SJohn Baldwin	movl	%edx,20(%esi)
2164bc3d5698SJohn Baldwin	jz	.L019sw_end
2165bc3d5698SJohn Baldwin
2166bc3d5698SJohn Baldwin	movl	12(%edi),%eax
2167bc3d5698SJohn Baldwin	mull	%eax
2168bc3d5698SJohn Baldwin	movl	%eax,24(%esi)
2169bc3d5698SJohn Baldwin	decl	%ebx
2170bc3d5698SJohn Baldwin	movl	%edx,28(%esi)
2171bc3d5698SJohn Baldwin	jz	.L019sw_end
2172bc3d5698SJohn Baldwin
2173bc3d5698SJohn Baldwin	movl	16(%edi),%eax
2174bc3d5698SJohn Baldwin	mull	%eax
2175bc3d5698SJohn Baldwin	movl	%eax,32(%esi)
2176bc3d5698SJohn Baldwin	decl	%ebx
2177bc3d5698SJohn Baldwin	movl	%edx,36(%esi)
2178bc3d5698SJohn Baldwin	jz	.L019sw_end
2179bc3d5698SJohn Baldwin
2180bc3d5698SJohn Baldwin	movl	20(%edi),%eax
2181bc3d5698SJohn Baldwin	mull	%eax
2182bc3d5698SJohn Baldwin	movl	%eax,40(%esi)
2183bc3d5698SJohn Baldwin	decl	%ebx
2184bc3d5698SJohn Baldwin	movl	%edx,44(%esi)
2185bc3d5698SJohn Baldwin	jz	.L019sw_end
2186bc3d5698SJohn Baldwin
2187bc3d5698SJohn Baldwin	movl	24(%edi),%eax
2188bc3d5698SJohn Baldwin	mull	%eax
2189bc3d5698SJohn Baldwin	movl	%eax,48(%esi)
2190bc3d5698SJohn Baldwin	movl	%edx,52(%esi)
2191bc3d5698SJohn Baldwin.L019sw_end:
2192bc3d5698SJohn Baldwin	popl	%edi
2193bc3d5698SJohn Baldwin	popl	%esi
2194bc3d5698SJohn Baldwin	popl	%ebx
2195bc3d5698SJohn Baldwin	popl	%ebp
2196bc3d5698SJohn Baldwin	ret
2197bc3d5698SJohn Baldwin.size	bn_sqr_words,.-.L_bn_sqr_words_begin
2198bc3d5698SJohn Baldwin.globl	bn_div_words
2199bc3d5698SJohn Baldwin.type	bn_div_words,@function
2200bc3d5698SJohn Baldwin.align	16
2201bc3d5698SJohn Baldwinbn_div_words:
2202bc3d5698SJohn Baldwin.L_bn_div_words_begin:
2203*c0855eaaSJohn Baldwin	#ifdef __CET__
2204*c0855eaaSJohn Baldwin
2205*c0855eaaSJohn Baldwin.byte	243,15,30,251
2206*c0855eaaSJohn Baldwin	#endif
2207*c0855eaaSJohn Baldwin
2208bc3d5698SJohn Baldwin	movl	4(%esp),%edx
2209bc3d5698SJohn Baldwin	movl	8(%esp),%eax
2210bc3d5698SJohn Baldwin	movl	12(%esp),%ecx
2211bc3d5698SJohn Baldwin	divl	%ecx
2212bc3d5698SJohn Baldwin	ret
2213bc3d5698SJohn Baldwin.size	bn_div_words,.-.L_bn_div_words_begin
2214bc3d5698SJohn Baldwin.globl	bn_add_words
2215bc3d5698SJohn Baldwin.type	bn_add_words,@function
2216bc3d5698SJohn Baldwin.align	16
2217bc3d5698SJohn Baldwinbn_add_words:
2218bc3d5698SJohn Baldwin.L_bn_add_words_begin:
2219*c0855eaaSJohn Baldwin	#ifdef __CET__
2220*c0855eaaSJohn Baldwin
2221*c0855eaaSJohn Baldwin.byte	243,15,30,251
2222*c0855eaaSJohn Baldwin	#endif
2223*c0855eaaSJohn Baldwin
2224bc3d5698SJohn Baldwin	pushl	%ebp
2225bc3d5698SJohn Baldwin	pushl	%ebx
2226bc3d5698SJohn Baldwin	pushl	%esi
2227bc3d5698SJohn Baldwin	pushl	%edi
2228bc3d5698SJohn Baldwin
2229bc3d5698SJohn Baldwin	movl	20(%esp),%ebx
2230bc3d5698SJohn Baldwin	movl	24(%esp),%esi
2231bc3d5698SJohn Baldwin	movl	28(%esp),%edi
2232bc3d5698SJohn Baldwin	movl	32(%esp),%ebp
2233bc3d5698SJohn Baldwin	xorl	%eax,%eax
2234bc3d5698SJohn Baldwin	andl	$4294967288,%ebp
2235bc3d5698SJohn Baldwin	jz	.L020aw_finish
2236bc3d5698SJohn Baldwin.L021aw_loop:
2237bc3d5698SJohn Baldwin
2238bc3d5698SJohn Baldwin	movl	(%esi),%ecx
2239bc3d5698SJohn Baldwin	movl	(%edi),%edx
2240bc3d5698SJohn Baldwin	addl	%eax,%ecx
2241bc3d5698SJohn Baldwin	movl	$0,%eax
2242bc3d5698SJohn Baldwin	adcl	%eax,%eax
2243bc3d5698SJohn Baldwin	addl	%edx,%ecx
2244bc3d5698SJohn Baldwin	adcl	$0,%eax
2245bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
2246bc3d5698SJohn Baldwin
2247bc3d5698SJohn Baldwin	movl	4(%esi),%ecx
2248bc3d5698SJohn Baldwin	movl	4(%edi),%edx
2249bc3d5698SJohn Baldwin	addl	%eax,%ecx
2250bc3d5698SJohn Baldwin	movl	$0,%eax
2251bc3d5698SJohn Baldwin	adcl	%eax,%eax
2252bc3d5698SJohn Baldwin	addl	%edx,%ecx
2253bc3d5698SJohn Baldwin	adcl	$0,%eax
2254bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
2255bc3d5698SJohn Baldwin
2256bc3d5698SJohn Baldwin	movl	8(%esi),%ecx
2257bc3d5698SJohn Baldwin	movl	8(%edi),%edx
2258bc3d5698SJohn Baldwin	addl	%eax,%ecx
2259bc3d5698SJohn Baldwin	movl	$0,%eax
2260bc3d5698SJohn Baldwin	adcl	%eax,%eax
2261bc3d5698SJohn Baldwin	addl	%edx,%ecx
2262bc3d5698SJohn Baldwin	adcl	$0,%eax
2263bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
2264bc3d5698SJohn Baldwin
2265bc3d5698SJohn Baldwin	movl	12(%esi),%ecx
2266bc3d5698SJohn Baldwin	movl	12(%edi),%edx
2267bc3d5698SJohn Baldwin	addl	%eax,%ecx
2268bc3d5698SJohn Baldwin	movl	$0,%eax
2269bc3d5698SJohn Baldwin	adcl	%eax,%eax
2270bc3d5698SJohn Baldwin	addl	%edx,%ecx
2271bc3d5698SJohn Baldwin	adcl	$0,%eax
2272bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
2273bc3d5698SJohn Baldwin
2274bc3d5698SJohn Baldwin	movl	16(%esi),%ecx
2275bc3d5698SJohn Baldwin	movl	16(%edi),%edx
2276bc3d5698SJohn Baldwin	addl	%eax,%ecx
2277bc3d5698SJohn Baldwin	movl	$0,%eax
2278bc3d5698SJohn Baldwin	adcl	%eax,%eax
2279bc3d5698SJohn Baldwin	addl	%edx,%ecx
2280bc3d5698SJohn Baldwin	adcl	$0,%eax
2281bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
2282bc3d5698SJohn Baldwin
2283bc3d5698SJohn Baldwin	movl	20(%esi),%ecx
2284bc3d5698SJohn Baldwin	movl	20(%edi),%edx
2285bc3d5698SJohn Baldwin	addl	%eax,%ecx
2286bc3d5698SJohn Baldwin	movl	$0,%eax
2287bc3d5698SJohn Baldwin	adcl	%eax,%eax
2288bc3d5698SJohn Baldwin	addl	%edx,%ecx
2289bc3d5698SJohn Baldwin	adcl	$0,%eax
2290bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
2291bc3d5698SJohn Baldwin
2292bc3d5698SJohn Baldwin	movl	24(%esi),%ecx
2293bc3d5698SJohn Baldwin	movl	24(%edi),%edx
2294bc3d5698SJohn Baldwin	addl	%eax,%ecx
2295bc3d5698SJohn Baldwin	movl	$0,%eax
2296bc3d5698SJohn Baldwin	adcl	%eax,%eax
2297bc3d5698SJohn Baldwin	addl	%edx,%ecx
2298bc3d5698SJohn Baldwin	adcl	$0,%eax
2299bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
2300bc3d5698SJohn Baldwin
2301bc3d5698SJohn Baldwin	movl	28(%esi),%ecx
2302bc3d5698SJohn Baldwin	movl	28(%edi),%edx
2303bc3d5698SJohn Baldwin	addl	%eax,%ecx
2304bc3d5698SJohn Baldwin	movl	$0,%eax
2305bc3d5698SJohn Baldwin	adcl	%eax,%eax
2306bc3d5698SJohn Baldwin	addl	%edx,%ecx
2307bc3d5698SJohn Baldwin	adcl	$0,%eax
2308bc3d5698SJohn Baldwin	movl	%ecx,28(%ebx)
2309bc3d5698SJohn Baldwin
2310bc3d5698SJohn Baldwin	addl	$32,%esi
2311bc3d5698SJohn Baldwin	addl	$32,%edi
2312bc3d5698SJohn Baldwin	addl	$32,%ebx
2313bc3d5698SJohn Baldwin	subl	$8,%ebp
2314bc3d5698SJohn Baldwin	jnz	.L021aw_loop
2315bc3d5698SJohn Baldwin.L020aw_finish:
2316bc3d5698SJohn Baldwin	movl	32(%esp),%ebp
2317bc3d5698SJohn Baldwin	andl	$7,%ebp
2318bc3d5698SJohn Baldwin	jz	.L022aw_end
2319bc3d5698SJohn Baldwin
2320bc3d5698SJohn Baldwin	movl	(%esi),%ecx
2321bc3d5698SJohn Baldwin	movl	(%edi),%edx
2322bc3d5698SJohn Baldwin	addl	%eax,%ecx
2323bc3d5698SJohn Baldwin	movl	$0,%eax
2324bc3d5698SJohn Baldwin	adcl	%eax,%eax
2325bc3d5698SJohn Baldwin	addl	%edx,%ecx
2326bc3d5698SJohn Baldwin	adcl	$0,%eax
2327bc3d5698SJohn Baldwin	decl	%ebp
2328bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
2329bc3d5698SJohn Baldwin	jz	.L022aw_end
2330bc3d5698SJohn Baldwin
2331bc3d5698SJohn Baldwin	movl	4(%esi),%ecx
2332bc3d5698SJohn Baldwin	movl	4(%edi),%edx
2333bc3d5698SJohn Baldwin	addl	%eax,%ecx
2334bc3d5698SJohn Baldwin	movl	$0,%eax
2335bc3d5698SJohn Baldwin	adcl	%eax,%eax
2336bc3d5698SJohn Baldwin	addl	%edx,%ecx
2337bc3d5698SJohn Baldwin	adcl	$0,%eax
2338bc3d5698SJohn Baldwin	decl	%ebp
2339bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
2340bc3d5698SJohn Baldwin	jz	.L022aw_end
2341bc3d5698SJohn Baldwin
2342bc3d5698SJohn Baldwin	movl	8(%esi),%ecx
2343bc3d5698SJohn Baldwin	movl	8(%edi),%edx
2344bc3d5698SJohn Baldwin	addl	%eax,%ecx
2345bc3d5698SJohn Baldwin	movl	$0,%eax
2346bc3d5698SJohn Baldwin	adcl	%eax,%eax
2347bc3d5698SJohn Baldwin	addl	%edx,%ecx
2348bc3d5698SJohn Baldwin	adcl	$0,%eax
2349bc3d5698SJohn Baldwin	decl	%ebp
2350bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
2351bc3d5698SJohn Baldwin	jz	.L022aw_end
2352bc3d5698SJohn Baldwin
2353bc3d5698SJohn Baldwin	movl	12(%esi),%ecx
2354bc3d5698SJohn Baldwin	movl	12(%edi),%edx
2355bc3d5698SJohn Baldwin	addl	%eax,%ecx
2356bc3d5698SJohn Baldwin	movl	$0,%eax
2357bc3d5698SJohn Baldwin	adcl	%eax,%eax
2358bc3d5698SJohn Baldwin	addl	%edx,%ecx
2359bc3d5698SJohn Baldwin	adcl	$0,%eax
2360bc3d5698SJohn Baldwin	decl	%ebp
2361bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
2362bc3d5698SJohn Baldwin	jz	.L022aw_end
2363bc3d5698SJohn Baldwin
2364bc3d5698SJohn Baldwin	movl	16(%esi),%ecx
2365bc3d5698SJohn Baldwin	movl	16(%edi),%edx
2366bc3d5698SJohn Baldwin	addl	%eax,%ecx
2367bc3d5698SJohn Baldwin	movl	$0,%eax
2368bc3d5698SJohn Baldwin	adcl	%eax,%eax
2369bc3d5698SJohn Baldwin	addl	%edx,%ecx
2370bc3d5698SJohn Baldwin	adcl	$0,%eax
2371bc3d5698SJohn Baldwin	decl	%ebp
2372bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
2373bc3d5698SJohn Baldwin	jz	.L022aw_end
2374bc3d5698SJohn Baldwin
2375bc3d5698SJohn Baldwin	movl	20(%esi),%ecx
2376bc3d5698SJohn Baldwin	movl	20(%edi),%edx
2377bc3d5698SJohn Baldwin	addl	%eax,%ecx
2378bc3d5698SJohn Baldwin	movl	$0,%eax
2379bc3d5698SJohn Baldwin	adcl	%eax,%eax
2380bc3d5698SJohn Baldwin	addl	%edx,%ecx
2381bc3d5698SJohn Baldwin	adcl	$0,%eax
2382bc3d5698SJohn Baldwin	decl	%ebp
2383bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
2384bc3d5698SJohn Baldwin	jz	.L022aw_end
2385bc3d5698SJohn Baldwin
2386bc3d5698SJohn Baldwin	movl	24(%esi),%ecx
2387bc3d5698SJohn Baldwin	movl	24(%edi),%edx
2388bc3d5698SJohn Baldwin	addl	%eax,%ecx
2389bc3d5698SJohn Baldwin	movl	$0,%eax
2390bc3d5698SJohn Baldwin	adcl	%eax,%eax
2391bc3d5698SJohn Baldwin	addl	%edx,%ecx
2392bc3d5698SJohn Baldwin	adcl	$0,%eax
2393bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
2394bc3d5698SJohn Baldwin.L022aw_end:
2395bc3d5698SJohn Baldwin	popl	%edi
2396bc3d5698SJohn Baldwin	popl	%esi
2397bc3d5698SJohn Baldwin	popl	%ebx
2398bc3d5698SJohn Baldwin	popl	%ebp
2399bc3d5698SJohn Baldwin	ret
2400bc3d5698SJohn Baldwin.size	bn_add_words,.-.L_bn_add_words_begin
2401bc3d5698SJohn Baldwin.globl	bn_sub_words
2402bc3d5698SJohn Baldwin.type	bn_sub_words,@function
2403bc3d5698SJohn Baldwin.align	16
2404bc3d5698SJohn Baldwinbn_sub_words:
2405bc3d5698SJohn Baldwin.L_bn_sub_words_begin:
2406*c0855eaaSJohn Baldwin	#ifdef __CET__
2407*c0855eaaSJohn Baldwin
2408*c0855eaaSJohn Baldwin.byte	243,15,30,251
2409*c0855eaaSJohn Baldwin	#endif
2410*c0855eaaSJohn Baldwin
2411bc3d5698SJohn Baldwin	pushl	%ebp
2412bc3d5698SJohn Baldwin	pushl	%ebx
2413bc3d5698SJohn Baldwin	pushl	%esi
2414bc3d5698SJohn Baldwin	pushl	%edi
2415bc3d5698SJohn Baldwin
2416bc3d5698SJohn Baldwin	movl	20(%esp),%ebx
2417bc3d5698SJohn Baldwin	movl	24(%esp),%esi
2418bc3d5698SJohn Baldwin	movl	28(%esp),%edi
2419bc3d5698SJohn Baldwin	movl	32(%esp),%ebp
2420bc3d5698SJohn Baldwin	xorl	%eax,%eax
2421bc3d5698SJohn Baldwin	andl	$4294967288,%ebp
2422bc3d5698SJohn Baldwin	jz	.L023aw_finish
2423bc3d5698SJohn Baldwin.L024aw_loop:
2424bc3d5698SJohn Baldwin
2425bc3d5698SJohn Baldwin	movl	(%esi),%ecx
2426bc3d5698SJohn Baldwin	movl	(%edi),%edx
2427bc3d5698SJohn Baldwin	subl	%eax,%ecx
2428bc3d5698SJohn Baldwin	movl	$0,%eax
2429bc3d5698SJohn Baldwin	adcl	%eax,%eax
2430bc3d5698SJohn Baldwin	subl	%edx,%ecx
2431bc3d5698SJohn Baldwin	adcl	$0,%eax
2432bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
2433bc3d5698SJohn Baldwin
2434bc3d5698SJohn Baldwin	movl	4(%esi),%ecx
2435bc3d5698SJohn Baldwin	movl	4(%edi),%edx
2436bc3d5698SJohn Baldwin	subl	%eax,%ecx
2437bc3d5698SJohn Baldwin	movl	$0,%eax
2438bc3d5698SJohn Baldwin	adcl	%eax,%eax
2439bc3d5698SJohn Baldwin	subl	%edx,%ecx
2440bc3d5698SJohn Baldwin	adcl	$0,%eax
2441bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
2442bc3d5698SJohn Baldwin
2443bc3d5698SJohn Baldwin	movl	8(%esi),%ecx
2444bc3d5698SJohn Baldwin	movl	8(%edi),%edx
2445bc3d5698SJohn Baldwin	subl	%eax,%ecx
2446bc3d5698SJohn Baldwin	movl	$0,%eax
2447bc3d5698SJohn Baldwin	adcl	%eax,%eax
2448bc3d5698SJohn Baldwin	subl	%edx,%ecx
2449bc3d5698SJohn Baldwin	adcl	$0,%eax
2450bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
2451bc3d5698SJohn Baldwin
2452bc3d5698SJohn Baldwin	movl	12(%esi),%ecx
2453bc3d5698SJohn Baldwin	movl	12(%edi),%edx
2454bc3d5698SJohn Baldwin	subl	%eax,%ecx
2455bc3d5698SJohn Baldwin	movl	$0,%eax
2456bc3d5698SJohn Baldwin	adcl	%eax,%eax
2457bc3d5698SJohn Baldwin	subl	%edx,%ecx
2458bc3d5698SJohn Baldwin	adcl	$0,%eax
2459bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
2460bc3d5698SJohn Baldwin
2461bc3d5698SJohn Baldwin	movl	16(%esi),%ecx
2462bc3d5698SJohn Baldwin	movl	16(%edi),%edx
2463bc3d5698SJohn Baldwin	subl	%eax,%ecx
2464bc3d5698SJohn Baldwin	movl	$0,%eax
2465bc3d5698SJohn Baldwin	adcl	%eax,%eax
2466bc3d5698SJohn Baldwin	subl	%edx,%ecx
2467bc3d5698SJohn Baldwin	adcl	$0,%eax
2468bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
2469bc3d5698SJohn Baldwin
2470bc3d5698SJohn Baldwin	movl	20(%esi),%ecx
2471bc3d5698SJohn Baldwin	movl	20(%edi),%edx
2472bc3d5698SJohn Baldwin	subl	%eax,%ecx
2473bc3d5698SJohn Baldwin	movl	$0,%eax
2474bc3d5698SJohn Baldwin	adcl	%eax,%eax
2475bc3d5698SJohn Baldwin	subl	%edx,%ecx
2476bc3d5698SJohn Baldwin	adcl	$0,%eax
2477bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
2478bc3d5698SJohn Baldwin
2479bc3d5698SJohn Baldwin	movl	24(%esi),%ecx
2480bc3d5698SJohn Baldwin	movl	24(%edi),%edx
2481bc3d5698SJohn Baldwin	subl	%eax,%ecx
2482bc3d5698SJohn Baldwin	movl	$0,%eax
2483bc3d5698SJohn Baldwin	adcl	%eax,%eax
2484bc3d5698SJohn Baldwin	subl	%edx,%ecx
2485bc3d5698SJohn Baldwin	adcl	$0,%eax
2486bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
2487bc3d5698SJohn Baldwin
2488bc3d5698SJohn Baldwin	movl	28(%esi),%ecx
2489bc3d5698SJohn Baldwin	movl	28(%edi),%edx
2490bc3d5698SJohn Baldwin	subl	%eax,%ecx
2491bc3d5698SJohn Baldwin	movl	$0,%eax
2492bc3d5698SJohn Baldwin	adcl	%eax,%eax
2493bc3d5698SJohn Baldwin	subl	%edx,%ecx
2494bc3d5698SJohn Baldwin	adcl	$0,%eax
2495bc3d5698SJohn Baldwin	movl	%ecx,28(%ebx)
2496bc3d5698SJohn Baldwin
2497bc3d5698SJohn Baldwin	addl	$32,%esi
2498bc3d5698SJohn Baldwin	addl	$32,%edi
2499bc3d5698SJohn Baldwin	addl	$32,%ebx
2500bc3d5698SJohn Baldwin	subl	$8,%ebp
2501bc3d5698SJohn Baldwin	jnz	.L024aw_loop
2502bc3d5698SJohn Baldwin.L023aw_finish:
2503bc3d5698SJohn Baldwin	movl	32(%esp),%ebp
2504bc3d5698SJohn Baldwin	andl	$7,%ebp
2505bc3d5698SJohn Baldwin	jz	.L025aw_end
2506bc3d5698SJohn Baldwin
2507bc3d5698SJohn Baldwin	movl	(%esi),%ecx
2508bc3d5698SJohn Baldwin	movl	(%edi),%edx
2509bc3d5698SJohn Baldwin	subl	%eax,%ecx
2510bc3d5698SJohn Baldwin	movl	$0,%eax
2511bc3d5698SJohn Baldwin	adcl	%eax,%eax
2512bc3d5698SJohn Baldwin	subl	%edx,%ecx
2513bc3d5698SJohn Baldwin	adcl	$0,%eax
2514bc3d5698SJohn Baldwin	decl	%ebp
2515bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
2516bc3d5698SJohn Baldwin	jz	.L025aw_end
2517bc3d5698SJohn Baldwin
2518bc3d5698SJohn Baldwin	movl	4(%esi),%ecx
2519bc3d5698SJohn Baldwin	movl	4(%edi),%edx
2520bc3d5698SJohn Baldwin	subl	%eax,%ecx
2521bc3d5698SJohn Baldwin	movl	$0,%eax
2522bc3d5698SJohn Baldwin	adcl	%eax,%eax
2523bc3d5698SJohn Baldwin	subl	%edx,%ecx
2524bc3d5698SJohn Baldwin	adcl	$0,%eax
2525bc3d5698SJohn Baldwin	decl	%ebp
2526bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
2527bc3d5698SJohn Baldwin	jz	.L025aw_end
2528bc3d5698SJohn Baldwin
2529bc3d5698SJohn Baldwin	movl	8(%esi),%ecx
2530bc3d5698SJohn Baldwin	movl	8(%edi),%edx
2531bc3d5698SJohn Baldwin	subl	%eax,%ecx
2532bc3d5698SJohn Baldwin	movl	$0,%eax
2533bc3d5698SJohn Baldwin	adcl	%eax,%eax
2534bc3d5698SJohn Baldwin	subl	%edx,%ecx
2535bc3d5698SJohn Baldwin	adcl	$0,%eax
2536bc3d5698SJohn Baldwin	decl	%ebp
2537bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
2538bc3d5698SJohn Baldwin	jz	.L025aw_end
2539bc3d5698SJohn Baldwin
2540bc3d5698SJohn Baldwin	movl	12(%esi),%ecx
2541bc3d5698SJohn Baldwin	movl	12(%edi),%edx
2542bc3d5698SJohn Baldwin	subl	%eax,%ecx
2543bc3d5698SJohn Baldwin	movl	$0,%eax
2544bc3d5698SJohn Baldwin	adcl	%eax,%eax
2545bc3d5698SJohn Baldwin	subl	%edx,%ecx
2546bc3d5698SJohn Baldwin	adcl	$0,%eax
2547bc3d5698SJohn Baldwin	decl	%ebp
2548bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
2549bc3d5698SJohn Baldwin	jz	.L025aw_end
2550bc3d5698SJohn Baldwin
2551bc3d5698SJohn Baldwin	movl	16(%esi),%ecx
2552bc3d5698SJohn Baldwin	movl	16(%edi),%edx
2553bc3d5698SJohn Baldwin	subl	%eax,%ecx
2554bc3d5698SJohn Baldwin	movl	$0,%eax
2555bc3d5698SJohn Baldwin	adcl	%eax,%eax
2556bc3d5698SJohn Baldwin	subl	%edx,%ecx
2557bc3d5698SJohn Baldwin	adcl	$0,%eax
2558bc3d5698SJohn Baldwin	decl	%ebp
2559bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
2560bc3d5698SJohn Baldwin	jz	.L025aw_end
2561bc3d5698SJohn Baldwin
2562bc3d5698SJohn Baldwin	movl	20(%esi),%ecx
2563bc3d5698SJohn Baldwin	movl	20(%edi),%edx
2564bc3d5698SJohn Baldwin	subl	%eax,%ecx
2565bc3d5698SJohn Baldwin	movl	$0,%eax
2566bc3d5698SJohn Baldwin	adcl	%eax,%eax
2567bc3d5698SJohn Baldwin	subl	%edx,%ecx
2568bc3d5698SJohn Baldwin	adcl	$0,%eax
2569bc3d5698SJohn Baldwin	decl	%ebp
2570bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
2571bc3d5698SJohn Baldwin	jz	.L025aw_end
2572bc3d5698SJohn Baldwin
2573bc3d5698SJohn Baldwin	movl	24(%esi),%ecx
2574bc3d5698SJohn Baldwin	movl	24(%edi),%edx
2575bc3d5698SJohn Baldwin	subl	%eax,%ecx
2576bc3d5698SJohn Baldwin	movl	$0,%eax
2577bc3d5698SJohn Baldwin	adcl	%eax,%eax
2578bc3d5698SJohn Baldwin	subl	%edx,%ecx
2579bc3d5698SJohn Baldwin	adcl	$0,%eax
2580bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
2581bc3d5698SJohn Baldwin.L025aw_end:
2582bc3d5698SJohn Baldwin	popl	%edi
2583bc3d5698SJohn Baldwin	popl	%esi
2584bc3d5698SJohn Baldwin	popl	%ebx
2585bc3d5698SJohn Baldwin	popl	%ebp
2586bc3d5698SJohn Baldwin	ret
2587bc3d5698SJohn Baldwin.size	bn_sub_words,.-.L_bn_sub_words_begin
2588bc3d5698SJohn Baldwin.globl	bn_sub_part_words
2589bc3d5698SJohn Baldwin.type	bn_sub_part_words,@function
2590bc3d5698SJohn Baldwin.align	16
2591bc3d5698SJohn Baldwinbn_sub_part_words:
2592bc3d5698SJohn Baldwin.L_bn_sub_part_words_begin:
2593*c0855eaaSJohn Baldwin	#ifdef __CET__
2594*c0855eaaSJohn Baldwin
2595*c0855eaaSJohn Baldwin.byte	243,15,30,251
2596*c0855eaaSJohn Baldwin	#endif
2597*c0855eaaSJohn Baldwin
2598bc3d5698SJohn Baldwin	pushl	%ebp
2599bc3d5698SJohn Baldwin	pushl	%ebx
2600bc3d5698SJohn Baldwin	pushl	%esi
2601bc3d5698SJohn Baldwin	pushl	%edi
2602bc3d5698SJohn Baldwin
2603bc3d5698SJohn Baldwin	movl	20(%esp),%ebx
2604bc3d5698SJohn Baldwin	movl	24(%esp),%esi
2605bc3d5698SJohn Baldwin	movl	28(%esp),%edi
2606bc3d5698SJohn Baldwin	movl	32(%esp),%ebp
2607bc3d5698SJohn Baldwin	xorl	%eax,%eax
2608bc3d5698SJohn Baldwin	andl	$4294967288,%ebp
2609bc3d5698SJohn Baldwin	jz	.L026aw_finish
2610bc3d5698SJohn Baldwin.L027aw_loop:
2611bc3d5698SJohn Baldwin
2612bc3d5698SJohn Baldwin	movl	(%esi),%ecx
2613bc3d5698SJohn Baldwin	movl	(%edi),%edx
2614bc3d5698SJohn Baldwin	subl	%eax,%ecx
2615bc3d5698SJohn Baldwin	movl	$0,%eax
2616bc3d5698SJohn Baldwin	adcl	%eax,%eax
2617bc3d5698SJohn Baldwin	subl	%edx,%ecx
2618bc3d5698SJohn Baldwin	adcl	$0,%eax
2619bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
2620bc3d5698SJohn Baldwin
2621bc3d5698SJohn Baldwin	movl	4(%esi),%ecx
2622bc3d5698SJohn Baldwin	movl	4(%edi),%edx
2623bc3d5698SJohn Baldwin	subl	%eax,%ecx
2624bc3d5698SJohn Baldwin	movl	$0,%eax
2625bc3d5698SJohn Baldwin	adcl	%eax,%eax
2626bc3d5698SJohn Baldwin	subl	%edx,%ecx
2627bc3d5698SJohn Baldwin	adcl	$0,%eax
2628bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
2629bc3d5698SJohn Baldwin
2630bc3d5698SJohn Baldwin	movl	8(%esi),%ecx
2631bc3d5698SJohn Baldwin	movl	8(%edi),%edx
2632bc3d5698SJohn Baldwin	subl	%eax,%ecx
2633bc3d5698SJohn Baldwin	movl	$0,%eax
2634bc3d5698SJohn Baldwin	adcl	%eax,%eax
2635bc3d5698SJohn Baldwin	subl	%edx,%ecx
2636bc3d5698SJohn Baldwin	adcl	$0,%eax
2637bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
2638bc3d5698SJohn Baldwin
2639bc3d5698SJohn Baldwin	movl	12(%esi),%ecx
2640bc3d5698SJohn Baldwin	movl	12(%edi),%edx
2641bc3d5698SJohn Baldwin	subl	%eax,%ecx
2642bc3d5698SJohn Baldwin	movl	$0,%eax
2643bc3d5698SJohn Baldwin	adcl	%eax,%eax
2644bc3d5698SJohn Baldwin	subl	%edx,%ecx
2645bc3d5698SJohn Baldwin	adcl	$0,%eax
2646bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
2647bc3d5698SJohn Baldwin
2648bc3d5698SJohn Baldwin	movl	16(%esi),%ecx
2649bc3d5698SJohn Baldwin	movl	16(%edi),%edx
2650bc3d5698SJohn Baldwin	subl	%eax,%ecx
2651bc3d5698SJohn Baldwin	movl	$0,%eax
2652bc3d5698SJohn Baldwin	adcl	%eax,%eax
2653bc3d5698SJohn Baldwin	subl	%edx,%ecx
2654bc3d5698SJohn Baldwin	adcl	$0,%eax
2655bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
2656bc3d5698SJohn Baldwin
2657bc3d5698SJohn Baldwin	movl	20(%esi),%ecx
2658bc3d5698SJohn Baldwin	movl	20(%edi),%edx
2659bc3d5698SJohn Baldwin	subl	%eax,%ecx
2660bc3d5698SJohn Baldwin	movl	$0,%eax
2661bc3d5698SJohn Baldwin	adcl	%eax,%eax
2662bc3d5698SJohn Baldwin	subl	%edx,%ecx
2663bc3d5698SJohn Baldwin	adcl	$0,%eax
2664bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
2665bc3d5698SJohn Baldwin
2666bc3d5698SJohn Baldwin	movl	24(%esi),%ecx
2667bc3d5698SJohn Baldwin	movl	24(%edi),%edx
2668bc3d5698SJohn Baldwin	subl	%eax,%ecx
2669bc3d5698SJohn Baldwin	movl	$0,%eax
2670bc3d5698SJohn Baldwin	adcl	%eax,%eax
2671bc3d5698SJohn Baldwin	subl	%edx,%ecx
2672bc3d5698SJohn Baldwin	adcl	$0,%eax
2673bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
2674bc3d5698SJohn Baldwin
2675bc3d5698SJohn Baldwin	movl	28(%esi),%ecx
2676bc3d5698SJohn Baldwin	movl	28(%edi),%edx
2677bc3d5698SJohn Baldwin	subl	%eax,%ecx
2678bc3d5698SJohn Baldwin	movl	$0,%eax
2679bc3d5698SJohn Baldwin	adcl	%eax,%eax
2680bc3d5698SJohn Baldwin	subl	%edx,%ecx
2681bc3d5698SJohn Baldwin	adcl	$0,%eax
2682bc3d5698SJohn Baldwin	movl	%ecx,28(%ebx)
2683bc3d5698SJohn Baldwin
2684bc3d5698SJohn Baldwin	addl	$32,%esi
2685bc3d5698SJohn Baldwin	addl	$32,%edi
2686bc3d5698SJohn Baldwin	addl	$32,%ebx
2687bc3d5698SJohn Baldwin	subl	$8,%ebp
2688bc3d5698SJohn Baldwin	jnz	.L027aw_loop
2689bc3d5698SJohn Baldwin.L026aw_finish:
2690bc3d5698SJohn Baldwin	movl	32(%esp),%ebp
2691bc3d5698SJohn Baldwin	andl	$7,%ebp
2692bc3d5698SJohn Baldwin	jz	.L028aw_end
2693bc3d5698SJohn Baldwin
2694bc3d5698SJohn Baldwin	movl	(%esi),%ecx
2695bc3d5698SJohn Baldwin	movl	(%edi),%edx
2696bc3d5698SJohn Baldwin	subl	%eax,%ecx
2697bc3d5698SJohn Baldwin	movl	$0,%eax
2698bc3d5698SJohn Baldwin	adcl	%eax,%eax
2699bc3d5698SJohn Baldwin	subl	%edx,%ecx
2700bc3d5698SJohn Baldwin	adcl	$0,%eax
2701bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
2702bc3d5698SJohn Baldwin	addl	$4,%esi
2703bc3d5698SJohn Baldwin	addl	$4,%edi
2704bc3d5698SJohn Baldwin	addl	$4,%ebx
2705bc3d5698SJohn Baldwin	decl	%ebp
2706bc3d5698SJohn Baldwin	jz	.L028aw_end
2707bc3d5698SJohn Baldwin
2708bc3d5698SJohn Baldwin	movl	(%esi),%ecx
2709bc3d5698SJohn Baldwin	movl	(%edi),%edx
2710bc3d5698SJohn Baldwin	subl	%eax,%ecx
2711bc3d5698SJohn Baldwin	movl	$0,%eax
2712bc3d5698SJohn Baldwin	adcl	%eax,%eax
2713bc3d5698SJohn Baldwin	subl	%edx,%ecx
2714bc3d5698SJohn Baldwin	adcl	$0,%eax
2715bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
2716bc3d5698SJohn Baldwin	addl	$4,%esi
2717bc3d5698SJohn Baldwin	addl	$4,%edi
2718bc3d5698SJohn Baldwin	addl	$4,%ebx
2719bc3d5698SJohn Baldwin	decl	%ebp
2720bc3d5698SJohn Baldwin	jz	.L028aw_end
2721bc3d5698SJohn Baldwin
2722bc3d5698SJohn Baldwin	movl	(%esi),%ecx
2723bc3d5698SJohn Baldwin	movl	(%edi),%edx
2724bc3d5698SJohn Baldwin	subl	%eax,%ecx
2725bc3d5698SJohn Baldwin	movl	$0,%eax
2726bc3d5698SJohn Baldwin	adcl	%eax,%eax
2727bc3d5698SJohn Baldwin	subl	%edx,%ecx
2728bc3d5698SJohn Baldwin	adcl	$0,%eax
2729bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
2730bc3d5698SJohn Baldwin	addl	$4,%esi
2731bc3d5698SJohn Baldwin	addl	$4,%edi
2732bc3d5698SJohn Baldwin	addl	$4,%ebx
2733bc3d5698SJohn Baldwin	decl	%ebp
2734bc3d5698SJohn Baldwin	jz	.L028aw_end
2735bc3d5698SJohn Baldwin
2736bc3d5698SJohn Baldwin	movl	(%esi),%ecx
2737bc3d5698SJohn Baldwin	movl	(%edi),%edx
2738bc3d5698SJohn Baldwin	subl	%eax,%ecx
2739bc3d5698SJohn Baldwin	movl	$0,%eax
2740bc3d5698SJohn Baldwin	adcl	%eax,%eax
2741bc3d5698SJohn Baldwin	subl	%edx,%ecx
2742bc3d5698SJohn Baldwin	adcl	$0,%eax
2743bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
2744bc3d5698SJohn Baldwin	addl	$4,%esi
2745bc3d5698SJohn Baldwin	addl	$4,%edi
2746bc3d5698SJohn Baldwin	addl	$4,%ebx
2747bc3d5698SJohn Baldwin	decl	%ebp
2748bc3d5698SJohn Baldwin	jz	.L028aw_end
2749bc3d5698SJohn Baldwin
2750bc3d5698SJohn Baldwin	movl	(%esi),%ecx
2751bc3d5698SJohn Baldwin	movl	(%edi),%edx
2752bc3d5698SJohn Baldwin	subl	%eax,%ecx
2753bc3d5698SJohn Baldwin	movl	$0,%eax
2754bc3d5698SJohn Baldwin	adcl	%eax,%eax
2755bc3d5698SJohn Baldwin	subl	%edx,%ecx
2756bc3d5698SJohn Baldwin	adcl	$0,%eax
2757bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
2758bc3d5698SJohn Baldwin	addl	$4,%esi
2759bc3d5698SJohn Baldwin	addl	$4,%edi
2760bc3d5698SJohn Baldwin	addl	$4,%ebx
2761bc3d5698SJohn Baldwin	decl	%ebp
2762bc3d5698SJohn Baldwin	jz	.L028aw_end
2763bc3d5698SJohn Baldwin
2764bc3d5698SJohn Baldwin	movl	(%esi),%ecx
2765bc3d5698SJohn Baldwin	movl	(%edi),%edx
2766bc3d5698SJohn Baldwin	subl	%eax,%ecx
2767bc3d5698SJohn Baldwin	movl	$0,%eax
2768bc3d5698SJohn Baldwin	adcl	%eax,%eax
2769bc3d5698SJohn Baldwin	subl	%edx,%ecx
2770bc3d5698SJohn Baldwin	adcl	$0,%eax
2771bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
2772bc3d5698SJohn Baldwin	addl	$4,%esi
2773bc3d5698SJohn Baldwin	addl	$4,%edi
2774bc3d5698SJohn Baldwin	addl	$4,%ebx
2775bc3d5698SJohn Baldwin	decl	%ebp
2776bc3d5698SJohn Baldwin	jz	.L028aw_end
2777bc3d5698SJohn Baldwin
2778bc3d5698SJohn Baldwin	movl	(%esi),%ecx
2779bc3d5698SJohn Baldwin	movl	(%edi),%edx
2780bc3d5698SJohn Baldwin	subl	%eax,%ecx
2781bc3d5698SJohn Baldwin	movl	$0,%eax
2782bc3d5698SJohn Baldwin	adcl	%eax,%eax
2783bc3d5698SJohn Baldwin	subl	%edx,%ecx
2784bc3d5698SJohn Baldwin	adcl	$0,%eax
2785bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
2786bc3d5698SJohn Baldwin	addl	$4,%esi
2787bc3d5698SJohn Baldwin	addl	$4,%edi
2788bc3d5698SJohn Baldwin	addl	$4,%ebx
2789bc3d5698SJohn Baldwin.L028aw_end:
2790bc3d5698SJohn Baldwin	cmpl	$0,36(%esp)
2791bc3d5698SJohn Baldwin	je	.L029pw_end
2792bc3d5698SJohn Baldwin	movl	36(%esp),%ebp
2793bc3d5698SJohn Baldwin	cmpl	$0,%ebp
2794bc3d5698SJohn Baldwin	je	.L029pw_end
2795bc3d5698SJohn Baldwin	jge	.L030pw_pos
2796bc3d5698SJohn Baldwin
2797bc3d5698SJohn Baldwin	movl	$0,%edx
2798bc3d5698SJohn Baldwin	subl	%ebp,%edx
2799bc3d5698SJohn Baldwin	movl	%edx,%ebp
2800bc3d5698SJohn Baldwin	andl	$4294967288,%ebp
2801bc3d5698SJohn Baldwin	jz	.L031pw_neg_finish
2802bc3d5698SJohn Baldwin.L032pw_neg_loop:
2803bc3d5698SJohn Baldwin
2804bc3d5698SJohn Baldwin	movl	$0,%ecx
2805bc3d5698SJohn Baldwin	movl	(%edi),%edx
2806bc3d5698SJohn Baldwin	subl	%eax,%ecx
2807bc3d5698SJohn Baldwin	movl	$0,%eax
2808bc3d5698SJohn Baldwin	adcl	%eax,%eax
2809bc3d5698SJohn Baldwin	subl	%edx,%ecx
2810bc3d5698SJohn Baldwin	adcl	$0,%eax
2811bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
2812bc3d5698SJohn Baldwin
2813bc3d5698SJohn Baldwin	movl	$0,%ecx
2814bc3d5698SJohn Baldwin	movl	4(%edi),%edx
2815bc3d5698SJohn Baldwin	subl	%eax,%ecx
2816bc3d5698SJohn Baldwin	movl	$0,%eax
2817bc3d5698SJohn Baldwin	adcl	%eax,%eax
2818bc3d5698SJohn Baldwin	subl	%edx,%ecx
2819bc3d5698SJohn Baldwin	adcl	$0,%eax
2820bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
2821bc3d5698SJohn Baldwin
2822bc3d5698SJohn Baldwin	movl	$0,%ecx
2823bc3d5698SJohn Baldwin	movl	8(%edi),%edx
2824bc3d5698SJohn Baldwin	subl	%eax,%ecx
2825bc3d5698SJohn Baldwin	movl	$0,%eax
2826bc3d5698SJohn Baldwin	adcl	%eax,%eax
2827bc3d5698SJohn Baldwin	subl	%edx,%ecx
2828bc3d5698SJohn Baldwin	adcl	$0,%eax
2829bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
2830bc3d5698SJohn Baldwin
2831bc3d5698SJohn Baldwin	movl	$0,%ecx
2832bc3d5698SJohn Baldwin	movl	12(%edi),%edx
2833bc3d5698SJohn Baldwin	subl	%eax,%ecx
2834bc3d5698SJohn Baldwin	movl	$0,%eax
2835bc3d5698SJohn Baldwin	adcl	%eax,%eax
2836bc3d5698SJohn Baldwin	subl	%edx,%ecx
2837bc3d5698SJohn Baldwin	adcl	$0,%eax
2838bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
2839bc3d5698SJohn Baldwin
2840bc3d5698SJohn Baldwin	movl	$0,%ecx
2841bc3d5698SJohn Baldwin	movl	16(%edi),%edx
2842bc3d5698SJohn Baldwin	subl	%eax,%ecx
2843bc3d5698SJohn Baldwin	movl	$0,%eax
2844bc3d5698SJohn Baldwin	adcl	%eax,%eax
2845bc3d5698SJohn Baldwin	subl	%edx,%ecx
2846bc3d5698SJohn Baldwin	adcl	$0,%eax
2847bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
2848bc3d5698SJohn Baldwin
2849bc3d5698SJohn Baldwin	movl	$0,%ecx
2850bc3d5698SJohn Baldwin	movl	20(%edi),%edx
2851bc3d5698SJohn Baldwin	subl	%eax,%ecx
2852bc3d5698SJohn Baldwin	movl	$0,%eax
2853bc3d5698SJohn Baldwin	adcl	%eax,%eax
2854bc3d5698SJohn Baldwin	subl	%edx,%ecx
2855bc3d5698SJohn Baldwin	adcl	$0,%eax
2856bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
2857bc3d5698SJohn Baldwin
2858bc3d5698SJohn Baldwin	movl	$0,%ecx
2859bc3d5698SJohn Baldwin	movl	24(%edi),%edx
2860bc3d5698SJohn Baldwin	subl	%eax,%ecx
2861bc3d5698SJohn Baldwin	movl	$0,%eax
2862bc3d5698SJohn Baldwin	adcl	%eax,%eax
2863bc3d5698SJohn Baldwin	subl	%edx,%ecx
2864bc3d5698SJohn Baldwin	adcl	$0,%eax
2865bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
2866bc3d5698SJohn Baldwin
2867bc3d5698SJohn Baldwin	movl	$0,%ecx
2868bc3d5698SJohn Baldwin	movl	28(%edi),%edx
2869bc3d5698SJohn Baldwin	subl	%eax,%ecx
2870bc3d5698SJohn Baldwin	movl	$0,%eax
2871bc3d5698SJohn Baldwin	adcl	%eax,%eax
2872bc3d5698SJohn Baldwin	subl	%edx,%ecx
2873bc3d5698SJohn Baldwin	adcl	$0,%eax
2874bc3d5698SJohn Baldwin	movl	%ecx,28(%ebx)
2875bc3d5698SJohn Baldwin
2876bc3d5698SJohn Baldwin	addl	$32,%edi
2877bc3d5698SJohn Baldwin	addl	$32,%ebx
2878bc3d5698SJohn Baldwin	subl	$8,%ebp
2879bc3d5698SJohn Baldwin	jnz	.L032pw_neg_loop
2880bc3d5698SJohn Baldwin.L031pw_neg_finish:
2881bc3d5698SJohn Baldwin	movl	36(%esp),%edx
2882bc3d5698SJohn Baldwin	movl	$0,%ebp
2883bc3d5698SJohn Baldwin	subl	%edx,%ebp
2884bc3d5698SJohn Baldwin	andl	$7,%ebp
2885bc3d5698SJohn Baldwin	jz	.L029pw_end
2886bc3d5698SJohn Baldwin
2887bc3d5698SJohn Baldwin	movl	$0,%ecx
2888bc3d5698SJohn Baldwin	movl	(%edi),%edx
2889bc3d5698SJohn Baldwin	subl	%eax,%ecx
2890bc3d5698SJohn Baldwin	movl	$0,%eax
2891bc3d5698SJohn Baldwin	adcl	%eax,%eax
2892bc3d5698SJohn Baldwin	subl	%edx,%ecx
2893bc3d5698SJohn Baldwin	adcl	$0,%eax
2894bc3d5698SJohn Baldwin	decl	%ebp
2895bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
2896bc3d5698SJohn Baldwin	jz	.L029pw_end
2897bc3d5698SJohn Baldwin
2898bc3d5698SJohn Baldwin	movl	$0,%ecx
2899bc3d5698SJohn Baldwin	movl	4(%edi),%edx
2900bc3d5698SJohn Baldwin	subl	%eax,%ecx
2901bc3d5698SJohn Baldwin	movl	$0,%eax
2902bc3d5698SJohn Baldwin	adcl	%eax,%eax
2903bc3d5698SJohn Baldwin	subl	%edx,%ecx
2904bc3d5698SJohn Baldwin	adcl	$0,%eax
2905bc3d5698SJohn Baldwin	decl	%ebp
2906bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
2907bc3d5698SJohn Baldwin	jz	.L029pw_end
2908bc3d5698SJohn Baldwin
2909bc3d5698SJohn Baldwin	movl	$0,%ecx
2910bc3d5698SJohn Baldwin	movl	8(%edi),%edx
2911bc3d5698SJohn Baldwin	subl	%eax,%ecx
2912bc3d5698SJohn Baldwin	movl	$0,%eax
2913bc3d5698SJohn Baldwin	adcl	%eax,%eax
2914bc3d5698SJohn Baldwin	subl	%edx,%ecx
2915bc3d5698SJohn Baldwin	adcl	$0,%eax
2916bc3d5698SJohn Baldwin	decl	%ebp
2917bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
2918bc3d5698SJohn Baldwin	jz	.L029pw_end
2919bc3d5698SJohn Baldwin
2920bc3d5698SJohn Baldwin	movl	$0,%ecx
2921bc3d5698SJohn Baldwin	movl	12(%edi),%edx
2922bc3d5698SJohn Baldwin	subl	%eax,%ecx
2923bc3d5698SJohn Baldwin	movl	$0,%eax
2924bc3d5698SJohn Baldwin	adcl	%eax,%eax
2925bc3d5698SJohn Baldwin	subl	%edx,%ecx
2926bc3d5698SJohn Baldwin	adcl	$0,%eax
2927bc3d5698SJohn Baldwin	decl	%ebp
2928bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
2929bc3d5698SJohn Baldwin	jz	.L029pw_end
2930bc3d5698SJohn Baldwin
2931bc3d5698SJohn Baldwin	movl	$0,%ecx
2932bc3d5698SJohn Baldwin	movl	16(%edi),%edx
2933bc3d5698SJohn Baldwin	subl	%eax,%ecx
2934bc3d5698SJohn Baldwin	movl	$0,%eax
2935bc3d5698SJohn Baldwin	adcl	%eax,%eax
2936bc3d5698SJohn Baldwin	subl	%edx,%ecx
2937bc3d5698SJohn Baldwin	adcl	$0,%eax
2938bc3d5698SJohn Baldwin	decl	%ebp
2939bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
2940bc3d5698SJohn Baldwin	jz	.L029pw_end
2941bc3d5698SJohn Baldwin
2942bc3d5698SJohn Baldwin	movl	$0,%ecx
2943bc3d5698SJohn Baldwin	movl	20(%edi),%edx
2944bc3d5698SJohn Baldwin	subl	%eax,%ecx
2945bc3d5698SJohn Baldwin	movl	$0,%eax
2946bc3d5698SJohn Baldwin	adcl	%eax,%eax
2947bc3d5698SJohn Baldwin	subl	%edx,%ecx
2948bc3d5698SJohn Baldwin	adcl	$0,%eax
2949bc3d5698SJohn Baldwin	decl	%ebp
2950bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
2951bc3d5698SJohn Baldwin	jz	.L029pw_end
2952bc3d5698SJohn Baldwin
2953bc3d5698SJohn Baldwin	movl	$0,%ecx
2954bc3d5698SJohn Baldwin	movl	24(%edi),%edx
2955bc3d5698SJohn Baldwin	subl	%eax,%ecx
2956bc3d5698SJohn Baldwin	movl	$0,%eax
2957bc3d5698SJohn Baldwin	adcl	%eax,%eax
2958bc3d5698SJohn Baldwin	subl	%edx,%ecx
2959bc3d5698SJohn Baldwin	adcl	$0,%eax
2960bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
2961bc3d5698SJohn Baldwin	jmp	.L029pw_end
2962bc3d5698SJohn Baldwin.L030pw_pos:
2963bc3d5698SJohn Baldwin	andl	$4294967288,%ebp
2964bc3d5698SJohn Baldwin	jz	.L033pw_pos_finish
2965bc3d5698SJohn Baldwin.L034pw_pos_loop:
2966bc3d5698SJohn Baldwin
2967bc3d5698SJohn Baldwin	movl	(%esi),%ecx
2968bc3d5698SJohn Baldwin	subl	%eax,%ecx
2969bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
2970bc3d5698SJohn Baldwin	jnc	.L035pw_nc0
2971bc3d5698SJohn Baldwin
2972bc3d5698SJohn Baldwin	movl	4(%esi),%ecx
2973bc3d5698SJohn Baldwin	subl	%eax,%ecx
2974bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
2975bc3d5698SJohn Baldwin	jnc	.L036pw_nc1
2976bc3d5698SJohn Baldwin
2977bc3d5698SJohn Baldwin	movl	8(%esi),%ecx
2978bc3d5698SJohn Baldwin	subl	%eax,%ecx
2979bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
2980bc3d5698SJohn Baldwin	jnc	.L037pw_nc2
2981bc3d5698SJohn Baldwin
2982bc3d5698SJohn Baldwin	movl	12(%esi),%ecx
2983bc3d5698SJohn Baldwin	subl	%eax,%ecx
2984bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
2985bc3d5698SJohn Baldwin	jnc	.L038pw_nc3
2986bc3d5698SJohn Baldwin
2987bc3d5698SJohn Baldwin	movl	16(%esi),%ecx
2988bc3d5698SJohn Baldwin	subl	%eax,%ecx
2989bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
2990bc3d5698SJohn Baldwin	jnc	.L039pw_nc4
2991bc3d5698SJohn Baldwin
2992bc3d5698SJohn Baldwin	movl	20(%esi),%ecx
2993bc3d5698SJohn Baldwin	subl	%eax,%ecx
2994bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
2995bc3d5698SJohn Baldwin	jnc	.L040pw_nc5
2996bc3d5698SJohn Baldwin
2997bc3d5698SJohn Baldwin	movl	24(%esi),%ecx
2998bc3d5698SJohn Baldwin	subl	%eax,%ecx
2999bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
3000bc3d5698SJohn Baldwin	jnc	.L041pw_nc6
3001bc3d5698SJohn Baldwin
3002bc3d5698SJohn Baldwin	movl	28(%esi),%ecx
3003bc3d5698SJohn Baldwin	subl	%eax,%ecx
3004bc3d5698SJohn Baldwin	movl	%ecx,28(%ebx)
3005bc3d5698SJohn Baldwin	jnc	.L042pw_nc7
3006bc3d5698SJohn Baldwin
3007bc3d5698SJohn Baldwin	addl	$32,%esi
3008bc3d5698SJohn Baldwin	addl	$32,%ebx
3009bc3d5698SJohn Baldwin	subl	$8,%ebp
3010bc3d5698SJohn Baldwin	jnz	.L034pw_pos_loop
3011bc3d5698SJohn Baldwin.L033pw_pos_finish:
3012bc3d5698SJohn Baldwin	movl	36(%esp),%ebp
3013bc3d5698SJohn Baldwin	andl	$7,%ebp
3014bc3d5698SJohn Baldwin	jz	.L029pw_end
3015bc3d5698SJohn Baldwin
3016bc3d5698SJohn Baldwin	movl	(%esi),%ecx
3017bc3d5698SJohn Baldwin	subl	%eax,%ecx
3018bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
3019bc3d5698SJohn Baldwin	jnc	.L043pw_tail_nc0
3020bc3d5698SJohn Baldwin	decl	%ebp
3021bc3d5698SJohn Baldwin	jz	.L029pw_end
3022bc3d5698SJohn Baldwin
3023bc3d5698SJohn Baldwin	movl	4(%esi),%ecx
3024bc3d5698SJohn Baldwin	subl	%eax,%ecx
3025bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
3026bc3d5698SJohn Baldwin	jnc	.L044pw_tail_nc1
3027bc3d5698SJohn Baldwin	decl	%ebp
3028bc3d5698SJohn Baldwin	jz	.L029pw_end
3029bc3d5698SJohn Baldwin
3030bc3d5698SJohn Baldwin	movl	8(%esi),%ecx
3031bc3d5698SJohn Baldwin	subl	%eax,%ecx
3032bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
3033bc3d5698SJohn Baldwin	jnc	.L045pw_tail_nc2
3034bc3d5698SJohn Baldwin	decl	%ebp
3035bc3d5698SJohn Baldwin	jz	.L029pw_end
3036bc3d5698SJohn Baldwin
3037bc3d5698SJohn Baldwin	movl	12(%esi),%ecx
3038bc3d5698SJohn Baldwin	subl	%eax,%ecx
3039bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
3040bc3d5698SJohn Baldwin	jnc	.L046pw_tail_nc3
3041bc3d5698SJohn Baldwin	decl	%ebp
3042bc3d5698SJohn Baldwin	jz	.L029pw_end
3043bc3d5698SJohn Baldwin
3044bc3d5698SJohn Baldwin	movl	16(%esi),%ecx
3045bc3d5698SJohn Baldwin	subl	%eax,%ecx
3046bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
3047bc3d5698SJohn Baldwin	jnc	.L047pw_tail_nc4
3048bc3d5698SJohn Baldwin	decl	%ebp
3049bc3d5698SJohn Baldwin	jz	.L029pw_end
3050bc3d5698SJohn Baldwin
3051bc3d5698SJohn Baldwin	movl	20(%esi),%ecx
3052bc3d5698SJohn Baldwin	subl	%eax,%ecx
3053bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
3054bc3d5698SJohn Baldwin	jnc	.L048pw_tail_nc5
3055bc3d5698SJohn Baldwin	decl	%ebp
3056bc3d5698SJohn Baldwin	jz	.L029pw_end
3057bc3d5698SJohn Baldwin
3058bc3d5698SJohn Baldwin	movl	24(%esi),%ecx
3059bc3d5698SJohn Baldwin	subl	%eax,%ecx
3060bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
3061bc3d5698SJohn Baldwin	jnc	.L049pw_tail_nc6
3062bc3d5698SJohn Baldwin	movl	$1,%eax
3063bc3d5698SJohn Baldwin	jmp	.L029pw_end
3064bc3d5698SJohn Baldwin.L050pw_nc_loop:
3065bc3d5698SJohn Baldwin	movl	(%esi),%ecx
3066bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
3067bc3d5698SJohn Baldwin.L035pw_nc0:
3068bc3d5698SJohn Baldwin	movl	4(%esi),%ecx
3069bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
3070bc3d5698SJohn Baldwin.L036pw_nc1:
3071bc3d5698SJohn Baldwin	movl	8(%esi),%ecx
3072bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
3073bc3d5698SJohn Baldwin.L037pw_nc2:
3074bc3d5698SJohn Baldwin	movl	12(%esi),%ecx
3075bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
3076bc3d5698SJohn Baldwin.L038pw_nc3:
3077bc3d5698SJohn Baldwin	movl	16(%esi),%ecx
3078bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
3079bc3d5698SJohn Baldwin.L039pw_nc4:
3080bc3d5698SJohn Baldwin	movl	20(%esi),%ecx
3081bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
3082bc3d5698SJohn Baldwin.L040pw_nc5:
3083bc3d5698SJohn Baldwin	movl	24(%esi),%ecx
3084bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
3085bc3d5698SJohn Baldwin.L041pw_nc6:
3086bc3d5698SJohn Baldwin	movl	28(%esi),%ecx
3087bc3d5698SJohn Baldwin	movl	%ecx,28(%ebx)
3088bc3d5698SJohn Baldwin.L042pw_nc7:
3089bc3d5698SJohn Baldwin
3090bc3d5698SJohn Baldwin	addl	$32,%esi
3091bc3d5698SJohn Baldwin	addl	$32,%ebx
3092bc3d5698SJohn Baldwin	subl	$8,%ebp
3093bc3d5698SJohn Baldwin	jnz	.L050pw_nc_loop
3094bc3d5698SJohn Baldwin	movl	36(%esp),%ebp
3095bc3d5698SJohn Baldwin	andl	$7,%ebp
3096bc3d5698SJohn Baldwin	jz	.L051pw_nc_end
3097bc3d5698SJohn Baldwin	movl	(%esi),%ecx
3098bc3d5698SJohn Baldwin	movl	%ecx,(%ebx)
3099bc3d5698SJohn Baldwin.L043pw_tail_nc0:
3100bc3d5698SJohn Baldwin	decl	%ebp
3101bc3d5698SJohn Baldwin	jz	.L051pw_nc_end
3102bc3d5698SJohn Baldwin	movl	4(%esi),%ecx
3103bc3d5698SJohn Baldwin	movl	%ecx,4(%ebx)
3104bc3d5698SJohn Baldwin.L044pw_tail_nc1:
3105bc3d5698SJohn Baldwin	decl	%ebp
3106bc3d5698SJohn Baldwin	jz	.L051pw_nc_end
3107bc3d5698SJohn Baldwin	movl	8(%esi),%ecx
3108bc3d5698SJohn Baldwin	movl	%ecx,8(%ebx)
3109bc3d5698SJohn Baldwin.L045pw_tail_nc2:
3110bc3d5698SJohn Baldwin	decl	%ebp
3111bc3d5698SJohn Baldwin	jz	.L051pw_nc_end
3112bc3d5698SJohn Baldwin	movl	12(%esi),%ecx
3113bc3d5698SJohn Baldwin	movl	%ecx,12(%ebx)
3114bc3d5698SJohn Baldwin.L046pw_tail_nc3:
3115bc3d5698SJohn Baldwin	decl	%ebp
3116bc3d5698SJohn Baldwin	jz	.L051pw_nc_end
3117bc3d5698SJohn Baldwin	movl	16(%esi),%ecx
3118bc3d5698SJohn Baldwin	movl	%ecx,16(%ebx)
3119bc3d5698SJohn Baldwin.L047pw_tail_nc4:
3120bc3d5698SJohn Baldwin	decl	%ebp
3121bc3d5698SJohn Baldwin	jz	.L051pw_nc_end
3122bc3d5698SJohn Baldwin	movl	20(%esi),%ecx
3123bc3d5698SJohn Baldwin	movl	%ecx,20(%ebx)
3124bc3d5698SJohn Baldwin.L048pw_tail_nc5:
3125bc3d5698SJohn Baldwin	decl	%ebp
3126bc3d5698SJohn Baldwin	jz	.L051pw_nc_end
3127bc3d5698SJohn Baldwin	movl	24(%esi),%ecx
3128bc3d5698SJohn Baldwin	movl	%ecx,24(%ebx)
3129bc3d5698SJohn Baldwin.L049pw_tail_nc6:
3130bc3d5698SJohn Baldwin.L051pw_nc_end:
3131bc3d5698SJohn Baldwin	movl	$0,%eax
3132bc3d5698SJohn Baldwin.L029pw_end:
3133bc3d5698SJohn Baldwin	popl	%edi
3134bc3d5698SJohn Baldwin	popl	%esi
3135bc3d5698SJohn Baldwin	popl	%ebx
3136bc3d5698SJohn Baldwin	popl	%ebp
3137bc3d5698SJohn Baldwin	ret
3138bc3d5698SJohn Baldwin.size	bn_sub_part_words,.-.L_bn_sub_part_words_begin
3139bc3d5698SJohn Baldwin.comm	OPENSSL_ia32cap_P,16,4
3140*c0855eaaSJohn Baldwin
3141*c0855eaaSJohn Baldwin	.section ".note.gnu.property", "a"
3142*c0855eaaSJohn Baldwin	.p2align 2
3143*c0855eaaSJohn Baldwin	.long 1f - 0f
3144*c0855eaaSJohn Baldwin	.long 4f - 1f
3145*c0855eaaSJohn Baldwin	.long 5
3146*c0855eaaSJohn Baldwin0:
3147*c0855eaaSJohn Baldwin	.asciz "GNU"
3148*c0855eaaSJohn Baldwin1:
3149*c0855eaaSJohn Baldwin	.p2align 2
3150*c0855eaaSJohn Baldwin	.long 0xc0000002
3151*c0855eaaSJohn Baldwin	.long 3f - 2f
3152*c0855eaaSJohn Baldwin2:
3153*c0855eaaSJohn Baldwin	.long 3
3154*c0855eaaSJohn Baldwin3:
3155*c0855eaaSJohn Baldwin	.p2align 2
3156*c0855eaaSJohn Baldwin4:
3157bc3d5698SJohn Baldwin#endif
3158