提交 690ad20a 编写于 作者: B Ben Laurie

Dispose of generated programs.

上级 649cdb7b
; 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]
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 11
mov edx, DWORD PTR 88[ebp]
mov ecx, DWORD PTR 92[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 10
mov edx, DWORD PTR 80[ebp]
mov ecx, DWORD PTR 84[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 9
mov edx, DWORD PTR 72[ebp]
mov ecx, DWORD PTR 76[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 8
mov edx, DWORD PTR 64[ebp]
mov ecx, DWORD PTR 68[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 7
mov edx, DWORD PTR 56[ebp]
mov ecx, DWORD PTR 60[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 6
mov edx, DWORD PTR 48[ebp]
mov ecx, DWORD PTR 52[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 5
mov edx, DWORD PTR 40[ebp]
mov ecx, DWORD PTR 44[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 4
mov edx, DWORD PTR 32[ebp]
mov ecx, DWORD PTR 36[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 3
mov edx, DWORD PTR 24[ebp]
mov ecx, DWORD PTR 28[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 2
mov edx, DWORD PTR 16[ebp]
mov ecx, DWORD PTR 20[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 1
mov edx, DWORD PTR 8[ebp]
mov ecx, DWORD PTR 12[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 0
mov edx, DWORD PTR [ebp]
mov ecx, DWORD PTR 4[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_decrypt ENDP
_TEXT ENDS
_TEXT SEGMENT
PUBLIC _CAST_cbc_encrypt
_CAST_cbc_encrypt PROC NEAR
;
push ebp
push ebx
push esi
push edi
mov ebp, DWORD PTR 28[esp]
; getting iv ptr from parameter 4
mov ebx, DWORD PTR 36[esp]
mov esi, DWORD PTR [ebx]
mov edi, DWORD PTR 4[ebx]
push edi
push esi
push edi
push esi
mov ebx, esp
mov esi, DWORD PTR 36[esp]
mov edi, DWORD PTR 40[esp]
; getting encrypt flag from parameter 5
mov ecx, DWORD PTR 56[esp]
; get and push parameter 3
mov eax, DWORD PTR 48[esp]
push eax
push ebx
cmp ecx, 0
jz $L000decrypt
and ebp, 4294967288
mov eax, DWORD PTR 8[esp]
mov ebx, DWORD PTR 12[esp]
jz $L001encrypt_finish
L002encrypt_loop:
mov ecx, DWORD PTR [esi]
mov edx, DWORD PTR 4[esi]
xor eax, ecx
xor ebx, edx
bswap eax
bswap ebx
mov DWORD PTR 8[esp],eax
mov DWORD PTR 12[esp],ebx
call _CAST_encrypt
mov eax, DWORD PTR 8[esp]
mov ebx, DWORD PTR 12[esp]
bswap eax
bswap ebx
mov DWORD PTR [edi],eax
mov DWORD PTR 4[edi],ebx
add esi, 8
add edi, 8
sub ebp, 8
jnz L002encrypt_loop
$L001encrypt_finish:
mov ebp, DWORD PTR 52[esp]
and ebp, 7
jz $L003finish
xor ecx, ecx
xor edx, edx
mov ebp, DWORD PTR $L004cbc_enc_jmp_table[ebp*4]
jmp ebp
L005ej7:
xor edx, edx
mov dh, BYTE PTR 6[esi]
shl edx, 8
L006ej6:
mov dh, BYTE PTR 5[esi]
L007ej5:
mov dl, BYTE PTR 4[esi]
L008ej4:
mov ecx, DWORD PTR [esi]
jmp $L009ejend
L010ej3:
mov ch, BYTE PTR 2[esi]
xor ecx, ecx
shl ecx, 8
L011ej2:
mov ch, BYTE PTR 1[esi]
L012ej1:
mov cl, BYTE PTR [esi]
$L009ejend:
xor eax, ecx
xor ebx, edx
bswap eax
bswap ebx
mov DWORD PTR 8[esp],eax
mov DWORD PTR 12[esp],ebx
call _CAST_encrypt
mov eax, DWORD PTR 8[esp]
mov ebx, DWORD PTR 12[esp]
bswap eax
bswap ebx
mov DWORD PTR [edi],eax
mov DWORD PTR 4[edi],ebx
jmp $L003finish
$L000decrypt:
and ebp, 4294967288
mov eax, DWORD PTR 16[esp]
mov ebx, DWORD PTR 20[esp]
jz $L013decrypt_finish
L014decrypt_loop:
mov eax, DWORD PTR [esi]
mov ebx, DWORD PTR 4[esi]
bswap eax
bswap ebx
mov DWORD PTR 8[esp],eax
mov DWORD PTR 12[esp],ebx
call _CAST_decrypt
mov eax, DWORD PTR 8[esp]
mov ebx, DWORD PTR 12[esp]
bswap eax
bswap ebx
mov ecx, DWORD PTR 16[esp]
mov edx, DWORD PTR 20[esp]
xor ecx, eax
xor edx, ebx
mov eax, DWORD PTR [esi]
mov ebx, DWORD PTR 4[esi]
mov DWORD PTR [edi],ecx
mov DWORD PTR 4[edi],edx
mov DWORD PTR 16[esp],eax
mov DWORD PTR 20[esp],ebx
add esi, 8
add edi, 8
sub ebp, 8
jnz L014decrypt_loop
$L013decrypt_finish:
mov ebp, DWORD PTR 52[esp]
and ebp, 7
jz $L003finish
mov eax, DWORD PTR [esi]
mov ebx, DWORD PTR 4[esi]
bswap eax
bswap ebx
mov DWORD PTR 8[esp],eax
mov DWORD PTR 12[esp],ebx
call _CAST_decrypt
mov eax, DWORD PTR 8[esp]
mov ebx, DWORD PTR 12[esp]
bswap eax
bswap ebx
mov ecx, DWORD PTR 16[esp]
mov edx, DWORD PTR 20[esp]
xor ecx, eax
xor edx, ebx
mov eax, DWORD PTR [esi]
mov ebx, DWORD PTR 4[esi]
L015dj7:
ror edx, 16
mov BYTE PTR 6[edi],dl
shr edx, 16
L016dj6:
mov BYTE PTR 5[edi],dh
L017dj5:
mov BYTE PTR 4[edi],dl
L018dj4:
mov DWORD PTR [edi],ecx
jmp $L019djend
L020dj3:
ror ecx, 16
mov BYTE PTR 2[edi],cl
shl ecx, 16
L021dj2:
mov BYTE PTR 1[esi],ch
L022dj1:
mov BYTE PTR [esi], cl
$L019djend:
jmp $L003finish
$L003finish:
mov ecx, DWORD PTR 60[esp]
add esp, 24
mov DWORD PTR [ecx],eax
mov DWORD PTR 4[ecx],ebx
pop edi
pop esi
pop ebx
pop ebp
ret
$L004cbc_enc_jmp_table:
DD 0
DD L012ej1
DD L011ej2
DD L010ej3
DD L008ej4
DD L007ej5
DD L006ej6
DD L005ej7
L023cbc_dec_jmp_table:
DD 0
DD L022dj1
DD L021dj2
DD L020dj3
DD L018dj4
DD L017dj5
DD L016dj6
DD L015dj7
_CAST_cbc_encrypt ENDP
_TEXT ENDS
END
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册