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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x88
mov dword [esp + 4], 0xaef6c2c1
mov dword [esp + 8], 0xc2c0fcf8
lea ebx, [esp + 0xc]
mov byte [esp + 0xc], 0x58
mov dword [esp + 0xd], 0
mov eax, 0x7656e298
mov esi, 0x67
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x7656e294]
mov ecx, esi
xor ecx, eax
and ecx, edx
xor ecx, eax
mov edx, ecx
xor edx, 0xf9
and ecx, 6
add ecx, ecx
sub ecx, edx
inc cl
mov byte [esp + eax - 0x7656e294], cl
inc eax
dec esi
cmp eax, 0x7656e2a5
jne 0x40f3a0
lea eax, [esp + 0x7f]
lea edx, [esp + 4]
mov ecx, 2
mov edi, eax
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0x87]
xor ecx, ecx
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
movzx ecx, byte [esp + 0xc]
mov byte [esp + 0x87], cl
mov dword [esp + 4], 0x9f6d995f
mov dword [esp + 8], 0xa3569d6e
mov dword [esp + 0xc], 0xa754a145
mov dword [esp + 0x10], 0xab87a550
mov dword [esp + 0x14], 0xaf57a97c
mov dword [esp + 0x18], 0xb357ad5c
mov dword [esp + 0x1c], 0xb796b18e
mov dword [esp + 0x20], 0xbb4ab555
mov dword [esp + 0x24], 0xbf52b948
mov dword [esp + 0x28], 0x43a5bd55
mov dword [esp + 0x2c], 0x47b241a1
mov dword [esp + 0x30], 0x4bb945ad
mov dword [esp + 0x34], 0x4f7d49ba
mov dword [esp + 0x38], 0x537f4db4
mov dword [esp + 0x3c], 0x57ad51ab
mov dword [esp + 0x40], 0x5b7755af
mov dword [esp + 0x44], 0x5fad59b2
mov dword [esp + 0x48], 0x638f5daa
mov dword [esp + 0x4c], 0x6793614d
mov dword [esp + 0x50], 0x6b866592
mov dword [esp + 0x54], 0x6f9c698d
mov dword [esp + 0x58], 0x73816d8b
mov dword [esp + 0x5c], 0x77937194
mov dword [esp + 0x60], 0x7b777590
mov dword [esp + 0x64], 0x7f7e7976
mov byte [esp + 0x6a], 0
mov word [esp + 0x68], 0
mov ecx, 0x5a
mov edi, 0xa5
movzx ebx, byte [esp + ecx - 0x56]
mov edx, ebx
not edx
lea ebp, [ebx + ebx]
not ebp
add ebp, ebx
or ebp, edx
and ebp, ecx
and ebx, edi
or ebx, ebp
add bl, 0x3e
mov byte [esp + ecx - 0x56], bl
inc ecx
dec edi
cmp ecx, 0xc1
jne 0x40f4e0
mov dword [esp + 0x70], 0x21852755
mov dword [esp + 0x74], 0x3d992390
mov dword [esp + 0x78], 0x3f3c
mov edx, 0x72653c89
mov esi, 6
nop
nop
nop
nop
nop
movzx ebp, byte [esp + edx - 0x72653c19]
lea ebx, [ebp*2]
not ebx
add ebx, ebp
and ebx, edx
mov edi, esi
and edi, 0xf
mov ecx, edx
and ecx, 0x90
or ecx, edi
xor ecx, 0xf0
and ecx, ebp
or ecx, ebx
add cl, 0x53
mov byte [esp + edx - 0x72653c19], cl
inc edx
dec esi
cmp edx, 0x72653c95
jne 0x40f530
mov ecx, esp
lea edx, [esp + 0x70]
push 0
push ecx
push 8
push eax
lea eax, [esp + 0x14]
push eax
push edx
push dword [esp + 0xb4]
call int.0040ffc0
add esp, 0x1c
xor ebx, ebx
test al, al
je 0x40f7f9
mov dword [esp + 4], 0x229a9f
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
add al, 8
xor al, byte [esp + ebx + 4]
add al, 0xd8
mov byte [esp + ebx + 4], al
inc ebx
cmp ebx, 4
jne 0x40f5b0
xor ecx, ecx
mov eax, dword [esp]
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [eax + ecx]
mov dh, byte [esp + ecx + 4]
test dl, dl
je 0x40f5e1
inc ecx
cmp dl, dh
je 0x40f5d0
mov bl, 1
cmp dl, dh
je 0x40f7f0
mov dword [esp + 4], 0xa5b7b0a1
mov dword [esp + 8], 0x65d4d6af
mov dword [esp + 0xc], 0
mov ecx, 0x80dcf33b
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x7f230cc9]
mov esi, ecx
and esi, edx
add esi, esi
sub edx, esi
add edx, ecx
mov esi, edx
xor esi, 0x28
and edx, 0x57
add edx, edx
sub edx, esi
inc dl
mov byte [esp + ecx + 0x7f230cc9], dl
inc ecx
cmp ecx, 0x80dcf347
jne 0x40f610
movzx ebx, byte [esp + 4]
mov ecx, eax
test bl, bl
lea esi, [esp + 4]
je 0x40f684
mov edx, esi
mov edi, eax
mov ecx, eax
jmp 0x40f667
movzx ebx, byte [edx]
test bl, bl
je 0x40f684
mov bh, byte [edi]
test bh, bh
je 0x40f7ee
inc edi
inc edx
lea ebp, [ecx + 1]
cmp bh, bl
je 0x40f67e
mov ecx, ebp
mov edi, ebp
je 0x40f660
mov edx, esi
jmp 0x40f660
test ecx, ecx
je 0x40f7ee
mov dword [esp + 4], 0x36013c02
mov dword [esp + 8], 0x131f1df
mov dword [esp + 0xc], 0xe9f40a05
mov dword [esp + 0x10], 0x1a16281e
mov dword [esp + 0x14], 0x81ecc02b
mov ecx, 0xdb
mov edx, 0x25
nop
nop
mov esi, edx
or esi, 0x91
add esi, ecx
mov ebx, ecx
neg ebx
and ebx, 0x6e
or ebx, esi
xor bl, byte [esp + edx - 0x21]
xor bl, 0x91
add bl, 0x47
mov byte [esp + edx - 0x21], bl
dec ecx
inc edx
cmp edx, 0x39
jne 0x40f6c0
movzx ebx, byte [esp + 4]
mov ecx, eax
test bl, bl
je 0x40f724
lea edx, [esp + 4]
mov esi, edx
mov edi, eax
mov ecx, eax
jmp 0x40f707
movzx ebx, byte [esi]
test bl, bl
je 0x40f724
mov bh, byte [edi]
test bh, bh
je 0x40f7ee
inc edi
inc esi
lea ebp, [ecx + 1]
cmp bh, bl
je 0x40f71e
mov ecx, ebp
mov edi, ebp
je 0x40f700
mov esi, edx
jmp 0x40f700
test ecx, ecx
je 0x40f7ee
mov edi, ecx
mov word [esp + 4], 0x8992
mov byte [esp + 6], 0x4a
mov dword [esp + 7], 0
mov edx, 0x4f4dee13
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edx - 0x4f4dee0f]
xor ecx, edx
mov esi, 1
sub esi, ecx
and esi, 1
mov ebx, 0x5f
sub ebx, ecx
or ebx, 1
add ebx, esi
mov cl, 1
sub cl, bl
mov byte [esp + edx - 0x4f4dee0f], cl
inc edx
cmp edx, 0x4f4dee1a
jne 0x40f750
mov ecx, edi
add ecx, 0x13
movzx edx, byte [esp + 4]
test dl, dl
je 0x40f7c0
lea esi, [esp + 4]
mov edi, esi
mov ebp, ecx
mov dword [esp + 0x6c], ecx
jmp 0x40f7a7
movzx edx, byte [edi]
test dl, dl
je 0x40f7c4
mov dh, byte [ecx]
test dh, dh
je 0x40f7ee
inc ecx
inc edi
lea ebx, [ebp + 1]
cmp dh, dl
je 0x40f7ba
mov ebp, ebx
mov ecx, ebx
je 0x40f7a0
mov edi, esi
jmp 0x40f7a0
mov ebp, ecx
jmp 0x40f7cc
test ebp, ebp
mov ecx, dword [esp + 0x6c]
je 0x40f7ee
mov byte [0x44f500], 1
push ebp
push ecx
push 0x100
push 0x44f502
call case.0x40e7f4.14
add esp, 0x10
mov bl, 1
mov eax, dword [esp]
jmp 0x40f7f0
xor ebx, ebx
push eax
call fcn.0043e380
add esp, 4
mov eax, ebx
add esp, 0x88
pop esi
pop edi
pop ebx
pop ebp
ret