Function at 0x409d20
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, 0xfffffff8
sub esp, 0xf0
cmp dword [ecx + 0x20], 0
je 0x409d71
mov esi, ecx
movzx eax, byte [ecx]
mov byte [esp + 0xf], 0
test eax, eax
je 0x409d78
cmp al, 0x64
jb 0x409d87
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 + 0x43e528]
mov word [esp + 0xd], ax
mov ecx, 1
mov eax, edx
jmp 0x409d90
mov bl, 1
jmp 0x40a3d8
lea eax, [esp + 0xe]
mov dword [esp + 0x28], eax
mov byte [esp + 0xe], 0x30
jmp 0x409dbc
mov ecx, 3
cmp al, 9
ja 0x409da7
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
lea edx, [esp + ecx]
add edx, 0xb
mov dword [esp + 0x28], edx
mov byte [esp + ecx + 0xb], al
jmp 0x409dbc
movzx eax, word [eax + eax + 0x43e528]
lea ecx, [esp + 0xd]
mov dword [esp + 0x28], ecx
mov word [esp + 0xd], ax
lea eax, [esi + 0x10]
push eax
call fcn.00406b70
add esp, 4
mov edi, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xc4], eax
lea ebx, [esp + 0xcb]
push ebx
call fcn.00432fc0
add esp, 4
mov dword [esp + 0x2c], edi
lea eax, [edi + 0x400]
push eax
call fcn.00408a50
add esp, 4
mov edi, eax
mov dword [esp + 0x30], 0xe7e396e0
mov byte [esp + 0x34], 0x14
mov dword [esp + 0x35], 0
mov word [esp + 0x39], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0xa
ja 0x409e6b
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x30]
lea edx, [eax - 0x4d6707ac]
add eax, 0x54
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x10]
add al, 0xb4
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x30], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xb
jb 0x409e30
lea eax, [esp + 0x30]
mov ecx, esi
push ebx
push eax
push edi
call fcn.00409620
mov dword [esp + 0x30], 0x1bb6b088
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0xf
ja 0x409ef0
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x30]
lea edx, [eax + ecx]
add edx, 0x22a49ac
add eax, 0x22a49ac
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x10]
add al, 0x4c
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x30], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x10
jb 0x409eb0
mov ecx, esi
push dword [esp + 0x28]
lea eax, [esp + 0x34]
push eax
push edi
call fcn.00409620
mov eax, dword [str.H8NgCl__]
mov dword [esp + 0x30], 0x1be6e0ec
mov dword [esp + 0x34], 0
mov word [esp + 0x38], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 9
ja 0x409f90
nop
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0x30]
mov ebx, ecx
and ebx, 0xefb21354
xor ecx, 0x6fb21354
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
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x10]
add cl, 0xb4
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x30], cl
mov ecx, dword [esp + 4]
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
cmp ecx, 0xa
jb 0x409f30
mov ecx, esi
push eax
lea eax, [esp + 0x34]
push eax
push edi
call fcn.00409620
mov dword [esp + 0x30], 0x878c84f3
mov dword [esp + 0x34], 0xf483889b
mov dword [esp + 0x38], 0x8e8d88fb
mov byte [esp + 0x3c], 0x6c
mov dword [esp + 0x41], 0
mov dword [esp + 0x3d], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0x14
ja 0x40a028
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x30]
lea edx, [eax + 0xb0]
mov ebx, 0x2d2dc84f
sub ebx, eax
or ebx, ecx
not ecx
or ecx, edx
add ebx, ecx
mov eax, 0xfffffffe
sub eax, ebx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x30
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x30], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x15
jb 0x409fe0
mov dword [esp + 0x10], 0x33a69291
mov dword [esp + 0x14], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 7
ja 0x40a08b
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x10]
lea edx, [eax - 0x4c413af8]
add eax, 8
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esp + 4], edx
mov eax, dword [esp + 4]
add al, 0xc8
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 8
jb 0x40a050
lea edx, [esp + 0x10]
mov ecx, esi
lea eax, [esp + 0x30]
push eax
push edx
push edi
call fcn.00409620
mov dword [esp + 0x30], 0x7c447a78
mov byte [esp + 0x34], 0xd2
mov dword [esp + 0x35], 0
mov dword [esp + 0x38], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0xb
ja 0x40a12b
nop
nop
nop
nop
nop
mov edx, dword [esp + 4]
mov eax, dword [esp + 4]
movzx ebx, byte [esp + eax + 0x30]
lea eax, [edx - 0x243587dd]
lea ecx, [edx + ebx]
add ecx, 0xdbca7823
add edx, 0x23
and edx, ebx
and eax, ebx
add eax, edx
mov edx, eax
xor edx, ecx
not eax
and eax, ecx
add eax, eax
sub eax, edx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov ecx, eax
xor ecx, 0xa
and eax, 0xa
lea eax, [ecx + eax*2]
inc al
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x30], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xc
jb 0x40a0d0
mov ecx, esi
push dword [esp + 0x2c]
push dword [esp + 0xc8]
lea eax, [esp + 0x38]
push eax
push edi
call fcn.004098b0
mov eax, dword [esi + 0x60]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], 0x4b394d03
mov dword [esp + 0x34], 0x572a493a
mov dword [esp + 0x38], 0x53205539
mov dword [esp + 0x3c], 0x5f6b512c
mov dword [esp + 0x40], 0x5b235d00
mov dword [esp + 0x44], 0x670b5928
mov dword [esp + 0x48], 0x63426522
mov dword [esp + 0x4c], 0x6f136115
mov dword [esp + 0x50], 0x6b166d18
mov dword [esp + 0x54], 0x77066901
mov dword [esp + 0x58], 0x730c7515
mov dword [esp + 0x5c], 0x7f4d710c
mov dword [esp + 0x60], 0x7b097d16
mov dword [esp + 0x64], 0x87f37906
mov dword [esp + 0x68], 0x83ee85b1
mov dword [esp + 0x6c], 0x8ff281e1
mov dword [esp + 0x70], 0x8bcd8ded
mov dword [esp + 0x74], 0x97f889a8
mov dword [esp + 0x78], 0x93ef95e7
mov dword [esp + 0x7c], 0x9ff291e2
mov dword [esp + 0x80], 0x9be49dfd
mov dword [esp + 0x84], 0xa7e399e1
mov dword [esp + 0x88], 0xa3cfa5ca
mov dword [esp + 0x8c], 0xaf93a198
mov dword [esp + 0x90], 0xabc7adc0
mov dword [esp + 0x94], 0xb7dfa995
mov dword [esp + 0x98], 0xb3deb5c4
mov dword [esp + 0x9c], 0xbfd1b1c3
mov dword [esp + 0xa0], 0xbbd7bdd5
mov dword [esp + 0xa4], 0xc7b8b9c6
mov dword [esp + 0xa8], 0xc3f3c5a9
mov dword [esp + 0xac], 0xcfd8c1d5
mov word [esp + 0xb0], 0xcdcc
mov byte [esp + 0xba], 0
mov dword [esp + 0xb6], 0
mov dword [esp + 0xb2], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0x8a
ja 0x40a2fc
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0x30]
lea ebx, [ecx - 0x2ec69436]
add ecx, 0xca
and ecx, edx
or ebx, edx
sub ebx, ecx
mov dword [esp + 0x10], ebx
mov ecx, dword [esp + 0x10]
mov edx, ecx
xor edx, 0x79
and ecx, 0x79
lea ecx, [edx + ecx*2]
inc cl
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x30], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0x8b
jb 0x40a2b0
mov dword [esp + 0x10], 0xabcbadff
mov dword [esp + 0x14], 0xd7bfa938
mov word [esp + 0x18], 0xd5d4
mov dword [esp + 0x1a], 0
mov dword [esp + 0x1e], 0
mov byte [esp + 0x22], 0
mov dword [esp + 8], 0
mov ecx, dword [esp + 8]
cmp ecx, 0x12
ja 0x40a3a0
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov edx, dword [esp + 8]
movzx edx, byte [esp + edx + 0x10]
lea ebx, [ecx + 0x10b649ba]
and ebx, edx
lea eax, [ecx + edx]
add eax, 0x10b649ba
add ecx, 0xba
and ecx, edx
add ecx, ebx
mov edx, ecx
xor edx, eax
not ecx
and ecx, eax
add ecx, ecx
sub ecx, edx
mov dword [esp + 4], ecx
mov eax, dword [esp + 4]
mov ecx, eax
xor ecx, 0xe9
and eax, 0x69
lea eax, [ecx + eax*2]
inc al
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x13
jb 0x40a340
push 0x493e0
push dword [esp + 0x30]
push edi
push 0
push 0
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0040d9d0
add esp, 0x1c
mov ebx, eax
push edi
call fcn.00408a60
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