Function at 0x408d59
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
mov ebx, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0xc]
test edi, edi
jne 0x408d76
cmp dword [ebx + 0x2c], 0
jne 0x408d7b
mov edi, ebx
mov dword [ebp + 0xc], edi
cmp dword [edi + 0x1c], ebx
je 0x408d83
pop edi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
push esi
push 0x40
mov dword [ebp - 8], edi
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x18], 0
mov dword [ebx + 0x2e4], 0
mov dword [ebx + 0x2e8], 0
mov dword [ebp - 0x10], 0x40
call fcn.00405539
mov esi, eax
add esp, 4
mov dword [ebp + 8], esi
test esi, esi
jne 0x408dd9
push 0x660558
call fcn.00407c19
add esp, 4
xor eax, eax
pop esi
pop edi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebx + 0x3c]
push edi
push ebx
mov dword [ebp - 4], esi
call eax
add esp, 8
mov dword [ebp - 0x14], eax
mov eax, dword [ebx + 0x2f0]
push ebx
call eax
mov edi, dword [ebp + 8]
add esp, 4
mov dword [ebp - 0x1c], eax
cmp esi, edi
jbe 0x408f17
cmp eax, 0x3c
je 0x408e11
cmp eax, 0xffffffff
jne 0x408f20
mov edi, dword [ebp - 0x14]
mov byte [esi], 0
cmp edi, 2
je 0x408e21
cmp edi, 0xffffffff
jne 0x408e2f
push dword [ebp + 8]
call fcn.00406f99
add esp, 4
mov dword [ebp - 4], eax
push dword [ebp + 8]
xor esi, esi
call fcn.00406349
add esp, 4
test eax, eax
je 0x408f06
mov eax, edi
sub eax, 1
je 0x408eb4
sub eax, 1
je 0x408e98
sub eax, 1
jne 0x408f06
cmp dword [ebx + 0x44], esi
je 0x409506
mov edi, dword [ebp - 8]
mov dword [edi + 0x18], 3
push dword [ebp + 8]
mov eax, dword [ebx + 0x44]
push edi
push ebx
call eax
add esp, 0xc
test eax, eax
jne 0x408f06
push dword [edi]
push dword [ebp + 8]
push 0x6605a0
call fcn.00407c19
add esp, 0xc
jmp 0x409645
mov edi, dword [ebp - 8]
push 1
mov dword [edi + 0x18], 2
push dword [ebp + 8]
push edi
call fcn.0040a639
add esp, 0xc
test eax, eax
jmp 0x408f00
cmp dword [ebx + 0x2e8], esi
je 0x408eeb
push dword [ebp + 8]
call fcn.004065c9
mov edi, dword [ebp - 8]
add esp, 4
cmp byte [eax], 0
je 0x408eee
cmp dword [edi + 0x18], esi
jne 0x408eee
mov dword [edi + 0x18], 1
push dword [ebp + 8]
push edi
call fcn.00408aa9
add esp, 8
test eax, eax
jmp 0x408f00
mov edi, dword [ebp - 8]
push dword [ebp + 8]
push 0
push edi
call fcn.00408a49
mov esi, eax
add esp, 0xc
test esi, esi
je 0x409518
mov eax, dword [ebp - 0xc]
test eax, eax
mov edi, dword [ebp + 8]
cmove eax, esi
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x1c]
cmp eax, 0xffffffff
je 0x409617
cmp eax, 0x3c
jne 0x4094c7
mov eax, dword [ebx + 0x2f0]
push ebx
mov dword [ebp - 4], edi
call eax
mov esi, eax
add esp, 4
cmp esi, 0xffffffff
je 0x409052
nop word [eax + eax]
push esi
call fcn.00407569
add esp, 4
test eax, eax
jne 0x409052
cmp esi, 0x3e
je 0x409052
cmp esi, 0x2f
jne 0x408f73
cmp edi, dword [ebp + 8]
ja 0x409052
jmp 0x408fd3
cmp esi, 0x3c
je 0x409530
cmp esi, 0x26
jne 0x408fbb
push dword [ebp - 8]
push ebx
call fcn.00409b09
add esp, 8
cmp eax, 0xffffffff
je 0x409645
lea ecx, [ebp - 0x10]
push ecx
lea ecx, [ebp + 8]
push ecx
lea ecx, [ebp - 4]
push ecx
push eax
call fcn.00408c39
add esp, 0x10
test eax, eax
je 0x409645
mov edi, dword [ebp - 4]
jmp 0x40903b
cmp esi, 0x30
jge 0x408fd3
cmp esi, 0x21
je 0x408fd3
cmp esi, 0x2d
je 0x408fd3
cmp esi, 0x2e
jne 0x409645
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp + 8]
push eax
lea eax, [ebp - 4]
push eax
push esi
call fcn.00408c39
add esp, 0x10
test eax, eax
je 0x409645
mov edi, dword [ebp - 4]
mov eax, edi
mov ecx, dword [ebp + 8]
sub eax, ecx
cmp eax, 1
jne 0x409004
add byte [ecx + 0x2d], 0x5e
sub edi, dword [esi]
or eax, 0x6d72d0c5
or eax, 0x6d72d0c5
jae 0x409014
dec eax
jp 0x409070
pop ebp
and dword [ebp - 0x4231442b], ebp
int1
fld qword [ebp - 0x5ac1ae13]
into
mov ebp, 0xed85ddf1
push ecx
movsd dword es:[edi], dword ds:[esi]
invalid
mov esp, 0x79518d2b
xchg ebp, eax
cdq
inc ecx
xchg esi, eax
pushal
and esp, dword [edx + ebx*8 + 0x69]
pop ecx
mov ch, 0x11
mov eax, 0xcb1df96d
lodsb al, byte [esi]
invalid
mov esp, 0xf5a9c5b3
cdq
shr byte [eax], 0x95
movsb byte es:[edi], byte [esi]
adc esp, edi
out 0xe0, al
cmc
cmp eax, 0x2d903f0b
xor eax, dword [eax - 0x3e]
or dword [eax], esp
and dword [eax], eax
ja 0x4090f5
int 0xf0
fadd qword [esp + ebp*2]
cmp eax, 0xe578fcf4
invalid
invalid
xchg esp, eax
out dx, eax
std
dec eax
inc ecx
sbb dh, al
sbb dword [ebx], esp
cwde
out 0x7a, eax
retf 0x85f3
jno 0x409520
xor ebp, dword [edx]
rcl dword [ecx], cl
xlatb
mov bl, 0xaa
int 0x89
scasb al, byte es:[edi]
invalid
mov cl, bl
inc edi
fstp qword [ebx - 0x76]
in al, 0x89
push ebp
and al, 0x63
sbb byte [ecx + 0x7d], 0xff
loopne 0x40956d
insd dword es:[edi], dx
cld
nop
inc eax
sbb al, 0xba
aam 0x77
inc esi
ja 0x409578
loope 0x409536
xlatb
in eax, 0
rcl dword [eax + 0xd]
xchg ecx, eax
xchg dword [ecx], eax
xchg ebp, eax
add cl, dl
push eax
or eax, 0x95018791
loope 0x4095a3
add eax, 0x510dd051
cld
cmc
sbb al, 0xd0
jnp 0x4095bf
jge 0x409591
pop ebp
or dword [ebp - 0xf], ebx
insd dword es:[edi], dx
enter 0x3989, 0xffffffffffffffe0
and eax, 0xa4edd2ff
lodsd eax, dword [esi]
or cl, byte [eax + 0x4c]
daa
lds esi, [ebp - 0x17509f9f]
dec edi
loopne 0x40958f
and dword [ebx + ecx*2], 0xdd78dc31
xor esp, ebx
js 0x40954e
hlt
aad 0xcc
lea ebp, [edi + 0x62]
dec edi
loope 0x409585
mov eax, dword [0xf3e178bd]
lds esp, [ebx]
pop ecx
pop ebp
aaa
adc al, 0xe0
loop 0x40958f
push ecx
mov fs, word [edi]
xor dl, byte [esi - 0xf744289]
mov ch, al
lodsb al, byte [esi]
popfd
cmpsb byte [esi], byte es:[edi]
test al, 0xc0
out dx, eax
add ebx, eax
insb byte es:[edi], dx
std
sbb al, 0x61
fstp xword ds:[eax + 0x7e41e5cb]
mov dl, 0x3d
dec esp
popfd
in al, dx
mov eax, dword [0xc967aab9]
xor dword [ebp + 0x33b2f7f2], ebp
nop
jmp 0xfd612b1b
xchg ebp, eax
and ch, bh
aam 0x31
cmpsd dword [esi], dword es:[edi]
or al, 0x90
dec ecx
test eax, 0xef6d9a6c
sbb eax, 0x4f93d81f
mov al, 0x6d
mov bl, 0x9c
jns 0x40964d
aam 0x88
push esp
pop ebp
retf
xchg ebp, eax
xor byte [ecx + edx - 0x7d28e4db], 0xc0
stosd dword es:[edi], eax
sbb eax, 0x2f846aee
cmc
and al, 0x49
in eax, 7
invalid
mov ebx, 0x4d11b075
scasb al, byte es:[edi]
inc ecx
push ecx
cmp byte [ecx], ah
mov esp, 0x64a8c87d
rcr ch, 0xa
cmp dword [esi + edi*4], eax
and eax, ebx
or dword [ecx - 5], ecx
mov dl, 7
popfd
inc esi
enter 0x1c8f, 0xffffffffffffff9e
fsub qword [eax + edi*8]
test dword gs:[edx - 0x17], eax
mov esp, 0x827c864c
mov ah, 0x5d
mov al, 0x4f
mov cl, 0xbf
pushfd
std
push ds
invalid