⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c-sol.s

📁 老外写的加密库cryptlib(版本3.1)
💻 S
📖 第 1 页 / 共 2 页
字号:
	/ 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 16.globl CAST_encrypt	.type	CAST_encrypt,@functionCAST_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 16.globl CAST_decrypt	.type	CAST_decrypt,@functionCAST_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 + -