Function at 0x40f140
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], 0x92aaa6a9
mov dword [esp + 0xc], 0xbeb8bca0
lea ebp, [esp + 0x10]
mov byte [esp + 0x10], 0xd0
mov dword [esp + 0x11], 0
mov dword [esp + 0x14], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x4e
xor cl, byte [esp + eax + 8]
add cl, 0x7a
mov byte [esp + eax + 8], cl
inc eax
cmp eax, 0x10
jne 0x40f180
lea eax, [esp + 0x87]
lea ebx, [esp + 8]
mov edi, eax
mov ecx, 2
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
lea edi, [esp + 0x8f]
xor ebx, ebx
xor ecx, ecx
xchg esi, ebp
rep movsw word es:[edi], word [esi]
xchg esi, ebp
movzx ecx, byte [esp + 0x10]
mov byte [esp + 0x8f], cl
mov dword [esp + 8], 0x13a511d3
mov dword [esp + 0xc], 0xef62ed5a
mov dword [esp + 0x10], 0xeb5ce955
mov dword [esp + 0x14], 0xe713e568
mov dword [esp + 0x18], 0xe36be14c
mov dword [esp + 0x1c], 0xff43fd4c
mov dword [esp + 0x20], 0xfb1af932
mov dword [esp + 0x24], 0xf746f555
mov dword [esp + 0x28], 0xf346f140
mov dword [esp + 0x2c], 0xcf6dcd75
mov dword [esp + 0x30], 0xcb46c969
mov dword [esp + 0x34], 0xc771c57d
mov dword [esp + 0x38], 0xc335c176
mov dword [esp + 0x3c], 0xdf2bdd54
mov dword [esp + 0x40], 0xdb55d957
mov dword [esp + 0x44], 0xd723d55b
mov dword [esp + 0x48], 0xd365d16e
mov dword [esp + 0x4c], 0xaf1bad1e
mov dword [esp + 0x50], 0xab27a95d
mov dword [esp + 0x54], 0xa712a516
mov dword [esp + 0x58], 0xa314a11d
mov dword [esp + 0x5c], 0xbf09bd1f
mov dword [esp + 0x60], 0xbb07b904
mov dword [esp + 0x64], 0xb7a3b508
mov dword [esp + 0x68], 0xb3b2b1aa
mov byte [esp + 0x6e], 0
mov word [esp + 0x6c], 0
movzx ecx, byte [esp + ebx + 8]
lea edi, [ebx + 0xfc]
and edi, ecx
mov ebp, edi
and ebp, 0xfffffffd
mov edx, edi
and edx, 2
or edi, 2
imul edi, edx
xor edx, 2
imul edx, ebp
sub edi, ebx
mov ebp, 0x674c2fb
sub ebp, edi
sub ebp, edx
add edx, edi
add edx, 0x3fd45604
and ebp, ecx
not ecx
and ecx, edx
sub ebp, ecx
add ebp, 0x3f25ae13
mov ecx, ebp
and ecx, 1
xor ebp, 1
lea ecx, [ecx*2]
add ecx, ebp
mov byte [esp + ebx + 8], cl
mov ecx, ebx
xor ecx, 1
and ebx, 1
lea ebx, [ecx + ebx*2]
cmp ebx, 0x67
jb 0x40f2a0
mov dword [esp + 0x74], 0x339331e7
mov dword [esp + 0x78], 0x2fb72dbc
mov word [esp + 0x7c], 0x2928
mov dword [esp + 0x7e], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x4c
xor dl, byte [esp + ecx + 0x74]
add dl, 0x84
mov byte [esp + ecx + 0x74], dl
inc ecx
cmp ecx, 0xe
jne 0x40f330
lea ecx, [esp + 4]
lea edx, [esp + 0x74]
push 0
push ecx
push 8
push eax
lea eax, [esp + 0x18]
push eax
push edx
push dword [esp + 0xbc]
call fcn.0040ff90
add esp, 0x1c
xor ebx, ebx
test al, al
je 0x40f619
mov word [esp + 8], 0x766b
mov byte [esp + 0xa], 0x9e
mov word [esp + 0xb], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
add al, 0xda
xor al, byte [esp + ebx + 8]
add al, 0xbe
mov byte [esp + ebx + 8], al
inc ebx
cmp ebx, 5
jne 0x40f390
xor eax, eax
mov esi, dword [esp + 4]
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esi + eax]
movzx edx, byte [esp + eax + 8]
test cl, cl
je 0x40f3c2
inc eax
cmp cl, dl
je 0x40f3b0
mov bl, 1
cmp cl, dl
je 0x40f610
mov dword [esp], esi
mov dword [esp + 8], 0xcfd1dcc3
mov dword [esp + 0xc], 0x7fc8cad5
mov ecx, 0x216eac14
mov edx, 0xeb
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ecx - 0x216eac0c]
mov esi, edx
xor esi, ecx
and esi, eax
xor esi, ecx
mov eax, esi
or eax, 0xfe
add eax, esi
not esi
and esi, 1
add eax, esi
add al, 0x9d
mov byte [esp + ecx - 0x216eac0c], al
inc ecx
dec edx
cmp ecx, 0x216eac1c
jne 0x40f3f0
movzx eax, byte [esp + 8]
mov esi, dword [esp]
mov ecx, esi
test al, al
je 0x40f467
lea edx, [esp + 8]
mov ebp, esi
mov ecx, esi
jmp 0x40f447
movzx eax, byte [edx]
test al, al
je 0x40f467
mov ah, byte [ebp]
test ah, ah
je 0x40f524
inc ebp
inc edx
lea edi, [ecx + 1]
cmp ah, al
je 0x40f45f
mov ecx, edi
mov ebp, edi
je 0x40f440
lea edx, [esp + 8]
jmp 0x40f440
xor edx, edx
test ecx, ecx
je 0x40f524
mov dword [esp + 8], 0xc2b9ccb6
mov dword [esp + 0xc], 0xb9c909eb
mov dword [esp + 0x10], 0xf1f43ebd
mov dword [esp + 0x14], 0x4e3a304a
mov dword [esp + 0x18], 0xd9fc183f
mov ecx, 0xf7
nop
nop
lea eax, [edx + 8]
and eax, 0x22
mov esi, ecx
and esi, 0xd8
or esi, eax
xor esi, 0x27
mov eax, edx
or eax, 0xfa
and eax, esi
xor al, byte [esp + ecx - 0xef]
xor al, 5
add al, 0x2d
mov byte [esp + ecx - 0xef], al
inc ecx
dec edx
cmp ecx, 0x10b
jne 0x40f4a0
movzx edx, byte [esp + 8]
mov ebp, dword [esp]
test dl, dl
je 0x40f52b
lea eax, [esp + 8]
mov esi, eax
mov ecx, dword [esp]
mov edi, ecx
mov ebp, ecx
jmp 0x40f507
movzx edx, byte [esi]
test dl, dl
je 0x40f52b
mov dh, byte [edi]
test dh, dh
je 0x40f60b
inc edi
inc esi
lea ecx, [ebp + 1]
cmp dh, dl
je 0x40f51e
mov ebp, ecx
mov edi, ecx
je 0x40f500
mov esi, eax
jmp 0x40f500
xor ebx, ebx
jmp 0x40f610
test ebp, ebp
je 0x40f60b
mov dword [esp + 0x70], ebp
mov word [esp + 8], 0x2fc2
mov byte [esp + 0xa], 0xe2
mov word [esp + 0xb], 0
mov byte [esp + 0xd], 0
mov edx, 0x514a1928
mov esi, 0xaeb5e6d8
mov edi, 0xaeb5e6d8
nop
nop
movzx ecx, byte [esp + edi + 0x514a1930]
mov eax, edx
and eax, ecx
add eax, eax
lea ebp, [edx + ecx]
sub eax, ecx
add eax, esi
and ebp, 1
or eax, 1
lea ecx, [ebp*2]
add ecx, ebp
xor ecx, 2
sub ecx, eax
add cl, 0x37
mov byte [esp + edi + 0x514a1930], cl
inc edi
inc edx
dec esi
cmp edi, 0xaeb5e6de
jne 0x40f560
mov ebp, dword [esp + 0x70]
add ebp, 0x13
movzx edx, byte [esp + 8]
test dl, dl
je 0x40f5e2
lea edi, [esp + 8]
mov eax, ebp
mov esi, ebp
jmp 0x40f5c7
movzx edx, byte [edi]
test dl, dl
je 0x40f5e6
mov dh, byte [eax]
test dh, dh
je 0x40f60b
inc eax
inc edi
lea ecx, [esi + 1]
cmp dh, dl
je 0x40f5da
mov esi, ecx
mov eax, ecx
je 0x40f5c0
lea edi, [esp + 8]
jmp 0x40f5c0
mov esi, ebp
jmp 0x40f5ea
test esi, esi
je 0x40f60b
mov byte [0x44f43c], 1
push esi
push ebp
push 0x100
push 0x44f43e
call fcn.0040eea0
add esp, 0x10
mov esi, dword [esp + 4]
jmp 0x40f610
xor ebx, ebx
mov esi, dword [esp]
push esi
call fcn.0043e820
add esp, 4
mov eax, ebx
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret