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