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