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