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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x8c
mov edx, dword [esp + 0xa0]
mov dword [esp + 4], 0xae764241
mov dword [esp + 8], 0x42407c78
lea ebp, [esp + 0xc]
mov byte [esp + 0xc], 0xd8
mov word [esp + 0xd], 0
mov byte [esp + 0xf], 0
mov eax, 0x58
mov ecx, 0xa7
movzx esi, byte [esp + eax - 0x54]
mov ebx, ecx
xor ebx, eax
and ebx, esi
xor ebx, eax
add bl, 0x48
mov byte [esp + eax - 0x54], bl
inc eax
dec ecx
cmp eax, 0x64
jne 0x40f4c0
lea eax, [esp + 0x83]
lea esi, [esp + 4]
mov ebx, esi
mov edi, eax
mov ecx, 2
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
lea edi, [esp + 0x8b]
xor ebx, ebx
xor ecx, ecx
xchg esi, ebp
rep movsw word es:[edi], word [esi]
xchg esi, ebp
movzx ecx, byte [esp + 0xc]
mov byte [esp + 0x8b], cl
mov dword [esp + 4], 0x59eb5b01
mov dword [esp + 8], 0x5dea5fea
mov dword [esp + 0xc], 0x51e053e7
mov dword [esp + 0x10], 0x552557e4
mov dword [esp + 0x14], 0xa925ab00
mov dword [esp + 0x18], 0xad15af18
mov dword [esp + 0x1c], 0xa1c2a3e2
mov dword [esp + 0x20], 0xa516a707
mov dword [esp + 0x24], 0xb906bb14
mov dword [esp + 0x28], 0xbd1bbf07
mov dword [esp + 0x2c], 0xb106b31b
mov dword [esp + 0x30], 0xb507b70f
mov dword [esp + 0x34], 0x89fb8b06
mov dword [esp + 0x38], 0x8dfd8f00
mov dword [esp + 0x3c], 0x810b8305
mov dword [esp + 0x40], 0x85f58709
mov dword [esp + 0x44], 0x992b9b3e
mov dword [esp + 0x48], 0x9d2d9f2e
mov dword [esp + 0x4c], 0x911993ef
mov dword [esp + 0x50], 0x952a9726
mov dword [esp + 0x54], 0xe958eb2f
mov dword [esp + 0x58], 0xed5fef4d
mov dword [esp + 0x5c], 0xe159e348
mov dword [esp + 0x60], 0xe5f5e744
mov dword [esp + 0x64], 0xf9fafbfa
mov dword [esp + 0x68], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, ebx
add cl, 0xef
xor cl, byte [esp + ebx + 4]
add cl, 0x55
mov byte [esp + ebx + 4], cl
inc ebx
cmp ebx, 0x68
jne 0x40f5f0
mov dword [esp + 0x70], 0xd16dcf3d
mov dword [esp + 0x74], 0xd579d360
mov word [esp + 0x78], 0xd7d4
mov dword [esp + 0x7a], 0
mov word [esp + 0x7e], 0
mov ecx, 0x388b7f2d
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx - 0x388b7ebd]
xor edi, ecx
mov ebx, edi
and ebx, 0x1e
xor edi, 0x1e
lea ebx, [edi + ebx*2]
inc bl
mov byte [esp + ecx - 0x388b7ebd], bl
inc ecx
cmp ecx, 0x388b7f3d
jne 0x40f640
mov ecx, esp
lea edi, [esp + 0x70]
push 0
push ecx
push 8
push eax
push esi
push edi
push edx
call fcn.00410050
add esp, 0x1c
test al, al
je 0x40f784
mov dword [esp + 4], 0x1aaead
mov eax, 0x1247d63b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x1247d637]
lea edx, [eax - 0x1247d600]
and edx, ecx
or ecx, eax
xor ecx, edx
mov edx, ecx
and edx, 0x58
xor ecx, 0xd8
lea ecx, [ecx + edx*2]
inc cl
mov byte [esp + eax - 0x1247d637], cl
inc eax
cmp eax, 0x1247d63f
jne 0x40f6a0
xor ecx, ecx
mov ebp, dword [esp]
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [ebp + ecx]
mov dh, byte [esp + ecx + 4]
test dl, dl
je 0x40f6f2
inc ecx
cmp dl, dh
je 0x40f6e0
mov bl, 1
cmp dl, dh
je 0x40f910
mov dword [esp + 4], 0xf313c03
mov dword [esp + 8], 0x9f080a35
mov word [esp + 0xc], 0
mov ecx, 0x42fde35b
mov edx, 0x25
nop
nop
nop
movzx ebx, byte [esp + edx - 0x21]
mov edi, ebx
xor edi, ecx
lea eax, [ecx - 0x42fde300]
or eax, edi
add al, dl
add al, al
sub bl, al
movzx eax, bl
add eax, edx
add al, 0x4b
mov byte [esp + edx - 0x21], al
dec ecx
inc edx
cmp edx, 0x2f
jne 0x40f720
movzx ebx, byte [esp + 4]
mov ecx, ebp
test bl, bl
je 0x40f78b
mov edx, esi
mov edi, ebp
mov ecx, ebp
jmp 0x40f767
movzx ebx, byte [edx]
test bl, bl
je 0x40f78b
mov bh, byte [edi]
test bh, bh
je 0x40f90e
inc edi
inc edx
lea eax, [ecx + 1]
cmp bh, bl
je 0x40f77e
mov ecx, eax
mov edi, eax
je 0x40f760
mov edx, esi
jmp 0x40f760
xor ebx, ebx
jmp 0x40f919
test ecx, ecx
je 0x40f90e
mov dword [esp + 4], 0xcac3d8ca
mov dword [esp + 8], 0xffd38bb1
mov dword [esp + 0xc], 0xafb0c6c3
mov dword [esp + 0x10], 0xc6feecc6
mov dword [esp + 0x14], 0x47b88cf5
mov byte [esp + 0x18], 0
mov ecx, 0x472b6f16
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx - 0x472b6f12]
mov eax, edx
and eax, ecx
add al, al
sub dl, al
movzx eax, dl
add eax, ecx
add al, 0x92
mov byte [esp + ecx - 0x472b6f12], al
inc ecx
cmp ecx, 0x472b6f2b
jne 0x40f7d0
movzx edx, byte [esp + 4]
mov ecx, ebp
test dl, dl
je 0x40f834
lea eax, [esp + 4]
mov esi, eax
mov edi, ebp
mov ecx, ebp
jmp 0x40f817
movzx edx, byte [esi]
test dl, dl
je 0x40f834
mov dh, byte [edi]
test dh, dh
je 0x40f90e
inc edi
inc esi
lea ebx, [ecx + 1]
cmp dh, dl
je 0x40f82e
mov ecx, ebx
mov edi, ebx
je 0x40f810
mov esi, eax
jmp 0x40f810
test ecx, ecx
je 0x40f90e
mov edi, ecx
mov dword [esp + 4], 0x827f62
mov edx, 0x23726460
nop
nop
nop
nop
nop
movzx esi, byte [esp + edx - 0x2372645c]
xor esi, edx
mov eax, esi
and eax, 0x28
xor eax, 0x88009928
and esi, 0x36060d7
sub esi, eax
mov eax, esi
and eax, 0xca44021f
xor esi, 0x4ec40a1f
lea eax, [esi + eax*2]
mov ecx, eax
and ecx, 0x28
xor eax, 0x28
lea eax, [eax + ecx*2]
inc al
mov byte [esp + edx - 0x2372645c], al
inc edx
cmp edx, 0x23726464
jne 0x40f850
mov eax, edi
add eax, 0x13
movzx ebx, byte [esp + 4]
test bl, bl
je 0x40f8e0
lea esi, [esp + 4]
mov edi, esi
mov edx, eax
mov ecx, eax
mov dword [esp + 0x6c], eax
jmp 0x40f8c7
movzx ebx, byte [edi]
test bl, bl
je 0x40f8e4
mov bh, byte [ecx]
test bh, bh
je 0x40f90e
inc ecx
inc edi
lea eax, [edx + 1]
cmp bh, bl
je 0x40f8da
mov edx, eax
mov ecx, eax
je 0x40f8c0
mov edi, esi
jmp 0x40f8c0
mov edx, eax
jmp 0x40f8ec
test edx, edx
mov eax, dword [esp + 0x6c]
je 0x40f90e
mov byte [0x45091c], 1
push edx
push eax
push 0x100
push 0x45091e
call fcn.0040f200
add esp, 0x10
mov ebp, dword [esp]
mov bl, 1
jmp 0x40f910
xor ebx, ebx
push ebp
call fcn.0043f730
add esp, 4
mov eax, ebx
add esp, 0x8c
pop esi
pop edi
pop ebx
pop ebp
ret