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