Function at 0x40ebe0
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 + 8], 0x9e56a2a1
mov dword [esp + 0xc], 0xa2a0aca8
lea ebp, [esp + 0x10]
mov byte [esp + 0x10], 0xc8
mov dword [esp + 0x11], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x50
xor cl, byte [esp + eax + 8]
add cl, 0x70
mov byte [esp + eax + 8], cl
inc eax
cmp eax, 0xd
jne 0x40ec20
lea eax, [esp + 0x87]
lea esi, [esp + 8]
mov ebx, esi
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], 0x8f3d89cf
mov dword [esp + 0xc], 0x83368d3e
mov dword [esp + 0x10], 0x87348125
mov dword [esp + 0x14], 0x9be78530
mov dword [esp + 0x18], 0x9f1799cc
mov dword [esp + 0x1c], 0x93379d2c
mov dword [esp + 0x20], 0x97f691de
mov dword [esp + 0x24], 0xeb5a9535
mov dword [esp + 0x28], 0xef52e958
mov dword [esp + 0x2c], 0xe345ed55
mov dword [esp + 0x30], 0xe752e141
mov dword [esp + 0x34], 0xfb49e55d
mov dword [esp + 0x38], 0xff8df94a
mov dword [esp + 0x3c], 0xf38ffd74
mov dword [esp + 0x40], 0xf77df17b
mov dword [esp + 0x44], 0xcbb7f57f
mov dword [esp + 0x48], 0xcf7dc972
mov dword [esp + 0x4c], 0xc37fcd7a
mov dword [esp + 0x50], 0xc773c1bd
mov dword [esp + 0x54], 0xdb66c572
mov dword [esp + 0x58], 0xdf6cd97d
mov dword [esp + 0x5c], 0xd361dd7b
mov dword [esp + 0x60], 0xd773d174
mov dword [esp + 0x64], 0x2b37d570
mov dword [esp + 0x68], 0x2f2e2936
mov word [esp + 0x6c], 0
nop
nop
nop
mov ecx, ebx
add cl, 0x22
xor cl, byte [esp + ebx + 8]
add cl, 0x56
mov byte [esp + ebx + 8], cl
inc ebx
cmp ebx, 0x66
jne 0x40ed40
mov dword [esp + 0x74], 0x13b311e7
mov dword [esp + 0x78], 0xef57ed5c
mov word [esp + 0x7c], 0xe9e8
mov dword [esp + 0x7e], 0
mov byte [esp + 0x82], 0
mov ecx, 0xfc
mov edi, 3
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + ecx - 0x88]
mov ebx, edi
xor ebx, ecx
and ebx, ebp
xor ebx, ecx
add bl, 0x14
mov byte [esp + ecx - 0x88], bl
inc ecx
dec edi
cmp ecx, 0x10b
jne 0x40ed90
lea ecx, [esp + 4]
lea edi, [esp + 0x74]
push 0
push ecx
push 8
push eax
push esi
push edi
push edx
call fcn.0040f750
add esp, 0x1c
test al, al
je 0x40ef35
mov dword [esp + 8], 0x22babf
mov eax, 0x2d43d3b8
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x2d43d3b0]
xor ecx, eax
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, edx
add ecx, 0xd6f44a34
mov edx, ecx
xor edx, 0xcd
and ecx, 0x32
add ecx, ecx
sub ecx, edx
mov byte [esp + eax - 0x2d43d3b0], cl
inc eax
cmp eax, 0x2d43d3bc
jne 0x40edf0
xor ecx, ecx
mov edi, dword [esp + 4]
nop
nop
movsx eax, byte [edi + ecx]
movzx edx, byte [esp + ecx + 8]
test eax, eax
je 0x40ee42
inc ecx
cmp al, dl
je 0x40ee30
movsx ecx, dl
mov edx, eax
not edx
and edx, ecx
not ecx
and ecx, eax
mov bl, 1
cmp ecx, edx
je 0x40f046
mov dword [esp], edi
mov dword [esp + 8], 0xfbc9c4f7
mov dword [esp + 0xc], 0x73c0c6cd
mov word [esp + 0x10], 0
mov byte [esp + 0x12], 0
mov edi, 0xbd108396
mov ebp, 0x2ef7c69
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + edi + 0x42ef7c72]
mov eax, ebp
and eax, 0x2606035
mov ecx, edi
and ecx, 0x910028a
or ecx, eax
xor ecx, ebx
mov edx, ecx
xor edx, 0x35
add ecx, ecx
xor ecx, 0x6b
sub edx, ecx
and edx, edi
mov eax, edx
or al, 0xfd
inc al
mov ecx, edx
and cl, 0xbd
mul cl
mov ecx, eax
add cl, bl
mov eax, edx
shr al, 1
and al, 1
or dl, 2
mul dl
add al, al
sub cl, al
movzx eax, cl
add eax, edi
add al, 0x12
mov byte [esp + edi + 0x42ef7c72], al
inc edi
dec ebp
cmp edi, 0xbd1083a1
jne 0x40ee90
movzx ebx, byte [esp + 8]
mov eax, dword [esp]
test bl, bl
je 0x40ef3c
mov ecx, esi
mov eax, dword [esp]
mov edi, eax
jmp 0x40ef17
movzx ebx, byte [ecx]
test bl, bl
je 0x40ef3c
movzx edx, byte [edi]
test dl, dl
je 0x40f041
inc ecx
inc edi
lea ebp, [eax + 1]
cmp dl, bl
je 0x40ef2f
mov eax, ebp
mov edi, ebp
je 0x40ef10
mov ecx, esi
jmp 0x40ef10
xor ebx, ebx
jmp 0x40f04f
xor ecx, ecx
test eax, eax
je 0x40f041
mov dword [esp + 8], 0x92a994ae
mov dword [esp + 0xc], 0xb989c9fb
mov dword [esp + 0x10], 0xc1ccb6b5
mov dword [esp + 0x14], 0xb6ba80ba
mov dword [esp + 0x18], 0x29c4e887
mov byte [esp + 0x1c], 0
mov edx, dword [esp]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
add al, 0x4b
xor al, byte [esp + ecx + 8]
add al, 0x89
mov byte [esp + ecx + 8], al
inc ecx
cmp ecx, 0x15
jne 0x40ef80
movzx ecx, byte [esp + 8]
mov eax, edx
test cl, cl
je 0x40efd5
lea ebp, [esp + 8]
mov esi, ebp
mov eax, dword [esp]
mov edi, eax
jmp 0x40efb7
movzx ecx, byte [esi]
test cl, cl
je 0x40efd5
movzx edx, byte [edi]
test dl, dl
je 0x40f041
inc esi
inc edi
lea ebx, [eax + 1]
cmp dl, cl
je 0x40efcf
mov eax, ebx
mov edi, ebx
je 0x40efb0
mov esi, ebp
jmp 0x40efb0
xor ecx, ecx
test eax, eax
je 0x40f041
mov edx, eax
mov dword [esp + 8], 0xf6bb86
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
add al, 0x56
xor al, byte [esp + ecx + 8]
add al, 0x52
mov byte [esp + ecx + 8], al
inc ecx
cmp ecx, 4
jne 0x40eff0
add edx, 0x13
movzx ebx, byte [esp + 8]
test bl, bl
je 0x40f05c
lea esi, [esp + 8]
mov edi, esi
mov ecx, edx
mov eax, edx
mov dword [esp + 0x70], edx
jmp 0x40f027
movzx ebx, byte [edi]
test bl, bl
je 0x40f060
movzx edx, byte [eax]
test dl, dl
je 0x40f041
inc edi
inc eax
lea ebp, [ecx + 1]
cmp dl, bl
je 0x40f03b
mov ecx, ebp
mov eax, ebp
je 0x40f020
mov edi, esi
jmp 0x40f020
xor ebx, ebx
mov edi, dword [esp]
push edi
call fcn.0043c4c0
add esp, 4
mov eax, ebx
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, edx
jmp 0x40f06b
test ecx, ecx
mov edi, dword [esp]
mov edx, dword [esp + 0x70]
je 0x40f08e
mov byte [0x44e4ec], 1
push ecx
push edx
push 0x100
push 0x44e4ee
call fcn.0040e960
add esp, 0x10
mov edi, dword [esp + 4]
mov bl, 1
jmp 0x40f046
xor ebx, ebx
jmp 0x40f046