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

📄 c-win32.asm

📁 老外写的加密库cryptlib(版本3.1)
💻 ASM
📖 第 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>	; segment .textextern	_CAST_S_table0extern	_CAST_S_table1extern	_CAST_S_table2extern	_CAST_S_table3global	_CAST_encrypt_CAST_encrypt:	; 	push	ebp	push	ebx	mov	ebx,		[12+esp]	mov	ebp,		[16+esp]	push	esi	push	edi	; Load the 2 words	mov	edi,		[ebx]	mov	esi,		[4+ebx]	; Get short key flag	mov	eax,		[128+ebp]	push	eax	xor	eax,		eax	; round 0	mov	edx,		[ebp]	mov	ecx,		[4+ebp]	add	edx,		esi	rol	edx,		cl	mov	ebx,		edx	xor	ecx,		ecx	mov	cl,		dh	and	ebx,		255	shr	edx,		16	xor	eax,		eax	mov	al,		dh	and	edx,		255	mov	ecx,		[_CAST_S_table0+ecx*4]	mov	ebx,		[_CAST_S_table1+ebx*4]	xor	ecx,		ebx	mov	ebx,		[_CAST_S_table2+eax*4]	sub	ecx,		ebx	mov	ebx,		[_CAST_S_table3+edx*4]	add	ecx,		ebx	xor	edi,		ecx	; round 1	mov	edx,		[8+ebp]	mov	ecx,		[12+ebp]	xor	edx,		edi	rol	edx,		cl	mov	ebx,		edx	xor	ecx,		ecx	mov	cl,		dh	and	ebx,		255	shr	edx,		16	xor	eax,		eax	mov	al,		dh	and	edx,		255	mov	ecx,		[_CAST_S_table0+ecx*4]	mov	ebx,		[_CAST_S_table1+ebx*4]	sub	ecx,		ebx	mov	ebx,		[_CAST_S_table2+eax*4]	add	ecx,		ebx	mov	ebx,		[_CAST_S_table3+edx*4]	xor	ecx,		ebx	xor	esi,		ecx	; round 2	mov	edx,		[16+ebp]	mov	ecx,		[20+ebp]	sub	edx,		esi	rol	edx,		cl	mov	ebx,		edx	xor	ecx,		ecx	mov	cl,		dh	and	ebx,		255	shr	edx,		16	xor	eax,		eax	mov	al,		dh	and	edx,		255	mov	ecx,		[_CAST_S_table0+ecx*4]	mov	ebx,		[_CAST_S_table1+ebx*4]	add	ecx,		ebx	mov	ebx,		[_CAST_S_table2+eax*4]	xor	ecx,		ebx	mov	ebx,		[_CAST_S_table3+edx*4]	sub	ecx,		ebx	xor	edi,		ecx	; round 3	mov	edx,		[24+ebp]	mov	ecx,		[28+ebp]	add	edx,		edi	rol	edx,		cl	mov	ebx,		edx	xor	ecx,		ecx	mov	cl,		dh	and	ebx,		255	shr	edx,		16	xor	eax,		eax	mov	al,		dh	and	edx,		255	mov	ecx,		[_CAST_S_table0+ecx*4]	mov	ebx,		[_CAST_S_table1+ebx*4]	xor	ecx,		ebx	mov	ebx,		[_CAST_S_table2+eax*4]	sub	ecx,		ebx	mov	ebx,		[_CAST_S_table3+edx*4]	add	ecx,		ebx	xor	esi,		ecx	; round 4	mov	edx,		[32+ebp]	mov	ecx,		[36+ebp]	xor	edx,		esi	rol	edx,		cl	mov	ebx,		edx	xor	ecx,		ecx	mov	cl,		dh	and	ebx,		255	shr	edx,		16	xor	eax,		eax	mov	al,		dh	and	edx,		255	mov	ecx,		[_CAST_S_table0+ecx*4]	mov	ebx,		[_CAST_S_table1+ebx*4]	sub	ecx,		ebx	mov	ebx,		[_CAST_S_table2+eax*4]	add	ecx,		ebx	mov	ebx,		[_CAST_S_table3+edx*4]	xor	ecx,		ebx	xor	edi,		ecx	; round 5	mov	edx,		[40+ebp]	mov	ecx,		[44+ebp]	sub	edx,		edi	rol	edx,		cl	mov	ebx,		edx	xor	ecx,		ecx	mov	cl,		dh	and	ebx,		255	shr	edx,		16	xor	eax,		eax	mov	al,		dh	and	edx,		255	mov	ecx,		[_CAST_S_table0+ecx*4]	mov	ebx,		[_CAST_S_table1+ebx*4]	add	ecx,		ebx	mov	ebx,		[_CAST_S_table2+eax*4]	xor	ecx,		ebx	mov	ebx,		[_CAST_S_table3+edx*4]	sub	ecx,		ebx	xor	esi,		ecx	; round 6	mov	edx,		[48+ebp]	mov	ecx,		[52+ebp]	add	edx,		esi	rol	edx,		cl	mov	ebx,		edx	xor	ecx,		ecx	mov	cl,		dh	and	ebx,		255	shr	edx,		16	xor	eax,		eax	mov	al,		dh	and	edx,		255	mov	ecx,		[_CAST_S_table0+ecx*4]	mov	ebx,		[_CAST_S_table1+ebx*4]	xor	ecx,		ebx	mov	ebx,		[_CAST_S_table2+eax*4]	sub	ecx,		ebx	mov	ebx,		[_CAST_S_table3+edx*4]	add	ecx,		ebx	xor	edi,		ecx	; round 7	mov	edx,		[56+ebp]	mov	ecx,		[60+ebp]	xor	edx,		edi	rol	edx,		cl	mov	ebx,		edx	xor	ecx,		ecx	mov	cl,		dh	and	ebx,		255	shr	edx,		16	xor	eax,		eax	mov	al,		dh	and	edx,		255	mov	ecx,		[_CAST_S_table0+ecx*4]	mov	ebx,		[_CAST_S_table1+ebx*4]	sub	ecx,		ebx	mov	ebx,		[_CAST_S_table2+eax*4]	add	ecx,		ebx	mov	ebx,		[_CAST_S_table3+edx*4]	xor	ecx,		ebx	xor	esi,		ecx	; round 8	mov	edx,		[64+ebp]	mov	ecx,		[68+ebp]	sub	edx,		esi	rol	edx,		cl	mov	ebx,		edx	xor	ecx,		ecx	mov	cl,		dh	and	ebx,		255	shr	edx,		16	xor	eax,		eax	mov	al,		dh	and	edx,		255	mov	ecx,		[_CAST_S_table0+ecx*4]	mov	ebx,		[_CAST_S_table1+ebx*4]	add	ecx,		ebx	mov	ebx,		[_CAST_S_table2+eax*4]	xor	ecx,		ebx	mov	ebx,		[_CAST_S_table3+edx*4]	sub	ecx,		ebx	xor	edi,		ecx	; round 9	mov	edx,		[72+ebp]	mov	ecx,		[76+ebp]	add	edx,		edi	rol	edx,		cl	mov	ebx,		edx	xor	ecx,		ecx	mov	cl,		dh	and	ebx,		255	shr	edx,		16	xor	eax,		eax	mov	al,		dh	and	edx,		255	mov	ecx,		[_CAST_S_table0+ecx*4]	mov	ebx,		[_CAST_S_table1+ebx*4]	xor	ecx,		ebx	mov	ebx,		[_CAST_S_table2+eax*4]	sub	ecx,		ebx	mov	ebx,		[_CAST_S_table3+edx*4]	add	ecx,		ebx	xor	esi,		ecx	; round 10	mov	edx,		[80+ebp]	mov	ecx,		[84+ebp]	xor	edx,		esi	rol	edx,		cl	mov	ebx,		edx	xor	ecx,		ecx	mov	cl,		dh	and	ebx,		255	shr	edx,		16	xor	eax,		eax	mov	al,		dh	and	edx,		255	mov	ecx,		[_CAST_S_table0+ecx*4]	mov	ebx,		[_CAST_S_table1+ebx*4]	sub	ecx,		ebx	mov	ebx,		[_CAST_S_table2+eax*4]	add	ecx,		ebx	mov	ebx,		[_CAST_S_table3+edx*4]	xor	ecx,		ebx	xor	edi,		ecx	; round 11	mov	edx,		[88+ebp]	mov	ecx,		[92+ebp]	sub	edx,		edi	rol	edx,		cl	mov	ebx,		edx	xor	ecx,		ecx	mov	cl,		dh	and	ebx,		255	shr	edx,		16	xor	eax,		eax	mov	al,		dh	and	edx,		255	mov	ecx,		[_CAST_S_table0+ecx*4]	mov	ebx,		[_CAST_S_table1+ebx*4]	add	ecx,		ebx	mov	ebx,		[_CAST_S_table2+eax*4]	xor	ecx,		ebx	mov	ebx,		[_CAST_S_table3+edx*4]	sub	ecx,		ebx	xor	esi,		ecx	; test short key flag	pop	edx	or	edx,		edx	jnz NEAR	$L000cast_enc_done	; round 12	mov	edx,		[96+ebp]	mov	ecx,		[100+ebp]	add	edx,		esi	rol	edx,		cl	mov	ebx,		edx	xor	ecx,		ecx	mov	cl,		dh	and	ebx,		255	shr	edx,		16	xor	eax,		eax	mov	al,		dh	and	edx,		255	mov	ecx,		[_CAST_S_table0+ecx*4]	mov	ebx,		[_CAST_S_table1+ebx*4]	xor	ecx,		ebx	mov	ebx,		[_CAST_S_table2+eax*4]	sub	ecx,		ebx	mov	ebx,		[_CAST_S_table3+edx*4]	add	ecx,		ebx	xor	edi,		ecx	; round 13	mov	edx,		[104+ebp]	mov	ecx,		[108+ebp]	xor	edx,		edi	rol	edx,		cl	mov	ebx,		edx	xor	ecx,		ecx	mov	cl,		dh	and	ebx,		255	shr	edx,		16	xor	eax,		eax	mov	al,		dh	and	edx,		255	mov	ecx,		[_CAST_S_table0+ecx*4]	mov	ebx,		[_CAST_S_table1+ebx*4]	sub	ecx,		ebx	mov	ebx,		[_CAST_S_table2+eax*4]	add	ecx,		ebx	mov	ebx,		[_CAST_S_table3+edx*4]	xor	ecx,		ebx	xor	esi,		ecx	; round 14	mov	edx,		[112+ebp]	mov	ecx,		[116+ebp]	sub	edx,		esi	rol	edx,		cl	mov	ebx,		edx	xor	ecx,		ecx	mov	cl,		dh	and	ebx,		255	shr	edx,		16	xor	eax,		eax	mov	al,		dh	and	edx,		255	mov	ecx,		[_CAST_S_table0+ecx*4]	mov	ebx,		[_CAST_S_table1+ebx*4]	add	ecx,		ebx	mov	ebx,		[_CAST_S_table2+eax*4]	xor	ecx,		ebx	mov	ebx,		[_CAST_S_table3+edx*4]	sub	ecx,		ebx	xor	edi,		ecx	; round 15	mov	edx,		[120+ebp]	mov	ecx,		[124+ebp]	add	edx,		edi	rol	edx,		cl	mov	ebx,		edx	xor	ecx,		ecx	mov	cl,		dh	and	ebx,		255	shr	edx,		16	xor	eax,		eax	mov	al,		dh	and	edx,		255	mov	ecx,		[_CAST_S_table0+ecx*4]	mov	ebx,		[_CAST_S_table1+ebx*4]	xor	ecx,		ebx	mov	ebx,		[_CAST_S_table2+eax*4]	sub	ecx,		ebx	mov	ebx,		[_CAST_S_table3+edx*4]	add	ecx,		ebx	xor	esi,		ecx$L000cast_enc_done:	nop	mov	eax,		[20+esp]	mov	[4+eax],	edi	mov	[eax],		esi	pop	edi	pop	esi	pop	ebx	pop	ebp	retextern	_CAST_S_table0extern	_CAST_S_table1extern	_CAST_S_table2extern	_CAST_S_table3global	_CAST_decrypt_CAST_decrypt:	; 	push	ebp	push	ebx	mov	ebx,		[12+esp]	mov	ebp,		[16+esp]	push	esi	push	edi	; Load the 2 words	mov	edi,		[ebx]	mov	esi,		[4+ebx]	; Get short key flag	mov	eax,		[128+ebp]	or	eax,		eax	jnz NEAR	$L001cast_dec_skip	xor	eax,		eax	; round 15	mov	edx,		[120+ebp]	mov	ecx,		[124+ebp]	add	edx,		esi	rol	edx,		cl	mov	ebx,		edx	xor	ecx,		ecx	mov	cl,		dh	and	ebx,		255	shr	edx,		16	xor	eax,		eax	mov	al,		dh	and	edx,		255	mov	ecx,		[_CAST_S_table0+ecx*4]	mov	ebx,		[_CAST_S_table1+ebx*4]	xor	ecx,		ebx	mov	ebx,		[_CAST_S_table2+eax*4]	sub	ecx,		ebx	mov	ebx,		[_CAST_S_table3+edx*4]	add	ecx,		ebx	xor	edi,		ecx	; round 14	mov	edx,		[112+ebp]	mov	ecx,		[116+ebp]	sub	edx,		edi	rol	edx,		cl	mov	ebx,		edx	xor	ecx,		ecx	mov	cl,		dh	and	ebx,		255	shr	edx,		16	xor	eax,		eax	mov	al,		dh	and	edx,		255	mov	ecx,		[_CAST_S_table0+ecx*4]	mov	ebx,		[_CAST_S_table1+ebx*4]	add	ecx,		ebx	mov	ebx,		[_CAST_S_table2+eax*4]	xor	ecx,		ebx	mov	ebx,		[_CAST_S_table3+edx*4]	sub	ecx,		ebx	xor	esi,		ecx	; round 13	mov	edx,		[104+ebp]	mov	ecx,		[108+ebp]	xor	edx,		esi	rol	edx,		cl	mov	ebx,		edx	xor	ecx,		ecx	mov	cl,		dh	and	ebx,		255	shr	edx,		16	xor	eax,		eax	mov	al,		dh	and	edx,		255	mov	ecx,		[_CAST_S_table0+ecx*4]	mov	ebx,		[_CAST_S_table1+ebx*4]	sub	ecx,		ebx	mov	ebx,		[_CAST_S_table2+eax*4]	add	ecx,		ebx	mov	ebx,		[_CAST_S_table3+edx*4]	xor	ecx,		ebx	xor	edi,		ecx	; round 12	mov	edx,		[96+ebp]	mov	ecx,		[100+ebp]	add	edx,		edi	rol	edx,		cl	mov	ebx,		edx	xor	ecx,		ecx	mov	cl,		dh	and	ebx,		255

⌨️ 快捷键说明

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