1305153Sjkim/* $FreeBSD$ */
2305153Sjkim/* Do not modify. This file is auto-generated from bn-586.pl. */
3299389Sjkim#ifdef PIC
4299389Sjkim.file	"bn-586.S"
595967Speter.text
6238405Sjkim.globl	bn_mul_add_words
7238405Sjkim.type	bn_mul_add_words,@function
8238405Sjkim.align	16
995967Speterbn_mul_add_words:
10238405Sjkim.L_bn_mul_add_words_begin:
11299389Sjkim	call	.L000PIC_me_up
12299389Sjkim.L000PIC_me_up:
13299389Sjkim	popl	%eax
14299389Sjkim	leal	OPENSSL_ia32cap_P-.L000PIC_me_up(%eax),%eax
15299389Sjkim	btl	$26,(%eax)
16299389Sjkim	jnc	.L001maw_non_sse2
17299389Sjkim	movl	4(%esp),%eax
18299389Sjkim	movl	8(%esp),%edx
19299389Sjkim	movl	12(%esp),%ecx
20299389Sjkim	movd	16(%esp),%mm0
21299389Sjkim	pxor	%mm1,%mm1
22299389Sjkim	jmp	.L002maw_sse2_entry
23299389Sjkim.align	16
24299389Sjkim.L003maw_sse2_unrolled:
25299389Sjkim	movd	(%eax),%mm3
26299389Sjkim	paddq	%mm3,%mm1
27299389Sjkim	movd	(%edx),%mm2
28299389Sjkim	pmuludq	%mm0,%mm2
29299389Sjkim	movd	4(%edx),%mm4
30299389Sjkim	pmuludq	%mm0,%mm4
31299389Sjkim	movd	8(%edx),%mm6
32299389Sjkim	pmuludq	%mm0,%mm6
33299389Sjkim	movd	12(%edx),%mm7
34299389Sjkim	pmuludq	%mm0,%mm7
35299389Sjkim	paddq	%mm2,%mm1
36299389Sjkim	movd	4(%eax),%mm3
37299389Sjkim	paddq	%mm4,%mm3
38299389Sjkim	movd	8(%eax),%mm5
39299389Sjkim	paddq	%mm6,%mm5
40299389Sjkim	movd	12(%eax),%mm4
41299389Sjkim	paddq	%mm4,%mm7
42299389Sjkim	movd	%mm1,(%eax)
43299389Sjkim	movd	16(%edx),%mm2
44299389Sjkim	pmuludq	%mm0,%mm2
45299389Sjkim	psrlq	$32,%mm1
46299389Sjkim	movd	20(%edx),%mm4
47299389Sjkim	pmuludq	%mm0,%mm4
48299389Sjkim	paddq	%mm3,%mm1
49299389Sjkim	movd	24(%edx),%mm6
50299389Sjkim	pmuludq	%mm0,%mm6
51299389Sjkim	movd	%mm1,4(%eax)
52299389Sjkim	psrlq	$32,%mm1
53299389Sjkim	movd	28(%edx),%mm3
54299389Sjkim	addl	$32,%edx
55299389Sjkim	pmuludq	%mm0,%mm3
56299389Sjkim	paddq	%mm5,%mm1
57299389Sjkim	movd	16(%eax),%mm5
58299389Sjkim	paddq	%mm5,%mm2
59299389Sjkim	movd	%mm1,8(%eax)
60299389Sjkim	psrlq	$32,%mm1
61299389Sjkim	paddq	%mm7,%mm1
62299389Sjkim	movd	20(%eax),%mm5
63299389Sjkim	paddq	%mm5,%mm4
64299389Sjkim	movd	%mm1,12(%eax)
65299389Sjkim	psrlq	$32,%mm1
66299389Sjkim	paddq	%mm2,%mm1
67299389Sjkim	movd	24(%eax),%mm5
68299389Sjkim	paddq	%mm5,%mm6
69299389Sjkim	movd	%mm1,16(%eax)
70299389Sjkim	psrlq	$32,%mm1
71299389Sjkim	paddq	%mm4,%mm1
72299389Sjkim	movd	28(%eax),%mm5
73299389Sjkim	paddq	%mm5,%mm3
74299389Sjkim	movd	%mm1,20(%eax)
75299389Sjkim	psrlq	$32,%mm1
76299389Sjkim	paddq	%mm6,%mm1
77299389Sjkim	movd	%mm1,24(%eax)
78299389Sjkim	psrlq	$32,%mm1
79299389Sjkim	paddq	%mm3,%mm1
80299389Sjkim	movd	%mm1,28(%eax)
81299389Sjkim	leal	32(%eax),%eax
82299389Sjkim	psrlq	$32,%mm1
83299389Sjkim	subl	$8,%ecx
84299389Sjkim	jz	.L004maw_sse2_exit
85299389Sjkim.L002maw_sse2_entry:
86299389Sjkim	testl	$4294967288,%ecx
87299389Sjkim	jnz	.L003maw_sse2_unrolled
88299389Sjkim.align	4
89299389Sjkim.L005maw_sse2_loop:
90299389Sjkim	movd	(%edx),%mm2
91299389Sjkim	movd	(%eax),%mm3
92299389Sjkim	pmuludq	%mm0,%mm2
93299389Sjkim	leal	4(%edx),%edx
94299389Sjkim	paddq	%mm3,%mm1
95299389Sjkim	paddq	%mm2,%mm1
96299389Sjkim	movd	%mm1,(%eax)
97299389Sjkim	subl	$1,%ecx
98299389Sjkim	psrlq	$32,%mm1
99299389Sjkim	leal	4(%eax),%eax
100299389Sjkim	jnz	.L005maw_sse2_loop
101299389Sjkim.L004maw_sse2_exit:
102299389Sjkim	movd	%mm1,%eax
103299389Sjkim	emms
104299389Sjkim	ret
105299389Sjkim.align	16
106299389Sjkim.L001maw_non_sse2:
107299389Sjkim	pushl	%ebp
108299389Sjkim	pushl	%ebx
109299389Sjkim	pushl	%esi
110299389Sjkim	pushl	%edi
111299389Sjkim
112299389Sjkim	xorl	%esi,%esi
113299389Sjkim	movl	20(%esp),%edi
114299389Sjkim	movl	28(%esp),%ecx
115299389Sjkim	movl	24(%esp),%ebx
116299389Sjkim	andl	$4294967288,%ecx
117299389Sjkim	movl	32(%esp),%ebp
118299389Sjkim	pushl	%ecx
119299389Sjkim	jz	.L006maw_finish
120299389Sjkim.align	16
121299389Sjkim.L007maw_loop:
122299389Sjkim
123299389Sjkim	movl	(%ebx),%eax
124299389Sjkim	mull	%ebp
125299389Sjkim	addl	%esi,%eax
126299389Sjkim	adcl	$0,%edx
127299389Sjkim	addl	(%edi),%eax
128299389Sjkim	adcl	$0,%edx
129299389Sjkim	movl	%eax,(%edi)
130299389Sjkim	movl	%edx,%esi
131299389Sjkim
132299389Sjkim	movl	4(%ebx),%eax
133299389Sjkim	mull	%ebp
134299389Sjkim	addl	%esi,%eax
135299389Sjkim	adcl	$0,%edx
136299389Sjkim	addl	4(%edi),%eax
137299389Sjkim	adcl	$0,%edx
138299389Sjkim	movl	%eax,4(%edi)
139299389Sjkim	movl	%edx,%esi
140299389Sjkim
141299389Sjkim	movl	8(%ebx),%eax
142299389Sjkim	mull	%ebp
143299389Sjkim	addl	%esi,%eax
144299389Sjkim	adcl	$0,%edx
145299389Sjkim	addl	8(%edi),%eax
146299389Sjkim	adcl	$0,%edx
147299389Sjkim	movl	%eax,8(%edi)
148299389Sjkim	movl	%edx,%esi
149299389Sjkim
150299389Sjkim	movl	12(%ebx),%eax
151299389Sjkim	mull	%ebp
152299389Sjkim	addl	%esi,%eax
153299389Sjkim	adcl	$0,%edx
154299389Sjkim	addl	12(%edi),%eax
155299389Sjkim	adcl	$0,%edx
156299389Sjkim	movl	%eax,12(%edi)
157299389Sjkim	movl	%edx,%esi
158299389Sjkim
159299389Sjkim	movl	16(%ebx),%eax
160299389Sjkim	mull	%ebp
161299389Sjkim	addl	%esi,%eax
162299389Sjkim	adcl	$0,%edx
163299389Sjkim	addl	16(%edi),%eax
164299389Sjkim	adcl	$0,%edx
165299389Sjkim	movl	%eax,16(%edi)
166299389Sjkim	movl	%edx,%esi
167299389Sjkim
168299389Sjkim	movl	20(%ebx),%eax
169299389Sjkim	mull	%ebp
170299389Sjkim	addl	%esi,%eax
171299389Sjkim	adcl	$0,%edx
172299389Sjkim	addl	20(%edi),%eax
173299389Sjkim	adcl	$0,%edx
174299389Sjkim	movl	%eax,20(%edi)
175299389Sjkim	movl	%edx,%esi
176299389Sjkim
177299389Sjkim	movl	24(%ebx),%eax
178299389Sjkim	mull	%ebp
179299389Sjkim	addl	%esi,%eax
180299389Sjkim	adcl	$0,%edx
181299389Sjkim	addl	24(%edi),%eax
182299389Sjkim	adcl	$0,%edx
183299389Sjkim	movl	%eax,24(%edi)
184299389Sjkim	movl	%edx,%esi
185299389Sjkim
186299389Sjkim	movl	28(%ebx),%eax
187299389Sjkim	mull	%ebp
188299389Sjkim	addl	%esi,%eax
189299389Sjkim	adcl	$0,%edx
190299389Sjkim	addl	28(%edi),%eax
191299389Sjkim	adcl	$0,%edx
192299389Sjkim	movl	%eax,28(%edi)
193299389Sjkim	movl	%edx,%esi
194299389Sjkim
195299389Sjkim	subl	$8,%ecx
196299389Sjkim	leal	32(%ebx),%ebx
197299389Sjkim	leal	32(%edi),%edi
198299389Sjkim	jnz	.L007maw_loop
199299389Sjkim.L006maw_finish:
200299389Sjkim	movl	32(%esp),%ecx
201299389Sjkim	andl	$7,%ecx
202299389Sjkim	jnz	.L008maw_finish2
203299389Sjkim	jmp	.L009maw_end
204299389Sjkim.L008maw_finish2:
205299389Sjkim
206299389Sjkim	movl	(%ebx),%eax
207299389Sjkim	mull	%ebp
208299389Sjkim	addl	%esi,%eax
209299389Sjkim	adcl	$0,%edx
210299389Sjkim	addl	(%edi),%eax
211299389Sjkim	adcl	$0,%edx
212299389Sjkim	decl	%ecx
213299389Sjkim	movl	%eax,(%edi)
214299389Sjkim	movl	%edx,%esi
215299389Sjkim	jz	.L009maw_end
216299389Sjkim
217299389Sjkim	movl	4(%ebx),%eax
218299389Sjkim	mull	%ebp
219299389Sjkim	addl	%esi,%eax
220299389Sjkim	adcl	$0,%edx
221299389Sjkim	addl	4(%edi),%eax
222299389Sjkim	adcl	$0,%edx
223299389Sjkim	decl	%ecx
224299389Sjkim	movl	%eax,4(%edi)
225299389Sjkim	movl	%edx,%esi
226299389Sjkim	jz	.L009maw_end
227299389Sjkim
228299389Sjkim	movl	8(%ebx),%eax
229299389Sjkim	mull	%ebp
230299389Sjkim	addl	%esi,%eax
231299389Sjkim	adcl	$0,%edx
232299389Sjkim	addl	8(%edi),%eax
233299389Sjkim	adcl	$0,%edx
234299389Sjkim	decl	%ecx
235299389Sjkim	movl	%eax,8(%edi)
236299389Sjkim	movl	%edx,%esi
237299389Sjkim	jz	.L009maw_end
238299389Sjkim
239299389Sjkim	movl	12(%ebx),%eax
240299389Sjkim	mull	%ebp
241299389Sjkim	addl	%esi,%eax
242299389Sjkim	adcl	$0,%edx
243299389Sjkim	addl	12(%edi),%eax
244299389Sjkim	adcl	$0,%edx
245299389Sjkim	decl	%ecx
246299389Sjkim	movl	%eax,12(%edi)
247299389Sjkim	movl	%edx,%esi
248299389Sjkim	jz	.L009maw_end
249299389Sjkim
250299389Sjkim	movl	16(%ebx),%eax
251299389Sjkim	mull	%ebp
252299389Sjkim	addl	%esi,%eax
253299389Sjkim	adcl	$0,%edx
254299389Sjkim	addl	16(%edi),%eax
255299389Sjkim	adcl	$0,%edx
256299389Sjkim	decl	%ecx
257299389Sjkim	movl	%eax,16(%edi)
258299389Sjkim	movl	%edx,%esi
259299389Sjkim	jz	.L009maw_end
260299389Sjkim
261299389Sjkim	movl	20(%ebx),%eax
262299389Sjkim	mull	%ebp
263299389Sjkim	addl	%esi,%eax
264299389Sjkim	adcl	$0,%edx
265299389Sjkim	addl	20(%edi),%eax
266299389Sjkim	adcl	$0,%edx
267299389Sjkim	decl	%ecx
268299389Sjkim	movl	%eax,20(%edi)
269299389Sjkim	movl	%edx,%esi
270299389Sjkim	jz	.L009maw_end
271299389Sjkim
272299389Sjkim	movl	24(%ebx),%eax
273299389Sjkim	mull	%ebp
274299389Sjkim	addl	%esi,%eax
275299389Sjkim	adcl	$0,%edx
276299389Sjkim	addl	24(%edi),%eax
277299389Sjkim	adcl	$0,%edx
278299389Sjkim	movl	%eax,24(%edi)
279299389Sjkim	movl	%edx,%esi
280299389Sjkim.L009maw_end:
281299389Sjkim	movl	%esi,%eax
282299389Sjkim	popl	%ecx
283299389Sjkim	popl	%edi
284299389Sjkim	popl	%esi
285299389Sjkim	popl	%ebx
286299389Sjkim	popl	%ebp
287299389Sjkim	ret
288299389Sjkim.size	bn_mul_add_words,.-.L_bn_mul_add_words_begin
289299389Sjkim.globl	bn_mul_words
290299389Sjkim.type	bn_mul_words,@function
291299389Sjkim.align	16
292299389Sjkimbn_mul_words:
293299389Sjkim.L_bn_mul_words_begin:
294299389Sjkim	call	.L010PIC_me_up
295299389Sjkim.L010PIC_me_up:
296299389Sjkim	popl	%eax
297299389Sjkim	leal	OPENSSL_ia32cap_P-.L010PIC_me_up(%eax),%eax
298299389Sjkim	btl	$26,(%eax)
299299389Sjkim	jnc	.L011mw_non_sse2
300299389Sjkim	movl	4(%esp),%eax
301299389Sjkim	movl	8(%esp),%edx
302299389Sjkim	movl	12(%esp),%ecx
303299389Sjkim	movd	16(%esp),%mm0
304299389Sjkim	pxor	%mm1,%mm1
305299389Sjkim.align	16
306299389Sjkim.L012mw_sse2_loop:
307299389Sjkim	movd	(%edx),%mm2
308299389Sjkim	pmuludq	%mm0,%mm2
309299389Sjkim	leal	4(%edx),%edx
310299389Sjkim	paddq	%mm2,%mm1
311299389Sjkim	movd	%mm1,(%eax)
312299389Sjkim	subl	$1,%ecx
313299389Sjkim	psrlq	$32,%mm1
314299389Sjkim	leal	4(%eax),%eax
315299389Sjkim	jnz	.L012mw_sse2_loop
316299389Sjkim	movd	%mm1,%eax
317299389Sjkim	emms
318299389Sjkim	ret
319299389Sjkim.align	16
320299389Sjkim.L011mw_non_sse2:
321299389Sjkim	pushl	%ebp
322299389Sjkim	pushl	%ebx
323299389Sjkim	pushl	%esi
324299389Sjkim	pushl	%edi
325299389Sjkim
326299389Sjkim	xorl	%esi,%esi
327299389Sjkim	movl	20(%esp),%edi
328299389Sjkim	movl	24(%esp),%ebx
329299389Sjkim	movl	28(%esp),%ebp
330299389Sjkim	movl	32(%esp),%ecx
331299389Sjkim	andl	$4294967288,%ebp
332299389Sjkim	jz	.L013mw_finish
333299389Sjkim.L014mw_loop:
334299389Sjkim
335299389Sjkim	movl	(%ebx),%eax
336299389Sjkim	mull	%ecx
337299389Sjkim	addl	%esi,%eax
338299389Sjkim	adcl	$0,%edx
339299389Sjkim	movl	%eax,(%edi)
340299389Sjkim	movl	%edx,%esi
341299389Sjkim
342299389Sjkim	movl	4(%ebx),%eax
343299389Sjkim	mull	%ecx
344299389Sjkim	addl	%esi,%eax
345299389Sjkim	adcl	$0,%edx
346299389Sjkim	movl	%eax,4(%edi)
347299389Sjkim	movl	%edx,%esi
348299389Sjkim
349299389Sjkim	movl	8(%ebx),%eax
350299389Sjkim	mull	%ecx
351299389Sjkim	addl	%esi,%eax
352299389Sjkim	adcl	$0,%edx
353299389Sjkim	movl	%eax,8(%edi)
354299389Sjkim	movl	%edx,%esi
355299389Sjkim
356299389Sjkim	movl	12(%ebx),%eax
357299389Sjkim	mull	%ecx
358299389Sjkim	addl	%esi,%eax
359299389Sjkim	adcl	$0,%edx
360299389Sjkim	movl	%eax,12(%edi)
361299389Sjkim	movl	%edx,%esi
362299389Sjkim
363299389Sjkim	movl	16(%ebx),%eax
364299389Sjkim	mull	%ecx
365299389Sjkim	addl	%esi,%eax
366299389Sjkim	adcl	$0,%edx
367299389Sjkim	movl	%eax,16(%edi)
368299389Sjkim	movl	%edx,%esi
369299389Sjkim
370299389Sjkim	movl	20(%ebx),%eax
371299389Sjkim	mull	%ecx
372299389Sjkim	addl	%esi,%eax
373299389Sjkim	adcl	$0,%edx
374299389Sjkim	movl	%eax,20(%edi)
375299389Sjkim	movl	%edx,%esi
376299389Sjkim
377299389Sjkim	movl	24(%ebx),%eax
378299389Sjkim	mull	%ecx
379299389Sjkim	addl	%esi,%eax
380299389Sjkim	adcl	$0,%edx
381299389Sjkim	movl	%eax,24(%edi)
382299389Sjkim	movl	%edx,%esi
383299389Sjkim
384299389Sjkim	movl	28(%ebx),%eax
385299389Sjkim	mull	%ecx
386299389Sjkim	addl	%esi,%eax
387299389Sjkim	adcl	$0,%edx
388299389Sjkim	movl	%eax,28(%edi)
389299389Sjkim	movl	%edx,%esi
390299389Sjkim
391299389Sjkim	addl	$32,%ebx
392299389Sjkim	addl	$32,%edi
393299389Sjkim	subl	$8,%ebp
394299389Sjkim	jz	.L013mw_finish
395299389Sjkim	jmp	.L014mw_loop
396299389Sjkim.L013mw_finish:
397299389Sjkim	movl	28(%esp),%ebp
398299389Sjkim	andl	$7,%ebp
399299389Sjkim	jnz	.L015mw_finish2
400299389Sjkim	jmp	.L016mw_end
401299389Sjkim.L015mw_finish2:
402299389Sjkim
403299389Sjkim	movl	(%ebx),%eax
404299389Sjkim	mull	%ecx
405299389Sjkim	addl	%esi,%eax
406299389Sjkim	adcl	$0,%edx
407299389Sjkim	movl	%eax,(%edi)
408299389Sjkim	movl	%edx,%esi
409299389Sjkim	decl	%ebp
410299389Sjkim	jz	.L016mw_end
411299389Sjkim
412299389Sjkim	movl	4(%ebx),%eax
413299389Sjkim	mull	%ecx
414299389Sjkim	addl	%esi,%eax
415299389Sjkim	adcl	$0,%edx
416299389Sjkim	movl	%eax,4(%edi)
417299389Sjkim	movl	%edx,%esi
418299389Sjkim	decl	%ebp
419299389Sjkim	jz	.L016mw_end
420299389Sjkim
421299389Sjkim	movl	8(%ebx),%eax
422299389Sjkim	mull	%ecx
423299389Sjkim	addl	%esi,%eax
424299389Sjkim	adcl	$0,%edx
425299389Sjkim	movl	%eax,8(%edi)
426299389Sjkim	movl	%edx,%esi
427299389Sjkim	decl	%ebp
428299389Sjkim	jz	.L016mw_end
429299389Sjkim
430299389Sjkim	movl	12(%ebx),%eax
431299389Sjkim	mull	%ecx
432299389Sjkim	addl	%esi,%eax
433299389Sjkim	adcl	$0,%edx
434299389Sjkim	movl	%eax,12(%edi)
435299389Sjkim	movl	%edx,%esi
436299389Sjkim	decl	%ebp
437299389Sjkim	jz	.L016mw_end
438299389Sjkim
439299389Sjkim	movl	16(%ebx),%eax
440299389Sjkim	mull	%ecx
441299389Sjkim	addl	%esi,%eax
442299389Sjkim	adcl	$0,%edx
443299389Sjkim	movl	%eax,16(%edi)
444299389Sjkim	movl	%edx,%esi
445299389Sjkim	decl	%ebp
446299389Sjkim	jz	.L016mw_end
447299389Sjkim
448299389Sjkim	movl	20(%ebx),%eax
449299389Sjkim	mull	%ecx
450299389Sjkim	addl	%esi,%eax
451299389Sjkim	adcl	$0,%edx
452299389Sjkim	movl	%eax,20(%edi)
453299389Sjkim	movl	%edx,%esi
454299389Sjkim	decl	%ebp
455299389Sjkim	jz	.L016mw_end
456299389Sjkim
457299389Sjkim	movl	24(%ebx),%eax
458299389Sjkim	mull	%ecx
459299389Sjkim	addl	%esi,%eax
460299389Sjkim	adcl	$0,%edx
461299389Sjkim	movl	%eax,24(%edi)
462299389Sjkim	movl	%edx,%esi
463299389Sjkim.L016mw_end:
464299389Sjkim	movl	%esi,%eax
465299389Sjkim	popl	%edi
466299389Sjkim	popl	%esi
467299389Sjkim	popl	%ebx
468299389Sjkim	popl	%ebp
469299389Sjkim	ret
470299389Sjkim.size	bn_mul_words,.-.L_bn_mul_words_begin
471299389Sjkim.globl	bn_sqr_words
472299389Sjkim.type	bn_sqr_words,@function
473299389Sjkim.align	16
474299389Sjkimbn_sqr_words:
475299389Sjkim.L_bn_sqr_words_begin:
476299389Sjkim	call	.L017PIC_me_up
477299389Sjkim.L017PIC_me_up:
478299389Sjkim	popl	%eax
479299389Sjkim	leal	OPENSSL_ia32cap_P-.L017PIC_me_up(%eax),%eax
480299389Sjkim	btl	$26,(%eax)
481299389Sjkim	jnc	.L018sqr_non_sse2
482299389Sjkim	movl	4(%esp),%eax
483299389Sjkim	movl	8(%esp),%edx
484299389Sjkim	movl	12(%esp),%ecx
485299389Sjkim.align	16
486299389Sjkim.L019sqr_sse2_loop:
487299389Sjkim	movd	(%edx),%mm0
488299389Sjkim	pmuludq	%mm0,%mm0
489299389Sjkim	leal	4(%edx),%edx
490299389Sjkim	movq	%mm0,(%eax)
491299389Sjkim	subl	$1,%ecx
492299389Sjkim	leal	8(%eax),%eax
493299389Sjkim	jnz	.L019sqr_sse2_loop
494299389Sjkim	emms
495299389Sjkim	ret
496299389Sjkim.align	16
497299389Sjkim.L018sqr_non_sse2:
498299389Sjkim	pushl	%ebp
499299389Sjkim	pushl	%ebx
500299389Sjkim	pushl	%esi
501299389Sjkim	pushl	%edi
502299389Sjkim
503299389Sjkim	movl	20(%esp),%esi
504299389Sjkim	movl	24(%esp),%edi
505299389Sjkim	movl	28(%esp),%ebx
506299389Sjkim	andl	$4294967288,%ebx
507299389Sjkim	jz	.L020sw_finish
508299389Sjkim.L021sw_loop:
509299389Sjkim
510299389Sjkim	movl	(%edi),%eax
511299389Sjkim	mull	%eax
512299389Sjkim	movl	%eax,(%esi)
513299389Sjkim	movl	%edx,4(%esi)
514299389Sjkim
515299389Sjkim	movl	4(%edi),%eax
516299389Sjkim	mull	%eax
517299389Sjkim	movl	%eax,8(%esi)
518299389Sjkim	movl	%edx,12(%esi)
519299389Sjkim
520299389Sjkim	movl	8(%edi),%eax
521299389Sjkim	mull	%eax
522299389Sjkim	movl	%eax,16(%esi)
523299389Sjkim	movl	%edx,20(%esi)
524299389Sjkim
525299389Sjkim	movl	12(%edi),%eax
526299389Sjkim	mull	%eax
527299389Sjkim	movl	%eax,24(%esi)
528299389Sjkim	movl	%edx,28(%esi)
529299389Sjkim
530299389Sjkim	movl	16(%edi),%eax
531299389Sjkim	mull	%eax
532299389Sjkim	movl	%eax,32(%esi)
533299389Sjkim	movl	%edx,36(%esi)
534299389Sjkim
535299389Sjkim	movl	20(%edi),%eax
536299389Sjkim	mull	%eax
537299389Sjkim	movl	%eax,40(%esi)
538299389Sjkim	movl	%edx,44(%esi)
539299389Sjkim
540299389Sjkim	movl	24(%edi),%eax
541299389Sjkim	mull	%eax
542299389Sjkim	movl	%eax,48(%esi)
543299389Sjkim	movl	%edx,52(%esi)
544299389Sjkim
545299389Sjkim	movl	28(%edi),%eax
546299389Sjkim	mull	%eax
547299389Sjkim	movl	%eax,56(%esi)
548299389Sjkim	movl	%edx,60(%esi)
549299389Sjkim
550299389Sjkim	addl	$32,%edi
551299389Sjkim	addl	$64,%esi
552299389Sjkim	subl	$8,%ebx
553299389Sjkim	jnz	.L021sw_loop
554299389Sjkim.L020sw_finish:
555299389Sjkim	movl	28(%esp),%ebx
556299389Sjkim	andl	$7,%ebx
557299389Sjkim	jz	.L022sw_end
558299389Sjkim
559299389Sjkim	movl	(%edi),%eax
560299389Sjkim	mull	%eax
561299389Sjkim	movl	%eax,(%esi)
562299389Sjkim	decl	%ebx
563299389Sjkim	movl	%edx,4(%esi)
564299389Sjkim	jz	.L022sw_end
565299389Sjkim
566299389Sjkim	movl	4(%edi),%eax
567299389Sjkim	mull	%eax
568299389Sjkim	movl	%eax,8(%esi)
569299389Sjkim	decl	%ebx
570299389Sjkim	movl	%edx,12(%esi)
571299389Sjkim	jz	.L022sw_end
572299389Sjkim
573299389Sjkim	movl	8(%edi),%eax
574299389Sjkim	mull	%eax
575299389Sjkim	movl	%eax,16(%esi)
576299389Sjkim	decl	%ebx
577299389Sjkim	movl	%edx,20(%esi)
578299389Sjkim	jz	.L022sw_end
579299389Sjkim
580299389Sjkim	movl	12(%edi),%eax
581299389Sjkim	mull	%eax
582299389Sjkim	movl	%eax,24(%esi)
583299389Sjkim	decl	%ebx
584299389Sjkim	movl	%edx,28(%esi)
585299389Sjkim	jz	.L022sw_end
586299389Sjkim
587299389Sjkim	movl	16(%edi),%eax
588299389Sjkim	mull	%eax
589299389Sjkim	movl	%eax,32(%esi)
590299389Sjkim	decl	%ebx
591299389Sjkim	movl	%edx,36(%esi)
592299389Sjkim	jz	.L022sw_end
593299389Sjkim
594299389Sjkim	movl	20(%edi),%eax
595299389Sjkim	mull	%eax
596299389Sjkim	movl	%eax,40(%esi)
597299389Sjkim	decl	%ebx
598299389Sjkim	movl	%edx,44(%esi)
599299389Sjkim	jz	.L022sw_end
600299389Sjkim
601299389Sjkim	movl	24(%edi),%eax
602299389Sjkim	mull	%eax
603299389Sjkim	movl	%eax,48(%esi)
604299389Sjkim	movl	%edx,52(%esi)
605299389Sjkim.L022sw_end:
606299389Sjkim	popl	%edi
607299389Sjkim	popl	%esi
608299389Sjkim	popl	%ebx
609299389Sjkim	popl	%ebp
610299389Sjkim	ret
611299389Sjkim.size	bn_sqr_words,.-.L_bn_sqr_words_begin
612299389Sjkim.globl	bn_div_words
613299389Sjkim.type	bn_div_words,@function
614299389Sjkim.align	16
615299389Sjkimbn_div_words:
616299389Sjkim.L_bn_div_words_begin:
617299389Sjkim	movl	4(%esp),%edx
618299389Sjkim	movl	8(%esp),%eax
619299389Sjkim	movl	12(%esp),%ecx
620299389Sjkim	divl	%ecx
621299389Sjkim	ret
622299389Sjkim.size	bn_div_words,.-.L_bn_div_words_begin
623299389Sjkim.globl	bn_add_words
624299389Sjkim.type	bn_add_words,@function
625299389Sjkim.align	16
626299389Sjkimbn_add_words:
627299389Sjkim.L_bn_add_words_begin:
628299389Sjkim	pushl	%ebp
629299389Sjkim	pushl	%ebx
630299389Sjkim	pushl	%esi
631299389Sjkim	pushl	%edi
632299389Sjkim
633299389Sjkim	movl	20(%esp),%ebx
634299389Sjkim	movl	24(%esp),%esi
635299389Sjkim	movl	28(%esp),%edi
636299389Sjkim	movl	32(%esp),%ebp
637299389Sjkim	xorl	%eax,%eax
638299389Sjkim	andl	$4294967288,%ebp
639299389Sjkim	jz	.L023aw_finish
640299389Sjkim.L024aw_loop:
641299389Sjkim
642299389Sjkim	movl	(%esi),%ecx
643299389Sjkim	movl	(%edi),%edx
644299389Sjkim	addl	%eax,%ecx
645299389Sjkim	movl	$0,%eax
646299389Sjkim	adcl	%eax,%eax
647299389Sjkim	addl	%edx,%ecx
648299389Sjkim	adcl	$0,%eax
649299389Sjkim	movl	%ecx,(%ebx)
650299389Sjkim
651299389Sjkim	movl	4(%esi),%ecx
652299389Sjkim	movl	4(%edi),%edx
653299389Sjkim	addl	%eax,%ecx
654299389Sjkim	movl	$0,%eax
655299389Sjkim	adcl	%eax,%eax
656299389Sjkim	addl	%edx,%ecx
657299389Sjkim	adcl	$0,%eax
658299389Sjkim	movl	%ecx,4(%ebx)
659299389Sjkim
660299389Sjkim	movl	8(%esi),%ecx
661299389Sjkim	movl	8(%edi),%edx
662299389Sjkim	addl	%eax,%ecx
663299389Sjkim	movl	$0,%eax
664299389Sjkim	adcl	%eax,%eax
665299389Sjkim	addl	%edx,%ecx
666299389Sjkim	adcl	$0,%eax
667299389Sjkim	movl	%ecx,8(%ebx)
668299389Sjkim
669299389Sjkim	movl	12(%esi),%ecx
670299389Sjkim	movl	12(%edi),%edx
671299389Sjkim	addl	%eax,%ecx
672299389Sjkim	movl	$0,%eax
673299389Sjkim	adcl	%eax,%eax
674299389Sjkim	addl	%edx,%ecx
675299389Sjkim	adcl	$0,%eax
676299389Sjkim	movl	%ecx,12(%ebx)
677299389Sjkim
678299389Sjkim	movl	16(%esi),%ecx
679299389Sjkim	movl	16(%edi),%edx
680299389Sjkim	addl	%eax,%ecx
681299389Sjkim	movl	$0,%eax
682299389Sjkim	adcl	%eax,%eax
683299389Sjkim	addl	%edx,%ecx
684299389Sjkim	adcl	$0,%eax
685299389Sjkim	movl	%ecx,16(%ebx)
686299389Sjkim
687299389Sjkim	movl	20(%esi),%ecx
688299389Sjkim	movl	20(%edi),%edx
689299389Sjkim	addl	%eax,%ecx
690299389Sjkim	movl	$0,%eax
691299389Sjkim	adcl	%eax,%eax
692299389Sjkim	addl	%edx,%ecx
693299389Sjkim	adcl	$0,%eax
694299389Sjkim	movl	%ecx,20(%ebx)
695299389Sjkim
696299389Sjkim	movl	24(%esi),%ecx
697299389Sjkim	movl	24(%edi),%edx
698299389Sjkim	addl	%eax,%ecx
699299389Sjkim	movl	$0,%eax
700299389Sjkim	adcl	%eax,%eax
701299389Sjkim	addl	%edx,%ecx
702299389Sjkim	adcl	$0,%eax
703299389Sjkim	movl	%ecx,24(%ebx)
704299389Sjkim
705299389Sjkim	movl	28(%esi),%ecx
706299389Sjkim	movl	28(%edi),%edx
707299389Sjkim	addl	%eax,%ecx
708299389Sjkim	movl	$0,%eax
709299389Sjkim	adcl	%eax,%eax
710299389Sjkim	addl	%edx,%ecx
711299389Sjkim	adcl	$0,%eax
712299389Sjkim	movl	%ecx,28(%ebx)
713299389Sjkim
714299389Sjkim	addl	$32,%esi
715299389Sjkim	addl	$32,%edi
716299389Sjkim	addl	$32,%ebx
717299389Sjkim	subl	$8,%ebp
718299389Sjkim	jnz	.L024aw_loop
719299389Sjkim.L023aw_finish:
720299389Sjkim	movl	32(%esp),%ebp
721299389Sjkim	andl	$7,%ebp
722299389Sjkim	jz	.L025aw_end
723299389Sjkim
724299389Sjkim	movl	(%esi),%ecx
725299389Sjkim	movl	(%edi),%edx
726299389Sjkim	addl	%eax,%ecx
727299389Sjkim	movl	$0,%eax
728299389Sjkim	adcl	%eax,%eax
729299389Sjkim	addl	%edx,%ecx
730299389Sjkim	adcl	$0,%eax
731299389Sjkim	decl	%ebp
732299389Sjkim	movl	%ecx,(%ebx)
733299389Sjkim	jz	.L025aw_end
734299389Sjkim
735299389Sjkim	movl	4(%esi),%ecx
736299389Sjkim	movl	4(%edi),%edx
737299389Sjkim	addl	%eax,%ecx
738299389Sjkim	movl	$0,%eax
739299389Sjkim	adcl	%eax,%eax
740299389Sjkim	addl	%edx,%ecx
741299389Sjkim	adcl	$0,%eax
742299389Sjkim	decl	%ebp
743299389Sjkim	movl	%ecx,4(%ebx)
744299389Sjkim	jz	.L025aw_end
745299389Sjkim
746299389Sjkim	movl	8(%esi),%ecx
747299389Sjkim	movl	8(%edi),%edx
748299389Sjkim	addl	%eax,%ecx
749299389Sjkim	movl	$0,%eax
750299389Sjkim	adcl	%eax,%eax
751299389Sjkim	addl	%edx,%ecx
752299389Sjkim	adcl	$0,%eax
753299389Sjkim	decl	%ebp
754299389Sjkim	movl	%ecx,8(%ebx)
755299389Sjkim	jz	.L025aw_end
756299389Sjkim
757299389Sjkim	movl	12(%esi),%ecx
758299389Sjkim	movl	12(%edi),%edx
759299389Sjkim	addl	%eax,%ecx
760299389Sjkim	movl	$0,%eax
761299389Sjkim	adcl	%eax,%eax
762299389Sjkim	addl	%edx,%ecx
763299389Sjkim	adcl	$0,%eax
764299389Sjkim	decl	%ebp
765299389Sjkim	movl	%ecx,12(%ebx)
766299389Sjkim	jz	.L025aw_end
767299389Sjkim
768299389Sjkim	movl	16(%esi),%ecx
769299389Sjkim	movl	16(%edi),%edx
770299389Sjkim	addl	%eax,%ecx
771299389Sjkim	movl	$0,%eax
772299389Sjkim	adcl	%eax,%eax
773299389Sjkim	addl	%edx,%ecx
774299389Sjkim	adcl	$0,%eax
775299389Sjkim	decl	%ebp
776299389Sjkim	movl	%ecx,16(%ebx)
777299389Sjkim	jz	.L025aw_end
778299389Sjkim
779299389Sjkim	movl	20(%esi),%ecx
780299389Sjkim	movl	20(%edi),%edx
781299389Sjkim	addl	%eax,%ecx
782299389Sjkim	movl	$0,%eax
783299389Sjkim	adcl	%eax,%eax
784299389Sjkim	addl	%edx,%ecx
785299389Sjkim	adcl	$0,%eax
786299389Sjkim	decl	%ebp
787299389Sjkim	movl	%ecx,20(%ebx)
788299389Sjkim	jz	.L025aw_end
789299389Sjkim
790299389Sjkim	movl	24(%esi),%ecx
791299389Sjkim	movl	24(%edi),%edx
792299389Sjkim	addl	%eax,%ecx
793299389Sjkim	movl	$0,%eax
794299389Sjkim	adcl	%eax,%eax
795299389Sjkim	addl	%edx,%ecx
796299389Sjkim	adcl	$0,%eax
797299389Sjkim	movl	%ecx,24(%ebx)
798299389Sjkim.L025aw_end:
799299389Sjkim	popl	%edi
800299389Sjkim	popl	%esi
801299389Sjkim	popl	%ebx
802299389Sjkim	popl	%ebp
803299389Sjkim	ret
804299389Sjkim.size	bn_add_words,.-.L_bn_add_words_begin
805299389Sjkim.globl	bn_sub_words
806299389Sjkim.type	bn_sub_words,@function
807299389Sjkim.align	16
808299389Sjkimbn_sub_words:
809299389Sjkim.L_bn_sub_words_begin:
810299389Sjkim	pushl	%ebp
811299389Sjkim	pushl	%ebx
812299389Sjkim	pushl	%esi
813299389Sjkim	pushl	%edi
814299389Sjkim
815299389Sjkim	movl	20(%esp),%ebx
816299389Sjkim	movl	24(%esp),%esi
817299389Sjkim	movl	28(%esp),%edi
818299389Sjkim	movl	32(%esp),%ebp
819299389Sjkim	xorl	%eax,%eax
820299389Sjkim	andl	$4294967288,%ebp
821299389Sjkim	jz	.L026aw_finish
822299389Sjkim.L027aw_loop:
823299389Sjkim
824299389Sjkim	movl	(%esi),%ecx
825299389Sjkim	movl	(%edi),%edx
826299389Sjkim	subl	%eax,%ecx
827299389Sjkim	movl	$0,%eax
828299389Sjkim	adcl	%eax,%eax
829299389Sjkim	subl	%edx,%ecx
830299389Sjkim	adcl	$0,%eax
831299389Sjkim	movl	%ecx,(%ebx)
832299389Sjkim
833299389Sjkim	movl	4(%esi),%ecx
834299389Sjkim	movl	4(%edi),%edx
835299389Sjkim	subl	%eax,%ecx
836299389Sjkim	movl	$0,%eax
837299389Sjkim	adcl	%eax,%eax
838299389Sjkim	subl	%edx,%ecx
839299389Sjkim	adcl	$0,%eax
840299389Sjkim	movl	%ecx,4(%ebx)
841299389Sjkim
842299389Sjkim	movl	8(%esi),%ecx
843299389Sjkim	movl	8(%edi),%edx
844299389Sjkim	subl	%eax,%ecx
845299389Sjkim	movl	$0,%eax
846299389Sjkim	adcl	%eax,%eax
847299389Sjkim	subl	%edx,%ecx
848299389Sjkim	adcl	$0,%eax
849299389Sjkim	movl	%ecx,8(%ebx)
850299389Sjkim
851299389Sjkim	movl	12(%esi),%ecx
852299389Sjkim	movl	12(%edi),%edx
853299389Sjkim	subl	%eax,%ecx
854299389Sjkim	movl	$0,%eax
855299389Sjkim	adcl	%eax,%eax
856299389Sjkim	subl	%edx,%ecx
857299389Sjkim	adcl	$0,%eax
858299389Sjkim	movl	%ecx,12(%ebx)
859299389Sjkim
860299389Sjkim	movl	16(%esi),%ecx
861299389Sjkim	movl	16(%edi),%edx
862299389Sjkim	subl	%eax,%ecx
863299389Sjkim	movl	$0,%eax
864299389Sjkim	adcl	%eax,%eax
865299389Sjkim	subl	%edx,%ecx
866299389Sjkim	adcl	$0,%eax
867299389Sjkim	movl	%ecx,16(%ebx)
868299389Sjkim
869299389Sjkim	movl	20(%esi),%ecx
870299389Sjkim	movl	20(%edi),%edx
871299389Sjkim	subl	%eax,%ecx
872299389Sjkim	movl	$0,%eax
873299389Sjkim	adcl	%eax,%eax
874299389Sjkim	subl	%edx,%ecx
875299389Sjkim	adcl	$0,%eax
876299389Sjkim	movl	%ecx,20(%ebx)
877299389Sjkim
878299389Sjkim	movl	24(%esi),%ecx
879299389Sjkim	movl	24(%edi),%edx
880299389Sjkim	subl	%eax,%ecx
881299389Sjkim	movl	$0,%eax
882299389Sjkim	adcl	%eax,%eax
883299389Sjkim	subl	%edx,%ecx
884299389Sjkim	adcl	$0,%eax
885299389Sjkim	movl	%ecx,24(%ebx)
886299389Sjkim
887299389Sjkim	movl	28(%esi),%ecx
888299389Sjkim	movl	28(%edi),%edx
889299389Sjkim	subl	%eax,%ecx
890299389Sjkim	movl	$0,%eax
891299389Sjkim	adcl	%eax,%eax
892299389Sjkim	subl	%edx,%ecx
893299389Sjkim	adcl	$0,%eax
894299389Sjkim	movl	%ecx,28(%ebx)
895299389Sjkim
896299389Sjkim	addl	$32,%esi
897299389Sjkim	addl	$32,%edi
898299389Sjkim	addl	$32,%ebx
899299389Sjkim	subl	$8,%ebp
900299389Sjkim	jnz	.L027aw_loop
901299389Sjkim.L026aw_finish:
902299389Sjkim	movl	32(%esp),%ebp
903299389Sjkim	andl	$7,%ebp
904299389Sjkim	jz	.L028aw_end
905299389Sjkim
906299389Sjkim	movl	(%esi),%ecx
907299389Sjkim	movl	(%edi),%edx
908299389Sjkim	subl	%eax,%ecx
909299389Sjkim	movl	$0,%eax
910299389Sjkim	adcl	%eax,%eax
911299389Sjkim	subl	%edx,%ecx
912299389Sjkim	adcl	$0,%eax
913299389Sjkim	decl	%ebp
914299389Sjkim	movl	%ecx,(%ebx)
915299389Sjkim	jz	.L028aw_end
916299389Sjkim
917299389Sjkim	movl	4(%esi),%ecx
918299389Sjkim	movl	4(%edi),%edx
919299389Sjkim	subl	%eax,%ecx
920299389Sjkim	movl	$0,%eax
921299389Sjkim	adcl	%eax,%eax
922299389Sjkim	subl	%edx,%ecx
923299389Sjkim	adcl	$0,%eax
924299389Sjkim	decl	%ebp
925299389Sjkim	movl	%ecx,4(%ebx)
926299389Sjkim	jz	.L028aw_end
927299389Sjkim
928299389Sjkim	movl	8(%esi),%ecx
929299389Sjkim	movl	8(%edi),%edx
930299389Sjkim	subl	%eax,%ecx
931299389Sjkim	movl	$0,%eax
932299389Sjkim	adcl	%eax,%eax
933299389Sjkim	subl	%edx,%ecx
934299389Sjkim	adcl	$0,%eax
935299389Sjkim	decl	%ebp
936299389Sjkim	movl	%ecx,8(%ebx)
937299389Sjkim	jz	.L028aw_end
938299389Sjkim
939299389Sjkim	movl	12(%esi),%ecx
940299389Sjkim	movl	12(%edi),%edx
941299389Sjkim	subl	%eax,%ecx
942299389Sjkim	movl	$0,%eax
943299389Sjkim	adcl	%eax,%eax
944299389Sjkim	subl	%edx,%ecx
945299389Sjkim	adcl	$0,%eax
946299389Sjkim	decl	%ebp
947299389Sjkim	movl	%ecx,12(%ebx)
948299389Sjkim	jz	.L028aw_end
949299389Sjkim
950299389Sjkim	movl	16(%esi),%ecx
951299389Sjkim	movl	16(%edi),%edx
952299389Sjkim	subl	%eax,%ecx
953299389Sjkim	movl	$0,%eax
954299389Sjkim	adcl	%eax,%eax
955299389Sjkim	subl	%edx,%ecx
956299389Sjkim	adcl	$0,%eax
957299389Sjkim	decl	%ebp
958299389Sjkim	movl	%ecx,16(%ebx)
959299389Sjkim	jz	.L028aw_end
960299389Sjkim
961299389Sjkim	movl	20(%esi),%ecx
962299389Sjkim	movl	20(%edi),%edx
963299389Sjkim	subl	%eax,%ecx
964299389Sjkim	movl	$0,%eax
965299389Sjkim	adcl	%eax,%eax
966299389Sjkim	subl	%edx,%ecx
967299389Sjkim	adcl	$0,%eax
968299389Sjkim	decl	%ebp
969299389Sjkim	movl	%ecx,20(%ebx)
970299389Sjkim	jz	.L028aw_end
971299389Sjkim
972299389Sjkim	movl	24(%esi),%ecx
973299389Sjkim	movl	24(%edi),%edx
974299389Sjkim	subl	%eax,%ecx
975299389Sjkim	movl	$0,%eax
976299389Sjkim	adcl	%eax,%eax
977299389Sjkim	subl	%edx,%ecx
978299389Sjkim	adcl	$0,%eax
979299389Sjkim	movl	%ecx,24(%ebx)
980299389Sjkim.L028aw_end:
981299389Sjkim	popl	%edi
982299389Sjkim	popl	%esi
983299389Sjkim	popl	%ebx
984299389Sjkim	popl	%ebp
985299389Sjkim	ret
986299389Sjkim.size	bn_sub_words,.-.L_bn_sub_words_begin
987299389Sjkim.globl	bn_sub_part_words
988299389Sjkim.type	bn_sub_part_words,@function
989299389Sjkim.align	16
990299389Sjkimbn_sub_part_words:
991299389Sjkim.L_bn_sub_part_words_begin:
992299389Sjkim	pushl	%ebp
993299389Sjkim	pushl	%ebx
994299389Sjkim	pushl	%esi
995299389Sjkim	pushl	%edi
996299389Sjkim
997299389Sjkim	movl	20(%esp),%ebx
998299389Sjkim	movl	24(%esp),%esi
999299389Sjkim	movl	28(%esp),%edi
1000299389Sjkim	movl	32(%esp),%ebp
1001299389Sjkim	xorl	%eax,%eax
1002299389Sjkim	andl	$4294967288,%ebp
1003299389Sjkim	jz	.L029aw_finish
1004299389Sjkim.L030aw_loop:
1005299389Sjkim
1006299389Sjkim	movl	(%esi),%ecx
1007299389Sjkim	movl	(%edi),%edx
1008299389Sjkim	subl	%eax,%ecx
1009299389Sjkim	movl	$0,%eax
1010299389Sjkim	adcl	%eax,%eax
1011299389Sjkim	subl	%edx,%ecx
1012299389Sjkim	adcl	$0,%eax
1013299389Sjkim	movl	%ecx,(%ebx)
1014299389Sjkim
1015299389Sjkim	movl	4(%esi),%ecx
1016299389Sjkim	movl	4(%edi),%edx
1017299389Sjkim	subl	%eax,%ecx
1018299389Sjkim	movl	$0,%eax
1019299389Sjkim	adcl	%eax,%eax
1020299389Sjkim	subl	%edx,%ecx
1021299389Sjkim	adcl	$0,%eax
1022299389Sjkim	movl	%ecx,4(%ebx)
1023299389Sjkim
1024299389Sjkim	movl	8(%esi),%ecx
1025299389Sjkim	movl	8(%edi),%edx
1026299389Sjkim	subl	%eax,%ecx
1027299389Sjkim	movl	$0,%eax
1028299389Sjkim	adcl	%eax,%eax
1029299389Sjkim	subl	%edx,%ecx
1030299389Sjkim	adcl	$0,%eax
1031299389Sjkim	movl	%ecx,8(%ebx)
1032299389Sjkim
1033299389Sjkim	movl	12(%esi),%ecx
1034299389Sjkim	movl	12(%edi),%edx
1035299389Sjkim	subl	%eax,%ecx
1036299389Sjkim	movl	$0,%eax
1037299389Sjkim	adcl	%eax,%eax
1038299389Sjkim	subl	%edx,%ecx
1039299389Sjkim	adcl	$0,%eax
1040299389Sjkim	movl	%ecx,12(%ebx)
1041299389Sjkim
1042299389Sjkim	movl	16(%esi),%ecx
1043299389Sjkim	movl	16(%edi),%edx
1044299389Sjkim	subl	%eax,%ecx
1045299389Sjkim	movl	$0,%eax
1046299389Sjkim	adcl	%eax,%eax
1047299389Sjkim	subl	%edx,%ecx
1048299389Sjkim	adcl	$0,%eax
1049299389Sjkim	movl	%ecx,16(%ebx)
1050299389Sjkim
1051299389Sjkim	movl	20(%esi),%ecx
1052299389Sjkim	movl	20(%edi),%edx
1053299389Sjkim	subl	%eax,%ecx
1054299389Sjkim	movl	$0,%eax
1055299389Sjkim	adcl	%eax,%eax
1056299389Sjkim	subl	%edx,%ecx
1057299389Sjkim	adcl	$0,%eax
1058299389Sjkim	movl	%ecx,20(%ebx)
1059299389Sjkim
1060299389Sjkim	movl	24(%esi),%ecx
1061299389Sjkim	movl	24(%edi),%edx
1062299389Sjkim	subl	%eax,%ecx
1063299389Sjkim	movl	$0,%eax
1064299389Sjkim	adcl	%eax,%eax
1065299389Sjkim	subl	%edx,%ecx
1066299389Sjkim	adcl	$0,%eax
1067299389Sjkim	movl	%ecx,24(%ebx)
1068299389Sjkim
1069299389Sjkim	movl	28(%esi),%ecx
1070299389Sjkim	movl	28(%edi),%edx
1071299389Sjkim	subl	%eax,%ecx
1072299389Sjkim	movl	$0,%eax
1073299389Sjkim	adcl	%eax,%eax
1074299389Sjkim	subl	%edx,%ecx
1075299389Sjkim	adcl	$0,%eax
1076299389Sjkim	movl	%ecx,28(%ebx)
1077299389Sjkim
1078299389Sjkim	addl	$32,%esi
1079299389Sjkim	addl	$32,%edi
1080299389Sjkim	addl	$32,%ebx
1081299389Sjkim	subl	$8,%ebp
1082299389Sjkim	jnz	.L030aw_loop
1083299389Sjkim.L029aw_finish:
1084299389Sjkim	movl	32(%esp),%ebp
1085299389Sjkim	andl	$7,%ebp
1086299389Sjkim	jz	.L031aw_end
1087299389Sjkim
1088299389Sjkim	movl	(%esi),%ecx
1089299389Sjkim	movl	(%edi),%edx
1090299389Sjkim	subl	%eax,%ecx
1091299389Sjkim	movl	$0,%eax
1092299389Sjkim	adcl	%eax,%eax
1093299389Sjkim	subl	%edx,%ecx
1094299389Sjkim	adcl	$0,%eax
1095299389Sjkim	movl	%ecx,(%ebx)
1096299389Sjkim	addl	$4,%esi
1097299389Sjkim	addl	$4,%edi
1098299389Sjkim	addl	$4,%ebx
1099299389Sjkim	decl	%ebp
1100299389Sjkim	jz	.L031aw_end
1101299389Sjkim
1102299389Sjkim	movl	(%esi),%ecx
1103299389Sjkim	movl	(%edi),%edx
1104299389Sjkim	subl	%eax,%ecx
1105299389Sjkim	movl	$0,%eax
1106299389Sjkim	adcl	%eax,%eax
1107299389Sjkim	subl	%edx,%ecx
1108299389Sjkim	adcl	$0,%eax
1109299389Sjkim	movl	%ecx,(%ebx)
1110299389Sjkim	addl	$4,%esi
1111299389Sjkim	addl	$4,%edi
1112299389Sjkim	addl	$4,%ebx
1113299389Sjkim	decl	%ebp
1114299389Sjkim	jz	.L031aw_end
1115299389Sjkim
1116299389Sjkim	movl	(%esi),%ecx
1117299389Sjkim	movl	(%edi),%edx
1118299389Sjkim	subl	%eax,%ecx
1119299389Sjkim	movl	$0,%eax
1120299389Sjkim	adcl	%eax,%eax
1121299389Sjkim	subl	%edx,%ecx
1122299389Sjkim	adcl	$0,%eax
1123299389Sjkim	movl	%ecx,(%ebx)
1124299389Sjkim	addl	$4,%esi
1125299389Sjkim	addl	$4,%edi
1126299389Sjkim	addl	$4,%ebx
1127299389Sjkim	decl	%ebp
1128299389Sjkim	jz	.L031aw_end
1129299389Sjkim
1130299389Sjkim	movl	(%esi),%ecx
1131299389Sjkim	movl	(%edi),%edx
1132299389Sjkim	subl	%eax,%ecx
1133299389Sjkim	movl	$0,%eax
1134299389Sjkim	adcl	%eax,%eax
1135299389Sjkim	subl	%edx,%ecx
1136299389Sjkim	adcl	$0,%eax
1137299389Sjkim	movl	%ecx,(%ebx)
1138299389Sjkim	addl	$4,%esi
1139299389Sjkim	addl	$4,%edi
1140299389Sjkim	addl	$4,%ebx
1141299389Sjkim	decl	%ebp
1142299389Sjkim	jz	.L031aw_end
1143299389Sjkim
1144299389Sjkim	movl	(%esi),%ecx
1145299389Sjkim	movl	(%edi),%edx
1146299389Sjkim	subl	%eax,%ecx
1147299389Sjkim	movl	$0,%eax
1148299389Sjkim	adcl	%eax,%eax
1149299389Sjkim	subl	%edx,%ecx
1150299389Sjkim	adcl	$0,%eax
1151299389Sjkim	movl	%ecx,(%ebx)
1152299389Sjkim	addl	$4,%esi
1153299389Sjkim	addl	$4,%edi
1154299389Sjkim	addl	$4,%ebx
1155299389Sjkim	decl	%ebp
1156299389Sjkim	jz	.L031aw_end
1157299389Sjkim
1158299389Sjkim	movl	(%esi),%ecx
1159299389Sjkim	movl	(%edi),%edx
1160299389Sjkim	subl	%eax,%ecx
1161299389Sjkim	movl	$0,%eax
1162299389Sjkim	adcl	%eax,%eax
1163299389Sjkim	subl	%edx,%ecx
1164299389Sjkim	adcl	$0,%eax
1165299389Sjkim	movl	%ecx,(%ebx)
1166299389Sjkim	addl	$4,%esi
1167299389Sjkim	addl	$4,%edi
1168299389Sjkim	addl	$4,%ebx
1169299389Sjkim	decl	%ebp
1170299389Sjkim	jz	.L031aw_end
1171299389Sjkim
1172299389Sjkim	movl	(%esi),%ecx
1173299389Sjkim	movl	(%edi),%edx
1174299389Sjkim	subl	%eax,%ecx
1175299389Sjkim	movl	$0,%eax
1176299389Sjkim	adcl	%eax,%eax
1177299389Sjkim	subl	%edx,%ecx
1178299389Sjkim	adcl	$0,%eax
1179299389Sjkim	movl	%ecx,(%ebx)
1180299389Sjkim	addl	$4,%esi
1181299389Sjkim	addl	$4,%edi
1182299389Sjkim	addl	$4,%ebx
1183299389Sjkim.L031aw_end:
1184299389Sjkim	cmpl	$0,36(%esp)
1185299389Sjkim	je	.L032pw_end
1186299389Sjkim	movl	36(%esp),%ebp
1187299389Sjkim	cmpl	$0,%ebp
1188299389Sjkim	je	.L032pw_end
1189299389Sjkim	jge	.L033pw_pos
1190299389Sjkim
1191299389Sjkim	movl	$0,%edx
1192299389Sjkim	subl	%ebp,%edx
1193299389Sjkim	movl	%edx,%ebp
1194299389Sjkim	andl	$4294967288,%ebp
1195299389Sjkim	jz	.L034pw_neg_finish
1196299389Sjkim.L035pw_neg_loop:
1197299389Sjkim
1198299389Sjkim	movl	$0,%ecx
1199299389Sjkim	movl	(%edi),%edx
1200299389Sjkim	subl	%eax,%ecx
1201299389Sjkim	movl	$0,%eax
1202299389Sjkim	adcl	%eax,%eax
1203299389Sjkim	subl	%edx,%ecx
1204299389Sjkim	adcl	$0,%eax
1205299389Sjkim	movl	%ecx,(%ebx)
1206299389Sjkim
1207299389Sjkim	movl	$0,%ecx
1208299389Sjkim	movl	4(%edi),%edx
1209299389Sjkim	subl	%eax,%ecx
1210299389Sjkim	movl	$0,%eax
1211299389Sjkim	adcl	%eax,%eax
1212299389Sjkim	subl	%edx,%ecx
1213299389Sjkim	adcl	$0,%eax
1214299389Sjkim	movl	%ecx,4(%ebx)
1215299389Sjkim
1216299389Sjkim	movl	$0,%ecx
1217299389Sjkim	movl	8(%edi),%edx
1218299389Sjkim	subl	%eax,%ecx
1219299389Sjkim	movl	$0,%eax
1220299389Sjkim	adcl	%eax,%eax
1221299389Sjkim	subl	%edx,%ecx
1222299389Sjkim	adcl	$0,%eax
1223299389Sjkim	movl	%ecx,8(%ebx)
1224299389Sjkim
1225299389Sjkim	movl	$0,%ecx
1226299389Sjkim	movl	12(%edi),%edx
1227299389Sjkim	subl	%eax,%ecx
1228299389Sjkim	movl	$0,%eax
1229299389Sjkim	adcl	%eax,%eax
1230299389Sjkim	subl	%edx,%ecx
1231299389Sjkim	adcl	$0,%eax
1232299389Sjkim	movl	%ecx,12(%ebx)
1233299389Sjkim
1234299389Sjkim	movl	$0,%ecx
1235299389Sjkim	movl	16(%edi),%edx
1236299389Sjkim	subl	%eax,%ecx
1237299389Sjkim	movl	$0,%eax
1238299389Sjkim	adcl	%eax,%eax
1239299389Sjkim	subl	%edx,%ecx
1240299389Sjkim	adcl	$0,%eax
1241299389Sjkim	movl	%ecx,16(%ebx)
1242299389Sjkim
1243299389Sjkim	movl	$0,%ecx
1244299389Sjkim	movl	20(%edi),%edx
1245299389Sjkim	subl	%eax,%ecx
1246299389Sjkim	movl	$0,%eax
1247299389Sjkim	adcl	%eax,%eax
1248299389Sjkim	subl	%edx,%ecx
1249299389Sjkim	adcl	$0,%eax
1250299389Sjkim	movl	%ecx,20(%ebx)
1251299389Sjkim
1252299389Sjkim	movl	$0,%ecx
1253299389Sjkim	movl	24(%edi),%edx
1254299389Sjkim	subl	%eax,%ecx
1255299389Sjkim	movl	$0,%eax
1256299389Sjkim	adcl	%eax,%eax
1257299389Sjkim	subl	%edx,%ecx
1258299389Sjkim	adcl	$0,%eax
1259299389Sjkim	movl	%ecx,24(%ebx)
1260299389Sjkim
1261299389Sjkim	movl	$0,%ecx
1262299389Sjkim	movl	28(%edi),%edx
1263299389Sjkim	subl	%eax,%ecx
1264299389Sjkim	movl	$0,%eax
1265299389Sjkim	adcl	%eax,%eax
1266299389Sjkim	subl	%edx,%ecx
1267299389Sjkim	adcl	$0,%eax
1268299389Sjkim	movl	%ecx,28(%ebx)
1269299389Sjkim
1270299389Sjkim	addl	$32,%edi
1271299389Sjkim	addl	$32,%ebx
1272299389Sjkim	subl	$8,%ebp
1273299389Sjkim	jnz	.L035pw_neg_loop
1274299389Sjkim.L034pw_neg_finish:
1275299389Sjkim	movl	36(%esp),%edx
1276299389Sjkim	movl	$0,%ebp
1277299389Sjkim	subl	%edx,%ebp
1278299389Sjkim	andl	$7,%ebp
1279299389Sjkim	jz	.L032pw_end
1280299389Sjkim
1281299389Sjkim	movl	$0,%ecx
1282299389Sjkim	movl	(%edi),%edx
1283299389Sjkim	subl	%eax,%ecx
1284299389Sjkim	movl	$0,%eax
1285299389Sjkim	adcl	%eax,%eax
1286299389Sjkim	subl	%edx,%ecx
1287299389Sjkim	adcl	$0,%eax
1288299389Sjkim	decl	%ebp
1289299389Sjkim	movl	%ecx,(%ebx)
1290299389Sjkim	jz	.L032pw_end
1291299389Sjkim
1292299389Sjkim	movl	$0,%ecx
1293299389Sjkim	movl	4(%edi),%edx
1294299389Sjkim	subl	%eax,%ecx
1295299389Sjkim	movl	$0,%eax
1296299389Sjkim	adcl	%eax,%eax
1297299389Sjkim	subl	%edx,%ecx
1298299389Sjkim	adcl	$0,%eax
1299299389Sjkim	decl	%ebp
1300299389Sjkim	movl	%ecx,4(%ebx)
1301299389Sjkim	jz	.L032pw_end
1302299389Sjkim
1303299389Sjkim	movl	$0,%ecx
1304299389Sjkim	movl	8(%edi),%edx
1305299389Sjkim	subl	%eax,%ecx
1306299389Sjkim	movl	$0,%eax
1307299389Sjkim	adcl	%eax,%eax
1308299389Sjkim	subl	%edx,%ecx
1309299389Sjkim	adcl	$0,%eax
1310299389Sjkim	decl	%ebp
1311299389Sjkim	movl	%ecx,8(%ebx)
1312299389Sjkim	jz	.L032pw_end
1313299389Sjkim
1314299389Sjkim	movl	$0,%ecx
1315299389Sjkim	movl	12(%edi),%edx
1316299389Sjkim	subl	%eax,%ecx
1317299389Sjkim	movl	$0,%eax
1318299389Sjkim	adcl	%eax,%eax
1319299389Sjkim	subl	%edx,%ecx
1320299389Sjkim	adcl	$0,%eax
1321299389Sjkim	decl	%ebp
1322299389Sjkim	movl	%ecx,12(%ebx)
1323299389Sjkim	jz	.L032pw_end
1324299389Sjkim
1325299389Sjkim	movl	$0,%ecx
1326299389Sjkim	movl	16(%edi),%edx
1327299389Sjkim	subl	%eax,%ecx
1328299389Sjkim	movl	$0,%eax
1329299389Sjkim	adcl	%eax,%eax
1330299389Sjkim	subl	%edx,%ecx
1331299389Sjkim	adcl	$0,%eax
1332299389Sjkim	decl	%ebp
1333299389Sjkim	movl	%ecx,16(%ebx)
1334299389Sjkim	jz	.L032pw_end
1335299389Sjkim
1336299389Sjkim	movl	$0,%ecx
1337299389Sjkim	movl	20(%edi),%edx
1338299389Sjkim	subl	%eax,%ecx
1339299389Sjkim	movl	$0,%eax
1340299389Sjkim	adcl	%eax,%eax
1341299389Sjkim	subl	%edx,%ecx
1342299389Sjkim	adcl	$0,%eax
1343299389Sjkim	decl	%ebp
1344299389Sjkim	movl	%ecx,20(%ebx)
1345299389Sjkim	jz	.L032pw_end
1346299389Sjkim
1347299389Sjkim	movl	$0,%ecx
1348299389Sjkim	movl	24(%edi),%edx
1349299389Sjkim	subl	%eax,%ecx
1350299389Sjkim	movl	$0,%eax
1351299389Sjkim	adcl	%eax,%eax
1352299389Sjkim	subl	%edx,%ecx
1353299389Sjkim	adcl	$0,%eax
1354299389Sjkim	movl	%ecx,24(%ebx)
1355299389Sjkim	jmp	.L032pw_end
1356299389Sjkim.L033pw_pos:
1357299389Sjkim	andl	$4294967288,%ebp
1358299389Sjkim	jz	.L036pw_pos_finish
1359299389Sjkim.L037pw_pos_loop:
1360299389Sjkim
1361299389Sjkim	movl	(%esi),%ecx
1362299389Sjkim	subl	%eax,%ecx
1363299389Sjkim	movl	%ecx,(%ebx)
1364299389Sjkim	jnc	.L038pw_nc0
1365299389Sjkim
1366299389Sjkim	movl	4(%esi),%ecx
1367299389Sjkim	subl	%eax,%ecx
1368299389Sjkim	movl	%ecx,4(%ebx)
1369299389Sjkim	jnc	.L039pw_nc1
1370299389Sjkim
1371299389Sjkim	movl	8(%esi),%ecx
1372299389Sjkim	subl	%eax,%ecx
1373299389Sjkim	movl	%ecx,8(%ebx)
1374299389Sjkim	jnc	.L040pw_nc2
1375299389Sjkim
1376299389Sjkim	movl	12(%esi),%ecx
1377299389Sjkim	subl	%eax,%ecx
1378299389Sjkim	movl	%ecx,12(%ebx)
1379299389Sjkim	jnc	.L041pw_nc3
1380299389Sjkim
1381299389Sjkim	movl	16(%esi),%ecx
1382299389Sjkim	subl	%eax,%ecx
1383299389Sjkim	movl	%ecx,16(%ebx)
1384299389Sjkim	jnc	.L042pw_nc4
1385299389Sjkim
1386299389Sjkim	movl	20(%esi),%ecx
1387299389Sjkim	subl	%eax,%ecx
1388299389Sjkim	movl	%ecx,20(%ebx)
1389299389Sjkim	jnc	.L043pw_nc5
1390299389Sjkim
1391299389Sjkim	movl	24(%esi),%ecx
1392299389Sjkim	subl	%eax,%ecx
1393299389Sjkim	movl	%ecx,24(%ebx)
1394299389Sjkim	jnc	.L044pw_nc6
1395299389Sjkim
1396299389Sjkim	movl	28(%esi),%ecx
1397299389Sjkim	subl	%eax,%ecx
1398299389Sjkim	movl	%ecx,28(%ebx)
1399299389Sjkim	jnc	.L045pw_nc7
1400299389Sjkim
1401299389Sjkim	addl	$32,%esi
1402299389Sjkim	addl	$32,%ebx
1403299389Sjkim	subl	$8,%ebp
1404299389Sjkim	jnz	.L037pw_pos_loop
1405299389Sjkim.L036pw_pos_finish:
1406299389Sjkim	movl	36(%esp),%ebp
1407299389Sjkim	andl	$7,%ebp
1408299389Sjkim	jz	.L032pw_end
1409299389Sjkim
1410299389Sjkim	movl	(%esi),%ecx
1411299389Sjkim	subl	%eax,%ecx
1412299389Sjkim	movl	%ecx,(%ebx)
1413299389Sjkim	jnc	.L046pw_tail_nc0
1414299389Sjkim	decl	%ebp
1415299389Sjkim	jz	.L032pw_end
1416299389Sjkim
1417299389Sjkim	movl	4(%esi),%ecx
1418299389Sjkim	subl	%eax,%ecx
1419299389Sjkim	movl	%ecx,4(%ebx)
1420299389Sjkim	jnc	.L047pw_tail_nc1
1421299389Sjkim	decl	%ebp
1422299389Sjkim	jz	.L032pw_end
1423299389Sjkim
1424299389Sjkim	movl	8(%esi),%ecx
1425299389Sjkim	subl	%eax,%ecx
1426299389Sjkim	movl	%ecx,8(%ebx)
1427299389Sjkim	jnc	.L048pw_tail_nc2
1428299389Sjkim	decl	%ebp
1429299389Sjkim	jz	.L032pw_end
1430299389Sjkim
1431299389Sjkim	movl	12(%esi),%ecx
1432299389Sjkim	subl	%eax,%ecx
1433299389Sjkim	movl	%ecx,12(%ebx)
1434299389Sjkim	jnc	.L049pw_tail_nc3
1435299389Sjkim	decl	%ebp
1436299389Sjkim	jz	.L032pw_end
1437299389Sjkim
1438299389Sjkim	movl	16(%esi),%ecx
1439299389Sjkim	subl	%eax,%ecx
1440299389Sjkim	movl	%ecx,16(%ebx)
1441299389Sjkim	jnc	.L050pw_tail_nc4
1442299389Sjkim	decl	%ebp
1443299389Sjkim	jz	.L032pw_end
1444299389Sjkim
1445299389Sjkim	movl	20(%esi),%ecx
1446299389Sjkim	subl	%eax,%ecx
1447299389Sjkim	movl	%ecx,20(%ebx)
1448299389Sjkim	jnc	.L051pw_tail_nc5
1449299389Sjkim	decl	%ebp
1450299389Sjkim	jz	.L032pw_end
1451299389Sjkim
1452299389Sjkim	movl	24(%esi),%ecx
1453299389Sjkim	subl	%eax,%ecx
1454299389Sjkim	movl	%ecx,24(%ebx)
1455299389Sjkim	jnc	.L052pw_tail_nc6
1456299389Sjkim	movl	$1,%eax
1457299389Sjkim	jmp	.L032pw_end
1458299389Sjkim.L053pw_nc_loop:
1459299389Sjkim	movl	(%esi),%ecx
1460299389Sjkim	movl	%ecx,(%ebx)
1461299389Sjkim.L038pw_nc0:
1462299389Sjkim	movl	4(%esi),%ecx
1463299389Sjkim	movl	%ecx,4(%ebx)
1464299389Sjkim.L039pw_nc1:
1465299389Sjkim	movl	8(%esi),%ecx
1466299389Sjkim	movl	%ecx,8(%ebx)
1467299389Sjkim.L040pw_nc2:
1468299389Sjkim	movl	12(%esi),%ecx
1469299389Sjkim	movl	%ecx,12(%ebx)
1470299389Sjkim.L041pw_nc3:
1471299389Sjkim	movl	16(%esi),%ecx
1472299389Sjkim	movl	%ecx,16(%ebx)
1473299389Sjkim.L042pw_nc4:
1474299389Sjkim	movl	20(%esi),%ecx
1475299389Sjkim	movl	%ecx,20(%ebx)
1476299389Sjkim.L043pw_nc5:
1477299389Sjkim	movl	24(%esi),%ecx
1478299389Sjkim	movl	%ecx,24(%ebx)
1479299389Sjkim.L044pw_nc6:
1480299389Sjkim	movl	28(%esi),%ecx
1481299389Sjkim	movl	%ecx,28(%ebx)
1482299389Sjkim.L045pw_nc7:
1483299389Sjkim
1484299389Sjkim	addl	$32,%esi
1485299389Sjkim	addl	$32,%ebx
1486299389Sjkim	subl	$8,%ebp
1487299389Sjkim	jnz	.L053pw_nc_loop
1488299389Sjkim	movl	36(%esp),%ebp
1489299389Sjkim	andl	$7,%ebp
1490299389Sjkim	jz	.L054pw_nc_end
1491299389Sjkim	movl	(%esi),%ecx
1492299389Sjkim	movl	%ecx,(%ebx)
1493299389Sjkim.L046pw_tail_nc0:
1494299389Sjkim	decl	%ebp
1495299389Sjkim	jz	.L054pw_nc_end
1496299389Sjkim	movl	4(%esi),%ecx
1497299389Sjkim	movl	%ecx,4(%ebx)
1498299389Sjkim.L047pw_tail_nc1:
1499299389Sjkim	decl	%ebp
1500299389Sjkim	jz	.L054pw_nc_end
1501299389Sjkim	movl	8(%esi),%ecx
1502299389Sjkim	movl	%ecx,8(%ebx)
1503299389Sjkim.L048pw_tail_nc2:
1504299389Sjkim	decl	%ebp
1505299389Sjkim	jz	.L054pw_nc_end
1506299389Sjkim	movl	12(%esi),%ecx
1507299389Sjkim	movl	%ecx,12(%ebx)
1508299389Sjkim.L049pw_tail_nc3:
1509299389Sjkim	decl	%ebp
1510299389Sjkim	jz	.L054pw_nc_end
1511299389Sjkim	movl	16(%esi),%ecx
1512299389Sjkim	movl	%ecx,16(%ebx)
1513299389Sjkim.L050pw_tail_nc4:
1514299389Sjkim	decl	%ebp
1515299389Sjkim	jz	.L054pw_nc_end
1516299389Sjkim	movl	20(%esi),%ecx
1517299389Sjkim	movl	%ecx,20(%ebx)
1518299389Sjkim.L051pw_tail_nc5:
1519299389Sjkim	decl	%ebp
1520299389Sjkim	jz	.L054pw_nc_end
1521299389Sjkim	movl	24(%esi),%ecx
1522299389Sjkim	movl	%ecx,24(%ebx)
1523299389Sjkim.L052pw_tail_nc6:
1524299389Sjkim.L054pw_nc_end:
1525299389Sjkim	movl	$0,%eax
1526299389Sjkim.L032pw_end:
1527299389Sjkim	popl	%edi
1528299389Sjkim	popl	%esi
1529299389Sjkim	popl	%ebx
1530299389Sjkim	popl	%ebp
1531299389Sjkim	ret
1532299389Sjkim.size	bn_sub_part_words,.-.L_bn_sub_part_words_begin
1533299389Sjkim.comm	OPENSSL_ia32cap_P,16,4
1534299389Sjkim#else
1535299389Sjkim.file	"bn-586.S"
1536299389Sjkim.text
1537299389Sjkim.globl	bn_mul_add_words
1538299389Sjkim.type	bn_mul_add_words,@function
1539299389Sjkim.align	16
1540299389Sjkimbn_mul_add_words:
1541299389Sjkim.L_bn_mul_add_words_begin:
1542238405Sjkim	leal	OPENSSL_ia32cap_P,%eax
1543238405Sjkim	btl	$26,(%eax)
1544238405Sjkim	jnc	.L000maw_non_sse2
1545238405Sjkim	movl	4(%esp),%eax
1546238405Sjkim	movl	8(%esp),%edx
1547238405Sjkim	movl	12(%esp),%ecx
1548238405Sjkim	movd	16(%esp),%mm0
1549238405Sjkim	pxor	%mm1,%mm1
1550238405Sjkim	jmp	.L001maw_sse2_entry
1551238405Sjkim.align	16
1552238405Sjkim.L002maw_sse2_unrolled:
1553238405Sjkim	movd	(%eax),%mm3
1554238405Sjkim	paddq	%mm3,%mm1
1555238405Sjkim	movd	(%edx),%mm2
1556238405Sjkim	pmuludq	%mm0,%mm2
1557238405Sjkim	movd	4(%edx),%mm4
1558238405Sjkim	pmuludq	%mm0,%mm4
1559238405Sjkim	movd	8(%edx),%mm6
1560238405Sjkim	pmuludq	%mm0,%mm6
1561238405Sjkim	movd	12(%edx),%mm7
1562238405Sjkim	pmuludq	%mm0,%mm7
1563238405Sjkim	paddq	%mm2,%mm1
1564238405Sjkim	movd	4(%eax),%mm3
1565238405Sjkim	paddq	%mm4,%mm3
1566238405Sjkim	movd	8(%eax),%mm5
1567238405Sjkim	paddq	%mm6,%mm5
1568238405Sjkim	movd	12(%eax),%mm4
1569238405Sjkim	paddq	%mm4,%mm7
1570238405Sjkim	movd	%mm1,(%eax)
1571238405Sjkim	movd	16(%edx),%mm2
1572238405Sjkim	pmuludq	%mm0,%mm2
1573238405Sjkim	psrlq	$32,%mm1
1574238405Sjkim	movd	20(%edx),%mm4
1575238405Sjkim	pmuludq	%mm0,%mm4
1576238405Sjkim	paddq	%mm3,%mm1
1577238405Sjkim	movd	24(%edx),%mm6
1578238405Sjkim	pmuludq	%mm0,%mm6
1579238405Sjkim	movd	%mm1,4(%eax)
1580238405Sjkim	psrlq	$32,%mm1
1581238405Sjkim	movd	28(%edx),%mm3
1582238405Sjkim	addl	$32,%edx
1583238405Sjkim	pmuludq	%mm0,%mm3
1584238405Sjkim	paddq	%mm5,%mm1
1585238405Sjkim	movd	16(%eax),%mm5
1586238405Sjkim	paddq	%mm5,%mm2
1587238405Sjkim	movd	%mm1,8(%eax)
1588238405Sjkim	psrlq	$32,%mm1
1589238405Sjkim	paddq	%mm7,%mm1
1590238405Sjkim	movd	20(%eax),%mm5
1591238405Sjkim	paddq	%mm5,%mm4
1592238405Sjkim	movd	%mm1,12(%eax)
1593238405Sjkim	psrlq	$32,%mm1
1594238405Sjkim	paddq	%mm2,%mm1
1595238405Sjkim	movd	24(%eax),%mm5
1596238405Sjkim	paddq	%mm5,%mm6
1597238405Sjkim	movd	%mm1,16(%eax)
1598238405Sjkim	psrlq	$32,%mm1
1599238405Sjkim	paddq	%mm4,%mm1
1600238405Sjkim	movd	28(%eax),%mm5
1601238405Sjkim	paddq	%mm5,%mm3
1602238405Sjkim	movd	%mm1,20(%eax)
1603238405Sjkim	psrlq	$32,%mm1
1604238405Sjkim	paddq	%mm6,%mm1
1605238405Sjkim	movd	%mm1,24(%eax)
1606238405Sjkim	psrlq	$32,%mm1
1607238405Sjkim	paddq	%mm3,%mm1
1608238405Sjkim	movd	%mm1,28(%eax)
1609238405Sjkim	leal	32(%eax),%eax
1610238405Sjkim	psrlq	$32,%mm1
1611238405Sjkim	subl	$8,%ecx
1612238405Sjkim	jz	.L003maw_sse2_exit
1613238405Sjkim.L001maw_sse2_entry:
1614238405Sjkim	testl	$4294967288,%ecx
1615238405Sjkim	jnz	.L002maw_sse2_unrolled
1616238405Sjkim.align	4
1617238405Sjkim.L004maw_sse2_loop:
1618238405Sjkim	movd	(%edx),%mm2
1619238405Sjkim	movd	(%eax),%mm3
1620238405Sjkim	pmuludq	%mm0,%mm2
1621238405Sjkim	leal	4(%edx),%edx
1622238405Sjkim	paddq	%mm3,%mm1
1623238405Sjkim	paddq	%mm2,%mm1
1624238405Sjkim	movd	%mm1,(%eax)
1625238405Sjkim	subl	$1,%ecx
1626238405Sjkim	psrlq	$32,%mm1
1627238405Sjkim	leal	4(%eax),%eax
1628238405Sjkim	jnz	.L004maw_sse2_loop
1629238405Sjkim.L003maw_sse2_exit:
1630238405Sjkim	movd	%mm1,%eax
1631238405Sjkim	emms
1632238405Sjkim	ret
1633238405Sjkim.align	16
1634238405Sjkim.L000maw_non_sse2:
163595967Speter	pushl	%ebp
163695967Speter	pushl	%ebx
163795967Speter	pushl	%esi
163895967Speter	pushl	%edi
163995967Speter
1640238405Sjkim	xorl	%esi,%esi
1641238405Sjkim	movl	20(%esp),%edi
1642238405Sjkim	movl	28(%esp),%ecx
1643238405Sjkim	movl	24(%esp),%ebx
1644238405Sjkim	andl	$4294967288,%ecx
1645238405Sjkim	movl	32(%esp),%ebp
164695967Speter	pushl	%ecx
1647238405Sjkim	jz	.L005maw_finish
1648238405Sjkim.align	16
1649238405Sjkim.L006maw_loop:
1650127326Smarkm
1651238405Sjkim	movl	(%ebx),%eax
165295967Speter	mull	%ebp
1653238405Sjkim	addl	%esi,%eax
1654238405Sjkim	adcl	$0,%edx
1655238405Sjkim	addl	(%edi),%eax
1656238405Sjkim	adcl	$0,%edx
1657238405Sjkim	movl	%eax,(%edi)
1658238405Sjkim	movl	%edx,%esi
1659127326Smarkm
1660238405Sjkim	movl	4(%ebx),%eax
166195967Speter	mull	%ebp
1662238405Sjkim	addl	%esi,%eax
1663238405Sjkim	adcl	$0,%edx
1664238405Sjkim	addl	4(%edi),%eax
1665238405Sjkim	adcl	$0,%edx
1666238405Sjkim	movl	%eax,4(%edi)
1667238405Sjkim	movl	%edx,%esi
1668127326Smarkm
1669238405Sjkim	movl	8(%ebx),%eax
167095967Speter	mull	%ebp
1671238405Sjkim	addl	%esi,%eax
1672238405Sjkim	adcl	$0,%edx
1673238405Sjkim	addl	8(%edi),%eax
1674238405Sjkim	adcl	$0,%edx
1675238405Sjkim	movl	%eax,8(%edi)
1676238405Sjkim	movl	%edx,%esi
1677127326Smarkm
1678238405Sjkim	movl	12(%ebx),%eax
167995967Speter	mull	%ebp
1680238405Sjkim	addl	%esi,%eax
1681238405Sjkim	adcl	$0,%edx
1682238405Sjkim	addl	12(%edi),%eax
1683238405Sjkim	adcl	$0,%edx
1684238405Sjkim	movl	%eax,12(%edi)
1685238405Sjkim	movl	%edx,%esi
1686127326Smarkm
1687238405Sjkim	movl	16(%ebx),%eax
168895967Speter	mull	%ebp
1689238405Sjkim	addl	%esi,%eax
1690238405Sjkim	adcl	$0,%edx
1691238405Sjkim	addl	16(%edi),%eax
1692238405Sjkim	adcl	$0,%edx
1693238405Sjkim	movl	%eax,16(%edi)
1694238405Sjkim	movl	%edx,%esi
1695127326Smarkm
1696238405Sjkim	movl	20(%ebx),%eax
169795967Speter	mull	%ebp
1698238405Sjkim	addl	%esi,%eax
1699238405Sjkim	adcl	$0,%edx
1700238405Sjkim	addl	20(%edi),%eax
1701238405Sjkim	adcl	$0,%edx
1702238405Sjkim	movl	%eax,20(%edi)
1703238405Sjkim	movl	%edx,%esi
1704127326Smarkm
1705238405Sjkim	movl	24(%ebx),%eax
170695967Speter	mull	%ebp
1707238405Sjkim	addl	%esi,%eax
1708238405Sjkim	adcl	$0,%edx
1709238405Sjkim	addl	24(%edi),%eax
1710238405Sjkim	adcl	$0,%edx
1711238405Sjkim	movl	%eax,24(%edi)
1712238405Sjkim	movl	%edx,%esi
1713127326Smarkm
1714238405Sjkim	movl	28(%ebx),%eax
171595967Speter	mull	%ebp
1716238405Sjkim	addl	%esi,%eax
1717238405Sjkim	adcl	$0,%edx
1718238405Sjkim	addl	28(%edi),%eax
1719238405Sjkim	adcl	$0,%edx
1720238405Sjkim	movl	%eax,28(%edi)
1721238405Sjkim	movl	%edx,%esi
172295967Speter
1723238405Sjkim	subl	$8,%ecx
1724238405Sjkim	leal	32(%ebx),%ebx
1725238405Sjkim	leal	32(%edi),%edi
1726238405Sjkim	jnz	.L006maw_loop
1727238405Sjkim.L005maw_finish:
1728238405Sjkim	movl	32(%esp),%ecx
1729238405Sjkim	andl	$7,%ecx
1730238405Sjkim	jnz	.L007maw_finish2
1731238405Sjkim	jmp	.L008maw_end
1732238405Sjkim.L007maw_finish2:
1733127326Smarkm
1734238405Sjkim	movl	(%ebx),%eax
173595967Speter	mull	%ebp
1736238405Sjkim	addl	%esi,%eax
1737238405Sjkim	adcl	$0,%edx
1738238405Sjkim	addl	(%edi),%eax
1739238405Sjkim	adcl	$0,%edx
174095967Speter	decl	%ecx
1741238405Sjkim	movl	%eax,(%edi)
1742238405Sjkim	movl	%edx,%esi
1743238405Sjkim	jz	.L008maw_end
1744127326Smarkm
1745238405Sjkim	movl	4(%ebx),%eax
174695967Speter	mull	%ebp
1747238405Sjkim	addl	%esi,%eax
1748238405Sjkim	adcl	$0,%edx
1749238405Sjkim	addl	4(%edi),%eax
1750238405Sjkim	adcl	$0,%edx
175195967Speter	decl	%ecx
1752238405Sjkim	movl	%eax,4(%edi)
1753238405Sjkim	movl	%edx,%esi
1754238405Sjkim	jz	.L008maw_end
1755127326Smarkm
1756238405Sjkim	movl	8(%ebx),%eax
175795967Speter	mull	%ebp
1758238405Sjkim	addl	%esi,%eax
1759238405Sjkim	adcl	$0,%edx
1760238405Sjkim	addl	8(%edi),%eax
1761238405Sjkim	adcl	$0,%edx
176295967Speter	decl	%ecx
1763238405Sjkim	movl	%eax,8(%edi)
1764238405Sjkim	movl	%edx,%esi
1765238405Sjkim	jz	.L008maw_end
1766127326Smarkm
1767238405Sjkim	movl	12(%ebx),%eax
176895967Speter	mull	%ebp
1769238405Sjkim	addl	%esi,%eax
1770238405Sjkim	adcl	$0,%edx
1771238405Sjkim	addl	12(%edi),%eax
1772238405Sjkim	adcl	$0,%edx
177395967Speter	decl	%ecx
1774238405Sjkim	movl	%eax,12(%edi)
1775238405Sjkim	movl	%edx,%esi
1776238405Sjkim	jz	.L008maw_end
1777127326Smarkm
1778238405Sjkim	movl	16(%ebx),%eax
177995967Speter	mull	%ebp
1780238405Sjkim	addl	%esi,%eax
1781238405Sjkim	adcl	$0,%edx
1782238405Sjkim	addl	16(%edi),%eax
1783238405Sjkim	adcl	$0,%edx
178495967Speter	decl	%ecx
1785238405Sjkim	movl	%eax,16(%edi)
1786238405Sjkim	movl	%edx,%esi
1787238405Sjkim	jz	.L008maw_end
1788127326Smarkm
1789238405Sjkim	movl	20(%ebx),%eax
179095967Speter	mull	%ebp
1791238405Sjkim	addl	%esi,%eax
1792238405Sjkim	adcl	$0,%edx
1793238405Sjkim	addl	20(%edi),%eax
1794238405Sjkim	adcl	$0,%edx
179595967Speter	decl	%ecx
1796238405Sjkim	movl	%eax,20(%edi)
1797238405Sjkim	movl	%edx,%esi
1798238405Sjkim	jz	.L008maw_end
1799127326Smarkm
1800238405Sjkim	movl	24(%ebx),%eax
180195967Speter	mull	%ebp
1802238405Sjkim	addl	%esi,%eax
1803238405Sjkim	adcl	$0,%edx
1804238405Sjkim	addl	24(%edi),%eax
1805238405Sjkim	adcl	$0,%edx
1806238405Sjkim	movl	%eax,24(%edi)
1807238405Sjkim	movl	%edx,%esi
1808238405Sjkim.L008maw_end:
1809238405Sjkim	movl	%esi,%eax
181095967Speter	popl	%ecx
181195967Speter	popl	%edi
181295967Speter	popl	%esi
181395967Speter	popl	%ebx
181495967Speter	popl	%ebp
181595967Speter	ret
1816238405Sjkim.size	bn_mul_add_words,.-.L_bn_mul_add_words_begin
1817238405Sjkim.globl	bn_mul_words
1818238405Sjkim.type	bn_mul_words,@function
1819238405Sjkim.align	16
182095967Speterbn_mul_words:
1821238405Sjkim.L_bn_mul_words_begin:
1822238405Sjkim	leal	OPENSSL_ia32cap_P,%eax
1823238405Sjkim	btl	$26,(%eax)
1824238405Sjkim	jnc	.L009mw_non_sse2
1825238405Sjkim	movl	4(%esp),%eax
1826238405Sjkim	movl	8(%esp),%edx
1827238405Sjkim	movl	12(%esp),%ecx
1828238405Sjkim	movd	16(%esp),%mm0
1829238405Sjkim	pxor	%mm1,%mm1
1830238405Sjkim.align	16
1831238405Sjkim.L010mw_sse2_loop:
1832238405Sjkim	movd	(%edx),%mm2
1833238405Sjkim	pmuludq	%mm0,%mm2
1834238405Sjkim	leal	4(%edx),%edx
1835238405Sjkim	paddq	%mm2,%mm1
1836238405Sjkim	movd	%mm1,(%eax)
1837238405Sjkim	subl	$1,%ecx
1838238405Sjkim	psrlq	$32,%mm1
1839238405Sjkim	leal	4(%eax),%eax
1840238405Sjkim	jnz	.L010mw_sse2_loop
1841238405Sjkim	movd	%mm1,%eax
1842238405Sjkim	emms
1843238405Sjkim	ret
1844238405Sjkim.align	16
1845238405Sjkim.L009mw_non_sse2:
184695967Speter	pushl	%ebp
184795967Speter	pushl	%ebx
184895967Speter	pushl	%esi
184995967Speter	pushl	%edi
185095967Speter
1851238405Sjkim	xorl	%esi,%esi
1852238405Sjkim	movl	20(%esp),%edi
1853238405Sjkim	movl	24(%esp),%ebx
1854238405Sjkim	movl	28(%esp),%ebp
1855238405Sjkim	movl	32(%esp),%ecx
1856238405Sjkim	andl	$4294967288,%ebp
1857238405Sjkim	jz	.L011mw_finish
1858238405Sjkim.L012mw_loop:
185995967Speter
1860238405Sjkim	movl	(%ebx),%eax
186195967Speter	mull	%ecx
1862238405Sjkim	addl	%esi,%eax
1863238405Sjkim	adcl	$0,%edx
1864238405Sjkim	movl	%eax,(%edi)
1865238405Sjkim	movl	%edx,%esi
1866127326Smarkm
1867238405Sjkim	movl	4(%ebx),%eax
186895967Speter	mull	%ecx
1869238405Sjkim	addl	%esi,%eax
1870238405Sjkim	adcl	$0,%edx
1871238405Sjkim	movl	%eax,4(%edi)
1872238405Sjkim	movl	%edx,%esi
1873127326Smarkm
1874238405Sjkim	movl	8(%ebx),%eax
187595967Speter	mull	%ecx
1876238405Sjkim	addl	%esi,%eax
1877238405Sjkim	adcl	$0,%edx
1878238405Sjkim	movl	%eax,8(%edi)
1879238405Sjkim	movl	%edx,%esi
1880127326Smarkm
1881238405Sjkim	movl	12(%ebx),%eax
188295967Speter	mull	%ecx
1883238405Sjkim	addl	%esi,%eax
1884238405Sjkim	adcl	$0,%edx
1885238405Sjkim	movl	%eax,12(%edi)
1886238405Sjkim	movl	%edx,%esi
1887127326Smarkm
1888238405Sjkim	movl	16(%ebx),%eax
188995967Speter	mull	%ecx
1890238405Sjkim	addl	%esi,%eax
1891238405Sjkim	adcl	$0,%edx
1892238405Sjkim	movl	%eax,16(%edi)
1893238405Sjkim	movl	%edx,%esi
1894127326Smarkm
1895238405Sjkim	movl	20(%ebx),%eax
189695967Speter	mull	%ecx
1897238405Sjkim	addl	%esi,%eax
1898238405Sjkim	adcl	$0,%edx
1899238405Sjkim	movl	%eax,20(%edi)
1900238405Sjkim	movl	%edx,%esi
1901127326Smarkm
1902238405Sjkim	movl	24(%ebx),%eax
190395967Speter	mull	%ecx
1904238405Sjkim	addl	%esi,%eax
1905238405Sjkim	adcl	$0,%edx
1906238405Sjkim	movl	%eax,24(%edi)
1907238405Sjkim	movl	%edx,%esi
1908127326Smarkm
1909238405Sjkim	movl	28(%ebx),%eax
191095967Speter	mull	%ecx
1911238405Sjkim	addl	%esi,%eax
1912238405Sjkim	adcl	$0,%edx
1913238405Sjkim	movl	%eax,28(%edi)
1914238405Sjkim	movl	%edx,%esi
191595967Speter
1916238405Sjkim	addl	$32,%ebx
1917238405Sjkim	addl	$32,%edi
1918238405Sjkim	subl	$8,%ebp
1919238405Sjkim	jz	.L011mw_finish
1920238405Sjkim	jmp	.L012mw_loop
1921238405Sjkim.L011mw_finish:
1922238405Sjkim	movl	28(%esp),%ebp
1923238405Sjkim	andl	$7,%ebp
1924238405Sjkim	jnz	.L013mw_finish2
1925238405Sjkim	jmp	.L014mw_end
1926238405Sjkim.L013mw_finish2:
1927127326Smarkm
1928238405Sjkim	movl	(%ebx),%eax
192995967Speter	mull	%ecx
1930238405Sjkim	addl	%esi,%eax
1931238405Sjkim	adcl	$0,%edx
1932238405Sjkim	movl	%eax,(%edi)
1933238405Sjkim	movl	%edx,%esi
193495967Speter	decl	%ebp
1935238405Sjkim	jz	.L014mw_end
1936127326Smarkm
1937238405Sjkim	movl	4(%ebx),%eax
193895967Speter	mull	%ecx
1939238405Sjkim	addl	%esi,%eax
1940238405Sjkim	adcl	$0,%edx
1941238405Sjkim	movl	%eax,4(%edi)
1942238405Sjkim	movl	%edx,%esi
194395967Speter	decl	%ebp
1944238405Sjkim	jz	.L014mw_end
1945127326Smarkm
1946238405Sjkim	movl	8(%ebx),%eax
194795967Speter	mull	%ecx
1948238405Sjkim	addl	%esi,%eax
1949238405Sjkim	adcl	$0,%edx
1950238405Sjkim	movl	%eax,8(%edi)
1951238405Sjkim	movl	%edx,%esi
195295967Speter	decl	%ebp
1953238405Sjkim	jz	.L014mw_end
1954127326Smarkm
1955238405Sjkim	movl	12(%ebx),%eax
195695967Speter	mull	%ecx
1957238405Sjkim	addl	%esi,%eax
1958238405Sjkim	adcl	$0,%edx
1959238405Sjkim	movl	%eax,12(%edi)
1960238405Sjkim	movl	%edx,%esi
196195967Speter	decl	%ebp
1962238405Sjkim	jz	.L014mw_end
1963127326Smarkm
1964238405Sjkim	movl	16(%ebx),%eax
196595967Speter	mull	%ecx
1966238405Sjkim	addl	%esi,%eax
1967238405Sjkim	adcl	$0,%edx
1968238405Sjkim	movl	%eax,16(%edi)
1969238405Sjkim	movl	%edx,%esi
197095967Speter	decl	%ebp
1971238405Sjkim	jz	.L014mw_end
1972127326Smarkm
1973238405Sjkim	movl	20(%ebx),%eax
197495967Speter	mull	%ecx
1975238405Sjkim	addl	%esi,%eax
1976238405Sjkim	adcl	$0,%edx
1977238405Sjkim	movl	%eax,20(%edi)
1978238405Sjkim	movl	%edx,%esi
197995967Speter	decl	%ebp
1980238405Sjkim	jz	.L014mw_end
1981127326Smarkm
1982238405Sjkim	movl	24(%ebx),%eax
198395967Speter	mull	%ecx
1984238405Sjkim	addl	%esi,%eax
1985238405Sjkim	adcl	$0,%edx
1986238405Sjkim	movl	%eax,24(%edi)
1987238405Sjkim	movl	%edx,%esi
1988238405Sjkim.L014mw_end:
1989238405Sjkim	movl	%esi,%eax
199095967Speter	popl	%edi
199195967Speter	popl	%esi
199295967Speter	popl	%ebx
199395967Speter	popl	%ebp
199495967Speter	ret
1995238405Sjkim.size	bn_mul_words,.-.L_bn_mul_words_begin
1996238405Sjkim.globl	bn_sqr_words
1997238405Sjkim.type	bn_sqr_words,@function
1998238405Sjkim.align	16
199995967Speterbn_sqr_words:
2000238405Sjkim.L_bn_sqr_words_begin:
2001238405Sjkim	leal	OPENSSL_ia32cap_P,%eax
2002238405Sjkim	btl	$26,(%eax)
2003238405Sjkim	jnc	.L015sqr_non_sse2
2004238405Sjkim	movl	4(%esp),%eax
2005238405Sjkim	movl	8(%esp),%edx
2006238405Sjkim	movl	12(%esp),%ecx
2007238405Sjkim.align	16
2008238405Sjkim.L016sqr_sse2_loop:
2009238405Sjkim	movd	(%edx),%mm0
2010238405Sjkim	pmuludq	%mm0,%mm0
2011238405Sjkim	leal	4(%edx),%edx
2012238405Sjkim	movq	%mm0,(%eax)
2013238405Sjkim	subl	$1,%ecx
2014238405Sjkim	leal	8(%eax),%eax
2015238405Sjkim	jnz	.L016sqr_sse2_loop
2016238405Sjkim	emms
2017238405Sjkim	ret
2018238405Sjkim.align	16
2019238405Sjkim.L015sqr_non_sse2:
202095967Speter	pushl	%ebp
202195967Speter	pushl	%ebx
202295967Speter	pushl	%esi
202395967Speter	pushl	%edi
202495967Speter
2025238405Sjkim	movl	20(%esp),%esi
2026238405Sjkim	movl	24(%esp),%edi
2027238405Sjkim	movl	28(%esp),%ebx
2028238405Sjkim	andl	$4294967288,%ebx
2029238405Sjkim	jz	.L017sw_finish
2030238405Sjkim.L018sw_loop:
203195967Speter
2032238405Sjkim	movl	(%edi),%eax
203395967Speter	mull	%eax
2034238405Sjkim	movl	%eax,(%esi)
2035238405Sjkim	movl	%edx,4(%esi)
2036127326Smarkm
2037238405Sjkim	movl	4(%edi),%eax
203895967Speter	mull	%eax
2039238405Sjkim	movl	%eax,8(%esi)
2040238405Sjkim	movl	%edx,12(%esi)
2041127326Smarkm
2042238405Sjkim	movl	8(%edi),%eax
204395967Speter	mull	%eax
2044238405Sjkim	movl	%eax,16(%esi)
2045238405Sjkim	movl	%edx,20(%esi)
2046127326Smarkm
2047238405Sjkim	movl	12(%edi),%eax
204895967Speter	mull	%eax
2049238405Sjkim	movl	%eax,24(%esi)
2050238405Sjkim	movl	%edx,28(%esi)
2051127326Smarkm
2052238405Sjkim	movl	16(%edi),%eax
205395967Speter	mull	%eax
2054238405Sjkim	movl	%eax,32(%esi)
2055238405Sjkim	movl	%edx,36(%esi)
2056127326Smarkm
2057238405Sjkim	movl	20(%edi),%eax
205895967Speter	mull	%eax
2059238405Sjkim	movl	%eax,40(%esi)
2060238405Sjkim	movl	%edx,44(%esi)
2061127326Smarkm
2062238405Sjkim	movl	24(%edi),%eax
206395967Speter	mull	%eax
2064238405Sjkim	movl	%eax,48(%esi)
2065238405Sjkim	movl	%edx,52(%esi)
2066127326Smarkm
2067238405Sjkim	movl	28(%edi),%eax
206895967Speter	mull	%eax
2069238405Sjkim	movl	%eax,56(%esi)
2070238405Sjkim	movl	%edx,60(%esi)
207195967Speter
2072238405Sjkim	addl	$32,%edi
2073238405Sjkim	addl	$64,%esi
2074238405Sjkim	subl	$8,%ebx
2075238405Sjkim	jnz	.L018sw_loop
2076238405Sjkim.L017sw_finish:
2077238405Sjkim	movl	28(%esp),%ebx
2078238405Sjkim	andl	$7,%ebx
2079238405Sjkim	jz	.L019sw_end
2080127326Smarkm
2081238405Sjkim	movl	(%edi),%eax
208295967Speter	mull	%eax
2083238405Sjkim	movl	%eax,(%esi)
208495967Speter	decl	%ebx
2085238405Sjkim	movl	%edx,4(%esi)
2086238405Sjkim	jz	.L019sw_end
2087127326Smarkm
2088238405Sjkim	movl	4(%edi),%eax
208995967Speter	mull	%eax
2090238405Sjkim	movl	%eax,8(%esi)
209195967Speter	decl	%ebx
2092238405Sjkim	movl	%edx,12(%esi)
2093238405Sjkim	jz	.L019sw_end
2094127326Smarkm
2095238405Sjkim	movl	8(%edi),%eax
209695967Speter	mull	%eax
2097238405Sjkim	movl	%eax,16(%esi)
209895967Speter	decl	%ebx
2099238405Sjkim	movl	%edx,20(%esi)
2100238405Sjkim	jz	.L019sw_end
2101127326Smarkm
2102238405Sjkim	movl	12(%edi),%eax
210395967Speter	mull	%eax
2104238405Sjkim	movl	%eax,24(%esi)
210595967Speter	decl	%ebx
2106238405Sjkim	movl	%edx,28(%esi)
2107238405Sjkim	jz	.L019sw_end
2108127326Smarkm
2109238405Sjkim	movl	16(%edi),%eax
211095967Speter	mull	%eax
2111238405Sjkim	movl	%eax,32(%esi)
211295967Speter	decl	%ebx
2113238405Sjkim	movl	%edx,36(%esi)
2114238405Sjkim	jz	.L019sw_end
2115127326Smarkm
2116238405Sjkim	movl	20(%edi),%eax
211795967Speter	mull	%eax
2118238405Sjkim	movl	%eax,40(%esi)
211995967Speter	decl	%ebx
2120238405Sjkim	movl	%edx,44(%esi)
2121238405Sjkim	jz	.L019sw_end
2122127326Smarkm
2123238405Sjkim	movl	24(%edi),%eax
212495967Speter	mull	%eax
2125238405Sjkim	movl	%eax,48(%esi)
2126238405Sjkim	movl	%edx,52(%esi)
2127238405Sjkim.L019sw_end:
212895967Speter	popl	%edi
212995967Speter	popl	%esi
213095967Speter	popl	%ebx
213195967Speter	popl	%ebp
213295967Speter	ret
2133238405Sjkim.size	bn_sqr_words,.-.L_bn_sqr_words_begin
2134238405Sjkim.globl	bn_div_words
2135238405Sjkim.type	bn_div_words,@function
2136238405Sjkim.align	16
213795967Speterbn_div_words:
2138238405Sjkim.L_bn_div_words_begin:
2139238405Sjkim	movl	4(%esp),%edx
2140238405Sjkim	movl	8(%esp),%eax
2141238405Sjkim	movl	12(%esp),%ecx
2142238405Sjkim	divl	%ecx
2143238405Sjkim	ret
2144238405Sjkim.size	bn_div_words,.-.L_bn_div_words_begin
2145238405Sjkim.globl	bn_add_words
2146238405Sjkim.type	bn_add_words,@function
2147238405Sjkim.align	16
2148238405Sjkimbn_add_words:
2149238405Sjkim.L_bn_add_words_begin:
215095967Speter	pushl	%ebp
215195967Speter	pushl	%ebx
215295967Speter	pushl	%esi
215395967Speter	pushl	%edi
215495967Speter
2155238405Sjkim	movl	20(%esp),%ebx
2156238405Sjkim	movl	24(%esp),%esi
2157238405Sjkim	movl	28(%esp),%edi
2158238405Sjkim	movl	32(%esp),%ebp
2159238405Sjkim	xorl	%eax,%eax
2160238405Sjkim	andl	$4294967288,%ebp
2161238405Sjkim	jz	.L020aw_finish
2162238405Sjkim.L021aw_loop:
2163238405Sjkim
2164238405Sjkim	movl	(%esi),%ecx
2165238405Sjkim	movl	(%edi),%edx
2166238405Sjkim	addl	%eax,%ecx
2167238405Sjkim	movl	$0,%eax
2168238405Sjkim	adcl	%eax,%eax
2169238405Sjkim	addl	%edx,%ecx
2170238405Sjkim	adcl	$0,%eax
2171238405Sjkim	movl	%ecx,(%ebx)
2172238405Sjkim
2173238405Sjkim	movl	4(%esi),%ecx
2174238405Sjkim	movl	4(%edi),%edx
2175238405Sjkim	addl	%eax,%ecx
2176238405Sjkim	movl	$0,%eax
2177238405Sjkim	adcl	%eax,%eax
2178238405Sjkim	addl	%edx,%ecx
2179238405Sjkim	adcl	$0,%eax
2180238405Sjkim	movl	%ecx,4(%ebx)
2181238405Sjkim
2182238405Sjkim	movl	8(%esi),%ecx
2183238405Sjkim	movl	8(%edi),%edx
2184238405Sjkim	addl	%eax,%ecx
2185238405Sjkim	movl	$0,%eax
2186238405Sjkim	adcl	%eax,%eax
2187238405Sjkim	addl	%edx,%ecx
2188238405Sjkim	adcl	$0,%eax
2189238405Sjkim	movl	%ecx,8(%ebx)
2190238405Sjkim
2191238405Sjkim	movl	12(%esi),%ecx
2192238405Sjkim	movl	12(%edi),%edx
2193238405Sjkim	addl	%eax,%ecx
2194238405Sjkim	movl	$0,%eax
2195238405Sjkim	adcl	%eax,%eax
2196238405Sjkim	addl	%edx,%ecx
2197238405Sjkim	adcl	$0,%eax
2198238405Sjkim	movl	%ecx,12(%ebx)
2199238405Sjkim
2200238405Sjkim	movl	16(%esi),%ecx
2201238405Sjkim	movl	16(%edi),%edx
2202238405Sjkim	addl	%eax,%ecx
2203238405Sjkim	movl	$0,%eax
2204238405Sjkim	adcl	%eax,%eax
2205238405Sjkim	addl	%edx,%ecx
2206238405Sjkim	adcl	$0,%eax
2207238405Sjkim	movl	%ecx,16(%ebx)
2208238405Sjkim
2209238405Sjkim	movl	20(%esi),%ecx
2210238405Sjkim	movl	20(%edi),%edx
2211238405Sjkim	addl	%eax,%ecx
2212238405Sjkim	movl	$0,%eax
2213238405Sjkim	adcl	%eax,%eax
2214238405Sjkim	addl	%edx,%ecx
2215238405Sjkim	adcl	$0,%eax
2216238405Sjkim	movl	%ecx,20(%ebx)
2217238405Sjkim
2218238405Sjkim	movl	24(%esi),%ecx
2219238405Sjkim	movl	24(%edi),%edx
2220238405Sjkim	addl	%eax,%ecx
2221238405Sjkim	movl	$0,%eax
2222238405Sjkim	adcl	%eax,%eax
2223238405Sjkim	addl	%edx,%ecx
2224238405Sjkim	adcl	$0,%eax
2225238405Sjkim	movl	%ecx,24(%ebx)
2226238405Sjkim
2227238405Sjkim	movl	28(%esi),%ecx
2228238405Sjkim	movl	28(%edi),%edx
2229238405Sjkim	addl	%eax,%ecx
2230238405Sjkim	movl	$0,%eax
2231238405Sjkim	adcl	%eax,%eax
2232238405Sjkim	addl	%edx,%ecx
2233238405Sjkim	adcl	$0,%eax
2234238405Sjkim	movl	%ecx,28(%ebx)
2235238405Sjkim
2236238405Sjkim	addl	$32,%esi
2237238405Sjkim	addl	$32,%edi
2238238405Sjkim	addl	$32,%ebx
2239238405Sjkim	subl	$8,%ebp
2240238405Sjkim	jnz	.L021aw_loop
2241238405Sjkim.L020aw_finish:
2242238405Sjkim	movl	32(%esp),%ebp
2243238405Sjkim	andl	$7,%ebp
2244238405Sjkim	jz	.L022aw_end
2245238405Sjkim
2246238405Sjkim	movl	(%esi),%ecx
2247238405Sjkim	movl	(%edi),%edx
2248238405Sjkim	addl	%eax,%ecx
2249238405Sjkim	movl	$0,%eax
2250238405Sjkim	adcl	%eax,%eax
2251238405Sjkim	addl	%edx,%ecx
2252238405Sjkim	adcl	$0,%eax
2253238405Sjkim	decl	%ebp
2254238405Sjkim	movl	%ecx,(%ebx)
2255238405Sjkim	jz	.L022aw_end
2256238405Sjkim
2257238405Sjkim	movl	4(%esi),%ecx
2258238405Sjkim	movl	4(%edi),%edx
2259238405Sjkim	addl	%eax,%ecx
2260238405Sjkim	movl	$0,%eax
2261238405Sjkim	adcl	%eax,%eax
2262238405Sjkim	addl	%edx,%ecx
2263238405Sjkim	adcl	$0,%eax
2264238405Sjkim	decl	%ebp
2265238405Sjkim	movl	%ecx,4(%ebx)
2266238405Sjkim	jz	.L022aw_end
2267238405Sjkim
2268238405Sjkim	movl	8(%esi),%ecx
2269238405Sjkim	movl	8(%edi),%edx
2270238405Sjkim	addl	%eax,%ecx
2271238405Sjkim	movl	$0,%eax
2272238405Sjkim	adcl	%eax,%eax
2273238405Sjkim	addl	%edx,%ecx
2274238405Sjkim	adcl	$0,%eax
2275238405Sjkim	decl	%ebp
2276238405Sjkim	movl	%ecx,8(%ebx)
2277238405Sjkim	jz	.L022aw_end
2278238405Sjkim
2279238405Sjkim	movl	12(%esi),%ecx
2280238405Sjkim	movl	12(%edi),%edx
2281238405Sjkim	addl	%eax,%ecx
2282238405Sjkim	movl	$0,%eax
2283238405Sjkim	adcl	%eax,%eax
2284238405Sjkim	addl	%edx,%ecx
2285238405Sjkim	adcl	$0,%eax
2286238405Sjkim	decl	%ebp
2287238405Sjkim	movl	%ecx,12(%ebx)
2288238405Sjkim	jz	.L022aw_end
2289238405Sjkim
2290238405Sjkim	movl	16(%esi),%ecx
2291238405Sjkim	movl	16(%edi),%edx
2292238405Sjkim	addl	%eax,%ecx
2293238405Sjkim	movl	$0,%eax
2294238405Sjkim	adcl	%eax,%eax
2295238405Sjkim	addl	%edx,%ecx
2296238405Sjkim	adcl	$0,%eax
2297238405Sjkim	decl	%ebp
2298238405Sjkim	movl	%ecx,16(%ebx)
2299238405Sjkim	jz	.L022aw_end
2300238405Sjkim
2301238405Sjkim	movl	20(%esi),%ecx
2302238405Sjkim	movl	20(%edi),%edx
2303238405Sjkim	addl	%eax,%ecx
2304238405Sjkim	movl	$0,%eax
2305238405Sjkim	adcl	%eax,%eax
2306238405Sjkim	addl	%edx,%ecx
2307238405Sjkim	adcl	$0,%eax
2308238405Sjkim	decl	%ebp
2309238405Sjkim	movl	%ecx,20(%ebx)
2310238405Sjkim	jz	.L022aw_end
2311238405Sjkim
2312238405Sjkim	movl	24(%esi),%ecx
2313238405Sjkim	movl	24(%edi),%edx
2314238405Sjkim	addl	%eax,%ecx
2315238405Sjkim	movl	$0,%eax
2316238405Sjkim	adcl	%eax,%eax
2317238405Sjkim	addl	%edx,%ecx
2318238405Sjkim	adcl	$0,%eax
2319238405Sjkim	movl	%ecx,24(%ebx)
2320238405Sjkim.L022aw_end:
232195967Speter	popl	%edi
232295967Speter	popl	%esi
232395967Speter	popl	%ebx
232495967Speter	popl	%ebp
232595967Speter	ret
2326238405Sjkim.size	bn_add_words,.-.L_bn_add_words_begin
2327238405Sjkim.globl	bn_sub_words
2328238405Sjkim.type	bn_sub_words,@function
2329238405Sjkim.align	16
2330238405Sjkimbn_sub_words:
2331238405Sjkim.L_bn_sub_words_begin:
233295967Speter	pushl	%ebp
233395967Speter	pushl	%ebx
233495967Speter	pushl	%esi
233595967Speter	pushl	%edi
233695967Speter
2337238405Sjkim	movl	20(%esp),%ebx
2338238405Sjkim	movl	24(%esp),%esi
2339238405Sjkim	movl	28(%esp),%edi
2340238405Sjkim	movl	32(%esp),%ebp
2341238405Sjkim	xorl	%eax,%eax
2342238405Sjkim	andl	$4294967288,%ebp
2343238405Sjkim	jz	.L023aw_finish
2344238405Sjkim.L024aw_loop:
234595967Speter
2346238405Sjkim	movl	(%esi),%ecx
2347238405Sjkim	movl	(%edi),%edx
2348238405Sjkim	subl	%eax,%ecx
2349238405Sjkim	movl	$0,%eax
2350238405Sjkim	adcl	%eax,%eax
2351238405Sjkim	subl	%edx,%ecx
2352238405Sjkim	adcl	$0,%eax
2353238405Sjkim	movl	%ecx,(%ebx)
2354127326Smarkm
2355238405Sjkim	movl	4(%esi),%ecx
2356238405Sjkim	movl	4(%edi),%edx
2357238405Sjkim	subl	%eax,%ecx
2358238405Sjkim	movl	$0,%eax
2359238405Sjkim	adcl	%eax,%eax
2360238405Sjkim	subl	%edx,%ecx
2361238405Sjkim	adcl	$0,%eax
2362238405Sjkim	movl	%ecx,4(%ebx)
2363127326Smarkm
2364238405Sjkim	movl	8(%esi),%ecx
2365238405Sjkim	movl	8(%edi),%edx
2366238405Sjkim	subl	%eax,%ecx
2367238405Sjkim	movl	$0,%eax
2368238405Sjkim	adcl	%eax,%eax
2369238405Sjkim	subl	%edx,%ecx
2370238405Sjkim	adcl	$0,%eax
2371238405Sjkim	movl	%ecx,8(%ebx)
2372127326Smarkm
2373238405Sjkim	movl	12(%esi),%ecx
2374238405Sjkim	movl	12(%edi),%edx
2375238405Sjkim	subl	%eax,%ecx
2376238405Sjkim	movl	$0,%eax
2377238405Sjkim	adcl	%eax,%eax
2378238405Sjkim	subl	%edx,%ecx
2379238405Sjkim	adcl	$0,%eax
2380238405Sjkim	movl	%ecx,12(%ebx)
2381127326Smarkm
2382238405Sjkim	movl	16(%esi),%ecx
2383238405Sjkim	movl	16(%edi),%edx
2384238405Sjkim	subl	%eax,%ecx
2385238405Sjkim	movl	$0,%eax
2386238405Sjkim	adcl	%eax,%eax
2387238405Sjkim	subl	%edx,%ecx
2388238405Sjkim	adcl	$0,%eax
2389238405Sjkim	movl	%ecx,16(%ebx)
2390127326Smarkm
2391238405Sjkim	movl	20(%esi),%ecx
2392238405Sjkim	movl	20(%edi),%edx
2393238405Sjkim	subl	%eax,%ecx
2394238405Sjkim	movl	$0,%eax
2395238405Sjkim	adcl	%eax,%eax
2396238405Sjkim	subl	%edx,%ecx
2397238405Sjkim	adcl	$0,%eax
2398238405Sjkim	movl	%ecx,20(%ebx)
2399127326Smarkm
2400238405Sjkim	movl	24(%esi),%ecx
2401238405Sjkim	movl	24(%edi),%edx
2402238405Sjkim	subl	%eax,%ecx
2403238405Sjkim	movl	$0,%eax
2404238405Sjkim	adcl	%eax,%eax
2405238405Sjkim	subl	%edx,%ecx
2406238405Sjkim	adcl	$0,%eax
2407238405Sjkim	movl	%ecx,24(%ebx)
2408127326Smarkm
2409238405Sjkim	movl	28(%esi),%ecx
2410238405Sjkim	movl	28(%edi),%edx
2411238405Sjkim	subl	%eax,%ecx
2412238405Sjkim	movl	$0,%eax
2413238405Sjkim	adcl	%eax,%eax
2414238405Sjkim	subl	%edx,%ecx
2415238405Sjkim	adcl	$0,%eax
2416238405Sjkim	movl	%ecx,28(%ebx)
2417127326Smarkm
2418238405Sjkim	addl	$32,%esi
2419238405Sjkim	addl	$32,%edi
2420238405Sjkim	addl	$32,%ebx
2421238405Sjkim	subl	$8,%ebp
2422238405Sjkim	jnz	.L024aw_loop
2423238405Sjkim.L023aw_finish:
2424238405Sjkim	movl	32(%esp),%ebp
2425238405Sjkim	andl	$7,%ebp
2426238405Sjkim	jz	.L025aw_end
242795967Speter
2428238405Sjkim	movl	(%esi),%ecx
2429238405Sjkim	movl	(%edi),%edx
2430238405Sjkim	subl	%eax,%ecx
2431238405Sjkim	movl	$0,%eax
2432238405Sjkim	adcl	%eax,%eax
2433238405Sjkim	subl	%edx,%ecx
2434238405Sjkim	adcl	$0,%eax
243595967Speter	decl	%ebp
2436238405Sjkim	movl	%ecx,(%ebx)
2437238405Sjkim	jz	.L025aw_end
2438127326Smarkm
2439238405Sjkim	movl	4(%esi),%ecx
2440238405Sjkim	movl	4(%edi),%edx
2441238405Sjkim	subl	%eax,%ecx
2442238405Sjkim	movl	$0,%eax
2443238405Sjkim	adcl	%eax,%eax
2444238405Sjkim	subl	%edx,%ecx
2445238405Sjkim	adcl	$0,%eax
244695967Speter	decl	%ebp
2447238405Sjkim	movl	%ecx,4(%ebx)
2448238405Sjkim	jz	.L025aw_end
2449127326Smarkm
2450238405Sjkim	movl	8(%esi),%ecx
2451238405Sjkim	movl	8(%edi),%edx
2452238405Sjkim	subl	%eax,%ecx
2453238405Sjkim	movl	$0,%eax
2454238405Sjkim	adcl	%eax,%eax
2455238405Sjkim	subl	%edx,%ecx
2456238405Sjkim	adcl	$0,%eax
245795967Speter	decl	%ebp
2458238405Sjkim	movl	%ecx,8(%ebx)
2459238405Sjkim	jz	.L025aw_end
2460127326Smarkm
2461238405Sjkim	movl	12(%esi),%ecx
2462238405Sjkim	movl	12(%edi),%edx
2463238405Sjkim	subl	%eax,%ecx
2464238405Sjkim	movl	$0,%eax
2465238405Sjkim	adcl	%eax,%eax
2466238405Sjkim	subl	%edx,%ecx
2467238405Sjkim	adcl	$0,%eax
246895967Speter	decl	%ebp
2469238405Sjkim	movl	%ecx,12(%ebx)
2470238405Sjkim	jz	.L025aw_end
2471127326Smarkm
2472238405Sjkim	movl	16(%esi),%ecx
2473238405Sjkim	movl	16(%edi),%edx
2474238405Sjkim	subl	%eax,%ecx
2475238405Sjkim	movl	$0,%eax
2476238405Sjkim	adcl	%eax,%eax
2477238405Sjkim	subl	%edx,%ecx
2478238405Sjkim	adcl	$0,%eax
247995967Speter	decl	%ebp
2480238405Sjkim	movl	%ecx,16(%ebx)
2481238405Sjkim	jz	.L025aw_end
2482127326Smarkm
2483238405Sjkim	movl	20(%esi),%ecx
2484238405Sjkim	movl	20(%edi),%edx
2485238405Sjkim	subl	%eax,%ecx
2486238405Sjkim	movl	$0,%eax
2487238405Sjkim	adcl	%eax,%eax
2488238405Sjkim	subl	%edx,%ecx
2489238405Sjkim	adcl	$0,%eax
249095967Speter	decl	%ebp
2491238405Sjkim	movl	%ecx,20(%ebx)
2492238405Sjkim	jz	.L025aw_end
2493127326Smarkm
2494238405Sjkim	movl	24(%esi),%ecx
2495238405Sjkim	movl	24(%edi),%edx
2496238405Sjkim	subl	%eax,%ecx
2497238405Sjkim	movl	$0,%eax
2498238405Sjkim	adcl	%eax,%eax
2499238405Sjkim	subl	%edx,%ecx
2500238405Sjkim	adcl	$0,%eax
2501238405Sjkim	movl	%ecx,24(%ebx)
2502238405Sjkim.L025aw_end:
250395967Speter	popl	%edi
250495967Speter	popl	%esi
250595967Speter	popl	%ebx
250695967Speter	popl	%ebp
250795967Speter	ret
2508238405Sjkim.size	bn_sub_words,.-.L_bn_sub_words_begin
2509238405Sjkim.globl	bn_sub_part_words
2510238405Sjkim.type	bn_sub_part_words,@function
2511238405Sjkim.align	16
2512238405Sjkimbn_sub_part_words:
2513238405Sjkim.L_bn_sub_part_words_begin:
251495967Speter	pushl	%ebp
251595967Speter	pushl	%ebx
251695967Speter	pushl	%esi
251795967Speter	pushl	%edi
251895967Speter
2519238405Sjkim	movl	20(%esp),%ebx
2520238405Sjkim	movl	24(%esp),%esi
2521238405Sjkim	movl	28(%esp),%edi
2522238405Sjkim	movl	32(%esp),%ebp
2523238405Sjkim	xorl	%eax,%eax
2524238405Sjkim	andl	$4294967288,%ebp
2525238405Sjkim	jz	.L026aw_finish
2526238405Sjkim.L027aw_loop:
252795967Speter
2528238405Sjkim	movl	(%esi),%ecx
2529238405Sjkim	movl	(%edi),%edx
2530238405Sjkim	subl	%eax,%ecx
2531238405Sjkim	movl	$0,%eax
2532238405Sjkim	adcl	%eax,%eax
2533238405Sjkim	subl	%edx,%ecx
2534238405Sjkim	adcl	$0,%eax
2535238405Sjkim	movl	%ecx,(%ebx)
2536127326Smarkm
2537238405Sjkim	movl	4(%esi),%ecx
2538238405Sjkim	movl	4(%edi),%edx
2539238405Sjkim	subl	%eax,%ecx
2540238405Sjkim	movl	$0,%eax
2541238405Sjkim	adcl	%eax,%eax
2542238405Sjkim	subl	%edx,%ecx
2543238405Sjkim	adcl	$0,%eax
2544238405Sjkim	movl	%ecx,4(%ebx)
2545127326Smarkm
2546238405Sjkim	movl	8(%esi),%ecx
2547238405Sjkim	movl	8(%edi),%edx
2548238405Sjkim	subl	%eax,%ecx
2549238405Sjkim	movl	$0,%eax
2550238405Sjkim	adcl	%eax,%eax
2551238405Sjkim	subl	%edx,%ecx
2552238405Sjkim	adcl	$0,%eax
2553238405Sjkim	movl	%ecx,8(%ebx)
2554127326Smarkm
2555238405Sjkim	movl	12(%esi),%ecx
2556238405Sjkim	movl	12(%edi),%edx
2557238405Sjkim	subl	%eax,%ecx
2558238405Sjkim	movl	$0,%eax
2559238405Sjkim	adcl	%eax,%eax
2560238405Sjkim	subl	%edx,%ecx
2561238405Sjkim	adcl	$0,%eax
2562238405Sjkim	movl	%ecx,12(%ebx)
2563127326Smarkm
2564238405Sjkim	movl	16(%esi),%ecx
2565238405Sjkim	movl	16(%edi),%edx
2566238405Sjkim	subl	%eax,%ecx
2567238405Sjkim	movl	$0,%eax
2568238405Sjkim	adcl	%eax,%eax
2569238405Sjkim	subl	%edx,%ecx
2570238405Sjkim	adcl	$0,%eax
2571238405Sjkim	movl	%ecx,16(%ebx)
2572127326Smarkm
2573238405Sjkim	movl	20(%esi),%ecx
2574238405Sjkim	movl	20(%edi),%edx
2575238405Sjkim	subl	%eax,%ecx
2576238405Sjkim	movl	$0,%eax
2577238405Sjkim	adcl	%eax,%eax
2578238405Sjkim	subl	%edx,%ecx
2579238405Sjkim	adcl	$0,%eax
2580238405Sjkim	movl	%ecx,20(%ebx)
2581127326Smarkm
2582238405Sjkim	movl	24(%esi),%ecx
2583238405Sjkim	movl	24(%edi),%edx
2584238405Sjkim	subl	%eax,%ecx
2585238405Sjkim	movl	$0,%eax
2586238405Sjkim	adcl	%eax,%eax
2587238405Sjkim	subl	%edx,%ecx
2588238405Sjkim	adcl	$0,%eax
2589238405Sjkim	movl	%ecx,24(%ebx)
2590127326Smarkm
2591238405Sjkim	movl	28(%esi),%ecx
2592238405Sjkim	movl	28(%edi),%edx
2593238405Sjkim	subl	%eax,%ecx
2594238405Sjkim	movl	$0,%eax
2595238405Sjkim	adcl	%eax,%eax
2596238405Sjkim	subl	%edx,%ecx
2597238405Sjkim	adcl	$0,%eax
2598238405Sjkim	movl	%ecx,28(%ebx)
2599127326Smarkm
2600238405Sjkim	addl	$32,%esi
2601238405Sjkim	addl	$32,%edi
2602238405Sjkim	addl	$32,%ebx
2603238405Sjkim	subl	$8,%ebp
2604238405Sjkim	jnz	.L027aw_loop
2605238405Sjkim.L026aw_finish:
2606238405Sjkim	movl	32(%esp),%ebp
2607238405Sjkim	andl	$7,%ebp
2608238405Sjkim	jz	.L028aw_end
260995967Speter
2610238405Sjkim	movl	(%esi),%ecx
2611238405Sjkim	movl	(%edi),%edx
2612238405Sjkim	subl	%eax,%ecx
2613238405Sjkim	movl	$0,%eax
2614238405Sjkim	adcl	%eax,%eax
2615238405Sjkim	subl	%edx,%ecx
2616238405Sjkim	adcl	$0,%eax
2617238405Sjkim	movl	%ecx,(%ebx)
2618238405Sjkim	addl	$4,%esi
2619238405Sjkim	addl	$4,%edi
2620238405Sjkim	addl	$4,%ebx
2621238405Sjkim	decl	%ebp
2622238405Sjkim	jz	.L028aw_end
2623127326Smarkm
2624238405Sjkim	movl	(%esi),%ecx
2625238405Sjkim	movl	(%edi),%edx
2626238405Sjkim	subl	%eax,%ecx
2627238405Sjkim	movl	$0,%eax
2628238405Sjkim	adcl	%eax,%eax
2629238405Sjkim	subl	%edx,%ecx
2630238405Sjkim	adcl	$0,%eax
2631238405Sjkim	movl	%ecx,(%ebx)
2632238405Sjkim	addl	$4,%esi
2633238405Sjkim	addl	$4,%edi
2634238405Sjkim	addl	$4,%ebx
263595967Speter	decl	%ebp
2636238405Sjkim	jz	.L028aw_end
2637127326Smarkm
2638238405Sjkim	movl	(%esi),%ecx
2639238405Sjkim	movl	(%edi),%edx
2640238405Sjkim	subl	%eax,%ecx
2641238405Sjkim	movl	$0,%eax
2642238405Sjkim	adcl	%eax,%eax
2643238405Sjkim	subl	%edx,%ecx
2644238405Sjkim	adcl	$0,%eax
2645238405Sjkim	movl	%ecx,(%ebx)
2646238405Sjkim	addl	$4,%esi
2647238405Sjkim	addl	$4,%edi
2648238405Sjkim	addl	$4,%ebx
264995967Speter	decl	%ebp
2650238405Sjkim	jz	.L028aw_end
2651127326Smarkm
2652238405Sjkim	movl	(%esi),%ecx
2653238405Sjkim	movl	(%edi),%edx
2654238405Sjkim	subl	%eax,%ecx
2655238405Sjkim	movl	$0,%eax
2656238405Sjkim	adcl	%eax,%eax
2657238405Sjkim	subl	%edx,%ecx
2658238405Sjkim	adcl	$0,%eax
2659238405Sjkim	movl	%ecx,(%ebx)
2660238405Sjkim	addl	$4,%esi
2661238405Sjkim	addl	$4,%edi
2662238405Sjkim	addl	$4,%ebx
266395967Speter	decl	%ebp
2664238405Sjkim	jz	.L028aw_end
2665127326Smarkm
2666238405Sjkim	movl	(%esi),%ecx
2667238405Sjkim	movl	(%edi),%edx
2668238405Sjkim	subl	%eax,%ecx
2669238405Sjkim	movl	$0,%eax
2670238405Sjkim	adcl	%eax,%eax
2671238405Sjkim	subl	%edx,%ecx
2672238405Sjkim	adcl	$0,%eax
2673238405Sjkim	movl	%ecx,(%ebx)
2674238405Sjkim	addl	$4,%esi
2675238405Sjkim	addl	$4,%edi
2676238405Sjkim	addl	$4,%ebx
267795967Speter	decl	%ebp
2678238405Sjkim	jz	.L028aw_end
2679127326Smarkm
2680238405Sjkim	movl	(%esi),%ecx
2681238405Sjkim	movl	(%edi),%edx
2682238405Sjkim	subl	%eax,%ecx
2683238405Sjkim	movl	$0,%eax
2684238405Sjkim	adcl	%eax,%eax
2685238405Sjkim	subl	%edx,%ecx
2686238405Sjkim	adcl	$0,%eax
2687238405Sjkim	movl	%ecx,(%ebx)
2688238405Sjkim	addl	$4,%esi
2689238405Sjkim	addl	$4,%edi
2690238405Sjkim	addl	$4,%ebx
269195967Speter	decl	%ebp
2692238405Sjkim	jz	.L028aw_end
2693127326Smarkm
2694238405Sjkim	movl	(%esi),%ecx
2695238405Sjkim	movl	(%edi),%edx
2696238405Sjkim	subl	%eax,%ecx
2697238405Sjkim	movl	$0,%eax
2698238405Sjkim	adcl	%eax,%eax
2699238405Sjkim	subl	%edx,%ecx
2700238405Sjkim	adcl	$0,%eax
2701238405Sjkim	movl	%ecx,(%ebx)
2702238405Sjkim	addl	$4,%esi
2703238405Sjkim	addl	$4,%edi
2704238405Sjkim	addl	$4,%ebx
2705238405Sjkim.L028aw_end:
2706238405Sjkim	cmpl	$0,36(%esp)
2707238405Sjkim	je	.L029pw_end
2708238405Sjkim	movl	36(%esp),%ebp
2709238405Sjkim	cmpl	$0,%ebp
2710238405Sjkim	je	.L029pw_end
2711238405Sjkim	jge	.L030pw_pos
2712238405Sjkim
2713238405Sjkim	movl	$0,%edx
2714238405Sjkim	subl	%ebp,%edx
2715238405Sjkim	movl	%edx,%ebp
2716238405Sjkim	andl	$4294967288,%ebp
2717238405Sjkim	jz	.L031pw_neg_finish
2718238405Sjkim.L032pw_neg_loop:
2719238405Sjkim
2720238405Sjkim	movl	$0,%ecx
2721238405Sjkim	movl	(%edi),%edx
2722238405Sjkim	subl	%eax,%ecx
2723238405Sjkim	movl	$0,%eax
2724238405Sjkim	adcl	%eax,%eax
2725238405Sjkim	subl	%edx,%ecx
2726238405Sjkim	adcl	$0,%eax
2727238405Sjkim	movl	%ecx,(%ebx)
2728238405Sjkim
2729238405Sjkim	movl	$0,%ecx
2730238405Sjkim	movl	4(%edi),%edx
2731238405Sjkim	subl	%eax,%ecx
2732238405Sjkim	movl	$0,%eax
2733238405Sjkim	adcl	%eax,%eax
2734238405Sjkim	subl	%edx,%ecx
2735238405Sjkim	adcl	$0,%eax
2736238405Sjkim	movl	%ecx,4(%ebx)
2737238405Sjkim
2738238405Sjkim	movl	$0,%ecx
2739238405Sjkim	movl	8(%edi),%edx
2740238405Sjkim	subl	%eax,%ecx
2741238405Sjkim	movl	$0,%eax
2742238405Sjkim	adcl	%eax,%eax
2743238405Sjkim	subl	%edx,%ecx
2744238405Sjkim	adcl	$0,%eax
2745238405Sjkim	movl	%ecx,8(%ebx)
2746238405Sjkim
2747238405Sjkim	movl	$0,%ecx
2748238405Sjkim	movl	12(%edi),%edx
2749238405Sjkim	subl	%eax,%ecx
2750238405Sjkim	movl	$0,%eax
2751238405Sjkim	adcl	%eax,%eax
2752238405Sjkim	subl	%edx,%ecx
2753238405Sjkim	adcl	$0,%eax
2754238405Sjkim	movl	%ecx,12(%ebx)
2755238405Sjkim
2756238405Sjkim	movl	$0,%ecx
2757238405Sjkim	movl	16(%edi),%edx
2758238405Sjkim	subl	%eax,%ecx
2759238405Sjkim	movl	$0,%eax
2760238405Sjkim	adcl	%eax,%eax
2761238405Sjkim	subl	%edx,%ecx
2762238405Sjkim	adcl	$0,%eax
2763238405Sjkim	movl	%ecx,16(%ebx)
2764238405Sjkim
2765238405Sjkim	movl	$0,%ecx
2766238405Sjkim	movl	20(%edi),%edx
2767238405Sjkim	subl	%eax,%ecx
2768238405Sjkim	movl	$0,%eax
2769238405Sjkim	adcl	%eax,%eax
2770238405Sjkim	subl	%edx,%ecx
2771238405Sjkim	adcl	$0,%eax
2772238405Sjkim	movl	%ecx,20(%ebx)
2773238405Sjkim
2774238405Sjkim	movl	$0,%ecx
2775238405Sjkim	movl	24(%edi),%edx
2776238405Sjkim	subl	%eax,%ecx
2777238405Sjkim	movl	$0,%eax
2778238405Sjkim	adcl	%eax,%eax
2779238405Sjkim	subl	%edx,%ecx
2780238405Sjkim	adcl	$0,%eax
2781238405Sjkim	movl	%ecx,24(%ebx)
2782238405Sjkim
2783238405Sjkim	movl	$0,%ecx
2784238405Sjkim	movl	28(%edi),%edx
2785238405Sjkim	subl	%eax,%ecx
2786238405Sjkim	movl	$0,%eax
2787238405Sjkim	adcl	%eax,%eax
2788238405Sjkim	subl	%edx,%ecx
2789238405Sjkim	adcl	$0,%eax
2790238405Sjkim	movl	%ecx,28(%ebx)
2791238405Sjkim
2792238405Sjkim	addl	$32,%edi
2793238405Sjkim	addl	$32,%ebx
2794238405Sjkim	subl	$8,%ebp
2795238405Sjkim	jnz	.L032pw_neg_loop
2796238405Sjkim.L031pw_neg_finish:
2797238405Sjkim	movl	36(%esp),%edx
2798238405Sjkim	movl	$0,%ebp
2799238405Sjkim	subl	%edx,%ebp
2800238405Sjkim	andl	$7,%ebp
2801238405Sjkim	jz	.L029pw_end
2802238405Sjkim
2803238405Sjkim	movl	$0,%ecx
2804238405Sjkim	movl	(%edi),%edx
2805238405Sjkim	subl	%eax,%ecx
2806238405Sjkim	movl	$0,%eax
2807238405Sjkim	adcl	%eax,%eax
2808238405Sjkim	subl	%edx,%ecx
2809238405Sjkim	adcl	$0,%eax
281095967Speter	decl	%ebp
2811238405Sjkim	movl	%ecx,(%ebx)
2812238405Sjkim	jz	.L029pw_end
2813127326Smarkm
2814238405Sjkim	movl	$0,%ecx
2815238405Sjkim	movl	4(%edi),%edx
2816238405Sjkim	subl	%eax,%ecx
2817238405Sjkim	movl	$0,%eax
2818238405Sjkim	adcl	%eax,%eax
2819238405Sjkim	subl	%edx,%ecx
2820238405Sjkim	adcl	$0,%eax
2821238405Sjkim	decl	%ebp
2822238405Sjkim	movl	%ecx,4(%ebx)
2823238405Sjkim	jz	.L029pw_end
2824238405Sjkim
2825238405Sjkim	movl	$0,%ecx
2826238405Sjkim	movl	8(%edi),%edx
2827238405Sjkim	subl	%eax,%ecx
2828238405Sjkim	movl	$0,%eax
2829238405Sjkim	adcl	%eax,%eax
2830238405Sjkim	subl	%edx,%ecx
2831238405Sjkim	adcl	$0,%eax
2832238405Sjkim	decl	%ebp
2833238405Sjkim	movl	%ecx,8(%ebx)
2834238405Sjkim	jz	.L029pw_end
2835238405Sjkim
2836238405Sjkim	movl	$0,%ecx
2837238405Sjkim	movl	12(%edi),%edx
2838238405Sjkim	subl	%eax,%ecx
2839238405Sjkim	movl	$0,%eax
2840238405Sjkim	adcl	%eax,%eax
2841238405Sjkim	subl	%edx,%ecx
2842238405Sjkim	adcl	$0,%eax
2843238405Sjkim	decl	%ebp
2844238405Sjkim	movl	%ecx,12(%ebx)
2845238405Sjkim	jz	.L029pw_end
2846238405Sjkim
2847238405Sjkim	movl	$0,%ecx
2848238405Sjkim	movl	16(%edi),%edx
2849238405Sjkim	subl	%eax,%ecx
2850238405Sjkim	movl	$0,%eax
2851238405Sjkim	adcl	%eax,%eax
2852238405Sjkim	subl	%edx,%ecx
2853238405Sjkim	adcl	$0,%eax
2854238405Sjkim	decl	%ebp
2855238405Sjkim	movl	%ecx,16(%ebx)
2856238405Sjkim	jz	.L029pw_end
2857238405Sjkim
2858238405Sjkim	movl	$0,%ecx
2859238405Sjkim	movl	20(%edi),%edx
2860238405Sjkim	subl	%eax,%ecx
2861238405Sjkim	movl	$0,%eax
2862238405Sjkim	adcl	%eax,%eax
2863238405Sjkim	subl	%edx,%ecx
2864238405Sjkim	adcl	$0,%eax
2865238405Sjkim	decl	%ebp
2866238405Sjkim	movl	%ecx,20(%ebx)
2867238405Sjkim	jz	.L029pw_end
2868238405Sjkim
2869238405Sjkim	movl	$0,%ecx
2870238405Sjkim	movl	24(%edi),%edx
2871238405Sjkim	subl	%eax,%ecx
2872238405Sjkim	movl	$0,%eax
2873238405Sjkim	adcl	%eax,%eax
2874238405Sjkim	subl	%edx,%ecx
2875238405Sjkim	adcl	$0,%eax
2876238405Sjkim	movl	%ecx,24(%ebx)
2877238405Sjkim	jmp	.L029pw_end
2878238405Sjkim.L030pw_pos:
2879238405Sjkim	andl	$4294967288,%ebp
2880238405Sjkim	jz	.L033pw_pos_finish
2881238405Sjkim.L034pw_pos_loop:
2882238405Sjkim
2883238405Sjkim	movl	(%esi),%ecx
2884238405Sjkim	subl	%eax,%ecx
2885238405Sjkim	movl	%ecx,(%ebx)
2886238405Sjkim	jnc	.L035pw_nc0
2887238405Sjkim
2888238405Sjkim	movl	4(%esi),%ecx
2889238405Sjkim	subl	%eax,%ecx
2890238405Sjkim	movl	%ecx,4(%ebx)
2891238405Sjkim	jnc	.L036pw_nc1
2892238405Sjkim
2893238405Sjkim	movl	8(%esi),%ecx
2894238405Sjkim	subl	%eax,%ecx
2895238405Sjkim	movl	%ecx,8(%ebx)
2896238405Sjkim	jnc	.L037pw_nc2
2897238405Sjkim
2898238405Sjkim	movl	12(%esi),%ecx
2899238405Sjkim	subl	%eax,%ecx
2900238405Sjkim	movl	%ecx,12(%ebx)
2901238405Sjkim	jnc	.L038pw_nc3
2902238405Sjkim
2903238405Sjkim	movl	16(%esi),%ecx
2904238405Sjkim	subl	%eax,%ecx
2905238405Sjkim	movl	%ecx,16(%ebx)
2906238405Sjkim	jnc	.L039pw_nc4
2907238405Sjkim
2908238405Sjkim	movl	20(%esi),%ecx
2909238405Sjkim	subl	%eax,%ecx
2910238405Sjkim	movl	%ecx,20(%ebx)
2911238405Sjkim	jnc	.L040pw_nc5
2912238405Sjkim
2913238405Sjkim	movl	24(%esi),%ecx
2914238405Sjkim	subl	%eax,%ecx
2915238405Sjkim	movl	%ecx,24(%ebx)
2916238405Sjkim	jnc	.L041pw_nc6
2917238405Sjkim
2918238405Sjkim	movl	28(%esi),%ecx
2919238405Sjkim	subl	%eax,%ecx
2920238405Sjkim	movl	%ecx,28(%ebx)
2921238405Sjkim	jnc	.L042pw_nc7
2922238405Sjkim
2923238405Sjkim	addl	$32,%esi
2924238405Sjkim	addl	$32,%ebx
2925238405Sjkim	subl	$8,%ebp
2926238405Sjkim	jnz	.L034pw_pos_loop
2927238405Sjkim.L033pw_pos_finish:
2928238405Sjkim	movl	36(%esp),%ebp
2929238405Sjkim	andl	$7,%ebp
2930238405Sjkim	jz	.L029pw_end
2931238405Sjkim
2932238405Sjkim	movl	(%esi),%ecx
2933238405Sjkim	subl	%eax,%ecx
2934238405Sjkim	movl	%ecx,(%ebx)
2935238405Sjkim	jnc	.L043pw_tail_nc0
2936238405Sjkim	decl	%ebp
2937238405Sjkim	jz	.L029pw_end
2938238405Sjkim
2939238405Sjkim	movl	4(%esi),%ecx
2940238405Sjkim	subl	%eax,%ecx
2941238405Sjkim	movl	%ecx,4(%ebx)
2942238405Sjkim	jnc	.L044pw_tail_nc1
2943238405Sjkim	decl	%ebp
2944238405Sjkim	jz	.L029pw_end
2945238405Sjkim
2946238405Sjkim	movl	8(%esi),%ecx
2947238405Sjkim	subl	%eax,%ecx
2948238405Sjkim	movl	%ecx,8(%ebx)
2949238405Sjkim	jnc	.L045pw_tail_nc2
2950238405Sjkim	decl	%ebp
2951238405Sjkim	jz	.L029pw_end
2952238405Sjkim
2953238405Sjkim	movl	12(%esi),%ecx
2954238405Sjkim	subl	%eax,%ecx
2955238405Sjkim	movl	%ecx,12(%ebx)
2956238405Sjkim	jnc	.L046pw_tail_nc3
2957238405Sjkim	decl	%ebp
2958238405Sjkim	jz	.L029pw_end
2959238405Sjkim
2960238405Sjkim	movl	16(%esi),%ecx
2961238405Sjkim	subl	%eax,%ecx
2962238405Sjkim	movl	%ecx,16(%ebx)
2963238405Sjkim	jnc	.L047pw_tail_nc4
2964238405Sjkim	decl	%ebp
2965238405Sjkim	jz	.L029pw_end
2966238405Sjkim
2967238405Sjkim	movl	20(%esi),%ecx
2968238405Sjkim	subl	%eax,%ecx
2969238405Sjkim	movl	%ecx,20(%ebx)
2970238405Sjkim	jnc	.L048pw_tail_nc5
2971238405Sjkim	decl	%ebp
2972238405Sjkim	jz	.L029pw_end
2973238405Sjkim
2974238405Sjkim	movl	24(%esi),%ecx
2975238405Sjkim	subl	%eax,%ecx
2976238405Sjkim	movl	%ecx,24(%ebx)
2977238405Sjkim	jnc	.L049pw_tail_nc6
2978238405Sjkim	movl	$1,%eax
2979238405Sjkim	jmp	.L029pw_end
2980238405Sjkim.L050pw_nc_loop:
2981238405Sjkim	movl	(%esi),%ecx
2982238405Sjkim	movl	%ecx,(%ebx)
2983238405Sjkim.L035pw_nc0:
2984238405Sjkim	movl	4(%esi),%ecx
2985238405Sjkim	movl	%ecx,4(%ebx)
2986238405Sjkim.L036pw_nc1:
2987238405Sjkim	movl	8(%esi),%ecx
2988238405Sjkim	movl	%ecx,8(%ebx)
2989238405Sjkim.L037pw_nc2:
2990238405Sjkim	movl	12(%esi),%ecx
2991238405Sjkim	movl	%ecx,12(%ebx)
2992238405Sjkim.L038pw_nc3:
2993238405Sjkim	movl	16(%esi),%ecx
2994238405Sjkim	movl	%ecx,16(%ebx)
2995238405Sjkim.L039pw_nc4:
2996238405Sjkim	movl	20(%esi),%ecx
2997238405Sjkim	movl	%ecx,20(%ebx)
2998238405Sjkim.L040pw_nc5:
2999238405Sjkim	movl	24(%esi),%ecx
3000238405Sjkim	movl	%ecx,24(%ebx)
3001238405Sjkim.L041pw_nc6:
3002238405Sjkim	movl	28(%esi),%ecx
3003238405Sjkim	movl	%ecx,28(%ebx)
3004238405Sjkim.L042pw_nc7:
3005238405Sjkim
3006238405Sjkim	addl	$32,%esi
3007238405Sjkim	addl	$32,%ebx
3008238405Sjkim	subl	$8,%ebp
3009238405Sjkim	jnz	.L050pw_nc_loop
3010238405Sjkim	movl	36(%esp),%ebp
3011238405Sjkim	andl	$7,%ebp
3012238405Sjkim	jz	.L051pw_nc_end
3013238405Sjkim	movl	(%esi),%ecx
3014238405Sjkim	movl	%ecx,(%ebx)
3015238405Sjkim.L043pw_tail_nc0:
3016238405Sjkim	decl	%ebp
3017238405Sjkim	jz	.L051pw_nc_end
3018238405Sjkim	movl	4(%esi),%ecx
3019238405Sjkim	movl	%ecx,4(%ebx)
3020238405Sjkim.L044pw_tail_nc1:
3021238405Sjkim	decl	%ebp
3022238405Sjkim	jz	.L051pw_nc_end
3023238405Sjkim	movl	8(%esi),%ecx
3024238405Sjkim	movl	%ecx,8(%ebx)
3025238405Sjkim.L045pw_tail_nc2:
3026238405Sjkim	decl	%ebp
3027238405Sjkim	jz	.L051pw_nc_end
3028238405Sjkim	movl	12(%esi),%ecx
3029238405Sjkim	movl	%ecx,12(%ebx)
3030238405Sjkim.L046pw_tail_nc3:
3031238405Sjkim	decl	%ebp
3032238405Sjkim	jz	.L051pw_nc_end
3033238405Sjkim	movl	16(%esi),%ecx
3034238405Sjkim	movl	%ecx,16(%ebx)
3035238405Sjkim.L047pw_tail_nc4:
3036238405Sjkim	decl	%ebp
3037238405Sjkim	jz	.L051pw_nc_end
3038238405Sjkim	movl	20(%esi),%ecx
3039238405Sjkim	movl	%ecx,20(%ebx)
3040238405Sjkim.L048pw_tail_nc5:
3041238405Sjkim	decl	%ebp
3042238405Sjkim	jz	.L051pw_nc_end
3043238405Sjkim	movl	24(%esi),%ecx
3044238405Sjkim	movl	%ecx,24(%ebx)
3045238405Sjkim.L049pw_tail_nc6:
3046238405Sjkim.L051pw_nc_end:
3047238405Sjkim	movl	$0,%eax
3048238405Sjkim.L029pw_end:
304995967Speter	popl	%edi
305095967Speter	popl	%esi
305195967Speter	popl	%ebx
305295967Speter	popl	%ebp
305395967Speter	ret
3054238405Sjkim.size	bn_sub_part_words,.-.L_bn_sub_part_words_begin
3055290207Sjkim.comm	OPENSSL_ia32cap_P,16,4
3056299389Sjkim#endif
3057