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