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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x90
mov edi, dword [esp + 0xa4]
mov dword [esp + 0x64], ecx
add edi, dword [ecx + 0x60]
mov dword [esp + 0x68], 0xfbc4caa7
mov dword [esp + 0x6c], 0x86fec7c9
mov dword [esp + 0x70], 0xf2fef8dc
mov dword [esp + 0x74], 0xc7ebad8a
mov dword [esp + 0x78], 0xfff9e8c4
mov dword [esp + 0x7c], 0xcff0f8f1
mov dword [esp + 0x80], 0xecabc9b3
mov dword [esp + 0x84], 0xe4e7ebe2
mov dword [esp + 0x88], 0x42404cd4
mov dword [esp + 0x8c], 0x5542
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x27
ja 0x40a346
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 + 0x68]
add eax, 0x99e69f96
xor eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x12
mov ecx, dword [esp]
mov byte [esp + ecx + 0x68], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x28
jb 0x40a318
mov dword [esp], 0x9164607e
mov word [esp + 4], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 5
ja 0x40a399
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx]
add eax, 0x21a19c65
xor eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 7
mov ecx, dword [esp + 8]
mov byte [esp + ecx], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 6
jb 0x40a368
mov dword [esp + 0x10], 0xeee43033
mov dword [esp + 0x14], 0xe2ee3c38
mov dword [esp + 0x18], 0xe5fee433
mov dword [esp + 0x1c], 0xfae1e6f9
mov dword [esp + 0x20], 0x22f9e5e6
mov dword [esp + 0x24], 0xecdf1907
mov dword [esp + 0x28], 0xeff1e3ea
mov dword [esp + 0x2c], 0xced62ce4
mov dword [esp + 0x30], 0xdcd7d7d9
mov dword [esp + 0x34], 0xdcc9dfcb
mov dword [esp + 0x38], 0xc70e15da
mov dword [esp + 0x3c], 0x2ddd9d9
mov dword [esp + 0x40], 0xd2cad4d8
mov dword [esp + 0x44], 0xdec413f5
mov dword [esp + 0x48], 0x1bf9d0cb
mov dword [esp + 0x4c], 0x2aced0d6
mov dword [esp + 0x50], 0x2fe602e6
mov dword [esp + 0x54], 0x3b2d372b
mov dword [esp + 0x58], 0xe21382f
mov dword [esp + 0x5c], 0xcbea
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
cmp eax, 0x4f
ja 0x40a48b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
movzx ecx, byte [esp + ecx + 0x10]
add eax, 0x28bef6c1
xor eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x3b
mov ecx, dword [esp + 0xc]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp eax, 0x50
jb 0x40a458
mov eax, dword [esp + 0xa8]
movzx ecx, byte [esp + 0x10]
mov edx, edi
test cl, cl
je 0x40a4b3
lea esi, [esp + 0x11]
mov edx, edi
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x40a4a8
mov byte [edx], 0
movzx ecx, byte [eax]
test cl, cl
je 0x40a4d3
inc eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x40a4c8
mov byte [edx], 0
movzx eax, byte [esp]
test al, al
je 0x40a4f3
lea ecx, [esp + 1]
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40a4e8
mov ebx, dword [esp + 0xb0]
mov ebp, dword [esp + 0xac]
mov byte [edx], 0
movzx eax, byte [esp + 0x68]
test al, al
mov dword [esp + 0x60], edi
je 0x40a523
lea ecx, [esp + 0x69]
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40a518
mov byte [edx], 0
mov ecx, ebx
shr ecx, 2
mov eax, ebp
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, ebx
and eax, 0xfffffffc
lea esi, [edx + eax]
add eax, ebp
mov ecx, ebx
shr ecx, 1
and ecx, 1
mov ebp, eax
mov edi, esi
xchg esi, ebp
rep movsw word es:[edi], word [esi]
xchg esi, ebp
test bl, 1
je 0x40a560
mov ecx, ebx
and ecx, 2
movzx eax, byte [eax + ecx]
mov byte [esi + ecx], al
mov dword [esp + 0x10], 0x56513d33
mov dword [esp + 0x14], 0x726a9c82
mov dword [esp + 0x18], 0x82718080
mov dword [esp + 0x1c], 0x888b8788
mov dword [esp + 0x20], 0x8384888f
mov dword [esp + 0x24], 0x1725408f
mov word [esp + 0x28], 0x151b
mov byte [esp + 0x2a], 0xe
mov word [esp + 0x2b], 0
mov byte [esp + 0x2d], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x1d
mov edi, dword [esp + 0x60]
ja 0x40a601
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 + 0x10]
lea esi, [eax + ecx]
add eax, 9
and eax, ecx
add eax, eax
sub esi, eax
add esi, 0x7c4a8609
mov dword [esp + 0x68], esi
mov eax, dword [esp + 0x68]
add al, 0xd3
mov ecx, dword [esp]
mov byte [esp + ecx + 0x10], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x1e
jb 0x40a5c8
add edx, ebx
movzx eax, byte [esp + 0x10]
test al, al
je 0x40a623
lea ecx, [esp + 0x11]
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40a618
mov byte [edx], 0
sub edx, edi
mov eax, dword [esp + 0x64]
add dword [eax + 0x60], edx
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret 0x10