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