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