Function at 0x40a648
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xd0
cmp dword [ecx + 0x20], 0
je 0x40a6a7
mov esi, ecx
movzx eax, byte [ecx]
mov byte [esp + 0xb], 0
test eax, eax
je 0x40a6ae
cmp al, 0x64
jb 0x40a6b9
lea ecx, [eax + eax*4]
lea ecx, [eax + ecx*8]
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 + 0x43a318]
mov word [esp + 9], ax
mov edx, 0xfffffffd
mov eax, ecx
jmp 0x40a6c2
mov bl, 1
jmp 0x40abfc
lea ebx, [esp + 0xa]
mov byte [esp + 0xa], 0x30
jmp 0x40a6e8
mov edx, 0xffffffff
cmp al, 9
ja 0x40a6d7
lea ecx, [esp + 0xc]
movzx eax, byte [eax + 0x43b3b9]
lea ebx, [ecx + edx]
dec ebx
mov byte [esp + edx + 0xb], al
jmp 0x40a6e8
movzx eax, word [eax + eax + 0x43a318]
lea ebx, [esp + 9]
mov word [esp + 9], ax
lea eax, [esi + 0x10]
push eax
call fcn.004075a8
add esp, 4
mov edi, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x1c], eax
lea ebp, [esp + 0xaf]
push ebp
call fcn.0042f7d8
add esp, 4
mov dword [esp + 0x20], edi
lea eax, [edi + 0x400]
push eax
call fcn.00409648
add esp, 4
mov edi, eax
mov dword [esp + 0x24], 0xb5a5b6a4
mov byte [esp + 0x28], 0x50
mov dword [esp + 0x29], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 8
ja 0x40a786
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x24]
add eax, 0xf25b400d
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xbf
mov ecx, dword [esp]
mov byte [esp + ecx + 0x24], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 9
jb 0x40a758
lea eax, [esp + 0x24]
mov ecx, esi
push ebp
mov ebp, eax
push eax
push edi
call fcn.0040a008
mov dword [esp + 0x24], 0x23869890
mov dword [esp + 0x28], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 7
ja 0x40a7fd
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x24]
lea edx, [eax + ecx]
add edx, 0x2426208
add eax, 0x2426208
and eax, ecx
mov ecx, edx
xor ecx, eax
add ecx, eax
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xd8
mov ecx, dword [esp]
mov byte [esp + ecx + 0x24], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 8
jb 0x40a7b8
mov ecx, esi
push ebx
push ebp
push edi
call fcn.0040a008
mov eax, dword [0x43c890]
mov dword [esp + 0x24], 0x9767c78
mov dword [esp + 0x28], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 7
ja 0x40a875
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x24]
lea ebx, [ecx + edx]
add ebx, 0xd191e983
add ecx, 0xd191e983
and ecx, edx
add ecx, ecx
sub ebx, ecx
mov dword [esp + 0xc], ebx
mov ecx, dword [esp + 0xc]
add cl, 0x71
mov edx, dword [esp]
mov byte [esp + edx + 0x24], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 8
jb 0x40a838
mov ecx, esi
push eax
push ebp
push edi
call fcn.0040a008
mov dword [esp + 0x24], 0xa7aca4d3
mov dword [esp + 0x28], 0xd4a3a8bb
mov dword [esp + 0x2c], 0xaeada8db
mov byte [esp + 0x30], 0x4c
mov dword [esp + 0x31], 0
mov dword [esp + 0x34], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x13
ja 0x40a8f6
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x24]
add eax, 0x9fa79f90
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x30
mov ecx, dword [esp]
mov byte [esp + ecx + 0x24], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x14
jb 0x40a8c8
mov dword [esp + 4], 0x33be9291
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 3
ja 0x40a956
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 4]
lea edx, [eax + ecx]
add edx, 0xcbfab64c
add eax, 0xcbfab64c
not ecx
or eax, ecx
sub ecx, eax
lea eax, [edx + ecx*2]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x84
mov ecx, dword [esp]
mov byte [esp + ecx + 4], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 4
jb 0x40a918
lea eax, [esp + 4]
mov ecx, esi
push ebp
push eax
push edi
call fcn.0040a008
mov dword [esp + 0x24], 0xaea6a8ae
mov byte [esp + 0x28], 0xec
mov dword [esp + 0x29], 0
mov word [esp + 0x2d], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xa
ja 0x40a9c6
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x24]
add eax, 0x15cc5c7c
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x94
mov ecx, dword [esp]
mov byte [esp + ecx + 0x24], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xb
jb 0x40a998
mov ecx, esi
push dword [esp + 0x20]
push dword [esp + 0x20]
push ebp
push edi
call fcn.0040a288
mov eax, dword [esi + 0x60]
mov dword [esp + 0x24], 0x996b9b51
mov dword [esp + 0x28], 0xa55aa76a
mov dword [esp + 0x2c], 0xa150a34f
mov dword [esp + 0x30], 0xad9daf5c
mov dword [esp + 0x34], 0xa92dab70
mov dword [esp + 0x38], 0xb55db758
mov dword [esp + 0x3c], 0xb192b372
mov dword [esp + 0x40], 0xbd45bf43
mov dword [esp + 0x44], 0xb946bb48
mov dword [esp + 0x48], 0x45b6474f
mov dword [esp + 0x4c], 0x41bc43ab
mov dword [esp + 0x50], 0x4d7f4fbc
mov dword [esp + 0x54], 0x49bb4ba6
mov dword [esp + 0x58], 0x55a557b6
mov dword [esp + 0x5c], 0x51be5367
mov dword [esp + 0x60], 0x5da25fbf
mov dword [esp + 0x64], 0x599f5bb3
mov dword [esp + 0x68], 0x65886778
mov dword [esp + 0x6c], 0x61996395
mov dword [esp + 0x70], 0x6d826f92
mov dword [esp + 0x74], 0x69946b83
mov dword [esp + 0x78], 0x75b577ef
mov dword [esp + 0x7c], 0x7199739a
mov dword [esp + 0x80], 0x7d457f48
mov dword [esp + 0x84], 0x79917b90
mov dword [esp + 0x88], 0x5f10743
mov dword [esp + 0x8c], 0x1ee03f4
mov dword [esp + 0x90], 0xde30ff1
mov dword [esp + 0x94], 0x9e10bfb
mov dword [esp + 0x98], 0x15e817f6
mov dword [esp + 0x9c], 0x112d13ff
mov dword [esp + 0xa0], 0x1d081f03
mov word [esp + 0xa4], 0x1b1c
mov word [esp + 0xaa], 0
mov dword [esp + 0xa6], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x87
ja 0x40ab5b
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x24]
add ecx, 0xcbd3a4db
xor ecx, edx
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xc]
add cl, 0xb9
mov edx, dword [esp]
mov byte [esp + edx + 0x24], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x88
jb 0x40ab28
mov dword [esp + 0xc], 0x7f1f792b
mov dword [esp + 0x10], 0x630b7dec
mov word [esp + 0x14], 0x6160
mov dword [esp + 0x16], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0xd
ja 0x40abcb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0xc]
add ecx, 0x2cf87cea
xor ecx, edx
mov dword [esp], ecx
mov ecx, dword [esp]
add cl, 0x6e
mov edx, dword [esp + 4]
mov byte [esp + edx + 0xc], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0xe
jb 0x40ab98
lea ecx, [esp + 0xc]
push 0x493e0
push eax
push edi
push 0
push 0
push ebp
push ecx
call fcn.0040c898
add esp, 0x1c
mov ebx, eax
push edi
call fcn.00409658
add esp, 4
mov eax, dword [esi + 0x60]
add dword [esi + 4], eax
mov dword [esi + 0x60], 0
mov eax, ebx
add esp, 0xd0
pop esi
pop edi
pop ebx
pop ebp
ret