• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# This file is generated from a similarly-named Perl script in the BoringSSL
2# source tree. Do not edit by hand.
3
4#if defined(__i386__)
5#if defined(BORINGSSL_PREFIX)
6#include <boringssl_prefix_symbols_asm.h>
7#endif
8.text
9.globl	_bn_mul_comba8
10.private_extern	_bn_mul_comba8
11.align	4
12_bn_mul_comba8:
13L_bn_mul_comba8_begin:
14	pushl	%esi
15	movl	12(%esp),%esi
16	pushl	%edi
17	movl	20(%esp),%edi
18	pushl	%ebp
19	pushl	%ebx
20	xorl	%ebx,%ebx
21	movl	(%esi),%eax
22	xorl	%ecx,%ecx
23	movl	(%edi),%edx
24	# ################## Calculate word 0
25	xorl	%ebp,%ebp
26	# mul a[0]*b[0]
27	mull	%edx
28	addl	%eax,%ebx
29	movl	20(%esp),%eax
30	adcl	%edx,%ecx
31	movl	(%edi),%edx
32	adcl	$0,%ebp
33	movl	%ebx,(%eax)
34	movl	4(%esi),%eax
35	# saved r[0]
36	# ################## Calculate word 1
37	xorl	%ebx,%ebx
38	# mul a[1]*b[0]
39	mull	%edx
40	addl	%eax,%ecx
41	movl	(%esi),%eax
42	adcl	%edx,%ebp
43	movl	4(%edi),%edx
44	adcl	$0,%ebx
45	# mul a[0]*b[1]
46	mull	%edx
47	addl	%eax,%ecx
48	movl	20(%esp),%eax
49	adcl	%edx,%ebp
50	movl	(%edi),%edx
51	adcl	$0,%ebx
52	movl	%ecx,4(%eax)
53	movl	8(%esi),%eax
54	# saved r[1]
55	# ################## Calculate word 2
56	xorl	%ecx,%ecx
57	# mul a[2]*b[0]
58	mull	%edx
59	addl	%eax,%ebp
60	movl	4(%esi),%eax
61	adcl	%edx,%ebx
62	movl	4(%edi),%edx
63	adcl	$0,%ecx
64	# mul a[1]*b[1]
65	mull	%edx
66	addl	%eax,%ebp
67	movl	(%esi),%eax
68	adcl	%edx,%ebx
69	movl	8(%edi),%edx
70	adcl	$0,%ecx
71	# mul a[0]*b[2]
72	mull	%edx
73	addl	%eax,%ebp
74	movl	20(%esp),%eax
75	adcl	%edx,%ebx
76	movl	(%edi),%edx
77	adcl	$0,%ecx
78	movl	%ebp,8(%eax)
79	movl	12(%esi),%eax
80	# saved r[2]
81	# ################## Calculate word 3
82	xorl	%ebp,%ebp
83	# mul a[3]*b[0]
84	mull	%edx
85	addl	%eax,%ebx
86	movl	8(%esi),%eax
87	adcl	%edx,%ecx
88	movl	4(%edi),%edx
89	adcl	$0,%ebp
90	# mul a[2]*b[1]
91	mull	%edx
92	addl	%eax,%ebx
93	movl	4(%esi),%eax
94	adcl	%edx,%ecx
95	movl	8(%edi),%edx
96	adcl	$0,%ebp
97	# mul a[1]*b[2]
98	mull	%edx
99	addl	%eax,%ebx
100	movl	(%esi),%eax
101	adcl	%edx,%ecx
102	movl	12(%edi),%edx
103	adcl	$0,%ebp
104	# mul a[0]*b[3]
105	mull	%edx
106	addl	%eax,%ebx
107	movl	20(%esp),%eax
108	adcl	%edx,%ecx
109	movl	(%edi),%edx
110	adcl	$0,%ebp
111	movl	%ebx,12(%eax)
112	movl	16(%esi),%eax
113	# saved r[3]
114	# ################## Calculate word 4
115	xorl	%ebx,%ebx
116	# mul a[4]*b[0]
117	mull	%edx
118	addl	%eax,%ecx
119	movl	12(%esi),%eax
120	adcl	%edx,%ebp
121	movl	4(%edi),%edx
122	adcl	$0,%ebx
123	# mul a[3]*b[1]
124	mull	%edx
125	addl	%eax,%ecx
126	movl	8(%esi),%eax
127	adcl	%edx,%ebp
128	movl	8(%edi),%edx
129	adcl	$0,%ebx
130	# mul a[2]*b[2]
131	mull	%edx
132	addl	%eax,%ecx
133	movl	4(%esi),%eax
134	adcl	%edx,%ebp
135	movl	12(%edi),%edx
136	adcl	$0,%ebx
137	# mul a[1]*b[3]
138	mull	%edx
139	addl	%eax,%ecx
140	movl	(%esi),%eax
141	adcl	%edx,%ebp
142	movl	16(%edi),%edx
143	adcl	$0,%ebx
144	# mul a[0]*b[4]
145	mull	%edx
146	addl	%eax,%ecx
147	movl	20(%esp),%eax
148	adcl	%edx,%ebp
149	movl	(%edi),%edx
150	adcl	$0,%ebx
151	movl	%ecx,16(%eax)
152	movl	20(%esi),%eax
153	# saved r[4]
154	# ################## Calculate word 5
155	xorl	%ecx,%ecx
156	# mul a[5]*b[0]
157	mull	%edx
158	addl	%eax,%ebp
159	movl	16(%esi),%eax
160	adcl	%edx,%ebx
161	movl	4(%edi),%edx
162	adcl	$0,%ecx
163	# mul a[4]*b[1]
164	mull	%edx
165	addl	%eax,%ebp
166	movl	12(%esi),%eax
167	adcl	%edx,%ebx
168	movl	8(%edi),%edx
169	adcl	$0,%ecx
170	# mul a[3]*b[2]
171	mull	%edx
172	addl	%eax,%ebp
173	movl	8(%esi),%eax
174	adcl	%edx,%ebx
175	movl	12(%edi),%edx
176	adcl	$0,%ecx
177	# mul a[2]*b[3]
178	mull	%edx
179	addl	%eax,%ebp
180	movl	4(%esi),%eax
181	adcl	%edx,%ebx
182	movl	16(%edi),%edx
183	adcl	$0,%ecx
184	# mul a[1]*b[4]
185	mull	%edx
186	addl	%eax,%ebp
187	movl	(%esi),%eax
188	adcl	%edx,%ebx
189	movl	20(%edi),%edx
190	adcl	$0,%ecx
191	# mul a[0]*b[5]
192	mull	%edx
193	addl	%eax,%ebp
194	movl	20(%esp),%eax
195	adcl	%edx,%ebx
196	movl	(%edi),%edx
197	adcl	$0,%ecx
198	movl	%ebp,20(%eax)
199	movl	24(%esi),%eax
200	# saved r[5]
201	# ################## Calculate word 6
202	xorl	%ebp,%ebp
203	# mul a[6]*b[0]
204	mull	%edx
205	addl	%eax,%ebx
206	movl	20(%esi),%eax
207	adcl	%edx,%ecx
208	movl	4(%edi),%edx
209	adcl	$0,%ebp
210	# mul a[5]*b[1]
211	mull	%edx
212	addl	%eax,%ebx
213	movl	16(%esi),%eax
214	adcl	%edx,%ecx
215	movl	8(%edi),%edx
216	adcl	$0,%ebp
217	# mul a[4]*b[2]
218	mull	%edx
219	addl	%eax,%ebx
220	movl	12(%esi),%eax
221	adcl	%edx,%ecx
222	movl	12(%edi),%edx
223	adcl	$0,%ebp
224	# mul a[3]*b[3]
225	mull	%edx
226	addl	%eax,%ebx
227	movl	8(%esi),%eax
228	adcl	%edx,%ecx
229	movl	16(%edi),%edx
230	adcl	$0,%ebp
231	# mul a[2]*b[4]
232	mull	%edx
233	addl	%eax,%ebx
234	movl	4(%esi),%eax
235	adcl	%edx,%ecx
236	movl	20(%edi),%edx
237	adcl	$0,%ebp
238	# mul a[1]*b[5]
239	mull	%edx
240	addl	%eax,%ebx
241	movl	(%esi),%eax
242	adcl	%edx,%ecx
243	movl	24(%edi),%edx
244	adcl	$0,%ebp
245	# mul a[0]*b[6]
246	mull	%edx
247	addl	%eax,%ebx
248	movl	20(%esp),%eax
249	adcl	%edx,%ecx
250	movl	(%edi),%edx
251	adcl	$0,%ebp
252	movl	%ebx,24(%eax)
253	movl	28(%esi),%eax
254	# saved r[6]
255	# ################## Calculate word 7
256	xorl	%ebx,%ebx
257	# mul a[7]*b[0]
258	mull	%edx
259	addl	%eax,%ecx
260	movl	24(%esi),%eax
261	adcl	%edx,%ebp
262	movl	4(%edi),%edx
263	adcl	$0,%ebx
264	# mul a[6]*b[1]
265	mull	%edx
266	addl	%eax,%ecx
267	movl	20(%esi),%eax
268	adcl	%edx,%ebp
269	movl	8(%edi),%edx
270	adcl	$0,%ebx
271	# mul a[5]*b[2]
272	mull	%edx
273	addl	%eax,%ecx
274	movl	16(%esi),%eax
275	adcl	%edx,%ebp
276	movl	12(%edi),%edx
277	adcl	$0,%ebx
278	# mul a[4]*b[3]
279	mull	%edx
280	addl	%eax,%ecx
281	movl	12(%esi),%eax
282	adcl	%edx,%ebp
283	movl	16(%edi),%edx
284	adcl	$0,%ebx
285	# mul a[3]*b[4]
286	mull	%edx
287	addl	%eax,%ecx
288	movl	8(%esi),%eax
289	adcl	%edx,%ebp
290	movl	20(%edi),%edx
291	adcl	$0,%ebx
292	# mul a[2]*b[5]
293	mull	%edx
294	addl	%eax,%ecx
295	movl	4(%esi),%eax
296	adcl	%edx,%ebp
297	movl	24(%edi),%edx
298	adcl	$0,%ebx
299	# mul a[1]*b[6]
300	mull	%edx
301	addl	%eax,%ecx
302	movl	(%esi),%eax
303	adcl	%edx,%ebp
304	movl	28(%edi),%edx
305	adcl	$0,%ebx
306	# mul a[0]*b[7]
307	mull	%edx
308	addl	%eax,%ecx
309	movl	20(%esp),%eax
310	adcl	%edx,%ebp
311	movl	4(%edi),%edx
312	adcl	$0,%ebx
313	movl	%ecx,28(%eax)
314	movl	28(%esi),%eax
315	# saved r[7]
316	# ################## Calculate word 8
317	xorl	%ecx,%ecx
318	# mul a[7]*b[1]
319	mull	%edx
320	addl	%eax,%ebp
321	movl	24(%esi),%eax
322	adcl	%edx,%ebx
323	movl	8(%edi),%edx
324	adcl	$0,%ecx
325	# mul a[6]*b[2]
326	mull	%edx
327	addl	%eax,%ebp
328	movl	20(%esi),%eax
329	adcl	%edx,%ebx
330	movl	12(%edi),%edx
331	adcl	$0,%ecx
332	# mul a[5]*b[3]
333	mull	%edx
334	addl	%eax,%ebp
335	movl	16(%esi),%eax
336	adcl	%edx,%ebx
337	movl	16(%edi),%edx
338	adcl	$0,%ecx
339	# mul a[4]*b[4]
340	mull	%edx
341	addl	%eax,%ebp
342	movl	12(%esi),%eax
343	adcl	%edx,%ebx
344	movl	20(%edi),%edx
345	adcl	$0,%ecx
346	# mul a[3]*b[5]
347	mull	%edx
348	addl	%eax,%ebp
349	movl	8(%esi),%eax
350	adcl	%edx,%ebx
351	movl	24(%edi),%edx
352	adcl	$0,%ecx
353	# mul a[2]*b[6]
354	mull	%edx
355	addl	%eax,%ebp
356	movl	4(%esi),%eax
357	adcl	%edx,%ebx
358	movl	28(%edi),%edx
359	adcl	$0,%ecx
360	# mul a[1]*b[7]
361	mull	%edx
362	addl	%eax,%ebp
363	movl	20(%esp),%eax
364	adcl	%edx,%ebx
365	movl	8(%edi),%edx
366	adcl	$0,%ecx
367	movl	%ebp,32(%eax)
368	movl	28(%esi),%eax
369	# saved r[8]
370	# ################## Calculate word 9
371	xorl	%ebp,%ebp
372	# mul a[7]*b[2]
373	mull	%edx
374	addl	%eax,%ebx
375	movl	24(%esi),%eax
376	adcl	%edx,%ecx
377	movl	12(%edi),%edx
378	adcl	$0,%ebp
379	# mul a[6]*b[3]
380	mull	%edx
381	addl	%eax,%ebx
382	movl	20(%esi),%eax
383	adcl	%edx,%ecx
384	movl	16(%edi),%edx
385	adcl	$0,%ebp
386	# mul a[5]*b[4]
387	mull	%edx
388	addl	%eax,%ebx
389	movl	16(%esi),%eax
390	adcl	%edx,%ecx
391	movl	20(%edi),%edx
392	adcl	$0,%ebp
393	# mul a[4]*b[5]
394	mull	%edx
395	addl	%eax,%ebx
396	movl	12(%esi),%eax
397	adcl	%edx,%ecx
398	movl	24(%edi),%edx
399	adcl	$0,%ebp
400	# mul a[3]*b[6]
401	mull	%edx
402	addl	%eax,%ebx
403	movl	8(%esi),%eax
404	adcl	%edx,%ecx
405	movl	28(%edi),%edx
406	adcl	$0,%ebp
407	# mul a[2]*b[7]
408	mull	%edx
409	addl	%eax,%ebx
410	movl	20(%esp),%eax
411	adcl	%edx,%ecx
412	movl	12(%edi),%edx
413	adcl	$0,%ebp
414	movl	%ebx,36(%eax)
415	movl	28(%esi),%eax
416	# saved r[9]
417	# ################## Calculate word 10
418	xorl	%ebx,%ebx
419	# mul a[7]*b[3]
420	mull	%edx
421	addl	%eax,%ecx
422	movl	24(%esi),%eax
423	adcl	%edx,%ebp
424	movl	16(%edi),%edx
425	adcl	$0,%ebx
426	# mul a[6]*b[4]
427	mull	%edx
428	addl	%eax,%ecx
429	movl	20(%esi),%eax
430	adcl	%edx,%ebp
431	movl	20(%edi),%edx
432	adcl	$0,%ebx
433	# mul a[5]*b[5]
434	mull	%edx
435	addl	%eax,%ecx
436	movl	16(%esi),%eax
437	adcl	%edx,%ebp
438	movl	24(%edi),%edx
439	adcl	$0,%ebx
440	# mul a[4]*b[6]
441	mull	%edx
442	addl	%eax,%ecx
443	movl	12(%esi),%eax
444	adcl	%edx,%ebp
445	movl	28(%edi),%edx
446	adcl	$0,%ebx
447	# mul a[3]*b[7]
448	mull	%edx
449	addl	%eax,%ecx
450	movl	20(%esp),%eax
451	adcl	%edx,%ebp
452	movl	16(%edi),%edx
453	adcl	$0,%ebx
454	movl	%ecx,40(%eax)
455	movl	28(%esi),%eax
456	# saved r[10]
457	# ################## Calculate word 11
458	xorl	%ecx,%ecx
459	# mul a[7]*b[4]
460	mull	%edx
461	addl	%eax,%ebp
462	movl	24(%esi),%eax
463	adcl	%edx,%ebx
464	movl	20(%edi),%edx
465	adcl	$0,%ecx
466	# mul a[6]*b[5]
467	mull	%edx
468	addl	%eax,%ebp
469	movl	20(%esi),%eax
470	adcl	%edx,%ebx
471	movl	24(%edi),%edx
472	adcl	$0,%ecx
473	# mul a[5]*b[6]
474	mull	%edx
475	addl	%eax,%ebp
476	movl	16(%esi),%eax
477	adcl	%edx,%ebx
478	movl	28(%edi),%edx
479	adcl	$0,%ecx
480	# mul a[4]*b[7]
481	mull	%edx
482	addl	%eax,%ebp
483	movl	20(%esp),%eax
484	adcl	%edx,%ebx
485	movl	20(%edi),%edx
486	adcl	$0,%ecx
487	movl	%ebp,44(%eax)
488	movl	28(%esi),%eax
489	# saved r[11]
490	# ################## Calculate word 12
491	xorl	%ebp,%ebp
492	# mul a[7]*b[5]
493	mull	%edx
494	addl	%eax,%ebx
495	movl	24(%esi),%eax
496	adcl	%edx,%ecx
497	movl	24(%edi),%edx
498	adcl	$0,%ebp
499	# mul a[6]*b[6]
500	mull	%edx
501	addl	%eax,%ebx
502	movl	20(%esi),%eax
503	adcl	%edx,%ecx
504	movl	28(%edi),%edx
505	adcl	$0,%ebp
506	# mul a[5]*b[7]
507	mull	%edx
508	addl	%eax,%ebx
509	movl	20(%esp),%eax
510	adcl	%edx,%ecx
511	movl	24(%edi),%edx
512	adcl	$0,%ebp
513	movl	%ebx,48(%eax)
514	movl	28(%esi),%eax
515	# saved r[12]
516	# ################## Calculate word 13
517	xorl	%ebx,%ebx
518	# mul a[7]*b[6]
519	mull	%edx
520	addl	%eax,%ecx
521	movl	24(%esi),%eax
522	adcl	%edx,%ebp
523	movl	28(%edi),%edx
524	adcl	$0,%ebx
525	# mul a[6]*b[7]
526	mull	%edx
527	addl	%eax,%ecx
528	movl	20(%esp),%eax
529	adcl	%edx,%ebp
530	movl	28(%edi),%edx
531	adcl	$0,%ebx
532	movl	%ecx,52(%eax)
533	movl	28(%esi),%eax
534	# saved r[13]
535	# ################## Calculate word 14
536	xorl	%ecx,%ecx
537	# mul a[7]*b[7]
538	mull	%edx
539	addl	%eax,%ebp
540	movl	20(%esp),%eax
541	adcl	%edx,%ebx
542	adcl	$0,%ecx
543	movl	%ebp,56(%eax)
544	# saved r[14]
545	# save r[15]
546	movl	%ebx,60(%eax)
547	popl	%ebx
548	popl	%ebp
549	popl	%edi
550	popl	%esi
551	ret
552.globl	_bn_mul_comba4
553.private_extern	_bn_mul_comba4
554.align	4
555_bn_mul_comba4:
556L_bn_mul_comba4_begin:
557	pushl	%esi
558	movl	12(%esp),%esi
559	pushl	%edi
560	movl	20(%esp),%edi
561	pushl	%ebp
562	pushl	%ebx
563	xorl	%ebx,%ebx
564	movl	(%esi),%eax
565	xorl	%ecx,%ecx
566	movl	(%edi),%edx
567	# ################## Calculate word 0
568	xorl	%ebp,%ebp
569	# mul a[0]*b[0]
570	mull	%edx
571	addl	%eax,%ebx
572	movl	20(%esp),%eax
573	adcl	%edx,%ecx
574	movl	(%edi),%edx
575	adcl	$0,%ebp
576	movl	%ebx,(%eax)
577	movl	4(%esi),%eax
578	# saved r[0]
579	# ################## Calculate word 1
580	xorl	%ebx,%ebx
581	# mul a[1]*b[0]
582	mull	%edx
583	addl	%eax,%ecx
584	movl	(%esi),%eax
585	adcl	%edx,%ebp
586	movl	4(%edi),%edx
587	adcl	$0,%ebx
588	# mul a[0]*b[1]
589	mull	%edx
590	addl	%eax,%ecx
591	movl	20(%esp),%eax
592	adcl	%edx,%ebp
593	movl	(%edi),%edx
594	adcl	$0,%ebx
595	movl	%ecx,4(%eax)
596	movl	8(%esi),%eax
597	# saved r[1]
598	# ################## Calculate word 2
599	xorl	%ecx,%ecx
600	# mul a[2]*b[0]
601	mull	%edx
602	addl	%eax,%ebp
603	movl	4(%esi),%eax
604	adcl	%edx,%ebx
605	movl	4(%edi),%edx
606	adcl	$0,%ecx
607	# mul a[1]*b[1]
608	mull	%edx
609	addl	%eax,%ebp
610	movl	(%esi),%eax
611	adcl	%edx,%ebx
612	movl	8(%edi),%edx
613	adcl	$0,%ecx
614	# mul a[0]*b[2]
615	mull	%edx
616	addl	%eax,%ebp
617	movl	20(%esp),%eax
618	adcl	%edx,%ebx
619	movl	(%edi),%edx
620	adcl	$0,%ecx
621	movl	%ebp,8(%eax)
622	movl	12(%esi),%eax
623	# saved r[2]
624	# ################## Calculate word 3
625	xorl	%ebp,%ebp
626	# mul a[3]*b[0]
627	mull	%edx
628	addl	%eax,%ebx
629	movl	8(%esi),%eax
630	adcl	%edx,%ecx
631	movl	4(%edi),%edx
632	adcl	$0,%ebp
633	# mul a[2]*b[1]
634	mull	%edx
635	addl	%eax,%ebx
636	movl	4(%esi),%eax
637	adcl	%edx,%ecx
638	movl	8(%edi),%edx
639	adcl	$0,%ebp
640	# mul a[1]*b[2]
641	mull	%edx
642	addl	%eax,%ebx
643	movl	(%esi),%eax
644	adcl	%edx,%ecx
645	movl	12(%edi),%edx
646	adcl	$0,%ebp
647	# mul a[0]*b[3]
648	mull	%edx
649	addl	%eax,%ebx
650	movl	20(%esp),%eax
651	adcl	%edx,%ecx
652	movl	4(%edi),%edx
653	adcl	$0,%ebp
654	movl	%ebx,12(%eax)
655	movl	12(%esi),%eax
656	# saved r[3]
657	# ################## Calculate word 4
658	xorl	%ebx,%ebx
659	# mul a[3]*b[1]
660	mull	%edx
661	addl	%eax,%ecx
662	movl	8(%esi),%eax
663	adcl	%edx,%ebp
664	movl	8(%edi),%edx
665	adcl	$0,%ebx
666	# mul a[2]*b[2]
667	mull	%edx
668	addl	%eax,%ecx
669	movl	4(%esi),%eax
670	adcl	%edx,%ebp
671	movl	12(%edi),%edx
672	adcl	$0,%ebx
673	# mul a[1]*b[3]
674	mull	%edx
675	addl	%eax,%ecx
676	movl	20(%esp),%eax
677	adcl	%edx,%ebp
678	movl	8(%edi),%edx
679	adcl	$0,%ebx
680	movl	%ecx,16(%eax)
681	movl	12(%esi),%eax
682	# saved r[4]
683	# ################## Calculate word 5
684	xorl	%ecx,%ecx
685	# mul a[3]*b[2]
686	mull	%edx
687	addl	%eax,%ebp
688	movl	8(%esi),%eax
689	adcl	%edx,%ebx
690	movl	12(%edi),%edx
691	adcl	$0,%ecx
692	# mul a[2]*b[3]
693	mull	%edx
694	addl	%eax,%ebp
695	movl	20(%esp),%eax
696	adcl	%edx,%ebx
697	movl	12(%edi),%edx
698	adcl	$0,%ecx
699	movl	%ebp,20(%eax)
700	movl	12(%esi),%eax
701	# saved r[5]
702	# ################## Calculate word 6
703	xorl	%ebp,%ebp
704	# mul a[3]*b[3]
705	mull	%edx
706	addl	%eax,%ebx
707	movl	20(%esp),%eax
708	adcl	%edx,%ecx
709	adcl	$0,%ebp
710	movl	%ebx,24(%eax)
711	# saved r[6]
712	# save r[7]
713	movl	%ecx,28(%eax)
714	popl	%ebx
715	popl	%ebp
716	popl	%edi
717	popl	%esi
718	ret
719.globl	_bn_sqr_comba8
720.private_extern	_bn_sqr_comba8
721.align	4
722_bn_sqr_comba8:
723L_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	# ############### Calculate word 0
734	xorl	%ebp,%ebp
735	# sqr a[0]*a[0]
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	# saved r[0]
744	# ############### Calculate word 1
745	xorl	%ebx,%ebx
746	# sqr a[1]*a[0]
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	# saved r[1]
758	# ############### Calculate word 2
759	xorl	%ecx,%ecx
760	# sqr a[2]*a[0]
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	# sqr a[1]*a[1]
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	# saved r[2]
778	# ############### Calculate word 3
779	xorl	%ebp,%ebp
780	# sqr a[3]*a[0]
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	# sqr a[2]*a[1]
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	# saved r[3]
802	# ############### Calculate word 4
803	xorl	%ebx,%ebx
804	# sqr a[4]*a[0]
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	# sqr a[3]*a[1]
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	# sqr a[2]*a[2]
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	# saved r[4]
832	# ############### Calculate word 5
833	xorl	%ecx,%ecx
834	# sqr a[5]*a[0]
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	# sqr a[4]*a[1]
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	# sqr a[3]*a[2]
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	# saved r[5]
866	# ############### Calculate word 6
867	xorl	%ebp,%ebp
868	# sqr a[6]*a[0]
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	# sqr a[5]*a[1]
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	# sqr a[4]*a[2]
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	# sqr a[3]*a[3]
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	# saved r[6]
906	# ############### Calculate word 7
907	xorl	%ebx,%ebx
908	# sqr a[7]*a[0]
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	# sqr a[6]*a[1]
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	# sqr a[5]*a[2]
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	# sqr a[4]*a[3]
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	# saved r[7]
950	# ############### Calculate word 8
951	xorl	%ecx,%ecx
952	# sqr a[7]*a[1]
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	# sqr a[6]*a[2]
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	# sqr a[5]*a[3]
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	# sqr a[4]*a[4]
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	# saved r[8]
990	# ############### Calculate word 9
991	xorl	%ebp,%ebp
992	# sqr a[7]*a[2]
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	# sqr a[6]*a[3]
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	# sqr a[5]*a[4]
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	# saved r[9]
1024	# ############### Calculate word 10
1025	xorl	%ebx,%ebx
1026	# sqr a[7]*a[3]
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	# sqr a[6]*a[4]
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	# sqr a[5]*a[5]
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	# saved r[10]
1054	# ############### Calculate word 11
1055	xorl	%ecx,%ecx
1056	# sqr a[7]*a[4]
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	# sqr a[6]*a[5]
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	# saved r[11]
1078	# ############### Calculate word 12
1079	xorl	%ebp,%ebp
1080	# sqr a[7]*a[5]
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	# sqr a[6]*a[6]
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	# saved r[12]
1098	# ############### Calculate word 13
1099	xorl	%ebx,%ebx
1100	# sqr a[7]*a[6]
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	# saved r[13]
1111	# ############### Calculate word 14
1112	xorl	%ecx,%ecx
1113	# sqr a[7]*a[7]
1114	mull	%eax
1115	addl	%eax,%ebp
1116	adcl	%edx,%ebx
1117	adcl	$0,%ecx
1118	movl	%ebp,56(%edi)
1119	# saved r[14]
1120	movl	%ebx,60(%edi)
1121	popl	%ebx
1122	popl	%ebp
1123	popl	%edi
1124	popl	%esi
1125	ret
1126.globl	_bn_sqr_comba4
1127.private_extern	_bn_sqr_comba4
1128.align	4
1129_bn_sqr_comba4:
1130L_bn_sqr_comba4_begin:
1131	pushl	%esi
1132	pushl	%edi
1133	pushl	%ebp
1134	pushl	%ebx
1135	movl	20(%esp),%edi
1136	movl	24(%esp),%esi
1137	xorl	%ebx,%ebx
1138	xorl	%ecx,%ecx
1139	movl	(%esi),%eax
1140	# ############### Calculate word 0
1141	xorl	%ebp,%ebp
1142	# sqr a[0]*a[0]
1143	mull	%eax
1144	addl	%eax,%ebx
1145	adcl	%edx,%ecx
1146	movl	(%esi),%edx
1147	adcl	$0,%ebp
1148	movl	%ebx,(%edi)
1149	movl	4(%esi),%eax
1150	# saved r[0]
1151	# ############### Calculate word 1
1152	xorl	%ebx,%ebx
1153	# sqr a[1]*a[0]
1154	mull	%edx
1155	addl	%eax,%eax
1156	adcl	%edx,%edx
1157	adcl	$0,%ebx
1158	addl	%eax,%ecx
1159	adcl	%edx,%ebp
1160	movl	8(%esi),%eax
1161	adcl	$0,%ebx
1162	movl	%ecx,4(%edi)
1163	movl	(%esi),%edx
1164	# saved r[1]
1165	# ############### Calculate word 2
1166	xorl	%ecx,%ecx
1167	# sqr a[2]*a[0]
1168	mull	%edx
1169	addl	%eax,%eax
1170	adcl	%edx,%edx
1171	adcl	$0,%ecx
1172	addl	%eax,%ebp
1173	adcl	%edx,%ebx
1174	movl	4(%esi),%eax
1175	adcl	$0,%ecx
1176	# sqr a[1]*a[1]
1177	mull	%eax
1178	addl	%eax,%ebp
1179	adcl	%edx,%ebx
1180	movl	(%esi),%edx
1181	adcl	$0,%ecx
1182	movl	%ebp,8(%edi)
1183	movl	12(%esi),%eax
1184	# saved r[2]
1185	# ############### Calculate word 3
1186	xorl	%ebp,%ebp
1187	# sqr a[3]*a[0]
1188	mull	%edx
1189	addl	%eax,%eax
1190	adcl	%edx,%edx
1191	adcl	$0,%ebp
1192	addl	%eax,%ebx
1193	adcl	%edx,%ecx
1194	movl	8(%esi),%eax
1195	adcl	$0,%ebp
1196	movl	4(%esi),%edx
1197	# sqr a[2]*a[1]
1198	mull	%edx
1199	addl	%eax,%eax
1200	adcl	%edx,%edx
1201	adcl	$0,%ebp
1202	addl	%eax,%ebx
1203	adcl	%edx,%ecx
1204	movl	12(%esi),%eax
1205	adcl	$0,%ebp
1206	movl	%ebx,12(%edi)
1207	movl	4(%esi),%edx
1208	# saved r[3]
1209	# ############### Calculate word 4
1210	xorl	%ebx,%ebx
1211	# sqr a[3]*a[1]
1212	mull	%edx
1213	addl	%eax,%eax
1214	adcl	%edx,%edx
1215	adcl	$0,%ebx
1216	addl	%eax,%ecx
1217	adcl	%edx,%ebp
1218	movl	8(%esi),%eax
1219	adcl	$0,%ebx
1220	# sqr a[2]*a[2]
1221	mull	%eax
1222	addl	%eax,%ecx
1223	adcl	%edx,%ebp
1224	movl	8(%esi),%edx
1225	adcl	$0,%ebx
1226	movl	%ecx,16(%edi)
1227	movl	12(%esi),%eax
1228	# saved r[4]
1229	# ############### Calculate word 5
1230	xorl	%ecx,%ecx
1231	# sqr a[3]*a[2]
1232	mull	%edx
1233	addl	%eax,%eax
1234	adcl	%edx,%edx
1235	adcl	$0,%ecx
1236	addl	%eax,%ebp
1237	adcl	%edx,%ebx
1238	movl	12(%esi),%eax
1239	adcl	$0,%ecx
1240	movl	%ebp,20(%edi)
1241	# saved r[5]
1242	# ############### Calculate word 6
1243	xorl	%ebp,%ebp
1244	# sqr a[3]*a[3]
1245	mull	%eax
1246	addl	%eax,%ebx
1247	adcl	%edx,%ecx
1248	adcl	$0,%ebp
1249	movl	%ebx,24(%edi)
1250	# saved r[6]
1251	movl	%ecx,28(%edi)
1252	popl	%ebx
1253	popl	%ebp
1254	popl	%edi
1255	popl	%esi
1256	ret
1257#endif
1258