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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x90
mov edx, dword [esp + 0xa4]
mov dword [esp + 0xc], 0x722a6669
mov dword [esp + 0x10], 0x5e585c20
lea ebx, [esp + 0x14]
mov byte [esp + 0x14], 0xb0
mov dword [esp + 0x15], 0
mov byte [esp + 0x19], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xde
xor cl, byte [esp + eax + 0xc]
add cl, 0xaa
mov byte [esp + eax + 0xc], cl
inc eax
cmp eax, 0xe
jne 0x40f190
lea eax, [esp + 0x87]
lea ebp, [esp + 0xc]
mov esi, ebp
mov ecx, 2
mov edi, eax
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
lea edi, [esp + 0x8f]
xor ecx, ecx
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
movzx ecx, byte [esp + 0x14]
mov byte [esp + 0x8f], cl
mov dword [esp + 0xc], 0x57e54907
mov dword [esp + 0x10], 0x53ee55e6
mov dword [esp + 0x14], 0x5fec51fd
mov dword [esp + 0x18], 0x5b2f5de0
mov dword [esp + 0x1c], 0xa71f5904
mov dword [esp + 0x20], 0xa30fa514
mov dword [esp + 0x24], 0xafcea1e6
mov dword [esp + 0x28], 0xab1aad0d
mov dword [esp + 0x2c], 0xb702a918
mov dword [esp + 0x30], 0xb31db51d
mov dword [esp + 0x34], 0xbf02b111
mov dword [esp + 0x38], 0xbb09bd15
mov dword [esp + 0x3c], 0x87f5b90a
mov dword [esp + 0x40], 0x83f7853c
mov dword [esp + 0x44], 0x8f35813b
mov dword [esp + 0x48], 0x8bff8d37
mov dword [esp + 0x4c], 0x97258922
mov dword [esp + 0x50], 0x9327952a
mov dword [esp + 0x54], 0x9f2391e5
mov dword [esp + 0x58], 0x9b2e9d22
mov dword [esp + 0x5c], 0xe7549935
mov dword [esp + 0x60], 0xe351e54b
mov dword [esp + 0x64], 0xef43e14c
mov dword [esp + 0x68], 0xebffed40
mov dword [esp + 0x6c], 0xf7f6e9fe
mov word [esp + 0x70], 0
mov ecx, 0xee
mov edi, 0x11
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, edi
and esi, 0x12
mov ebx, ecx
and ebx, 0xed
or ebx, esi
xor bl, byte [esp + ecx - 0xe2]
xor bl, 0x12
add bl, 0x5a
mov byte [esp + ecx - 0xe2], bl
inc ecx
dec edi
cmp ecx, 0x154
jne 0x40f2c0
mov dword [esp + 0x74], 0x39953bed
mov dword [esp + 0x78], 0x25b127a8
mov word [esp + 0x7c], 0x2324
mov dword [esp + 0x7e], 0
mov ecx, 0x6f1b694b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx - 0x6f1b68d7]
xor esi, ecx
mov edi, esi
mov ebx, esi
xor ebx, 0x88
add ebx, esi
and esi, 0x88
and edi, 0x77
sub ebx, edi
add ebx, esi
inc bl
mov byte [esp + ecx - 0x6f1b68d7], bl
inc ecx
cmp ecx, 0x6f1b6959
jne 0x40f320
lea ecx, [esp + 8]
lea esi, [esp + 0x74]
push 0
push ecx
push 8
push eax
push ebp
push esi
push edx
call fcn.0040fee0
add esp, 0x1c
test al, al
je 0x40f4b4
mov dword [esp + 0xc], 0x56bebb
mov eax, 0x8e
mov ecx, 0x71
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x82]
mov edx, ecx
xor edx, eax
and edx, esi
xor edx, eax
add dl, 0x3a
mov byte [esp + eax - 0x82], dl
inc eax
dec ecx
cmp eax, 0x92
jne 0x40f390
xor edx, edx
mov eax, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
movsx ecx, byte [eax + edx]
movzx ebx, byte [esp + edx + 0xc]
test ecx, ecx
je 0x40f3d2
inc edx
cmp cl, bl
je 0x40f3c0
movsx edx, bl
mov esi, ecx
not esi
and esi, edx
not edx
and edx, ecx
mov bl, 1
cmp edx, esi
je 0x40f63e
mov dword [esp + 4], eax
mov dword [esp + 0xc], 0xf7c1c4f3
mov dword [esp + 0x10], 0x67f8fafd
mov dword [esp + 0x14], 0
mov edx, 0x16377b68
mov esi, 0xe9c88597
nop
movzx ebp, byte [esp + esi + 0x16377a75]
lea eax, [esi + 0x843ab01]
mov ecx, eax
or ecx, ebp
mov ebx, ebp
not ebx
lea edi, [edx - 1]
or ebx, edi
and ebx, ecx
not ebx
and ebx, eax
mov eax, ebx
and eax, 2
mov ecx, ebx
or ebx, 2
imul ebx, eax
xor eax, 2
and ecx, 0xf20c30bd
imul ecx, eax
add ebx, ecx
add edx, ebx
mov ecx, esi
sub ecx, ebx
xor edx, ebp
and ecx, ebp
add ecx, ecx
sub ecx, edx
add cl, 8
mov byte [esp + esi + 0x16377a75], cl
inc esi
mov edx, edi
cmp edi, 0x16377b5c
jne 0x40f410
movzx ebx, byte [esp + 0xc]
mov eax, dword [esp + 4]
mov ecx, eax
test bl, bl
lea ebp, [esp + 0xc]
je 0x40f4bb
mov edx, ebp
mov edi, eax
mov ecx, eax
jmp 0x40f497
movzx ebx, byte [edx]
test bl, bl
je 0x40f4bb
mov bh, byte [edi]
test bh, bh
je 0x40f63c
inc edi
inc edx
lea esi, [ecx + 1]
cmp bh, bl
je 0x40f4ae
mov ecx, esi
mov edi, esi
je 0x40f490
mov edx, ebp
jmp 0x40f490
xor ebx, ebx
jmp 0x40f647
xor edx, edx
test ecx, ecx
je 0x40f63c
mov dword [esp + 0xc], 0x82998c96
mov dword [esp + 0x10], 0x9989c9eb
mov dword [esp + 0x14], 0xd1d49e9d
mov dword [esp + 0x18], 0x8e9a908a
mov dword [esp + 0x1c], 0x39dcf89f
mov word [esp + 0x20], 0
mov byte [esp + 0x22], 0
xor ecx, ecx
nop
nop
nop
nop
nop
mov eax, edx
and eax, 0xe
mov ebx, ecx
xor ebx, 0xc7
add ebx, eax
xor bl, byte [esp + ecx + 0xc]
add bl, 0x1d
mov byte [esp + ecx + 0xc], bl
inc ecx
add edx, 2
cmp ecx, 0x17
jne 0x40f500
movzx ebx, byte [esp + 0xc]
mov eax, dword [esp + 4]
mov dword [esp], eax
test bl, bl
je 0x40f567
lea edx, [esp + 0xc]
mov esi, edx
mov edi, eax
mov dword [esp], eax
jmp 0x40f547
movzx ebx, byte [esi]
test bl, bl
je 0x40f567
movzx ecx, byte [edi]
test cl, cl
je 0x40f63c
inc edi
inc esi
mov ebp, dword [esp]
inc ebp
cmp cl, bl
je 0x40f561
mov dword [esp], ebp
mov edi, ebp
je 0x40f540
mov esi, edx
jmp 0x40f540
xor edx, edx
mov edi, dword [esp]
test edi, edi
je 0x40f63c
mov word [esp + 0xc], 0x3752
mov byte [esp + 0xe], 0x72
mov dword [esp + 0xf], 0
mov byte [esp + 0x13], 0
xor ebx, ebx
nop
movzx ecx, byte [esp + ebx + 0xc]
mov esi, ebx
xor esi, 0xf2
mov eax, edx
and eax, 0xa
sub esi, eax
add esi, 0x21
mov eax, ecx
and eax, 0x63
or eax, 0x80
and ecx, 0xffffff9c
xor ecx, esi
xor ecx, eax
xor cl, 0x7f
add cl, 0x64
mov byte [esp + ebx + 0xc], cl
inc ebx
add edx, 2
cmp ebx, 8
jne 0x40f590
add edi, 0x13
movzx ebx, byte [esp + 0xc]
test bl, bl
je 0x40f61a
lea esi, [esp + 0xc]
mov edx, edi
mov dword [esp], edi
mov eax, dword [esp + 4]
jmp 0x40f5f7
movzx ebx, byte [esi]
test bl, bl
je 0x40f613
movzx ecx, byte [edx]
test cl, cl
je 0x40f63c
inc edx
inc esi
lea ebp, [edi + 1]
cmp cl, bl
je 0x40f60b
mov edi, ebp
mov edx, ebp
je 0x40f5f0
lea esi, [esp + 0xc]
jmp 0x40f5f0
test edi, edi
mov edi, dword [esp]
je 0x40f63c
mov byte [0x451be4], 1
push edi
push 0x100
push 0x451be6
call fcn.0040eee0
add esp, 0xc
mov eax, dword [esp + 8]
mov bl, 1
jmp 0x40f63e
xor ebx, ebx
push eax
call fcn.0043fc00
add esp, 4
mov eax, ebx
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret