Merge from vendor branch OPENSSL:
[dragonfly.git] / secure / lib / libcrypto / i386 / bn-586.s
1         # $FreeBSD: src/secure/lib/libcrypto/i386/bn-586.s,v 1.1.4.1 2003/02/14 22:38:15 nectar Exp $
2         # $DragonFly: src/secure/lib/libcrypto/i386/Attic/bn-586.s,v 1.2 2003/06/17 04:27:48 dillon Exp $
3         # Dont even think of reading this code 
4         # It was automatically generated by bn-586.pl 
5         # Which is a perl program used to generate the x86 assember for 
6         # any of elf, a.out, BSDI, Win32, gaswin (for GNU as on Win32) or Solaris 
7         # eric <eay@cryptsoft.com> 
8
9         .file   "bn-586.s"
10         .version        "01.01"
11 gcc2_compiled.:
12 .text
13         .align 16
14 .globl bn_mul_add_words
15         .type   bn_mul_add_words,@function
16 bn_mul_add_words:
17         pushl   %ebp
18         pushl   %ebx
19         pushl   %esi
20         pushl   %edi
21
22
23         xorl    %esi,           %esi
24         movl    20(%esp),       %edi
25         movl    28(%esp),       %ecx
26         movl    24(%esp),       %ebx
27         andl    $4294967288,    %ecx
28         movl    32(%esp),       %ebp
29         pushl   %ecx
30         jz      .L000maw_finish
31 .L001maw_loop:
32         movl    %ecx,           (%esp)
33         # Round 0 
34         movl    (%ebx),         %eax
35         mull    %ebp
36         addl    %esi,           %eax
37         movl    (%edi),         %esi
38         adcl    $0,             %edx
39         addl    %esi,           %eax
40         adcl    $0,             %edx
41         movl    %eax,           (%edi)
42         movl    %edx,           %esi
43         # Round 4 
44         movl    4(%ebx),        %eax
45         mull    %ebp
46         addl    %esi,           %eax
47         movl    4(%edi),        %esi
48         adcl    $0,             %edx
49         addl    %esi,           %eax
50         adcl    $0,             %edx
51         movl    %eax,           4(%edi)
52         movl    %edx,           %esi
53         # Round 8 
54         movl    8(%ebx),        %eax
55         mull    %ebp
56         addl    %esi,           %eax
57         movl    8(%edi),        %esi
58         adcl    $0,             %edx
59         addl    %esi,           %eax
60         adcl    $0,             %edx
61         movl    %eax,           8(%edi)
62         movl    %edx,           %esi
63         # Round 12 
64         movl    12(%ebx),       %eax
65         mull    %ebp
66         addl    %esi,           %eax
67         movl    12(%edi),       %esi
68         adcl    $0,             %edx
69         addl    %esi,           %eax
70         adcl    $0,             %edx
71         movl    %eax,           12(%edi)
72         movl    %edx,           %esi
73         # Round 16 
74         movl    16(%ebx),       %eax
75         mull    %ebp
76         addl    %esi,           %eax
77         movl    16(%edi),       %esi
78         adcl    $0,             %edx
79         addl    %esi,           %eax
80         adcl    $0,             %edx
81         movl    %eax,           16(%edi)
82         movl    %edx,           %esi
83         # Round 20 
84         movl    20(%ebx),       %eax
85         mull    %ebp
86         addl    %esi,           %eax
87         movl    20(%edi),       %esi
88         adcl    $0,             %edx
89         addl    %esi,           %eax
90         adcl    $0,             %edx
91         movl    %eax,           20(%edi)
92         movl    %edx,           %esi
93         # Round 24 
94         movl    24(%ebx),       %eax
95         mull    %ebp
96         addl    %esi,           %eax
97         movl    24(%edi),       %esi
98         adcl    $0,             %edx
99         addl    %esi,           %eax
100         adcl    $0,             %edx
101         movl    %eax,           24(%edi)
102         movl    %edx,           %esi
103         # Round 28 
104         movl    28(%ebx),       %eax
105         mull    %ebp
106         addl    %esi,           %eax
107         movl    28(%edi),       %esi
108         adcl    $0,             %edx
109         addl    %esi,           %eax
110         adcl    $0,             %edx
111         movl    %eax,           28(%edi)
112         movl    %edx,           %esi
113
114         movl    (%esp),         %ecx
115         addl    $32,            %ebx
116         addl    $32,            %edi
117         subl    $8,             %ecx
118         jnz     .L001maw_loop
119 .L000maw_finish:
120         movl    32(%esp),       %ecx
121         andl    $7,             %ecx
122         jnz     .L002maw_finish2
123         jmp     .L003maw_end
124 .align 16
125 .L002maw_finish2:
126         # Tail Round 0 
127         movl    (%ebx),         %eax
128         mull    %ebp
129         addl    %esi,           %eax
130         movl    (%edi),         %esi
131         adcl    $0,             %edx
132         addl    %esi,           %eax
133         adcl    $0,             %edx
134         decl    %ecx
135         movl    %eax,           (%edi)
136         movl    %edx,           %esi
137         jz      .L003maw_end
138         # Tail Round 1 
139         movl    4(%ebx),        %eax
140         mull    %ebp
141         addl    %esi,           %eax
142         movl    4(%edi),        %esi
143         adcl    $0,             %edx
144         addl    %esi,           %eax
145         adcl    $0,             %edx
146         decl    %ecx
147         movl    %eax,           4(%edi)
148         movl    %edx,           %esi
149         jz      .L003maw_end
150         # Tail Round 2 
151         movl    8(%ebx),        %eax
152         mull    %ebp
153         addl    %esi,           %eax
154         movl    8(%edi),        %esi
155         adcl    $0,             %edx
156         addl    %esi,           %eax
157         adcl    $0,             %edx
158         decl    %ecx
159         movl    %eax,           8(%edi)
160         movl    %edx,           %esi
161         jz      .L003maw_end
162         # Tail Round 3 
163         movl    12(%ebx),       %eax
164         mull    %ebp
165         addl    %esi,           %eax
166         movl    12(%edi),       %esi
167         adcl    $0,             %edx
168         addl    %esi,           %eax
169         adcl    $0,             %edx
170         decl    %ecx
171         movl    %eax,           12(%edi)
172         movl    %edx,           %esi
173         jz      .L003maw_end
174         # Tail Round 4 
175         movl    16(%ebx),       %eax
176         mull    %ebp
177         addl    %esi,           %eax
178         movl    16(%edi),       %esi
179         adcl    $0,             %edx
180         addl    %esi,           %eax
181         adcl    $0,             %edx
182         decl    %ecx
183         movl    %eax,           16(%edi)
184         movl    %edx,           %esi
185         jz      .L003maw_end
186         # Tail Round 5 
187         movl    20(%ebx),       %eax
188         mull    %ebp
189         addl    %esi,           %eax
190         movl    20(%edi),       %esi
191         adcl    $0,             %edx
192         addl    %esi,           %eax
193         adcl    $0,             %edx
194         decl    %ecx
195         movl    %eax,           20(%edi)
196         movl    %edx,           %esi
197         jz      .L003maw_end
198         # Tail Round 6 
199         movl    24(%ebx),       %eax
200         mull    %ebp
201         addl    %esi,           %eax
202         movl    24(%edi),       %esi
203         adcl    $0,             %edx
204         addl    %esi,           %eax
205         adcl    $0,             %edx
206         movl    %eax,           24(%edi)
207         movl    %edx,           %esi
208 .L003maw_end:
209         movl    %esi,           %eax
210         popl    %ecx
211         popl    %edi
212         popl    %esi
213         popl    %ebx
214         popl    %ebp
215         ret
216 .bn_mul_add_words_end:
217         .size   bn_mul_add_words,.bn_mul_add_words_end-bn_mul_add_words
218 .ident  "bn_mul_add_words"
219 .text
220         .align 16
221 .globl bn_mul_words
222         .type   bn_mul_words,@function
223 bn_mul_words:
224         pushl   %ebp
225         pushl   %ebx
226         pushl   %esi
227         pushl   %edi
228
229
230         xorl    %esi,           %esi
231         movl    20(%esp),       %edi
232         movl    24(%esp),       %ebx
233         movl    28(%esp),       %ebp
234         movl    32(%esp),       %ecx
235         andl    $4294967288,    %ebp
236         jz      .L004mw_finish
237 .L005mw_loop:
238         # Round 0 
239         movl    (%ebx),         %eax
240         mull    %ecx
241         addl    %esi,           %eax
242         adcl    $0,             %edx
243         movl    %eax,           (%edi)
244         movl    %edx,           %esi
245         # Round 4 
246         movl    4(%ebx),        %eax
247         mull    %ecx
248         addl    %esi,           %eax
249         adcl    $0,             %edx
250         movl    %eax,           4(%edi)
251         movl    %edx,           %esi
252         # Round 8 
253         movl    8(%ebx),        %eax
254         mull    %ecx
255         addl    %esi,           %eax
256         adcl    $0,             %edx
257         movl    %eax,           8(%edi)
258         movl    %edx,           %esi
259         # Round 12 
260         movl    12(%ebx),       %eax
261         mull    %ecx
262         addl    %esi,           %eax
263         adcl    $0,             %edx
264         movl    %eax,           12(%edi)
265         movl    %edx,           %esi
266         # Round 16 
267         movl    16(%ebx),       %eax
268         mull    %ecx
269         addl    %esi,           %eax
270         adcl    $0,             %edx
271         movl    %eax,           16(%edi)
272         movl    %edx,           %esi
273         # Round 20 
274         movl    20(%ebx),       %eax
275         mull    %ecx
276         addl    %esi,           %eax
277         adcl    $0,             %edx
278         movl    %eax,           20(%edi)
279         movl    %edx,           %esi
280         # Round 24 
281         movl    24(%ebx),       %eax
282         mull    %ecx
283         addl    %esi,           %eax
284         adcl    $0,             %edx
285         movl    %eax,           24(%edi)
286         movl    %edx,           %esi
287         # Round 28 
288         movl    28(%ebx),       %eax
289         mull    %ecx
290         addl    %esi,           %eax
291         adcl    $0,             %edx
292         movl    %eax,           28(%edi)
293         movl    %edx,           %esi
294
295         addl    $32,            %ebx
296         addl    $32,            %edi
297         subl    $8,             %ebp
298         jz      .L004mw_finish
299         jmp     .L005mw_loop
300 .L004mw_finish:
301         movl    28(%esp),       %ebp
302         andl    $7,             %ebp
303         jnz     .L006mw_finish2
304         jmp     .L007mw_end
305 .align 16
306 .L006mw_finish2:
307         # Tail Round 0 
308         movl    (%ebx),         %eax
309         mull    %ecx
310         addl    %esi,           %eax
311         adcl    $0,             %edx
312         movl    %eax,           (%edi)
313         movl    %edx,           %esi
314         decl    %ebp
315         jz      .L007mw_end
316         # Tail Round 1 
317         movl    4(%ebx),        %eax
318         mull    %ecx
319         addl    %esi,           %eax
320         adcl    $0,             %edx
321         movl    %eax,           4(%edi)
322         movl    %edx,           %esi
323         decl    %ebp
324         jz      .L007mw_end
325         # Tail Round 2 
326         movl    8(%ebx),        %eax
327         mull    %ecx
328         addl    %esi,           %eax
329         adcl    $0,             %edx
330         movl    %eax,           8(%edi)
331         movl    %edx,           %esi
332         decl    %ebp
333         jz      .L007mw_end
334         # Tail Round 3 
335         movl    12(%ebx),       %eax
336         mull    %ecx
337         addl    %esi,           %eax
338         adcl    $0,             %edx
339         movl    %eax,           12(%edi)
340         movl    %edx,           %esi
341         decl    %ebp
342         jz      .L007mw_end
343         # Tail Round 4 
344         movl    16(%ebx),       %eax
345         mull    %ecx
346         addl    %esi,           %eax
347         adcl    $0,             %edx
348         movl    %eax,           16(%edi)
349         movl    %edx,           %esi
350         decl    %ebp
351         jz      .L007mw_end
352         # Tail Round 5 
353         movl    20(%ebx),       %eax
354         mull    %ecx
355         addl    %esi,           %eax
356         adcl    $0,             %edx
357         movl    %eax,           20(%edi)
358         movl    %edx,           %esi
359         decl    %ebp
360         jz      .L007mw_end
361         # Tail Round 6 
362         movl    24(%ebx),       %eax
363         mull    %ecx
364         addl    %esi,           %eax
365         adcl    $0,             %edx
366         movl    %eax,           24(%edi)
367         movl    %edx,           %esi
368 .L007mw_end:
369         movl    %esi,           %eax
370         popl    %edi
371         popl    %esi
372         popl    %ebx
373         popl    %ebp
374         ret
375 .bn_mul_words_end:
376         .size   bn_mul_words,.bn_mul_words_end-bn_mul_words
377 .ident  "bn_mul_words"
378 .text
379         .align 16
380 .globl bn_sqr_words
381         .type   bn_sqr_words,@function
382 bn_sqr_words:
383         pushl   %ebp
384         pushl   %ebx
385         pushl   %esi
386         pushl   %edi
387
388
389         movl    20(%esp),       %esi
390         movl    24(%esp),       %edi
391         movl    28(%esp),       %ebx
392         andl    $4294967288,    %ebx
393         jz      .L008sw_finish
394 .L009sw_loop:
395         # Round 0 
396         movl    (%edi),         %eax
397         mull    %eax
398         movl    %eax,           (%esi)
399         movl    %edx,           4(%esi)
400         # Round 4 
401         movl    4(%edi),        %eax
402         mull    %eax
403         movl    %eax,           8(%esi)
404         movl    %edx,           12(%esi)
405         # Round 8 
406         movl    8(%edi),        %eax
407         mull    %eax
408         movl    %eax,           16(%esi)
409         movl    %edx,           20(%esi)
410         # Round 12 
411         movl    12(%edi),       %eax
412         mull    %eax
413         movl    %eax,           24(%esi)
414         movl    %edx,           28(%esi)
415         # Round 16 
416         movl    16(%edi),       %eax
417         mull    %eax
418         movl    %eax,           32(%esi)
419         movl    %edx,           36(%esi)
420         # Round 20 
421         movl    20(%edi),       %eax
422         mull    %eax
423         movl    %eax,           40(%esi)
424         movl    %edx,           44(%esi)
425         # Round 24 
426         movl    24(%edi),       %eax
427         mull    %eax
428         movl    %eax,           48(%esi)
429         movl    %edx,           52(%esi)
430         # Round 28 
431         movl    28(%edi),       %eax
432         mull    %eax
433         movl    %eax,           56(%esi)
434         movl    %edx,           60(%esi)
435
436         addl    $32,            %edi
437         addl    $64,            %esi
438         subl    $8,             %ebx
439         jnz     .L009sw_loop
440 .L008sw_finish:
441         movl    28(%esp),       %ebx
442         andl    $7,             %ebx
443         jz      .L010sw_end
444         # Tail Round 0 
445         movl    (%edi),         %eax
446         mull    %eax
447         movl    %eax,           (%esi)
448         decl    %ebx
449         movl    %edx,           4(%esi)
450         jz      .L010sw_end
451         # Tail Round 1 
452         movl    4(%edi),        %eax
453         mull    %eax
454         movl    %eax,           8(%esi)
455         decl    %ebx
456         movl    %edx,           12(%esi)
457         jz      .L010sw_end
458         # Tail Round 2 
459         movl    8(%edi),        %eax
460         mull    %eax
461         movl    %eax,           16(%esi)
462         decl    %ebx
463         movl    %edx,           20(%esi)
464         jz      .L010sw_end
465         # Tail Round 3 
466         movl    12(%edi),       %eax
467         mull    %eax
468         movl    %eax,           24(%esi)
469         decl    %ebx
470         movl    %edx,           28(%esi)
471         jz      .L010sw_end
472         # Tail Round 4 
473         movl    16(%edi),       %eax
474         mull    %eax
475         movl    %eax,           32(%esi)
476         decl    %ebx
477         movl    %edx,           36(%esi)
478         jz      .L010sw_end
479         # Tail Round 5 
480         movl    20(%edi),       %eax
481         mull    %eax
482         movl    %eax,           40(%esi)
483         decl    %ebx
484         movl    %edx,           44(%esi)
485         jz      .L010sw_end
486         # Tail Round 6 
487         movl    24(%edi),       %eax
488         mull    %eax
489         movl    %eax,           48(%esi)
490         movl    %edx,           52(%esi)
491 .L010sw_end:
492         popl    %edi
493         popl    %esi
494         popl    %ebx
495         popl    %ebp
496         ret
497 .bn_sqr_words_end:
498         .size   bn_sqr_words,.bn_sqr_words_end-bn_sqr_words
499 .ident  "bn_sqr_words"
500 .text
501         .align 16
502 .globl bn_div_words
503         .type   bn_div_words,@function
504 bn_div_words:
505         pushl   %ebp
506         pushl   %ebx
507         pushl   %esi
508         pushl   %edi
509
510         movl    20(%esp),       %edx
511         movl    24(%esp),       %eax
512         movl    28(%esp),       %ebx
513         divl    %ebx
514         popl    %edi
515         popl    %esi
516         popl    %ebx
517         popl    %ebp
518         ret
519 .bn_div_words_end:
520         .size   bn_div_words,.bn_div_words_end-bn_div_words
521 .ident  "bn_div_words"
522 .text
523         .align 16
524 .globl bn_add_words
525         .type   bn_add_words,@function
526 bn_add_words:
527         pushl   %ebp
528         pushl   %ebx
529         pushl   %esi
530         pushl   %edi
531
532
533         movl    20(%esp),       %ebx
534         movl    24(%esp),       %esi
535         movl    28(%esp),       %edi
536         movl    32(%esp),       %ebp
537         xorl    %eax,           %eax
538         andl    $4294967288,    %ebp
539         jz      .L011aw_finish
540 .L012aw_loop:
541         # Round 0 
542         movl    (%esi),         %ecx
543         movl    (%edi),         %edx
544         addl    %eax,           %ecx
545         movl    $0,             %eax
546         adcl    %eax,           %eax
547         addl    %edx,           %ecx
548         adcl    $0,             %eax
549         movl    %ecx,           (%ebx)
550         # Round 1 
551         movl    4(%esi),        %ecx
552         movl    4(%edi),        %edx
553         addl    %eax,           %ecx
554         movl    $0,             %eax
555         adcl    %eax,           %eax
556         addl    %edx,           %ecx
557         adcl    $0,             %eax
558         movl    %ecx,           4(%ebx)
559         # Round 2 
560         movl    8(%esi),        %ecx
561         movl    8(%edi),        %edx
562         addl    %eax,           %ecx
563         movl    $0,             %eax
564         adcl    %eax,           %eax
565         addl    %edx,           %ecx
566         adcl    $0,             %eax
567         movl    %ecx,           8(%ebx)
568         # Round 3 
569         movl    12(%esi),       %ecx
570         movl    12(%edi),       %edx
571         addl    %eax,           %ecx
572         movl    $0,             %eax
573         adcl    %eax,           %eax
574         addl    %edx,           %ecx
575         adcl    $0,             %eax
576         movl    %ecx,           12(%ebx)
577         # Round 4 
578         movl    16(%esi),       %ecx
579         movl    16(%edi),       %edx
580         addl    %eax,           %ecx
581         movl    $0,             %eax
582         adcl    %eax,           %eax
583         addl    %edx,           %ecx
584         adcl    $0,             %eax
585         movl    %ecx,           16(%ebx)
586         # Round 5 
587         movl    20(%esi),       %ecx
588         movl    20(%edi),       %edx
589         addl    %eax,           %ecx
590         movl    $0,             %eax
591         adcl    %eax,           %eax
592         addl    %edx,           %ecx
593         adcl    $0,             %eax
594         movl    %ecx,           20(%ebx)
595         # Round 6 
596         movl    24(%esi),       %ecx
597         movl    24(%edi),       %edx
598         addl    %eax,           %ecx
599         movl    $0,             %eax
600         adcl    %eax,           %eax
601         addl    %edx,           %ecx
602         adcl    $0,             %eax
603         movl    %ecx,           24(%ebx)
604         # Round 7 
605         movl    28(%esi),       %ecx
606         movl    28(%edi),       %edx
607         addl    %eax,           %ecx
608         movl    $0,             %eax
609         adcl    %eax,           %eax
610         addl    %edx,           %ecx
611         adcl    $0,             %eax
612         movl    %ecx,           28(%ebx)
613
614         addl    $32,            %esi
615         addl    $32,            %edi
616         addl    $32,            %ebx
617         subl    $8,             %ebp
618         jnz     .L012aw_loop
619 .L011aw_finish:
620         movl    32(%esp),       %ebp
621         andl    $7,             %ebp
622         jz      .L013aw_end
623         # Tail Round 0 
624         movl    (%esi),         %ecx
625         movl    (%edi),         %edx
626         addl    %eax,           %ecx
627         movl    $0,             %eax
628         adcl    %eax,           %eax
629         addl    %edx,           %ecx
630         adcl    $0,             %eax
631         decl    %ebp
632         movl    %ecx,           (%ebx)
633         jz      .L013aw_end
634         # Tail Round 1 
635         movl    4(%esi),        %ecx
636         movl    4(%edi),        %edx
637         addl    %eax,           %ecx
638         movl    $0,             %eax
639         adcl    %eax,           %eax
640         addl    %edx,           %ecx
641         adcl    $0,             %eax
642         decl    %ebp
643         movl    %ecx,           4(%ebx)
644         jz      .L013aw_end
645         # Tail Round 2 
646         movl    8(%esi),        %ecx
647         movl    8(%edi),        %edx
648         addl    %eax,           %ecx
649         movl    $0,             %eax
650         adcl    %eax,           %eax
651         addl    %edx,           %ecx
652         adcl    $0,             %eax
653         decl    %ebp
654         movl    %ecx,           8(%ebx)
655         jz      .L013aw_end
656         # Tail Round 3 
657         movl    12(%esi),       %ecx
658         movl    12(%edi),       %edx
659         addl    %eax,           %ecx
660         movl    $0,             %eax
661         adcl    %eax,           %eax
662         addl    %edx,           %ecx
663         adcl    $0,             %eax
664         decl    %ebp
665         movl    %ecx,           12(%ebx)
666         jz      .L013aw_end
667         # Tail Round 4 
668         movl    16(%esi),       %ecx
669         movl    16(%edi),       %edx
670         addl    %eax,           %ecx
671         movl    $0,             %eax
672         adcl    %eax,           %eax
673         addl    %edx,           %ecx
674         adcl    $0,             %eax
675         decl    %ebp
676         movl    %ecx,           16(%ebx)
677         jz      .L013aw_end
678         # Tail Round 5 
679         movl    20(%esi),       %ecx
680         movl    20(%edi),       %edx
681         addl    %eax,           %ecx
682         movl    $0,             %eax
683         adcl    %eax,           %eax
684         addl    %edx,           %ecx
685         adcl    $0,             %eax
686         decl    %ebp
687         movl    %ecx,           20(%ebx)
688         jz      .L013aw_end
689         # Tail Round 6 
690         movl    24(%esi),       %ecx
691         movl    24(%edi),       %edx
692         addl    %eax,           %ecx
693         movl    $0,             %eax
694         adcl    %eax,           %eax
695         addl    %edx,           %ecx
696         adcl    $0,             %eax
697         movl    %ecx,           24(%ebx)
698 .L013aw_end:
699         popl    %edi
700         popl    %esi
701         popl    %ebx
702         popl    %ebp
703         ret
704 .bn_add_words_end:
705         .size   bn_add_words,.bn_add_words_end-bn_add_words
706 .ident  "bn_add_words"
707 .text
708         .align 16
709 .globl bn_sub_words
710         .type   bn_sub_words,@function
711 bn_sub_words:
712         pushl   %ebp
713         pushl   %ebx
714         pushl   %esi
715         pushl   %edi
716
717
718         movl    20(%esp),       %ebx
719         movl    24(%esp),       %esi
720         movl    28(%esp),       %edi
721         movl    32(%esp),       %ebp
722         xorl    %eax,           %eax
723         andl    $4294967288,    %ebp
724         jz      .L014aw_finish
725 .L015aw_loop:
726         # Round 0 
727         movl    (%esi),         %ecx
728         movl    (%edi),         %edx
729         subl    %eax,           %ecx
730         movl    $0,             %eax
731         adcl    %eax,           %eax
732         subl    %edx,           %ecx
733         adcl    $0,             %eax
734         movl    %ecx,           (%ebx)
735         # Round 1 
736         movl    4(%esi),        %ecx
737         movl    4(%edi),        %edx
738         subl    %eax,           %ecx
739         movl    $0,             %eax
740         adcl    %eax,           %eax
741         subl    %edx,           %ecx
742         adcl    $0,             %eax
743         movl    %ecx,           4(%ebx)
744         # Round 2 
745         movl    8(%esi),        %ecx
746         movl    8(%edi),        %edx
747         subl    %eax,           %ecx
748         movl    $0,             %eax
749         adcl    %eax,           %eax
750         subl    %edx,           %ecx
751         adcl    $0,             %eax
752         movl    %ecx,           8(%ebx)
753         # Round 3 
754         movl    12(%esi),       %ecx
755         movl    12(%edi),       %edx
756         subl    %eax,           %ecx
757         movl    $0,             %eax
758         adcl    %eax,           %eax
759         subl    %edx,           %ecx
760         adcl    $0,             %eax
761         movl    %ecx,           12(%ebx)
762         # Round 4 
763         movl    16(%esi),       %ecx
764         movl    16(%edi),       %edx
765         subl    %eax,           %ecx
766         movl    $0,             %eax
767         adcl    %eax,           %eax
768         subl    %edx,           %ecx
769         adcl    $0,             %eax
770         movl    %ecx,           16(%ebx)
771         # Round 5 
772         movl    20(%esi),       %ecx
773         movl    20(%edi),       %edx
774         subl    %eax,           %ecx
775         movl    $0,             %eax
776         adcl    %eax,           %eax
777         subl    %edx,           %ecx
778         adcl    $0,             %eax
779         movl    %ecx,           20(%ebx)
780         # Round 6 
781         movl    24(%esi),       %ecx
782         movl    24(%edi),       %edx
783         subl    %eax,           %ecx
784         movl    $0,             %eax
785         adcl    %eax,           %eax
786         subl    %edx,           %ecx
787         adcl    $0,             %eax
788         movl    %ecx,           24(%ebx)
789         # Round 7 
790         movl    28(%esi),       %ecx
791         movl    28(%edi),       %edx
792         subl    %eax,           %ecx
793         movl    $0,             %eax
794         adcl    %eax,           %eax
795         subl    %edx,           %ecx
796         adcl    $0,             %eax
797         movl    %ecx,           28(%ebx)
798
799         addl    $32,            %esi
800         addl    $32,            %edi
801         addl    $32,            %ebx
802         subl    $8,             %ebp
803         jnz     .L015aw_loop
804 .L014aw_finish:
805         movl    32(%esp),       %ebp
806         andl    $7,             %ebp
807         jz      .L016aw_end
808         # Tail Round 0 
809         movl    (%esi),         %ecx
810         movl    (%edi),         %edx
811         subl    %eax,           %ecx
812         movl    $0,             %eax
813         adcl    %eax,           %eax
814         subl    %edx,           %ecx
815         adcl    $0,             %eax
816         decl    %ebp
817         movl    %ecx,           (%ebx)
818         jz      .L016aw_end
819         # Tail Round 1 
820         movl    4(%esi),        %ecx
821         movl    4(%edi),        %edx
822         subl    %eax,           %ecx
823         movl    $0,             %eax
824         adcl    %eax,           %eax
825         subl    %edx,           %ecx
826         adcl    $0,             %eax
827         decl    %ebp
828         movl    %ecx,           4(%ebx)
829         jz      .L016aw_end
830         # Tail Round 2 
831         movl    8(%esi),        %ecx
832         movl    8(%edi),        %edx
833         subl    %eax,           %ecx
834         movl    $0,             %eax
835         adcl    %eax,           %eax
836         subl    %edx,           %ecx
837         adcl    $0,             %eax
838         decl    %ebp
839         movl    %ecx,           8(%ebx)
840         jz      .L016aw_end
841         # Tail Round 3 
842         movl    12(%esi),       %ecx
843         movl    12(%edi),       %edx
844         subl    %eax,           %ecx
845         movl    $0,             %eax
846         adcl    %eax,           %eax
847         subl    %edx,           %ecx
848         adcl    $0,             %eax
849         decl    %ebp
850         movl    %ecx,           12(%ebx)
851         jz      .L016aw_end
852         # Tail Round 4 
853         movl    16(%esi),       %ecx
854         movl    16(%edi),       %edx
855         subl    %eax,           %ecx
856         movl    $0,             %eax
857         adcl    %eax,           %eax
858         subl    %edx,           %ecx
859         adcl    $0,             %eax
860         decl    %ebp
861         movl    %ecx,           16(%ebx)
862         jz      .L016aw_end
863         # Tail Round 5 
864         movl    20(%esi),       %ecx
865         movl    20(%edi),       %edx
866         subl    %eax,           %ecx
867         movl    $0,             %eax
868         adcl    %eax,           %eax
869         subl    %edx,           %ecx
870         adcl    $0,             %eax
871         decl    %ebp
872         movl    %ecx,           20(%ebx)
873         jz      .L016aw_end
874         # Tail Round 6 
875         movl    24(%esi),       %ecx
876         movl    24(%edi),       %edx
877         subl    %eax,           %ecx
878         movl    $0,             %eax
879         adcl    %eax,           %eax
880         subl    %edx,           %ecx
881         adcl    $0,             %eax
882         movl    %ecx,           24(%ebx)
883 .L016aw_end:
884         popl    %edi
885         popl    %esi
886         popl    %ebx
887         popl    %ebp
888         ret
889 .bn_sub_words_end:
890         .size   bn_sub_words,.bn_sub_words_end-bn_sub_words
891 .ident  "bn_sub_words"