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