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

📄 c-win32.asm

📁 提供了很多种加密算法和CA认证及相关服务如CMP、OCSP等的开发
💻 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, or Solaris
	; eric <eay@cryptsoft.com>
	; 
	TITLE	cast-586.asm
        .486
.model FLAT
_TEXT	SEGMENT
PUBLIC	_CAST_encrypt
EXTERN	_CAST_S_table0:DWORD
EXTERN	_CAST_S_table1:DWORD
EXTERN	_CAST_S_table2:DWORD
EXTERN	_CAST_S_table3:DWORD

_CAST_encrypt PROC NEAR
	; 
	push	ebp
	push	ebx
	mov	ebx,		DWORD PTR 12[esp]
	mov	ebp,		DWORD PTR 16[esp]
	push	esi
	push	edi
	; Load the 2 words
	mov	edi,		DWORD PTR [ebx]
	mov	esi,		DWORD PTR 4[ebx]
	xor	eax,		eax
	; round 0
	mov	edx,		DWORD PTR [ebp]
	mov	ecx,		DWORD PTR 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,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	add	ecx,		ebx
	xor	edi,		ecx
	; round 1
	mov	edx,		DWORD PTR 8[ebp]
	mov	ecx,		DWORD PTR 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,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	add	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	xor	ecx,		ebx
	xor	esi,		ecx
	; round 2
	mov	edx,		DWORD PTR 16[ebp]
	mov	ecx,		DWORD PTR 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,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	add	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	sub	ecx,		ebx
	xor	edi,		ecx
	; round 3
	mov	edx,		DWORD PTR 24[ebp]
	mov	ecx,		DWORD PTR 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,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	add	ecx,		ebx
	xor	esi,		ecx
	; round 4
	mov	edx,		DWORD PTR 32[ebp]
	mov	ecx,		DWORD PTR 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,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	add	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	xor	ecx,		ebx
	xor	edi,		ecx
	; round 5
	mov	edx,		DWORD PTR 40[ebp]
	mov	ecx,		DWORD PTR 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,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	add	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	sub	ecx,		ebx
	xor	esi,		ecx
	; round 6
	mov	edx,		DWORD PTR 48[ebp]
	mov	ecx,		DWORD PTR 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,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	add	ecx,		ebx
	xor	edi,		ecx
	; round 7
	mov	edx,		DWORD PTR 56[ebp]
	mov	ecx,		DWORD PTR 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,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	add	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	xor	ecx,		ebx
	xor	esi,		ecx
	; round 8
	mov	edx,		DWORD PTR 64[ebp]
	mov	ecx,		DWORD PTR 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,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	add	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	sub	ecx,		ebx
	xor	edi,		ecx
	; round 9
	mov	edx,		DWORD PTR 72[ebp]
	mov	ecx,		DWORD PTR 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,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	add	ecx,		ebx
	xor	esi,		ecx
	; round 10
	mov	edx,		DWORD PTR 80[ebp]
	mov	ecx,		DWORD PTR 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,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	add	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	xor	ecx,		ebx
	xor	edi,		ecx
	; round 11
	mov	edx,		DWORD PTR 88[ebp]
	mov	ecx,		DWORD PTR 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,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	add	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	sub	ecx,		ebx
	xor	esi,		ecx
	; round 12
	mov	edx,		DWORD PTR 96[ebp]
	mov	ecx,		DWORD PTR 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,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	add	ecx,		ebx
	xor	edi,		ecx
	; round 13
	mov	edx,		DWORD PTR 104[ebp]
	mov	ecx,		DWORD PTR 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,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	add	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	xor	ecx,		ebx
	xor	esi,		ecx
	; round 14
	mov	edx,		DWORD PTR 112[ebp]
	mov	ecx,		DWORD PTR 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,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	add	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	sub	ecx,		ebx
	xor	edi,		ecx
	; round 15
	mov	edx,		DWORD PTR 120[ebp]
	mov	ecx,		DWORD PTR 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,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	add	ecx,		ebx
	mov	eax,		DWORD PTR 20[esp]
	xor	esi,		ecx
	nop
	mov	DWORD PTR 4[eax],edi
	mov	DWORD PTR [eax],esi
	pop	edi
	pop	esi
	pop	ebx
	pop	ebp
	ret
_CAST_encrypt ENDP
_TEXT	ENDS
_TEXT	SEGMENT
PUBLIC	_CAST_decrypt
EXTERN	_CAST_S_table0:DWORD
EXTERN	_CAST_S_table1:DWORD
EXTERN	_CAST_S_table2:DWORD
EXTERN	_CAST_S_table3:DWORD

_CAST_decrypt PROC NEAR
	; 
	push	ebp
	push	ebx
	mov	ebx,		DWORD PTR 12[esp]
	mov	ebp,		DWORD PTR 16[esp]
	push	esi
	push	edi
	; Load the 2 words
	mov	edi,		DWORD PTR [ebx]
	mov	esi,		DWORD PTR 4[ebx]
	xor	eax,		eax
	; round 15
	mov	edx,		DWORD PTR 120[ebp]
	mov	ecx,		DWORD PTR 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,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	add	ecx,		ebx
	xor	edi,		ecx
	; round 14
	mov	edx,		DWORD PTR 112[ebp]
	mov	ecx,		DWORD PTR 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,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	add	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	sub	ecx,		ebx
	xor	esi,		ecx
	; round 13
	mov	edx,		DWORD PTR 104[ebp]
	mov	ecx,		DWORD PTR 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,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	add	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	xor	ecx,		ebx
	xor	edi,		ecx
	; round 12
	mov	edx,		DWORD PTR 96[ebp]
	mov	ecx,		DWORD PTR 100[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,		DWORD PTR _CAST_S_table0[ecx*4]

⌨️ 快捷键说明

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