cx86unix.cpp
来自「提供了很多种加密算法和CA认证及相关服务如CMP、OCSP等的开发」· C++ 代码 · 共 982 行 · 第 1/2 页
CPP
982 行
/* Run the C pre-processor over this file with one of the following defined
* ELF - elf object files,
* OUT - a.out object files,
* BSDI - BSDI style a.out object files
* SOL - Solaris style elf
*/
#define TYPE(a,b) .type a,b
#define SIZE(a,b) .size a,b
#if defined(OUT) || defined(BSDI)
#endif
#ifdef OUT
#define OK 1
#define ALIGN 4
#endif
#ifdef BSDI
#define OK 1
#define ALIGN 4
#undef SIZE
#undef TYPE
#endif
#if defined(ELF) || defined(SOL)
#define OK 1
#define ALIGN 16
#endif
#ifndef OK
You need to define one of
ELF - elf systems - linux-elf, NetBSD and DG-UX
OUT - a.out systems - linux-a.out and FreeBSD
SOL - solaris systems, which are elf with strange comment lines
BSDI - a.out with a very primative version of as.
#endif
/* Let the Assembler begin :-) */
/* 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, or Solaris */
/* eric <eay@cryptsoft.com> */
.file "cast-586.s"
.version "01.01"
gcc2_compiled.:
.text
.align ALIGN
.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
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
/* 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
movl 20(%esp), %eax
xorl %ecx, %esi
nop
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 ALIGN
.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
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
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?