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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x90
mov dword [esp + 8], 0xdae6f6f3
mov dword [esp + 0xc], 0xceccd0ec
lea ebx, [esp + 0x10]
mov byte [esp + 0x10], 0xa4
mov dword [esp + 0x11], 0
mov byte [esp + 0x15], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x1b
xor cl, byte [esp + eax + 8]
add cl, 0x79
mov byte [esp + eax + 8], cl
inc eax
cmp eax, 0xe
jne 0x40efc0
lea eax, [esp + 0x87]
lea esi, [esp + 8]
mov ebp, esi
mov ecx, 2
mov edi, eax
xchg esi, ebp
rep movsd dword es:[edi], dword [esi]
xchg esi, ebp
lea edi, [esp + 0x8f]
xor ecx, ecx
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
movzx ecx, byte [esp + 0x10]
mov byte [esp + 0x8f], cl
mov dword [esp + 8], 0x299b2be1
mov dword [esp + 0xc], 0x2d9a2f9a
mov dword [esp + 0x10], 0x31803387
mov dword [esp + 0x14], 0x35c53784
mov dword [esp + 0x18], 0x39853be0
mov dword [esp + 0x1c], 0x3d953f88
mov dword [esp + 0x20], 0x1e203c2
mov dword [esp + 0x24], 0x5b607a7
mov dword [esp + 0x28], 0x9a60bb4
mov dword [esp + 0x2c], 0xdab0fa7
mov dword [esp + 0x30], 0x11a613ab
mov dword [esp + 0x34], 0x15a717bf
mov dword [esp + 0x38], 0x19eb1ba6
mov dword [esp + 0x3c], 0x1ded1fa0
mov dword [esp + 0x40], 0xe15be3a5
mov dword [esp + 0x44], 0xe515e759
mov dword [esp + 0x48], 0xe95beb4e
mov dword [esp + 0x4c], 0xed5def5e
mov dword [esp + 0x50], 0xf149f31f
mov dword [esp + 0x54], 0xf55af746
mov dword [esp + 0x58], 0xf948fb5f
mov dword [esp + 0x5c], 0xfd4fff5d
mov dword [esp + 0x60], 0xc169c358
mov dword [esp + 0x64], 0xc5d5c764
mov dword [esp + 0x68], 0xc9cacbca
mov byte [esp + 0x6c], 0
mov ecx, 0x1e8c67c7
nop
nop
movzx edi, byte [esp + ecx - 0x1e8c67bf]
xor edi, ecx
lea ebx, [edi + edi]
and ebx, 2
mov ebp, 1
sub ebp, edi
and ebp, 1
mov edx, ebx
and edx, edi
and edi, 0xfe
add edi, ebp
add edi, 0x1c
xor edi, ebx
lea edx, [edi + edx*2]
mov byte [esp + ecx - 0x1e8c67bf], dl
inc ecx
cmp ecx, 0x1e8c682c
jne 0x40f0e0
mov dword [esp + 0x74], 0xc165c715
mov dword [esp + 0x78], 0xcd69c350
mov word [esp + 0x7c], 0xcfcc
mov dword [esp + 0x7e], 0
mov ecx, 0xb1
mov edi, 0x4e
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx - 0x3d]
mov ebx, edi
xor ebx, ecx
and ebx, edx
xor ebx, ecx
add bl, 0x8b
mov byte [esp + ecx - 0x3d], bl
inc ecx
dec edi
cmp ecx, 0xbf
jne 0x40f150
lea ecx, [esp + 4]
lea edx, [esp + 0x74]
push 0
push ecx
push 8
push eax
push esi
push edx
push dword [esp + 0xbc]
call fcn.0040fc20
add esp, 0x1c
xor ebx, ebx
test al, al
je 0x40f40b
mov word [esp + 8], 0x5255
mov byte [esp + 0xa], 0xc6
mov dword [esp + 0xb], 0
nop
nop
nop
nop
nop
mov eax, ebx
add al, 0xd1
xor al, byte [esp + ebx + 8]
add al, 0xeb
mov byte [esp + ebx + 8], al
inc ebx
cmp ebx, 7
jne 0x40f1b0
xor eax, eax
mov edi, dword [esp + 4]
nop
nop
nop
nop
nop
nop
movzx ecx, byte [edi + eax]
movzx edx, byte [esp + eax + 8]
test cl, cl
je 0x40f1e2
inc eax
cmp cl, dl
je 0x40f1d0
mov dword [esp], edi
mov bl, 1
cmp cl, dl
je 0x40f400
mov dword [esp + 8], 0xadbfa0b1
mov dword [esp + 0xc], 0xddacaea7
mov dword [esp + 0x10], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x4f
xor cl, byte [esp + eax + 8]
add cl, 0x75
mov byte [esp + eax + 8], cl
inc eax
cmp eax, 0xc
jne 0x40f210
movzx eax, byte [esp + 8]
mov ecx, dword [esp]
test al, al
je 0x40f265
mov edx, esi
mov ecx, dword [esp]
mov ebp, ecx
jmp 0x40f247
movzx eax, byte [edx]
test al, al
je 0x40f265
mov ah, byte [ebp]
test ah, ah
je 0x40f3fe
inc ebp
inc edx
lea edi, [ecx + 1]
cmp ah, al
je 0x40f25f
mov ecx, edi
mov ebp, edi
je 0x40f240
mov edx, esi
jmp 0x40f240
xor eax, eax
test ecx, ecx
je 0x40f3fe
mov dword [esp + 8], 0xeee710e6
mov dword [esp + 0xc], 0xe30f4f29
mov dword [esp + 0x10], 0x4b48f2ff
mov dword [esp + 0x14], 0xeaf204ea
mov dword [esp + 0x18], 0x634024fd
mov word [esp + 0x1c], 0
mov byte [esp + 0x1e], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x6c
xor cl, byte [esp + eax + 8]
add cl, 0xe4
mov byte [esp + eax + 8], cl
inc eax
cmp eax, 0x17
jne 0x40f2b0
movzx edx, byte [esp + 8]
mov ecx, dword [esp]
test dl, dl
je 0x40f304
lea eax, [esp + 8]
mov esi, eax
mov ecx, dword [esp]
mov edi, ecx
jmp 0x40f2e7
movzx edx, byte [esi]
test dl, dl
je 0x40f304
mov dh, byte [edi]
test dh, dh
je 0x40f3fe
inc edi
inc esi
lea ebp, [ecx + 1]
cmp dh, dl
je 0x40f2fe
mov ecx, ebp
mov edi, ebp
je 0x40f2e0
mov esi, eax
jmp 0x40f2e0
test ecx, ecx
je 0x40f3fe
mov dword [esp + 0x70], ecx
mov word [esp + 8], 0xcbe6
mov byte [esp + 0xa], 0xf6
mov dword [esp + 0xb], 0
mov byte [esp + 0xf], 0
mov edx, 0x2412017e
nop
nop
movzx esi, byte [esp + edx - 0x24120176]
mov eax, edx
and eax, esi
mov ebp, eax
and ebp, 2
mov ecx, eax
or ecx, 0xfffffffd
inc ecx
mov edi, eax
and edi, 0xfffffffd
imul edi, ecx
or eax, 2
imul eax, ebp
add edi, esi
sub edi, eax
add edi, edx
mov eax, edi
and eax, 0xba5f889
xor edi, 0x4ba5f889
lea eax, [edi + eax*2]
mov ecx, eax
xor ecx, 0x9a
and eax, 0x65
add eax, eax
sub eax, ecx
add al, 0x9b
mov byte [esp + edx - 0x24120176], al
inc edx
cmp edx, 0x24120186
jne 0x40f330
mov ecx, dword [esp + 0x70]
add ecx, 0x13
movzx edx, byte [esp + 8]
test dl, dl
je 0x40f3d2
lea edi, [esp + 8]
mov eax, ecx
mov esi, ecx
jmp 0x40f3b7
movzx edx, byte [edi]
test dl, dl
je 0x40f3d6
mov dh, byte [eax]
test dh, dh
je 0x40f3fe
inc eax
inc edi
lea ebp, [esi + 1]
cmp dh, dl
je 0x40f3ca
mov esi, ebp
mov eax, ebp
je 0x40f3b0
lea edi, [esp + 8]
jmp 0x40f3b0
mov esi, ecx
jmp 0x40f3da
test esi, esi
je 0x40f3fe
mov byte [0x44d5f4], 1
push esi
push ecx
push 0x100
push 0x44d5f6
call fcn.0040ed10
add esp, 0x10
mov eax, dword [esp + 4]
mov dword [esp], eax
jmp 0x40f400
xor ebx, ebx
push dword [esp]
call fcn.0043bac0
add esp, 4
mov eax, ebx
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret