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