Function at 0x40a990
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, 0xfffffff0
sub esp, 0x110
cmp dword [ecx + 0x20], 0
je 0x40b08e
mov esi, ecx
movzx eax, byte [ecx]
mov byte [esp + 0xf], 0
test eax, eax
je 0x40a9e5
cmp al, 0x64
jb 0x40a9f4
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 + 0x23677f4]
mov word [esp + 0xd], ax
mov ecx, 1
mov eax, edx
jmp 0x40a9fd
lea eax, [esp + 0xe]
mov dword [esp + 8], eax
mov byte [esp + 0xe], 0x30
jmp 0x40aa3f
mov ecx, 3
cmp al, 9
ja 0x40aa14
movzx eax, byte [eax + 0x236866b]
lea edx, [esp + ecx]
add edx, 0xb
mov dword [esp + 8], edx
mov byte [esp + ecx + 0xb], al
jmp 0x40aa3f
mov ecx, eax
and ecx, 0x7d
mov edx, eax
and edx, 2
or eax, 2
imul eax, edx
xor edx, 2
imul edx, ecx
movzx eax, word [edx + eax + 0x23677f4]
lea ecx, [esp + 0xd]
mov dword [esp + 8], ecx
mov word [esp + 0xd], ax
lea eax, [esi + 0x10]
push eax
call fcn.00407760
add esp, 4
mov edi, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xe4], eax
lea ebx, [esp + 0xeb]
push ebx
call fcn.0042f8b0
add esp, 4
mov dword [esp + 0x3c], edi
lea eax, [edi + 0x800]
push eax
call fcn.00409640
add esp, 4
mov edi, eax
mov dword [esp + 0x44], 0
mov byte [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], 0x7f7b487e
mov byte [esp + 0x44], 0xd2
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x18
ja 0x40aaf5
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
add al, 0x23
xor al, byte [esp + ecx + 0x40]
add al, 0xb
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x19
jb 0x40aad0
lea eax, [esp + 0x40]
mov ecx, esi
push ebx
push eax
push edi
call fcn.0040a130
mov word [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0xbb5c5226
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x11
ja 0x40ab77
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax + 0x140e9e7]
and edx, ecx
add eax, ecx
add eax, 0x140e9e7
add edx, edx
sub eax, edx
add al, 0xaf
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x12
jb 0x40ab40
mov ecx, esi
push dword [esp + 8]
lea eax, [esp + 0x44]
push eax
mov dword [esp + 0x10], edi
push edi
call fcn.0040a130
mov eax, dword [0x2369430]
mov dword [esp + 0x57], 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], 0x23bcbab2
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0x10]
cmp ecx, 0x1a
ja 0x40ac2b
nop
nop
nop
nop
nop
nop
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx edi, byte [esp + ecx + 0x40]
lea ecx, [ebx + 0x41aaa55b]
lea edx, [ebx + edi]
add edx, 0x41aaa55b
add ebx, 0x5b
or ecx, ebx
and ebx, edi
and ecx, edi
add ecx, ebx
mov edi, edx
not edi
and edi, ecx
not ecx
and ecx, edx
sub ecx, edi
add cl, 0x83
mov edx, dword [esp + 0x10]
mov byte [esp + edx + 0x40], cl
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
cmp ecx, 0x1b
jb 0x40abe0
mov ecx, esi
push eax
lea eax, [esp + 0x44]
push eax
mov edi, dword [esp + 0x10]
push edi
call fcn.0040a130
mov dword [esp + 0x40], 0xbfb6becb
mov dword [esp + 0x44], 0xd2a3aaa3
mov dword [esp + 0x48], 0xa4a1bad3
mov byte [esp + 0x4c], 0x5a
mov dword [esp + 0x4d], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x10
ja 0x40acb8
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, 0x958ed0b
add ecx, 0x958ed0b
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0xb3
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x11
jb 0x40ac80
mov word [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 + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0x15
ja 0x40ad25
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
add al, 0xf
xor al, byte [esp + ecx + 0x10]
add al, 0x97
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x16
jb 0x40ad00
lea edx, [esp + 0x10]
mov ecx, esi
lea eax, [esp + 0x40]
push eax
push edx
push edi
call fcn.0040a130
mov dword [esp + 0x40], 0x3c343a38
mov byte [esp + 0x44], 0x42
mov dword [esp + 0x45], 0
mov dword [esp + 0x49], 0
mov dword [esp + 0x4d], 0
mov word [esp + 0x51], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x12
ja 0x40add2
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 edi, [ecx - 0x4c7d8f35]
lea eax, [ecx + edx]
add eax, 0xb38270cb
mov ebx, edx
not ebx
or ebx, edi
add ebx, edx
add ecx, 0xcb
and ecx, edx
add ecx, ebx
inc ecx
mov edx, eax
not edx
and edx, ecx
not ecx
and ecx, eax
sub ecx, edx
add cl, 0x73
mov eax, dword [esp + 0x10]
mov byte [esp + eax + 0x40], cl
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x13
jb 0x40ad80
mov ecx, esi
push dword [esp + 0x3c]
push dword [esp + 0xe8]
lea eax, [esp + 0x48]
push eax
push dword [esp + 0x14]
call fcn.0040a460
mov eax, dword [esi + 0x60]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], 0xab15a563
mov dword [esp + 0x44], 0xaf1ca918
mov dword [esp + 0x48], 0xb31ead05
mov dword [esp + 0x4c], 0xb743b106
mov dword [esp + 0x50], 0xbb0bb562
mov dword [esp + 0x54], 0xbf13b90a
mov dword [esp + 0x58], 0x835cbd40
mov dword [esp + 0x5c], 0x873b8131
mov dword [esp + 0x60], 0x8b30852a
mov dword [esp + 0x64], 0x8f388925
mov dword [esp + 0x68], 0x933a8d29
mov dword [esp + 0x6c], 0x97619126
mov dword [esp + 0x70], 0x9b25953c
mov dword [esp + 0x74], 0x9f2b992c
mov dword [esp + 0x78], 0x63389d6d
mov dword [esp + 0x7c], 0x67d461c5
mov dword [esp + 0x80], 0x6b9965c1
mov dword [esp + 0x84], 0x6fce698a
mov dword [esp + 0x88], 0x73d76ddf
mov dword [esp + 0x8c], 0x77d471c0
mov dword [esp + 0x90], 0x7bc275d1
mov dword [esp + 0x94], 0x7fbb79c5
mov dword [esp + 0x98], 0x43d77dd8
mov dword [esp + 0x9c], 0x47bb41ba
mov dword [esp + 0xa0], 0x4bef45e2
mov dword [esp + 0xa4], 0x4fe749b1
mov dword [esp + 0xa8], 0x53e84dfe
mov dword [esp + 0xac], 0x57f551e3
mov dword [esp + 0xb0], 0x5bff55f9
mov dword [esp + 0xb4], 0x5fee59ec
mov dword [esp + 0xb8], 0x23ab5df5
mov dword [esp + 0xbc], 0x272e2131
mov word [esp + 0xc0], 0x2526
mov byte [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, 0x96
ja 0x40afcd
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx edi, byte [esp + ecx + 0x40]
lea ecx, [edx + edi]
add ecx, 0x4d660445
add edx, 0x4d660445
and edx, edi
add edx, edx
sub ecx, edx
add cl, 0x1d
mov edx, dword [esp + 0x10]
mov byte [esp + edx + 0x40], cl
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
cmp ecx, 0x97
jb 0x40af90
mov dword [esp + 0x10], 0x33d3310f
mov dword [esp + 0x14], 0x37cf35c4
mov word [esp + 0x18], 0xc9c8
mov dword [esp + 0x1a], 0
mov dword [esp + 0x1e], 0
mov dword [esp + 0x22], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0x15
ja 0x40b05a
nop
nop
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0x10]
lea ebx, [ecx + 0x2c2fb9f8]
mov edi, edx
not edi
or edi, ebx
lea eax, [edx + edi]
inc eax
and ebx, edx
mov edi, eax
and edi, ebx
xor ebx, eax
add ecx, edx
add ecx, 0x2c2fb9f8
lea eax, [ebx + edi*2]
sub ecx, eax
add cl, 0x38
mov eax, dword [esp + 4]
mov byte [esp + eax + 0x10], cl
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x16
jb 0x40b010
push 0x493e0
push dword [esp + 0x40]
mov edi, dword [esp + 0x10]
push edi
push 0
push 0
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0040f0d0
add esp, 0x1c
push edi
call fcn.00409650
add esp, 4
mov dword [esi + 0x60], 0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret