Function at 0x408588
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0xcf2552
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xcc
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x14], ebx
mov edx, dword [ebp + 0x10]
movsx eax, byte [edx + 0x15]
mov dword [ebp - 0x20], ecx
test eax, eax
je 0x4086b3
push 0xd27f00
lea ecx, [ebp - 0x64]
call fcn.00407a4c
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x8c]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], ecx
call 0xcbba05
mov dword [ebp - 4], 1
mov dword [ebp - 0x8c], 0xe442a8
lea esi, [ebp - 0x80]
xor eax, eax
mov dword [ebp - 0x68], 0xf
mov dword [ebp - 0x6c], eax
mov byte [ebp - 0x7c], al
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x30], esi
test ebx, ebx
lea edi, [ebp - 0x64]
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x28], eax
jae 0x408627
call 0xcee5a9
mov ebx, dword [ebp - 0x50]
lea eax, [ebp - 0x80]
lea edx, [ebp - 0x64]
cmp ebx, 0xffffffff
jbe 0x408637
mov ebx, 0xffffffff
mov dword [ebp - 0x3c], ebx
cmp eax, edx
je 0x408b50
mov dword [ebp - 0x40], ebx
cmp ebx, 0xfffffffe
jbe 0x408652
call 0xcee56a
mov ebx, dword [ebp - 0x40]
mov esi, dword [ebp - 0x68]
cmp esi, ebx
jb 0x408a48
test ebx, ebx
je 0x408a29
test ebx, ebx
ja 0x4089c6
mov dword [ebp - 4], 0
push 0xe4a780
mov eax, dword [ebp - 0x38]
lea edx, [ebp - 0x8c]
mov dword [eax], 0xe442cc
push edx
call 0xcbbc82
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x4c]
cmp eax, 0x10
jae 0x4089b8
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x4c], 0xf
xor eax, eax
mov dword [ebp - 0x50], eax
mov byte [ebp - 0x60], al
mov eax, dword [ebp + 0xc]
mov ebx, edx
test eax, eax
je 0x409067
movsx eax, byte [edx + 0x15]
test eax, eax
je 0x4086cf
call 0xcbb9ec
jmp 0x408707
mov eax, dword [edx + 8]
movsx ecx, byte [eax + 0x15]
test ecx, ecx
je 0x4086ee
mov ecx, dword [edx + 4]
movsx eax, byte [ecx + 0x15]
test eax, eax
je 0x408c37
mov dword [ebp + 0x10], ecx
jmp 0x408707
mov edx, dword [eax]
movsx ecx, byte [edx + 0x15]
test ecx, ecx
jne 0x408704
mov eax, dword [eax]
mov edx, dword [eax]
movsx ecx, byte [edx + 0x15]
test ecx, ecx
je 0x4086f8
mov dword [ebp + 0x10], eax
mov eax, dword [ebx]
movsx edx, byte [eax + 0x15]
mov edi, ebx
test edx, edx
je 0x408718
mov esi, dword [ebx + 8]
jmp 0x40872d
mov edx, dword [ebx + 8]
movsx ecx, byte [edx + 0x15]
test ecx, ecx
je 0x408727
mov esi, eax
jmp 0x40872d
mov edi, dword [ebp + 0x10]
mov esi, dword [edi + 8]
cmp edi, ebx
je 0x408f87
mov dword [eax + 4], edi
mov eax, dword [ebx]
mov dword [edi], eax
cmp edi, dword [ebx + 8]
jne 0x408745
mov ecx, edi
jmp 0x408762
mov ecx, dword [edi + 4]
movsx eax, byte [esi + 0x15]
test eax, eax
je 0x408f7f
mov dword [ecx], esi
mov eax, dword [ebx + 8]
mov dword [edi + 8], eax
mov edx, dword [ebx + 8]
mov dword [edx + 4], edi
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
mov eax, dword [eax + 4]
cmp ebx, dword [eax + 4]
je 0x408f77
mov eax, dword [ebx + 4]
cmp ebx, dword [eax]
je 0x408780
mov dword [eax + 8], edi
jmp 0x408782
mov dword [eax], edi
mov eax, dword [ebx + 4]
mov dword [edi + 4], eax
movzx eax, byte [edi + 0x14]
movzx edx, byte [ebx + 0x14]
mov byte [edi + 0x14], dl
mov byte [ebx + 0x14], al
movsx eax, byte [ebx + 0x14]
cmp eax, 1
je 0x408c5e
push ebx
call 0xcba27d
pop ecx
mov edx, dword [ebp - 0x20]
mov eax, dword [edx + 8]
test eax, eax
je 0x4087ba
add eax, 0xffffffff
mov dword [edx + 8], eax
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
mov edi, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x14]
mov dword [eax], edx
mov dword [eax + 4], ecx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 0xc
mov edx, dword [ebp - 0x94]
test edx, edx
ja 0x4088d3
mov edx, dword [ebp - 0x98]
mov eax, dword [edx + 0x18]
cmp eax, 0x10
jae 0x4088bf
mov dword [edx + 0x18], 0xf
mov eax, dword [ebp - 0x98]
mov dword [eax + 0x14], 0
mov eax, dword [ebp - 0x98]
mov edx, dword [eax + 0x18]
cmp edx, 0x10
jb 0x408864
mov eax, dword [eax + 4]
jmp 0x408867
add eax, 4
mov ecx, dword [ebp - 0xa0]
mov byte [eax], 0
mov edx, dword [ebp - 0x98]
mov eax, dword [ebp - 0x9c]
mov dword [edx + 4], eax
mov ebx, dword [ebp - 0x98]
mov dword [ebx + 0x18], ecx
mov edi, dword [ebp - 0x98]
mov esi, dword [ebp - 0x94]
mov dword [edi + 0x14], esi
mov edx, dword [ebp - 0x98]
mov eax, dword [edx + 0x18]
cmp eax, 0x10
jb 0x4088aa
mov edx, dword [edx + 4]
jmp 0x4088ad
add edx, 4
mov eax, dword [ebp - 0x94]
mov byte [edx + eax], 0
mov ebx, dword [ebp - 0x40]
jmp 0x408665
push dword [edx + 4]
call 0xcba27d
pop ecx
mov edx, dword [ebp - 0x98]
jmp 0x40883d
mov ecx, dword [ebp - 0x98]
mov eax, dword [ecx + 0x18]
cmp eax, 0x10
jb 0x4088e6
mov ecx, dword [ecx + 4]
jmp 0x4088e9
add ecx, 4
mov ebx, dword [ebp - 0xa0]
movzx eax, byte [ebp - 0xb4]
mov byte [ebp - 0xb8], al
push edx
add ebx, 1
push ecx
push ebx
push dword [ebp - 0x9c]
call 0xcbbccc
add esp, 0x10
jmp 0x40882b
push dword [ebp - 0x60]
call 0xcba27d
pop ecx
jmp 0x4086a1
mov ebx, dword [ebp - 0x30]
mov ecx, dword [ebx + 0x18]
cmp ecx, 0x10
jb 0x4089d6
mov ebx, dword [ebx + 4]
jmp 0x4089d9
add ebx, 4
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx + 0x18]
cmp eax, 0x10
jb 0x4089e9
mov edx, dword [edx + 4]
jmp 0x4089ec
add edx, 4
add edx, dword [ebp - 0x28]
push dword [ebp - 0x3c]
movzx eax, byte [ebp - 0x44]
mov byte [ebp - 0x48], al
push edx
push ecx
push ebx
call 0xcbbccc
add esp, 0x10
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x30]
mov dword [eax + 0x14], ecx
mov eax, dword [ebp - 0x30]
mov edx, dword [eax + 0x18]
cmp edx, 0x10
jb 0x408a1d
mov eax, dword [eax + 4]
jmp 0x408a20
add eax, 4
mov byte [eax + ecx], 0
jmp 0x40866d
mov dword [ebp - 0x6c], 0
cmp esi, 0x10
jb 0x408a3a
mov eax, dword [ebp - 0x7c]
jmp 0x408a3d
lea eax, [ebp - 0x7c]
mov byte [eax], 0
mov ebx, dword [ebp - 0x40]
jmp 0x408665
mov edx, dword [ebp - 0x6c]
mov dword [ebp - 0xac], ebx
mov ecx, ebx
lea eax, [ebp - 0x80]
or ecx, 0xf
cmp ecx, 0xfffffffe
mov dword [ebp - 0x98], eax
mov dword [ebp - 0x94], edx
mov dword [ebp - 0xb0], ecx
mov dword [ebp - 0xa0], ecx
jbe 0x408a84
mov dword [ebp - 0xb0], ebx
mov dword [ebp - 0xa0], ebx
jmp 0x408a9b
mov ebx, ecx
mov ecx, esi
shr ecx, 1
mov eax, 0xaaaaaaab
mul ebx
shr edx, 1
cmp ecx, edx
ja 0x408b2d
mov dword [ebp - 0x9c], 0
mov dword [ebp - 4], 2
mov eax, dword [ebp - 0xb0]
add eax, 1
mov dword [ebp - 0xb0], eax
jne 0x408ac7
xor eax, eax
mov dword [ebp - 0xb0], eax
jmp 0x408b0e
mov ecx, eax
xor edx, edx
mov eax, 0xffffffff
div ecx
cmp eax, 1
jae 0x408b0e
mov dword [ebp - 0xbc], 0
lea eax, [ebp - 0xbc]
push eax
lea ecx, [ebp - 0xcc]
call 0xcbba16
mov dword [ebp - 0xcc], 0xe40cb4
lea eax, [ebp - 0xcc]
push 0xe4a720
push eax
call 0xcbbc82
mov eax, dword [ebp - 0xb0]
push eax
call 0xcba213
pop ecx
mov dword [ebp - 0x9c], eax
mov dword [ebp - 4], 1
jmp 0x40881d
mov eax, ecx
neg eax
add eax, 0xfffffffe
cmp esi, eax
ja 0x408a9b
lea eax, [esi + ecx]
mov dword [ebp - 0xb0], eax
mov dword [ebp - 0xa0], eax
jmp 0x408a9b
mov edx, dword [ebp - 0x6c]
cmp edx, ebx
jae 0x408b5f
call 0xcee5a9
mov edx, dword [ebp - 0x6c]
mov eax, edx
sub eax, ebx
cmp eax, 0xffffffff
mov esi, eax
jb 0x408b6f
mov esi, 0xffffffff
test esi, esi
ja 0x408be0
test edx, edx
jae 0x408b7f
call 0xcee5a9
mov edx, dword [ebp - 0x6c]
test edx, edx
mov ebx, edx
jb 0x408b8a
mov ebx, 0
test ebx, ebx
jbe 0x40866d
mov ecx, dword [ebp - 0x68]
cmp ecx, 0x10
jb 0x408ba2
mov esi, dword [ebp - 0x7c]
mov eax, dword [ebp - 0x7c]
jmp 0x408ba8
lea esi, [ebp - 0x7c]
lea eax, [ebp - 0x7c]
mov byte [ebp - 0xa8], 0
add eax, ebx
sub edx, ebx
push edx
push eax
push ecx
push esi
call 0xcbbd47
add esp, 0x10
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x68]
sub edx, ebx
mov dword [ebp - 0x6c], edx
cmp eax, 0x10
jb 0x408bd4
mov eax, dword [ebp - 0x7c]
jmp 0x408bd7
lea eax, [ebp - 0x7c]
mov byte [eax + edx], 0
jmp 0x40866d
mov ecx, dword [ebp - 0x68]
cmp ecx, 0x10
jb 0x408bf0
mov edi, dword [ebp - 0x7c]
mov edx, dword [ebp - 0x7c]
jmp 0x408bf6
lea edi, [ebp - 0x7c]
lea edx, [ebp - 0x7c]
mov byte [ebp - 0xa4], 0
add edi, ebx
sub ecx, ebx
add ebx, esi
add ebx, edx
sub eax, esi
push eax
push ebx
push ecx
push edi
call 0xcbbd47
add esp, 0x10
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x68]
sub edx, esi
mov dword [ebp - 0x6c], edx
cmp eax, 0x10
jb 0x408c28
mov eax, dword [ebp - 0x7c]
jmp 0x408c2b
lea eax, [ebp - 0x7c]
mov byte [eax + edx], 0
mov edx, dword [ebp - 0x6c]
jmp 0x408b73
cmp edx, dword [ecx + 8]
jne 0x4086e9
mov dword [ebp + 0x10], ecx
mov edx, ecx
mov ecx, dword [ecx + 4]
movsx eax, byte [ecx + 0x15]
test eax, eax
jne 0x4086e9
cmp edx, dword [ecx + 8]
je 0x408c40
jmp 0x4086e9
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 4]
cmp esi, dword [edx + 4]
je 0x408c72
movsx eax, byte [esi + 0x14]
cmp eax, 1
je 0x408c7b
mov byte [esi + 0x14], 1
jmp 0x4087a3
mov edi, dword [ecx]
cmp esi, edi
je 0x408e09
movsx eax, byte [edi + 0x14]
test eax, eax
je 0x408db8
movsx eax, byte [edi + 0x15]
test eax, eax
jne 0x408cbe
mov eax, dword [edi + 8]
movsx edx, byte [eax + 0x14]
mov dword [ebp - 0xb0], eax
cmp edx, 1
jne 0x408d34
mov eax, dword [edi]
movsx edx, byte [eax + 0x14]
cmp edx, 1
jne 0x408cd9
mov byte [edi + 0x14], 0
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 4]
mov esi, ecx
mov ecx, dword [ecx + 4]
cmp esi, dword [edx + 4]
je 0x408c72
movsx eax, byte [esi + 0x14]
cmp eax, 1
je 0x408c7b
jmp 0x408c72
movzx eax, byte [ecx + 0x14]
mov byte [edi + 0x14], al
mov edx, 1
mov byte [ecx + 0x14], dl
mov edi, dword [edi]
mov byte [edi + 0x14], dl
mov eax, dword [ecx]
mov edx, dword [eax + 8]
mov dword [ecx], edx
mov edi, dword [eax + 8]
movsx edx, byte [edi + 0x15]
test edx, edx
je 0x408d2f
mov edi, dword [ebp - 0x24]
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [edi + 4]
cmp ecx, dword [edx + 4]
je 0x408d2a
mov edx, dword [ecx + 4]
cmp ecx, dword [edx + 8]
je 0x408d1c
mov dword [edx], eax
jmp 0x408d1f
mov dword [edx + 8], eax
mov dword [eax + 8], ecx
mov dword [ecx + 4], eax
jmp 0x408c72
mov dword [edx + 4], eax
jmp 0x408d1f
mov dword [edi + 4], ecx
jmp 0x408cff
mov eax, dword [edi]
movsx edx, byte [eax + 0x14]
cmp edx, 1
jne 0x408cd9
mov eax, dword [ebp - 0xb0]
mov byte [eax + 0x14], 1
mov eax, dword [edi + 8]
mov byte [edi + 0x14], 0
mov edx, dword [eax]
mov dword [edi + 8], edx
mov edx, dword [eax]
mov dword [ebp - 0xb0], eax
movsx eax, byte [edx + 0x15]
test eax, eax
je 0x408db3
mov edx, dword [ebp - 0xb0]
mov eax, dword [edi + 4]
mov dword [edx + 4], eax
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 4]
cmp edi, dword [edx + 4]
je 0x408da8
mov eax, dword [edi + 4]
cmp edi, dword [eax]
je 0x408d8e
mov edx, dword [ebp - 0xb0]
mov dword [eax + 8], edx
jmp 0x408d96
mov edx, dword [ebp - 0xb0]
mov dword [eax], edx
mov eax, dword [ebp - 0xb0]
mov dword [eax], edi
mov dword [edi + 4], eax
mov edi, dword [ecx]
jmp 0x408cd9
mov eax, dword [ebp - 0xb0]
mov dword [edx + 4], eax
jmp 0x408d96
mov dword [edx + 4], edi
jmp 0x408d65
mov byte [edi + 0x14], 1
mov eax, dword [ecx]
mov byte [ecx + 0x14], 0
mov edx, dword [eax + 8]
mov dword [ecx], edx
mov edx, dword [eax + 8]
movsx edi, byte [edx + 0x15]
test edi, edi
je 0x408e04
mov edi, dword [ebp - 0x24]
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [edi + 4]
cmp ecx, dword [edx + 4]
je 0x408dff
mov edx, dword [ecx + 4]
cmp ecx, dword [edx + 8]
je 0x408def
mov dword [edx], eax
jmp 0x408df2
mov dword [edx + 8], eax
mov dword [eax + 8], ecx
mov edi, dword [ecx]
mov dword [ecx + 4], eax
jmp 0x408c91
mov dword [edi - 0x606ea100], edi
lahf
sub dword [esi - 0x7ebf63be], ebp
aas
sti
je 0x408e38
inc eax
cmp dword [edi], 0x712974fb
int 0x83
aas
nop
jno 0x408dde
cmp dword [edi], 0xffffff90
dec edi
cmpsd dword [esi], dword es:[edi]
invalid
aaa
mov word [edi], fs
sbb al, 4
push ss
sal byte [edi + 7], 0xc
cmp al, 0xe0
pop eax
ja 0x408e41
or al, 0x3c
loopne 0x408e96
jo 0x408e30
xor al, 0x11
shl byte [eax + 0x30c1ee5f], cl
adc edx, edx
mov al, byte [0x30c1ee5f]
sub al, 0x7d
das
inc ecx
iretd
xor byte [ecx - 1], bl
inc ecx
inc eax
xchg edi, eax
pop eax
lodsd eax, dword [esi]
int1
or al, 0xa7
or byte [edi - 0x5aa3e003], bl
mov cs, edi
popal
test eax, 0x9bd50f1c
lahf
pop edx
mov al, 0xe
ret
push edi
enter 0x59e7, 0xfffffffffffffff0
psubsb mm6, mm0
push edx
lahf
lodsb al, byte [esi]
mov dword [0x6b5e2625], eax
movsb byte es:[edi], byte [esi]
fild dword [edx + edi*4 + 0x5850f0e2]
or byte [ecx + 0x27], 7
xor ch, dh
aam 0x7e
jo 0x408f5b
in eax, 0x7f
xor byte [ebp + 0x4d], dh
scasd eax, dword es:[edi]
dec ebx
fsub dword [ebp - 0x73]
cmp al, 0xfb
xor byte [edi + 0x37], ah
and eax, ebp
lahf
hlt
xor byte [ebx], ch
xchg esi, eax
imul ebp, dword [esi], 0x19
lds eax, [ebp - 0x48]
mov esi, 0x1e1545a1
invalid