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