Function at 0x40a8c0
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 + 0x18], 0x45404eb9
mov dword [esp + 0x1c], 0x8a464d57
mov dword [esp + 0x20], 0x6e467ca0
mov dword [esp + 0x24], 0x7969ab82
mov dword [esp + 0x28], 0x796b6c78
mov dword [esp + 0x2c], 0x717c647f
mov dword [esp + 0x30], 0x68b94fb5
mov dword [esp + 0x34], 0x787d617a
mov dword [esp + 0x38], 0xcec4c068
mov dword [esp + 0x3c], 0xd3ca
mov byte [esp + 0x40], 0
mov edi, 0x4a51ba55
nop
nop
nop
movzx ebx, byte [esp + edi - 0x4a51ba3d]
mov ebp, edi
and ebp, ebx
add ebx, edi
add ebp, ebp
mov eax, ebx
sub eax, ebp
and ebx, 1
xor eax, 1
lea eax, [eax + ebx*2]
add al, 0x56
mov byte [esp + edi - 0x4a51ba3d], al
inc edi
cmp edi, 0x4a51ba7e
jne 0x40a930
mov dword [esp + 0xc], 0xd9c4c822
mov word [esp + 0x10], 0
mov byte [esp + 0x12], 0
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea ebx, [edi + edi]
mov eax, edi
xor eax, 0x2f
lea eax, [eax + edi*2]
xor al, byte [esp + edi + 0xc]
add al, 0x15
mov byte [esp + edi + 0xc], al
and ebx, 2
xor edi, 1
add edi, ebx
cmp edi, 7
jb 0x40a980
mov dword [esp + 0x14], ecx
mov dword [esp + 0x44], 0xe4314b45
mov dword [esp + 0x48], 0xf9f3e1fa
mov dword [esp + 0x4c], 0xf2163ce4
mov dword [esp + 0x50], 0xf4f1f5f7
mov dword [esp + 0x54], 0xf4fbedf9
mov dword [esp + 0x58], 0x1bed70a
mov dword [esp + 0x5c], 0xce0f0b0f
mov dword [esp + 0x60], 0xf61af408
mov dword [esp + 0x64], 0xf204b1db
mov dword [esp + 0x68], 0xadcb1019
mov dword [esp + 0x6c], 0x161e1016
mov dword [esp + 0x70], 0x19a6cea6
mov dword [esp + 0x74], 0x151f1519
mov dword [esp + 0x78], 0xfa2328dd
mov dword [esp + 0x7c], 0xb99a
mov byte [esp + 0x80], 0
mov edi, 0xa950bf6c
mov ebp, 0x56af4092
movzx eax, byte [esp + edi + 0x56af40d8]
mov edx, edi
or edx, eax
lea esi, [ebp + 1]
or esi, eax
lea eax, [edi + esi]
inc eax
mov ebx, ebp
sub ebx, esi
and ebx, edx
not edx
and edx, eax
sub ebx, edx
mov eax, ebx
xor eax, 0xe5d2aa80
and ebx, 0x1a2d557f
add ebx, ebx
sub ebx, eax
add ebx, 0x973eed63
mov eax, ebx
and eax, 1
xor ebx, 1
lea eax, [ebx + eax*2]
mov byte [esp + edi + 0x56af40d8], al
inc edi
dec ebp
cmp edi, 0xa950bfa9
jne 0x40aa30
mov ecx, dword [esp + 0x98]
add ecx, dword [esp]
mov word [esp + 4], 0xbcbd
mov byte [esp + 6], 0xe2
mov dword [esp + 7], 0
mov edx, 0xc07a30d8
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edx + 0x3f85cf2c]
xor eax, edx
lea esi, [eax + 0xc7]
mov edi, eax
not edi
and edi, 1
and esi, 0xfe
and eax, 1
or eax, esi
lea eax, [eax + edi*2]
mov byte [esp + edx + 0x3f85cf2c], al
inc edx
cmp edx, 0xc07a30df
jne 0x40aab0
movzx ebx, byte [esp + 4]
mov edx, ecx
test bl, bl
je 0x40ab0b
lea edi, [esp + 5]
mov edx, ecx
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 0x40ab00
mov byte [edx], 0
mov eax, dword [esp + 0x14]
movzx ebx, byte [eax + 0x60]
test bl, bl
je 0x40ab3d
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 0x40ab30
jmp 0x40ab44
mov eax, dword [esp + 0x9c]
mov byte [edx], 0
movzx ebx, byte [esp + 0x44]
test bl, bl
je 0x40ab6b
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 0x40ab60
mov byte [edx], 0
movzx ebx, byte [eax]
test bl, bl
mov dword [esp], ecx
je 0x40ab8b
inc eax
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [eax]
inc eax
test bl, bl
jne 0x40ab80
mov byte [edx], 0
movzx ecx, byte [esp + 0xc]
test cl, cl
je 0x40abab
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 0x40aba0
mov byte [edx], 0
movzx ecx, byte [esp + 0x18]
test cl, cl
je 0x40abcb
lea edi, [esp + 0x19]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x40abc0
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
and ecx, 3
mov eax, ebx
mov esi, ebx
not eax
or eax, 0xfffffffe
lea ebx, [ecx + eax]
inc ebx
shr ecx, 1
mov eax, ebp
mov edi, edx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
add edx, ebx
mov eax, esi
test al, 1
je 0x40ac1f
movzx eax, byte [ebp + ebx]
mov byte [edx], al
inc edx
mov dword [esp + 0x18], 0x1b111d13
mov byte [esp + 0x1c], 0x20
mov word [esp + 0x1d], 0
mov byte [esp + 0x1f], 0
mov ecx, 0x3793f6b9
nop
nop
nop
movzx eax, byte [esp + ecx - 0x3793f6a1]
mov esi, ecx
and esi, eax
add esi, esi
sub eax, esi
add eax, ecx
mov esi, eax
and esi, 0x2a1c2e62
xor eax, 0xea1c2e62
lea eax, [eax + esi*2]
mov esi, eax
not esi
or esi, 1
add esi, eax
inc esi
or eax, 1
mov edi, esi
and edi, eax
xor eax, esi
lea eax, [eax + edi*2]
mov byte [esp + ecx - 0x3793f6a1], al
inc ecx
cmp ecx, 0x3793f6c1
jne 0x40ac40
mov dword [esp + 0x44], 0xaaa98d8f
mov byte [esp + 0x48], 0x98
mov dword [esp + 0x49], 0
mov byte [esp + 0x4d], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
add al, 0x9b
xor al, byte [esp + ecx + 0x44]
add al, 0xf9
mov byte [esp + ecx + 0x44], al
inc ecx
cmp ecx, 0xa
jne 0x40acb0
movzx ecx, byte [esp + 0x44]
test cl, cl
mov esi, dword [esp + 0x14]
je 0x40aceb
lea edi, [esp + 0x45]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x40ace0
mov byte [edx], 0
movzx ecx, byte [esi + 0x60]
test cl, cl
je 0x40ad0b
lea edi, [esi + 0x61]
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x40ad00
mov byte [edx], 0
movzx ecx, byte [esp + 0x18]
test cl, cl
je 0x40ad2b
lea edi, [esp + 0x19]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x40ad20
mov byte [edx], 0
mov eax, edx
mov ecx, dword [esp]
xor eax, ecx
not ecx
and ecx, edx
add ecx, ecx
sub ecx, eax
add dword [esi + 0x80], ecx
add esp, 0x84
pop esi
pop edi
pop ebx
pop ebp
ret 0x10