Function at 0x409c20
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, 0x120
cmp dword [ecx + 0x20], 0
je 0x40a337
mov esi, ecx
movzx eax, byte [ecx]
mov byte [esp + 0xf], 0
test eax, eax
je 0x409c75
cmp al, 0x64
jb 0x409c84
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 + 0x4377f4]
mov word [esp + 0xd], ax
mov ecx, 1
mov eax, edx
jmp 0x409c8d
lea eax, [esp + 0xe]
mov dword [esp + 0x3c], eax
mov byte [esp + 0xe], 0x30
jmp 0x409ccf
mov ecx, 3
cmp al, 9
ja 0x409ca4
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 0x409ccf
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 + 0x4377f4]
lea ecx, [esp + 0xd]
mov dword [esp + 0x3c], ecx
mov word [esp + 0xd], ax
lea eax, [esi + 0x10]
push eax
call fcn.004067f0
add esp, 4
mov edi, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xf0], eax
lea ebx, [esp + 0xfb]
push ebx
call fcn.0042dd10
add esp, 4
mov dword [esp + 0xf4], edi
lea eax, [edi + 0x800]
push eax
call fcn.0042f750
add esp, 4
mov edi, eax
mov dword [esp + 0x44], 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], 0x77734674
mov byte [esp + 0x44], 0xc8
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x17
ja 0x409d98
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, 0x346279e2
add ecx, 0x346279e2
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0xd2
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x18
jb 0x409d60
lea eax, [esp + 0x40]
mov ecx, esi
push ebx
mov ebx, eax
push eax
push edi
call fcn.00409440
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 + 0x44], 0
mov dword [esp + 0x40], 0x9be6e0e8
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x1f
ja 0x409e38
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, 0x6f8f8b14
add ecx, 0x6f8f8b14
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0x74
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x20
jb 0x409e00
mov ecx, esi
push dword [esp + 0x3c]
push ebx
mov dword [esp + 0x44], edi
push edi
call fcn.00409440
mov eax, dword [str.9zXsP2__]
mov dword [esp + 0xec], eax
mov dword [esp + 0x5b], 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], 0xf3562420
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0x10]
cmp ecx, 0x1e
ja 0x409f00
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx eax, byte [esp + ecx + 0x40]
lea edi, [edx - 0x2daae1c2]
lea ecx, [edx + eax]
add ecx, 0xd2551e3e
mov ebx, eax
not ebx
or ebx, edi
add ebx, eax
add edx, 0x3e
and edx, eax
add edx, ebx
inc edx
mov eax, ecx
not eax
and eax, edx
not edx
and edx, ecx
sub edx, eax
add dl, 0x4e
mov eax, dword [esp + 0x10]
mov byte [esp + eax + 0x40], dl
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x1f
jb 0x409eb0
mov ecx, esi
push dword [esp + 0xec]
lea ebx, [esp + 0x44]
push ebx
mov edi, dword [esp + 0x44]
push edi
call fcn.00409440
mov dword [esp + 0x40], 0x4750485b
mov dword [esp + 0x44], 0x50435c43
mov dword [esp + 0x48], 0x5e414453
mov byte [esp + 0x4c], 0xb8
mov dword [esp + 0x4d], 0
mov dword [esp + 0x51], 0
mov dword [esp + 0x55], 0
mov byte [esp + 0x59], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x19
ja 0x409f95
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
add al, 0xe6
xor al, byte [esp + ecx + 0x40]
add al, 0xb6
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x1a
jb 0x409f70
mov dword [esp + 0x27], 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], 0xb86726d
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x1a
ja 0x40a022
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x10]
lea edx, [eax + ecx]
add edx, 0xebe6d82
add eax, 0xebe6d82
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, 0x72
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x1b
jb 0x409fe0
lea eax, [esp + 0x10]
mov ecx, esi
push ebx
push eax
push edi
call fcn.00409440
mov dword [esp + 0x44], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x40], 0xfce4faf8
mov byte [esp + 0x44], 0x92
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x13
ja 0x40a0a2
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax + 0x13]
and edx, ecx
add eax, ecx
add eax, 0x13
add edx, edx
sub eax, edx
add al, 0x7b
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x14
jb 0x40a070
mov ecx, esi
push dword [esp + 0xf4]
push dword [esp + 0xf4]
push ebx
push edi
call fcn.00409710
mov eax, dword [esi + 0x60]
mov dword [esp + 0x40], 0xb3cdb1f3
mov dword [esp + 0x44], 0xb7c2b5ca
mov dword [esp + 0x48], 0xcbb4c9ad
mov dword [esp + 0x4c], 0xcff3cdb8
mov dword [esp + 0x50], 0xc34bc194
mov dword [esp + 0x54], 0xc7a3c5b4
mov dword [esp + 0x58], 0xdbfad992
mov dword [esp + 0x5c], 0xdfabdda1
mov dword [esp + 0x60], 0xd3a6d1ac
mov dword [esp + 0x64], 0xd7a6d5ad
mov dword [esp + 0x68], 0xeb98e989
mov dword [esp + 0x6c], 0xefd1ed98
mov dword [esp + 0x70], 0xe39de186
mov dword [esp + 0x74], 0xe79be596
mov dword [esp + 0x78], 0xfb9ef9c5
mov dword [esp + 0x7c], 0xff8afd9d
mov dword [esp + 0x80], 0xf3b9f191
mov dword [esp + 0x84], 0xf794f5d4
mov dword [esp + 0x88], 0xb7f0977
mov dword [esp + 0x8c], 0xf6a0d72
mov dword [esp + 0x90], 0x3700161
mov dword [esp + 0x94], 0x74b058d
mov dword [esp + 0x98], 0x1b7f197a
mov dword [esp + 0x9c], 0x1f2b1d54
mov dword [esp + 0xa0], 0x13771174
mov dword [esp + 0xa4], 0x176f1521
mov dword [esp + 0xa8], 0x2b4e2958
mov dword [esp + 0xac], 0x2f4d2d53
mov dword [esp + 0xb0], 0x23472159
mov dword [esp + 0xb4], 0x27542556
mov dword [esp + 0xb8], 0x3b0b395d
mov dword [esp + 0xbc], 0x3f243d21
mov word [esp + 0xc0], 0x3130
mov dword [esp + 0xd6], 0
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, 0x99
ja 0x40a27a
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x10]
add cl, 0xb8
xor cl, byte [esp + edx + 0x40]
add cl, 0xf8
mov edx, dword [esp + 0x10]
mov byte [esp + edx + 0x40], cl
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
cmp ecx, 0x9a
jb 0x40a250
mov dword [esp + 0x10], 0xeb3395e7
mov dword [esp + 0x14], 0xef57e95a
mov word [esp + 0x18], 0xedee
mov dword [esp + 0x1a], 0
mov dword [esp + 0x1e], 0
mov dword [esp + 0x22], 0
mov dword [esp + 0x26], 0
mov dword [esp + 0x2a], 0
mov dword [esp + 8], 0
mov ecx, dword [esp + 8]
cmp ecx, 0x1d
ja 0x40a30a
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx edi, byte [esp + ecx + 0x10]
lea ecx, [edx + edi]
add ecx, 0xccb3663d
add edx, 0xccb3663d
and edx, edi
add edx, edx
sub ecx, edx
add cl, 0x55
mov edx, dword [esp + 8]
mov byte [esp + edx + 0x10], cl
inc dword [esp + 8]
mov ecx, dword [esp + 8]
cmp ecx, 0x1e
jb 0x40a2d0
push 0x493e0
push eax
mov edi, dword [esp + 0x44]
push edi
push 0
push 0
push ebx
lea eax, [esp + 0x28]
push eax
call fcn.0040f050
add esp, 0x1c
push edi
call fcn.004088a0
add esp, 4
mov dword [esi + 0x60], 0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret