Function at 0x408dcc
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 0x408de9
cmp dword [ebx + 0x2c], 0
jne 0x408dee
mov edi, ebx
mov dword [ebp + 0xc], edi
cmp dword [edi + 0x1c], ebx
je 0x408df6
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.004055ac
mov esi, eax
add esp, 4
mov dword [ebp + 8], esi
test esi, esi
jne 0x408e4c
push 0x660558
call fcn.00407c8c
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 0x408f8a
cmp eax, 0x3c
je 0x408e84
cmp eax, 0xffffffff
jne 0x408f93
mov edi, dword [ebp - 0x14]
mov byte [esi], 0
cmp edi, 2
je 0x408e94
cmp edi, 0xffffffff
jne 0x408ea2
push dword [ebp + 8]
call fcn.0040700c
add esp, 4
mov dword [ebp - 4], eax
push dword [ebp + 8]
xor esi, esi
call fcn.004063bc
add esp, 4
test eax, eax
je 0x408f79
mov eax, edi
sub eax, 1
je 0x408f27
sub eax, 1
je 0x408f0b
sub eax, 1
jne 0x408f79
cmp dword [ebx + 0x44], esi
je 0x409579
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 0x408f79
push dword [edi]
push dword [ebp + 8]
push 0x6605a0
call fcn.00407c8c
add esp, 0xc
jmp 0x4096b8
mov edi, dword [ebp - 8]
push 1
mov dword [edi + 0x18], 2
push dword [ebp + 8]
push edi
call fcn.0040a6ac
add esp, 0xc
test eax, eax
jmp 0x408f73
cmp dword [ebx + 0x2e8], esi
je 0x408f5e
push dword [ebp + 8]
call fcn.0040663c
mov edi, dword [ebp - 8]
add esp, 4
cmp byte [eax], 0
je 0x408f61
cmp dword [edi + 0x18], esi
jne 0x408f61
mov dword [edi + 0x18], 1
push dword [ebp + 8]
push edi
call fcn.00408b1c
add esp, 8
test eax, eax
jmp 0x408f73
mov edi, dword [ebp - 8]
push dword [ebp + 8]
push 0
push edi
call fcn.00408abc
mov esi, eax
add esp, 0xc
test esi, esi
je 0x40958b
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 0x40968a
cmp eax, 0x3c
jne 0x40953a
add byte [ebx + 0x2f083], cl
add byte [ebx - 0x77], dl
jge 0x408fa2
mov eax, dword [ebx + 0x2f0]
push ebx
mov dword [ebp - 4], edi
call eax
mov esi, eax
add esp, 4
cmp esi, 0xffffffff
je 0x4090c5
nop word [eax + eax]
push esi
call fcn.004075dc
add esp, 4
test eax, eax
jne 0x4090c5
cmp esi, 0x3e
je 0x4090c5
cmp esi, 0x2f
jne 0x408fe6
cmp edi, dword [ebp + 8]
ja 0x4090c5
jmp 0x409046
cmp esi, 0x3c
je 0x4095a3
cmp esi, 0x26
jne 0x40902e
push dword [ebp - 8]
push ebx
call fcn.00409b7c
add esp, 8
mov ecx, 0xc647a641
popal
cmp eax, 0x8b018abc
mov al, 0x16
cdq
xor ecx, ebx
shr dword [0x9d136d7], 0xb1
jge 0x408f9b
test eax, 0x2ce15d52
invalid
enter 0xffffffffffffc6d9, 0x37
cmp ecx, esi
pop es
inc ebx
mov ch, ah
jmp 0xd410ac40
pushfd
mov dh, 0x91
xor eax, 0x1407d4d
add dword [ecx + 0x33], esi
ror byte [eax], 0x75
or edx, edi
sub byte [ebx + 0x19], 0xe0
shl dh, 0xd8
mov al, byte [0xf820fe43]
add eax, 0xbc61d421
mov bl, dh
test al, ch
in eax, 0xa4
mov byte [eax + 0x3ddf442d], dl
lds ecx, [0x6d4438f5]
enter 0xffffffffffff90e9, 0x1e
mov word [0x6853f351], cs
inc ecx
retf
and byte [eax], cl
out 0xbb, al
adc eax, 0xed94b2a8
test al, ch
sub eax, 0xd0828d5
shl dword [ecx + 0x2ba437de], 0x80
wait
in eax, dx
sahf
mov esi, 0xc8eb60a1
sbb esp, edi
fdiv dword [edi - 0x1e5a77c1]
invalid
imul ebp, ebx, 0xf19f9f9
sbb dword [edi], ecx
std
cmp eax, 0x90a96128
or eax, 0x8c172870
adc dword [ecx + esi + 0x10931f1], edi
xor ch, ah
ror dword [ebp + ebx*8 + 0x5c812a93], 0xc1
and byte [eax + 0x20], bl
fild qword [ecx - 0x3c67f2b3]
adc byte [ebx], ah
sbb byte [ecx + 0x79], cl
dec eax
mov bl, 0x5d
and al, 0x14
and eax, 0x4e0f0c9f
rcr dword [edi + 0x75a02d01], 1
add ebx, dword [edx + 0x59691923]
mov al, byte [0x239a0375]
sbb dword [ecx + 0x59], ebp
rol dword [eax - 0x2456f473], 1
xor eax, 0x8cec5ba5
sbb ch, byte [ebp - 0x57]
loop 0x409570
mov word [edx], ds
insd dword es:[edi], dx
test eax, 0x6e5edfe2
pop esi
outsb dx, byte [esi]
sbb eax, dword [ebp - 0x19]
or ah, ah
cmp eax, 0x50ca65c0
lodsb al, byte [esi]
pop ss
insd dword es:[edi], dx
cmp eax, dword [eax]
add eax, 0x23529970
aam 0x33
mov dword [ecx - 0x4baeb5ee], edi
int1
jo 0x40953e
push edx
and edx, esp
xor ecx, dword [ecx + 0x514a12b9]
mov ah, 0xf1
adc al, 0xcd
inc ecx
invalid
sti
ret 0xdc48
in al, 0xb0
fldcw word [edx - 0x54]
nop
mov edx, 0xf591f24f
jl 0x4096cd
mov esp, dword gs:[edx - 0x4e]
sar eax, 2
fld qword [edx]
dec eax
jb 0x409727
add cl, byte [eax - 0xd]
jb 0x409727
sar dword [eax - 0x7b254ebd], 0x3b
test al, 0xd4
add eax, 0x3fcf4da9
sbb dword [esi - 0x326ee67], esi
ror dword [ebx - 0x6e8481c], 1
test byte [edx + 0x25], ah
xor bh, ch
hlt
bound esp, qword [0x4bf4fd32]
jmp 0x4096db
and eax, 0x8505542d
pop es
mov eax, dword [0x84c14dc9]
sub esp, dword [ecx - 0x35]
loope 0x4096ed
invalid