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