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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x84
mov eax, dword [ecx + 0x80]
mov dword [esp], eax
mov dword [esp + 0x1c], 0xbb444a67
mov dword [esp + 0x20], 0x6be4749
mov dword [esp + 0x24], 0x323eb85c
mov dword [esp + 0x28], 0xc72b6d0a
mov dword [esp + 0x2c], 0x3f3928c4
mov dword [esp + 0x30], 0xcf303831
mov dword [esp + 0x34], 0x2c6bc973
mov dword [esp + 0x38], 0x24272b22
mov dword [esp + 0x3c], 0x42404cd4
mov dword [esp + 0x40], 0x5542
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
add al, 0x36
xor al, byte [esp + ebx + 0x1c]
add al, 0xf2
mov byte [esp + ebx + 0x1c], al
inc ebx
cmp ebx, 0x28
jne 0x40aa50
mov dword [esp + 0xc], 0x13182432
mov word [esp + 0x10], 0
mov byte [esp + 0x12], 0
xor edi, edi
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + edi + 0xc]
lea eax, [edi - 0x74578abc]
and eax, ebx
add eax, eax
neg eax
add eax, edi
add eax, 0x8ba87544
add al, bl
add al, 0xac
mov byte [esp + edi + 0xc], al
mov eax, edi
and eax, 2
xor edi, 0x30bb53d2
lea edi, [edi + eax*2]
add edi, 0xcf44ac2f
cmp edi, 7
jb 0x40aa80
mov dword [esp + 0x18], ecx
mov dword [esp + 0x44], 0xe4397f7d
mov dword [esp + 0x48], 0xe1dfe9e6
mov dword [esp + 0x4c], 0xd63224ec
mov dword [esp + 0x50], 0xe4e9ede3
mov dword [esp + 0x54], 0xf4cfe5d1
mov dword [esp + 0x58], 0xc90223f6
mov dword [esp + 0x5c], 0x3afbfff3
mov dword [esp + 0x60], 0xcaf6ccc0
mov dword [esp + 0x64], 0xf6c4092f
mov dword [esp + 0x68], 0x3d17f8c1
mov dword [esp + 0x6c], 0xf2caf8fa
mov dword [esp + 0x70], 0xf13a1a32
mov dword [esp + 0x74], 0xd5ebcdf1
mov dword [esp + 0x78], 0x6efd0e5
mov word [esp + 0x7c], 0x412e
mov dword [esp + 0x7e], 0
mov word [esp + 0x82], 0
mov edi, 0x3126113e
mov ebp, 0x9db3ddc1
movzx eax, byte [esp + edi - 0x312610fa]
mov ebx, ebp
xor ebx, edi
and ebx, eax
xor ebx, edi
lea eax, [ebx + 0xa41a9c9]
mov edx, eax
and edx, 1
mov esi, eax
and esi, 0xfe
xor eax, 1
add eax, ebx
add eax, 0xa41a9c9
mov ebx, eax
sub ebx, esi
and eax, edx
xor ebx, edx
lea eax, [ebx + eax*2]
mov byte [esp + edi - 0x312610fa], al
inc edi
dec ebp
cmp edi, 0x3126117e
jne 0x40ab50
mov esi, dword [esp + 0x98]
add esi, dword [esp]
mov word [esp + 4], 0x4445
mov byte [esp + 6], 0x12
mov word [esp + 7], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edx
add al, 4
xor al, byte [esp + edx + 4]
add al, 0xec
mov byte [esp + edx + 4], al
inc edx
cmp edx, 5
jne 0x40abc0
movzx ebx, byte [esp + 4]
mov edx, esi
test bl, bl
je 0x40abfb
lea edi, [esp + 5]
mov edx, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x40abf0
mov byte [edx], 0
mov eax, dword [esp + 0x18]
movzx ebx, byte [eax + 0x60]
test bl, bl
je 0x40ac2d
lea edi, [eax + 0x61]
mov eax, dword [esp + 0x9c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x40ac20
jmp 0x40ac34
mov eax, dword [esp + 0x9c]
mov byte [edx], 0
movzx ebx, byte [esp + 0x44]
test bl, bl
je 0x40ac5b
lea edi, [esp + 0x45]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x40ac50
mov byte [edx], 0
movzx ebx, byte [eax]
test bl, bl
je 0x40ac7b
inc eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [eax]
inc eax
test bl, bl
jne 0x40ac70
mov byte [edx], 0
movzx ecx, byte [esp + 0xc]
test cl, cl
je 0x40ac9b
lea edi, [esp + 0xd]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x40ac90
mov byte [edx], 0
movzx ecx, byte [esp + 0x1c]
test cl, cl
je 0x40acbb
lea edi, [esp + 0x1d]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x40acb0
mov dword [esp], esi
mov byte [edx], 0
mov ebx, dword [esp + 0xa4]
mov ecx, ebx
shr ecx, 2
mov esi, dword [esp + 0xa0]
mov eax, esi
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov ebp, ebx
and ebp, 0xfffffffc
add edx, ebp
add ebp, esi
mov ecx, ebx
shr ecx, 1
and ecx, 1
mov eax, ebp
mov edi, edx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov ecx, ebx
and ecx, 2
add edx, ecx
test bl, 1
je 0x40ad09
movzx eax, byte [ebp + ecx]
mov byte [edx], al
inc edx
mov dword [esp + 0x14], edx
mov dword [esp + 0x44], 0x31333735
mov byte [esp + 0x48], 0x3c
mov dword [esp + 0x49], 0
mov byte [esp + 0x4d], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx + 0x44]
mov ebp, ecx
and ebp, 8
mov eax, ecx
and eax, 2
mov ebx, eax
xor ebx, 2
imul ebx, ebp
or ebp, 2
imul ebp, eax
or ebx, ecx
xor ebx, 0x7e70eaca
add ebx, ebp
mov eax, edi
not eax
or eax, ebx
lea ebp, [edi + eax]
inc ebp
mov eax, ebp
and eax, 2
mov esi, ebp
or esi, 0xfffffffd
inc esi
mov edx, ebp
and edx, 0xfffffffd
imul edx, esi
or ebp, 2
imul ebp, eax
sub edx, ebp
add ebx, edi
add ebx, edx
mov eax, ebx
xor eax, 0xf3
and ebx, 0xc
add ebx, ebx
sub ebx, eax
inc bl
mov byte [esp + ecx + 0x44], bl
mov eax, ecx
and eax, 1
xor ecx, 1
lea ecx, [ecx + eax*2]
cmp ecx, 0xa
jb 0x40ad30
mov dword [esp + 0x1c], 0x1611cd33
mov byte [esp + 0x20], 0xc0
mov dword [esp + 0x21], 0
mov byte [esp + 0x25], 0
xor edi, edi
mov ecx, 0xffffffff
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
or eax, 0x31
mov ebx, edi
or ebx, 0x31
add ebx, eax
add ebx, edi
inc bl
xor bl, byte [esp + edi + 0x1c]
add bl, 0xb
mov byte [esp + edi + 0x1c], bl
lea eax, [edi + 1]
dec ecx
mov edi, eax
cmp eax, 0xa
jne 0x40add0
movzx ecx, byte [esp + 0x1c]
test cl, cl
mov edx, dword [esp + 0x18]
mov esi, dword [esp]
mov ebx, dword [esp + 0x14]
je 0x40ae1b
lea edi, [esp + 0x1d]
nop
nop
mov byte [ebx], cl
inc ebx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x40ae10
mov byte [ebx], 0
movzx ecx, byte [edx + 0x60]
test cl, cl
je 0x40ae3b
lea edi, [edx + 0x61]
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx], cl
inc ebx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x40ae30
mov byte [ebx], 0
movzx ecx, byte [esp + 0x44]
test cl, cl
je 0x40ae5b
lea edi, [esp + 0x45]
nop
nop
nop
nop
nop
mov byte [ebx], cl
inc ebx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x40ae50
mov byte [ebx], 0
mov eax, ebx
xor eax, esi
not esi
and esi, ebx
add esi, esi
sub esi, eax
mov eax, dword [edx + 0x80]
mov ecx, eax
and ecx, esi
xor esi, eax
lea eax, [esi + ecx*2]
mov dword [edx + 0x80], eax
add esp, 0x84
pop esi
pop edi
pop ebx
pop ebp
ret 0x10