Function at 0x409960
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 0x4099c7
mov esi, ecx
movzx eax, byte [ecx]
mov byte [esp + 0xf], 0
test eax, eax
je 0x4099ce
cmp al, 0x64
jb 0x4099dd
lea ecx, [eax + eax*4]
lea ecx, [eax + ecx*8]
movzx ecx, cx
shr ecx, 0xc
imul edx, ecx, 0x64
sub al, dl
movzx eax, al
mov edx, eax
and edx, 0x7d
mov edi, eax
and edi, 2
or eax, 2
imul eax, edi
xor edi, 2
imul edi, edx
movzx eax, word [edi + eax + 0x43d438]
mov word [esp + 0xd], ax
mov edx, 1
mov eax, ecx
jmp 0x4099e6
mov bl, 1
jmp 0x40a0c9
lea eax, [esp + 0xe]
mov dword [esp + 0x3c], eax
mov byte [esp + 0xe], 0x30
jmp 0x409a12
mov edx, 3
cmp al, 9
ja 0x4099fd
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
lea ecx, [esp + edx]
add ecx, 0xb
mov dword [esp + 0x3c], ecx
mov byte [esp + edx + 0xb], al
jmp 0x409a12
movzx eax, word [eax + eax + 0x43d438]
lea ecx, [esp + 0xd]
mov dword [esp + 0x3c], ecx
mov word [esp + 0xd], ax
lea eax, [esi + 0x10]
push eax
call fcn.004067b0
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.004336f0
add esp, 4
mov dword [esp + 0xe4], edi
lea eax, [edi + 0x800]
push eax
call fcn.00435440
add esp, 4
mov edi, eax
mov dword [esp + 0x44], 0
mov word [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], 0xefeb9cee
mov byte [esp + 0x44], 0xa
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x19
ja 0x409ae8
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, 0xabb0ce55
add ecx, 0xabb0ce55
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0xad
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x1a
jb 0x409ab0
lea eax, [esp + 0x40]
mov ecx, esi
push ebx
push eax
push edi
call fcn.004091c0
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], 0x33968880
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x1c
ja 0x409b96
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, 0xe19a6a58
add ecx, 0xe19a6a58
and ecx, edx
add ecx, ecx
sub eax, ecx
mov ecx, eax
xor ecx, 0x97
and eax, 0x17
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, 0x1d
jb 0x409b50
mov ecx, esi
push dword [esp + 0x3c]
lea eax, [esp + 0x44]
push eax
push edi
call fcn.004091c0
mov eax, dword [str.swg5EG__]
mov word [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], 0x3b5c525a
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0x10]
cmp ecx, 0x1d
ja 0x409c30
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x10]
movzx edx, byte [esp + edx + 0x40]
lea ebx, [ecx + 0x27]
add ecx, edx
and ebx, edx
add ebx, ebx
sub ecx, ebx
add cl, 0x16
mov edx, dword [esp + 0x10]
mov byte [esp + edx + 0x40], cl
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
cmp ecx, 0x1e
jb 0x409c00
mov ecx, esi
push eax
lea eax, [esp + 0x44]
push eax
push edi
call fcn.004091c0
mov dword [esp + 0x40], 0x676c6473
mov dword [esp + 0x44], 0x7463685b
mov dword [esp + 0x48], 0x6e6d687b
mov byte [esp + 0x4c], 0xc
mov dword [esp + 0x4d], 0
mov dword [esp + 0x51], 0
mov dword [esp + 0x55], 0
mov dword [esp + 0x59], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x1c
ja 0x409cbb
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
movzx edx, byte [esp + eax + 0x40]
lea eax, [ecx + edx]
and ecx, edx
add ecx, ecx
sub eax, ecx
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x1d
jb 0x409c90
mov byte [esp + 0x2c], 0
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], 0x7bccdcc5
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x1c
ja 0x409d4d
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x10]
add eax, 0xfffa5acf
mov edx, eax
and edx, ecx
mov ebx, eax
xor ebx, ecx
or eax, ecx
xor eax, ebx
lea ecx, [ebx + edx*2]
add eax, edx
sub ecx, eax
add cl, 0x57
mov eax, dword [esp + 8]
mov byte [esp + eax + 0x10], cl
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x1d
jb 0x409d10
lea edx, [esp + 0x10]
mov ecx, esi
lea eax, [esp + 0x40]
push eax
push edx
push edi
call fcn.004091c0
mov dword [esp + 0x44], 0
mov word [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], 0xdcd4d2d0
mov byte [esp + 0x44], 0xba
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x1d
ja 0x409df8
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, 0x81a84937
add ecx, 0x81a84937
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0x7f
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x1e
jb 0x409dc0
mov ecx, esi
push dword [esp + 0xe4]
push dword [esp + 0xe4]
lea eax, [esp + 0x48]
push eax
push edi
call fcn.00409480
mov eax, dword [esi + 0x60]
mov dword [esp + 0x40], 0xb32db173
mov dword [esp + 0x44], 0xb722b52a
mov dword [esp + 0x48], 0xab34a94d
mov dword [esp + 0x4c], 0xaf73ad38
mov dword [esp + 0x50], 0xa32ba154
mov dword [esp + 0x54], 0xa743a534
mov dword [esp + 0x58], 0x5b7a5992
mov dword [esp + 0x5c], 0x5fcb5dc1
mov dword [esp + 0x60], 0x53c651cc
mov dword [esp + 0x64], 0x57c655cd
mov dword [esp + 0x68], 0x4bd849a9
mov dword [esp + 0x6c], 0x4f914dd8
mov dword [esp + 0x70], 0x43dd41a6
mov dword [esp + 0x74], 0x47db45d6
mov dword [esp + 0x78], 0x7b9e79a5
mov dword [esp + 0x7c], 0x7fea7d9d
mov dword [esp + 0x80], 0x73b97191
mov dword [esp + 0x84], 0x77947554
mov dword [esp + 0x88], 0x6bff69f7
mov dword [esp + 0x8c], 0x6f8a6df2
mov dword [esp + 0x90], 0x63f06181
mov dword [esp + 0x94], 0x67ab65ed
mov dword [esp + 0x98], 0x1bff19fa
mov dword [esp + 0x9c], 0x1fcb1dd4
mov dword [esp + 0xa0], 0x13f711f4
mov dword [esp + 0xa4], 0x178f15c1
mov dword [esp + 0xa8], 0xbee0998
mov dword [esp + 0xac], 0xfed0d93
mov dword [esp + 0xb0], 0x3e70199
mov dword [esp + 0xb4], 0x7940596
mov dword [esp + 0xb8], 0x3beb39dd
mov dword [esp + 0xbc], 0x3f043d01
mov word [esp + 0xc0], 0x3130
mov dword [esp + 0xda], 0
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, 0x9d
ja 0x40a002
nop
nop
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, 0x10b009e8
xor ecx, 0x90b009e8
lea ebx, [ecx + ebx*2]
lea ecx, [ebx + edx]
and ebx, edx
add ebx, ebx
sub ecx, ebx
add cl, 0xa8
mov edx, dword [esp + 0x10]
mov byte [esp + edx + 0x40], cl
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
cmp ecx, 0x9e
jb 0x409fc0
mov dword [esp + 0x10], 0xbbdbb987
mov dword [esp + 0x14], 0xbfd7bdca
mov word [esp + 0x18], 0xc1be
mov dword [esp + 0x1a], 0
mov dword [esp + 0x1e], 0
mov dword [esp + 0x22], 0
mov dword [esp + 0x26], 0
mov dword [esp + 8], 0
mov ecx, dword [esp + 8]
cmp ecx, 0x19
ja 0x40a094
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov edx, dword [esp + 8]
movzx ebx, byte [esp + edx + 0x10]
lea edx, [ecx + ebx]
add edx, 0x9bbee637
add ecx, 0x9bbee637
and ecx, ebx
add ecx, ecx
mov ebx, edx
not ebx
and ebx, ecx
not ecx
and ecx, edx
sub ecx, ebx
add cl, 0x7f
mov edx, dword [esp + 8]
mov byte [esp + edx + 0x10], cl
inc dword [esp + 8]
mov ecx, dword [esp + 8]
cmp ecx, 0x1a
jb 0x40a050
push 0x493e0
push eax
push edi
push 0
push 0
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0040d380
add esp, 0x1c
mov ebx, eax
push edi
call fcn.004087a0
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