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