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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xa8
cmp dword [ecx + 0x20], 0
je 0x40a029
mov esi, ecx
movzx eax, byte [ecx]
mov byte [esp + 0xb], 0
test eax, eax
je 0x40a030
cmp al, 0x64
jb 0x40a03b
lea ecx, [eax + eax*4]
lea edx, [eax + ecx*8]
shr edx, 0xc
imul ecx, edx, 0x64
sub al, cl
movzx eax, al
movzx eax, word [eax + eax + 0x43a318]
mov word [esp + 9], ax
mov ecx, 0xfffffffd
mov eax, edx
jmp 0x40a044
mov bl, 1
jmp 0x40a534
lea ebx, [esp + 0xa]
mov byte [esp + 0xa], 0x30
jmp 0x40a06a
mov ecx, 0xffffffff
cmp al, 9
ja 0x40a059
lea edx, [esp + 0xc]
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
lea ebx, [edx + ecx]
dec ebx
mov byte [esp + ecx + 0xb], al
jmp 0x40a06a
movzx eax, word [eax + eax + 0x43a318]
lea ebx, [esp + 9]
mov word [esp + 9], ax
lea eax, [esi + 0x10]
push eax
call fcn.00406e20
add esp, 4
mov ebp, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x1c], eax
lea eax, [ebp + 0x400]
push eax
call fcn.00408f60
add esp, 4
mov edi, eax
mov dword [esp + 0x20], 0xbdbdaebc
mov byte [esp + 0x24], 0x20
mov dword [esp + 0x25], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 8
ja 0x40a0ee
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x20]
add eax, 0x69e3f339
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xe3
mov ecx, dword [esp]
mov byte [esp + ecx + 0x20], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 9
jb 0x40a0c0
lea eax, [esp + 0x20]
mov ecx, esi
push 0x441a6c
push eax
push edi
call fcn.00409990
mov dword [esp], 0x298e8494
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
cmp eax, 3
ja 0x40a151
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
movzx ecx, byte [esp + ecx]
add eax, 0x4467a8c7
xor eax, ecx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
add al, 0x1d
mov ecx, dword [esp + 0xc]
mov byte [esp + ecx], al
inc dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp eax, 4
jb 0x40a120
mov eax, esp
mov ecx, esi
push ebx
push eax
push edi
call fcn.00409990
mov eax, dword [str.WpM2Co__SUSELL]
mov dword [esp + 0x20], 0xd7baa0bc
mov word [esp + 0x24], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 5
ja 0x40a1b0
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x20]
add ecx, 0x544cf94e
xor ecx, edx
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xc]
add cl, 0x7a
mov edx, dword [esp]
mov byte [esp + edx + 0x20], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 6
jb 0x40a180
mov ecx, esi
push eax
lea ebx, [esp + 0x24]
push ebx
push edi
call fcn.00409990
mov dword [esp + 0x20], 0xdfc4dcc3
mov dword [esp + 0x24], 0xccd3c8db
mov dword [esp + 0x28], 0xd6d5d8cb
mov byte [esp + 0x2c], 0xc4
mov word [esp + 0x2d], 0
mov byte [esp + 0x2f], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xf
ja 0x40a22e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x20]
add eax, 0xbe21daf4
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x3c
mov ecx, dword [esp]
mov byte [esp + ecx + 0x20], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x10
jb 0x40a200
mov dword [esp + 0xc], 0x19a6b6b3
mov byte [esp + 0x10], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 4
ja 0x40a281
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0xc]
add eax, 0x9de16a3b
xor eax, ecx
mov dword [esp], eax
mov eax, dword [esp]
add al, 0xd9
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0xc], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 5
jb 0x40a250
lea eax, [esp + 0xc]
mov ecx, esi
push ebx
push eax
push edi
call fcn.00409990
mov dword [esp + 0x20], 0x2e322c2a
mov byte [esp + 0x24], 0x80
mov dword [esp + 0x25], 0
mov dword [esp + 0x28], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xb
ja 0x40a305
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x20]
lea edx, [eax + ecx]
add edx, 0xce910ea1
add eax, 0xce910ea1
and eax, ecx
mov ecx, edx
xor ecx, eax
add ecx, eax
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xdb
mov ecx, dword [esp]
mov byte [esp + ecx + 0x20], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xc
jb 0x40a2c0
mov ecx, esi
push ebp
push dword [esp + 0x20]
push ebx
push edi
call fcn.00409c10
mov eax, dword [esi + 0x60]
mov dword [esp + 0x20], 0xc95bcbb1
mov dword [esp + 0x24], 0xc54ac75a
mov dword [esp + 0x28], 0xc150c35f
mov dword [esp + 0x2c], 0xfdadff4c
mov dword [esp + 0x30], 0xf97dfb90
mov dword [esp + 0x34], 0xf56df768
mov dword [esp + 0x38], 0xf1d2f3b2
mov dword [esp + 0x3c], 0xed65ef63
mov dword [esp + 0x40], 0xe966eb78
mov dword [esp + 0x44], 0xe576e77f
mov dword [esp + 0x48], 0xe16ce37b
mov dword [esp + 0x4c], 0x1d4f1f6c
mov dword [esp + 0x50], 0x198b1b86
mov dword [esp + 0x54], 0x15851796
mov dword [esp + 0x58], 0x118e1347
mov dword [esp + 0x5c], 0xd820f8f
mov dword [esp + 0x60], 0x94f0b93
mov dword [esp + 0x64], 0x5980728
mov dword [esp + 0x68], 0x1890395
mov dword [esp + 0x6c], 0x3da23f92
mov dword [esp + 0x70], 0x39b43ba3
mov dword [esp + 0x74], 0x357537bf
mov dword [esp + 0x78], 0x31a933aa
mov dword [esp + 0x7c], 0x2d652f78
mov dword [esp + 0x80], 0x29b12bb0
mov dword [esp + 0x84], 0x25b12763
mov dword [esp + 0x88], 0x21be23b4
mov dword [esp + 0x8c], 0x5dc35fb1
mov dword [esp + 0x90], 0x59c15bcb
mov dword [esp + 0x94], 0x55d857d6
mov dword [esp + 0x98], 0x511d53cf
mov dword [esp + 0x9c], 0x4d784f63
mov word [esp + 0xa0], 0x4b4c
mov word [esp + 0xa6], 0
mov dword [esp + 0xa2], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x87
ja 0x40a493
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x20]
add ecx, 0x749e6d53
xor ecx, edx
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xc]
add cl, 0x61
mov edx, dword [esp]
mov byte [esp + edx + 0x20], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x88
jb 0x40a460
mov dword [esp + 0xc], 0x21852755
mov dword [esp + 0x10], 0x3d992390
mov word [esp + 0x14], 0x3f3c
mov dword [esp + 0x16], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0xd
ja 0x40a503
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0xc]
add ecx, 0xe81ee709
xor ecx, edx
mov dword [esp], ecx
mov ecx, dword [esp]
add cl, 0xd3
mov edx, dword [esp + 4]
mov byte [esp + edx + 0xc], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0xe
jb 0x40a4d0
push 0x493e0
push eax
push edi
push 0
push 0
push ebx
lea eax, [esp + 0x24]
push eax
call fcn.0040c5c0
add esp, 0x1c
mov ebx, eax
push edi
call fcn.00408f70
add esp, 4
mov eax, dword [esi + 0x60]
add dword [esi + 4], eax
mov dword [esi + 0x60], 0
mov eax, ebx
add esp, 0xa8
pop esi
pop edi
pop ebx
pop ebp
ret