]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - secure/lib/libcrypto/i386/bn-586.S
- Make libcrypto.so position independent on i386.
[FreeBSD/stable/10.git] / secure / lib / libcrypto / i386 / bn-586.S
1 # $FreeBSD$
2 # Do not modify. This file is auto-generated from bn-586.pl.
3 #ifdef PIC
4 .file   "bn-586.S"
5 .text
6 .globl  bn_mul_add_words
7 .type   bn_mul_add_words,@function
8 .align  16
9 bn_mul_add_words:
10 .L_bn_mul_add_words_begin:
11         call    .L000PIC_me_up
12 .L000PIC_me_up:
13         popl    %eax
14         leal    _GLOBAL_OFFSET_TABLE_+[.-.L000PIC_me_up](%eax),%eax
15         movl    OPENSSL_ia32cap_P@GOT(%eax),%eax
16         btl     $26,(%eax)
17         jnc     .L001maw_non_sse2
18         movl    4(%esp),%eax
19         movl    8(%esp),%edx
20         movl    12(%esp),%ecx
21         movd    16(%esp),%mm0
22         pxor    %mm1,%mm1
23         jmp     .L002maw_sse2_entry
24 .align  16
25 .L003maw_sse2_unrolled:
26         movd    (%eax),%mm3
27         paddq   %mm3,%mm1
28         movd    (%edx),%mm2
29         pmuludq %mm0,%mm2
30         movd    4(%edx),%mm4
31         pmuludq %mm0,%mm4
32         movd    8(%edx),%mm6
33         pmuludq %mm0,%mm6
34         movd    12(%edx),%mm7
35         pmuludq %mm0,%mm7
36         paddq   %mm2,%mm1
37         movd    4(%eax),%mm3
38         paddq   %mm4,%mm3
39         movd    8(%eax),%mm5
40         paddq   %mm6,%mm5
41         movd    12(%eax),%mm4
42         paddq   %mm4,%mm7
43         movd    %mm1,(%eax)
44         movd    16(%edx),%mm2
45         pmuludq %mm0,%mm2
46         psrlq   $32,%mm1
47         movd    20(%edx),%mm4
48         pmuludq %mm0,%mm4
49         paddq   %mm3,%mm1
50         movd    24(%edx),%mm6
51         pmuludq %mm0,%mm6
52         movd    %mm1,4(%eax)
53         psrlq   $32,%mm1
54         movd    28(%edx),%mm3
55         addl    $32,%edx
56         pmuludq %mm0,%mm3
57         paddq   %mm5,%mm1
58         movd    16(%eax),%mm5
59         paddq   %mm5,%mm2
60         movd    %mm1,8(%eax)
61         psrlq   $32,%mm1
62         paddq   %mm7,%mm1
63         movd    20(%eax),%mm5
64         paddq   %mm5,%mm4
65         movd    %mm1,12(%eax)
66         psrlq   $32,%mm1
67         paddq   %mm2,%mm1
68         movd    24(%eax),%mm5
69         paddq   %mm5,%mm6
70         movd    %mm1,16(%eax)
71         psrlq   $32,%mm1
72         paddq   %mm4,%mm1
73         movd    28(%eax),%mm5
74         paddq   %mm5,%mm3
75         movd    %mm1,20(%eax)
76         psrlq   $32,%mm1
77         paddq   %mm6,%mm1
78         movd    %mm1,24(%eax)
79         psrlq   $32,%mm1
80         paddq   %mm3,%mm1
81         movd    %mm1,28(%eax)
82         leal    32(%eax),%eax
83         psrlq   $32,%mm1
84         subl    $8,%ecx
85         jz      .L004maw_sse2_exit
86 .L002maw_sse2_entry:
87         testl   $4294967288,%ecx
88         jnz     .L003maw_sse2_unrolled
89 .align  4
90 .L005maw_sse2_loop:
91         movd    (%edx),%mm2
92         movd    (%eax),%mm3
93         pmuludq %mm0,%mm2
94         leal    4(%edx),%edx
95         paddq   %mm3,%mm1
96         paddq   %mm2,%mm1
97         movd    %mm1,(%eax)
98         subl    $1,%ecx
99         psrlq   $32,%mm1
100         leal    4(%eax),%eax
101         jnz     .L005maw_sse2_loop
102 .L004maw_sse2_exit:
103         movd    %mm1,%eax
104         emms
105         ret
106 .align  16
107 .L001maw_non_sse2:
108         pushl   %ebp
109         pushl   %ebx
110         pushl   %esi
111         pushl   %edi
112
113         xorl    %esi,%esi
114         movl    20(%esp),%edi
115         movl    28(%esp),%ecx
116         movl    24(%esp),%ebx
117         andl    $4294967288,%ecx
118         movl    32(%esp),%ebp
119         pushl   %ecx
120         jz      .L006maw_finish
121 .align  16
122 .L007maw_loop:
123
124         movl    (%ebx),%eax
125         mull    %ebp
126         addl    %esi,%eax
127         adcl    $0,%edx
128         addl    (%edi),%eax
129         adcl    $0,%edx
130         movl    %eax,(%edi)
131         movl    %edx,%esi
132
133         movl    4(%ebx),%eax
134         mull    %ebp
135         addl    %esi,%eax
136         adcl    $0,%edx
137         addl    4(%edi),%eax
138         adcl    $0,%edx
139         movl    %eax,4(%edi)
140         movl    %edx,%esi
141
142         movl    8(%ebx),%eax
143         mull    %ebp
144         addl    %esi,%eax
145         adcl    $0,%edx
146         addl    8(%edi),%eax
147         adcl    $0,%edx
148         movl    %eax,8(%edi)
149         movl    %edx,%esi
150
151         movl    12(%ebx),%eax
152         mull    %ebp
153         addl    %esi,%eax
154         adcl    $0,%edx
155         addl    12(%edi),%eax
156         adcl    $0,%edx
157         movl    %eax,12(%edi)
158         movl    %edx,%esi
159
160         movl    16(%ebx),%eax
161         mull    %ebp
162         addl    %esi,%eax
163         adcl    $0,%edx
164         addl    16(%edi),%eax
165         adcl    $0,%edx
166         movl    %eax,16(%edi)
167         movl    %edx,%esi
168
169         movl    20(%ebx),%eax
170         mull    %ebp
171         addl    %esi,%eax
172         adcl    $0,%edx
173         addl    20(%edi),%eax
174         adcl    $0,%edx
175         movl    %eax,20(%edi)
176         movl    %edx,%esi
177
178         movl    24(%ebx),%eax
179         mull    %ebp
180         addl    %esi,%eax
181         adcl    $0,%edx
182         addl    24(%edi),%eax
183         adcl    $0,%edx
184         movl    %eax,24(%edi)
185         movl    %edx,%esi
186
187         movl    28(%ebx),%eax
188         mull    %ebp
189         addl    %esi,%eax
190         adcl    $0,%edx
191         addl    28(%edi),%eax
192         adcl    $0,%edx
193         movl    %eax,28(%edi)
194         movl    %edx,%esi
195
196         subl    $8,%ecx
197         leal    32(%ebx),%ebx
198         leal    32(%edi),%edi
199         jnz     .L007maw_loop
200 .L006maw_finish:
201         movl    32(%esp),%ecx
202         andl    $7,%ecx
203         jnz     .L008maw_finish2
204         jmp     .L009maw_end
205 .L008maw_finish2:
206
207         movl    (%ebx),%eax
208         mull    %ebp
209         addl    %esi,%eax
210         adcl    $0,%edx
211         addl    (%edi),%eax
212         adcl    $0,%edx
213         decl    %ecx
214         movl    %eax,(%edi)
215         movl    %edx,%esi
216         jz      .L009maw_end
217
218         movl    4(%ebx),%eax
219         mull    %ebp
220         addl    %esi,%eax
221         adcl    $0,%edx
222         addl    4(%edi),%eax
223         adcl    $0,%edx
224         decl    %ecx
225         movl    %eax,4(%edi)
226         movl    %edx,%esi
227         jz      .L009maw_end
228
229         movl    8(%ebx),%eax
230         mull    %ebp
231         addl    %esi,%eax
232         adcl    $0,%edx
233         addl    8(%edi),%eax
234         adcl    $0,%edx
235         decl    %ecx
236         movl    %eax,8(%edi)
237         movl    %edx,%esi
238         jz      .L009maw_end
239
240         movl    12(%ebx),%eax
241         mull    %ebp
242         addl    %esi,%eax
243         adcl    $0,%edx
244         addl    12(%edi),%eax
245         adcl    $0,%edx
246         decl    %ecx
247         movl    %eax,12(%edi)
248         movl    %edx,%esi
249         jz      .L009maw_end
250
251         movl    16(%ebx),%eax
252         mull    %ebp
253         addl    %esi,%eax
254         adcl    $0,%edx
255         addl    16(%edi),%eax
256         adcl    $0,%edx
257         decl    %ecx
258         movl    %eax,16(%edi)
259         movl    %edx,%esi
260         jz      .L009maw_end
261
262         movl    20(%ebx),%eax
263         mull    %ebp
264         addl    %esi,%eax
265         adcl    $0,%edx
266         addl    20(%edi),%eax
267         adcl    $0,%edx
268         decl    %ecx
269         movl    %eax,20(%edi)
270         movl    %edx,%esi
271         jz      .L009maw_end
272
273         movl    24(%ebx),%eax
274         mull    %ebp
275         addl    %esi,%eax
276         adcl    $0,%edx
277         addl    24(%edi),%eax
278         adcl    $0,%edx
279         movl    %eax,24(%edi)
280         movl    %edx,%esi
281 .L009maw_end:
282         movl    %esi,%eax
283         popl    %ecx
284         popl    %edi
285         popl    %esi
286         popl    %ebx
287         popl    %ebp
288         ret
289 .size   bn_mul_add_words,.-.L_bn_mul_add_words_begin
290 .globl  bn_mul_words
291 .type   bn_mul_words,@function
292 .align  16
293 bn_mul_words:
294 .L_bn_mul_words_begin:
295         call    .L010PIC_me_up
296 .L010PIC_me_up:
297         popl    %eax
298         leal    _GLOBAL_OFFSET_TABLE_+[.-.L010PIC_me_up](%eax),%eax
299         movl    OPENSSL_ia32cap_P@GOT(%eax),%eax
300         btl     $26,(%eax)
301         jnc     .L011mw_non_sse2
302         movl    4(%esp),%eax
303         movl    8(%esp),%edx
304         movl    12(%esp),%ecx
305         movd    16(%esp),%mm0
306         pxor    %mm1,%mm1
307 .align  16
308 .L012mw_sse2_loop:
309         movd    (%edx),%mm2
310         pmuludq %mm0,%mm2
311         leal    4(%edx),%edx
312         paddq   %mm2,%mm1
313         movd    %mm1,(%eax)
314         subl    $1,%ecx
315         psrlq   $32,%mm1
316         leal    4(%eax),%eax
317         jnz     .L012mw_sse2_loop
318         movd    %mm1,%eax
319         emms
320         ret
321 .align  16
322 .L011mw_non_sse2:
323         pushl   %ebp
324         pushl   %ebx
325         pushl   %esi
326         pushl   %edi
327
328         xorl    %esi,%esi
329         movl    20(%esp),%edi
330         movl    24(%esp),%ebx
331         movl    28(%esp),%ebp
332         movl    32(%esp),%ecx
333         andl    $4294967288,%ebp
334         jz      .L013mw_finish
335 .L014mw_loop:
336
337         movl    (%ebx),%eax
338         mull    %ecx
339         addl    %esi,%eax
340         adcl    $0,%edx
341         movl    %eax,(%edi)
342         movl    %edx,%esi
343
344         movl    4(%ebx),%eax
345         mull    %ecx
346         addl    %esi,%eax
347         adcl    $0,%edx
348         movl    %eax,4(%edi)
349         movl    %edx,%esi
350
351         movl    8(%ebx),%eax
352         mull    %ecx
353         addl    %esi,%eax
354         adcl    $0,%edx
355         movl    %eax,8(%edi)
356         movl    %edx,%esi
357
358         movl    12(%ebx),%eax
359         mull    %ecx
360         addl    %esi,%eax
361         adcl    $0,%edx
362         movl    %eax,12(%edi)
363         movl    %edx,%esi
364
365         movl    16(%ebx),%eax
366         mull    %ecx
367         addl    %esi,%eax
368         adcl    $0,%edx
369         movl    %eax,16(%edi)
370         movl    %edx,%esi
371
372         movl    20(%ebx),%eax
373         mull    %ecx
374         addl    %esi,%eax
375         adcl    $0,%edx
376         movl    %eax,20(%edi)
377         movl    %edx,%esi
378
379         movl    24(%ebx),%eax
380         mull    %ecx
381         addl    %esi,%eax
382         adcl    $0,%edx
383         movl    %eax,24(%edi)
384         movl    %edx,%esi
385
386         movl    28(%ebx),%eax
387         mull    %ecx
388         addl    %esi,%eax
389         adcl    $0,%edx
390         movl    %eax,28(%edi)
391         movl    %edx,%esi
392
393         addl    $32,%ebx
394         addl    $32,%edi
395         subl    $8,%ebp
396         jz      .L013mw_finish
397         jmp     .L014mw_loop
398 .L013mw_finish:
399         movl    28(%esp),%ebp
400         andl    $7,%ebp
401         jnz     .L015mw_finish2
402         jmp     .L016mw_end
403 .L015mw_finish2:
404
405         movl    (%ebx),%eax
406         mull    %ecx
407         addl    %esi,%eax
408         adcl    $0,%edx
409         movl    %eax,(%edi)
410         movl    %edx,%esi
411         decl    %ebp
412         jz      .L016mw_end
413
414         movl    4(%ebx),%eax
415         mull    %ecx
416         addl    %esi,%eax
417         adcl    $0,%edx
418         movl    %eax,4(%edi)
419         movl    %edx,%esi
420         decl    %ebp
421         jz      .L016mw_end
422
423         movl    8(%ebx),%eax
424         mull    %ecx
425         addl    %esi,%eax
426         adcl    $0,%edx
427         movl    %eax,8(%edi)
428         movl    %edx,%esi
429         decl    %ebp
430         jz      .L016mw_end
431
432         movl    12(%ebx),%eax
433         mull    %ecx
434         addl    %esi,%eax
435         adcl    $0,%edx
436         movl    %eax,12(%edi)
437         movl    %edx,%esi
438         decl    %ebp
439         jz      .L016mw_end
440
441         movl    16(%ebx),%eax
442         mull    %ecx
443         addl    %esi,%eax
444         adcl    $0,%edx
445         movl    %eax,16(%edi)
446         movl    %edx,%esi
447         decl    %ebp
448         jz      .L016mw_end
449
450         movl    20(%ebx),%eax
451         mull    %ecx
452         addl    %esi,%eax
453         adcl    $0,%edx
454         movl    %eax,20(%edi)
455         movl    %edx,%esi
456         decl    %ebp
457         jz      .L016mw_end
458
459         movl    24(%ebx),%eax
460         mull    %ecx
461         addl    %esi,%eax
462         adcl    $0,%edx
463         movl    %eax,24(%edi)
464         movl    %edx,%esi
465 .L016mw_end:
466         movl    %esi,%eax
467         popl    %edi
468         popl    %esi
469         popl    %ebx
470         popl    %ebp
471         ret
472 .size   bn_mul_words,.-.L_bn_mul_words_begin
473 .globl  bn_sqr_words
474 .type   bn_sqr_words,@function
475 .align  16
476 bn_sqr_words:
477 .L_bn_sqr_words_begin:
478         call    .L017PIC_me_up
479 .L017PIC_me_up:
480         popl    %eax
481         leal    _GLOBAL_OFFSET_TABLE_+[.-.L017PIC_me_up](%eax),%eax
482         movl    OPENSSL_ia32cap_P@GOT(%eax),%eax
483         btl     $26,(%eax)
484         jnc     .L018sqr_non_sse2
485         movl    4(%esp),%eax
486         movl    8(%esp),%edx
487         movl    12(%esp),%ecx
488 .align  16
489 .L019sqr_sse2_loop:
490         movd    (%edx),%mm0
491         pmuludq %mm0,%mm0
492         leal    4(%edx),%edx
493         movq    %mm0,(%eax)
494         subl    $1,%ecx
495         leal    8(%eax),%eax
496         jnz     .L019sqr_sse2_loop
497         emms
498         ret
499 .align  16
500 .L018sqr_non_sse2:
501         pushl   %ebp
502         pushl   %ebx
503         pushl   %esi
504         pushl   %edi
505
506         movl    20(%esp),%esi
507         movl    24(%esp),%edi
508         movl    28(%esp),%ebx
509         andl    $4294967288,%ebx
510         jz      .L020sw_finish
511 .L021sw_loop:
512
513         movl    (%edi),%eax
514         mull    %eax
515         movl    %eax,(%esi)
516         movl    %edx,4(%esi)
517
518         movl    4(%edi),%eax
519         mull    %eax
520         movl    %eax,8(%esi)
521         movl    %edx,12(%esi)
522
523         movl    8(%edi),%eax
524         mull    %eax
525         movl    %eax,16(%esi)
526         movl    %edx,20(%esi)
527
528         movl    12(%edi),%eax
529         mull    %eax
530         movl    %eax,24(%esi)
531         movl    %edx,28(%esi)
532
533         movl    16(%edi),%eax
534         mull    %eax
535         movl    %eax,32(%esi)
536         movl    %edx,36(%esi)
537
538         movl    20(%edi),%eax
539         mull    %eax
540         movl    %eax,40(%esi)
541         movl    %edx,44(%esi)
542
543         movl    24(%edi),%eax
544         mull    %eax
545         movl    %eax,48(%esi)
546         movl    %edx,52(%esi)
547
548         movl    28(%edi),%eax
549         mull    %eax
550         movl    %eax,56(%esi)
551         movl    %edx,60(%esi)
552
553         addl    $32,%edi
554         addl    $64,%esi
555         subl    $8,%ebx
556         jnz     .L021sw_loop
557 .L020sw_finish:
558         movl    28(%esp),%ebx
559         andl    $7,%ebx
560         jz      .L022sw_end
561
562         movl    (%edi),%eax
563         mull    %eax
564         movl    %eax,(%esi)
565         decl    %ebx
566         movl    %edx,4(%esi)
567         jz      .L022sw_end
568
569         movl    4(%edi),%eax
570         mull    %eax
571         movl    %eax,8(%esi)
572         decl    %ebx
573         movl    %edx,12(%esi)
574         jz      .L022sw_end
575
576         movl    8(%edi),%eax
577         mull    %eax
578         movl    %eax,16(%esi)
579         decl    %ebx
580         movl    %edx,20(%esi)
581         jz      .L022sw_end
582
583         movl    12(%edi),%eax
584         mull    %eax
585         movl    %eax,24(%esi)
586         decl    %ebx
587         movl    %edx,28(%esi)
588         jz      .L022sw_end
589
590         movl    16(%edi),%eax
591         mull    %eax
592         movl    %eax,32(%esi)
593         decl    %ebx
594         movl    %edx,36(%esi)
595         jz      .L022sw_end
596
597         movl    20(%edi),%eax
598         mull    %eax
599         movl    %eax,40(%esi)
600         decl    %ebx
601         movl    %edx,44(%esi)
602         jz      .L022sw_end
603
604         movl    24(%edi),%eax
605         mull    %eax
606         movl    %eax,48(%esi)
607         movl    %edx,52(%esi)
608 .L022sw_end:
609         popl    %edi
610         popl    %esi
611         popl    %ebx
612         popl    %ebp
613         ret
614 .size   bn_sqr_words,.-.L_bn_sqr_words_begin
615 .globl  bn_div_words
616 .type   bn_div_words,@function
617 .align  16
618 bn_div_words:
619 .L_bn_div_words_begin:
620         movl    4(%esp),%edx
621         movl    8(%esp),%eax
622         movl    12(%esp),%ecx
623         divl    %ecx
624         ret
625 .size   bn_div_words,.-.L_bn_div_words_begin
626 .globl  bn_add_words
627 .type   bn_add_words,@function
628 .align  16
629 bn_add_words:
630 .L_bn_add_words_begin:
631         pushl   %ebp
632         pushl   %ebx
633         pushl   %esi
634         pushl   %edi
635
636         movl    20(%esp),%ebx
637         movl    24(%esp),%esi
638         movl    28(%esp),%edi
639         movl    32(%esp),%ebp
640         xorl    %eax,%eax
641         andl    $4294967288,%ebp
642         jz      .L023aw_finish
643 .L024aw_loop:
644
645         movl    (%esi),%ecx
646         movl    (%edi),%edx
647         addl    %eax,%ecx
648         movl    $0,%eax
649         adcl    %eax,%eax
650         addl    %edx,%ecx
651         adcl    $0,%eax
652         movl    %ecx,(%ebx)
653
654         movl    4(%esi),%ecx
655         movl    4(%edi),%edx
656         addl    %eax,%ecx
657         movl    $0,%eax
658         adcl    %eax,%eax
659         addl    %edx,%ecx
660         adcl    $0,%eax
661         movl    %ecx,4(%ebx)
662
663         movl    8(%esi),%ecx
664         movl    8(%edi),%edx
665         addl    %eax,%ecx
666         movl    $0,%eax
667         adcl    %eax,%eax
668         addl    %edx,%ecx
669         adcl    $0,%eax
670         movl    %ecx,8(%ebx)
671
672         movl    12(%esi),%ecx
673         movl    12(%edi),%edx
674         addl    %eax,%ecx
675         movl    $0,%eax
676         adcl    %eax,%eax
677         addl    %edx,%ecx
678         adcl    $0,%eax
679         movl    %ecx,12(%ebx)
680
681         movl    16(%esi),%ecx
682         movl    16(%edi),%edx
683         addl    %eax,%ecx
684         movl    $0,%eax
685         adcl    %eax,%eax
686         addl    %edx,%ecx
687         adcl    $0,%eax
688         movl    %ecx,16(%ebx)
689
690         movl    20(%esi),%ecx
691         movl    20(%edi),%edx
692         addl    %eax,%ecx
693         movl    $0,%eax
694         adcl    %eax,%eax
695         addl    %edx,%ecx
696         adcl    $0,%eax
697         movl    %ecx,20(%ebx)
698
699         movl    24(%esi),%ecx
700         movl    24(%edi),%edx
701         addl    %eax,%ecx
702         movl    $0,%eax
703         adcl    %eax,%eax
704         addl    %edx,%ecx
705         adcl    $0,%eax
706         movl    %ecx,24(%ebx)
707
708         movl    28(%esi),%ecx
709         movl    28(%edi),%edx
710         addl    %eax,%ecx
711         movl    $0,%eax
712         adcl    %eax,%eax
713         addl    %edx,%ecx
714         adcl    $0,%eax
715         movl    %ecx,28(%ebx)
716
717         addl    $32,%esi
718         addl    $32,%edi
719         addl    $32,%ebx
720         subl    $8,%ebp
721         jnz     .L024aw_loop
722 .L023aw_finish:
723         movl    32(%esp),%ebp
724         andl    $7,%ebp
725         jz      .L025aw_end
726
727         movl    (%esi),%ecx
728         movl    (%edi),%edx
729         addl    %eax,%ecx
730         movl    $0,%eax
731         adcl    %eax,%eax
732         addl    %edx,%ecx
733         adcl    $0,%eax
734         decl    %ebp
735         movl    %ecx,(%ebx)
736         jz      .L025aw_end
737
738         movl    4(%esi),%ecx
739         movl    4(%edi),%edx
740         addl    %eax,%ecx
741         movl    $0,%eax
742         adcl    %eax,%eax
743         addl    %edx,%ecx
744         adcl    $0,%eax
745         decl    %ebp
746         movl    %ecx,4(%ebx)
747         jz      .L025aw_end
748
749         movl    8(%esi),%ecx
750         movl    8(%edi),%edx
751         addl    %eax,%ecx
752         movl    $0,%eax
753         adcl    %eax,%eax
754         addl    %edx,%ecx
755         adcl    $0,%eax
756         decl    %ebp
757         movl    %ecx,8(%ebx)
758         jz      .L025aw_end
759
760         movl    12(%esi),%ecx
761         movl    12(%edi),%edx
762         addl    %eax,%ecx
763         movl    $0,%eax
764         adcl    %eax,%eax
765         addl    %edx,%ecx
766         adcl    $0,%eax
767         decl    %ebp
768         movl    %ecx,12(%ebx)
769         jz      .L025aw_end
770
771         movl    16(%esi),%ecx
772         movl    16(%edi),%edx
773         addl    %eax,%ecx
774         movl    $0,%eax
775         adcl    %eax,%eax
776         addl    %edx,%ecx
777         adcl    $0,%eax
778         decl    %ebp
779         movl    %ecx,16(%ebx)
780         jz      .L025aw_end
781
782         movl    20(%esi),%ecx
783         movl    20(%edi),%edx
784         addl    %eax,%ecx
785         movl    $0,%eax
786         adcl    %eax,%eax
787         addl    %edx,%ecx
788         adcl    $0,%eax
789         decl    %ebp
790         movl    %ecx,20(%ebx)
791         jz      .L025aw_end
792
793         movl    24(%esi),%ecx
794         movl    24(%edi),%edx
795         addl    %eax,%ecx
796         movl    $0,%eax
797         adcl    %eax,%eax
798         addl    %edx,%ecx
799         adcl    $0,%eax
800         movl    %ecx,24(%ebx)
801 .L025aw_end:
802         popl    %edi
803         popl    %esi
804         popl    %ebx
805         popl    %ebp
806         ret
807 .size   bn_add_words,.-.L_bn_add_words_begin
808 .globl  bn_sub_words
809 .type   bn_sub_words,@function
810 .align  16
811 bn_sub_words:
812 .L_bn_sub_words_begin:
813         pushl   %ebp
814         pushl   %ebx
815         pushl   %esi
816         pushl   %edi
817
818         movl    20(%esp),%ebx
819         movl    24(%esp),%esi
820         movl    28(%esp),%edi
821         movl    32(%esp),%ebp
822         xorl    %eax,%eax
823         andl    $4294967288,%ebp
824         jz      .L026aw_finish
825 .L027aw_loop:
826
827         movl    (%esi),%ecx
828         movl    (%edi),%edx
829         subl    %eax,%ecx
830         movl    $0,%eax
831         adcl    %eax,%eax
832         subl    %edx,%ecx
833         adcl    $0,%eax
834         movl    %ecx,(%ebx)
835
836         movl    4(%esi),%ecx
837         movl    4(%edi),%edx
838         subl    %eax,%ecx
839         movl    $0,%eax
840         adcl    %eax,%eax
841         subl    %edx,%ecx
842         adcl    $0,%eax
843         movl    %ecx,4(%ebx)
844
845         movl    8(%esi),%ecx
846         movl    8(%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,8(%ebx)
853
854         movl    12(%esi),%ecx
855         movl    12(%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,12(%ebx)
862
863         movl    16(%esi),%ecx
864         movl    16(%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,16(%ebx)
871
872         movl    20(%esi),%ecx
873         movl    20(%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,20(%ebx)
880
881         movl    24(%esi),%ecx
882         movl    24(%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,24(%ebx)
889
890         movl    28(%esi),%ecx
891         movl    28(%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,28(%ebx)
898
899         addl    $32,%esi
900         addl    $32,%edi
901         addl    $32,%ebx
902         subl    $8,%ebp
903         jnz     .L027aw_loop
904 .L026aw_finish:
905         movl    32(%esp),%ebp
906         andl    $7,%ebp
907         jz      .L028aw_end
908
909         movl    (%esi),%ecx
910         movl    (%edi),%edx
911         subl    %eax,%ecx
912         movl    $0,%eax
913         adcl    %eax,%eax
914         subl    %edx,%ecx
915         adcl    $0,%eax
916         decl    %ebp
917         movl    %ecx,(%ebx)
918         jz      .L028aw_end
919
920         movl    4(%esi),%ecx
921         movl    4(%edi),%edx
922         subl    %eax,%ecx
923         movl    $0,%eax
924         adcl    %eax,%eax
925         subl    %edx,%ecx
926         adcl    $0,%eax
927         decl    %ebp
928         movl    %ecx,4(%ebx)
929         jz      .L028aw_end
930
931         movl    8(%esi),%ecx
932         movl    8(%edi),%edx
933         subl    %eax,%ecx
934         movl    $0,%eax
935         adcl    %eax,%eax
936         subl    %edx,%ecx
937         adcl    $0,%eax
938         decl    %ebp
939         movl    %ecx,8(%ebx)
940         jz      .L028aw_end
941
942         movl    12(%esi),%ecx
943         movl    12(%edi),%edx
944         subl    %eax,%ecx
945         movl    $0,%eax
946         adcl    %eax,%eax
947         subl    %edx,%ecx
948         adcl    $0,%eax
949         decl    %ebp
950         movl    %ecx,12(%ebx)
951         jz      .L028aw_end
952
953         movl    16(%esi),%ecx
954         movl    16(%edi),%edx
955         subl    %eax,%ecx
956         movl    $0,%eax
957         adcl    %eax,%eax
958         subl    %edx,%ecx
959         adcl    $0,%eax
960         decl    %ebp
961         movl    %ecx,16(%ebx)
962         jz      .L028aw_end
963
964         movl    20(%esi),%ecx
965         movl    20(%edi),%edx
966         subl    %eax,%ecx
967         movl    $0,%eax
968         adcl    %eax,%eax
969         subl    %edx,%ecx
970         adcl    $0,%eax
971         decl    %ebp
972         movl    %ecx,20(%ebx)
973         jz      .L028aw_end
974
975         movl    24(%esi),%ecx
976         movl    24(%edi),%edx
977         subl    %eax,%ecx
978         movl    $0,%eax
979         adcl    %eax,%eax
980         subl    %edx,%ecx
981         adcl    $0,%eax
982         movl    %ecx,24(%ebx)
983 .L028aw_end:
984         popl    %edi
985         popl    %esi
986         popl    %ebx
987         popl    %ebp
988         ret
989 .size   bn_sub_words,.-.L_bn_sub_words_begin
990 .globl  bn_sub_part_words
991 .type   bn_sub_part_words,@function
992 .align  16
993 bn_sub_part_words:
994 .L_bn_sub_part_words_begin:
995         pushl   %ebp
996         pushl   %ebx
997         pushl   %esi
998         pushl   %edi
999
1000         movl    20(%esp),%ebx
1001         movl    24(%esp),%esi
1002         movl    28(%esp),%edi
1003         movl    32(%esp),%ebp
1004         xorl    %eax,%eax
1005         andl    $4294967288,%ebp
1006         jz      .L029aw_finish
1007 .L030aw_loop:
1008
1009         movl    (%esi),%ecx
1010         movl    (%edi),%edx
1011         subl    %eax,%ecx
1012         movl    $0,%eax
1013         adcl    %eax,%eax
1014         subl    %edx,%ecx
1015         adcl    $0,%eax
1016         movl    %ecx,(%ebx)
1017
1018         movl    4(%esi),%ecx
1019         movl    4(%edi),%edx
1020         subl    %eax,%ecx
1021         movl    $0,%eax
1022         adcl    %eax,%eax
1023         subl    %edx,%ecx
1024         adcl    $0,%eax
1025         movl    %ecx,4(%ebx)
1026
1027         movl    8(%esi),%ecx
1028         movl    8(%edi),%edx
1029         subl    %eax,%ecx
1030         movl    $0,%eax
1031         adcl    %eax,%eax
1032         subl    %edx,%ecx
1033         adcl    $0,%eax
1034         movl    %ecx,8(%ebx)
1035
1036         movl    12(%esi),%ecx
1037         movl    12(%edi),%edx
1038         subl    %eax,%ecx
1039         movl    $0,%eax
1040         adcl    %eax,%eax
1041         subl    %edx,%ecx
1042         adcl    $0,%eax
1043         movl    %ecx,12(%ebx)
1044
1045         movl    16(%esi),%ecx
1046         movl    16(%edi),%edx
1047         subl    %eax,%ecx
1048         movl    $0,%eax
1049         adcl    %eax,%eax
1050         subl    %edx,%ecx
1051         adcl    $0,%eax
1052         movl    %ecx,16(%ebx)
1053
1054         movl    20(%esi),%ecx
1055         movl    20(%edi),%edx
1056         subl    %eax,%ecx
1057         movl    $0,%eax
1058         adcl    %eax,%eax
1059         subl    %edx,%ecx
1060         adcl    $0,%eax
1061         movl    %ecx,20(%ebx)
1062
1063         movl    24(%esi),%ecx
1064         movl    24(%edi),%edx
1065         subl    %eax,%ecx
1066         movl    $0,%eax
1067         adcl    %eax,%eax
1068         subl    %edx,%ecx
1069         adcl    $0,%eax
1070         movl    %ecx,24(%ebx)
1071
1072         movl    28(%esi),%ecx
1073         movl    28(%edi),%edx
1074         subl    %eax,%ecx
1075         movl    $0,%eax
1076         adcl    %eax,%eax
1077         subl    %edx,%ecx
1078         adcl    $0,%eax
1079         movl    %ecx,28(%ebx)
1080
1081         addl    $32,%esi
1082         addl    $32,%edi
1083         addl    $32,%ebx
1084         subl    $8,%ebp
1085         jnz     .L030aw_loop
1086 .L029aw_finish:
1087         movl    32(%esp),%ebp
1088         andl    $7,%ebp
1089         jz      .L031aw_end
1090
1091         movl    (%esi),%ecx
1092         movl    (%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,(%ebx)
1099         addl    $4,%esi
1100         addl    $4,%edi
1101         addl    $4,%ebx
1102         decl    %ebp
1103         jz      .L031aw_end
1104
1105         movl    (%esi),%ecx
1106         movl    (%edi),%edx
1107         subl    %eax,%ecx
1108         movl    $0,%eax
1109         adcl    %eax,%eax
1110         subl    %edx,%ecx
1111         adcl    $0,%eax
1112         movl    %ecx,(%ebx)
1113         addl    $4,%esi
1114         addl    $4,%edi
1115         addl    $4,%ebx
1116         decl    %ebp
1117         jz      .L031aw_end
1118
1119         movl    (%esi),%ecx
1120         movl    (%edi),%edx
1121         subl    %eax,%ecx
1122         movl    $0,%eax
1123         adcl    %eax,%eax
1124         subl    %edx,%ecx
1125         adcl    $0,%eax
1126         movl    %ecx,(%ebx)
1127         addl    $4,%esi
1128         addl    $4,%edi
1129         addl    $4,%ebx
1130         decl    %ebp
1131         jz      .L031aw_end
1132
1133         movl    (%esi),%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         movl    %ecx,(%ebx)
1141         addl    $4,%esi
1142         addl    $4,%edi
1143         addl    $4,%ebx
1144         decl    %ebp
1145         jz      .L031aw_end
1146
1147         movl    (%esi),%ecx
1148         movl    (%edi),%edx
1149         subl    %eax,%ecx
1150         movl    $0,%eax
1151         adcl    %eax,%eax
1152         subl    %edx,%ecx
1153         adcl    $0,%eax
1154         movl    %ecx,(%ebx)
1155         addl    $4,%esi
1156         addl    $4,%edi
1157         addl    $4,%ebx
1158         decl    %ebp
1159         jz      .L031aw_end
1160
1161         movl    (%esi),%ecx
1162         movl    (%edi),%edx
1163         subl    %eax,%ecx
1164         movl    $0,%eax
1165         adcl    %eax,%eax
1166         subl    %edx,%ecx
1167         adcl    $0,%eax
1168         movl    %ecx,(%ebx)
1169         addl    $4,%esi
1170         addl    $4,%edi
1171         addl    $4,%ebx
1172         decl    %ebp
1173         jz      .L031aw_end
1174
1175         movl    (%esi),%ecx
1176         movl    (%edi),%edx
1177         subl    %eax,%ecx
1178         movl    $0,%eax
1179         adcl    %eax,%eax
1180         subl    %edx,%ecx
1181         adcl    $0,%eax
1182         movl    %ecx,(%ebx)
1183         addl    $4,%esi
1184         addl    $4,%edi
1185         addl    $4,%ebx
1186 .L031aw_end:
1187         cmpl    $0,36(%esp)
1188         je      .L032pw_end
1189         movl    36(%esp),%ebp
1190         cmpl    $0,%ebp
1191         je      .L032pw_end
1192         jge     .L033pw_pos
1193
1194         movl    $0,%edx
1195         subl    %ebp,%edx
1196         movl    %edx,%ebp
1197         andl    $4294967288,%ebp
1198         jz      .L034pw_neg_finish
1199 .L035pw_neg_loop:
1200
1201         movl    $0,%ecx
1202         movl    (%edi),%edx
1203         subl    %eax,%ecx
1204         movl    $0,%eax
1205         adcl    %eax,%eax
1206         subl    %edx,%ecx
1207         adcl    $0,%eax
1208         movl    %ecx,(%ebx)
1209
1210         movl    $0,%ecx
1211         movl    4(%edi),%edx
1212         subl    %eax,%ecx
1213         movl    $0,%eax
1214         adcl    %eax,%eax
1215         subl    %edx,%ecx
1216         adcl    $0,%eax
1217         movl    %ecx,4(%ebx)
1218
1219         movl    $0,%ecx
1220         movl    8(%edi),%edx
1221         subl    %eax,%ecx
1222         movl    $0,%eax
1223         adcl    %eax,%eax
1224         subl    %edx,%ecx
1225         adcl    $0,%eax
1226         movl    %ecx,8(%ebx)
1227
1228         movl    $0,%ecx
1229         movl    12(%edi),%edx
1230         subl    %eax,%ecx
1231         movl    $0,%eax
1232         adcl    %eax,%eax
1233         subl    %edx,%ecx
1234         adcl    $0,%eax
1235         movl    %ecx,12(%ebx)
1236
1237         movl    $0,%ecx
1238         movl    16(%edi),%edx
1239         subl    %eax,%ecx
1240         movl    $0,%eax
1241         adcl    %eax,%eax
1242         subl    %edx,%ecx
1243         adcl    $0,%eax
1244         movl    %ecx,16(%ebx)
1245
1246         movl    $0,%ecx
1247         movl    20(%edi),%edx
1248         subl    %eax,%ecx
1249         movl    $0,%eax
1250         adcl    %eax,%eax
1251         subl    %edx,%ecx
1252         adcl    $0,%eax
1253         movl    %ecx,20(%ebx)
1254
1255         movl    $0,%ecx
1256         movl    24(%edi),%edx
1257         subl    %eax,%ecx
1258         movl    $0,%eax
1259         adcl    %eax,%eax
1260         subl    %edx,%ecx
1261         adcl    $0,%eax
1262         movl    %ecx,24(%ebx)
1263
1264         movl    $0,%ecx
1265         movl    28(%edi),%edx
1266         subl    %eax,%ecx
1267         movl    $0,%eax
1268         adcl    %eax,%eax
1269         subl    %edx,%ecx
1270         adcl    $0,%eax
1271         movl    %ecx,28(%ebx)
1272
1273         addl    $32,%edi
1274         addl    $32,%ebx
1275         subl    $8,%ebp
1276         jnz     .L035pw_neg_loop
1277 .L034pw_neg_finish:
1278         movl    36(%esp),%edx
1279         movl    $0,%ebp
1280         subl    %edx,%ebp
1281         andl    $7,%ebp
1282         jz      .L032pw_end
1283
1284         movl    $0,%ecx
1285         movl    (%edi),%edx
1286         subl    %eax,%ecx
1287         movl    $0,%eax
1288         adcl    %eax,%eax
1289         subl    %edx,%ecx
1290         adcl    $0,%eax
1291         decl    %ebp
1292         movl    %ecx,(%ebx)
1293         jz      .L032pw_end
1294
1295         movl    $0,%ecx
1296         movl    4(%edi),%edx
1297         subl    %eax,%ecx
1298         movl    $0,%eax
1299         adcl    %eax,%eax
1300         subl    %edx,%ecx
1301         adcl    $0,%eax
1302         decl    %ebp
1303         movl    %ecx,4(%ebx)
1304         jz      .L032pw_end
1305
1306         movl    $0,%ecx
1307         movl    8(%edi),%edx
1308         subl    %eax,%ecx
1309         movl    $0,%eax
1310         adcl    %eax,%eax
1311         subl    %edx,%ecx
1312         adcl    $0,%eax
1313         decl    %ebp
1314         movl    %ecx,8(%ebx)
1315         jz      .L032pw_end
1316
1317         movl    $0,%ecx
1318         movl    12(%edi),%edx
1319         subl    %eax,%ecx
1320         movl    $0,%eax
1321         adcl    %eax,%eax
1322         subl    %edx,%ecx
1323         adcl    $0,%eax
1324         decl    %ebp
1325         movl    %ecx,12(%ebx)
1326         jz      .L032pw_end
1327
1328         movl    $0,%ecx
1329         movl    16(%edi),%edx
1330         subl    %eax,%ecx
1331         movl    $0,%eax
1332         adcl    %eax,%eax
1333         subl    %edx,%ecx
1334         adcl    $0,%eax
1335         decl    %ebp
1336         movl    %ecx,16(%ebx)
1337         jz      .L032pw_end
1338
1339         movl    $0,%ecx
1340         movl    20(%edi),%edx
1341         subl    %eax,%ecx
1342         movl    $0,%eax
1343         adcl    %eax,%eax
1344         subl    %edx,%ecx
1345         adcl    $0,%eax
1346         decl    %ebp
1347         movl    %ecx,20(%ebx)
1348         jz      .L032pw_end
1349
1350         movl    $0,%ecx
1351         movl    24(%edi),%edx
1352         subl    %eax,%ecx
1353         movl    $0,%eax
1354         adcl    %eax,%eax
1355         subl    %edx,%ecx
1356         adcl    $0,%eax
1357         movl    %ecx,24(%ebx)
1358         jmp     .L032pw_end
1359 .L033pw_pos:
1360         andl    $4294967288,%ebp
1361         jz      .L036pw_pos_finish
1362 .L037pw_pos_loop:
1363
1364         movl    (%esi),%ecx
1365         subl    %eax,%ecx
1366         movl    %ecx,(%ebx)
1367         jnc     .L038pw_nc0
1368
1369         movl    4(%esi),%ecx
1370         subl    %eax,%ecx
1371         movl    %ecx,4(%ebx)
1372         jnc     .L039pw_nc1
1373
1374         movl    8(%esi),%ecx
1375         subl    %eax,%ecx
1376         movl    %ecx,8(%ebx)
1377         jnc     .L040pw_nc2
1378
1379         movl    12(%esi),%ecx
1380         subl    %eax,%ecx
1381         movl    %ecx,12(%ebx)
1382         jnc     .L041pw_nc3
1383
1384         movl    16(%esi),%ecx
1385         subl    %eax,%ecx
1386         movl    %ecx,16(%ebx)
1387         jnc     .L042pw_nc4
1388
1389         movl    20(%esi),%ecx
1390         subl    %eax,%ecx
1391         movl    %ecx,20(%ebx)
1392         jnc     .L043pw_nc5
1393
1394         movl    24(%esi),%ecx
1395         subl    %eax,%ecx
1396         movl    %ecx,24(%ebx)
1397         jnc     .L044pw_nc6
1398
1399         movl    28(%esi),%ecx
1400         subl    %eax,%ecx
1401         movl    %ecx,28(%ebx)
1402         jnc     .L045pw_nc7
1403
1404         addl    $32,%esi
1405         addl    $32,%ebx
1406         subl    $8,%ebp
1407         jnz     .L037pw_pos_loop
1408 .L036pw_pos_finish:
1409         movl    36(%esp),%ebp
1410         andl    $7,%ebp
1411         jz      .L032pw_end
1412
1413         movl    (%esi),%ecx
1414         subl    %eax,%ecx
1415         movl    %ecx,(%ebx)
1416         jnc     .L046pw_tail_nc0
1417         decl    %ebp
1418         jz      .L032pw_end
1419
1420         movl    4(%esi),%ecx
1421         subl    %eax,%ecx
1422         movl    %ecx,4(%ebx)
1423         jnc     .L047pw_tail_nc1
1424         decl    %ebp
1425         jz      .L032pw_end
1426
1427         movl    8(%esi),%ecx
1428         subl    %eax,%ecx
1429         movl    %ecx,8(%ebx)
1430         jnc     .L048pw_tail_nc2
1431         decl    %ebp
1432         jz      .L032pw_end
1433
1434         movl    12(%esi),%ecx
1435         subl    %eax,%ecx
1436         movl    %ecx,12(%ebx)
1437         jnc     .L049pw_tail_nc3
1438         decl    %ebp
1439         jz      .L032pw_end
1440
1441         movl    16(%esi),%ecx
1442         subl    %eax,%ecx
1443         movl    %ecx,16(%ebx)
1444         jnc     .L050pw_tail_nc4
1445         decl    %ebp
1446         jz      .L032pw_end
1447
1448         movl    20(%esi),%ecx
1449         subl    %eax,%ecx
1450         movl    %ecx,20(%ebx)
1451         jnc     .L051pw_tail_nc5
1452         decl    %ebp
1453         jz      .L032pw_end
1454
1455         movl    24(%esi),%ecx
1456         subl    %eax,%ecx
1457         movl    %ecx,24(%ebx)
1458         jnc     .L052pw_tail_nc6
1459         movl    $1,%eax
1460         jmp     .L032pw_end
1461 .L053pw_nc_loop:
1462         movl    (%esi),%ecx
1463         movl    %ecx,(%ebx)
1464 .L038pw_nc0:
1465         movl    4(%esi),%ecx
1466         movl    %ecx,4(%ebx)
1467 .L039pw_nc1:
1468         movl    8(%esi),%ecx
1469         movl    %ecx,8(%ebx)
1470 .L040pw_nc2:
1471         movl    12(%esi),%ecx
1472         movl    %ecx,12(%ebx)
1473 .L041pw_nc3:
1474         movl    16(%esi),%ecx
1475         movl    %ecx,16(%ebx)
1476 .L042pw_nc4:
1477         movl    20(%esi),%ecx
1478         movl    %ecx,20(%ebx)
1479 .L043pw_nc5:
1480         movl    24(%esi),%ecx
1481         movl    %ecx,24(%ebx)
1482 .L044pw_nc6:
1483         movl    28(%esi),%ecx
1484         movl    %ecx,28(%ebx)
1485 .L045pw_nc7:
1486
1487         addl    $32,%esi
1488         addl    $32,%ebx
1489         subl    $8,%ebp
1490         jnz     .L053pw_nc_loop
1491         movl    36(%esp),%ebp
1492         andl    $7,%ebp
1493         jz      .L054pw_nc_end
1494         movl    (%esi),%ecx
1495         movl    %ecx,(%ebx)
1496 .L046pw_tail_nc0:
1497         decl    %ebp
1498         jz      .L054pw_nc_end
1499         movl    4(%esi),%ecx
1500         movl    %ecx,4(%ebx)
1501 .L047pw_tail_nc1:
1502         decl    %ebp
1503         jz      .L054pw_nc_end
1504         movl    8(%esi),%ecx
1505         movl    %ecx,8(%ebx)
1506 .L048pw_tail_nc2:
1507         decl    %ebp
1508         jz      .L054pw_nc_end
1509         movl    12(%esi),%ecx
1510         movl    %ecx,12(%ebx)
1511 .L049pw_tail_nc3:
1512         decl    %ebp
1513         jz      .L054pw_nc_end
1514         movl    16(%esi),%ecx
1515         movl    %ecx,16(%ebx)
1516 .L050pw_tail_nc4:
1517         decl    %ebp
1518         jz      .L054pw_nc_end
1519         movl    20(%esi),%ecx
1520         movl    %ecx,20(%ebx)
1521 .L051pw_tail_nc5:
1522         decl    %ebp
1523         jz      .L054pw_nc_end
1524         movl    24(%esi),%ecx
1525         movl    %ecx,24(%ebx)
1526 .L052pw_tail_nc6:
1527 .L054pw_nc_end:
1528         movl    $0,%eax
1529 .L032pw_end:
1530         popl    %edi
1531         popl    %esi
1532         popl    %ebx
1533         popl    %ebp
1534         ret
1535 .size   bn_sub_part_words,.-.L_bn_sub_part_words_begin
1536 .comm   OPENSSL_ia32cap_P,8,4
1537 #else
1538 .file   "bn-586.S"
1539 .text
1540 .globl  bn_mul_add_words
1541 .type   bn_mul_add_words,@function
1542 .align  16
1543 bn_mul_add_words:
1544 .L_bn_mul_add_words_begin:
1545         leal    OPENSSL_ia32cap_P,%eax
1546         btl     $26,(%eax)
1547         jnc     .L000maw_non_sse2
1548         movl    4(%esp),%eax
1549         movl    8(%esp),%edx
1550         movl    12(%esp),%ecx
1551         movd    16(%esp),%mm0
1552         pxor    %mm1,%mm1
1553         jmp     .L001maw_sse2_entry
1554 .align  16
1555 .L002maw_sse2_unrolled:
1556         movd    (%eax),%mm3
1557         paddq   %mm3,%mm1
1558         movd    (%edx),%mm2
1559         pmuludq %mm0,%mm2
1560         movd    4(%edx),%mm4
1561         pmuludq %mm0,%mm4
1562         movd    8(%edx),%mm6
1563         pmuludq %mm0,%mm6
1564         movd    12(%edx),%mm7
1565         pmuludq %mm0,%mm7
1566         paddq   %mm2,%mm1
1567         movd    4(%eax),%mm3
1568         paddq   %mm4,%mm3
1569         movd    8(%eax),%mm5
1570         paddq   %mm6,%mm5
1571         movd    12(%eax),%mm4
1572         paddq   %mm4,%mm7
1573         movd    %mm1,(%eax)
1574         movd    16(%edx),%mm2
1575         pmuludq %mm0,%mm2
1576         psrlq   $32,%mm1
1577         movd    20(%edx),%mm4
1578         pmuludq %mm0,%mm4
1579         paddq   %mm3,%mm1
1580         movd    24(%edx),%mm6
1581         pmuludq %mm0,%mm6
1582         movd    %mm1,4(%eax)
1583         psrlq   $32,%mm1
1584         movd    28(%edx),%mm3
1585         addl    $32,%edx
1586         pmuludq %mm0,%mm3
1587         paddq   %mm5,%mm1
1588         movd    16(%eax),%mm5
1589         paddq   %mm5,%mm2
1590         movd    %mm1,8(%eax)
1591         psrlq   $32,%mm1
1592         paddq   %mm7,%mm1
1593         movd    20(%eax),%mm5
1594         paddq   %mm5,%mm4
1595         movd    %mm1,12(%eax)
1596         psrlq   $32,%mm1
1597         paddq   %mm2,%mm1
1598         movd    24(%eax),%mm5
1599         paddq   %mm5,%mm6
1600         movd    %mm1,16(%eax)
1601         psrlq   $32,%mm1
1602         paddq   %mm4,%mm1
1603         movd    28(%eax),%mm5
1604         paddq   %mm5,%mm3
1605         movd    %mm1,20(%eax)
1606         psrlq   $32,%mm1
1607         paddq   %mm6,%mm1
1608         movd    %mm1,24(%eax)
1609         psrlq   $32,%mm1
1610         paddq   %mm3,%mm1
1611         movd    %mm1,28(%eax)
1612         leal    32(%eax),%eax
1613         psrlq   $32,%mm1
1614         subl    $8,%ecx
1615         jz      .L003maw_sse2_exit
1616 .L001maw_sse2_entry:
1617         testl   $4294967288,%ecx
1618         jnz     .L002maw_sse2_unrolled
1619 .align  4
1620 .L004maw_sse2_loop:
1621         movd    (%edx),%mm2
1622         movd    (%eax),%mm3
1623         pmuludq %mm0,%mm2
1624         leal    4(%edx),%edx
1625         paddq   %mm3,%mm1
1626         paddq   %mm2,%mm1
1627         movd    %mm1,(%eax)
1628         subl    $1,%ecx
1629         psrlq   $32,%mm1
1630         leal    4(%eax),%eax
1631         jnz     .L004maw_sse2_loop
1632 .L003maw_sse2_exit:
1633         movd    %mm1,%eax
1634         emms
1635         ret
1636 .align  16
1637 .L000maw_non_sse2:
1638         pushl   %ebp
1639         pushl   %ebx
1640         pushl   %esi
1641         pushl   %edi
1642
1643         xorl    %esi,%esi
1644         movl    20(%esp),%edi
1645         movl    28(%esp),%ecx
1646         movl    24(%esp),%ebx
1647         andl    $4294967288,%ecx
1648         movl    32(%esp),%ebp
1649         pushl   %ecx
1650         jz      .L005maw_finish
1651 .align  16
1652 .L006maw_loop:
1653
1654         movl    (%ebx),%eax
1655         mull    %ebp
1656         addl    %esi,%eax
1657         adcl    $0,%edx
1658         addl    (%edi),%eax
1659         adcl    $0,%edx
1660         movl    %eax,(%edi)
1661         movl    %edx,%esi
1662
1663         movl    4(%ebx),%eax
1664         mull    %ebp
1665         addl    %esi,%eax
1666         adcl    $0,%edx
1667         addl    4(%edi),%eax
1668         adcl    $0,%edx
1669         movl    %eax,4(%edi)
1670         movl    %edx,%esi
1671
1672         movl    8(%ebx),%eax
1673         mull    %ebp
1674         addl    %esi,%eax
1675         adcl    $0,%edx
1676         addl    8(%edi),%eax
1677         adcl    $0,%edx
1678         movl    %eax,8(%edi)
1679         movl    %edx,%esi
1680
1681         movl    12(%ebx),%eax
1682         mull    %ebp
1683         addl    %esi,%eax
1684         adcl    $0,%edx
1685         addl    12(%edi),%eax
1686         adcl    $0,%edx
1687         movl    %eax,12(%edi)
1688         movl    %edx,%esi
1689
1690         movl    16(%ebx),%eax
1691         mull    %ebp
1692         addl    %esi,%eax
1693         adcl    $0,%edx
1694         addl    16(%edi),%eax
1695         adcl    $0,%edx
1696         movl    %eax,16(%edi)
1697         movl    %edx,%esi
1698
1699         movl    20(%ebx),%eax
1700         mull    %ebp
1701         addl    %esi,%eax
1702         adcl    $0,%edx
1703         addl    20(%edi),%eax
1704         adcl    $0,%edx
1705         movl    %eax,20(%edi)
1706         movl    %edx,%esi
1707
1708         movl    24(%ebx),%eax
1709         mull    %ebp
1710         addl    %esi,%eax
1711         adcl    $0,%edx
1712         addl    24(%edi),%eax
1713         adcl    $0,%edx
1714         movl    %eax,24(%edi)
1715         movl    %edx,%esi
1716
1717         movl    28(%ebx),%eax
1718         mull    %ebp
1719         addl    %esi,%eax
1720         adcl    $0,%edx
1721         addl    28(%edi),%eax
1722         adcl    $0,%edx
1723         movl    %eax,28(%edi)
1724         movl    %edx,%esi
1725
1726         subl    $8,%ecx
1727         leal    32(%ebx),%ebx
1728         leal    32(%edi),%edi
1729         jnz     .L006maw_loop
1730 .L005maw_finish:
1731         movl    32(%esp),%ecx
1732         andl    $7,%ecx
1733         jnz     .L007maw_finish2
1734         jmp     .L008maw_end
1735 .L007maw_finish2:
1736
1737         movl    (%ebx),%eax
1738         mull    %ebp
1739         addl    %esi,%eax
1740         adcl    $0,%edx
1741         addl    (%edi),%eax
1742         adcl    $0,%edx
1743         decl    %ecx
1744         movl    %eax,(%edi)
1745         movl    %edx,%esi
1746         jz      .L008maw_end
1747
1748         movl    4(%ebx),%eax
1749         mull    %ebp
1750         addl    %esi,%eax
1751         adcl    $0,%edx
1752         addl    4(%edi),%eax
1753         adcl    $0,%edx
1754         decl    %ecx
1755         movl    %eax,4(%edi)
1756         movl    %edx,%esi
1757         jz      .L008maw_end
1758
1759         movl    8(%ebx),%eax
1760         mull    %ebp
1761         addl    %esi,%eax
1762         adcl    $0,%edx
1763         addl    8(%edi),%eax
1764         adcl    $0,%edx
1765         decl    %ecx
1766         movl    %eax,8(%edi)
1767         movl    %edx,%esi
1768         jz      .L008maw_end
1769
1770         movl    12(%ebx),%eax
1771         mull    %ebp
1772         addl    %esi,%eax
1773         adcl    $0,%edx
1774         addl    12(%edi),%eax
1775         adcl    $0,%edx
1776         decl    %ecx
1777         movl    %eax,12(%edi)
1778         movl    %edx,%esi
1779         jz      .L008maw_end
1780
1781         movl    16(%ebx),%eax
1782         mull    %ebp
1783         addl    %esi,%eax
1784         adcl    $0,%edx
1785         addl    16(%edi),%eax
1786         adcl    $0,%edx
1787         decl    %ecx
1788         movl    %eax,16(%edi)
1789         movl    %edx,%esi
1790         jz      .L008maw_end
1791
1792         movl    20(%ebx),%eax
1793         mull    %ebp
1794         addl    %esi,%eax
1795         adcl    $0,%edx
1796         addl    20(%edi),%eax
1797         adcl    $0,%edx
1798         decl    %ecx
1799         movl    %eax,20(%edi)
1800         movl    %edx,%esi
1801         jz      .L008maw_end
1802
1803         movl    24(%ebx),%eax
1804         mull    %ebp
1805         addl    %esi,%eax
1806         adcl    $0,%edx
1807         addl    24(%edi),%eax
1808         adcl    $0,%edx
1809         movl    %eax,24(%edi)
1810         movl    %edx,%esi
1811 .L008maw_end:
1812         movl    %esi,%eax
1813         popl    %ecx
1814         popl    %edi
1815         popl    %esi
1816         popl    %ebx
1817         popl    %ebp
1818         ret
1819 .size   bn_mul_add_words,.-.L_bn_mul_add_words_begin
1820 .globl  bn_mul_words
1821 .type   bn_mul_words,@function
1822 .align  16
1823 bn_mul_words:
1824 .L_bn_mul_words_begin:
1825         leal    OPENSSL_ia32cap_P,%eax
1826         btl     $26,(%eax)
1827         jnc     .L009mw_non_sse2
1828         movl    4(%esp),%eax
1829         movl    8(%esp),%edx
1830         movl    12(%esp),%ecx
1831         movd    16(%esp),%mm0
1832         pxor    %mm1,%mm1
1833 .align  16
1834 .L010mw_sse2_loop:
1835         movd    (%edx),%mm2
1836         pmuludq %mm0,%mm2
1837         leal    4(%edx),%edx
1838         paddq   %mm2,%mm1
1839         movd    %mm1,(%eax)
1840         subl    $1,%ecx
1841         psrlq   $32,%mm1
1842         leal    4(%eax),%eax
1843         jnz     .L010mw_sse2_loop
1844         movd    %mm1,%eax
1845         emms
1846         ret
1847 .align  16
1848 .L009mw_non_sse2:
1849         pushl   %ebp
1850         pushl   %ebx
1851         pushl   %esi
1852         pushl   %edi
1853
1854         xorl    %esi,%esi
1855         movl    20(%esp),%edi
1856         movl    24(%esp),%ebx
1857         movl    28(%esp),%ebp
1858         movl    32(%esp),%ecx
1859         andl    $4294967288,%ebp
1860         jz      .L011mw_finish
1861 .L012mw_loop:
1862
1863         movl    (%ebx),%eax
1864         mull    %ecx
1865         addl    %esi,%eax
1866         adcl    $0,%edx
1867         movl    %eax,(%edi)
1868         movl    %edx,%esi
1869
1870         movl    4(%ebx),%eax
1871         mull    %ecx
1872         addl    %esi,%eax
1873         adcl    $0,%edx
1874         movl    %eax,4(%edi)
1875         movl    %edx,%esi
1876
1877         movl    8(%ebx),%eax
1878         mull    %ecx
1879         addl    %esi,%eax
1880         adcl    $0,%edx
1881         movl    %eax,8(%edi)
1882         movl    %edx,%esi
1883
1884         movl    12(%ebx),%eax
1885         mull    %ecx
1886         addl    %esi,%eax
1887         adcl    $0,%edx
1888         movl    %eax,12(%edi)
1889         movl    %edx,%esi
1890
1891         movl    16(%ebx),%eax
1892         mull    %ecx
1893         addl    %esi,%eax
1894         adcl    $0,%edx
1895         movl    %eax,16(%edi)
1896         movl    %edx,%esi
1897
1898         movl    20(%ebx),%eax
1899         mull    %ecx
1900         addl    %esi,%eax
1901         adcl    $0,%edx
1902         movl    %eax,20(%edi)
1903         movl    %edx,%esi
1904
1905         movl    24(%ebx),%eax
1906         mull    %ecx
1907         addl    %esi,%eax
1908         adcl    $0,%edx
1909         movl    %eax,24(%edi)
1910         movl    %edx,%esi
1911
1912         movl    28(%ebx),%eax
1913         mull    %ecx
1914         addl    %esi,%eax
1915         adcl    $0,%edx
1916         movl    %eax,28(%edi)
1917         movl    %edx,%esi
1918
1919         addl    $32,%ebx
1920         addl    $32,%edi
1921         subl    $8,%ebp
1922         jz      .L011mw_finish
1923         jmp     .L012mw_loop
1924 .L011mw_finish:
1925         movl    28(%esp),%ebp
1926         andl    $7,%ebp
1927         jnz     .L013mw_finish2
1928         jmp     .L014mw_end
1929 .L013mw_finish2:
1930
1931         movl    (%ebx),%eax
1932         mull    %ecx
1933         addl    %esi,%eax
1934         adcl    $0,%edx
1935         movl    %eax,(%edi)
1936         movl    %edx,%esi
1937         decl    %ebp
1938         jz      .L014mw_end
1939
1940         movl    4(%ebx),%eax
1941         mull    %ecx
1942         addl    %esi,%eax
1943         adcl    $0,%edx
1944         movl    %eax,4(%edi)
1945         movl    %edx,%esi
1946         decl    %ebp
1947         jz      .L014mw_end
1948
1949         movl    8(%ebx),%eax
1950         mull    %ecx
1951         addl    %esi,%eax
1952         adcl    $0,%edx
1953         movl    %eax,8(%edi)
1954         movl    %edx,%esi
1955         decl    %ebp
1956         jz      .L014mw_end
1957
1958         movl    12(%ebx),%eax
1959         mull    %ecx
1960         addl    %esi,%eax
1961         adcl    $0,%edx
1962         movl    %eax,12(%edi)
1963         movl    %edx,%esi
1964         decl    %ebp
1965         jz      .L014mw_end
1966
1967         movl    16(%ebx),%eax
1968         mull    %ecx
1969         addl    %esi,%eax
1970         adcl    $0,%edx
1971         movl    %eax,16(%edi)
1972         movl    %edx,%esi
1973         decl    %ebp
1974         jz      .L014mw_end
1975
1976         movl    20(%ebx),%eax
1977         mull    %ecx
1978         addl    %esi,%eax
1979         adcl    $0,%edx
1980         movl    %eax,20(%edi)
1981         movl    %edx,%esi
1982         decl    %ebp
1983         jz      .L014mw_end
1984
1985         movl    24(%ebx),%eax
1986         mull    %ecx
1987         addl    %esi,%eax
1988         adcl    $0,%edx
1989         movl    %eax,24(%edi)
1990         movl    %edx,%esi
1991 .L014mw_end:
1992         movl    %esi,%eax
1993         popl    %edi
1994         popl    %esi
1995         popl    %ebx
1996         popl    %ebp
1997         ret
1998 .size   bn_mul_words,.-.L_bn_mul_words_begin
1999 .globl  bn_sqr_words
2000 .type   bn_sqr_words,@function
2001 .align  16
2002 bn_sqr_words:
2003 .L_bn_sqr_words_begin:
2004         leal    OPENSSL_ia32cap_P,%eax
2005         btl     $26,(%eax)
2006         jnc     .L015sqr_non_sse2
2007         movl    4(%esp),%eax
2008         movl    8(%esp),%edx
2009         movl    12(%esp),%ecx
2010 .align  16
2011 .L016sqr_sse2_loop:
2012         movd    (%edx),%mm0
2013         pmuludq %mm0,%mm0
2014         leal    4(%edx),%edx
2015         movq    %mm0,(%eax)
2016         subl    $1,%ecx
2017         leal    8(%eax),%eax
2018         jnz     .L016sqr_sse2_loop
2019         emms
2020         ret
2021 .align  16
2022 .L015sqr_non_sse2:
2023         pushl   %ebp
2024         pushl   %ebx
2025         pushl   %esi
2026         pushl   %edi
2027
2028         movl    20(%esp),%esi
2029         movl    24(%esp),%edi
2030         movl    28(%esp),%ebx
2031         andl    $4294967288,%ebx
2032         jz      .L017sw_finish
2033 .L018sw_loop:
2034
2035         movl    (%edi),%eax
2036         mull    %eax
2037         movl    %eax,(%esi)
2038         movl    %edx,4(%esi)
2039
2040         movl    4(%edi),%eax
2041         mull    %eax
2042         movl    %eax,8(%esi)
2043         movl    %edx,12(%esi)
2044
2045         movl    8(%edi),%eax
2046         mull    %eax
2047         movl    %eax,16(%esi)
2048         movl    %edx,20(%esi)
2049
2050         movl    12(%edi),%eax
2051         mull    %eax
2052         movl    %eax,24(%esi)
2053         movl    %edx,28(%esi)
2054
2055         movl    16(%edi),%eax
2056         mull    %eax
2057         movl    %eax,32(%esi)
2058         movl    %edx,36(%esi)
2059
2060         movl    20(%edi),%eax
2061         mull    %eax
2062         movl    %eax,40(%esi)
2063         movl    %edx,44(%esi)
2064
2065         movl    24(%edi),%eax
2066         mull    %eax
2067         movl    %eax,48(%esi)
2068         movl    %edx,52(%esi)
2069
2070         movl    28(%edi),%eax
2071         mull    %eax
2072         movl    %eax,56(%esi)
2073         movl    %edx,60(%esi)
2074
2075         addl    $32,%edi
2076         addl    $64,%esi
2077         subl    $8,%ebx
2078         jnz     .L018sw_loop
2079 .L017sw_finish:
2080         movl    28(%esp),%ebx
2081         andl    $7,%ebx
2082         jz      .L019sw_end
2083
2084         movl    (%edi),%eax
2085         mull    %eax
2086         movl    %eax,(%esi)
2087         decl    %ebx
2088         movl    %edx,4(%esi)
2089         jz      .L019sw_end
2090
2091         movl    4(%edi),%eax
2092         mull    %eax
2093         movl    %eax,8(%esi)
2094         decl    %ebx
2095         movl    %edx,12(%esi)
2096         jz      .L019sw_end
2097
2098         movl    8(%edi),%eax
2099         mull    %eax
2100         movl    %eax,16(%esi)
2101         decl    %ebx
2102         movl    %edx,20(%esi)
2103         jz      .L019sw_end
2104
2105         movl    12(%edi),%eax
2106         mull    %eax
2107         movl    %eax,24(%esi)
2108         decl    %ebx
2109         movl    %edx,28(%esi)
2110         jz      .L019sw_end
2111
2112         movl    16(%edi),%eax
2113         mull    %eax
2114         movl    %eax,32(%esi)
2115         decl    %ebx
2116         movl    %edx,36(%esi)
2117         jz      .L019sw_end
2118
2119         movl    20(%edi),%eax
2120         mull    %eax
2121         movl    %eax,40(%esi)
2122         decl    %ebx
2123         movl    %edx,44(%esi)
2124         jz      .L019sw_end
2125
2126         movl    24(%edi),%eax
2127         mull    %eax
2128         movl    %eax,48(%esi)
2129         movl    %edx,52(%esi)
2130 .L019sw_end:
2131         popl    %edi
2132         popl    %esi
2133         popl    %ebx
2134         popl    %ebp
2135         ret
2136 .size   bn_sqr_words,.-.L_bn_sqr_words_begin
2137 .globl  bn_div_words
2138 .type   bn_div_words,@function
2139 .align  16
2140 bn_div_words:
2141 .L_bn_div_words_begin:
2142         movl    4(%esp),%edx
2143         movl    8(%esp),%eax
2144         movl    12(%esp),%ecx
2145         divl    %ecx
2146         ret
2147 .size   bn_div_words,.-.L_bn_div_words_begin
2148 .globl  bn_add_words
2149 .type   bn_add_words,@function
2150 .align  16
2151 bn_add_words:
2152 .L_bn_add_words_begin:
2153         pushl   %ebp
2154         pushl   %ebx
2155         pushl   %esi
2156         pushl   %edi
2157
2158         movl    20(%esp),%ebx
2159         movl    24(%esp),%esi
2160         movl    28(%esp),%edi
2161         movl    32(%esp),%ebp
2162         xorl    %eax,%eax
2163         andl    $4294967288,%ebp
2164         jz      .L020aw_finish
2165 .L021aw_loop:
2166
2167         movl    (%esi),%ecx
2168         movl    (%edi),%edx
2169         addl    %eax,%ecx
2170         movl    $0,%eax
2171         adcl    %eax,%eax
2172         addl    %edx,%ecx
2173         adcl    $0,%eax
2174         movl    %ecx,(%ebx)
2175
2176         movl    4(%esi),%ecx
2177         movl    4(%edi),%edx
2178         addl    %eax,%ecx
2179         movl    $0,%eax
2180         adcl    %eax,%eax
2181         addl    %edx,%ecx
2182         adcl    $0,%eax
2183         movl    %ecx,4(%ebx)
2184
2185         movl    8(%esi),%ecx
2186         movl    8(%edi),%edx
2187         addl    %eax,%ecx
2188         movl    $0,%eax
2189         adcl    %eax,%eax
2190         addl    %edx,%ecx
2191         adcl    $0,%eax
2192         movl    %ecx,8(%ebx)
2193
2194         movl    12(%esi),%ecx
2195         movl    12(%edi),%edx
2196         addl    %eax,%ecx
2197         movl    $0,%eax
2198         adcl    %eax,%eax
2199         addl    %edx,%ecx
2200         adcl    $0,%eax
2201         movl    %ecx,12(%ebx)
2202
2203         movl    16(%esi),%ecx
2204         movl    16(%edi),%edx
2205         addl    %eax,%ecx
2206         movl    $0,%eax
2207         adcl    %eax,%eax
2208         addl    %edx,%ecx
2209         adcl    $0,%eax
2210         movl    %ecx,16(%ebx)
2211
2212         movl    20(%esi),%ecx
2213         movl    20(%edi),%edx
2214         addl    %eax,%ecx
2215         movl    $0,%eax
2216         adcl    %eax,%eax
2217         addl    %edx,%ecx
2218         adcl    $0,%eax
2219         movl    %ecx,20(%ebx)
2220
2221         movl    24(%esi),%ecx
2222         movl    24(%edi),%edx
2223         addl    %eax,%ecx
2224         movl    $0,%eax
2225         adcl    %eax,%eax
2226         addl    %edx,%ecx
2227         adcl    $0,%eax
2228         movl    %ecx,24(%ebx)
2229
2230         movl    28(%esi),%ecx
2231         movl    28(%edi),%edx
2232         addl    %eax,%ecx
2233         movl    $0,%eax
2234         adcl    %eax,%eax
2235         addl    %edx,%ecx
2236         adcl    $0,%eax
2237         movl    %ecx,28(%ebx)
2238
2239         addl    $32,%esi
2240         addl    $32,%edi
2241         addl    $32,%ebx
2242         subl    $8,%ebp
2243         jnz     .L021aw_loop
2244 .L020aw_finish:
2245         movl    32(%esp),%ebp
2246         andl    $7,%ebp
2247         jz      .L022aw_end
2248
2249         movl    (%esi),%ecx
2250         movl    (%edi),%edx
2251         addl    %eax,%ecx
2252         movl    $0,%eax
2253         adcl    %eax,%eax
2254         addl    %edx,%ecx
2255         adcl    $0,%eax
2256         decl    %ebp
2257         movl    %ecx,(%ebx)
2258         jz      .L022aw_end
2259
2260         movl    4(%esi),%ecx
2261         movl    4(%edi),%edx
2262         addl    %eax,%ecx
2263         movl    $0,%eax
2264         adcl    %eax,%eax
2265         addl    %edx,%ecx
2266         adcl    $0,%eax
2267         decl    %ebp
2268         movl    %ecx,4(%ebx)
2269         jz      .L022aw_end
2270
2271         movl    8(%esi),%ecx
2272         movl    8(%edi),%edx
2273         addl    %eax,%ecx
2274         movl    $0,%eax
2275         adcl    %eax,%eax
2276         addl    %edx,%ecx
2277         adcl    $0,%eax
2278         decl    %ebp
2279         movl    %ecx,8(%ebx)
2280         jz      .L022aw_end
2281
2282         movl    12(%esi),%ecx
2283         movl    12(%edi),%edx
2284         addl    %eax,%ecx
2285         movl    $0,%eax
2286         adcl    %eax,%eax
2287         addl    %edx,%ecx
2288         adcl    $0,%eax
2289         decl    %ebp
2290         movl    %ecx,12(%ebx)
2291         jz      .L022aw_end
2292
2293         movl    16(%esi),%ecx
2294         movl    16(%edi),%edx
2295         addl    %eax,%ecx
2296         movl    $0,%eax
2297         adcl    %eax,%eax
2298         addl    %edx,%ecx
2299         adcl    $0,%eax
2300         decl    %ebp
2301         movl    %ecx,16(%ebx)
2302         jz      .L022aw_end
2303
2304         movl    20(%esi),%ecx
2305         movl    20(%edi),%edx
2306         addl    %eax,%ecx
2307         movl    $0,%eax
2308         adcl    %eax,%eax
2309         addl    %edx,%ecx
2310         adcl    $0,%eax
2311         decl    %ebp
2312         movl    %ecx,20(%ebx)
2313         jz      .L022aw_end
2314
2315         movl    24(%esi),%ecx
2316         movl    24(%edi),%edx
2317         addl    %eax,%ecx
2318         movl    $0,%eax
2319         adcl    %eax,%eax
2320         addl    %edx,%ecx
2321         adcl    $0,%eax
2322         movl    %ecx,24(%ebx)
2323 .L022aw_end:
2324         popl    %edi
2325         popl    %esi
2326         popl    %ebx
2327         popl    %ebp
2328         ret
2329 .size   bn_add_words,.-.L_bn_add_words_begin
2330 .globl  bn_sub_words
2331 .type   bn_sub_words,@function
2332 .align  16
2333 bn_sub_words:
2334 .L_bn_sub_words_begin:
2335         pushl   %ebp
2336         pushl   %ebx
2337         pushl   %esi
2338         pushl   %edi
2339
2340         movl    20(%esp),%ebx
2341         movl    24(%esp),%esi
2342         movl    28(%esp),%edi
2343         movl    32(%esp),%ebp
2344         xorl    %eax,%eax
2345         andl    $4294967288,%ebp
2346         jz      .L023aw_finish
2347 .L024aw_loop:
2348
2349         movl    (%esi),%ecx
2350         movl    (%edi),%edx
2351         subl    %eax,%ecx
2352         movl    $0,%eax
2353         adcl    %eax,%eax
2354         subl    %edx,%ecx
2355         adcl    $0,%eax
2356         movl    %ecx,(%ebx)
2357
2358         movl    4(%esi),%ecx
2359         movl    4(%edi),%edx
2360         subl    %eax,%ecx
2361         movl    $0,%eax
2362         adcl    %eax,%eax
2363         subl    %edx,%ecx
2364         adcl    $0,%eax
2365         movl    %ecx,4(%ebx)
2366
2367         movl    8(%esi),%ecx
2368         movl    8(%edi),%edx
2369         subl    %eax,%ecx
2370         movl    $0,%eax
2371         adcl    %eax,%eax
2372         subl    %edx,%ecx
2373         adcl    $0,%eax
2374         movl    %ecx,8(%ebx)
2375
2376         movl    12(%esi),%ecx
2377         movl    12(%edi),%edx
2378         subl    %eax,%ecx
2379         movl    $0,%eax
2380         adcl    %eax,%eax
2381         subl    %edx,%ecx
2382         adcl    $0,%eax
2383         movl    %ecx,12(%ebx)
2384
2385         movl    16(%esi),%ecx
2386         movl    16(%edi),%edx
2387         subl    %eax,%ecx
2388         movl    $0,%eax
2389         adcl    %eax,%eax
2390         subl    %edx,%ecx
2391         adcl    $0,%eax
2392         movl    %ecx,16(%ebx)
2393
2394         movl    20(%esi),%ecx
2395         movl    20(%edi),%edx
2396         subl    %eax,%ecx
2397         movl    $0,%eax
2398         adcl    %eax,%eax
2399         subl    %edx,%ecx
2400         adcl    $0,%eax
2401         movl    %ecx,20(%ebx)
2402
2403         movl    24(%esi),%ecx
2404         movl    24(%edi),%edx
2405         subl    %eax,%ecx
2406         movl    $0,%eax
2407         adcl    %eax,%eax
2408         subl    %edx,%ecx
2409         adcl    $0,%eax
2410         movl    %ecx,24(%ebx)
2411
2412         movl    28(%esi),%ecx
2413         movl    28(%edi),%edx
2414         subl    %eax,%ecx
2415         movl    $0,%eax
2416         adcl    %eax,%eax
2417         subl    %edx,%ecx
2418         adcl    $0,%eax
2419         movl    %ecx,28(%ebx)
2420
2421         addl    $32,%esi
2422         addl    $32,%edi
2423         addl    $32,%ebx
2424         subl    $8,%ebp
2425         jnz     .L024aw_loop
2426 .L023aw_finish:
2427         movl    32(%esp),%ebp
2428         andl    $7,%ebp
2429         jz      .L025aw_end
2430
2431         movl    (%esi),%ecx
2432         movl    (%edi),%edx
2433         subl    %eax,%ecx
2434         movl    $0,%eax
2435         adcl    %eax,%eax
2436         subl    %edx,%ecx
2437         adcl    $0,%eax
2438         decl    %ebp
2439         movl    %ecx,(%ebx)
2440         jz      .L025aw_end
2441
2442         movl    4(%esi),%ecx
2443         movl    4(%edi),%edx
2444         subl    %eax,%ecx
2445         movl    $0,%eax
2446         adcl    %eax,%eax
2447         subl    %edx,%ecx
2448         adcl    $0,%eax
2449         decl    %ebp
2450         movl    %ecx,4(%ebx)
2451         jz      .L025aw_end
2452
2453         movl    8(%esi),%ecx
2454         movl    8(%edi),%edx
2455         subl    %eax,%ecx
2456         movl    $0,%eax
2457         adcl    %eax,%eax
2458         subl    %edx,%ecx
2459         adcl    $0,%eax
2460         decl    %ebp
2461         movl    %ecx,8(%ebx)
2462         jz      .L025aw_end
2463
2464         movl    12(%esi),%ecx
2465         movl    12(%edi),%edx
2466         subl    %eax,%ecx
2467         movl    $0,%eax
2468         adcl    %eax,%eax
2469         subl    %edx,%ecx
2470         adcl    $0,%eax
2471         decl    %ebp
2472         movl    %ecx,12(%ebx)
2473         jz      .L025aw_end
2474
2475         movl    16(%esi),%ecx
2476         movl    16(%edi),%edx
2477         subl    %eax,%ecx
2478         movl    $0,%eax
2479         adcl    %eax,%eax
2480         subl    %edx,%ecx
2481         adcl    $0,%eax
2482         decl    %ebp
2483         movl    %ecx,16(%ebx)
2484         jz      .L025aw_end
2485
2486         movl    20(%esi),%ecx
2487         movl    20(%edi),%edx
2488         subl    %eax,%ecx
2489         movl    $0,%eax
2490         adcl    %eax,%eax
2491         subl    %edx,%ecx
2492         adcl    $0,%eax
2493         decl    %ebp
2494         movl    %ecx,20(%ebx)
2495         jz      .L025aw_end
2496
2497         movl    24(%esi),%ecx
2498         movl    24(%edi),%edx
2499         subl    %eax,%ecx
2500         movl    $0,%eax
2501         adcl    %eax,%eax
2502         subl    %edx,%ecx
2503         adcl    $0,%eax
2504         movl    %ecx,24(%ebx)
2505 .L025aw_end:
2506         popl    %edi
2507         popl    %esi
2508         popl    %ebx
2509         popl    %ebp
2510         ret
2511 .size   bn_sub_words,.-.L_bn_sub_words_begin
2512 .globl  bn_sub_part_words
2513 .type   bn_sub_part_words,@function
2514 .align  16
2515 bn_sub_part_words:
2516 .L_bn_sub_part_words_begin:
2517         pushl   %ebp
2518         pushl   %ebx
2519         pushl   %esi
2520         pushl   %edi
2521
2522         movl    20(%esp),%ebx
2523         movl    24(%esp),%esi
2524         movl    28(%esp),%edi
2525         movl    32(%esp),%ebp
2526         xorl    %eax,%eax
2527         andl    $4294967288,%ebp
2528         jz      .L026aw_finish
2529 .L027aw_loop:
2530
2531         movl    (%esi),%ecx
2532         movl    (%edi),%edx
2533         subl    %eax,%ecx
2534         movl    $0,%eax
2535         adcl    %eax,%eax
2536         subl    %edx,%ecx
2537         adcl    $0,%eax
2538         movl    %ecx,(%ebx)
2539
2540         movl    4(%esi),%ecx
2541         movl    4(%edi),%edx
2542         subl    %eax,%ecx
2543         movl    $0,%eax
2544         adcl    %eax,%eax
2545         subl    %edx,%ecx
2546         adcl    $0,%eax
2547         movl    %ecx,4(%ebx)
2548
2549         movl    8(%esi),%ecx
2550         movl    8(%edi),%edx
2551         subl    %eax,%ecx
2552         movl    $0,%eax
2553         adcl    %eax,%eax
2554         subl    %edx,%ecx
2555         adcl    $0,%eax
2556         movl    %ecx,8(%ebx)
2557
2558         movl    12(%esi),%ecx
2559         movl    12(%edi),%edx
2560         subl    %eax,%ecx
2561         movl    $0,%eax
2562         adcl    %eax,%eax
2563         subl    %edx,%ecx
2564         adcl    $0,%eax
2565         movl    %ecx,12(%ebx)
2566
2567         movl    16(%esi),%ecx
2568         movl    16(%edi),%edx
2569         subl    %eax,%ecx
2570         movl    $0,%eax
2571         adcl    %eax,%eax
2572         subl    %edx,%ecx
2573         adcl    $0,%eax
2574         movl    %ecx,16(%ebx)
2575
2576         movl    20(%esi),%ecx
2577         movl    20(%edi),%edx
2578         subl    %eax,%ecx
2579         movl    $0,%eax
2580         adcl    %eax,%eax
2581         subl    %edx,%ecx
2582         adcl    $0,%eax
2583         movl    %ecx,20(%ebx)
2584
2585         movl    24(%esi),%ecx
2586         movl    24(%edi),%edx
2587         subl    %eax,%ecx
2588         movl    $0,%eax
2589         adcl    %eax,%eax
2590         subl    %edx,%ecx
2591         adcl    $0,%eax
2592         movl    %ecx,24(%ebx)
2593
2594         movl    28(%esi),%ecx
2595         movl    28(%edi),%edx
2596         subl    %eax,%ecx
2597         movl    $0,%eax
2598         adcl    %eax,%eax
2599         subl    %edx,%ecx
2600         adcl    $0,%eax
2601         movl    %ecx,28(%ebx)
2602
2603         addl    $32,%esi
2604         addl    $32,%edi
2605         addl    $32,%ebx
2606         subl    $8,%ebp
2607         jnz     .L027aw_loop
2608 .L026aw_finish:
2609         movl    32(%esp),%ebp
2610         andl    $7,%ebp
2611         jz      .L028aw_end
2612
2613         movl    (%esi),%ecx
2614         movl    (%edi),%edx
2615         subl    %eax,%ecx
2616         movl    $0,%eax
2617         adcl    %eax,%eax
2618         subl    %edx,%ecx
2619         adcl    $0,%eax
2620         movl    %ecx,(%ebx)
2621         addl    $4,%esi
2622         addl    $4,%edi
2623         addl    $4,%ebx
2624         decl    %ebp
2625         jz      .L028aw_end
2626
2627         movl    (%esi),%ecx
2628         movl    (%edi),%edx
2629         subl    %eax,%ecx
2630         movl    $0,%eax
2631         adcl    %eax,%eax
2632         subl    %edx,%ecx
2633         adcl    $0,%eax
2634         movl    %ecx,(%ebx)
2635         addl    $4,%esi
2636         addl    $4,%edi
2637         addl    $4,%ebx
2638         decl    %ebp
2639         jz      .L028aw_end
2640
2641         movl    (%esi),%ecx
2642         movl    (%edi),%edx
2643         subl    %eax,%ecx
2644         movl    $0,%eax
2645         adcl    %eax,%eax
2646         subl    %edx,%ecx
2647         adcl    $0,%eax
2648         movl    %ecx,(%ebx)
2649         addl    $4,%esi
2650         addl    $4,%edi
2651         addl    $4,%ebx
2652         decl    %ebp
2653         jz      .L028aw_end
2654
2655         movl    (%esi),%ecx
2656         movl    (%edi),%edx
2657         subl    %eax,%ecx
2658         movl    $0,%eax
2659         adcl    %eax,%eax
2660         subl    %edx,%ecx
2661         adcl    $0,%eax
2662         movl    %ecx,(%ebx)
2663         addl    $4,%esi
2664         addl    $4,%edi
2665         addl    $4,%ebx
2666         decl    %ebp
2667         jz      .L028aw_end
2668
2669         movl    (%esi),%ecx
2670         movl    (%edi),%edx
2671         subl    %eax,%ecx
2672         movl    $0,%eax
2673         adcl    %eax,%eax
2674         subl    %edx,%ecx
2675         adcl    $0,%eax
2676         movl    %ecx,(%ebx)
2677         addl    $4,%esi
2678         addl    $4,%edi
2679         addl    $4,%ebx
2680         decl    %ebp
2681         jz      .L028aw_end
2682
2683         movl    (%esi),%ecx
2684         movl    (%edi),%edx
2685         subl    %eax,%ecx
2686         movl    $0,%eax
2687         adcl    %eax,%eax
2688         subl    %edx,%ecx
2689         adcl    $0,%eax
2690         movl    %ecx,(%ebx)
2691         addl    $4,%esi
2692         addl    $4,%edi
2693         addl    $4,%ebx
2694         decl    %ebp
2695         jz      .L028aw_end
2696
2697         movl    (%esi),%ecx
2698         movl    (%edi),%edx
2699         subl    %eax,%ecx
2700         movl    $0,%eax
2701         adcl    %eax,%eax
2702         subl    %edx,%ecx
2703         adcl    $0,%eax
2704         movl    %ecx,(%ebx)
2705         addl    $4,%esi
2706         addl    $4,%edi
2707         addl    $4,%ebx
2708 .L028aw_end:
2709         cmpl    $0,36(%esp)
2710         je      .L029pw_end
2711         movl    36(%esp),%ebp
2712         cmpl    $0,%ebp
2713         je      .L029pw_end
2714         jge     .L030pw_pos
2715
2716         movl    $0,%edx
2717         subl    %ebp,%edx
2718         movl    %edx,%ebp
2719         andl    $4294967288,%ebp
2720         jz      .L031pw_neg_finish
2721 .L032pw_neg_loop:
2722
2723         movl    $0,%ecx
2724         movl    (%edi),%edx
2725         subl    %eax,%ecx
2726         movl    $0,%eax
2727         adcl    %eax,%eax
2728         subl    %edx,%ecx
2729         adcl    $0,%eax
2730         movl    %ecx,(%ebx)
2731
2732         movl    $0,%ecx
2733         movl    4(%edi),%edx
2734         subl    %eax,%ecx
2735         movl    $0,%eax
2736         adcl    %eax,%eax
2737         subl    %edx,%ecx
2738         adcl    $0,%eax
2739         movl    %ecx,4(%ebx)
2740
2741         movl    $0,%ecx
2742         movl    8(%edi),%edx
2743         subl    %eax,%ecx
2744         movl    $0,%eax
2745         adcl    %eax,%eax
2746         subl    %edx,%ecx
2747         adcl    $0,%eax
2748         movl    %ecx,8(%ebx)
2749
2750         movl    $0,%ecx
2751         movl    12(%edi),%edx
2752         subl    %eax,%ecx
2753         movl    $0,%eax
2754         adcl    %eax,%eax
2755         subl    %edx,%ecx
2756         adcl    $0,%eax
2757         movl    %ecx,12(%ebx)
2758
2759         movl    $0,%ecx
2760         movl    16(%edi),%edx
2761         subl    %eax,%ecx
2762         movl    $0,%eax
2763         adcl    %eax,%eax
2764         subl    %edx,%ecx
2765         adcl    $0,%eax
2766         movl    %ecx,16(%ebx)
2767
2768         movl    $0,%ecx
2769         movl    20(%edi),%edx
2770         subl    %eax,%ecx
2771         movl    $0,%eax
2772         adcl    %eax,%eax
2773         subl    %edx,%ecx
2774         adcl    $0,%eax
2775         movl    %ecx,20(%ebx)
2776
2777         movl    $0,%ecx
2778         movl    24(%edi),%edx
2779         subl    %eax,%ecx
2780         movl    $0,%eax
2781         adcl    %eax,%eax
2782         subl    %edx,%ecx
2783         adcl    $0,%eax
2784         movl    %ecx,24(%ebx)
2785
2786         movl    $0,%ecx
2787         movl    28(%edi),%edx
2788         subl    %eax,%ecx
2789         movl    $0,%eax
2790         adcl    %eax,%eax
2791         subl    %edx,%ecx
2792         adcl    $0,%eax
2793         movl    %ecx,28(%ebx)
2794
2795         addl    $32,%edi
2796         addl    $32,%ebx
2797         subl    $8,%ebp
2798         jnz     .L032pw_neg_loop
2799 .L031pw_neg_finish:
2800         movl    36(%esp),%edx
2801         movl    $0,%ebp
2802         subl    %edx,%ebp
2803         andl    $7,%ebp
2804         jz      .L029pw_end
2805
2806         movl    $0,%ecx
2807         movl    (%edi),%edx
2808         subl    %eax,%ecx
2809         movl    $0,%eax
2810         adcl    %eax,%eax
2811         subl    %edx,%ecx
2812         adcl    $0,%eax
2813         decl    %ebp
2814         movl    %ecx,(%ebx)
2815         jz      .L029pw_end
2816
2817         movl    $0,%ecx
2818         movl    4(%edi),%edx
2819         subl    %eax,%ecx
2820         movl    $0,%eax
2821         adcl    %eax,%eax
2822         subl    %edx,%ecx
2823         adcl    $0,%eax
2824         decl    %ebp
2825         movl    %ecx,4(%ebx)
2826         jz      .L029pw_end
2827
2828         movl    $0,%ecx
2829         movl    8(%edi),%edx
2830         subl    %eax,%ecx
2831         movl    $0,%eax
2832         adcl    %eax,%eax
2833         subl    %edx,%ecx
2834         adcl    $0,%eax
2835         decl    %ebp
2836         movl    %ecx,8(%ebx)
2837         jz      .L029pw_end
2838
2839         movl    $0,%ecx
2840         movl    12(%edi),%edx
2841         subl    %eax,%ecx
2842         movl    $0,%eax
2843         adcl    %eax,%eax
2844         subl    %edx,%ecx
2845         adcl    $0,%eax
2846         decl    %ebp
2847         movl    %ecx,12(%ebx)
2848         jz      .L029pw_end
2849
2850         movl    $0,%ecx
2851         movl    16(%edi),%edx
2852         subl    %eax,%ecx
2853         movl    $0,%eax
2854         adcl    %eax,%eax
2855         subl    %edx,%ecx
2856         adcl    $0,%eax
2857         decl    %ebp
2858         movl    %ecx,16(%ebx)
2859         jz      .L029pw_end
2860
2861         movl    $0,%ecx
2862         movl    20(%edi),%edx
2863         subl    %eax,%ecx
2864         movl    $0,%eax
2865         adcl    %eax,%eax
2866         subl    %edx,%ecx
2867         adcl    $0,%eax
2868         decl    %ebp
2869         movl    %ecx,20(%ebx)
2870         jz      .L029pw_end
2871
2872         movl    $0,%ecx
2873         movl    24(%edi),%edx
2874         subl    %eax,%ecx
2875         movl    $0,%eax
2876         adcl    %eax,%eax
2877         subl    %edx,%ecx
2878         adcl    $0,%eax
2879         movl    %ecx,24(%ebx)
2880         jmp     .L029pw_end
2881 .L030pw_pos:
2882         andl    $4294967288,%ebp
2883         jz      .L033pw_pos_finish
2884 .L034pw_pos_loop:
2885
2886         movl    (%esi),%ecx
2887         subl    %eax,%ecx
2888         movl    %ecx,(%ebx)
2889         jnc     .L035pw_nc0
2890
2891         movl    4(%esi),%ecx
2892         subl    %eax,%ecx
2893         movl    %ecx,4(%ebx)
2894         jnc     .L036pw_nc1
2895
2896         movl    8(%esi),%ecx
2897         subl    %eax,%ecx
2898         movl    %ecx,8(%ebx)
2899         jnc     .L037pw_nc2
2900
2901         movl    12(%esi),%ecx
2902         subl    %eax,%ecx
2903         movl    %ecx,12(%ebx)
2904         jnc     .L038pw_nc3
2905
2906         movl    16(%esi),%ecx
2907         subl    %eax,%ecx
2908         movl    %ecx,16(%ebx)
2909         jnc     .L039pw_nc4
2910
2911         movl    20(%esi),%ecx
2912         subl    %eax,%ecx
2913         movl    %ecx,20(%ebx)
2914         jnc     .L040pw_nc5
2915
2916         movl    24(%esi),%ecx
2917         subl    %eax,%ecx
2918         movl    %ecx,24(%ebx)
2919         jnc     .L041pw_nc6
2920
2921         movl    28(%esi),%ecx
2922         subl    %eax,%ecx
2923         movl    %ecx,28(%ebx)
2924         jnc     .L042pw_nc7
2925
2926         addl    $32,%esi
2927         addl    $32,%ebx
2928         subl    $8,%ebp
2929         jnz     .L034pw_pos_loop
2930 .L033pw_pos_finish:
2931         movl    36(%esp),%ebp
2932         andl    $7,%ebp
2933         jz      .L029pw_end
2934
2935         movl    (%esi),%ecx
2936         subl    %eax,%ecx
2937         movl    %ecx,(%ebx)
2938         jnc     .L043pw_tail_nc0
2939         decl    %ebp
2940         jz      .L029pw_end
2941
2942         movl    4(%esi),%ecx
2943         subl    %eax,%ecx
2944         movl    %ecx,4(%ebx)
2945         jnc     .L044pw_tail_nc1
2946         decl    %ebp
2947         jz      .L029pw_end
2948
2949         movl    8(%esi),%ecx
2950         subl    %eax,%ecx
2951         movl    %ecx,8(%ebx)
2952         jnc     .L045pw_tail_nc2
2953         decl    %ebp
2954         jz      .L029pw_end
2955
2956         movl    12(%esi),%ecx
2957         subl    %eax,%ecx
2958         movl    %ecx,12(%ebx)
2959         jnc     .L046pw_tail_nc3
2960         decl    %ebp
2961         jz      .L029pw_end
2962
2963         movl    16(%esi),%ecx
2964         subl    %eax,%ecx
2965         movl    %ecx,16(%ebx)
2966         jnc     .L047pw_tail_nc4
2967         decl    %ebp
2968         jz      .L029pw_end
2969
2970         movl    20(%esi),%ecx
2971         subl    %eax,%ecx
2972         movl    %ecx,20(%ebx)
2973         jnc     .L048pw_tail_nc5
2974         decl    %ebp
2975         jz      .L029pw_end
2976
2977         movl    24(%esi),%ecx
2978         subl    %eax,%ecx
2979         movl    %ecx,24(%ebx)
2980         jnc     .L049pw_tail_nc6
2981         movl    $1,%eax
2982         jmp     .L029pw_end
2983 .L050pw_nc_loop:
2984         movl    (%esi),%ecx
2985         movl    %ecx,(%ebx)
2986 .L035pw_nc0:
2987         movl    4(%esi),%ecx
2988         movl    %ecx,4(%ebx)
2989 .L036pw_nc1:
2990         movl    8(%esi),%ecx
2991         movl    %ecx,8(%ebx)
2992 .L037pw_nc2:
2993         movl    12(%esi),%ecx
2994         movl    %ecx,12(%ebx)
2995 .L038pw_nc3:
2996         movl    16(%esi),%ecx
2997         movl    %ecx,16(%ebx)
2998 .L039pw_nc4:
2999         movl    20(%esi),%ecx
3000         movl    %ecx,20(%ebx)
3001 .L040pw_nc5:
3002         movl    24(%esi),%ecx
3003         movl    %ecx,24(%ebx)
3004 .L041pw_nc6:
3005         movl    28(%esi),%ecx
3006         movl    %ecx,28(%ebx)
3007 .L042pw_nc7:
3008
3009         addl    $32,%esi
3010         addl    $32,%ebx
3011         subl    $8,%ebp
3012         jnz     .L050pw_nc_loop
3013         movl    36(%esp),%ebp
3014         andl    $7,%ebp
3015         jz      .L051pw_nc_end
3016         movl    (%esi),%ecx
3017         movl    %ecx,(%ebx)
3018 .L043pw_tail_nc0:
3019         decl    %ebp
3020         jz      .L051pw_nc_end
3021         movl    4(%esi),%ecx
3022         movl    %ecx,4(%ebx)
3023 .L044pw_tail_nc1:
3024         decl    %ebp
3025         jz      .L051pw_nc_end
3026         movl    8(%esi),%ecx
3027         movl    %ecx,8(%ebx)
3028 .L045pw_tail_nc2:
3029         decl    %ebp
3030         jz      .L051pw_nc_end
3031         movl    12(%esi),%ecx
3032         movl    %ecx,12(%ebx)
3033 .L046pw_tail_nc3:
3034         decl    %ebp
3035         jz      .L051pw_nc_end
3036         movl    16(%esi),%ecx
3037         movl    %ecx,16(%ebx)
3038 .L047pw_tail_nc4:
3039         decl    %ebp
3040         jz      .L051pw_nc_end
3041         movl    20(%esi),%ecx
3042         movl    %ecx,20(%ebx)
3043 .L048pw_tail_nc5:
3044         decl    %ebp
3045         jz      .L051pw_nc_end
3046         movl    24(%esi),%ecx
3047         movl    %ecx,24(%ebx)
3048 .L049pw_tail_nc6:
3049 .L051pw_nc_end:
3050         movl    $0,%eax
3051 .L029pw_end:
3052         popl    %edi
3053         popl    %esi
3054         popl    %ebx
3055         popl    %ebp
3056         ret
3057 .size   bn_sub_part_words,.-.L_bn_sub_part_words_begin
3058 .comm   OPENSSL_ia32cap_P,8,4
3059 #endif