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