]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - secure/lib/libcrypto/i386/bf-686.S
- Make libcrypto.so position independent on i386.
[FreeBSD/stable/10.git] / secure / lib / libcrypto / i386 / bf-686.S
1 # $FreeBSD$
2 # Do not modify. This file is auto-generated from bf-686.pl.
3 #ifdef PIC
4 .file   "bf-686.S"
5 .text
6 .globl  BF_encrypt
7 .type   BF_encrypt,@function
8 .align  16
9 BF_encrypt:
10 .L_BF_encrypt_begin:
11         pushl   %ebp
12         pushl   %ebx
13         pushl   %esi
14         pushl   %edi
15
16
17         movl    20(%esp),%eax
18         movl    (%eax),%ecx
19         movl    4(%eax),%edx
20
21
22         movl    24(%esp),%edi
23         xorl    %eax,%eax
24         xorl    %ebx,%ebx
25         xorl    (%edi),%ecx
26
27
28         rorl    $16,%ecx
29         movl    4(%edi),%esi
30         movb    %ch,%al
31         movb    %cl,%bl
32         rorl    $16,%ecx
33         xorl    %esi,%edx
34         movl    72(%edi,%eax,4),%esi
35         movl    1096(%edi,%ebx,4),%ebp
36         movb    %ch,%al
37         movb    %cl,%bl
38         addl    %ebp,%esi
39         movl    2120(%edi,%eax,4),%eax
40         xorl    %eax,%esi
41         movl    3144(%edi,%ebx,4),%ebp
42         addl    %ebp,%esi
43         xorl    %eax,%eax
44         xorl    %esi,%edx
45
46
47         rorl    $16,%edx
48         movl    8(%edi),%esi
49         movb    %dh,%al
50         movb    %dl,%bl
51         rorl    $16,%edx
52         xorl    %esi,%ecx
53         movl    72(%edi,%eax,4),%esi
54         movl    1096(%edi,%ebx,4),%ebp
55         movb    %dh,%al
56         movb    %dl,%bl
57         addl    %ebp,%esi
58         movl    2120(%edi,%eax,4),%eax
59         xorl    %eax,%esi
60         movl    3144(%edi,%ebx,4),%ebp
61         addl    %ebp,%esi
62         xorl    %eax,%eax
63         xorl    %esi,%ecx
64
65
66         rorl    $16,%ecx
67         movl    12(%edi),%esi
68         movb    %ch,%al
69         movb    %cl,%bl
70         rorl    $16,%ecx
71         xorl    %esi,%edx
72         movl    72(%edi,%eax,4),%esi
73         movl    1096(%edi,%ebx,4),%ebp
74         movb    %ch,%al
75         movb    %cl,%bl
76         addl    %ebp,%esi
77         movl    2120(%edi,%eax,4),%eax
78         xorl    %eax,%esi
79         movl    3144(%edi,%ebx,4),%ebp
80         addl    %ebp,%esi
81         xorl    %eax,%eax
82         xorl    %esi,%edx
83
84
85         rorl    $16,%edx
86         movl    16(%edi),%esi
87         movb    %dh,%al
88         movb    %dl,%bl
89         rorl    $16,%edx
90         xorl    %esi,%ecx
91         movl    72(%edi,%eax,4),%esi
92         movl    1096(%edi,%ebx,4),%ebp
93         movb    %dh,%al
94         movb    %dl,%bl
95         addl    %ebp,%esi
96         movl    2120(%edi,%eax,4),%eax
97         xorl    %eax,%esi
98         movl    3144(%edi,%ebx,4),%ebp
99         addl    %ebp,%esi
100         xorl    %eax,%eax
101         xorl    %esi,%ecx
102
103
104         rorl    $16,%ecx
105         movl    20(%edi),%esi
106         movb    %ch,%al
107         movb    %cl,%bl
108         rorl    $16,%ecx
109         xorl    %esi,%edx
110         movl    72(%edi,%eax,4),%esi
111         movl    1096(%edi,%ebx,4),%ebp
112         movb    %ch,%al
113         movb    %cl,%bl
114         addl    %ebp,%esi
115         movl    2120(%edi,%eax,4),%eax
116         xorl    %eax,%esi
117         movl    3144(%edi,%ebx,4),%ebp
118         addl    %ebp,%esi
119         xorl    %eax,%eax
120         xorl    %esi,%edx
121
122
123         rorl    $16,%edx
124         movl    24(%edi),%esi
125         movb    %dh,%al
126         movb    %dl,%bl
127         rorl    $16,%edx
128         xorl    %esi,%ecx
129         movl    72(%edi,%eax,4),%esi
130         movl    1096(%edi,%ebx,4),%ebp
131         movb    %dh,%al
132         movb    %dl,%bl
133         addl    %ebp,%esi
134         movl    2120(%edi,%eax,4),%eax
135         xorl    %eax,%esi
136         movl    3144(%edi,%ebx,4),%ebp
137         addl    %ebp,%esi
138         xorl    %eax,%eax
139         xorl    %esi,%ecx
140
141
142         rorl    $16,%ecx
143         movl    28(%edi),%esi
144         movb    %ch,%al
145         movb    %cl,%bl
146         rorl    $16,%ecx
147         xorl    %esi,%edx
148         movl    72(%edi,%eax,4),%esi
149         movl    1096(%edi,%ebx,4),%ebp
150         movb    %ch,%al
151         movb    %cl,%bl
152         addl    %ebp,%esi
153         movl    2120(%edi,%eax,4),%eax
154         xorl    %eax,%esi
155         movl    3144(%edi,%ebx,4),%ebp
156         addl    %ebp,%esi
157         xorl    %eax,%eax
158         xorl    %esi,%edx
159
160
161         rorl    $16,%edx
162         movl    32(%edi),%esi
163         movb    %dh,%al
164         movb    %dl,%bl
165         rorl    $16,%edx
166         xorl    %esi,%ecx
167         movl    72(%edi,%eax,4),%esi
168         movl    1096(%edi,%ebx,4),%ebp
169         movb    %dh,%al
170         movb    %dl,%bl
171         addl    %ebp,%esi
172         movl    2120(%edi,%eax,4),%eax
173         xorl    %eax,%esi
174         movl    3144(%edi,%ebx,4),%ebp
175         addl    %ebp,%esi
176         xorl    %eax,%eax
177         xorl    %esi,%ecx
178
179
180         rorl    $16,%ecx
181         movl    36(%edi),%esi
182         movb    %ch,%al
183         movb    %cl,%bl
184         rorl    $16,%ecx
185         xorl    %esi,%edx
186         movl    72(%edi,%eax,4),%esi
187         movl    1096(%edi,%ebx,4),%ebp
188         movb    %ch,%al
189         movb    %cl,%bl
190         addl    %ebp,%esi
191         movl    2120(%edi,%eax,4),%eax
192         xorl    %eax,%esi
193         movl    3144(%edi,%ebx,4),%ebp
194         addl    %ebp,%esi
195         xorl    %eax,%eax
196         xorl    %esi,%edx
197
198
199         rorl    $16,%edx
200         movl    40(%edi),%esi
201         movb    %dh,%al
202         movb    %dl,%bl
203         rorl    $16,%edx
204         xorl    %esi,%ecx
205         movl    72(%edi,%eax,4),%esi
206         movl    1096(%edi,%ebx,4),%ebp
207         movb    %dh,%al
208         movb    %dl,%bl
209         addl    %ebp,%esi
210         movl    2120(%edi,%eax,4),%eax
211         xorl    %eax,%esi
212         movl    3144(%edi,%ebx,4),%ebp
213         addl    %ebp,%esi
214         xorl    %eax,%eax
215         xorl    %esi,%ecx
216
217
218         rorl    $16,%ecx
219         movl    44(%edi),%esi
220         movb    %ch,%al
221         movb    %cl,%bl
222         rorl    $16,%ecx
223         xorl    %esi,%edx
224         movl    72(%edi,%eax,4),%esi
225         movl    1096(%edi,%ebx,4),%ebp
226         movb    %ch,%al
227         movb    %cl,%bl
228         addl    %ebp,%esi
229         movl    2120(%edi,%eax,4),%eax
230         xorl    %eax,%esi
231         movl    3144(%edi,%ebx,4),%ebp
232         addl    %ebp,%esi
233         xorl    %eax,%eax
234         xorl    %esi,%edx
235
236
237         rorl    $16,%edx
238         movl    48(%edi),%esi
239         movb    %dh,%al
240         movb    %dl,%bl
241         rorl    $16,%edx
242         xorl    %esi,%ecx
243         movl    72(%edi,%eax,4),%esi
244         movl    1096(%edi,%ebx,4),%ebp
245         movb    %dh,%al
246         movb    %dl,%bl
247         addl    %ebp,%esi
248         movl    2120(%edi,%eax,4),%eax
249         xorl    %eax,%esi
250         movl    3144(%edi,%ebx,4),%ebp
251         addl    %ebp,%esi
252         xorl    %eax,%eax
253         xorl    %esi,%ecx
254
255
256         rorl    $16,%ecx
257         movl    52(%edi),%esi
258         movb    %ch,%al
259         movb    %cl,%bl
260         rorl    $16,%ecx
261         xorl    %esi,%edx
262         movl    72(%edi,%eax,4),%esi
263         movl    1096(%edi,%ebx,4),%ebp
264         movb    %ch,%al
265         movb    %cl,%bl
266         addl    %ebp,%esi
267         movl    2120(%edi,%eax,4),%eax
268         xorl    %eax,%esi
269         movl    3144(%edi,%ebx,4),%ebp
270         addl    %ebp,%esi
271         xorl    %eax,%eax
272         xorl    %esi,%edx
273
274
275         rorl    $16,%edx
276         movl    56(%edi),%esi
277         movb    %dh,%al
278         movb    %dl,%bl
279         rorl    $16,%edx
280         xorl    %esi,%ecx
281         movl    72(%edi,%eax,4),%esi
282         movl    1096(%edi,%ebx,4),%ebp
283         movb    %dh,%al
284         movb    %dl,%bl
285         addl    %ebp,%esi
286         movl    2120(%edi,%eax,4),%eax
287         xorl    %eax,%esi
288         movl    3144(%edi,%ebx,4),%ebp
289         addl    %ebp,%esi
290         xorl    %eax,%eax
291         xorl    %esi,%ecx
292
293
294         rorl    $16,%ecx
295         movl    60(%edi),%esi
296         movb    %ch,%al
297         movb    %cl,%bl
298         rorl    $16,%ecx
299         xorl    %esi,%edx
300         movl    72(%edi,%eax,4),%esi
301         movl    1096(%edi,%ebx,4),%ebp
302         movb    %ch,%al
303         movb    %cl,%bl
304         addl    %ebp,%esi
305         movl    2120(%edi,%eax,4),%eax
306         xorl    %eax,%esi
307         movl    3144(%edi,%ebx,4),%ebp
308         addl    %ebp,%esi
309         xorl    %eax,%eax
310         xorl    %esi,%edx
311
312
313         rorl    $16,%edx
314         movl    64(%edi),%esi
315         movb    %dh,%al
316         movb    %dl,%bl
317         rorl    $16,%edx
318         xorl    %esi,%ecx
319         movl    72(%edi,%eax,4),%esi
320         movl    1096(%edi,%ebx,4),%ebp
321         movb    %dh,%al
322         movb    %dl,%bl
323         addl    %ebp,%esi
324         movl    2120(%edi,%eax,4),%eax
325         xorl    %eax,%esi
326         movl    3144(%edi,%ebx,4),%ebp
327         addl    %ebp,%esi
328         xorl    %eax,%eax
329         xorl    %esi,%ecx
330         xorl    68(%edi),%edx
331         movl    20(%esp),%eax
332         movl    %edx,(%eax)
333         movl    %ecx,4(%eax)
334         popl    %edi
335         popl    %esi
336         popl    %ebx
337         popl    %ebp
338         ret
339 .size   BF_encrypt,.-.L_BF_encrypt_begin
340 .globl  BF_decrypt
341 .type   BF_decrypt,@function
342 .align  16
343 BF_decrypt:
344 .L_BF_decrypt_begin:
345         pushl   %ebp
346         pushl   %ebx
347         pushl   %esi
348         pushl   %edi
349
350
351         movl    20(%esp),%eax
352         movl    (%eax),%ecx
353         movl    4(%eax),%edx
354
355
356         movl    24(%esp),%edi
357         xorl    %eax,%eax
358         xorl    %ebx,%ebx
359         xorl    68(%edi),%ecx
360
361
362         rorl    $16,%ecx
363         movl    64(%edi),%esi
364         movb    %ch,%al
365         movb    %cl,%bl
366         rorl    $16,%ecx
367         xorl    %esi,%edx
368         movl    72(%edi,%eax,4),%esi
369         movl    1096(%edi,%ebx,4),%ebp
370         movb    %ch,%al
371         movb    %cl,%bl
372         addl    %ebp,%esi
373         movl    2120(%edi,%eax,4),%eax
374         xorl    %eax,%esi
375         movl    3144(%edi,%ebx,4),%ebp
376         addl    %ebp,%esi
377         xorl    %eax,%eax
378         xorl    %esi,%edx
379
380
381         rorl    $16,%edx
382         movl    60(%edi),%esi
383         movb    %dh,%al
384         movb    %dl,%bl
385         rorl    $16,%edx
386         xorl    %esi,%ecx
387         movl    72(%edi,%eax,4),%esi
388         movl    1096(%edi,%ebx,4),%ebp
389         movb    %dh,%al
390         movb    %dl,%bl
391         addl    %ebp,%esi
392         movl    2120(%edi,%eax,4),%eax
393         xorl    %eax,%esi
394         movl    3144(%edi,%ebx,4),%ebp
395         addl    %ebp,%esi
396         xorl    %eax,%eax
397         xorl    %esi,%ecx
398
399
400         rorl    $16,%ecx
401         movl    56(%edi),%esi
402         movb    %ch,%al
403         movb    %cl,%bl
404         rorl    $16,%ecx
405         xorl    %esi,%edx
406         movl    72(%edi,%eax,4),%esi
407         movl    1096(%edi,%ebx,4),%ebp
408         movb    %ch,%al
409         movb    %cl,%bl
410         addl    %ebp,%esi
411         movl    2120(%edi,%eax,4),%eax
412         xorl    %eax,%esi
413         movl    3144(%edi,%ebx,4),%ebp
414         addl    %ebp,%esi
415         xorl    %eax,%eax
416         xorl    %esi,%edx
417
418
419         rorl    $16,%edx
420         movl    52(%edi),%esi
421         movb    %dh,%al
422         movb    %dl,%bl
423         rorl    $16,%edx
424         xorl    %esi,%ecx
425         movl    72(%edi,%eax,4),%esi
426         movl    1096(%edi,%ebx,4),%ebp
427         movb    %dh,%al
428         movb    %dl,%bl
429         addl    %ebp,%esi
430         movl    2120(%edi,%eax,4),%eax
431         xorl    %eax,%esi
432         movl    3144(%edi,%ebx,4),%ebp
433         addl    %ebp,%esi
434         xorl    %eax,%eax
435         xorl    %esi,%ecx
436
437
438         rorl    $16,%ecx
439         movl    48(%edi),%esi
440         movb    %ch,%al
441         movb    %cl,%bl
442         rorl    $16,%ecx
443         xorl    %esi,%edx
444         movl    72(%edi,%eax,4),%esi
445         movl    1096(%edi,%ebx,4),%ebp
446         movb    %ch,%al
447         movb    %cl,%bl
448         addl    %ebp,%esi
449         movl    2120(%edi,%eax,4),%eax
450         xorl    %eax,%esi
451         movl    3144(%edi,%ebx,4),%ebp
452         addl    %ebp,%esi
453         xorl    %eax,%eax
454         xorl    %esi,%edx
455
456
457         rorl    $16,%edx
458         movl    44(%edi),%esi
459         movb    %dh,%al
460         movb    %dl,%bl
461         rorl    $16,%edx
462         xorl    %esi,%ecx
463         movl    72(%edi,%eax,4),%esi
464         movl    1096(%edi,%ebx,4),%ebp
465         movb    %dh,%al
466         movb    %dl,%bl
467         addl    %ebp,%esi
468         movl    2120(%edi,%eax,4),%eax
469         xorl    %eax,%esi
470         movl    3144(%edi,%ebx,4),%ebp
471         addl    %ebp,%esi
472         xorl    %eax,%eax
473         xorl    %esi,%ecx
474
475
476         rorl    $16,%ecx
477         movl    40(%edi),%esi
478         movb    %ch,%al
479         movb    %cl,%bl
480         rorl    $16,%ecx
481         xorl    %esi,%edx
482         movl    72(%edi,%eax,4),%esi
483         movl    1096(%edi,%ebx,4),%ebp
484         movb    %ch,%al
485         movb    %cl,%bl
486         addl    %ebp,%esi
487         movl    2120(%edi,%eax,4),%eax
488         xorl    %eax,%esi
489         movl    3144(%edi,%ebx,4),%ebp
490         addl    %ebp,%esi
491         xorl    %eax,%eax
492         xorl    %esi,%edx
493
494
495         rorl    $16,%edx
496         movl    36(%edi),%esi
497         movb    %dh,%al
498         movb    %dl,%bl
499         rorl    $16,%edx
500         xorl    %esi,%ecx
501         movl    72(%edi,%eax,4),%esi
502         movl    1096(%edi,%ebx,4),%ebp
503         movb    %dh,%al
504         movb    %dl,%bl
505         addl    %ebp,%esi
506         movl    2120(%edi,%eax,4),%eax
507         xorl    %eax,%esi
508         movl    3144(%edi,%ebx,4),%ebp
509         addl    %ebp,%esi
510         xorl    %eax,%eax
511         xorl    %esi,%ecx
512
513
514         rorl    $16,%ecx
515         movl    32(%edi),%esi
516         movb    %ch,%al
517         movb    %cl,%bl
518         rorl    $16,%ecx
519         xorl    %esi,%edx
520         movl    72(%edi,%eax,4),%esi
521         movl    1096(%edi,%ebx,4),%ebp
522         movb    %ch,%al
523         movb    %cl,%bl
524         addl    %ebp,%esi
525         movl    2120(%edi,%eax,4),%eax
526         xorl    %eax,%esi
527         movl    3144(%edi,%ebx,4),%ebp
528         addl    %ebp,%esi
529         xorl    %eax,%eax
530         xorl    %esi,%edx
531
532
533         rorl    $16,%edx
534         movl    28(%edi),%esi
535         movb    %dh,%al
536         movb    %dl,%bl
537         rorl    $16,%edx
538         xorl    %esi,%ecx
539         movl    72(%edi,%eax,4),%esi
540         movl    1096(%edi,%ebx,4),%ebp
541         movb    %dh,%al
542         movb    %dl,%bl
543         addl    %ebp,%esi
544         movl    2120(%edi,%eax,4),%eax
545         xorl    %eax,%esi
546         movl    3144(%edi,%ebx,4),%ebp
547         addl    %ebp,%esi
548         xorl    %eax,%eax
549         xorl    %esi,%ecx
550
551
552         rorl    $16,%ecx
553         movl    24(%edi),%esi
554         movb    %ch,%al
555         movb    %cl,%bl
556         rorl    $16,%ecx
557         xorl    %esi,%edx
558         movl    72(%edi,%eax,4),%esi
559         movl    1096(%edi,%ebx,4),%ebp
560         movb    %ch,%al
561         movb    %cl,%bl
562         addl    %ebp,%esi
563         movl    2120(%edi,%eax,4),%eax
564         xorl    %eax,%esi
565         movl    3144(%edi,%ebx,4),%ebp
566         addl    %ebp,%esi
567         xorl    %eax,%eax
568         xorl    %esi,%edx
569
570
571         rorl    $16,%edx
572         movl    20(%edi),%esi
573         movb    %dh,%al
574         movb    %dl,%bl
575         rorl    $16,%edx
576         xorl    %esi,%ecx
577         movl    72(%edi,%eax,4),%esi
578         movl    1096(%edi,%ebx,4),%ebp
579         movb    %dh,%al
580         movb    %dl,%bl
581         addl    %ebp,%esi
582         movl    2120(%edi,%eax,4),%eax
583         xorl    %eax,%esi
584         movl    3144(%edi,%ebx,4),%ebp
585         addl    %ebp,%esi
586         xorl    %eax,%eax
587         xorl    %esi,%ecx
588
589
590         rorl    $16,%ecx
591         movl    16(%edi),%esi
592         movb    %ch,%al
593         movb    %cl,%bl
594         rorl    $16,%ecx
595         xorl    %esi,%edx
596         movl    72(%edi,%eax,4),%esi
597         movl    1096(%edi,%ebx,4),%ebp
598         movb    %ch,%al
599         movb    %cl,%bl
600         addl    %ebp,%esi
601         movl    2120(%edi,%eax,4),%eax
602         xorl    %eax,%esi
603         movl    3144(%edi,%ebx,4),%ebp
604         addl    %ebp,%esi
605         xorl    %eax,%eax
606         xorl    %esi,%edx
607
608
609         rorl    $16,%edx
610         movl    12(%edi),%esi
611         movb    %dh,%al
612         movb    %dl,%bl
613         rorl    $16,%edx
614         xorl    %esi,%ecx
615         movl    72(%edi,%eax,4),%esi
616         movl    1096(%edi,%ebx,4),%ebp
617         movb    %dh,%al
618         movb    %dl,%bl
619         addl    %ebp,%esi
620         movl    2120(%edi,%eax,4),%eax
621         xorl    %eax,%esi
622         movl    3144(%edi,%ebx,4),%ebp
623         addl    %ebp,%esi
624         xorl    %eax,%eax
625         xorl    %esi,%ecx
626
627
628         rorl    $16,%ecx
629         movl    8(%edi),%esi
630         movb    %ch,%al
631         movb    %cl,%bl
632         rorl    $16,%ecx
633         xorl    %esi,%edx
634         movl    72(%edi,%eax,4),%esi
635         movl    1096(%edi,%ebx,4),%ebp
636         movb    %ch,%al
637         movb    %cl,%bl
638         addl    %ebp,%esi
639         movl    2120(%edi,%eax,4),%eax
640         xorl    %eax,%esi
641         movl    3144(%edi,%ebx,4),%ebp
642         addl    %ebp,%esi
643         xorl    %eax,%eax
644         xorl    %esi,%edx
645
646
647         rorl    $16,%edx
648         movl    4(%edi),%esi
649         movb    %dh,%al
650         movb    %dl,%bl
651         rorl    $16,%edx
652         xorl    %esi,%ecx
653         movl    72(%edi,%eax,4),%esi
654         movl    1096(%edi,%ebx,4),%ebp
655         movb    %dh,%al
656         movb    %dl,%bl
657         addl    %ebp,%esi
658         movl    2120(%edi,%eax,4),%eax
659         xorl    %eax,%esi
660         movl    3144(%edi,%ebx,4),%ebp
661         addl    %ebp,%esi
662         xorl    %eax,%eax
663         xorl    %esi,%ecx
664         xorl    (%edi),%edx
665         movl    20(%esp),%eax
666         movl    %edx,(%eax)
667         movl    %ecx,4(%eax)
668         popl    %edi
669         popl    %esi
670         popl    %ebx
671         popl    %ebp
672         ret
673 .size   BF_decrypt,.-.L_BF_decrypt_begin
674 .globl  BF_cbc_encrypt
675 .type   BF_cbc_encrypt,@function
676 .align  16
677 BF_cbc_encrypt:
678 .L_BF_cbc_encrypt_begin:
679
680         pushl   %ebp
681         pushl   %ebx
682         pushl   %esi
683         pushl   %edi
684         movl    28(%esp),%ebp
685
686         movl    36(%esp),%ebx
687         movl    (%ebx),%esi
688         movl    4(%ebx),%edi
689         pushl   %edi
690         pushl   %esi
691         pushl   %edi
692         pushl   %esi
693         movl    %esp,%ebx
694         movl    36(%esp),%esi
695         movl    40(%esp),%edi
696
697         movl    56(%esp),%ecx
698
699         movl    48(%esp),%eax
700         pushl   %eax
701         pushl   %ebx
702         cmpl    $0,%ecx
703         jz      .L000decrypt
704         andl    $4294967288,%ebp
705         movl    8(%esp),%eax
706         movl    12(%esp),%ebx
707         jz      .L001encrypt_finish
708 .L002encrypt_loop:
709         movl    (%esi),%ecx
710         movl    4(%esi),%edx
711         xorl    %ecx,%eax
712         xorl    %edx,%ebx
713         bswap   %eax
714         bswap   %ebx
715         movl    %eax,8(%esp)
716         movl    %ebx,12(%esp)
717         call    .L_BF_encrypt_begin
718         movl    8(%esp),%eax
719         movl    12(%esp),%ebx
720         bswap   %eax
721         bswap   %ebx
722         movl    %eax,(%edi)
723         movl    %ebx,4(%edi)
724         addl    $8,%esi
725         addl    $8,%edi
726         subl    $8,%ebp
727         jnz     .L002encrypt_loop
728 .L001encrypt_finish:
729         movl    52(%esp),%ebp
730         andl    $7,%ebp
731         jz      .L003finish
732         call    .L004PIC_point
733 .L004PIC_point:
734         popl    %edx
735         leal    .L005cbc_enc_jmp_table-.L004PIC_point(%edx),%ecx
736         movl    (%ecx,%ebp,4),%ebp
737         addl    %edx,%ebp
738         xorl    %ecx,%ecx
739         xorl    %edx,%edx
740         jmp     *%ebp
741 .L006ej7:
742         movb    6(%esi),%dh
743         shll    $8,%edx
744 .L007ej6:
745         movb    5(%esi),%dh
746 .L008ej5:
747         movb    4(%esi),%dl
748 .L009ej4:
749         movl    (%esi),%ecx
750         jmp     .L010ejend
751 .L011ej3:
752         movb    2(%esi),%ch
753         shll    $8,%ecx
754 .L012ej2:
755         movb    1(%esi),%ch
756 .L013ej1:
757         movb    (%esi),%cl
758 .L010ejend:
759         xorl    %ecx,%eax
760         xorl    %edx,%ebx
761         bswap   %eax
762         bswap   %ebx
763         movl    %eax,8(%esp)
764         movl    %ebx,12(%esp)
765         call    .L_BF_encrypt_begin
766         movl    8(%esp),%eax
767         movl    12(%esp),%ebx
768         bswap   %eax
769         bswap   %ebx
770         movl    %eax,(%edi)
771         movl    %ebx,4(%edi)
772         jmp     .L003finish
773 .L000decrypt:
774         andl    $4294967288,%ebp
775         movl    16(%esp),%eax
776         movl    20(%esp),%ebx
777         jz      .L014decrypt_finish
778 .L015decrypt_loop:
779         movl    (%esi),%eax
780         movl    4(%esi),%ebx
781         bswap   %eax
782         bswap   %ebx
783         movl    %eax,8(%esp)
784         movl    %ebx,12(%esp)
785         call    .L_BF_decrypt_begin
786         movl    8(%esp),%eax
787         movl    12(%esp),%ebx
788         bswap   %eax
789         bswap   %ebx
790         movl    16(%esp),%ecx
791         movl    20(%esp),%edx
792         xorl    %eax,%ecx
793         xorl    %ebx,%edx
794         movl    (%esi),%eax
795         movl    4(%esi),%ebx
796         movl    %ecx,(%edi)
797         movl    %edx,4(%edi)
798         movl    %eax,16(%esp)
799         movl    %ebx,20(%esp)
800         addl    $8,%esi
801         addl    $8,%edi
802         subl    $8,%ebp
803         jnz     .L015decrypt_loop
804 .L014decrypt_finish:
805         movl    52(%esp),%ebp
806         andl    $7,%ebp
807         jz      .L003finish
808         movl    (%esi),%eax
809         movl    4(%esi),%ebx
810         bswap   %eax
811         bswap   %ebx
812         movl    %eax,8(%esp)
813         movl    %ebx,12(%esp)
814         call    .L_BF_decrypt_begin
815         movl    8(%esp),%eax
816         movl    12(%esp),%ebx
817         bswap   %eax
818         bswap   %ebx
819         movl    16(%esp),%ecx
820         movl    20(%esp),%edx
821         xorl    %eax,%ecx
822         xorl    %ebx,%edx
823         movl    (%esi),%eax
824         movl    4(%esi),%ebx
825 .L016dj7:
826         rorl    $16,%edx
827         movb    %dl,6(%edi)
828         shrl    $16,%edx
829 .L017dj6:
830         movb    %dh,5(%edi)
831 .L018dj5:
832         movb    %dl,4(%edi)
833 .L019dj4:
834         movl    %ecx,(%edi)
835         jmp     .L020djend
836 .L021dj3:
837         rorl    $16,%ecx
838         movb    %cl,2(%edi)
839         shll    $16,%ecx
840 .L022dj2:
841         movb    %ch,1(%esi)
842 .L023dj1:
843         movb    %cl,(%esi)
844 .L020djend:
845         jmp     .L003finish
846 .L003finish:
847         movl    60(%esp),%ecx
848         addl    $24,%esp
849         movl    %eax,(%ecx)
850         movl    %ebx,4(%ecx)
851         popl    %edi
852         popl    %esi
853         popl    %ebx
854         popl    %ebp
855         ret
856 .align  64
857 .L005cbc_enc_jmp_table:
858 .long   0
859 .long   .L013ej1-.L004PIC_point
860 .long   .L012ej2-.L004PIC_point
861 .long   .L011ej3-.L004PIC_point
862 .long   .L009ej4-.L004PIC_point
863 .long   .L008ej5-.L004PIC_point
864 .long   .L007ej6-.L004PIC_point
865 .long   .L006ej7-.L004PIC_point
866 .align  64
867 .size   BF_cbc_encrypt,.-.L_BF_cbc_encrypt_begin
868 #else
869 .file   "bf-686.S"
870 .text
871 .globl  BF_encrypt
872 .type   BF_encrypt,@function
873 .align  16
874 BF_encrypt:
875 .L_BF_encrypt_begin:
876         pushl   %ebp
877         pushl   %ebx
878         pushl   %esi
879         pushl   %edi
880
881
882         movl    20(%esp),%eax
883         movl    (%eax),%ecx
884         movl    4(%eax),%edx
885
886
887         movl    24(%esp),%edi
888         xorl    %eax,%eax
889         xorl    %ebx,%ebx
890         xorl    (%edi),%ecx
891
892
893         rorl    $16,%ecx
894         movl    4(%edi),%esi
895         movb    %ch,%al
896         movb    %cl,%bl
897         rorl    $16,%ecx
898         xorl    %esi,%edx
899         movl    72(%edi,%eax,4),%esi
900         movl    1096(%edi,%ebx,4),%ebp
901         movb    %ch,%al
902         movb    %cl,%bl
903         addl    %ebp,%esi
904         movl    2120(%edi,%eax,4),%eax
905         xorl    %eax,%esi
906         movl    3144(%edi,%ebx,4),%ebp
907         addl    %ebp,%esi
908         xorl    %eax,%eax
909         xorl    %esi,%edx
910
911
912         rorl    $16,%edx
913         movl    8(%edi),%esi
914         movb    %dh,%al
915         movb    %dl,%bl
916         rorl    $16,%edx
917         xorl    %esi,%ecx
918         movl    72(%edi,%eax,4),%esi
919         movl    1096(%edi,%ebx,4),%ebp
920         movb    %dh,%al
921         movb    %dl,%bl
922         addl    %ebp,%esi
923         movl    2120(%edi,%eax,4),%eax
924         xorl    %eax,%esi
925         movl    3144(%edi,%ebx,4),%ebp
926         addl    %ebp,%esi
927         xorl    %eax,%eax
928         xorl    %esi,%ecx
929
930
931         rorl    $16,%ecx
932         movl    12(%edi),%esi
933         movb    %ch,%al
934         movb    %cl,%bl
935         rorl    $16,%ecx
936         xorl    %esi,%edx
937         movl    72(%edi,%eax,4),%esi
938         movl    1096(%edi,%ebx,4),%ebp
939         movb    %ch,%al
940         movb    %cl,%bl
941         addl    %ebp,%esi
942         movl    2120(%edi,%eax,4),%eax
943         xorl    %eax,%esi
944         movl    3144(%edi,%ebx,4),%ebp
945         addl    %ebp,%esi
946         xorl    %eax,%eax
947         xorl    %esi,%edx
948
949
950         rorl    $16,%edx
951         movl    16(%edi),%esi
952         movb    %dh,%al
953         movb    %dl,%bl
954         rorl    $16,%edx
955         xorl    %esi,%ecx
956         movl    72(%edi,%eax,4),%esi
957         movl    1096(%edi,%ebx,4),%ebp
958         movb    %dh,%al
959         movb    %dl,%bl
960         addl    %ebp,%esi
961         movl    2120(%edi,%eax,4),%eax
962         xorl    %eax,%esi
963         movl    3144(%edi,%ebx,4),%ebp
964         addl    %ebp,%esi
965         xorl    %eax,%eax
966         xorl    %esi,%ecx
967
968
969         rorl    $16,%ecx
970         movl    20(%edi),%esi
971         movb    %ch,%al
972         movb    %cl,%bl
973         rorl    $16,%ecx
974         xorl    %esi,%edx
975         movl    72(%edi,%eax,4),%esi
976         movl    1096(%edi,%ebx,4),%ebp
977         movb    %ch,%al
978         movb    %cl,%bl
979         addl    %ebp,%esi
980         movl    2120(%edi,%eax,4),%eax
981         xorl    %eax,%esi
982         movl    3144(%edi,%ebx,4),%ebp
983         addl    %ebp,%esi
984         xorl    %eax,%eax
985         xorl    %esi,%edx
986
987
988         rorl    $16,%edx
989         movl    24(%edi),%esi
990         movb    %dh,%al
991         movb    %dl,%bl
992         rorl    $16,%edx
993         xorl    %esi,%ecx
994         movl    72(%edi,%eax,4),%esi
995         movl    1096(%edi,%ebx,4),%ebp
996         movb    %dh,%al
997         movb    %dl,%bl
998         addl    %ebp,%esi
999         movl    2120(%edi,%eax,4),%eax
1000         xorl    %eax,%esi
1001         movl    3144(%edi,%ebx,4),%ebp
1002         addl    %ebp,%esi
1003         xorl    %eax,%eax
1004         xorl    %esi,%ecx
1005
1006
1007         rorl    $16,%ecx
1008         movl    28(%edi),%esi
1009         movb    %ch,%al
1010         movb    %cl,%bl
1011         rorl    $16,%ecx
1012         xorl    %esi,%edx
1013         movl    72(%edi,%eax,4),%esi
1014         movl    1096(%edi,%ebx,4),%ebp
1015         movb    %ch,%al
1016         movb    %cl,%bl
1017         addl    %ebp,%esi
1018         movl    2120(%edi,%eax,4),%eax
1019         xorl    %eax,%esi
1020         movl    3144(%edi,%ebx,4),%ebp
1021         addl    %ebp,%esi
1022         xorl    %eax,%eax
1023         xorl    %esi,%edx
1024
1025
1026         rorl    $16,%edx
1027         movl    32(%edi),%esi
1028         movb    %dh,%al
1029         movb    %dl,%bl
1030         rorl    $16,%edx
1031         xorl    %esi,%ecx
1032         movl    72(%edi,%eax,4),%esi
1033         movl    1096(%edi,%ebx,4),%ebp
1034         movb    %dh,%al
1035         movb    %dl,%bl
1036         addl    %ebp,%esi
1037         movl    2120(%edi,%eax,4),%eax
1038         xorl    %eax,%esi
1039         movl    3144(%edi,%ebx,4),%ebp
1040         addl    %ebp,%esi
1041         xorl    %eax,%eax
1042         xorl    %esi,%ecx
1043
1044
1045         rorl    $16,%ecx
1046         movl    36(%edi),%esi
1047         movb    %ch,%al
1048         movb    %cl,%bl
1049         rorl    $16,%ecx
1050         xorl    %esi,%edx
1051         movl    72(%edi,%eax,4),%esi
1052         movl    1096(%edi,%ebx,4),%ebp
1053         movb    %ch,%al
1054         movb    %cl,%bl
1055         addl    %ebp,%esi
1056         movl    2120(%edi,%eax,4),%eax
1057         xorl    %eax,%esi
1058         movl    3144(%edi,%ebx,4),%ebp
1059         addl    %ebp,%esi
1060         xorl    %eax,%eax
1061         xorl    %esi,%edx
1062
1063
1064         rorl    $16,%edx
1065         movl    40(%edi),%esi
1066         movb    %dh,%al
1067         movb    %dl,%bl
1068         rorl    $16,%edx
1069         xorl    %esi,%ecx
1070         movl    72(%edi,%eax,4),%esi
1071         movl    1096(%edi,%ebx,4),%ebp
1072         movb    %dh,%al
1073         movb    %dl,%bl
1074         addl    %ebp,%esi
1075         movl    2120(%edi,%eax,4),%eax
1076         xorl    %eax,%esi
1077         movl    3144(%edi,%ebx,4),%ebp
1078         addl    %ebp,%esi
1079         xorl    %eax,%eax
1080         xorl    %esi,%ecx
1081
1082
1083         rorl    $16,%ecx
1084         movl    44(%edi),%esi
1085         movb    %ch,%al
1086         movb    %cl,%bl
1087         rorl    $16,%ecx
1088         xorl    %esi,%edx
1089         movl    72(%edi,%eax,4),%esi
1090         movl    1096(%edi,%ebx,4),%ebp
1091         movb    %ch,%al
1092         movb    %cl,%bl
1093         addl    %ebp,%esi
1094         movl    2120(%edi,%eax,4),%eax
1095         xorl    %eax,%esi
1096         movl    3144(%edi,%ebx,4),%ebp
1097         addl    %ebp,%esi
1098         xorl    %eax,%eax
1099         xorl    %esi,%edx
1100
1101
1102         rorl    $16,%edx
1103         movl    48(%edi),%esi
1104         movb    %dh,%al
1105         movb    %dl,%bl
1106         rorl    $16,%edx
1107         xorl    %esi,%ecx
1108         movl    72(%edi,%eax,4),%esi
1109         movl    1096(%edi,%ebx,4),%ebp
1110         movb    %dh,%al
1111         movb    %dl,%bl
1112         addl    %ebp,%esi
1113         movl    2120(%edi,%eax,4),%eax
1114         xorl    %eax,%esi
1115         movl    3144(%edi,%ebx,4),%ebp
1116         addl    %ebp,%esi
1117         xorl    %eax,%eax
1118         xorl    %esi,%ecx
1119
1120
1121         rorl    $16,%ecx
1122         movl    52(%edi),%esi
1123         movb    %ch,%al
1124         movb    %cl,%bl
1125         rorl    $16,%ecx
1126         xorl    %esi,%edx
1127         movl    72(%edi,%eax,4),%esi
1128         movl    1096(%edi,%ebx,4),%ebp
1129         movb    %ch,%al
1130         movb    %cl,%bl
1131         addl    %ebp,%esi
1132         movl    2120(%edi,%eax,4),%eax
1133         xorl    %eax,%esi
1134         movl    3144(%edi,%ebx,4),%ebp
1135         addl    %ebp,%esi
1136         xorl    %eax,%eax
1137         xorl    %esi,%edx
1138
1139
1140         rorl    $16,%edx
1141         movl    56(%edi),%esi
1142         movb    %dh,%al
1143         movb    %dl,%bl
1144         rorl    $16,%edx
1145         xorl    %esi,%ecx
1146         movl    72(%edi,%eax,4),%esi
1147         movl    1096(%edi,%ebx,4),%ebp
1148         movb    %dh,%al
1149         movb    %dl,%bl
1150         addl    %ebp,%esi
1151         movl    2120(%edi,%eax,4),%eax
1152         xorl    %eax,%esi
1153         movl    3144(%edi,%ebx,4),%ebp
1154         addl    %ebp,%esi
1155         xorl    %eax,%eax
1156         xorl    %esi,%ecx
1157
1158
1159         rorl    $16,%ecx
1160         movl    60(%edi),%esi
1161         movb    %ch,%al
1162         movb    %cl,%bl
1163         rorl    $16,%ecx
1164         xorl    %esi,%edx
1165         movl    72(%edi,%eax,4),%esi
1166         movl    1096(%edi,%ebx,4),%ebp
1167         movb    %ch,%al
1168         movb    %cl,%bl
1169         addl    %ebp,%esi
1170         movl    2120(%edi,%eax,4),%eax
1171         xorl    %eax,%esi
1172         movl    3144(%edi,%ebx,4),%ebp
1173         addl    %ebp,%esi
1174         xorl    %eax,%eax
1175         xorl    %esi,%edx
1176
1177
1178         rorl    $16,%edx
1179         movl    64(%edi),%esi
1180         movb    %dh,%al
1181         movb    %dl,%bl
1182         rorl    $16,%edx
1183         xorl    %esi,%ecx
1184         movl    72(%edi,%eax,4),%esi
1185         movl    1096(%edi,%ebx,4),%ebp
1186         movb    %dh,%al
1187         movb    %dl,%bl
1188         addl    %ebp,%esi
1189         movl    2120(%edi,%eax,4),%eax
1190         xorl    %eax,%esi
1191         movl    3144(%edi,%ebx,4),%ebp
1192         addl    %ebp,%esi
1193         xorl    %eax,%eax
1194         xorl    %esi,%ecx
1195         xorl    68(%edi),%edx
1196         movl    20(%esp),%eax
1197         movl    %edx,(%eax)
1198         movl    %ecx,4(%eax)
1199         popl    %edi
1200         popl    %esi
1201         popl    %ebx
1202         popl    %ebp
1203         ret
1204 .size   BF_encrypt,.-.L_BF_encrypt_begin
1205 .globl  BF_decrypt
1206 .type   BF_decrypt,@function
1207 .align  16
1208 BF_decrypt:
1209 .L_BF_decrypt_begin:
1210         pushl   %ebp
1211         pushl   %ebx
1212         pushl   %esi
1213         pushl   %edi
1214
1215
1216         movl    20(%esp),%eax
1217         movl    (%eax),%ecx
1218         movl    4(%eax),%edx
1219
1220
1221         movl    24(%esp),%edi
1222         xorl    %eax,%eax
1223         xorl    %ebx,%ebx
1224         xorl    68(%edi),%ecx
1225
1226
1227         rorl    $16,%ecx
1228         movl    64(%edi),%esi
1229         movb    %ch,%al
1230         movb    %cl,%bl
1231         rorl    $16,%ecx
1232         xorl    %esi,%edx
1233         movl    72(%edi,%eax,4),%esi
1234         movl    1096(%edi,%ebx,4),%ebp
1235         movb    %ch,%al
1236         movb    %cl,%bl
1237         addl    %ebp,%esi
1238         movl    2120(%edi,%eax,4),%eax
1239         xorl    %eax,%esi
1240         movl    3144(%edi,%ebx,4),%ebp
1241         addl    %ebp,%esi
1242         xorl    %eax,%eax
1243         xorl    %esi,%edx
1244
1245
1246         rorl    $16,%edx
1247         movl    60(%edi),%esi
1248         movb    %dh,%al
1249         movb    %dl,%bl
1250         rorl    $16,%edx
1251         xorl    %esi,%ecx
1252         movl    72(%edi,%eax,4),%esi
1253         movl    1096(%edi,%ebx,4),%ebp
1254         movb    %dh,%al
1255         movb    %dl,%bl
1256         addl    %ebp,%esi
1257         movl    2120(%edi,%eax,4),%eax
1258         xorl    %eax,%esi
1259         movl    3144(%edi,%ebx,4),%ebp
1260         addl    %ebp,%esi
1261         xorl    %eax,%eax
1262         xorl    %esi,%ecx
1263
1264
1265         rorl    $16,%ecx
1266         movl    56(%edi),%esi
1267         movb    %ch,%al
1268         movb    %cl,%bl
1269         rorl    $16,%ecx
1270         xorl    %esi,%edx
1271         movl    72(%edi,%eax,4),%esi
1272         movl    1096(%edi,%ebx,4),%ebp
1273         movb    %ch,%al
1274         movb    %cl,%bl
1275         addl    %ebp,%esi
1276         movl    2120(%edi,%eax,4),%eax
1277         xorl    %eax,%esi
1278         movl    3144(%edi,%ebx,4),%ebp
1279         addl    %ebp,%esi
1280         xorl    %eax,%eax
1281         xorl    %esi,%edx
1282
1283
1284         rorl    $16,%edx
1285         movl    52(%edi),%esi
1286         movb    %dh,%al
1287         movb    %dl,%bl
1288         rorl    $16,%edx
1289         xorl    %esi,%ecx
1290         movl    72(%edi,%eax,4),%esi
1291         movl    1096(%edi,%ebx,4),%ebp
1292         movb    %dh,%al
1293         movb    %dl,%bl
1294         addl    %ebp,%esi
1295         movl    2120(%edi,%eax,4),%eax
1296         xorl    %eax,%esi
1297         movl    3144(%edi,%ebx,4),%ebp
1298         addl    %ebp,%esi
1299         xorl    %eax,%eax
1300         xorl    %esi,%ecx
1301
1302
1303         rorl    $16,%ecx
1304         movl    48(%edi),%esi
1305         movb    %ch,%al
1306         movb    %cl,%bl
1307         rorl    $16,%ecx
1308         xorl    %esi,%edx
1309         movl    72(%edi,%eax,4),%esi
1310         movl    1096(%edi,%ebx,4),%ebp
1311         movb    %ch,%al
1312         movb    %cl,%bl
1313         addl    %ebp,%esi
1314         movl    2120(%edi,%eax,4),%eax
1315         xorl    %eax,%esi
1316         movl    3144(%edi,%ebx,4),%ebp
1317         addl    %ebp,%esi
1318         xorl    %eax,%eax
1319         xorl    %esi,%edx
1320
1321
1322         rorl    $16,%edx
1323         movl    44(%edi),%esi
1324         movb    %dh,%al
1325         movb    %dl,%bl
1326         rorl    $16,%edx
1327         xorl    %esi,%ecx
1328         movl    72(%edi,%eax,4),%esi
1329         movl    1096(%edi,%ebx,4),%ebp
1330         movb    %dh,%al
1331         movb    %dl,%bl
1332         addl    %ebp,%esi
1333         movl    2120(%edi,%eax,4),%eax
1334         xorl    %eax,%esi
1335         movl    3144(%edi,%ebx,4),%ebp
1336         addl    %ebp,%esi
1337         xorl    %eax,%eax
1338         xorl    %esi,%ecx
1339
1340
1341         rorl    $16,%ecx
1342         movl    40(%edi),%esi
1343         movb    %ch,%al
1344         movb    %cl,%bl
1345         rorl    $16,%ecx
1346         xorl    %esi,%edx
1347         movl    72(%edi,%eax,4),%esi
1348         movl    1096(%edi,%ebx,4),%ebp
1349         movb    %ch,%al
1350         movb    %cl,%bl
1351         addl    %ebp,%esi
1352         movl    2120(%edi,%eax,4),%eax
1353         xorl    %eax,%esi
1354         movl    3144(%edi,%ebx,4),%ebp
1355         addl    %ebp,%esi
1356         xorl    %eax,%eax
1357         xorl    %esi,%edx
1358
1359
1360         rorl    $16,%edx
1361         movl    36(%edi),%esi
1362         movb    %dh,%al
1363         movb    %dl,%bl
1364         rorl    $16,%edx
1365         xorl    %esi,%ecx
1366         movl    72(%edi,%eax,4),%esi
1367         movl    1096(%edi,%ebx,4),%ebp
1368         movb    %dh,%al
1369         movb    %dl,%bl
1370         addl    %ebp,%esi
1371         movl    2120(%edi,%eax,4),%eax
1372         xorl    %eax,%esi
1373         movl    3144(%edi,%ebx,4),%ebp
1374         addl    %ebp,%esi
1375         xorl    %eax,%eax
1376         xorl    %esi,%ecx
1377
1378
1379         rorl    $16,%ecx
1380         movl    32(%edi),%esi
1381         movb    %ch,%al
1382         movb    %cl,%bl
1383         rorl    $16,%ecx
1384         xorl    %esi,%edx
1385         movl    72(%edi,%eax,4),%esi
1386         movl    1096(%edi,%ebx,4),%ebp
1387         movb    %ch,%al
1388         movb    %cl,%bl
1389         addl    %ebp,%esi
1390         movl    2120(%edi,%eax,4),%eax
1391         xorl    %eax,%esi
1392         movl    3144(%edi,%ebx,4),%ebp
1393         addl    %ebp,%esi
1394         xorl    %eax,%eax
1395         xorl    %esi,%edx
1396
1397
1398         rorl    $16,%edx
1399         movl    28(%edi),%esi
1400         movb    %dh,%al
1401         movb    %dl,%bl
1402         rorl    $16,%edx
1403         xorl    %esi,%ecx
1404         movl    72(%edi,%eax,4),%esi
1405         movl    1096(%edi,%ebx,4),%ebp
1406         movb    %dh,%al
1407         movb    %dl,%bl
1408         addl    %ebp,%esi
1409         movl    2120(%edi,%eax,4),%eax
1410         xorl    %eax,%esi
1411         movl    3144(%edi,%ebx,4),%ebp
1412         addl    %ebp,%esi
1413         xorl    %eax,%eax
1414         xorl    %esi,%ecx
1415
1416
1417         rorl    $16,%ecx
1418         movl    24(%edi),%esi
1419         movb    %ch,%al
1420         movb    %cl,%bl
1421         rorl    $16,%ecx
1422         xorl    %esi,%edx
1423         movl    72(%edi,%eax,4),%esi
1424         movl    1096(%edi,%ebx,4),%ebp
1425         movb    %ch,%al
1426         movb    %cl,%bl
1427         addl    %ebp,%esi
1428         movl    2120(%edi,%eax,4),%eax
1429         xorl    %eax,%esi
1430         movl    3144(%edi,%ebx,4),%ebp
1431         addl    %ebp,%esi
1432         xorl    %eax,%eax
1433         xorl    %esi,%edx
1434
1435
1436         rorl    $16,%edx
1437         movl    20(%edi),%esi
1438         movb    %dh,%al
1439         movb    %dl,%bl
1440         rorl    $16,%edx
1441         xorl    %esi,%ecx
1442         movl    72(%edi,%eax,4),%esi
1443         movl    1096(%edi,%ebx,4),%ebp
1444         movb    %dh,%al
1445         movb    %dl,%bl
1446         addl    %ebp,%esi
1447         movl    2120(%edi,%eax,4),%eax
1448         xorl    %eax,%esi
1449         movl    3144(%edi,%ebx,4),%ebp
1450         addl    %ebp,%esi
1451         xorl    %eax,%eax
1452         xorl    %esi,%ecx
1453
1454
1455         rorl    $16,%ecx
1456         movl    16(%edi),%esi
1457         movb    %ch,%al
1458         movb    %cl,%bl
1459         rorl    $16,%ecx
1460         xorl    %esi,%edx
1461         movl    72(%edi,%eax,4),%esi
1462         movl    1096(%edi,%ebx,4),%ebp
1463         movb    %ch,%al
1464         movb    %cl,%bl
1465         addl    %ebp,%esi
1466         movl    2120(%edi,%eax,4),%eax
1467         xorl    %eax,%esi
1468         movl    3144(%edi,%ebx,4),%ebp
1469         addl    %ebp,%esi
1470         xorl    %eax,%eax
1471         xorl    %esi,%edx
1472
1473
1474         rorl    $16,%edx
1475         movl    12(%edi),%esi
1476         movb    %dh,%al
1477         movb    %dl,%bl
1478         rorl    $16,%edx
1479         xorl    %esi,%ecx
1480         movl    72(%edi,%eax,4),%esi
1481         movl    1096(%edi,%ebx,4),%ebp
1482         movb    %dh,%al
1483         movb    %dl,%bl
1484         addl    %ebp,%esi
1485         movl    2120(%edi,%eax,4),%eax
1486         xorl    %eax,%esi
1487         movl    3144(%edi,%ebx,4),%ebp
1488         addl    %ebp,%esi
1489         xorl    %eax,%eax
1490         xorl    %esi,%ecx
1491
1492
1493         rorl    $16,%ecx
1494         movl    8(%edi),%esi
1495         movb    %ch,%al
1496         movb    %cl,%bl
1497         rorl    $16,%ecx
1498         xorl    %esi,%edx
1499         movl    72(%edi,%eax,4),%esi
1500         movl    1096(%edi,%ebx,4),%ebp
1501         movb    %ch,%al
1502         movb    %cl,%bl
1503         addl    %ebp,%esi
1504         movl    2120(%edi,%eax,4),%eax
1505         xorl    %eax,%esi
1506         movl    3144(%edi,%ebx,4),%ebp
1507         addl    %ebp,%esi
1508         xorl    %eax,%eax
1509         xorl    %esi,%edx
1510
1511
1512         rorl    $16,%edx
1513         movl    4(%edi),%esi
1514         movb    %dh,%al
1515         movb    %dl,%bl
1516         rorl    $16,%edx
1517         xorl    %esi,%ecx
1518         movl    72(%edi,%eax,4),%esi
1519         movl    1096(%edi,%ebx,4),%ebp
1520         movb    %dh,%al
1521         movb    %dl,%bl
1522         addl    %ebp,%esi
1523         movl    2120(%edi,%eax,4),%eax
1524         xorl    %eax,%esi
1525         movl    3144(%edi,%ebx,4),%ebp
1526         addl    %ebp,%esi
1527         xorl    %eax,%eax
1528         xorl    %esi,%ecx
1529         xorl    (%edi),%edx
1530         movl    20(%esp),%eax
1531         movl    %edx,(%eax)
1532         movl    %ecx,4(%eax)
1533         popl    %edi
1534         popl    %esi
1535         popl    %ebx
1536         popl    %ebp
1537         ret
1538 .size   BF_decrypt,.-.L_BF_decrypt_begin
1539 .globl  BF_cbc_encrypt
1540 .type   BF_cbc_encrypt,@function
1541 .align  16
1542 BF_cbc_encrypt:
1543 .L_BF_cbc_encrypt_begin:
1544
1545         pushl   %ebp
1546         pushl   %ebx
1547         pushl   %esi
1548         pushl   %edi
1549         movl    28(%esp),%ebp
1550
1551         movl    36(%esp),%ebx
1552         movl    (%ebx),%esi
1553         movl    4(%ebx),%edi
1554         pushl   %edi
1555         pushl   %esi
1556         pushl   %edi
1557         pushl   %esi
1558         movl    %esp,%ebx
1559         movl    36(%esp),%esi
1560         movl    40(%esp),%edi
1561
1562         movl    56(%esp),%ecx
1563
1564         movl    48(%esp),%eax
1565         pushl   %eax
1566         pushl   %ebx
1567         cmpl    $0,%ecx
1568         jz      .L000decrypt
1569         andl    $4294967288,%ebp
1570         movl    8(%esp),%eax
1571         movl    12(%esp),%ebx
1572         jz      .L001encrypt_finish
1573 .L002encrypt_loop:
1574         movl    (%esi),%ecx
1575         movl    4(%esi),%edx
1576         xorl    %ecx,%eax
1577         xorl    %edx,%ebx
1578         bswap   %eax
1579         bswap   %ebx
1580         movl    %eax,8(%esp)
1581         movl    %ebx,12(%esp)
1582         call    .L_BF_encrypt_begin
1583         movl    8(%esp),%eax
1584         movl    12(%esp),%ebx
1585         bswap   %eax
1586         bswap   %ebx
1587         movl    %eax,(%edi)
1588         movl    %ebx,4(%edi)
1589         addl    $8,%esi
1590         addl    $8,%edi
1591         subl    $8,%ebp
1592         jnz     .L002encrypt_loop
1593 .L001encrypt_finish:
1594         movl    52(%esp),%ebp
1595         andl    $7,%ebp
1596         jz      .L003finish
1597         call    .L004PIC_point
1598 .L004PIC_point:
1599         popl    %edx
1600         leal    .L005cbc_enc_jmp_table-.L004PIC_point(%edx),%ecx
1601         movl    (%ecx,%ebp,4),%ebp
1602         addl    %edx,%ebp
1603         xorl    %ecx,%ecx
1604         xorl    %edx,%edx
1605         jmp     *%ebp
1606 .L006ej7:
1607         movb    6(%esi),%dh
1608         shll    $8,%edx
1609 .L007ej6:
1610         movb    5(%esi),%dh
1611 .L008ej5:
1612         movb    4(%esi),%dl
1613 .L009ej4:
1614         movl    (%esi),%ecx
1615         jmp     .L010ejend
1616 .L011ej3:
1617         movb    2(%esi),%ch
1618         shll    $8,%ecx
1619 .L012ej2:
1620         movb    1(%esi),%ch
1621 .L013ej1:
1622         movb    (%esi),%cl
1623 .L010ejend:
1624         xorl    %ecx,%eax
1625         xorl    %edx,%ebx
1626         bswap   %eax
1627         bswap   %ebx
1628         movl    %eax,8(%esp)
1629         movl    %ebx,12(%esp)
1630         call    .L_BF_encrypt_begin
1631         movl    8(%esp),%eax
1632         movl    12(%esp),%ebx
1633         bswap   %eax
1634         bswap   %ebx
1635         movl    %eax,(%edi)
1636         movl    %ebx,4(%edi)
1637         jmp     .L003finish
1638 .L000decrypt:
1639         andl    $4294967288,%ebp
1640         movl    16(%esp),%eax
1641         movl    20(%esp),%ebx
1642         jz      .L014decrypt_finish
1643 .L015decrypt_loop:
1644         movl    (%esi),%eax
1645         movl    4(%esi),%ebx
1646         bswap   %eax
1647         bswap   %ebx
1648         movl    %eax,8(%esp)
1649         movl    %ebx,12(%esp)
1650         call    .L_BF_decrypt_begin
1651         movl    8(%esp),%eax
1652         movl    12(%esp),%ebx
1653         bswap   %eax
1654         bswap   %ebx
1655         movl    16(%esp),%ecx
1656         movl    20(%esp),%edx
1657         xorl    %eax,%ecx
1658         xorl    %ebx,%edx
1659         movl    (%esi),%eax
1660         movl    4(%esi),%ebx
1661         movl    %ecx,(%edi)
1662         movl    %edx,4(%edi)
1663         movl    %eax,16(%esp)
1664         movl    %ebx,20(%esp)
1665         addl    $8,%esi
1666         addl    $8,%edi
1667         subl    $8,%ebp
1668         jnz     .L015decrypt_loop
1669 .L014decrypt_finish:
1670         movl    52(%esp),%ebp
1671         andl    $7,%ebp
1672         jz      .L003finish
1673         movl    (%esi),%eax
1674         movl    4(%esi),%ebx
1675         bswap   %eax
1676         bswap   %ebx
1677         movl    %eax,8(%esp)
1678         movl    %ebx,12(%esp)
1679         call    .L_BF_decrypt_begin
1680         movl    8(%esp),%eax
1681         movl    12(%esp),%ebx
1682         bswap   %eax
1683         bswap   %ebx
1684         movl    16(%esp),%ecx
1685         movl    20(%esp),%edx
1686         xorl    %eax,%ecx
1687         xorl    %ebx,%edx
1688         movl    (%esi),%eax
1689         movl    4(%esi),%ebx
1690 .L016dj7:
1691         rorl    $16,%edx
1692         movb    %dl,6(%edi)
1693         shrl    $16,%edx
1694 .L017dj6:
1695         movb    %dh,5(%edi)
1696 .L018dj5:
1697         movb    %dl,4(%edi)
1698 .L019dj4:
1699         movl    %ecx,(%edi)
1700         jmp     .L020djend
1701 .L021dj3:
1702         rorl    $16,%ecx
1703         movb    %cl,2(%edi)
1704         shll    $16,%ecx
1705 .L022dj2:
1706         movb    %ch,1(%esi)
1707 .L023dj1:
1708         movb    %cl,(%esi)
1709 .L020djend:
1710         jmp     .L003finish
1711 .L003finish:
1712         movl    60(%esp),%ecx
1713         addl    $24,%esp
1714         movl    %eax,(%ecx)
1715         movl    %ebx,4(%ecx)
1716         popl    %edi
1717         popl    %esi
1718         popl    %ebx
1719         popl    %ebp
1720         ret
1721 .align  64
1722 .L005cbc_enc_jmp_table:
1723 .long   0
1724 .long   .L013ej1-.L004PIC_point
1725 .long   .L012ej2-.L004PIC_point
1726 .long   .L011ej3-.L004PIC_point
1727 .long   .L009ej4-.L004PIC_point
1728 .long   .L008ej5-.L004PIC_point
1729 .long   .L007ej6-.L004PIC_point
1730 .long   .L006ej7-.L004PIC_point
1731 .align  64
1732 .size   BF_cbc_encrypt,.-.L_BF_cbc_encrypt_begin
1733 #endif