📄 c-out.s
字号:
# Don't even think of reading this code # It was automatically generated by cast-586.pl # Which is a perl program used to generate the x86 assember for # any of elf, a.out, BSDI, Win32, gaswin (for GNU as on Win32) or Solaris # eric <eay@cryptsoft.com> .file "cast-586.s" .version "01.01"gcc2_compiled.:.text .align 4.globl _CAST_encrypt .type _CAST_encrypt,@function_CAST_encrypt: pushl %ebp pushl %ebx movl 12(%esp), %ebx movl 16(%esp), %ebp pushl %esi pushl %edi # Load the 2 words movl (%ebx), %edi movl 4(%ebx), %esi # Get short key flag movl 128(%ebp), %eax pushl %eax xorl %eax, %eax # round 0 movl (%ebp), %edx movl 4(%ebp), %ecx addl %esi, %edx roll %cl, %edx movl %edx, %ebx xorl %ecx, %ecx movb %dh, %cl andl $255, %ebx shrl $16, %edx xorl %eax, %eax movb %dh, %al andl $255, %edx movl _CAST_S_table0(,%ecx,4),%ecx movl _CAST_S_table1(,%ebx,4),%ebx xorl %ebx, %ecx movl _CAST_S_table2(,%eax,4),%ebx subl %ebx, %ecx movl _CAST_S_table3(,%edx,4),%ebx addl %ebx, %ecx xorl %ecx, %edi # round 1 movl 8(%ebp), %edx movl 12(%ebp), %ecx xorl %edi, %edx roll %cl, %edx movl %edx, %ebx xorl %ecx, %ecx movb %dh, %cl andl $255, %ebx shrl $16, %edx xorl %eax, %eax movb %dh, %al andl $255, %edx movl _CAST_S_table0(,%ecx,4),%ecx movl _CAST_S_table1(,%ebx,4),%ebx subl %ebx, %ecx movl _CAST_S_table2(,%eax,4),%ebx addl %ebx, %ecx movl _CAST_S_table3(,%edx,4),%ebx xorl %ebx, %ecx xorl %ecx, %esi # round 2 movl 16(%ebp), %edx movl 20(%ebp), %ecx subl %esi, %edx roll %cl, %edx movl %edx, %ebx xorl %ecx, %ecx movb %dh, %cl andl $255, %ebx shrl $16, %edx xorl %eax, %eax movb %dh, %al andl $255, %edx movl _CAST_S_table0(,%ecx,4),%ecx movl _CAST_S_table1(,%ebx,4),%ebx addl %ebx, %ecx movl _CAST_S_table2(,%eax,4),%ebx xorl %ebx, %ecx movl _CAST_S_table3(,%edx,4),%ebx subl %ebx, %ecx xorl %ecx, %edi # round 3 movl 24(%ebp), %edx movl 28(%ebp), %ecx addl %edi, %edx roll %cl, %edx movl %edx, %ebx xorl %ecx, %ecx movb %dh, %cl andl $255, %ebx shrl $16, %edx xorl %eax, %eax movb %dh, %al andl $255, %edx movl _CAST_S_table0(,%ecx,4),%ecx movl _CAST_S_table1(,%ebx,4),%ebx xorl %ebx, %ecx movl _CAST_S_table2(,%eax,4),%ebx subl %ebx, %ecx movl _CAST_S_table3(,%edx,4),%ebx addl %ebx, %ecx xorl %ecx, %esi # round 4 movl 32(%ebp), %edx movl 36(%ebp), %ecx xorl %esi, %edx roll %cl, %edx movl %edx, %ebx xorl %ecx, %ecx movb %dh, %cl andl $255, %ebx shrl $16, %edx xorl %eax, %eax movb %dh, %al andl $255, %edx movl _CAST_S_table0(,%ecx,4),%ecx movl _CAST_S_table1(,%ebx,4),%ebx subl %ebx, %ecx movl _CAST_S_table2(,%eax,4),%ebx addl %ebx, %ecx movl _CAST_S_table3(,%edx,4),%ebx xorl %ebx, %ecx xorl %ecx, %edi # round 5 movl 40(%ebp), %edx movl 44(%ebp), %ecx subl %edi, %edx roll %cl, %edx movl %edx, %ebx xorl %ecx, %ecx movb %dh, %cl andl $255, %ebx shrl $16, %edx xorl %eax, %eax movb %dh, %al andl $255, %edx movl _CAST_S_table0(,%ecx,4),%ecx movl _CAST_S_table1(,%ebx,4),%ebx addl %ebx, %ecx movl _CAST_S_table2(,%eax,4),%ebx xorl %ebx, %ecx movl _CAST_S_table3(,%edx,4),%ebx subl %ebx, %ecx xorl %ecx, %esi # round 6 movl 48(%ebp), %edx movl 52(%ebp), %ecx addl %esi, %edx roll %cl, %edx movl %edx, %ebx xorl %ecx, %ecx movb %dh, %cl andl $255, %ebx shrl $16, %edx xorl %eax, %eax movb %dh, %al andl $255, %edx movl _CAST_S_table0(,%ecx,4),%ecx movl _CAST_S_table1(,%ebx,4),%ebx xorl %ebx, %ecx movl _CAST_S_table2(,%eax,4),%ebx subl %ebx, %ecx movl _CAST_S_table3(,%edx,4),%ebx addl %ebx, %ecx xorl %ecx, %edi # round 7 movl 56(%ebp), %edx movl 60(%ebp), %ecx xorl %edi, %edx roll %cl, %edx movl %edx, %ebx xorl %ecx, %ecx movb %dh, %cl andl $255, %ebx shrl $16, %edx xorl %eax, %eax movb %dh, %al andl $255, %edx movl _CAST_S_table0(,%ecx,4),%ecx movl _CAST_S_table1(,%ebx,4),%ebx subl %ebx, %ecx movl _CAST_S_table2(,%eax,4),%ebx addl %ebx, %ecx movl _CAST_S_table3(,%edx,4),%ebx xorl %ebx, %ecx xorl %ecx, %esi # round 8 movl 64(%ebp), %edx movl 68(%ebp), %ecx subl %esi, %edx roll %cl, %edx movl %edx, %ebx xorl %ecx, %ecx movb %dh, %cl andl $255, %ebx shrl $16, %edx xorl %eax, %eax movb %dh, %al andl $255, %edx movl _CAST_S_table0(,%ecx,4),%ecx movl _CAST_S_table1(,%ebx,4),%ebx addl %ebx, %ecx movl _CAST_S_table2(,%eax,4),%ebx xorl %ebx, %ecx movl _CAST_S_table3(,%edx,4),%ebx subl %ebx, %ecx xorl %ecx, %edi # round 9 movl 72(%ebp), %edx movl 76(%ebp), %ecx addl %edi, %edx roll %cl, %edx movl %edx, %ebx xorl %ecx, %ecx movb %dh, %cl andl $255, %ebx shrl $16, %edx xorl %eax, %eax movb %dh, %al andl $255, %edx movl _CAST_S_table0(,%ecx,4),%ecx movl _CAST_S_table1(,%ebx,4),%ebx xorl %ebx, %ecx movl _CAST_S_table2(,%eax,4),%ebx subl %ebx, %ecx movl _CAST_S_table3(,%edx,4),%ebx addl %ebx, %ecx xorl %ecx, %esi # round 10 movl 80(%ebp), %edx movl 84(%ebp), %ecx xorl %esi, %edx roll %cl, %edx movl %edx, %ebx xorl %ecx, %ecx movb %dh, %cl andl $255, %ebx shrl $16, %edx xorl %eax, %eax movb %dh, %al andl $255, %edx movl _CAST_S_table0(,%ecx,4),%ecx movl _CAST_S_table1(,%ebx,4),%ebx subl %ebx, %ecx movl _CAST_S_table2(,%eax,4),%ebx addl %ebx, %ecx movl _CAST_S_table3(,%edx,4),%ebx xorl %ebx, %ecx xorl %ecx, %edi # round 11 movl 88(%ebp), %edx movl 92(%ebp), %ecx subl %edi, %edx roll %cl, %edx movl %edx, %ebx xorl %ecx, %ecx movb %dh, %cl andl $255, %ebx shrl $16, %edx xorl %eax, %eax movb %dh, %al andl $255, %edx movl _CAST_S_table0(,%ecx,4),%ecx movl _CAST_S_table1(,%ebx,4),%ebx addl %ebx, %ecx movl _CAST_S_table2(,%eax,4),%ebx xorl %ebx, %ecx movl _CAST_S_table3(,%edx,4),%ebx subl %ebx, %ecx xorl %ecx, %esi # test short key flag popl %edx orl %edx, %edx jnz .L000cast_enc_done # round 12 movl 96(%ebp), %edx movl 100(%ebp), %ecx addl %esi, %edx roll %cl, %edx movl %edx, %ebx xorl %ecx, %ecx movb %dh, %cl andl $255, %ebx shrl $16, %edx xorl %eax, %eax movb %dh, %al andl $255, %edx movl _CAST_S_table0(,%ecx,4),%ecx movl _CAST_S_table1(,%ebx,4),%ebx xorl %ebx, %ecx movl _CAST_S_table2(,%eax,4),%ebx subl %ebx, %ecx movl _CAST_S_table3(,%edx,4),%ebx addl %ebx, %ecx xorl %ecx, %edi # round 13 movl 104(%ebp), %edx movl 108(%ebp), %ecx xorl %edi, %edx roll %cl, %edx movl %edx, %ebx xorl %ecx, %ecx movb %dh, %cl andl $255, %ebx shrl $16, %edx xorl %eax, %eax movb %dh, %al andl $255, %edx movl _CAST_S_table0(,%ecx,4),%ecx movl _CAST_S_table1(,%ebx,4),%ebx subl %ebx, %ecx movl _CAST_S_table2(,%eax,4),%ebx addl %ebx, %ecx movl _CAST_S_table3(,%edx,4),%ebx xorl %ebx, %ecx xorl %ecx, %esi # round 14 movl 112(%ebp), %edx movl 116(%ebp), %ecx subl %esi, %edx roll %cl, %edx movl %edx, %ebx xorl %ecx, %ecx movb %dh, %cl andl $255, %ebx shrl $16, %edx xorl %eax, %eax movb %dh, %al andl $255, %edx movl _CAST_S_table0(,%ecx,4),%ecx movl _CAST_S_table1(,%ebx,4),%ebx addl %ebx, %ecx movl _CAST_S_table2(,%eax,4),%ebx xorl %ebx, %ecx movl _CAST_S_table3(,%edx,4),%ebx subl %ebx, %ecx xorl %ecx, %edi # round 15 movl 120(%ebp), %edx movl 124(%ebp), %ecx addl %edi, %edx roll %cl, %edx movl %edx, %ebx xorl %ecx, %ecx movb %dh, %cl andl $255, %ebx shrl $16, %edx xorl %eax, %eax movb %dh, %al andl $255, %edx movl _CAST_S_table0(,%ecx,4),%ecx movl _CAST_S_table1(,%ebx,4),%ebx xorl %ebx, %ecx movl _CAST_S_table2(,%eax,4),%ebx subl %ebx, %ecx movl _CAST_S_table3(,%edx,4),%ebx addl %ebx, %ecx xorl %ecx, %esi.L000cast_enc_done: nop movl 20(%esp), %eax movl %edi, 4(%eax) movl %esi, (%eax) popl %edi popl %esi popl %ebx popl %ebp ret._CAST_encrypt_end: .size _CAST_encrypt,._CAST_encrypt_end-_CAST_encrypt.ident "_CAST_encrypt".text .align 4.globl _CAST_decrypt .type _CAST_decrypt,@function_CAST_decrypt: pushl %ebp pushl %ebx movl 12(%esp), %ebx movl 16(%esp), %ebp pushl %esi pushl %edi # Load the 2 words movl (%ebx), %edi movl 4(%ebx), %esi # Get short key flag movl 128(%ebp), %eax orl %eax, %eax jnz .L001cast_dec_skip xorl %eax, %eax # round 15 movl 120(%ebp), %edx movl 124(%ebp), %ecx addl %esi, %edx roll %cl, %edx movl %edx, %ebx xorl %ecx, %ecx movb %dh, %cl andl $255, %ebx shrl $16, %edx xorl %eax, %eax movb %dh, %al andl $255, %edx movl _CAST_S_table0(,%ecx,4),%ecx movl _CAST_S_table1(,%ebx,4),%ebx xorl %ebx, %ecx movl _CAST_S_table2(,%eax,4),%ebx subl %ebx, %ecx movl _CAST_S_table3(,%edx,4),%ebx addl %ebx, %ecx xorl %ecx, %edi # round 14 movl 112(%ebp), %edx movl 116(%ebp), %ecx subl %edi, %edx roll %cl, %edx movl %edx, %ebx xorl %ecx, %ecx movb %dh, %cl andl $255, %ebx shrl $16, %edx xorl %eax, %eax movb %dh, %al andl $255, %edx movl _CAST_S_table0(,%ecx,4),%ecx movl _CAST_S_table1(,%ebx,4),%ebx addl %ebx, %ecx movl _CAST_S_table2(,%eax,4),%ebx xorl %ebx, %ecx movl _CAST_S_table3(,%edx,4),%ebx subl %ebx, %ecx xorl %ecx, %esi # round 13 movl 104(%ebp), %edx movl 108(%ebp), %ecx xorl %esi, %edx roll %cl, %edx movl %edx, %ebx xorl %ecx, %ecx movb %dh, %cl andl $255, %ebx shrl $16, %edx xorl %eax, %eax movb %dh, %al andl $255, %edx movl _CAST_S_table0(,%ecx,4),%ecx movl _CAST_S_table1(,%ebx,4),%ebx subl %ebx, %ecx movl _CAST_S_table2(,%eax,4),%ebx addl %ebx, %ecx movl _CAST_S_table3(,%edx,4),%ebx xorl %ebx, %ecx xorl %ecx, %edi # round 12 movl 96(%ebp), %edx movl 100(%ebp), %ecx addl %edi, %edx roll %cl, %edx movl %edx, %ebx xorl %ecx, %ecx movb %dh, %cl andl $255, %ebx shrl $16, %edx xorl %eax, %eax movb %dh, %al andl $255, %edx movl _CAST_S_table0(,%ecx,4),%ecx movl _CAST_S_table1(,%ebx,4),%ebx xorl %ebx, %ecx movl _CAST_S_table2(,%eax,4),%ebx subl %ebx, %ecx movl _CAST_S_table3(,%edx,4),%ebx addl %ebx, %ecx xorl %ecx, %esi.L001cast_dec_skip:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -