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