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