xref: /aosp_15_r20/external/cronet/third_party/boringssl/src/gen/bcm/co-586-apple.S (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1// This file is generated from a similarly-named Perl script in the BoringSSL
2// source tree. Do not edit by hand.
3
4#include <openssl/asm_base.h>
5
6#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__APPLE__)
7.text
8.globl	_bn_mul_comba8
9.private_extern	_bn_mul_comba8
10.align	4
11_bn_mul_comba8:
12L_bn_mul_comba8_begin:
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	# ################## Calculate word 0
24	xorl	%ebp,%ebp
25	# mul a[0]*b[0]
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	# saved r[0]
35	# ################## Calculate word 1
36	xorl	%ebx,%ebx
37	# mul a[1]*b[0]
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	# mul a[0]*b[1]
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	# saved r[1]
54	# ################## Calculate word 2
55	xorl	%ecx,%ecx
56	# mul a[2]*b[0]
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	# mul a[1]*b[1]
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	# mul a[0]*b[2]
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	# saved r[2]
80	# ################## Calculate word 3
81	xorl	%ebp,%ebp
82	# mul a[3]*b[0]
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	# mul a[2]*b[1]
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	# mul a[1]*b[2]
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	# mul a[0]*b[3]
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	# saved r[3]
113	# ################## Calculate word 4
114	xorl	%ebx,%ebx
115	# mul a[4]*b[0]
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	# mul a[3]*b[1]
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	# mul a[2]*b[2]
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	# mul a[1]*b[3]
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	# mul a[0]*b[4]
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	# saved r[4]
153	# ################## Calculate word 5
154	xorl	%ecx,%ecx
155	# mul a[5]*b[0]
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	# mul a[4]*b[1]
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	# mul a[3]*b[2]
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	# mul a[2]*b[3]
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	# mul a[1]*b[4]
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	# mul a[0]*b[5]
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	# saved r[5]
200	# ################## Calculate word 6
201	xorl	%ebp,%ebp
202	# mul a[6]*b[0]
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	# mul a[5]*b[1]
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	# mul a[4]*b[2]
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	# mul a[3]*b[3]
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	# mul a[2]*b[4]
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	# mul a[1]*b[5]
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	# mul a[0]*b[6]
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	# saved r[6]
254	# ################## Calculate word 7
255	xorl	%ebx,%ebx
256	# mul a[7]*b[0]
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	# mul a[6]*b[1]
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	# mul a[5]*b[2]
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	# mul a[4]*b[3]
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	# mul a[3]*b[4]
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	# mul a[2]*b[5]
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	# mul a[1]*b[6]
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	# mul a[0]*b[7]
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	# saved r[7]
315	# ################## Calculate word 8
316	xorl	%ecx,%ecx
317	# mul a[7]*b[1]
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	# mul a[6]*b[2]
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	# mul a[5]*b[3]
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	# mul a[4]*b[4]
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	# mul a[3]*b[5]
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	# mul a[2]*b[6]
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	# mul a[1]*b[7]
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	# saved r[8]
369	# ################## Calculate word 9
370	xorl	%ebp,%ebp
371	# mul a[7]*b[2]
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	# mul a[6]*b[3]
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	# mul a[5]*b[4]
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	# mul a[4]*b[5]
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	# mul a[3]*b[6]
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	# mul a[2]*b[7]
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	# saved r[9]
416	# ################## Calculate word 10
417	xorl	%ebx,%ebx
418	# mul a[7]*b[3]
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	# mul a[6]*b[4]
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	# mul a[5]*b[5]
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	# mul a[4]*b[6]
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	# mul a[3]*b[7]
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	# saved r[10]
456	# ################## Calculate word 11
457	xorl	%ecx,%ecx
458	# mul a[7]*b[4]
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	# mul a[6]*b[5]
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	# mul a[5]*b[6]
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	# mul a[4]*b[7]
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	# saved r[11]
489	# ################## Calculate word 12
490	xorl	%ebp,%ebp
491	# mul a[7]*b[5]
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	# mul a[6]*b[6]
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	# mul a[5]*b[7]
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	# saved r[12]
515	# ################## Calculate word 13
516	xorl	%ebx,%ebx
517	# mul a[7]*b[6]
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	# mul a[6]*b[7]
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	# saved r[13]
534	# ################## Calculate word 14
535	xorl	%ecx,%ecx
536	# mul a[7]*b[7]
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	# saved r[14]
544	# save r[15]
545	movl	%ebx,60(%eax)
546	popl	%ebx
547	popl	%ebp
548	popl	%edi
549	popl	%esi
550	ret
551.globl	_bn_mul_comba4
552.private_extern	_bn_mul_comba4
553.align	4
554_bn_mul_comba4:
555L_bn_mul_comba4_begin:
556	pushl	%esi
557	movl	12(%esp),%esi
558	pushl	%edi
559	movl	20(%esp),%edi
560	pushl	%ebp
561	pushl	%ebx
562	xorl	%ebx,%ebx
563	movl	(%esi),%eax
564	xorl	%ecx,%ecx
565	movl	(%edi),%edx
566	# ################## Calculate word 0
567	xorl	%ebp,%ebp
568	# mul a[0]*b[0]
569	mull	%edx
570	addl	%eax,%ebx
571	movl	20(%esp),%eax
572	adcl	%edx,%ecx
573	movl	(%edi),%edx
574	adcl	$0,%ebp
575	movl	%ebx,(%eax)
576	movl	4(%esi),%eax
577	# saved r[0]
578	# ################## Calculate word 1
579	xorl	%ebx,%ebx
580	# mul a[1]*b[0]
581	mull	%edx
582	addl	%eax,%ecx
583	movl	(%esi),%eax
584	adcl	%edx,%ebp
585	movl	4(%edi),%edx
586	adcl	$0,%ebx
587	# mul a[0]*b[1]
588	mull	%edx
589	addl	%eax,%ecx
590	movl	20(%esp),%eax
591	adcl	%edx,%ebp
592	movl	(%edi),%edx
593	adcl	$0,%ebx
594	movl	%ecx,4(%eax)
595	movl	8(%esi),%eax
596	# saved r[1]
597	# ################## Calculate word 2
598	xorl	%ecx,%ecx
599	# mul a[2]*b[0]
600	mull	%edx
601	addl	%eax,%ebp
602	movl	4(%esi),%eax
603	adcl	%edx,%ebx
604	movl	4(%edi),%edx
605	adcl	$0,%ecx
606	# mul a[1]*b[1]
607	mull	%edx
608	addl	%eax,%ebp
609	movl	(%esi),%eax
610	adcl	%edx,%ebx
611	movl	8(%edi),%edx
612	adcl	$0,%ecx
613	# mul a[0]*b[2]
614	mull	%edx
615	addl	%eax,%ebp
616	movl	20(%esp),%eax
617	adcl	%edx,%ebx
618	movl	(%edi),%edx
619	adcl	$0,%ecx
620	movl	%ebp,8(%eax)
621	movl	12(%esi),%eax
622	# saved r[2]
623	# ################## Calculate word 3
624	xorl	%ebp,%ebp
625	# mul a[3]*b[0]
626	mull	%edx
627	addl	%eax,%ebx
628	movl	8(%esi),%eax
629	adcl	%edx,%ecx
630	movl	4(%edi),%edx
631	adcl	$0,%ebp
632	# mul a[2]*b[1]
633	mull	%edx
634	addl	%eax,%ebx
635	movl	4(%esi),%eax
636	adcl	%edx,%ecx
637	movl	8(%edi),%edx
638	adcl	$0,%ebp
639	# mul a[1]*b[2]
640	mull	%edx
641	addl	%eax,%ebx
642	movl	(%esi),%eax
643	adcl	%edx,%ecx
644	movl	12(%edi),%edx
645	adcl	$0,%ebp
646	# mul a[0]*b[3]
647	mull	%edx
648	addl	%eax,%ebx
649	movl	20(%esp),%eax
650	adcl	%edx,%ecx
651	movl	4(%edi),%edx
652	adcl	$0,%ebp
653	movl	%ebx,12(%eax)
654	movl	12(%esi),%eax
655	# saved r[3]
656	# ################## Calculate word 4
657	xorl	%ebx,%ebx
658	# mul a[3]*b[1]
659	mull	%edx
660	addl	%eax,%ecx
661	movl	8(%esi),%eax
662	adcl	%edx,%ebp
663	movl	8(%edi),%edx
664	adcl	$0,%ebx
665	# mul a[2]*b[2]
666	mull	%edx
667	addl	%eax,%ecx
668	movl	4(%esi),%eax
669	adcl	%edx,%ebp
670	movl	12(%edi),%edx
671	adcl	$0,%ebx
672	# mul a[1]*b[3]
673	mull	%edx
674	addl	%eax,%ecx
675	movl	20(%esp),%eax
676	adcl	%edx,%ebp
677	movl	8(%edi),%edx
678	adcl	$0,%ebx
679	movl	%ecx,16(%eax)
680	movl	12(%esi),%eax
681	# saved r[4]
682	# ################## Calculate word 5
683	xorl	%ecx,%ecx
684	# mul a[3]*b[2]
685	mull	%edx
686	addl	%eax,%ebp
687	movl	8(%esi),%eax
688	adcl	%edx,%ebx
689	movl	12(%edi),%edx
690	adcl	$0,%ecx
691	# mul a[2]*b[3]
692	mull	%edx
693	addl	%eax,%ebp
694	movl	20(%esp),%eax
695	adcl	%edx,%ebx
696	movl	12(%edi),%edx
697	adcl	$0,%ecx
698	movl	%ebp,20(%eax)
699	movl	12(%esi),%eax
700	# saved r[5]
701	# ################## Calculate word 6
702	xorl	%ebp,%ebp
703	# mul a[3]*b[3]
704	mull	%edx
705	addl	%eax,%ebx
706	movl	20(%esp),%eax
707	adcl	%edx,%ecx
708	adcl	$0,%ebp
709	movl	%ebx,24(%eax)
710	# saved r[6]
711	# save r[7]
712	movl	%ecx,28(%eax)
713	popl	%ebx
714	popl	%ebp
715	popl	%edi
716	popl	%esi
717	ret
718.globl	_bn_sqr_comba8
719.private_extern	_bn_sqr_comba8
720.align	4
721_bn_sqr_comba8:
722L_bn_sqr_comba8_begin:
723	pushl	%esi
724	pushl	%edi
725	pushl	%ebp
726	pushl	%ebx
727	movl	20(%esp),%edi
728	movl	24(%esp),%esi
729	xorl	%ebx,%ebx
730	xorl	%ecx,%ecx
731	movl	(%esi),%eax
732	# ############### Calculate word 0
733	xorl	%ebp,%ebp
734	# sqr a[0]*a[0]
735	mull	%eax
736	addl	%eax,%ebx
737	adcl	%edx,%ecx
738	movl	(%esi),%edx
739	adcl	$0,%ebp
740	movl	%ebx,(%edi)
741	movl	4(%esi),%eax
742	# saved r[0]
743	# ############### Calculate word 1
744	xorl	%ebx,%ebx
745	# sqr a[1]*a[0]
746	mull	%edx
747	addl	%eax,%eax
748	adcl	%edx,%edx
749	adcl	$0,%ebx
750	addl	%eax,%ecx
751	adcl	%edx,%ebp
752	movl	8(%esi),%eax
753	adcl	$0,%ebx
754	movl	%ecx,4(%edi)
755	movl	(%esi),%edx
756	# saved r[1]
757	# ############### Calculate word 2
758	xorl	%ecx,%ecx
759	# sqr a[2]*a[0]
760	mull	%edx
761	addl	%eax,%eax
762	adcl	%edx,%edx
763	adcl	$0,%ecx
764	addl	%eax,%ebp
765	adcl	%edx,%ebx
766	movl	4(%esi),%eax
767	adcl	$0,%ecx
768	# sqr a[1]*a[1]
769	mull	%eax
770	addl	%eax,%ebp
771	adcl	%edx,%ebx
772	movl	(%esi),%edx
773	adcl	$0,%ecx
774	movl	%ebp,8(%edi)
775	movl	12(%esi),%eax
776	# saved r[2]
777	# ############### Calculate word 3
778	xorl	%ebp,%ebp
779	# sqr a[3]*a[0]
780	mull	%edx
781	addl	%eax,%eax
782	adcl	%edx,%edx
783	adcl	$0,%ebp
784	addl	%eax,%ebx
785	adcl	%edx,%ecx
786	movl	8(%esi),%eax
787	adcl	$0,%ebp
788	movl	4(%esi),%edx
789	# sqr a[2]*a[1]
790	mull	%edx
791	addl	%eax,%eax
792	adcl	%edx,%edx
793	adcl	$0,%ebp
794	addl	%eax,%ebx
795	adcl	%edx,%ecx
796	movl	16(%esi),%eax
797	adcl	$0,%ebp
798	movl	%ebx,12(%edi)
799	movl	(%esi),%edx
800	# saved r[3]
801	# ############### Calculate word 4
802	xorl	%ebx,%ebx
803	# sqr a[4]*a[0]
804	mull	%edx
805	addl	%eax,%eax
806	adcl	%edx,%edx
807	adcl	$0,%ebx
808	addl	%eax,%ecx
809	adcl	%edx,%ebp
810	movl	12(%esi),%eax
811	adcl	$0,%ebx
812	movl	4(%esi),%edx
813	# sqr a[3]*a[1]
814	mull	%edx
815	addl	%eax,%eax
816	adcl	%edx,%edx
817	adcl	$0,%ebx
818	addl	%eax,%ecx
819	adcl	%edx,%ebp
820	movl	8(%esi),%eax
821	adcl	$0,%ebx
822	# sqr a[2]*a[2]
823	mull	%eax
824	addl	%eax,%ecx
825	adcl	%edx,%ebp
826	movl	(%esi),%edx
827	adcl	$0,%ebx
828	movl	%ecx,16(%edi)
829	movl	20(%esi),%eax
830	# saved r[4]
831	# ############### Calculate word 5
832	xorl	%ecx,%ecx
833	# sqr a[5]*a[0]
834	mull	%edx
835	addl	%eax,%eax
836	adcl	%edx,%edx
837	adcl	$0,%ecx
838	addl	%eax,%ebp
839	adcl	%edx,%ebx
840	movl	16(%esi),%eax
841	adcl	$0,%ecx
842	movl	4(%esi),%edx
843	# sqr a[4]*a[1]
844	mull	%edx
845	addl	%eax,%eax
846	adcl	%edx,%edx
847	adcl	$0,%ecx
848	addl	%eax,%ebp
849	adcl	%edx,%ebx
850	movl	12(%esi),%eax
851	adcl	$0,%ecx
852	movl	8(%esi),%edx
853	# sqr a[3]*a[2]
854	mull	%edx
855	addl	%eax,%eax
856	adcl	%edx,%edx
857	adcl	$0,%ecx
858	addl	%eax,%ebp
859	adcl	%edx,%ebx
860	movl	24(%esi),%eax
861	adcl	$0,%ecx
862	movl	%ebp,20(%edi)
863	movl	(%esi),%edx
864	# saved r[5]
865	# ############### Calculate word 6
866	xorl	%ebp,%ebp
867	# sqr a[6]*a[0]
868	mull	%edx
869	addl	%eax,%eax
870	adcl	%edx,%edx
871	adcl	$0,%ebp
872	addl	%eax,%ebx
873	adcl	%edx,%ecx
874	movl	20(%esi),%eax
875	adcl	$0,%ebp
876	movl	4(%esi),%edx
877	# sqr a[5]*a[1]
878	mull	%edx
879	addl	%eax,%eax
880	adcl	%edx,%edx
881	adcl	$0,%ebp
882	addl	%eax,%ebx
883	adcl	%edx,%ecx
884	movl	16(%esi),%eax
885	adcl	$0,%ebp
886	movl	8(%esi),%edx
887	# sqr a[4]*a[2]
888	mull	%edx
889	addl	%eax,%eax
890	adcl	%edx,%edx
891	adcl	$0,%ebp
892	addl	%eax,%ebx
893	adcl	%edx,%ecx
894	movl	12(%esi),%eax
895	adcl	$0,%ebp
896	# sqr a[3]*a[3]
897	mull	%eax
898	addl	%eax,%ebx
899	adcl	%edx,%ecx
900	movl	(%esi),%edx
901	adcl	$0,%ebp
902	movl	%ebx,24(%edi)
903	movl	28(%esi),%eax
904	# saved r[6]
905	# ############### Calculate word 7
906	xorl	%ebx,%ebx
907	# sqr a[7]*a[0]
908	mull	%edx
909	addl	%eax,%eax
910	adcl	%edx,%edx
911	adcl	$0,%ebx
912	addl	%eax,%ecx
913	adcl	%edx,%ebp
914	movl	24(%esi),%eax
915	adcl	$0,%ebx
916	movl	4(%esi),%edx
917	# sqr a[6]*a[1]
918	mull	%edx
919	addl	%eax,%eax
920	adcl	%edx,%edx
921	adcl	$0,%ebx
922	addl	%eax,%ecx
923	adcl	%edx,%ebp
924	movl	20(%esi),%eax
925	adcl	$0,%ebx
926	movl	8(%esi),%edx
927	# sqr a[5]*a[2]
928	mull	%edx
929	addl	%eax,%eax
930	adcl	%edx,%edx
931	adcl	$0,%ebx
932	addl	%eax,%ecx
933	adcl	%edx,%ebp
934	movl	16(%esi),%eax
935	adcl	$0,%ebx
936	movl	12(%esi),%edx
937	# sqr a[4]*a[3]
938	mull	%edx
939	addl	%eax,%eax
940	adcl	%edx,%edx
941	adcl	$0,%ebx
942	addl	%eax,%ecx
943	adcl	%edx,%ebp
944	movl	28(%esi),%eax
945	adcl	$0,%ebx
946	movl	%ecx,28(%edi)
947	movl	4(%esi),%edx
948	# saved r[7]
949	# ############### Calculate word 8
950	xorl	%ecx,%ecx
951	# sqr a[7]*a[1]
952	mull	%edx
953	addl	%eax,%eax
954	adcl	%edx,%edx
955	adcl	$0,%ecx
956	addl	%eax,%ebp
957	adcl	%edx,%ebx
958	movl	24(%esi),%eax
959	adcl	$0,%ecx
960	movl	8(%esi),%edx
961	# sqr a[6]*a[2]
962	mull	%edx
963	addl	%eax,%eax
964	adcl	%edx,%edx
965	adcl	$0,%ecx
966	addl	%eax,%ebp
967	adcl	%edx,%ebx
968	movl	20(%esi),%eax
969	adcl	$0,%ecx
970	movl	12(%esi),%edx
971	# sqr a[5]*a[3]
972	mull	%edx
973	addl	%eax,%eax
974	adcl	%edx,%edx
975	adcl	$0,%ecx
976	addl	%eax,%ebp
977	adcl	%edx,%ebx
978	movl	16(%esi),%eax
979	adcl	$0,%ecx
980	# sqr a[4]*a[4]
981	mull	%eax
982	addl	%eax,%ebp
983	adcl	%edx,%ebx
984	movl	8(%esi),%edx
985	adcl	$0,%ecx
986	movl	%ebp,32(%edi)
987	movl	28(%esi),%eax
988	# saved r[8]
989	# ############### Calculate word 9
990	xorl	%ebp,%ebp
991	# sqr a[7]*a[2]
992	mull	%edx
993	addl	%eax,%eax
994	adcl	%edx,%edx
995	adcl	$0,%ebp
996	addl	%eax,%ebx
997	adcl	%edx,%ecx
998	movl	24(%esi),%eax
999	adcl	$0,%ebp
1000	movl	12(%esi),%edx
1001	# sqr a[6]*a[3]
1002	mull	%edx
1003	addl	%eax,%eax
1004	adcl	%edx,%edx
1005	adcl	$0,%ebp
1006	addl	%eax,%ebx
1007	adcl	%edx,%ecx
1008	movl	20(%esi),%eax
1009	adcl	$0,%ebp
1010	movl	16(%esi),%edx
1011	# sqr a[5]*a[4]
1012	mull	%edx
1013	addl	%eax,%eax
1014	adcl	%edx,%edx
1015	adcl	$0,%ebp
1016	addl	%eax,%ebx
1017	adcl	%edx,%ecx
1018	movl	28(%esi),%eax
1019	adcl	$0,%ebp
1020	movl	%ebx,36(%edi)
1021	movl	12(%esi),%edx
1022	# saved r[9]
1023	# ############### Calculate word 10
1024	xorl	%ebx,%ebx
1025	# sqr a[7]*a[3]
1026	mull	%edx
1027	addl	%eax,%eax
1028	adcl	%edx,%edx
1029	adcl	$0,%ebx
1030	addl	%eax,%ecx
1031	adcl	%edx,%ebp
1032	movl	24(%esi),%eax
1033	adcl	$0,%ebx
1034	movl	16(%esi),%edx
1035	# sqr a[6]*a[4]
1036	mull	%edx
1037	addl	%eax,%eax
1038	adcl	%edx,%edx
1039	adcl	$0,%ebx
1040	addl	%eax,%ecx
1041	adcl	%edx,%ebp
1042	movl	20(%esi),%eax
1043	adcl	$0,%ebx
1044	# sqr a[5]*a[5]
1045	mull	%eax
1046	addl	%eax,%ecx
1047	adcl	%edx,%ebp
1048	movl	16(%esi),%edx
1049	adcl	$0,%ebx
1050	movl	%ecx,40(%edi)
1051	movl	28(%esi),%eax
1052	# saved r[10]
1053	# ############### Calculate word 11
1054	xorl	%ecx,%ecx
1055	# sqr a[7]*a[4]
1056	mull	%edx
1057	addl	%eax,%eax
1058	adcl	%edx,%edx
1059	adcl	$0,%ecx
1060	addl	%eax,%ebp
1061	adcl	%edx,%ebx
1062	movl	24(%esi),%eax
1063	adcl	$0,%ecx
1064	movl	20(%esi),%edx
1065	# sqr a[6]*a[5]
1066	mull	%edx
1067	addl	%eax,%eax
1068	adcl	%edx,%edx
1069	adcl	$0,%ecx
1070	addl	%eax,%ebp
1071	adcl	%edx,%ebx
1072	movl	28(%esi),%eax
1073	adcl	$0,%ecx
1074	movl	%ebp,44(%edi)
1075	movl	20(%esi),%edx
1076	# saved r[11]
1077	# ############### Calculate word 12
1078	xorl	%ebp,%ebp
1079	# sqr a[7]*a[5]
1080	mull	%edx
1081	addl	%eax,%eax
1082	adcl	%edx,%edx
1083	adcl	$0,%ebp
1084	addl	%eax,%ebx
1085	adcl	%edx,%ecx
1086	movl	24(%esi),%eax
1087	adcl	$0,%ebp
1088	# sqr a[6]*a[6]
1089	mull	%eax
1090	addl	%eax,%ebx
1091	adcl	%edx,%ecx
1092	movl	24(%esi),%edx
1093	adcl	$0,%ebp
1094	movl	%ebx,48(%edi)
1095	movl	28(%esi),%eax
1096	# saved r[12]
1097	# ############### Calculate word 13
1098	xorl	%ebx,%ebx
1099	# sqr a[7]*a[6]
1100	mull	%edx
1101	addl	%eax,%eax
1102	adcl	%edx,%edx
1103	adcl	$0,%ebx
1104	addl	%eax,%ecx
1105	adcl	%edx,%ebp
1106	movl	28(%esi),%eax
1107	adcl	$0,%ebx
1108	movl	%ecx,52(%edi)
1109	# saved r[13]
1110	# ############### Calculate word 14
1111	xorl	%ecx,%ecx
1112	# sqr a[7]*a[7]
1113	mull	%eax
1114	addl	%eax,%ebp
1115	adcl	%edx,%ebx
1116	adcl	$0,%ecx
1117	movl	%ebp,56(%edi)
1118	# saved r[14]
1119	movl	%ebx,60(%edi)
1120	popl	%ebx
1121	popl	%ebp
1122	popl	%edi
1123	popl	%esi
1124	ret
1125.globl	_bn_sqr_comba4
1126.private_extern	_bn_sqr_comba4
1127.align	4
1128_bn_sqr_comba4:
1129L_bn_sqr_comba4_begin:
1130	pushl	%esi
1131	pushl	%edi
1132	pushl	%ebp
1133	pushl	%ebx
1134	movl	20(%esp),%edi
1135	movl	24(%esp),%esi
1136	xorl	%ebx,%ebx
1137	xorl	%ecx,%ecx
1138	movl	(%esi),%eax
1139	# ############### Calculate word 0
1140	xorl	%ebp,%ebp
1141	# sqr a[0]*a[0]
1142	mull	%eax
1143	addl	%eax,%ebx
1144	adcl	%edx,%ecx
1145	movl	(%esi),%edx
1146	adcl	$0,%ebp
1147	movl	%ebx,(%edi)
1148	movl	4(%esi),%eax
1149	# saved r[0]
1150	# ############### Calculate word 1
1151	xorl	%ebx,%ebx
1152	# sqr a[1]*a[0]
1153	mull	%edx
1154	addl	%eax,%eax
1155	adcl	%edx,%edx
1156	adcl	$0,%ebx
1157	addl	%eax,%ecx
1158	adcl	%edx,%ebp
1159	movl	8(%esi),%eax
1160	adcl	$0,%ebx
1161	movl	%ecx,4(%edi)
1162	movl	(%esi),%edx
1163	# saved r[1]
1164	# ############### Calculate word 2
1165	xorl	%ecx,%ecx
1166	# sqr a[2]*a[0]
1167	mull	%edx
1168	addl	%eax,%eax
1169	adcl	%edx,%edx
1170	adcl	$0,%ecx
1171	addl	%eax,%ebp
1172	adcl	%edx,%ebx
1173	movl	4(%esi),%eax
1174	adcl	$0,%ecx
1175	# sqr a[1]*a[1]
1176	mull	%eax
1177	addl	%eax,%ebp
1178	adcl	%edx,%ebx
1179	movl	(%esi),%edx
1180	adcl	$0,%ecx
1181	movl	%ebp,8(%edi)
1182	movl	12(%esi),%eax
1183	# saved r[2]
1184	# ############### Calculate word 3
1185	xorl	%ebp,%ebp
1186	# sqr a[3]*a[0]
1187	mull	%edx
1188	addl	%eax,%eax
1189	adcl	%edx,%edx
1190	adcl	$0,%ebp
1191	addl	%eax,%ebx
1192	adcl	%edx,%ecx
1193	movl	8(%esi),%eax
1194	adcl	$0,%ebp
1195	movl	4(%esi),%edx
1196	# sqr a[2]*a[1]
1197	mull	%edx
1198	addl	%eax,%eax
1199	adcl	%edx,%edx
1200	adcl	$0,%ebp
1201	addl	%eax,%ebx
1202	adcl	%edx,%ecx
1203	movl	12(%esi),%eax
1204	adcl	$0,%ebp
1205	movl	%ebx,12(%edi)
1206	movl	4(%esi),%edx
1207	# saved r[3]
1208	# ############### Calculate word 4
1209	xorl	%ebx,%ebx
1210	# sqr a[3]*a[1]
1211	mull	%edx
1212	addl	%eax,%eax
1213	adcl	%edx,%edx
1214	adcl	$0,%ebx
1215	addl	%eax,%ecx
1216	adcl	%edx,%ebp
1217	movl	8(%esi),%eax
1218	adcl	$0,%ebx
1219	# sqr a[2]*a[2]
1220	mull	%eax
1221	addl	%eax,%ecx
1222	adcl	%edx,%ebp
1223	movl	8(%esi),%edx
1224	adcl	$0,%ebx
1225	movl	%ecx,16(%edi)
1226	movl	12(%esi),%eax
1227	# saved r[4]
1228	# ############### Calculate word 5
1229	xorl	%ecx,%ecx
1230	# sqr a[3]*a[2]
1231	mull	%edx
1232	addl	%eax,%eax
1233	adcl	%edx,%edx
1234	adcl	$0,%ecx
1235	addl	%eax,%ebp
1236	adcl	%edx,%ebx
1237	movl	12(%esi),%eax
1238	adcl	$0,%ecx
1239	movl	%ebp,20(%edi)
1240	# saved r[5]
1241	# ############### Calculate word 6
1242	xorl	%ebp,%ebp
1243	# sqr a[3]*a[3]
1244	mull	%eax
1245	addl	%eax,%ebx
1246	adcl	%edx,%ecx
1247	adcl	$0,%ebp
1248	movl	%ebx,24(%edi)
1249	# saved r[6]
1250	movl	%ecx,28(%edi)
1251	popl	%ebx
1252	popl	%ebp
1253	popl	%edi
1254	popl	%esi
1255	ret
1256#endif  // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__APPLE__)
1257