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