1#if defined(__i386__)
2.file	"src/crypto/bn/asm/co-586.S"
3.text
4.globl	bn_mul_comba8
5.hidden	bn_mul_comba8
6.type	bn_mul_comba8,@function
7.align	16
8bn_mul_comba8:
9.L_bn_mul_comba8_begin:
10	pushl	%esi
11	movl	12(%esp),%esi
12	pushl	%edi
13	movl	20(%esp),%edi
14	pushl	%ebp
15	pushl	%ebx
16	xorl	%ebx,%ebx
17	movl	(%esi),%eax
18	xorl	%ecx,%ecx
19	movl	(%edi),%edx
20
21	xorl	%ebp,%ebp
22
23	mull	%edx
24	addl	%eax,%ebx
25	movl	20(%esp),%eax
26	adcl	%edx,%ecx
27	movl	(%edi),%edx
28	adcl	$0,%ebp
29	movl	%ebx,(%eax)
30	movl	4(%esi),%eax
31
32
33	xorl	%ebx,%ebx
34
35	mull	%edx
36	addl	%eax,%ecx
37	movl	(%esi),%eax
38	adcl	%edx,%ebp
39	movl	4(%edi),%edx
40	adcl	$0,%ebx
41
42	mull	%edx
43	addl	%eax,%ecx
44	movl	20(%esp),%eax
45	adcl	%edx,%ebp
46	movl	(%edi),%edx
47	adcl	$0,%ebx
48	movl	%ecx,4(%eax)
49	movl	8(%esi),%eax
50
51
52	xorl	%ecx,%ecx
53
54	mull	%edx
55	addl	%eax,%ebp
56	movl	4(%esi),%eax
57	adcl	%edx,%ebx
58	movl	4(%edi),%edx
59	adcl	$0,%ecx
60
61	mull	%edx
62	addl	%eax,%ebp
63	movl	(%esi),%eax
64	adcl	%edx,%ebx
65	movl	8(%edi),%edx
66	adcl	$0,%ecx
67
68	mull	%edx
69	addl	%eax,%ebp
70	movl	20(%esp),%eax
71	adcl	%edx,%ebx
72	movl	(%edi),%edx
73	adcl	$0,%ecx
74	movl	%ebp,8(%eax)
75	movl	12(%esi),%eax
76
77
78	xorl	%ebp,%ebp
79
80	mull	%edx
81	addl	%eax,%ebx
82	movl	8(%esi),%eax
83	adcl	%edx,%ecx
84	movl	4(%edi),%edx
85	adcl	$0,%ebp
86
87	mull	%edx
88	addl	%eax,%ebx
89	movl	4(%esi),%eax
90	adcl	%edx,%ecx
91	movl	8(%edi),%edx
92	adcl	$0,%ebp
93
94	mull	%edx
95	addl	%eax,%ebx
96	movl	(%esi),%eax
97	adcl	%edx,%ecx
98	movl	12(%edi),%edx
99	adcl	$0,%ebp
100
101	mull	%edx
102	addl	%eax,%ebx
103	movl	20(%esp),%eax
104	adcl	%edx,%ecx
105	movl	(%edi),%edx
106	adcl	$0,%ebp
107	movl	%ebx,12(%eax)
108	movl	16(%esi),%eax
109
110
111	xorl	%ebx,%ebx
112
113	mull	%edx
114	addl	%eax,%ecx
115	movl	12(%esi),%eax
116	adcl	%edx,%ebp
117	movl	4(%edi),%edx
118	adcl	$0,%ebx
119
120	mull	%edx
121	addl	%eax,%ecx
122	movl	8(%esi),%eax
123	adcl	%edx,%ebp
124	movl	8(%edi),%edx
125	adcl	$0,%ebx
126
127	mull	%edx
128	addl	%eax,%ecx
129	movl	4(%esi),%eax
130	adcl	%edx,%ebp
131	movl	12(%edi),%edx
132	adcl	$0,%ebx
133
134	mull	%edx
135	addl	%eax,%ecx
136	movl	(%esi),%eax
137	adcl	%edx,%ebp
138	movl	16(%edi),%edx
139	adcl	$0,%ebx
140
141	mull	%edx
142	addl	%eax,%ecx
143	movl	20(%esp),%eax
144	adcl	%edx,%ebp
145	movl	(%edi),%edx
146	adcl	$0,%ebx
147	movl	%ecx,16(%eax)
148	movl	20(%esi),%eax
149
150
151	xorl	%ecx,%ecx
152
153	mull	%edx
154	addl	%eax,%ebp
155	movl	16(%esi),%eax
156	adcl	%edx,%ebx
157	movl	4(%edi),%edx
158	adcl	$0,%ecx
159
160	mull	%edx
161	addl	%eax,%ebp
162	movl	12(%esi),%eax
163	adcl	%edx,%ebx
164	movl	8(%edi),%edx
165	adcl	$0,%ecx
166
167	mull	%edx
168	addl	%eax,%ebp
169	movl	8(%esi),%eax
170	adcl	%edx,%ebx
171	movl	12(%edi),%edx
172	adcl	$0,%ecx
173
174	mull	%edx
175	addl	%eax,%ebp
176	movl	4(%esi),%eax
177	adcl	%edx,%ebx
178	movl	16(%edi),%edx
179	adcl	$0,%ecx
180
181	mull	%edx
182	addl	%eax,%ebp
183	movl	(%esi),%eax
184	adcl	%edx,%ebx
185	movl	20(%edi),%edx
186	adcl	$0,%ecx
187
188	mull	%edx
189	addl	%eax,%ebp
190	movl	20(%esp),%eax
191	adcl	%edx,%ebx
192	movl	(%edi),%edx
193	adcl	$0,%ecx
194	movl	%ebp,20(%eax)
195	movl	24(%esi),%eax
196
197
198	xorl	%ebp,%ebp
199
200	mull	%edx
201	addl	%eax,%ebx
202	movl	20(%esi),%eax
203	adcl	%edx,%ecx
204	movl	4(%edi),%edx
205	adcl	$0,%ebp
206
207	mull	%edx
208	addl	%eax,%ebx
209	movl	16(%esi),%eax
210	adcl	%edx,%ecx
211	movl	8(%edi),%edx
212	adcl	$0,%ebp
213
214	mull	%edx
215	addl	%eax,%ebx
216	movl	12(%esi),%eax
217	adcl	%edx,%ecx
218	movl	12(%edi),%edx
219	adcl	$0,%ebp
220
221	mull	%edx
222	addl	%eax,%ebx
223	movl	8(%esi),%eax
224	adcl	%edx,%ecx
225	movl	16(%edi),%edx
226	adcl	$0,%ebp
227
228	mull	%edx
229	addl	%eax,%ebx
230	movl	4(%esi),%eax
231	adcl	%edx,%ecx
232	movl	20(%edi),%edx
233	adcl	$0,%ebp
234
235	mull	%edx
236	addl	%eax,%ebx
237	movl	(%esi),%eax
238	adcl	%edx,%ecx
239	movl	24(%edi),%edx
240	adcl	$0,%ebp
241
242	mull	%edx
243	addl	%eax,%ebx
244	movl	20(%esp),%eax
245	adcl	%edx,%ecx
246	movl	(%edi),%edx
247	adcl	$0,%ebp
248	movl	%ebx,24(%eax)
249	movl	28(%esi),%eax
250
251
252	xorl	%ebx,%ebx
253
254	mull	%edx
255	addl	%eax,%ecx
256	movl	24(%esi),%eax
257	adcl	%edx,%ebp
258	movl	4(%edi),%edx
259	adcl	$0,%ebx
260
261	mull	%edx
262	addl	%eax,%ecx
263	movl	20(%esi),%eax
264	adcl	%edx,%ebp
265	movl	8(%edi),%edx
266	adcl	$0,%ebx
267
268	mull	%edx
269	addl	%eax,%ecx
270	movl	16(%esi),%eax
271	adcl	%edx,%ebp
272	movl	12(%edi),%edx
273	adcl	$0,%ebx
274
275	mull	%edx
276	addl	%eax,%ecx
277	movl	12(%esi),%eax
278	adcl	%edx,%ebp
279	movl	16(%edi),%edx
280	adcl	$0,%ebx
281
282	mull	%edx
283	addl	%eax,%ecx
284	movl	8(%esi),%eax
285	adcl	%edx,%ebp
286	movl	20(%edi),%edx
287	adcl	$0,%ebx
288
289	mull	%edx
290	addl	%eax,%ecx
291	movl	4(%esi),%eax
292	adcl	%edx,%ebp
293	movl	24(%edi),%edx
294	adcl	$0,%ebx
295
296	mull	%edx
297	addl	%eax,%ecx
298	movl	(%esi),%eax
299	adcl	%edx,%ebp
300	movl	28(%edi),%edx
301	adcl	$0,%ebx
302
303	mull	%edx
304	addl	%eax,%ecx
305	movl	20(%esp),%eax
306	adcl	%edx,%ebp
307	movl	4(%edi),%edx
308	adcl	$0,%ebx
309	movl	%ecx,28(%eax)
310	movl	28(%esi),%eax
311
312
313	xorl	%ecx,%ecx
314
315	mull	%edx
316	addl	%eax,%ebp
317	movl	24(%esi),%eax
318	adcl	%edx,%ebx
319	movl	8(%edi),%edx
320	adcl	$0,%ecx
321
322	mull	%edx
323	addl	%eax,%ebp
324	movl	20(%esi),%eax
325	adcl	%edx,%ebx
326	movl	12(%edi),%edx
327	adcl	$0,%ecx
328
329	mull	%edx
330	addl	%eax,%ebp
331	movl	16(%esi),%eax
332	adcl	%edx,%ebx
333	movl	16(%edi),%edx
334	adcl	$0,%ecx
335
336	mull	%edx
337	addl	%eax,%ebp
338	movl	12(%esi),%eax
339	adcl	%edx,%ebx
340	movl	20(%edi),%edx
341	adcl	$0,%ecx
342
343	mull	%edx
344	addl	%eax,%ebp
345	movl	8(%esi),%eax
346	adcl	%edx,%ebx
347	movl	24(%edi),%edx
348	adcl	$0,%ecx
349
350	mull	%edx
351	addl	%eax,%ebp
352	movl	4(%esi),%eax
353	adcl	%edx,%ebx
354	movl	28(%edi),%edx
355	adcl	$0,%ecx
356
357	mull	%edx
358	addl	%eax,%ebp
359	movl	20(%esp),%eax
360	adcl	%edx,%ebx
361	movl	8(%edi),%edx
362	adcl	$0,%ecx
363	movl	%ebp,32(%eax)
364	movl	28(%esi),%eax
365
366
367	xorl	%ebp,%ebp
368
369	mull	%edx
370	addl	%eax,%ebx
371	movl	24(%esi),%eax
372	adcl	%edx,%ecx
373	movl	12(%edi),%edx
374	adcl	$0,%ebp
375
376	mull	%edx
377	addl	%eax,%ebx
378	movl	20(%esi),%eax
379	adcl	%edx,%ecx
380	movl	16(%edi),%edx
381	adcl	$0,%ebp
382
383	mull	%edx
384	addl	%eax,%ebx
385	movl	16(%esi),%eax
386	adcl	%edx,%ecx
387	movl	20(%edi),%edx
388	adcl	$0,%ebp
389
390	mull	%edx
391	addl	%eax,%ebx
392	movl	12(%esi),%eax
393	adcl	%edx,%ecx
394	movl	24(%edi),%edx
395	adcl	$0,%ebp
396
397	mull	%edx
398	addl	%eax,%ebx
399	movl	8(%esi),%eax
400	adcl	%edx,%ecx
401	movl	28(%edi),%edx
402	adcl	$0,%ebp
403
404	mull	%edx
405	addl	%eax,%ebx
406	movl	20(%esp),%eax
407	adcl	%edx,%ecx
408	movl	12(%edi),%edx
409	adcl	$0,%ebp
410	movl	%ebx,36(%eax)
411	movl	28(%esi),%eax
412
413
414	xorl	%ebx,%ebx
415
416	mull	%edx
417	addl	%eax,%ecx
418	movl	24(%esi),%eax
419	adcl	%edx,%ebp
420	movl	16(%edi),%edx
421	adcl	$0,%ebx
422
423	mull	%edx
424	addl	%eax,%ecx
425	movl	20(%esi),%eax
426	adcl	%edx,%ebp
427	movl	20(%edi),%edx
428	adcl	$0,%ebx
429
430	mull	%edx
431	addl	%eax,%ecx
432	movl	16(%esi),%eax
433	adcl	%edx,%ebp
434	movl	24(%edi),%edx
435	adcl	$0,%ebx
436
437	mull	%edx
438	addl	%eax,%ecx
439	movl	12(%esi),%eax
440	adcl	%edx,%ebp
441	movl	28(%edi),%edx
442	adcl	$0,%ebx
443
444	mull	%edx
445	addl	%eax,%ecx
446	movl	20(%esp),%eax
447	adcl	%edx,%ebp
448	movl	16(%edi),%edx
449	adcl	$0,%ebx
450	movl	%ecx,40(%eax)
451	movl	28(%esi),%eax
452
453
454	xorl	%ecx,%ecx
455
456	mull	%edx
457	addl	%eax,%ebp
458	movl	24(%esi),%eax
459	adcl	%edx,%ebx
460	movl	20(%edi),%edx
461	adcl	$0,%ecx
462
463	mull	%edx
464	addl	%eax,%ebp
465	movl	20(%esi),%eax
466	adcl	%edx,%ebx
467	movl	24(%edi),%edx
468	adcl	$0,%ecx
469
470	mull	%edx
471	addl	%eax,%ebp
472	movl	16(%esi),%eax
473	adcl	%edx,%ebx
474	movl	28(%edi),%edx
475	adcl	$0,%ecx
476
477	mull	%edx
478	addl	%eax,%ebp
479	movl	20(%esp),%eax
480	adcl	%edx,%ebx
481	movl	20(%edi),%edx
482	adcl	$0,%ecx
483	movl	%ebp,44(%eax)
484	movl	28(%esi),%eax
485
486
487	xorl	%ebp,%ebp
488
489	mull	%edx
490	addl	%eax,%ebx
491	movl	24(%esi),%eax
492	adcl	%edx,%ecx
493	movl	24(%edi),%edx
494	adcl	$0,%ebp
495
496	mull	%edx
497	addl	%eax,%ebx
498	movl	20(%esi),%eax
499	adcl	%edx,%ecx
500	movl	28(%edi),%edx
501	adcl	$0,%ebp
502
503	mull	%edx
504	addl	%eax,%ebx
505	movl	20(%esp),%eax
506	adcl	%edx,%ecx
507	movl	24(%edi),%edx
508	adcl	$0,%ebp
509	movl	%ebx,48(%eax)
510	movl	28(%esi),%eax
511
512
513	xorl	%ebx,%ebx
514
515	mull	%edx
516	addl	%eax,%ecx
517	movl	24(%esi),%eax
518	adcl	%edx,%ebp
519	movl	28(%edi),%edx
520	adcl	$0,%ebx
521
522	mull	%edx
523	addl	%eax,%ecx
524	movl	20(%esp),%eax
525	adcl	%edx,%ebp
526	movl	28(%edi),%edx
527	adcl	$0,%ebx
528	movl	%ecx,52(%eax)
529	movl	28(%esi),%eax
530
531
532	xorl	%ecx,%ecx
533
534	mull	%edx
535	addl	%eax,%ebp
536	movl	20(%esp),%eax
537	adcl	%edx,%ebx
538	adcl	$0,%ecx
539	movl	%ebp,56(%eax)
540
541
542	movl	%ebx,60(%eax)
543	popl	%ebx
544	popl	%ebp
545	popl	%edi
546	popl	%esi
547	ret
548.size	bn_mul_comba8,.-.L_bn_mul_comba8_begin
549.globl	bn_mul_comba4
550.hidden	bn_mul_comba4
551.type	bn_mul_comba4,@function
552.align	16
553bn_mul_comba4:
554.L_bn_mul_comba4_begin:
555	pushl	%esi
556	movl	12(%esp),%esi
557	pushl	%edi
558	movl	20(%esp),%edi
559	pushl	%ebp
560	pushl	%ebx
561	xorl	%ebx,%ebx
562	movl	(%esi),%eax
563	xorl	%ecx,%ecx
564	movl	(%edi),%edx
565
566	xorl	%ebp,%ebp
567
568	mull	%edx
569	addl	%eax,%ebx
570	movl	20(%esp),%eax
571	adcl	%edx,%ecx
572	movl	(%edi),%edx
573	adcl	$0,%ebp
574	movl	%ebx,(%eax)
575	movl	4(%esi),%eax
576
577
578	xorl	%ebx,%ebx
579
580	mull	%edx
581	addl	%eax,%ecx
582	movl	(%esi),%eax
583	adcl	%edx,%ebp
584	movl	4(%edi),%edx
585	adcl	$0,%ebx
586
587	mull	%edx
588	addl	%eax,%ecx
589	movl	20(%esp),%eax
590	adcl	%edx,%ebp
591	movl	(%edi),%edx
592	adcl	$0,%ebx
593	movl	%ecx,4(%eax)
594	movl	8(%esi),%eax
595
596
597	xorl	%ecx,%ecx
598
599	mull	%edx
600	addl	%eax,%ebp
601	movl	4(%esi),%eax
602	adcl	%edx,%ebx
603	movl	4(%edi),%edx
604	adcl	$0,%ecx
605
606	mull	%edx
607	addl	%eax,%ebp
608	movl	(%esi),%eax
609	adcl	%edx,%ebx
610	movl	8(%edi),%edx
611	adcl	$0,%ecx
612
613	mull	%edx
614	addl	%eax,%ebp
615	movl	20(%esp),%eax
616	adcl	%edx,%ebx
617	movl	(%edi),%edx
618	adcl	$0,%ecx
619	movl	%ebp,8(%eax)
620	movl	12(%esi),%eax
621
622
623	xorl	%ebp,%ebp
624
625	mull	%edx
626	addl	%eax,%ebx
627	movl	8(%esi),%eax
628	adcl	%edx,%ecx
629	movl	4(%edi),%edx
630	adcl	$0,%ebp
631
632	mull	%edx
633	addl	%eax,%ebx
634	movl	4(%esi),%eax
635	adcl	%edx,%ecx
636	movl	8(%edi),%edx
637	adcl	$0,%ebp
638
639	mull	%edx
640	addl	%eax,%ebx
641	movl	(%esi),%eax
642	adcl	%edx,%ecx
643	movl	12(%edi),%edx
644	adcl	$0,%ebp
645
646	mull	%edx
647	addl	%eax,%ebx
648	movl	20(%esp),%eax
649	adcl	%edx,%ecx
650	movl	4(%edi),%edx
651	adcl	$0,%ebp
652	movl	%ebx,12(%eax)
653	movl	12(%esi),%eax
654
655
656	xorl	%ebx,%ebx
657
658	mull	%edx
659	addl	%eax,%ecx
660	movl	8(%esi),%eax
661	adcl	%edx,%ebp
662	movl	8(%edi),%edx
663	adcl	$0,%ebx
664
665	mull	%edx
666	addl	%eax,%ecx
667	movl	4(%esi),%eax
668	adcl	%edx,%ebp
669	movl	12(%edi),%edx
670	adcl	$0,%ebx
671
672	mull	%edx
673	addl	%eax,%ecx
674	movl	20(%esp),%eax
675	adcl	%edx,%ebp
676	movl	8(%edi),%edx
677	adcl	$0,%ebx
678	movl	%ecx,16(%eax)
679	movl	12(%esi),%eax
680
681
682	xorl	%ecx,%ecx
683
684	mull	%edx
685	addl	%eax,%ebp
686	movl	8(%esi),%eax
687	adcl	%edx,%ebx
688	movl	12(%edi),%edx
689	adcl	$0,%ecx
690
691	mull	%edx
692	addl	%eax,%ebp
693	movl	20(%esp),%eax
694	adcl	%edx,%ebx
695	movl	12(%edi),%edx
696	adcl	$0,%ecx
697	movl	%ebp,20(%eax)
698	movl	12(%esi),%eax
699
700
701	xorl	%ebp,%ebp
702
703	mull	%edx
704	addl	%eax,%ebx
705	movl	20(%esp),%eax
706	adcl	%edx,%ecx
707	adcl	$0,%ebp
708	movl	%ebx,24(%eax)
709
710
711	movl	%ecx,28(%eax)
712	popl	%ebx
713	popl	%ebp
714	popl	%edi
715	popl	%esi
716	ret
717.size	bn_mul_comba4,.-.L_bn_mul_comba4_begin
718.globl	bn_sqr_comba8
719.hidden	bn_sqr_comba8
720.type	bn_sqr_comba8,@function
721.align	16
722bn_sqr_comba8:
723.L_bn_sqr_comba8_begin:
724	pushl	%esi
725	pushl	%edi
726	pushl	%ebp
727	pushl	%ebx
728	movl	20(%esp),%edi
729	movl	24(%esp),%esi
730	xorl	%ebx,%ebx
731	xorl	%ecx,%ecx
732	movl	(%esi),%eax
733
734	xorl	%ebp,%ebp
735
736	mull	%eax
737	addl	%eax,%ebx
738	adcl	%edx,%ecx
739	movl	(%esi),%edx
740	adcl	$0,%ebp
741	movl	%ebx,(%edi)
742	movl	4(%esi),%eax
743
744
745	xorl	%ebx,%ebx
746
747	mull	%edx
748	addl	%eax,%eax
749	adcl	%edx,%edx
750	adcl	$0,%ebx
751	addl	%eax,%ecx
752	adcl	%edx,%ebp
753	movl	8(%esi),%eax
754	adcl	$0,%ebx
755	movl	%ecx,4(%edi)
756	movl	(%esi),%edx
757
758
759	xorl	%ecx,%ecx
760
761	mull	%edx
762	addl	%eax,%eax
763	adcl	%edx,%edx
764	adcl	$0,%ecx
765	addl	%eax,%ebp
766	adcl	%edx,%ebx
767	movl	4(%esi),%eax
768	adcl	$0,%ecx
769
770	mull	%eax
771	addl	%eax,%ebp
772	adcl	%edx,%ebx
773	movl	(%esi),%edx
774	adcl	$0,%ecx
775	movl	%ebp,8(%edi)
776	movl	12(%esi),%eax
777
778
779	xorl	%ebp,%ebp
780
781	mull	%edx
782	addl	%eax,%eax
783	adcl	%edx,%edx
784	adcl	$0,%ebp
785	addl	%eax,%ebx
786	adcl	%edx,%ecx
787	movl	8(%esi),%eax
788	adcl	$0,%ebp
789	movl	4(%esi),%edx
790
791	mull	%edx
792	addl	%eax,%eax
793	adcl	%edx,%edx
794	adcl	$0,%ebp
795	addl	%eax,%ebx
796	adcl	%edx,%ecx
797	movl	16(%esi),%eax
798	adcl	$0,%ebp
799	movl	%ebx,12(%edi)
800	movl	(%esi),%edx
801
802
803	xorl	%ebx,%ebx
804
805	mull	%edx
806	addl	%eax,%eax
807	adcl	%edx,%edx
808	adcl	$0,%ebx
809	addl	%eax,%ecx
810	adcl	%edx,%ebp
811	movl	12(%esi),%eax
812	adcl	$0,%ebx
813	movl	4(%esi),%edx
814
815	mull	%edx
816	addl	%eax,%eax
817	adcl	%edx,%edx
818	adcl	$0,%ebx
819	addl	%eax,%ecx
820	adcl	%edx,%ebp
821	movl	8(%esi),%eax
822	adcl	$0,%ebx
823
824	mull	%eax
825	addl	%eax,%ecx
826	adcl	%edx,%ebp
827	movl	(%esi),%edx
828	adcl	$0,%ebx
829	movl	%ecx,16(%edi)
830	movl	20(%esi),%eax
831
832
833	xorl	%ecx,%ecx
834
835	mull	%edx
836	addl	%eax,%eax
837	adcl	%edx,%edx
838	adcl	$0,%ecx
839	addl	%eax,%ebp
840	adcl	%edx,%ebx
841	movl	16(%esi),%eax
842	adcl	$0,%ecx
843	movl	4(%esi),%edx
844
845	mull	%edx
846	addl	%eax,%eax
847	adcl	%edx,%edx
848	adcl	$0,%ecx
849	addl	%eax,%ebp
850	adcl	%edx,%ebx
851	movl	12(%esi),%eax
852	adcl	$0,%ecx
853	movl	8(%esi),%edx
854
855	mull	%edx
856	addl	%eax,%eax
857	adcl	%edx,%edx
858	adcl	$0,%ecx
859	addl	%eax,%ebp
860	adcl	%edx,%ebx
861	movl	24(%esi),%eax
862	adcl	$0,%ecx
863	movl	%ebp,20(%edi)
864	movl	(%esi),%edx
865
866
867	xorl	%ebp,%ebp
868
869	mull	%edx
870	addl	%eax,%eax
871	adcl	%edx,%edx
872	adcl	$0,%ebp
873	addl	%eax,%ebx
874	adcl	%edx,%ecx
875	movl	20(%esi),%eax
876	adcl	$0,%ebp
877	movl	4(%esi),%edx
878
879	mull	%edx
880	addl	%eax,%eax
881	adcl	%edx,%edx
882	adcl	$0,%ebp
883	addl	%eax,%ebx
884	adcl	%edx,%ecx
885	movl	16(%esi),%eax
886	adcl	$0,%ebp
887	movl	8(%esi),%edx
888
889	mull	%edx
890	addl	%eax,%eax
891	adcl	%edx,%edx
892	adcl	$0,%ebp
893	addl	%eax,%ebx
894	adcl	%edx,%ecx
895	movl	12(%esi),%eax
896	adcl	$0,%ebp
897
898	mull	%eax
899	addl	%eax,%ebx
900	adcl	%edx,%ecx
901	movl	(%esi),%edx
902	adcl	$0,%ebp
903	movl	%ebx,24(%edi)
904	movl	28(%esi),%eax
905
906
907	xorl	%ebx,%ebx
908
909	mull	%edx
910	addl	%eax,%eax
911	adcl	%edx,%edx
912	adcl	$0,%ebx
913	addl	%eax,%ecx
914	adcl	%edx,%ebp
915	movl	24(%esi),%eax
916	adcl	$0,%ebx
917	movl	4(%esi),%edx
918
919	mull	%edx
920	addl	%eax,%eax
921	adcl	%edx,%edx
922	adcl	$0,%ebx
923	addl	%eax,%ecx
924	adcl	%edx,%ebp
925	movl	20(%esi),%eax
926	adcl	$0,%ebx
927	movl	8(%esi),%edx
928
929	mull	%edx
930	addl	%eax,%eax
931	adcl	%edx,%edx
932	adcl	$0,%ebx
933	addl	%eax,%ecx
934	adcl	%edx,%ebp
935	movl	16(%esi),%eax
936	adcl	$0,%ebx
937	movl	12(%esi),%edx
938
939	mull	%edx
940	addl	%eax,%eax
941	adcl	%edx,%edx
942	adcl	$0,%ebx
943	addl	%eax,%ecx
944	adcl	%edx,%ebp
945	movl	28(%esi),%eax
946	adcl	$0,%ebx
947	movl	%ecx,28(%edi)
948	movl	4(%esi),%edx
949
950
951	xorl	%ecx,%ecx
952
953	mull	%edx
954	addl	%eax,%eax
955	adcl	%edx,%edx
956	adcl	$0,%ecx
957	addl	%eax,%ebp
958	adcl	%edx,%ebx
959	movl	24(%esi),%eax
960	adcl	$0,%ecx
961	movl	8(%esi),%edx
962
963	mull	%edx
964	addl	%eax,%eax
965	adcl	%edx,%edx
966	adcl	$0,%ecx
967	addl	%eax,%ebp
968	adcl	%edx,%ebx
969	movl	20(%esi),%eax
970	adcl	$0,%ecx
971	movl	12(%esi),%edx
972
973	mull	%edx
974	addl	%eax,%eax
975	adcl	%edx,%edx
976	adcl	$0,%ecx
977	addl	%eax,%ebp
978	adcl	%edx,%ebx
979	movl	16(%esi),%eax
980	adcl	$0,%ecx
981
982	mull	%eax
983	addl	%eax,%ebp
984	adcl	%edx,%ebx
985	movl	8(%esi),%edx
986	adcl	$0,%ecx
987	movl	%ebp,32(%edi)
988	movl	28(%esi),%eax
989
990
991	xorl	%ebp,%ebp
992
993	mull	%edx
994	addl	%eax,%eax
995	adcl	%edx,%edx
996	adcl	$0,%ebp
997	addl	%eax,%ebx
998	adcl	%edx,%ecx
999	movl	24(%esi),%eax
1000	adcl	$0,%ebp
1001	movl	12(%esi),%edx
1002
1003	mull	%edx
1004	addl	%eax,%eax
1005	adcl	%edx,%edx
1006	adcl	$0,%ebp
1007	addl	%eax,%ebx
1008	adcl	%edx,%ecx
1009	movl	20(%esi),%eax
1010	adcl	$0,%ebp
1011	movl	16(%esi),%edx
1012
1013	mull	%edx
1014	addl	%eax,%eax
1015	adcl	%edx,%edx
1016	adcl	$0,%ebp
1017	addl	%eax,%ebx
1018	adcl	%edx,%ecx
1019	movl	28(%esi),%eax
1020	adcl	$0,%ebp
1021	movl	%ebx,36(%edi)
1022	movl	12(%esi),%edx
1023
1024
1025	xorl	%ebx,%ebx
1026
1027	mull	%edx
1028	addl	%eax,%eax
1029	adcl	%edx,%edx
1030	adcl	$0,%ebx
1031	addl	%eax,%ecx
1032	adcl	%edx,%ebp
1033	movl	24(%esi),%eax
1034	adcl	$0,%ebx
1035	movl	16(%esi),%edx
1036
1037	mull	%edx
1038	addl	%eax,%eax
1039	adcl	%edx,%edx
1040	adcl	$0,%ebx
1041	addl	%eax,%ecx
1042	adcl	%edx,%ebp
1043	movl	20(%esi),%eax
1044	adcl	$0,%ebx
1045
1046	mull	%eax
1047	addl	%eax,%ecx
1048	adcl	%edx,%ebp
1049	movl	16(%esi),%edx
1050	adcl	$0,%ebx
1051	movl	%ecx,40(%edi)
1052	movl	28(%esi),%eax
1053
1054
1055	xorl	%ecx,%ecx
1056
1057	mull	%edx
1058	addl	%eax,%eax
1059	adcl	%edx,%edx
1060	adcl	$0,%ecx
1061	addl	%eax,%ebp
1062	adcl	%edx,%ebx
1063	movl	24(%esi),%eax
1064	adcl	$0,%ecx
1065	movl	20(%esi),%edx
1066
1067	mull	%edx
1068	addl	%eax,%eax
1069	adcl	%edx,%edx
1070	adcl	$0,%ecx
1071	addl	%eax,%ebp
1072	adcl	%edx,%ebx
1073	movl	28(%esi),%eax
1074	adcl	$0,%ecx
1075	movl	%ebp,44(%edi)
1076	movl	20(%esi),%edx
1077
1078
1079	xorl	%ebp,%ebp
1080
1081	mull	%edx
1082	addl	%eax,%eax
1083	adcl	%edx,%edx
1084	adcl	$0,%ebp
1085	addl	%eax,%ebx
1086	adcl	%edx,%ecx
1087	movl	24(%esi),%eax
1088	adcl	$0,%ebp
1089
1090	mull	%eax
1091	addl	%eax,%ebx
1092	adcl	%edx,%ecx
1093	movl	24(%esi),%edx
1094	adcl	$0,%ebp
1095	movl	%ebx,48(%edi)
1096	movl	28(%esi),%eax
1097
1098
1099	xorl	%ebx,%ebx
1100
1101	mull	%edx
1102	addl	%eax,%eax
1103	adcl	%edx,%edx
1104	adcl	$0,%ebx
1105	addl	%eax,%ecx
1106	adcl	%edx,%ebp
1107	movl	28(%esi),%eax
1108	adcl	$0,%ebx
1109	movl	%ecx,52(%edi)
1110
1111
1112	xorl	%ecx,%ecx
1113
1114	mull	%eax
1115	addl	%eax,%ebp
1116	adcl	%edx,%ebx
1117	adcl	$0,%ecx
1118	movl	%ebp,56(%edi)
1119
1120	movl	%ebx,60(%edi)
1121	popl	%ebx
1122	popl	%ebp
1123	popl	%edi
1124	popl	%esi
1125	ret
1126.size	bn_sqr_comba8,.-.L_bn_sqr_comba8_begin
1127.globl	bn_sqr_comba4
1128.hidden	bn_sqr_comba4
1129.type	bn_sqr_comba4,@function
1130.align	16
1131bn_sqr_comba4:
1132.L_bn_sqr_comba4_begin:
1133	pushl	%esi
1134	pushl	%edi
1135	pushl	%ebp
1136	pushl	%ebx
1137	movl	20(%esp),%edi
1138	movl	24(%esp),%esi
1139	xorl	%ebx,%ebx
1140	xorl	%ecx,%ecx
1141	movl	(%esi),%eax
1142
1143	xorl	%ebp,%ebp
1144
1145	mull	%eax
1146	addl	%eax,%ebx
1147	adcl	%edx,%ecx
1148	movl	(%esi),%edx
1149	adcl	$0,%ebp
1150	movl	%ebx,(%edi)
1151	movl	4(%esi),%eax
1152
1153
1154	xorl	%ebx,%ebx
1155
1156	mull	%edx
1157	addl	%eax,%eax
1158	adcl	%edx,%edx
1159	adcl	$0,%ebx
1160	addl	%eax,%ecx
1161	adcl	%edx,%ebp
1162	movl	8(%esi),%eax
1163	adcl	$0,%ebx
1164	movl	%ecx,4(%edi)
1165	movl	(%esi),%edx
1166
1167
1168	xorl	%ecx,%ecx
1169
1170	mull	%edx
1171	addl	%eax,%eax
1172	adcl	%edx,%edx
1173	adcl	$0,%ecx
1174	addl	%eax,%ebp
1175	adcl	%edx,%ebx
1176	movl	4(%esi),%eax
1177	adcl	$0,%ecx
1178
1179	mull	%eax
1180	addl	%eax,%ebp
1181	adcl	%edx,%ebx
1182	movl	(%esi),%edx
1183	adcl	$0,%ecx
1184	movl	%ebp,8(%edi)
1185	movl	12(%esi),%eax
1186
1187
1188	xorl	%ebp,%ebp
1189
1190	mull	%edx
1191	addl	%eax,%eax
1192	adcl	%edx,%edx
1193	adcl	$0,%ebp
1194	addl	%eax,%ebx
1195	adcl	%edx,%ecx
1196	movl	8(%esi),%eax
1197	adcl	$0,%ebp
1198	movl	4(%esi),%edx
1199
1200	mull	%edx
1201	addl	%eax,%eax
1202	adcl	%edx,%edx
1203	adcl	$0,%ebp
1204	addl	%eax,%ebx
1205	adcl	%edx,%ecx
1206	movl	12(%esi),%eax
1207	adcl	$0,%ebp
1208	movl	%ebx,12(%edi)
1209	movl	4(%esi),%edx
1210
1211
1212	xorl	%ebx,%ebx
1213
1214	mull	%edx
1215	addl	%eax,%eax
1216	adcl	%edx,%edx
1217	adcl	$0,%ebx
1218	addl	%eax,%ecx
1219	adcl	%edx,%ebp
1220	movl	8(%esi),%eax
1221	adcl	$0,%ebx
1222
1223	mull	%eax
1224	addl	%eax,%ecx
1225	adcl	%edx,%ebp
1226	movl	8(%esi),%edx
1227	adcl	$0,%ebx
1228	movl	%ecx,16(%edi)
1229	movl	12(%esi),%eax
1230
1231
1232	xorl	%ecx,%ecx
1233
1234	mull	%edx
1235	addl	%eax,%eax
1236	adcl	%edx,%edx
1237	adcl	$0,%ecx
1238	addl	%eax,%ebp
1239	adcl	%edx,%ebx
1240	movl	12(%esi),%eax
1241	adcl	$0,%ecx
1242	movl	%ebp,20(%edi)
1243
1244
1245	xorl	%ebp,%ebp
1246
1247	mull	%eax
1248	addl	%eax,%ebx
1249	adcl	%edx,%ecx
1250	adcl	$0,%ebp
1251	movl	%ebx,24(%edi)
1252
1253	movl	%ecx,28(%edi)
1254	popl	%ebx
1255	popl	%ebp
1256	popl	%edi
1257	popl	%esi
1258	ret
1259.size	bn_sqr_comba4,.-.L_bn_sqr_comba4_begin
1260#endif
1261