📄 c-win32.asm
字号:
; 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 + -