Function at 0x408d5e
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 0x408d7b
cmp dword [ebx + 0x2c], 0
jne 0x408d80
mov edi, ebx
mov dword [ebp + 0xc], edi
cmp dword [edi + 0x1c], ebx
je 0x408d88
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.0040553e
mov esi, eax
add esp, 4
mov dword [ebp + 8], esi
test esi, esi
jne 0x408dde
push 0x660558
call fcn.00407c1e
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 0x408f1c
cmp eax, 0x3c
je 0x408e16
cmp eax, 0xffffffff
jne 0x408f25
mov edi, dword [ebp - 0x14]
mov byte [esi], 0
cmp edi, 2
je 0x408e26
cmp edi, 0xffffffff
jne 0x408e34
push dword [ebp + 8]
call fcn.00406f9e
add esp, 4
mov dword [ebp - 4], eax
push dword [ebp + 8]
xor esi, esi
call fcn.0040634e
add esp, 4
test eax, eax
je 0x408f0b
mov eax, edi
sub eax, 1
je 0x408eb9
sub eax, 1
je 0x408e9d
sub eax, 1
jne 0x408f0b
cmp dword [ebx + 0x44], esi
je 0x40950b
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 0x408f0b
push dword [edi]
push dword [ebp + 8]
push 0x6605a0
call fcn.00407c1e
add esp, 0xc
jmp 0x40964a
mov edi, dword [ebp - 8]
push 1
mov dword [edi + 0x18], 2
push dword [ebp + 8]
push edi
call fcn.0040a63e
add esp, 0xc
test eax, eax
jmp 0x408f05
cmp dword [ebx + 0x2e8], esi
je 0x408ef0
push dword [ebp + 8]
call fcn.004065ce
mov edi, dword [ebp - 8]
add esp, 4
cmp byte [eax], 0
je 0x408ef3
cmp dword [edi + 0x18], esi
jne 0x408ef3
mov dword [edi + 0x18], 1
push dword [ebp + 8]
push edi
call fcn.00408aae
add esp, 8
test eax, eax
jmp 0x408f05
mov edi, dword [ebp - 8]
push dword [ebp + 8]
push 0
push edi
call fcn.00408a4e
mov esi, eax
add esp, 0xc
test esi, esi
je 0x40951d
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 0x40961c
cmp eax, 0x3c
jne 0x4094cc
mov eax, dword [ebx + 0x2f0]
push ebx
mov dword [ebp - 4], edi
call eax
mov esi, eax
add esp, 4
cmp esi, 0xffffffff
je 0x409057
nop word [eax + eax]
push esi
call fcn.0040756e
add esp, 4
test eax, eax
jne 0x409057
cmp esi, 0x3e
je 0x409057
cmp esi, 0x2f
jne 0x408f78
cmp edi, dword [ebp + 8]
ja 0x409057
jmp 0x408fd8
cmp esi, 0x3c
je 0x409535
cmp esi, 0x26
jne 0x408fc0
push dword [ebp - 8]
push ebx
call fcn.00409b0e
add esp, 8
cmp eax, 0xffffffff
je 0x40964a
lea ecx, [ebp - 0x10]
push ecx
lea ecx, [ebp + 8]
push ecx
lea ecx, [ebp - 4]
push ecx
push eax
call fcn.00408c3e
add esp, 0x10
test eax, eax
je 0x40964a
mov edi, dword [ebp - 4]
jmp 0x409040
cmp esi, 0x30
jge 0x408fd8
cmp esi, 0x21
je 0x408fd8
cmp esi, 0x2d
je 0x408fd8
cmp esi, 0x2e
jne 0x40964a
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp + 8]
push eax
lea eax, [ebp - 4]
push eax
push esi
call fcn.00408c3e
add esp, 0x10
test eax, eax
je 0x40964a
mov edi, dword [ebp - 4]
mov eax, edi
mov ecx, dword [ebp + 8]
sub eax, ecx
adc dword [esi - 0x16897690], 0x50
adc cl, byte [ebp + 0x55a430a5]
lahf
daa
mov dh, 0
div al
add ah, dh
sbb eax, esp
adc byte es:[edx - 0x50], 0x86
arpl word [edx - 0x30], si
add eax, ecx
nop
test byte [esi - 0x5ee1299f], 0xd2
push edx
cdq
sub cl, byte [esi]
rcl dword [edi - 0x18], 0xe9
push es
push ss
shr byte [eax], 0x72
cmpsd dword [esi], dword es:[edi]
aam 0xc6
xor dh, byte [ebx]
loope 0x409039
rol byte [esi - 0x693bbddc], 1
retf
inc edx
les edx, [esi - 0x4c814835]
xchg dword [esi + 0x6f4c6204], edi
xor byte [esi], ch
inc eax
sbb al, 0xf1
daa
inc esp
retf
pop edx
shr edi, 1
xlatb
not dword [ecx - 0x36f03094]
sub dl, byte [eax]
sti
push eax
xchg ebx, eax
mov ecx, 0xd4c7b5dc
mov edi, dword [ecx - 0x1194e341]
adc dh, ah
and al, ah
pop ss
jne 0x4090bb
stc
invalid
xor byte [ecx], bl
mov al, byte [0x409a7ca7]
xchg edx, eax
je 0x4090fc
adc dword [edi], esp
xlatb
xchg esp, eax
and al, 0x87
cmp dword [ebx + 0x2d9abdc], 0xffffffe4
pop es
cmp dword [edx], esp
invalid
div dword [ecx - 0x292556ba]
pop eax
xchg dl, ch
shl ch, cl
add esi, esi
in eax, 0xe6
in eax, 0xd3
pushal
mov dword [0x64d0064a], eax
ret 0x9ca3
or dh, byte [ebp - 0x39]
jb 0x4094f9
and eax, dword [ebp - 0x1f7bd1a3]
mov bh, 0x95
mov ebx, dword [ebx - 0x48d12d0a]
and dword [edx + 0x515582c3], ecx
retf
iretd
fimul word [0x7cf54290]
mov ch, 0xfb
test byte [esi + 3], cl
xchg byte [esi - 0x69], ch
popal
retf 0x4b9b
int 0x83
movsd dword es:[edi], dword [esi]
invalid
dec esp
add dh, ch
jge 0x4094a0
pop esi
or byte [ebx - 0x5c0b42a9], al
pop edi
test byte [eax + 0x33d78c80], dl
aam 0x82
jns 0x4094d7
xlatb
xor edx, esp
cmp byte [ecx - 0x4c], 0xdd
mov fs, word [eax]
sub byte [ebp - 0x32d4cf6d], bh
fisttp qword [esi - 0x6c42d7e0]
xor byte [ebx], ch
int 0x97
mov ebp, 0xcd2b3093
xchg edi, eax
inc ecx
insd dword es:[edi], dx
mov dword [eax + 0x5f361b], esp
pop edi
add byte [eax + 0x50878cd7], bh
mov eax, 0x50878cd7
inc esi
fcmovbe st(0), st(6)
enter 0x3e36, 0xffffffffffffffd2
or al, 7
push eax
xchg byte [ecx + 0x26074122], ah
mov dword [0xde009320], eax
xchg ebx, eax
add dh, bl
add byte [esi], ah
xor byte [edi], bl
aam 0xee
mov ebp, 0xb005a2f2
jae 0x40954c
fst qword [ecx]
ja 0x409571
invalid
scasb al, byte es:[edi]
and edi, dword [esi]
popal
loopne 0x409527
xor byte [edx], al
xchg ecx, eax
pop edx
xor dh, byte [ebp + 0x76583612]
loopne 0x409532
mov esp, 0x4f49824
mov ch, byte [edx - 0x3d]
mov ebp, 0xd3865c35
invalid
and esp, dword [ebp + 0x60]
wait
sar byte [ebx], 0xfc
outsb dx, byte [esi]
div dword [eax + 0x25f0e694]
stosb byte es:[edi], al
outsb dx, byte gs:[esi]
inc edi
mov ah, 0x8e
enter 0xffffffffffffa0f7, 3
insb byte es:[edi], dx
jo 0x409617
inc edi
adc al, 0x7e
xor dword [ebp + 0x30], ecx
cmp byte [eax - 0x38], al
test dword [edx + edx + 0x67], eax
xor byte [ecx + eax*8 - 0x52], ah
sub byte [ebx], al
aad 0x83
add byte [esi + edx], bl
inc ebx
push 0xc410c318
adc edx, dword [esi + 0x26]
push esp
mov dl, 0x37
aaa
invalid
mov al, byte [0x157654a6]
movsb byte es:[edi], byte [esi]
stc
mov eax, dword [0xc8dee580]
int 0x9e
or eax, 0x9d73fd63
jae 0x4095ab
jnp 0x4095bc
pop ds
mov ebx, 0xc87bfc56
enter 0xffffffffffffe955, 0xffffffffffffffc6
push ebp
jmp 0x8b0d0ee4
js 0x4095e9
int3
mov dl, byte [ebp - 0x63]
loope 0x409618
retf 0xbdb3
jns 0x409668
xchg byte [ebp - 0xa], ah
loope 0x4095fb
xchg ebp, eax
jg 0x40968d
pop ss
sbb ch, 0x64
shl ebx, cl
test byte [ebp + 0x7b2c14de], 0x65
pop edx
dec edx
sbb ebx, dword [edi]
ror bl, cl
ret
or edi, dword [ecx + 0x2f]
cmp byte [edx + 0x1f], dl
loope 0x40960c
fld xword [ebx + 0x670063df]
adc ah, byte [esi - 0x1e]
dec ebx
mov al, byte [0x510398c9]
mov es, word [ebx]
outsb dx, byte [esi]
popfd
cld
and edi, dword [edx]
push cs
invalid
in eax, dx
fnstcw word [esi + 0x5a]
pop ds
sbb bl, ch
fdivr qword [esi - 0x28]
nop
jb 0x40961b
push ebx
and bh, cl
xlatb
in eax, 3
outsb dx, byte [esi]
xor al, 0x87
rol edx, 1
push ss
mov dh, 0x98
push ebp
nop
push ss
add al, 0xfa
nop
not byte [eax]
xchg edx, eax
rcl dword [esi], 0xdd
mov esi, 0xcb12c2a2
xor esi, 0x95a1835b
jle 0x40969e
mov al, byte [0x54274dda]
movsb byte es:[edi], byte [esi]
push ebx
popfd
invalid