Function at 0x40a460
Capabilities:
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 0x40a4b1
mov esi, ecx
movzx eax, byte [ecx]
mov byte [esp + 0xf], 0
test eax, eax
je 0x40a4b8
cmp al, 0x64
jb 0x40a4c7
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 + 0x440528]
mov word [esp + 0xd], ax
mov ecx, 1
mov eax, edx
jmp 0x40a4d0
mov bl, 1
jmp 0x40ab20
lea eax, [esp + 0xe]
mov dword [esp + 0x28], eax
mov byte [esp + 0xe], 0x30
jmp 0x40a512
mov ecx, 3
cmp al, 9
ja 0x40a4e7
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 0x40a512
mov ecx, eax
and ecx, 2
mov edx, eax
or eax, 2
imul eax, ecx
xor ecx, 2
and edx, 0x7d
imul edx, ecx
movzx eax, word [edx + eax + 0x440528]
lea ecx, [esp + 0xd]
mov dword [esp + 0x28], ecx
mov word [esp + 0xd], ax
lea eax, [esi + 0x10]
push eax
call fcn.00406ff0
add esp, 4
mov edi, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xc4], eax
lea eax, [esp + 0xcb]
push eax
call fcn.004350b0
add esp, 4
mov dword [esp + 0x2c], edi
lea eax, [edi + 0x400]
push eax
call fcn.00409270
add esp, 4
mov edi, eax
mov dword [esp + 0x30], 0xa7a3b6a4
mov byte [esp + 0x34], 8
mov dword [esp + 0x35], 0
mov dword [esp + 0x39], 0
mov word [esp + 0x3d], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0xe
ja 0x40a5d6
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx edx, byte [esp + ecx + 0x30]
lea ecx, [eax + 0x6b16b3aa]
mov ebx, ecx
and ebx, edx
xor ecx, edx
add eax, 0xaa
and eax, edx
add eax, ebx
sub ecx, eax
lea eax, [ecx + ebx*2]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x5a
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x30], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xf
jb 0x40a590
lea ebx, [esp + 0x30]
mov ecx, esi
lea eax, [esp + 0xcb]
push eax
push ebx
push edi
call fcn.00409d50
mov dword [esp + 0x30], 0x8b300a06
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
mov byte [esp + 0x3c], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0xc
ja 0x40a66a
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 + ecx]
add edx, 0xee4bf7ed
add eax, 0xee4bf7ed
and eax, ecx
add eax, eax
mov ecx, eax
xor ecx, edx
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x85
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x30], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xd
jb 0x40a620
mov ecx, esi
push dword [esp + 0x28]
push ebx
push edi
call fcn.00409d50
mov eax, dword [str.BVnUqo___hitok4111]
mov dword [esp + 0x30], 0x33888282
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0xf
ja 0x40a6f7
nop
nop
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0x30]
mov ebx, ecx
and ebx, 0x1cd11a59
xor ecx, 0x1cd11a59
lea ecx, [ecx + ebx*2]
lea ebx, [ecx + edx]
and ecx, edx
add ecx, ecx
sub ebx, ecx
mov dword [esp + 0x10], ebx
mov ecx, dword [esp + 0x10]
add cl, 0x91
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x30], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0x10
jb 0x40a6b0
mov ecx, esi
push eax
lea ebx, [esp + 0x34]
push ebx
push edi
call fcn.00409d50
mov dword [esp + 0x30], 0xe7ece4eb
mov dword [esp + 0x34], 0xe4ebe0f3
mov dword [esp + 0x38], 0xeeedf0e3
mov byte [esp + 0x3c], 0x2c
mov dword [esp + 0x3d], 0
mov dword [esp + 0x41], 0
mov dword [esp + 0x44], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0x17
ja 0x40a790
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, 0xaa0720d4
add eax, 0xaa0720d4
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x10]
add al, 0x34
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x30], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x18
jb 0x40a750
mov dword [esp + 0x10], 0x7b0c1c05
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0xb
ja 0x40a7ff
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 + 0xef]
and edx, ecx
add eax, ecx
add edx, edx
sub eax, edx
add eax, 0x6c1940ef
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x77
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0xc
jb 0x40a7c0
lea eax, [esp + 0x10]
mov ecx, esi
push ebx
push eax
push edi
call fcn.00409d50
mov dword [esp + 0x30], 0xdcc4c2c0
mov byte [esp + 0x34], 0x7a
mov dword [esp + 0x35], 0
mov dword [esp + 0x39], 0
mov word [esp + 0x3d], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0xe
ja 0x40a88f
nop
nop
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 + 0x228ff44f]
and edx, ecx
add eax, ecx
add eax, 0x228ff44f
add edx, edx
sub eax, edx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0xd7
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x30], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xf
jb 0x40a850
mov ecx, esi
push dword [esp + 0x2c]
push dword [esp + 0xc8]
push ebx
push edi
call fcn.00409ff0
mov eax, dword [esi + 0x60]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], 0x8b798d53
mov dword [esp + 0x34], 0x870a897a
mov dword [esp + 0x38], 0x83708579
mov dword [esp + 0x3c], 0x9fab810c
mov dword [esp + 0x40], 0x9b139d70
mov dword [esp + 0x44], 0x976b9968
mov dword [esp + 0x48], 0x93b29552
mov dword [esp + 0x4c], 0xaf239165
mov dword [esp + 0x50], 0xab26ad58
mov dword [esp + 0x54], 0xa756a951
mov dword [esp + 0x58], 0xa32ca545
mov dword [esp + 0x5c], 0xbf8da12c
mov dword [esp + 0x60], 0xbb49bd46
mov dword [esp + 0x64], 0xb743b936
mov dword [esp + 0x68], 0xb34eb581
mov dword [esp + 0x6c], 0x4fc2b151
mov dword [esp + 0x70], 0x4b8d4dad
mov dword [esp + 0x74], 0x47b84968
mov dword [esp + 0x78], 0x43cf45b7
mov dword [esp + 0x7c], 0x5fa241b2
mov dword [esp + 0x80], 0x5bd45dbd
mov dword [esp + 0x84], 0x579359d1
mov dword [esp + 0x88], 0x53af55aa
mov dword [esp + 0x8c], 0x6fa35198
mov dword [esp + 0x90], 0x6b976d90
mov dword [esp + 0x94], 0x679f69a5
mov dword [esp + 0x98], 0x639e6594
mov dword [esp + 0x9c], 0x7f816193
mov dword [esp + 0xa0], 0x7b877d85
mov dword [esp + 0xa4], 0x77f879f6
mov dword [esp + 0xa8], 0x73437589
mov dword [esp + 0xac], 0xf187165
mov word [esp + 0xb0], 0xd0c
mov dword [esp + 0xb5], 0
mov dword [esp + 0xb2], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0x88
ja 0x40aa58
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx eax, byte [esp + edx + 0x30]
lea ebx, [ecx + 0xf9416c2]
mov edx, eax
not edx
or edx, ebx
and ebx, eax
add ebx, edx
neg ebx
lea eax, [ecx + ebx]
add eax, 0xf9416c1
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0xb2
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x30], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x89
jb 0x40aa10
mov dword [esp + 0x10], 0xdb3bd9ef
mov dword [esp + 0x14], 0xe70fe514
mov word [esp + 0x18], 0xe1e0
mov dword [esp + 0x1a], 0
mov dword [esp + 0x1e], 0
mov dword [esp + 0x21], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x14
ja 0x40aae8
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov eax, dword [esp + 8]
movzx eax, byte [esp + eax + 0x10]
lea edx, [ecx + eax]
add edx, 0x7784031c
add ecx, 0x1c
and ecx, eax
add ecx, ecx
mov eax, ecx
xor eax, edx
not ecx
and ecx, edx
add ecx, ecx
sub ecx, eax
mov dword [esp + 4], ecx
mov eax, dword [esp + 4]
add al, 0x3c
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x15
jb 0x40aaa0
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.0040dde0
add esp, 0x1c
mov ebx, eax
push edi
call fcn.00409280
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