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