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