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