Function at 0x40a660
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 0x40a6c7
mov esi, ecx
movzx eax, byte [ecx]
mov byte [esp + 0xf], 0
test eax, eax
je 0x40a6ce
cmp al, 0x64
jb 0x40a6dd
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 + 0x43e528]
mov word [esp + 0xd], ax
mov edx, 1
mov eax, ecx
jmp 0x40a6e6
mov bl, 1
jmp 0x40ad3f
lea eax, [esp + 0xe]
mov dword [esp + 0x28], eax
mov byte [esp + 0xe], 0x30
jmp 0x40a712
mov edx, 3
cmp al, 9
ja 0x40a6fd
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
lea ecx, [esp + edx]
add ecx, 0xb
mov dword [esp + 0x28], ecx
mov byte [esp + edx + 0xb], al
jmp 0x40a712
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.00407310
add esp, 4
mov edi, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xc0], eax
lea ebx, [esp + 0xcb]
push ebx
call fcn.00433fa0
add esp, 4
mov dword [esp + 0xc4], edi
lea eax, [edi + 0x400]
push eax
call fcn.00409390
add esp, 4
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], 0x676b7668
mov byte [esp + 0x34], 0xc4
mov dword [esp + 0x35], 0
mov dword [esp + 0x39], 0
mov byte [esp + 0x3d], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0xd
ja 0x40a7d6
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x30]
mov edx, eax
and edx, 0x2e767f20
xor eax, 0xae767f20
lea eax, [eax + edx*2]
mov edx, eax
and edx, ecx
add eax, ecx
add edx, edx
sub eax, edx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x20
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x30], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xe
jb 0x40a790
lea eax, [esp + 0x30]
mov ecx, esi
push ebx
push eax
push dword [esp + 0x34]
call fcn.00409f60
mov dword [esp + 0x30], 0xbb5c5226
mov dword [esp + 0x34], 0
mov word [esp + 0x38], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 9
ja 0x40a85f
nop
mov edx, dword [esp + 4]
mov eax, dword [esp + 4]
movzx ebx, byte [esp + eax + 0x30]
lea eax, [edx + 0x633467e7]
mov ecx, eax
and ecx, ebx
xor eax, ebx
mov edi, 0x9ccb9818
sub edi, edx
or edi, ebx
add edi, edx
add edi, ecx
sub eax, edi
lea eax, [eax + ecx*2]
add eax, 0x9ccb9818
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0xaf
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x30], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xa
jb 0x40a810
mov ecx, esi
push dword [esp + 0x28]
lea eax, [esp + 0x34]
push eax
mov ebx, dword [esp + 0x34]
push ebx
call fcn.00409f60
mov eax, dword [str.iAlMAC__ghost]
mov dword [esp + 0x30], 0x6306080c
mov dword [esp + 0x34], 0
mov word [esp + 0x38], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 9
ja 0x40a8fb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx edi, byte [esp + ecx + 0x30]
lea ecx, [edx + 0x4d729d70]
and ecx, edi
add edx, edi
add edx, 0x4d729d70
add ecx, ecx
mov edi, ecx
xor edi, edx
not ecx
and ecx, edx
add ecx, ecx
sub ecx, edi
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x10]
add cl, 0xf0
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x30], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0xa
jb 0x40a8b0
mov ecx, esi
push eax
lea eax, [esp + 0x34]
push eax
push ebx
call fcn.00409f60
mov dword [esp + 0x30], 0x9f969ea3
mov dword [esp + 0x34], 0xaa9b929b
mov dword [esp + 0x38], 0x848982ab
mov byte [esp + 0x3c], 0x22
mov dword [esp + 0x3d], 0
mov byte [esp + 0x41], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0x11
ja 0x40a98f
nop
nop
nop
nop
nop
nop
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 + 0x87]
and edx, ecx
add eax, ecx
add edx, edx
sub eax, edx
add eax, 0xc6301b87
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x4f
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x30], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x12
jb 0x40a950
mov dword [esp + 0x10], 0x33b88889
mov dword [esp + 0x14], 0
mov dword [esp + 0x17], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0xa
ja 0x40a9ff
nop
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 + 0xd9]
and edx, ecx
add eax, ecx
add edx, edx
sub eax, edx
add eax, 0xd6fe96d9
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x11
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0xb
jb 0x40a9c0
lea edx, [esp + 0x10]
mov ecx, esi
lea eax, [esp + 0x30]
push eax
push edx
push ebx
call fcn.00409f60
mov dword [esp + 0x30], 0x360e3036
mov byte [esp + 0x34], 0x84
mov word [esp + 0x35], 0
mov byte [esp + 0x37], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 7
ja 0x40aa91
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x30]
lea edx, [eax + 0xd4b5f6c]
lea edi, [eax + 0x6c]
or edx, edi
and edi, ecx
and edx, ecx
add edx, edi
add eax, ecx
add eax, 0xd4b5f6c
sub eax, edx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov ecx, eax
xor ecx, 0xb
and eax, 0xb
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, 8
jb 0x40aa40
mov ecx, esi
push dword [esp + 0xc4]
push dword [esp + 0xc4]
lea eax, [esp + 0x38]
push eax
push ebx
call fcn.0040a220
mov eax, dword [esi + 0x60]
mov dword [esp + 0x30], 0xeba5d593
mov dword [esp + 0x34], 0xef9ce998
mov dword [esp + 0x38], 0xe39eed95
mov dword [esp + 0x3c], 0xe7d3e196
mov dword [esp + 0x40], 0xfb6be5b2
mov dword [esp + 0x44], 0xff83f98a
mov dword [esp + 0x48], 0xf3dcfdb0
mov dword [esp + 0x4c], 0xf77bf181
mov dword [esp + 0x50], 0xb80f58a
mov dword [esp + 0x54], 0xf780975
mov dword [esp + 0x58], 0x37a0d69
mov dword [esp + 0x5c], 0x7310176
mov dword [esp + 0x60], 0x1b75057c
mov dword [esp + 0x64], 0x1f6b196c
mov dword [esp + 0x68], 0x13781d2d
mov dword [esp + 0x6c], 0x17641175
mov dword [esp + 0x70], 0x2b591571
mov dword [esp + 0x74], 0x2f4e290a
mov dword [esp + 0x78], 0x23a72d5f
mov dword [esp + 0x7c], 0x27442150
mov dword [esp + 0x80], 0x3b522541
mov dword [esp + 0x84], 0x3f7b39b5
mov dword [esp + 0x88], 0x33473d58
mov dword [esp + 0x8c], 0x377b317a
mov dword [esp + 0x90], 0x4b4f3552
mov dword [esp + 0x94], 0x4f374901
mov dword [esp + 0x98], 0x43284d3e
mov dword [esp + 0x9c], 0x47254133
mov dword [esp + 0xa0], 0x5b3f4539
mov dword [esp + 0xa4], 0x5f2e592c
mov dword [esp + 0xa8], 0x536b5d25
mov dword [esp + 0xac], 0x574e5141
mov word [esp + 0xb0], 0x5556
mov word [esp + 0xbe], 0
mov dword [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, 0x8f
ja 0x40ac6f
nop
nop
nop
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0x30]
lea edi, [ecx + 0xdd]
and edi, edx
add ecx, 0x21059bdd
or ecx, edx
sub ecx, edi
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x10]
mov edx, ecx
xor edx, 0xf4
and ecx, 0x74
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, 0x90
jb 0x40ac20
mov dword [esp + 0x10], 0x6bcb6d3f
mov dword [esp + 0x14], 0x67ff69f8
mov word [esp + 0x18], 0x6564
mov dword [esp + 0x1a], 0
mov dword [esp + 0x1e], 0
mov dword [esp + 0x22], 0
mov byte [esp + 0x26], 0
mov dword [esp + 8], 0
mov ecx, dword [esp + 8]
cmp ecx, 0x16
ja 0x40ad08
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov edx, dword [esp + 8]
movzx edx, byte [esp + edx + 0x10]
mov edi, ecx
and edi, 0xc5def652
xor ecx, 0xc5def652
lea ecx, [ecx + edi*2]
mov edi, ecx
and edi, edx
add ecx, edx
add edi, edi
sub ecx, edi
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0xc2
mov edx, dword [esp + 8]
mov byte [esp + edx + 0x10], cl
inc dword [esp + 8]
mov ecx, dword [esp + 8]
cmp ecx, 0x17
jb 0x40acc0
push 0x493e0
push eax
push ebx
push 0
push 0
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0040e800
add esp, 0x1c
mov ecx, ebx
mov ebx, eax
push ecx
call fcn.004093a0
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