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