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