Function at 0x40f1d0
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], 0xde0a3a3f
mov dword [esp + 8], 0x3234080c
lea ebx, [esp + 0xc]
mov byte [esp + 0xc], 0x94
mov dword [esp + 0xd], 0
mov dword [esp + 0x10], 0
mov eax, 0xa5
mov esi, 0x5a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0xa1]
mov ecx, esi
xor ecx, eax
and ecx, edi
xor ecx, eax
add cl, 0xc7
mov byte [esp + eax - 0xa1], cl
inc eax
dec esi
cmp eax, 0xb5
jne 0x40f220
lea eax, [esp + 0x83]
lea esi, [esp + 4]
mov ebp, esi
mov edi, eax
mov ecx, 2
xchg esi, ebp
rep movsd dword es:[edi], dword [esi]
xchg esi, ebp
lea edi, [esp + 0x8b]
xor ecx, ecx
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
movzx ecx, byte [esp + 0xc]
mov byte [esp + 0x8b], cl
mov dword [esp + 4], 0xf96bfbc1
mov dword [esp + 8], 0xfd6aff6a
mov dword [esp + 0xc], 0xf160f367
mov dword [esp + 0x10], 0xf525f764
mov dword [esp + 0x14], 0xe965eb40
mov dword [esp + 0x18], 0xed75ef78
mov dword [esp + 0x1c], 0xe102e322
mov dword [esp + 0x20], 0xe576e747
mov dword [esp + 0x24], 0xd946db74
mov dword [esp + 0x28], 0xdd7bdf47
mov dword [esp + 0x2c], 0xd146d37b
mov dword [esp + 0x30], 0xd547d74f
mov dword [esp + 0x34], 0xc91bcb46
mov dword [esp + 0x38], 0xcd1dcf40
mov dword [esp + 0x3c], 0xc14bc345
mov dword [esp + 0x40], 0xc515c749
mov dword [esp + 0x44], 0xb92bbb5e
mov dword [esp + 0x48], 0xbd2dbf2e
mov dword [esp + 0x4c], 0xb139b36f
mov dword [esp + 0x50], 0xb52ab726
mov dword [esp + 0x54], 0xa938ab2f
mov dword [esp + 0x58], 0xad3faf0d
mov dword [esp + 0x5c], 0xa139a308
mov dword [esp + 0x60], 0xa555a704
mov dword [esp + 0x64], 0x999a9b5a
mov byte [esp + 0x68], 0
mov ecx, 0x80
nop
nop
nop
nop
nop
movzx ebx, byte [esi]
lea edi, [ebx + ebx]
not edi
add edi, ebx
and edi, ecx
not ebx
or ebx, ecx
xor ebx, edi
add bl, 0x85
mov byte [esi], bl
inc esi
dec ecx
cmp ecx, 0x1b
jne 0x40f350
mov dword [esp + 0x70], 0xb1ed8fdd
mov dword [esp + 0x74], 0xb5d9b320
mov word [esp + 0x78], 0xb7b4
mov dword [esp + 0x7a], 0
mov ecx, 0x1d
mov esi, 0x62
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx + 0x53]
mov ebp, ecx
and ebp, 0x1b
mov ebx, esi
and ebx, 0x64
or ebx, ebp
mov ebp, esi
and ebp, edi
xor ebx, edi
xor ebx, 0xe4
or ebx, ebp
add bl, 0xef
mov byte [esp + ecx + 0x53], bl
inc ecx
dec esi
cmp ecx, 0x2b
jne 0x40f3a0
mov ecx, esp
lea esi, [esp + 4]
lea edi, [esp + 0x70]
push 0
push ecx
push 8
push eax
push esi
push edi
push edx
call fcn.0040fd60
add esp, 0x1c
test al, al
je 0x40f514
mov word [esp + 4], 0x3a07
mov byte [esp + 6], 0x92
mov word [esp + 7], 0
mov eax, 0x24
mov ecx, 0x4da6a1db
nop
nop
nop
movzx edx, byte [esp + eax - 0x20]
mov edi, eax
xor edi, ecx
and edi, edx
xor edi, ecx
lea ebx, [edi + edi]
not ebx
lea edx, [edi + ebx]
mov ebp, 0xb4
sub ebp, edx
not edx
add edi, ebx
add edi, 0x8441294b
or edx, edi
and edx, 1
and ebp, 0xd4
and edi, 0x2b
or edi, ebp
xor edi, 0xd5
lea edx, [edi + edx*2]
mov byte [esp + eax - 0x20], dl
inc eax
dec ecx
cmp eax, 0x29
jne 0x40f410
xor edx, edx
mov eax, dword [esp]
nop
movsx ecx, byte [eax + edx]
movzx ebx, byte [esp + edx + 4]
test ecx, ecx
je 0x40f472
inc edx
cmp cl, bl
je 0x40f460
not bl
movsx edx, bl
inc ecx
mov bl, 1
add ecx, edx
je 0x40f6a0
mov dword [esp + 4], 0xbd4f40b1
mov dword [esp + 8], 0x2dbcbe47
mov word [esp + 0xc], 0
mov ecx, 0x37
mov edx, 0xc8
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, edx
and edi, 0xd3
mov ebx, ecx
and ebx, 0x2c
or ebx, edi
xor bl, byte [esp + ecx - 0x33]
xor bl, 0xd3
add bl, 0xed
mov byte [esp + ecx - 0x33], bl
inc ecx
dec edx
cmp ecx, 0x41
jne 0x40f4b0
movzx ebx, byte [esp + 4]
mov ecx, eax
test bl, bl
je 0x40f51b
mov edx, esi
mov edi, eax
mov ecx, eax
jmp 0x40f4f7
movzx ebx, byte [edx]
test bl, bl
je 0x40f51b
mov bh, byte [edi]
test bh, bh
je 0x40f69e
inc edi
inc edx
lea ebp, [ecx + 1]
cmp bh, bl
je 0x40f50e
mov ecx, ebp
mov edi, ebp
je 0x40f4f0
mov edx, esi
jmp 0x40f4f0
xor ebx, ebx
jmp 0x40f6a9
test ecx, ecx
je 0x40f69e
mov dword [esp + 4], 0x8a83f88a
mov dword [esp + 8], 0x9ff3cbd1
mov dword [esp + 0xc], 0x2fd08683
mov dword [esp + 0x10], 0x869eec86
mov dword [esp + 0x14], 0x7d8cc95
mov word [esp + 0x18], 0
mov ecx, 0xc6
mov edx, 0x19
nop
nop
nop
nop
mov esi, edx
and esi, 0x15
mov ebx, ecx
and ebx, 0xea
or ebx, esi
xor bl, byte [esp + ecx - 0xc2]
xor bl, 0x15
add bl, 0x22
mov byte [esp + ecx - 0xc2], bl
inc ecx
dec edx
cmp ecx, 0xdc
jne 0x40f560
movzx edx, byte [esp + 4]
mov ecx, eax
test dl, dl
je 0x40f5d4
lea ebp, [esp + 4]
mov esi, ebp
mov edi, eax
mov ecx, eax
jmp 0x40f5b7
movzx edx, byte [esi]
test dl, dl
je 0x40f5d4
mov dh, byte [edi]
test dh, dh
je 0x40f69e
inc edi
inc esi
lea ebx, [ecx + 1]
cmp dh, dl
je 0x40f5ce
mov ecx, ebx
mov edi, ebx
je 0x40f5b0
mov esi, ebp
jmp 0x40f5b0
test ecx, ecx
je 0x40f69e
mov edi, ecx
mov word [esp + 4], 0x6f02
mov byte [esp + 6], 0x22
mov word [esp + 7], 0
mov byte [esp + 9], 0
mov edx, 0xa9d6f8b8
mov esi, 0x47
movzx ecx, byte [esp + edx + 0x5629074c]
mov ebx, esi
xor ebx, edx
and ebx, ecx
xor ebx, edx
mov ecx, ebx
xor ecx, 0x98
and ebx, 0x67
add ebx, ebx
sub ebx, ecx
mov byte [esp + edx + 0x5629074c], bl
inc edx
dec esi
cmp edx, 0xa9d6f8be
jne 0x40f600
mov ecx, edi
add ecx, 0x13
movzx ebx, byte [esp + 4]
test bl, bl
je 0x40f670
lea esi, [esp + 4]
mov edi, esi
mov edx, ecx
mov dword [esp + 0x6c], ecx
jmp 0x40f657
movzx ebx, byte [edi]
test bl, bl
je 0x40f674
mov bh, byte [ecx]
test bh, bh
je 0x40f69e
inc ecx
inc edi
lea ebp, [edx + 1]
cmp bh, bl
je 0x40f66a
mov edx, ebp
mov ecx, ebp
je 0x40f650
mov edi, esi
jmp 0x40f650
mov edx, ecx
jmp 0x40f67c
test edx, edx
mov ecx, dword [esp + 0x6c]
je 0x40f69e
mov byte [0x44e324], 1
push edx
push ecx
push 0x100
push 0x44e326
call fcn.0040ef60
add esp, 0x10
mov eax, dword [esp]
mov bl, 1
jmp 0x40f6a0
xor ebx, ebx
push eax
call fcn.0043e710
add esp, 4
mov eax, ebx
add esp, 0x8c
pop esi
pop edi
pop ebx
pop ebp
ret