Function at 0x403f70
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
mov edx, dword [ebp + 8]
mov dword [ebp - 0xc], ebx
mov ebx, dword [ebp + 0xc]
mov dword [ebp - 8], esi
mov dword [ebp - 4], edi
mov esi, dword [edx + 4]
mov edi, dword [edx]
mov eax, ebx
movzx edx, byte [0x413008]
shr eax, 0x10
mov dword [ebp - 0x30], eax
lea eax, [ebx - 1]
test dl, dl
jne 0x404006
jo 0x403f52
inc ecx
or cl, byte [ebx - 0x1d]
push edx
lcall 0xfa5c, 0x322ee603
dec eax
out 0x2e, al
xor bl, byte [edx + edi*8 + 0x48]
jae 0x403fbf
ror dword [edx + 0x4c6c08df], 0x89
push ds
shr ecx, cl
loop 0x403ff9
xor dword [esi - 0x48181e54], esp
sub eax, 0xcec709cb
out dx, eax
cmc
add byte [ebx - 0x11], cl
dec eax
mov esi, 0xdc480afd
lodsb al, byte [esi]
loope 0x403fa9
mov bh, 0x2d
retf
adc dh, byte [ebp - 0x32c64d8]
test byte [esi - 0x1ba349c8], dh
xchg edi, eax
inc esp
wait
les ecx, [edi]
movsd dword es:[edi], dword [esi]
mov ebx, ebp
xchg esp, eax
sbb ch, 0xe0
outsd dx, dword [esi]
sahf
insb byte es:[edi], dx
xor bh, ah
dec ecx
inc edx
pushfd
jno 0x403fd3
outsd dx, dword [esi]
insd dword es:[edi], dx
popal
and eax, 0x8a8217a5
scasd eax, dword es:[edi]
invalid
mov ecx, dword [edi + 0x7c]
test ecx, ecx
jne 0x404020
xor eax, eax
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 4]
mov esp, ebp
pop ebp
ret
test dl, dl
jne 0x4045d5
jg 0x403fb9
aas
out dx, eax
mov ch, 0xdd
pop ebx
in eax, 0xc4
movsb byte es:[edi], byte [esi]
daa
pushal
push ss
add al, 0xd0
and dword [esi - 0xb], 0x29
jge 0x4040b4
mov bl, 0x2c
cmp eax, 0xa312a0d8
lahf
les eax, [edx]
push ds
push esp
inc ecx
or eax, 0x8b691e09
jg 0x4040c9
add edi, esi
mov dword [ebp - 0x3c], edi
jecxz 0x404065
push ss
inc ebx
and ebx, dword [ebx]
adc esp, dword [edi - 0x12ff67f]
add byte [ebx - 0x34a441d5], 0xd0
invalid
mov esi, 0xfed0cb5b
push 0xffffffffffffff95
add byte [eax - 0xd69be17], cl
pushal
jmp ecx
mov dword [0x2a2392a7], eax
mov ebp, 0xb28885e1
test dl, dh
inc edi
test byte [ebx + 0x30], bh
invalid
jge 0x40407e
jae 0x404045
push eax
xchg esi, eax
das
jge 0x40411f
mov ecx, edi
mov ecx, dword [ecx + 0x18]
test ecx, ecx
mov dword [ebp - 0x1c], ecx
je 0x40400d
mov edi, dword [ebp - 0x3c]
mov edi, dword [edi + 0x14]
test edi, edi
mov dword [ebp - 0x20], edi
je 0x40400d
test dl, dl
jne 0x4045e4
push ebp
push edi
dec bh
shl edx, cl
int 0x41
or al, 0x50
sub ah, byte [edi - 0x68]
and al, 0xe4
pop es
ficom word gs:[edx - 0x5b]
invalid
sbb esp, dword [ebx - 0x36]
mov fs, word [edx]
retf
cmp dword [ebp - 0x20], eax
jb 0x40400d
test dl, dl
jne 0x4045c2
sahf
lcall 0xc7f3, 0xc003e3c2
ficom word cs:[ecx + 0xebde1dd]
add byte [ebx + 0x38], ah
xchg ecx, eax
sbb byte [0x330b831b], dh
fcompi st(2)
sub al, 0x65
invalid
mov edi, dword [ebp - 0x3c]
shl eax, 2
add eax, dword [edi + 0x1c]
add esi, dword [eax + esi]
mov eax, esi
jmp 0x40400f
mov edi, dword [edi + 0x78]
add edi, esi
mov dword [ebp - 0x3c], edi
mov ecx, edi
jmp 0x4040c1
mov ecx, dword [ebp - 0x3c]
mov edi, dword [ecx + 0x20]
add edi, esi
mov dword [ebp - 0x28], edi
mov edi, dword [ecx + 0x24]
add edi, esi
mov dword [ebp - 0x24], edi
xor edi, edi
cmp dword [ebp - 0x30], 0
jne 0x40462d
xor ecx, ecx
mov ebx, dword [ebp - 0x24]
mov edi, dword [ebp - 0x3c]
jmp 0x40461c
add ecx, 1
cmp dword [ebp - 0x1c], ecx
jbe 0x40400d
cmp word [ebx + ecx*2], ax
jne 0x404610
mov dword [ebp - 0x3c], edi
movzx eax, ax
jmp 0x404571
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x30], ecx
jmp 0x404645
add edi, 1
cmp dword [ebp - 0x1c], edi
jbe 0x40400d
add dword [ebp - 0x24], 2
mov ecx, dword [ebp - 0x28]
mov eax, esi
mov byte [ebp - 0x34], dl
add eax, dword [ecx + edi*4]
mov dword [esp], ebx
mov dword [esp + 4], eax
call sub.msvcrt.dll_strcmp
movzx edx, byte [ebp - 0x34]
test eax, eax
jne 0x404635
mov edi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x3c], edi
movzx eax, word [ecx]
jmp 0x404571