Function at 0x409ac0
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, 0x10c
cmp dword [ecx + 0x20], 0
je 0x409f6f
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.00406200
add esp, 4
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xc], eax
movzx eax, byte [esi]
imul ecx, eax, 0xcd
shr ecx, 0xa
and ecx, 0xfffffffe
lea ecx, [ecx + ecx*4]
sub al, cl
movzx eax, al
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [esp + 6], al
mov byte [esp + 7], 0
mov dword [esp + 8], edx
lea eax, [edx + 0x400]
push eax
call fcn.004083e0
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x70], 0x4d45b24c
mov byte [esp + 0x74], 0x28
mov dword [esp + 0x75], 0
mov word [esp + 0x79], 0
mov eax, 0x37
nop
nop
nop
movzx edx, byte [esp + eax + 0x39]
lea ecx, [eax - 0x7cd31300]
mov edi, edx
not edi
and edi, ecx
xor ecx, edx
and edx, eax
sub ecx, edx
sub ecx, edi
lea edx, [eax + ecx]
add edx, edx
mov edi, 0x8e2a20fe
sub edi, edx
add ecx, eax
add ecx, 0xb8eaf000
xor ecx, 0xec
or edi, 0x27
sub ecx, edi
mov byte [esp + eax + 0x39], cl
inc eax
cmp eax, 0x42
jne 0x409b50
lea ebx, [esp + 0x70]
mov ecx, esi
push 0x44ba30
push ebx
push dword [esp + 8]
call fcn.00409340
mov dword [esp + 0x70], 0x69cec4f4
mov word [esp + 0x74], 0
mov byte [esp + 0x76], 0
mov eax, 0x481ea797
movzx edx, byte [esp + eax - 0x481ea727]
xor edx, eax
lea ecx, [edx + edx]
mov edi, ecx
and edi, 0xd4418
xor edx, 0x9766ba0c
mov ebp, edi
and ebp, edx
xor edx, edi
lea edx, [edx + ebp*2]
and ecx, 2
xor edx, 1
add edx, ecx
mov byte [esp + eax - 0x481ea727], dl
inc eax
cmp eax, 0x481ea79e
jne 0x409bc0
lea eax, [esp + 6]
mov ecx, esi
push eax
push ebx
push dword [esp + 8]
call fcn.00409340
mov edi, dword [str.Dvh8ui__n9]
mov dword [esp + 0x70], 0x33ded8c4
xor ecx, ecx
mov edx, 0x8b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ecx + 0x70]
mov ebp, ecx
or ebp, eax
or ebp, 0x74
not eax
or eax, edx
and eax, ebp
add al, 0xbc
mov byte [esp + ecx + 0x70], al
inc ecx
dec edx
cmp ecx, 4
jne 0x409c30
mov ecx, esi
push edi
push ebx
push dword [esp + 8]
call fcn.00409340
mov dword [esp + 0x70], 0x2b3c2c3f
mov dword [esp + 0x74], 0x3427302f
mov dword [esp + 0x78], 0x223d2037
mov byte [esp + 0x7c], 0x84
mov dword [esp + 0x7d], 0
mov word [esp + 0x81], 0
xor eax, eax
nop
nop
nop
movzx edx, byte [esp + eax + 0x70]
lea edi, [eax + 0x67df1022]
mov ecx, 0xdd
sub ecx, eax
xor ecx, edi
and ecx, edx
xor ecx, edi
add ecx, 0x62d05c15
mov edx, ecx
xor edx, 0xc0
and ecx, 0x3f
add ecx, ecx
sub ecx, edx
inc cl
mov byte [esp + eax + 0x70], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x13
jb 0x409c90
mov dword [esp + 0x10], 0x21aa9a87
xor eax, eax
nop
nop
nop
movzx edx, byte [esp + eax + 0x10]
lea ecx, [eax + 0x89]
lea edi, [edx + edx]
not edi
add edi, edx
and edi, ecx
mov ecx, 0x76
sub ecx, eax
and ecx, edx
or ecx, edi
add cl, 0x53
mov byte [esp + eax + 0x10], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 4
jb 0x409ce0
lea ebp, [esp + 0x10]
mov ecx, esi
push ebx
push ebp
push dword [esp + 8]
call fcn.00409340
mov dword [esp + 0x70], 0x206040e
mov byte [esp + 0x74], 0xe8
mov dword [esp + 0x75], 0
xor eax, eax
nop
nop
mov edx, eax
and edx, 9
xor edx, 0xd9
mov ecx, eax
and ecx, 6
sub ecx, edx
xor cl, byte [esp + eax + 0x70]
add cl, 0x3d
mov byte [esp + eax + 0x70], cl
inc eax
cmp eax, 9
jne 0x409d40
mov ecx, esi
push dword [esp + 8]
push dword [esp + 0x10]
push ebx
push dword [esp + 0xc]
call fcn.00409620
mov dword [esp + 0x10], 0xe37de1a3
mov dword [esp + 0x14], 0xe772e57a
mov dword [esp + 0x18], 0xdb44d97d
mov dword [esp + 0x1c], 0xdf83dd48
mov dword [esp + 0x20], 0xd35bd164
mov dword [esp + 0x24], 0xd773d544
mov dword [esp + 0x28], 0xcbaac982
mov dword [esp + 0x2c], 0xcf5bcd51
mov dword [esp + 0x30], 0xc356c15c
mov dword [esp + 0x34], 0xc756c55d
mov dword [esp + 0x38], 0x3ba83999
mov dword [esp + 0x3c], 0x3f613da8
mov dword [esp + 0x40], 0x33ad3196
mov dword [esp + 0x44], 0x37ab35a6
mov dword [esp + 0x48], 0x2b8e2975
mov dword [esp + 0x4c], 0x2fba2d8d
mov dword [esp + 0x50], 0x23692181
mov dword [esp + 0x54], 0x27842544
mov dword [esp + 0x58], 0x1b8f1987
mov dword [esp + 0x5c], 0x1fba1d82
mov dword [esp + 0x60], 0x138011b1
mov dword [esp + 0x64], 0x175b159d
mov word [esp + 0x68], 0x908
mov word [esp + 0x6e], 0
mov dword [esp + 0x6a], 0
xor eax, eax
nop
mov ecx, eax
add cl, 0x58
xor cl, byte [esp + eax + 0x10]
add cl, 0x48
mov byte [esp + eax + 0x10], cl
inc eax
cmp eax, 0x60
jne 0x409e40
movzx eax, word [esp + 0x10]
test ax, ax
je 0x409e81
lea ebx, [esp + 0x70]
lea ecx, [esp + 0x12]
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x409e70
mov word [ebx], 0
movzx ecx, byte [esi + 0x60]
test cl, cl
je 0x409eb1
lea eax, [esi + 0x61]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ecx, cl
mov word [ebx], cx
add ebx, 2
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x409ea0
mov dword [ebx], 0xa000d
mov word [ebx + 4], 0
mov eax, dword [esi + 0x80]
mov dword [esp + 8], eax
mov dword [esp + 0x10], 0x9750b3d
mov dword [esp + 0x14], 0x5710778
mov word [esp + 0x18], 0x304
mov dword [esp + 0x1a], 0
mov byte [esp + 0x1e], 0
mov ecx, 0xb7399fc
movzx eax, byte [ebp]
lea edx, [ecx - 0xb739900]
or edx, eax
lea edi, [eax + eax]
not edi
add edi, eax
mov ebx, ecx
or ebx, eax
and eax, 0xffffff9f
and edi, 0x60
or edi, eax
xor edi, ecx
not ebx
or ebx, edi
xor ebx, 0x60
and ebx, edx
mov al, 0xf0
sub al, bl
mov byte [ebp], al
inc ebp
dec ecx
cmp ecx, 0xb7399ed
jne 0x409ef0
lea eax, [esp + 0x70]
lea ecx, [esp + 0x10]
push 0x493e0
push dword [esp + 0xc]
mov edi, dword [esp + 8]
push edi
push 0
push 0
push eax
push ecx
call fcn.0040c450
add esp, 0x1c
mov ebx, eax
push edi
call fcn.004083f0
add esp, 4
mov eax, dword [esi + 0x80]
add dword [esi + 4], eax
mov dword [esi + 0x80], 0
jmp 0x409f71
mov bl, 1
mov eax, ebx
add esp, 0x10c
pop esi
pop edi
pop ebx
pop ebp
ret