1 /* Run the C pre-processor over this file with one of the following defined
2 * ELF - elf object files,
3 * OUT - a.out object files,
4 * BSDI - BSDI style a.out object files
5 * SOL - Solaris style elf
8 #define TYPE(a,b) .type a,b
9 #define SIZE(a,b) .size a,b
11 #if defined(OUT) || defined(BSDI)
12 #define CAST_S_table0 _CAST_S_table0
13 #define CAST_S_table1 _CAST_S_table1
14 #define CAST_S_table2 _CAST_S_table2
15 #define CAST_S_table3 _CAST_S_table3
16 #define CAST_encrypt _CAST_encrypt
17 #define CAST_S_table0 _CAST_S_table0
18 #define CAST_S_table1 _CAST_S_table1
19 #define CAST_S_table2 _CAST_S_table2
20 #define CAST_S_table3 _CAST_S_table3
21 #define CAST_decrypt _CAST_decrypt
22 #define CAST_cbc_encrypt _CAST_cbc_encrypt
40 #if defined(ELF) || defined(SOL)
46 You need to define one of
47 ELF - elf systems - linux-elf, NetBSD and DG-UX
48 OUT - a.out systems - linux-a.out and FreeBSD
49 SOL - solaris systems, which are elf with strange comment lines
50 BSDI - a.out with a very primative version of as.
53 /* Let the Assembler begin :-) */
54 /* Don't even think of reading this code */
55 /* It was automatically generated by cast-586.pl */
56 /* Which is a perl program used to generate the x86 assember for */
57 /* any of elf, a.out, BSDI,Win32, or Solaris */
58 /* eric <eay@cryptsoft.com> */
66 TYPE(CAST_encrypt,@function)
75 /* Load the 2 words */
92 movl CAST_S_table0(,%ecx,4),%ecx
93 movl CAST_S_table1(,%ebx,4),%ebx
95 movl CAST_S_table2(,%eax,4),%ebx
97 movl CAST_S_table3(,%edx,4),%ebx
113 movl CAST_S_table0(,%ecx,4),%ecx
114 movl CAST_S_table1(,%ebx,4),%ebx
116 movl CAST_S_table2(,%eax,4),%ebx
118 movl CAST_S_table3(,%edx,4),%ebx
134 movl CAST_S_table0(,%ecx,4),%ecx
135 movl CAST_S_table1(,%ebx,4),%ebx
137 movl CAST_S_table2(,%eax,4),%ebx
139 movl CAST_S_table3(,%edx,4),%ebx
155 movl CAST_S_table0(,%ecx,4),%ecx
156 movl CAST_S_table1(,%ebx,4),%ebx
158 movl CAST_S_table2(,%eax,4),%ebx
160 movl CAST_S_table3(,%edx,4),%ebx
176 movl CAST_S_table0(,%ecx,4),%ecx
177 movl CAST_S_table1(,%ebx,4),%ebx
179 movl CAST_S_table2(,%eax,4),%ebx
181 movl CAST_S_table3(,%edx,4),%ebx
197 movl CAST_S_table0(,%ecx,4),%ecx
198 movl CAST_S_table1(,%ebx,4),%ebx
200 movl CAST_S_table2(,%eax,4),%ebx
202 movl CAST_S_table3(,%edx,4),%ebx
218 movl CAST_S_table0(,%ecx,4),%ecx
219 movl CAST_S_table1(,%ebx,4),%ebx
221 movl CAST_S_table2(,%eax,4),%ebx
223 movl CAST_S_table3(,%edx,4),%ebx
239 movl CAST_S_table0(,%ecx,4),%ecx
240 movl CAST_S_table1(,%ebx,4),%ebx
242 movl CAST_S_table2(,%eax,4),%ebx
244 movl CAST_S_table3(,%edx,4),%ebx
260 movl CAST_S_table0(,%ecx,4),%ecx
261 movl CAST_S_table1(,%ebx,4),%ebx
263 movl CAST_S_table2(,%eax,4),%ebx
265 movl CAST_S_table3(,%edx,4),%ebx
281 movl CAST_S_table0(,%ecx,4),%ecx
282 movl CAST_S_table1(,%ebx,4),%ebx
284 movl CAST_S_table2(,%eax,4),%ebx
286 movl CAST_S_table3(,%edx,4),%ebx
302 movl CAST_S_table0(,%ecx,4),%ecx
303 movl CAST_S_table1(,%ebx,4),%ebx
305 movl CAST_S_table2(,%eax,4),%ebx
307 movl CAST_S_table3(,%edx,4),%ebx
323 movl CAST_S_table0(,%ecx,4),%ecx
324 movl CAST_S_table1(,%ebx,4),%ebx
326 movl CAST_S_table2(,%eax,4),%ebx
328 movl CAST_S_table3(,%edx,4),%ebx
344 movl CAST_S_table0(,%ecx,4),%ecx
345 movl CAST_S_table1(,%ebx,4),%ebx
347 movl CAST_S_table2(,%eax,4),%ebx
349 movl CAST_S_table3(,%edx,4),%ebx
365 movl CAST_S_table0(,%ecx,4),%ecx
366 movl CAST_S_table1(,%ebx,4),%ebx
368 movl CAST_S_table2(,%eax,4),%ebx
370 movl CAST_S_table3(,%edx,4),%ebx
386 movl CAST_S_table0(,%ecx,4),%ecx
387 movl CAST_S_table1(,%ebx,4),%ebx
389 movl CAST_S_table2(,%eax,4),%ebx
391 movl CAST_S_table3(,%edx,4),%ebx
407 movl CAST_S_table0(,%ecx,4),%ecx
408 movl CAST_S_table1(,%ebx,4),%ebx
410 movl CAST_S_table2(,%eax,4),%ebx
412 movl CAST_S_table3(,%edx,4),%ebx
425 SIZE(CAST_encrypt,.CAST_encrypt_end-CAST_encrypt)
426 .ident "CAST_encrypt"
430 TYPE(CAST_decrypt,@function)
439 /* Load the 2 words */
456 movl CAST_S_table0(,%ecx,4),%ecx
457 movl CAST_S_table1(,%ebx,4),%ebx
459 movl CAST_S_table2(,%eax,4),%ebx
461 movl CAST_S_table3(,%edx,4),%ebx
477 movl CAST_S_table0(,%ecx,4),%ecx
478 movl CAST_S_table1(,%ebx,4),%ebx
480 movl CAST_S_table2(,%eax,4),%ebx
482 movl CAST_S_table3(,%edx,4),%ebx
498 movl CAST_S_table0(,%ecx,4),%ecx
499 movl CAST_S_table1(,%ebx,4),%ebx
501 movl CAST_S_table2(,%eax,4),%ebx
503 movl CAST_S_table3(,%edx,4),%ebx
519 movl CAST_S_table0(,%ecx,4),%ecx
520 movl CAST_S_table1(,%ebx,4),%ebx
522 movl CAST_S_table2(,%eax,4),%ebx
524 movl CAST_S_table3(,%edx,4),%ebx
540 movl CAST_S_table0(,%ecx,4),%ecx
541 movl CAST_S_table1(,%ebx,4),%ebx
543 movl CAST_S_table2(,%eax,4),%ebx
545 movl CAST_S_table3(,%edx,4),%ebx
561 movl CAST_S_table0(,%ecx,4),%ecx
562 movl CAST_S_table1(,%ebx,4),%ebx
564 movl CAST_S_table2(,%eax,4),%ebx
566 movl CAST_S_table3(,%edx,4),%ebx
582 movl CAST_S_table0(,%ecx,4),%ecx
583 movl CAST_S_table1(,%ebx,4),%ebx
585 movl CAST_S_table2(,%eax,4),%ebx
587 movl CAST_S_table3(,%edx,4),%ebx
603 movl CAST_S_table0(,%ecx,4),%ecx
604 movl CAST_S_table1(,%ebx,4),%ebx
606 movl CAST_S_table2(,%eax,4),%ebx
608 movl CAST_S_table3(,%edx,4),%ebx
624 movl CAST_S_table0(,%ecx,4),%ecx
625 movl CAST_S_table1(,%ebx,4),%ebx
627 movl CAST_S_table2(,%eax,4),%ebx
629 movl CAST_S_table3(,%edx,4),%ebx
645 movl CAST_S_table0(,%ecx,4),%ecx
646 movl CAST_S_table1(,%ebx,4),%ebx
648 movl CAST_S_table2(,%eax,4),%ebx
650 movl CAST_S_table3(,%edx,4),%ebx
666 movl CAST_S_table0(,%ecx,4),%ecx
667 movl CAST_S_table1(,%ebx,4),%ebx
669 movl CAST_S_table2(,%eax,4),%ebx
671 movl CAST_S_table3(,%edx,4),%ebx
687 movl CAST_S_table0(,%ecx,4),%ecx
688 movl CAST_S_table1(,%ebx,4),%ebx
690 movl CAST_S_table2(,%eax,4),%ebx
692 movl CAST_S_table3(,%edx,4),%ebx
708 movl CAST_S_table0(,%ecx,4),%ecx
709 movl CAST_S_table1(,%ebx,4),%ebx
711 movl CAST_S_table2(,%eax,4),%ebx
713 movl CAST_S_table3(,%edx,4),%ebx
729 movl CAST_S_table0(,%ecx,4),%ecx
730 movl CAST_S_table1(,%ebx,4),%ebx
732 movl CAST_S_table2(,%eax,4),%ebx
734 movl CAST_S_table3(,%edx,4),%ebx
750 movl CAST_S_table0(,%ecx,4),%ecx
751 movl CAST_S_table1(,%ebx,4),%ebx
753 movl CAST_S_table2(,%eax,4),%ebx
755 movl CAST_S_table3(,%edx,4),%ebx
771 movl CAST_S_table0(,%ecx,4),%ecx
772 movl CAST_S_table1(,%ebx,4),%ebx
774 movl CAST_S_table2(,%eax,4),%ebx
776 movl CAST_S_table3(,%edx,4),%ebx
789 SIZE(CAST_decrypt,.CAST_decrypt_end-CAST_decrypt)
790 .ident "CAST_decrypt"
793 .globl CAST_cbc_encrypt
794 TYPE(CAST_cbc_encrypt,@function)
802 /* getting iv ptr from parameter 4 */
813 /* getting encrypt flag from parameter 5 */
815 /* get and push parameter 3 */
821 andl $4294967288, %ebp
824 jz .L001encrypt_finish
831 .byte 200 /* bswapl %eax */
833 .byte 203 /* bswapl %ebx */
840 .byte 200 /* bswapl %eax */
842 .byte 203 /* bswapl %ebx */
848 jnz .L002encrypt_loop
855 movl .L004cbc_enc_jmp_table(,%ebp,4),%ebp
880 .byte 200 /* bswapl %eax */
882 .byte 203 /* bswapl %ebx */
889 .byte 200 /* bswapl %eax */
891 .byte 203 /* bswapl %ebx */
897 andl $4294967288, %ebp
900 jz .L013decrypt_finish
905 .byte 200 /* bswapl %eax */
907 .byte 203 /* bswapl %ebx */
914 .byte 200 /* bswapl %eax */
916 .byte 203 /* bswapl %ebx */
930 jnz .L014decrypt_loop
938 .byte 200 /* bswapl %eax */
940 .byte 203 /* bswapl %ebx */
947 .byte 200 /* bswapl %eax */
949 .byte 203 /* bswapl %ebx */
989 .L004cbc_enc_jmp_table:
999 .L023cbc_dec_jmp_table:
1008 .CAST_cbc_encrypt_end:
1009 SIZE(CAST_cbc_encrypt,.CAST_cbc_encrypt_end-CAST_cbc_encrypt)