Function at 0x409680
Capabilities:
Contain obfuscated stackstrings
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x110
cmp dword [ecx + 0x20], 0
je 0x4096d1
mov esi, ecx
movzx eax, byte [ecx]
mov byte [esp + 0xf], 0
test eax, eax
je 0x4096d8
cmp al, 0x64
jb 0x4096e7
lea ecx, [eax + eax*4]
lea ecx, [eax + ecx*8]
movzx edx, cx
shr edx, 0xc
imul ecx, edx, 0x64
sub al, cl
movzx eax, al
movzx eax, word [eax + eax + 0x43e438]
mov word [esp + 0xd], ax
mov ecx, 1
mov eax, edx
jmp 0x4096f0
mov bl, 1
jmp 0x409da5
lea eax, [esp + 0xe]
mov dword [esp + 0x3c], eax
mov byte [esp + 0xe], 0x30
jmp 0x409732
mov ecx, 3
cmp al, 9
ja 0x409707
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
lea edx, [esp + ecx]
add edx, 0xb
mov dword [esp + 0x3c], edx
mov byte [esp + ecx + 0xb], al
jmp 0x409732
mov ecx, eax
and ecx, 2
mov edx, eax
or eax, 2
imul eax, ecx
xor ecx, 2
and edx, 0x7d
imul edx, ecx
movzx eax, word [edx + eax + 0x43e438]
lea ecx, [esp + 0xd]
mov dword [esp + 0x3c], ecx
mov word [esp + 0xd], ax
lea eax, [esi + 0x10]
push eax
call fcn.00406600
add esp, 4
mov edi, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xe0], eax
lea ebx, [esp + 0xeb]
push ebx
call fcn.00434660
add esp, 4
mov dword [esp + 0xe4], edi
lea eax, [edi + 0x800]
push eax
call fcn.00436470
add esp, 4
mov edi, eax
mov dword [esp + 0x44], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x40], 0x7033604
mov byte [esp + 0x44], 0xa8
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x13
ja 0x409806
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
movzx edx, byte [esp + eax + 0x40]
lea eax, [ecx + edx]
add eax, 0xce81b49a
add ecx, 0xce81b49a
and ecx, edx
add ecx, ecx
sub eax, ecx
mov ecx, eax
xor ecx, 0xc9
and eax, 0x49
lea eax, [ecx + eax*2]
inc al
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x14
jb 0x4097c0
lea eax, [esp + 0x40]
mov ecx, esi
push ebx
mov ebx, eax
push eax
push edi
call fcn.00408f00
mov byte [esp + 0x5c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0x4b26243c
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x1c
ja 0x4098a8
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
movzx edx, byte [esp + eax + 0x40]
lea eax, [ecx + edx]
add eax, 0xf555654a
add ecx, 0xf555654a
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0xfa
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x1d
jb 0x409870
mov ecx, esi
push dword [esp + 0x3c]
push ebx
push edi
call fcn.00408f00
mov eax, dword [str.Z05cIW__Blue]
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0x33d6c8cc
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0x10]
cmp ecx, 0x1b
ja 0x409959
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x10]
movzx edx, byte [esp + edx + 0x40]
mov ebx, ecx
and ebx, 0xf2145f8
xor ecx, 0x8f2145f8
lea ecx, [ecx + ebx*2]
lea ebx, [ecx + edx]
and ecx, edx
add ecx, ecx
mov edx, ebx
not edx
and edx, ecx
not ecx
and ecx, ebx
sub ecx, edx
add cl, 0x38
mov edx, dword [esp + 0x10]
mov byte [esp + edx + 0x40], cl
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
cmp ecx, 0x1c
jb 0x409910
mov ecx, esi
push eax
lea ebx, [esp + 0x44]
push ebx
push edi
call fcn.00408f00
mov dword [esp + 0x40], 0x6f766e7b
mov dword [esp + 0x44], 0x726b7263
mov dword [esp + 0x48], 0x60656273
mov byte [esp + 0x4c], 0xca
mov dword [esp + 0x4d], 0
mov byte [esp + 0x51], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x11
ja 0x4099e3
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
movzx edx, byte [esp + eax + 0x40]
lea eax, [ecx + edx]
add eax, 0x61
add ecx, 0x61
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0x59
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x12
jb 0x4099b0
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0x33b88889
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x1b
ja 0x409a5f
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x10]
lea edx, [eax + 0x59]
add eax, ecx
and edx, ecx
add edx, edx
sub eax, edx
add al, 0xea
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x1c
jb 0x409a30
lea eax, [esp + 0x10]
mov ecx, esi
push ebx
push eax
push edi
call fcn.00408f00
mov dword [esp + 0x44], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x40], 0xe0e8eaec
mov byte [esp + 0x44], 0x4a
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x1f
ja 0x409b12
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax + ecx]
add edx, 0x88af59f5
add eax, 0x88af59f5
and eax, ecx
add eax, eax
mov ecx, eax
xor ecx, edx
not eax
and eax, edx
add eax, eax
sub eax, ecx
add al, 0x4d
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x20
jb 0x409ad0
mov ecx, esi
push dword [esp + 0xe4]
push dword [esp + 0xe4]
push ebx
push edi
call fcn.004091c0
mov eax, dword [esi + 0x60]
mov dword [esp + 0x40], 0xeba515d3
mov dword [esp + 0x44], 0xef5ce958
mov dword [esp + 0x48], 0xe35eed55
mov dword [esp + 0x4c], 0xe713e156
mov dword [esp + 0x50], 0xfb6be532
mov dword [esp + 0x54], 0xff43f94a
mov dword [esp + 0x58], 0xf31cfd30
mov dword [esp + 0x5c], 0xf77bf141
mov dword [esp + 0x60], 0xcb40f54a
mov dword [esp + 0x64], 0xcf78c975
mov dword [esp + 0x68], 0xc37acd69
mov dword [esp + 0x6c], 0xc731c176
mov dword [esp + 0x70], 0xdb75c57c
mov dword [esp + 0x74], 0xdf6bd96c
mov dword [esp + 0x78], 0xd378dd2d
mov dword [esp + 0x7c], 0xd764d175
mov dword [esp + 0x80], 0xab19d571
mov dword [esp + 0x84], 0xaf0ea94a
mov dword [esp + 0x88], 0xa327ad1f
mov dword [esp + 0x8c], 0xa704a110
mov dword [esp + 0x90], 0xbb12a501
mov dword [esp + 0x94], 0xbf7bb935
mov dword [esp + 0x98], 0xb307bd18
mov dword [esp + 0x9c], 0xb77bb17a
mov dword [esp + 0xa0], 0x8b0fb512
mov dword [esp + 0xa4], 0x8f378941
mov dword [esp + 0xa8], 0x83288d3e
mov dword [esp + 0xac], 0x87258133
mov dword [esp + 0xb0], 0x9b3f8539
mov dword [esp + 0xb4], 0x9f2e992c
mov dword [esp + 0xb8], 0x936b9d25
mov dword [esp + 0xbc], 0x978e9181
mov word [esp + 0xc0], 0x9596
mov dword [esp + 0xd2], 0
mov dword [esp + 0xce], 0
mov dword [esp + 0xca], 0
mov dword [esp + 0xc6], 0
mov dword [esp + 0xc2], 0
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0x10]
cmp ecx, 0x95
ja 0x409cf7
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ebx, byte [esp + ecx + 0x40]
lea ecx, [edx + ebx]
add ecx, 0x7d
add edx, 0x7d
and edx, ebx
add edx, edx
sub ecx, edx
add cl, 0x95
mov edx, dword [esp + 0x10]
mov byte [esp + edx + 0x40], cl
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
cmp ecx, 0x96
jb 0x409cc0
mov dword [esp + 0x10], 0xb313b16f
mov dword [esp + 0x14], 0xb72fb524
mov word [esp + 0x18], 0xa9a8
mov dword [esp + 0x1a], 0
mov dword [esp + 0x1e], 0
mov dword [esp + 0x22], 0
mov dword [esp + 0x25], 0
mov dword [esp + 8], 0
mov ecx, dword [esp + 8]
cmp ecx, 0x18
ja 0x409d70
nop
mov ecx, dword [esp + 8]
mov edx, dword [esp + 8]
movzx edx, byte [esp + edx + 0x10]
lea ebx, [ecx + 0x48]
and ebx, edx
add ecx, edx
add ebx, ebx
sub ecx, ebx
add cl, 0x50
mov edx, dword [esp + 8]
mov byte [esp + edx + 0x10], cl
inc dword [esp + 8]
mov ecx, dword [esp + 8]
cmp ecx, 0x19
jb 0x409d40
push 0x493e0
push eax
push edi
push 0
push 0
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0040d1e0
add esp, 0x1c
mov ebx, eax
push edi
call fcn.00408500
add esp, 4
mov eax, dword [esi + 0x60]
add dword [esi + 4], eax
mov dword [esi + 0x60], 0
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret