cx86unix.cpp

来自「一个用于点对点传输加密的工具包源码」· C++ 代码 · 共 1,024 行 · 第 1/2 页

CPP
1,024
字号
/* 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) && !defined(ELF))#define CAST_S_table0 _CAST_S_table0#define CAST_S_table1 _CAST_S_table1#define CAST_S_table2 _CAST_S_table2#define CAST_S_table3 _CAST_S_table3#define CAST_encrypt _CAST_encrypt#define CAST_S_table0 _CAST_S_table0#define CAST_S_table1 _CAST_S_table1#define CAST_S_table2 _CAST_S_table2#define CAST_S_table3 _CAST_S_table3#define CAST_decrypt _CAST_decrypt#define CAST_cbc_encrypt _CAST_cbc_encrypt#endif#ifdef OUT#define OK	1#define ALIGN	4#endif#if defined(BSDI) && !defined(ELF)#define OK              1#define ALIGN           4#undef SIZE#undef TYPE#define SIZE(a,b)#define TYPE(a,b)#endif#if defined(ELF) || defined(SOL)#define OK              1#define ALIGN           16#endif#ifndef OKYou need to define one ofELF - elf systems - linux-elf, NetBSD and DG-UXOUT - a.out systems - linux-a.out and FreeBSDSOL - solaris systems, which are elf with strange comment linesBSDI - 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, gaswin (for GNU as on 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	/* 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 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	/* 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

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?