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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x190
mov ebp, dword [0x44f1c0]
mov dword [esp + 0x110], 0xe3e2f9e0
mov word [esp + 0x114], 0
mov byte [esp + 0x116], 0
mov ecx, 0x28
mov edx, 0xd7
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 0xe8]
mov ebx, ecx
xor ebx, edx
and ebx, esi
xor ebx, edx
mov al, 0x37
sub al, bl
mov byte [esp + ecx + 0xe8], al
inc ecx
dec edx
cmp ecx, 0x2f
jne 0x40e200
mov ecx, dword [esp + 0x110]
mov dword [esp + 0x10], 0x611d67ed
mov dword [esp + 0x14], 0x7d1a6316
mov dword [esp + 0x18], 0x79f27ff0
mov dword [esp + 0x1c], 0x754c7b08
mov dword [esp + 0x20], 0x71027708
mov dword [esp + 0x24], 0x8d727304
xor edx, edx
nop
nop
nop
nop
nop
mov eax, edx
add al, 0x69
xor al, byte [esp + edx + 0x10]
add al, 0xf3
mov byte [esp + edx + 0x10], al
mov eax, edx
and eax, 1
xor edx, 1
lea edx, [edx + eax*2]
cmp edx, 0x18
jb case.default.0x40e296
lea edi, [esp + 0x10]
push ecx
push 0
push edi
call ebp
mov ecx, 0x44f188
push eax
call fcn.0043f7a0
movzx eax, al
jmp dword [eax*4 + 0x4499f8]
xor eax, eax
jmp 0x40e2f1
push 0xf2ffbc90
push dword [0x44f188]
call fcn.004433b0
add esp, 8
mov dword [0x44f190], eax
push 0x5c21b65e
push dword [0x44f188]
call fcn.004433b0
add esp, 8
mov dword [0x44f194], eax
push 0xc2eb3b71
push dword [0x44f188]
call fcn.004433b0
add esp, 8
mov esi, eax
jmp dword [0x449a04]
test cl, cl
setne al
add esp, 0x190
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, 1
jmp dword [eax*4 + 0x449a30]
add ebp, 4
xor eax, eax
cmp ebp, 0x24
setne al
jmp dword [eax*4 + 0x449a10]
lea ebx, [esp + 0x110]
push ebx
push dword [ebp + 0x4479a4]
call fcn.0043b2f0
add esp, 8
push 0
push ebx
push 0x80
push edi
call fcn.0040ea10
add esp, 0x10
jmp dword [0x449a18]
push edi
call fcn.0040ecc0
add esp, 4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push edi
call fcn.0040ecc0
add esp, 4
jmp dword [0x449a24]
movzx eax, al
jmp dword [eax*4 + 0x449a28]
movzx ecx, word [esp + 0x10]
mov eax, 0x44f1c4
test cx, cx
je 0x40e431
mov edx, esi
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x40e420
mov word [eax], 0
xor eax, eax
mov cl, 1
mov dword [esp], ecx
jmp dword [eax*4 + 0x449a30]
mov eax, dword [esp]
mov ecx, eax
and cl, 1
movzx eax, cl
jmp dword [eax*4 + 0x449a38]
mov byte [esp + 4], cl
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0xd1bacfa4
mov dword [esp + 0x14], 0xd5a2d3a4
mov dword [esp + 0x18], 0xd9ecd7a1
mov dword [esp + 0x1c], 0xddebdbe9
mov dword [esp + 0x20], 0xe1aadfa9
mov dword [esp + 0x24], 0xe581e387
mov dword [esp + 0x28], 0xe983e78b
mov dword [esp + 0x2c], 0xed85eb99
mov dword [esp + 0x30], 0xf199ef83
mov dword [esp + 0x34], 0xf599f39e
mov dword [esp + 0x38], 0xf98df780
mov dword [esp + 0x3c], 0xfd9ffbd6
mov dword [esp + 0x40], 0x191ff8d
mov dword [esp + 0x44], 0x5720331
mov dword [esp + 0x48], 0x9770776
mov dword [esp + 0x4c], 0xd610b6e
mov dword [esp + 0x50], 0x11690f60
mov dword [esp + 0x54], 0x15231365
mov dword [esp + 0x58], 0x1920172d
mov dword [esp + 0x5c], 0x1d2c1b2f
mov dword [esp + 0x60], 0x212d1f2f
mov dword [esp + 0x64], 0x2519231b
mov dword [esp + 0x68], 0x2914271d
mov dword [esp + 0x6c], 0x2d1f2b1c
mov dword [esp + 0x70], 0x311d2f19
mov dword [esp + 0x74], 0x3502330b
mov dword [esp + 0x78], 0x39363704
mov byte [esp + 0x7c], 0
mov eax, 0x44d290ec
mov ecx, 0x89a521d8
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x44d290dc]
mov ebx, ecx
and ebx, 0x8805209a
mov ebp, eax
xor ebp, 0x6527f24d
mov esi, 0x6b
sub esi, ebx
sub esi, ebp
mov edi, edx
not edi
add ebx, ebp
add ebx, 0x14
mov ebp, ebx
and ebp, 0x9c
and esi, 0x63
or esi, ebp
lea edi, [edx + edi*2]
inc edi
xor esi, 0x9c
or esi, edi
or ebx, edx
and ebx, esi
add bl, 0x7f
mov byte [esp + eax - 0x44d290dc], bl
inc eax
add ecx, 2
cmp eax, 0x44d29159
jne 0x40e560
lea eax, [esp + 0xc]
lea ecx, [esp + 8]
push eax
push ecx
lea edi, [esp + 0x18]
push edi
call fcn.0040f250
add esp, 0xc
movzx eax, al
jmp dword [eax*4 + 0x449a40]
movzx ecx, byte [esp + 4]
jmp case.0x40e296.17
jmp dword [0x449a5c]
push 0xf379b9d8
push dword [0x44f188]
call fcn.004433b0
add esp, 8
mov dword [0x44f1a0], eax
push 0xd225aa76
push dword [0x44f188]
call fcn.004433b0
add esp, 8
mov dword [0x44f1a4], eax
push 0xa373434b
push dword [0x44f188]
call fcn.004433b0
add esp, 8
mov dword [0x44f1a8], eax
push 0xce21043e
push dword [0x44f188]
call fcn.004433b0
add esp, 8
mov dword [0x44f1ac], eax
push 0x7eecc3d7
push dword [0x44f188]
call fcn.004433b0
add esp, 8
mov dword [0x44f1b0], eax
push 0x2c692ac4
push dword [0x44f188]
call fcn.004433b0
add esp, 8
mov dword [0x44f1b4], eax
push 0xf13635ff
push dword [0x44f188]
call fcn.004433b0
add esp, 8
mov dword [0x44f1b8], eax
push 0x8040f1d2
push dword [0x44f188]
call fcn.004433b0
add esp, 8
mov dword [0x44f1bc], eax
xor ecx, ecx
lea esi, [esp + 0x12]
xor eax, eax
mov dword [esp], 0
cmp ecx, 0x24
setne al
xor ebp, ebp
jmp dword [eax*4 + 0x449a10]
mov dword [0x44f198], esi
push 0xa645cf1f
push dword [0x44f188]
call fcn.004433b0
add esp, 8
mov dword [0x44f19c], eax
mov dword [0x44f198], esi
push 0xa645cf1f
push dword [0x44f188]
call fcn.004433b0
add esp, 8
mov dword [0x44f19c], eax
jmp dword [0x449a08]
mov dword [esp + 0x10], 0x363a0648
mov dword [esp + 0x14], 0x313b673a
mov dword [esp + 0x18], 0x420f0e3b
mov dword [esp + 0x1c], 0x1123207e
mov dword [esp + 0x20], 0x382e2417
mov dword [esp + 0x24], 0x18182c28
mov dword [esp + 0x28], 0x302d2125
mov dword [esp + 0x2c], 0xd6ddd022
mov word [esp + 0x30], 0xa992
mov byte [esp + 0x32], 0x6a
mov dword [esp + 0x33], 0
xor eax, eax
nop
nop
nop
nop
mov ecx, eax
add cl, 0xe3
xor cl, byte [esp + eax + 0x10]
add cl, 0x91
mov byte [esp + eax + 0x10], cl
inc eax
cmp eax, 0x27
jne 0x40e930
mov ecx, dword [esp + 8]
movzx ebx, byte [esp + 0x10]
test bl, bl
je 0x40e980
mov edx, edi
mov eax, ecx
jmp 0x40e967
movzx ebx, byte [edx]
test bl, bl
je 0x40e990
mov bh, byte [ecx]
test bh, bh
je 0x40e988
inc ecx
inc edx
lea esi, [eax + 1]
cmp bh, bl
je 0x40e97a
mov eax, esi
mov ecx, esi
je 0x40e960
mov edx, edi
jmp 0x40e960
mov eax, ecx
jmp dword [0x449a60]
xor eax, eax
jmp dword [0x449a60]
jmp dword [0x449a60]
mov dword [esp + 0x10], 0x363a0648
mov dword [esp + 0x14], 0x313b673a
mov dword [esp + 0x18], 0x420f0e3b
mov dword [esp + 0x1c], 0x1123207e
mov dword [esp + 0x20], 0x382e2417
mov dword [esp + 0x24], 0x18182c28
mov dword [esp + 0x28], 0x302d2125
mov dword [esp + 0x2c], 0xd6ddd022
mov word [esp + 0x30], 0xa992
mov byte [esp + 0x32], 0x6a
mov dword [esp + 0x33], 0
xor eax, eax
nop
nop
nop
nop
mov ecx, eax
add cl, 0xe3
xor cl, byte [esp + eax + 0x10]
add cl, 0x91
mov byte [esp + eax + 0x10], cl
inc eax
cmp eax, 0x27
jne 0x40e9f0
jmp 0x40e8d6
int3
loop 0x449a3b
add byte [ecx - 0x6bffbf1e], ah
call 0xe8f69a46
inc eax
add ch, ch
in eax, 0x40
add byte [eax + ebp*8 - 0x1bbbffc0], dl
inc eax
add byte [esi - 0xfffbf1d], ch
jecxz 0x449a5b
add bl, bl
jecxz 0x449a5f
add al, dh
jecxz 0x449a63
add bh, bh
jecxz 0x449a67
add byte [eax + 0x90040e3], dl
in al, 0x40
add byte [esp + 0x40], al
add byte [ebx - 0x1ba9ffc0], bl
inc eax
add ah, ch
loop 0x449a7f
add ch, bl
in eax, 0x40
add bh, ah
in eax, 0x40
add byte [ecx], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [ebx], cl
ljmp 0x40
add dh, dl
call 0xe7569aa2
inc eax
add byte [edx], dl
out 0x40, eax
add byte [esi + 0x710040e9], dl
jecxz 0x449aab
add byte [ecx - 0x1d], dh
inc eax
add byte [eax], ah
out 0x40, eax
add byte [edi - 0x1849ffc0], ch
inc eax
add byte [esi + 0x80040e7], dh
call 0xe3b59ac2
add byte [ecx - 0x1d], dh
inc eax
add byte [esi], dl
call 0x459aca
add byte [eax], al
add dword [eax], eax
add byte [eax], al
add dword [eax], eax
add byte [eax], al
or ebp, edx
inc eax
add byte [ebx - 0x1d], ch
inc eax
add byte [ebx], bh
inc eax
add byte [edx], bh
call 0xe8a89ae6
inc eax
add byte [edx], bh
call 0xe70f9aee
inc eax
add bl, cl
out 0x40, al
add byte [ebx], cl
out 0x40, eax
add ch, dl
out 0x40, al
add byte [ebp - 0x1d], dl
inc eax
add byte [eax], al
jecxz 0x449aff
add byte [eax], dl
out 0x40, eax
add byte [eax], dl
out 0x40, eax
add byte [ecx - 0x1d], dh
inc eax
add byte [eax], dl
out 0x40, eax
add byte [ecx], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [ebp + 0x50040e2], bl
inc eax
add byte [ebx + esi*8], cl
inc eax
add ch, ah
cmc
inc eax
add ah, dh
cmc
inc eax
add byte [esi - 0xa], ch
inc eax
add byte [edi - 0x62ffbf0a], al
test byte [eax], 0xa5
test byte [eax], 0x87
clc
inc eax
add byte [esi], bh
add byte [edi + 0x3e0040f8], al
clc
inc eax
add byte [esi], bh
clc
inc eax
add ch, bl
clc
inc eax
add byte [edi], bl
clc
inc eax
add bl, ch
clc
inc eax
add byte [ebx], dl
clc
inc eax
add byte [edi], bl
stc
inc eax
add byte [ebx], dl
clc
inc eax
add byte [ebp - 7], al
inc eax
add ch, ah
test dword [eax], 0x40f716
inc eax
test dword [eax], 0x40f750
outsb dx, byte [esi]
test dword [eax], 0x40f740
jl 0x449b39
inc eax
add ch, dl
test dword [eax], 0x40f7b0
test edi, esi
inc eax
add byte [eax + 0x1f0040f7], dh
test dword [eax], 0x40f730
xor bh, dh
inc eax
add byte [eax], dh
test dword [eax], 0x40f732
cmp edi, esi
inc eax
add ch, ah
test dword [eax], 0x40fc3f
dec ebp
cld
inc eax
add byte [esp + edi*8 - 0x34dffc0], ch
inc eax
add byte [eax - 1], ah
inc eax
add byte [edi], cl
add byte [ecx], al
pushal
inc dword [eax]
lds eax, [eax]
inc ecx
add bl, dl
add byte [ecx], al
cmpsd dword [esi], dword es:[edi]
std
inc eax
add cl, dh
inc byte [eax]
mov esp, 0x540040fd
inc dword [eax]
inc dword ss:[eax]
push esp
inc dword [eax]
std
cld
inc eax
add byte [ebp + 0x660040fd], cl
std
inc eax
add byte [eax], dl
std
inc eax
add byte [ecx + 0x3d0040fd], al
std
inc eax
add byte [ebp - 0x60ffbf03], cl
std
inc eax
add byte [ebx - 0x1fffbf03], bl
cld
inc eax
add al, ah
cld
inc eax
add dl, ah
cld
inc eax
add al, ah
cld
inc eax
add bh, dh
cld
inc eax
add al, al
cld
inc eax
add al, al
cld
inc eax
add al, al
cld
inc eax
add byte [eax], bl
add dword [ecx], eax
sar ah, 0x40
add byte [eax], al
add dword [ecx], eax
or dword [ecx], eax
inc ecx
add byte [eax], bl
add dword [ecx], eax
add byte [ecx], al
inc ecx
add byte [ecx], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [eax], bl
add dword [ecx], eax
add dword [eax], eax
add byte [eax], al
lock add byte [ecx], al
in eax, dx
add byte [ecx], al
enter 0x4103, 0
iretd