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