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