📄 b-win32.asm
字号:
; Don't even think of reading this code
; It was automatically generated by bf-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 bf-586.asm
.486
.model FLAT
_TEXT SEGMENT
PUBLIC _BF_encrypt
_BF_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
mov ebx, DWORD PTR [ebp]
xor ecx, ecx
xor edi, ebx
;
; Round 0
mov edx, DWORD PTR 4[ebp]
mov ebx, edi
xor esi, edx
shr ebx, 16
mov edx, edi
mov al, bh
and ebx, 255
mov cl, dh
and edx, 255
mov eax, DWORD PTR 72[eax*4+ebp]
mov ebx, DWORD PTR 1096[ebx*4+ebp]
add ebx, eax
mov eax, DWORD PTR 2120[ecx*4+ebp]
xor ebx, eax
mov edx, DWORD PTR 3144[edx*4+ebp]
add ebx, edx
xor eax, eax
xor esi, ebx
;
; Round 1
mov edx, DWORD PTR 8[ebp]
mov ebx, esi
xor edi, edx
shr ebx, 16
mov edx, esi
mov al, bh
and ebx, 255
mov cl, dh
and edx, 255
mov eax, DWORD PTR 72[eax*4+ebp]
mov ebx, DWORD PTR 1096[ebx*4+ebp]
add ebx, eax
mov eax, DWORD PTR 2120[ecx*4+ebp]
xor ebx, eax
mov edx, DWORD PTR 3144[edx*4+ebp]
add ebx, edx
xor eax, eax
xor edi, ebx
;
; Round 2
mov edx, DWORD PTR 12[ebp]
mov ebx, edi
xor esi, edx
shr ebx, 16
mov edx, edi
mov al, bh
and ebx, 255
mov cl, dh
and edx, 255
mov eax, DWORD PTR 72[eax*4+ebp]
mov ebx, DWORD PTR 1096[ebx*4+ebp]
add ebx, eax
mov eax, DWORD PTR 2120[ecx*4+ebp]
xor ebx, eax
mov edx, DWORD PTR 3144[edx*4+ebp]
add ebx, edx
xor eax, eax
xor esi, ebx
;
; Round 3
mov edx, DWORD PTR 16[ebp]
mov ebx, esi
xor edi, edx
shr ebx, 16
mov edx, esi
mov al, bh
and ebx, 255
mov cl, dh
and edx, 255
mov eax, DWORD PTR 72[eax*4+ebp]
mov ebx, DWORD PTR 1096[ebx*4+ebp]
add ebx, eax
mov eax, DWORD PTR 2120[ecx*4+ebp]
xor ebx, eax
mov edx, DWORD PTR 3144[edx*4+ebp]
add ebx, edx
xor eax, eax
xor edi, ebx
;
; Round 4
mov edx, DWORD PTR 20[ebp]
mov ebx, edi
xor esi, edx
shr ebx, 16
mov edx, edi
mov al, bh
and ebx, 255
mov cl, dh
and edx, 255
mov eax, DWORD PTR 72[eax*4+ebp]
mov ebx, DWORD PTR 1096[ebx*4+ebp]
add ebx, eax
mov eax, DWORD PTR 2120[ecx*4+ebp]
xor ebx, eax
mov edx, DWORD PTR 3144[edx*4+ebp]
add ebx, edx
xor eax, eax
xor esi, ebx
;
; Round 5
mov edx, DWORD PTR 24[ebp]
mov ebx, esi
xor edi, edx
shr ebx, 16
mov edx, esi
mov al, bh
and ebx, 255
mov cl, dh
and edx, 255
mov eax, DWORD PTR 72[eax*4+ebp]
mov ebx, DWORD PTR 1096[ebx*4+ebp]
add ebx, eax
mov eax, DWORD PTR 2120[ecx*4+ebp]
xor ebx, eax
mov edx, DWORD PTR 3144[edx*4+ebp]
add ebx, edx
xor eax, eax
xor edi, ebx
;
; Round 6
mov edx, DWORD PTR 28[ebp]
mov ebx, edi
xor esi, edx
shr ebx, 16
mov edx, edi
mov al, bh
and ebx, 255
mov cl, dh
and edx, 255
mov eax, DWORD PTR 72[eax*4+ebp]
mov ebx, DWORD PTR 1096[ebx*4+ebp]
add ebx, eax
mov eax, DWORD PTR 2120[ecx*4+ebp]
xor ebx, eax
mov edx, DWORD PTR 3144[edx*4+ebp]
add ebx, edx
xor eax, eax
xor esi, ebx
;
; Round 7
mov edx, DWORD PTR 32[ebp]
mov ebx, esi
xor edi, edx
shr ebx, 16
mov edx, esi
mov al, bh
and ebx, 255
mov cl, dh
and edx, 255
mov eax, DWORD PTR 72[eax*4+ebp]
mov ebx, DWORD PTR 1096[ebx*4+ebp]
add ebx, eax
mov eax, DWORD PTR 2120[ecx*4+ebp]
xor ebx, eax
mov edx, DWORD PTR 3144[edx*4+ebp]
add ebx, edx
xor eax, eax
xor edi, ebx
;
; Round 8
mov edx, DWORD PTR 36[ebp]
mov ebx, edi
xor esi, edx
shr ebx, 16
mov edx, edi
mov al, bh
and ebx, 255
mov cl, dh
and edx, 255
mov eax, DWORD PTR 72[eax*4+ebp]
mov ebx, DWORD PTR 1096[ebx*4+ebp]
add ebx, eax
mov eax, DWORD PTR 2120[ecx*4+ebp]
xor ebx, eax
mov edx, DWORD PTR 3144[edx*4+ebp]
add ebx, edx
xor eax, eax
xor esi, ebx
;
; Round 9
mov edx, DWORD PTR 40[ebp]
mov ebx, esi
xor edi, edx
shr ebx, 16
mov edx, esi
mov al, bh
and ebx, 255
mov cl, dh
and edx, 255
mov eax, DWORD PTR 72[eax*4+ebp]
mov ebx, DWORD PTR 1096[ebx*4+ebp]
add ebx, eax
mov eax, DWORD PTR 2120[ecx*4+ebp]
xor ebx, eax
mov edx, DWORD PTR 3144[edx*4+ebp]
add ebx, edx
xor eax, eax
xor edi, ebx
;
; Round 10
mov edx, DWORD PTR 44[ebp]
mov ebx, edi
xor esi, edx
shr ebx, 16
mov edx, edi
mov al, bh
and ebx, 255
mov cl, dh
and edx, 255
mov eax, DWORD PTR 72[eax*4+ebp]
mov ebx, DWORD PTR 1096[ebx*4+ebp]
add ebx, eax
mov eax, DWORD PTR 2120[ecx*4+ebp]
xor ebx, eax
mov edx, DWORD PTR 3144[edx*4+ebp]
add ebx, edx
xor eax, eax
xor esi, ebx
;
; Round 11
mov edx, DWORD PTR 48[ebp]
mov ebx, esi
xor edi, edx
shr ebx, 16
mov edx, esi
mov al, bh
and ebx, 255
mov cl, dh
and edx, 255
mov eax, DWORD PTR 72[eax*4+ebp]
mov ebx, DWORD PTR 1096[ebx*4+ebp]
add ebx, eax
mov eax, DWORD PTR 2120[ecx*4+ebp]
xor ebx, eax
mov edx, DWORD PTR 3144[edx*4+ebp]
add ebx, edx
xor eax, eax
xor edi, ebx
;
; Round 12
mov edx, DWORD PTR 52[ebp]
mov ebx, edi
xor esi, edx
shr ebx, 16
mov edx, edi
mov al, bh
and ebx, 255
mov cl, dh
and edx, 255
mov eax, DWORD PTR 72[eax*4+ebp]
mov ebx, DWORD PTR 1096[ebx*4+ebp]
add ebx, eax
mov eax, DWORD PTR 2120[ecx*4+ebp]
xor ebx, eax
mov edx, DWORD PTR 3144[edx*4+ebp]
add ebx, edx
xor eax, eax
xor esi, ebx
;
; Round 13
mov edx, DWORD PTR 56[ebp]
mov ebx, esi
xor edi, edx
shr ebx, 16
mov edx, esi
mov al, bh
and ebx, 255
mov cl, dh
and edx, 255
mov eax, DWORD PTR 72[eax*4+ebp]
mov ebx, DWORD PTR 1096[ebx*4+ebp]
add ebx, eax
mov eax, DWORD PTR 2120[ecx*4+ebp]
xor ebx, eax
mov edx, DWORD PTR 3144[edx*4+ebp]
add ebx, edx
xor eax, eax
xor edi, ebx
;
; Round 14
mov edx, DWORD PTR 60[ebp]
mov ebx, edi
xor esi, edx
shr ebx, 16
mov edx, edi
mov al, bh
and ebx, 255
mov cl, dh
and edx, 255
mov eax, DWORD PTR 72[eax*4+ebp]
mov ebx, DWORD PTR 1096[ebx*4+ebp]
add ebx, eax
mov eax, DWORD PTR 2120[ecx*4+ebp]
xor ebx, eax
mov edx, DWORD PTR 3144[edx*4+ebp]
add ebx, edx
xor eax, eax
xor esi, ebx
;
; Round 15
mov edx, DWORD PTR 64[ebp]
mov ebx, esi
xor edi, edx
shr ebx, 16
mov edx, esi
mov al, bh
and ebx, 255
mov cl, dh
and edx, 255
mov eax, DWORD PTR 72[eax*4+ebp]
mov ebx, DWORD PTR 1096[ebx*4+ebp]
add ebx, eax
mov eax, DWORD PTR 2120[ecx*4+ebp]
xor ebx, eax
mov edx, DWORD PTR 3144[edx*4+ebp]
add ebx, edx
; Load parameter 0 (16) enc=1
mov eax, DWORD PTR 20[esp]
xor edi, ebx
mov edx, DWORD PTR 68[ebp]
xor esi, edx
mov DWORD PTR 4[eax],edi
mov DWORD PTR [eax],esi
pop edi
pop esi
pop ebx
pop ebp
ret
_BF_encrypt ENDP
_TEXT ENDS
_TEXT SEGMENT
PUBLIC _BF_decrypt
_BF_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
mov ebx, DWORD PTR 68[ebp]
xor ecx, ecx
xor edi, ebx
;
; Round 16
mov edx, DWORD PTR 64[ebp]
mov ebx, edi
xor esi, edx
shr ebx, 16
mov edx, edi
mov al, bh
and ebx, 255
mov cl, dh
and edx, 255
mov eax, DWORD PTR 72[eax*4+ebp]
mov ebx, DWORD PTR 1096[ebx*4+ebp]
add ebx, eax
mov eax, DWORD PTR 2120[ecx*4+ebp]
xor ebx, eax
mov edx, DWORD PTR 3144[edx*4+ebp]
add ebx, edx
xor eax, eax
xor esi, ebx
;
; Round 15
mov edx, DWORD PTR 60[ebp]
mov ebx, esi
xor edi, edx
shr ebx, 16
mov edx, esi
mov al, bh
and ebx, 255
mov cl, dh
and edx, 255
mov eax, DWORD PTR 72[eax*4+ebp]
mov ebx, DWORD PTR 1096[ebx*4+ebp]
add ebx, eax
mov eax, DWORD PTR 2120[ecx*4+ebp]
xor ebx, eax
mov edx, DWORD PTR 3144[edx*4+ebp]
add ebx, edx
xor eax, eax
xor edi, ebx
;
; Round 14
mov edx, DWORD PTR 56[ebp]
mov ebx, edi
xor esi, edx
shr ebx, 16
mov edx, edi
mov al, bh
and ebx, 255
mov cl, dh
and edx, 255
mov eax, DWORD PTR 72[eax*4+ebp]
mov ebx, DWORD PTR 1096[ebx*4+ebp]
add ebx, eax
mov eax, DWORD PTR 2120[ecx*4+ebp]
xor ebx, eax
mov edx, DWORD PTR 3144[edx*4+ebp]
add ebx, edx
xor eax, eax
xor esi, ebx
;
; Round 13
mov edx, DWORD PTR 52[ebp]
mov ebx, esi
xor edi, edx
shr ebx, 16
mov edx, esi
mov al, bh
and ebx, 255
mov cl, dh
and edx, 255
mov eax, DWORD PTR 72[eax*4+ebp]
mov ebx, DWORD PTR 1096[ebx*4+ebp]
add ebx, eax
mov eax, DWORD PTR 2120[ecx*4+ebp]
xor ebx, eax
mov edx, DWORD PTR 3144[edx*4+ebp]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -