Function at 0x40ecc0
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 + 0xc], 0x6e1a6a6f
mov dword [esp + 0x10], 0x5254585c
lea ebx, [esp + 0x14]
mov byte [esp + 0x14], 0xb4
mov dword [esp + 0x15], 0
mov byte [esp + 0x19], 0
mov eax, 0x3b6716dd
mov ecx, 0x22
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x3b6716d1]
mov edi, eax
or edi, esi
not esi
or esi, ecx
and esi, edi
mov edi, esi
and edi, 1
xor esi, 1
lea edx, [esi + edi*2]
add dl, 0xae
mov byte [esp + eax - 0x3b6716d1], dl
inc eax
dec ecx
cmp eax, 0x3b6716eb
jne 0x40ed00
lea eax, [esp + 0x87]
lea ebp, [esp + 0xc]
mov edx, ebp
mov edi, eax
mov ecx, 2
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0x8f]
xor ecx, ecx
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
movzx ecx, byte [esp + 0x14]
mov byte [esp + 0x8f], cl
mov dword [esp + 0xc], 0xc157c709
mov dword [esp + 0x10], 0xcd5ec356
mov dword [esp + 0x14], 0xc958cf63
mov dword [esp + 0x18], 0xb51dcb54
mov dword [esp + 0x1c], 0xb12db708
mov dword [esp + 0x20], 0xbd1db320
mov dword [esp + 0x24], 0xb95ebf66
mov dword [esp + 0x28], 0xa52abb1b
mov dword [esp + 0x2c], 0xa132a734
mov dword [esp + 0x30], 0xad0fa30b
mov dword [esp + 0x34], 0xa932af0f
mov dword [esp + 0x38], 0x953bab03
mov dword [esp + 0x3c], 0x91479702
mov dword [esp + 0x40], 0x9d459308
mov dword [esp + 0x44], 0x99079f05
mov dword [esp + 0x48], 0x854d9b01
mov dword [esp + 0x4c], 0x8117872a
mov dword [esp + 0x50], 0x8d158312
mov dword [esp + 0x54], 0x89118f5b
mov dword [esp + 0x58], 0x751e8b1a
mov dword [esp + 0x5c], 0x71e077db
mov dword [esp + 0x60], 0x7de373dd
mov dword [esp + 0x64], 0x79d17fd0
mov dword [esp + 0x68], 0x658d7bd4
mov dword [esp + 0x6c], 0x6166676e
mov ecx, 0xdff75c31
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx + 0x2008a3db]
mov edx, ebx
and edx, ecx
add dl, dl
sub bl, dl
movzx edx, bl
add edx, ecx
add dl, 0xb
mov byte [esp + ecx + 0x2008a3db], dl
inc ecx
cmp ecx, 0xdff75c95
jne 0x40ee40
mov dword [esp + 0x74], 0x7f1f792b
mov dword [esp + 0x78], 0x630b7dec
mov word [esp + 0x7c], 0x6160
mov dword [esp + 0x7e], 0
mov word [esp + 0x82], 0
mov ecx, 0x6a
mov esi, 5
nop
nop
nop
nop
nop
mov edx, esi
and edx, 8
mov ebx, ecx
and ebx, 0x57
or ebx, edx
xor bl, byte [esp + ecx + 0xa]
xor bl, 0x28
add bl, 0xee
mov byte [esp + ecx + 0xa], bl
inc ecx
dec esi
cmp ecx, 0x7a
jne 0x40eea0
lea ecx, [esp + 8]
lea edx, [esp + 0x74]
push 0
push ecx
push 8
push eax
push ebp
push edx
push dword [esp + 0xbc]
call fcn.0040f970
add esp, 0x1c
xor ebx, ebx
test al, al
je 0x40f202
mov word [esp + 0xc], 0x3235
mov byte [esp + 0xe], 0x86
mov dword [esp + 0xf], 0
mov byte [esp + 0x13], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
and eax, 1
mov ecx, ebx
and ecx, 0xfffffffe
sub eax, ecx
movzx ecx, byte [esp + ebx + 0xc]
mov edx, ebx
xor edx, 0x8d9a0d21
add edx, ebx
add edx, eax
xor edx, ecx
add edx, 0x917cc80a
mov eax, edx
and eax, 0x5a
xor edx, 0x5a
lea eax, [edx + eax*2]
add al, 0xf7
mov byte [esp + ebx + 0xc], al
inc ebx
cmp ebx, 8
jne 0x40ef10
xor eax, eax
mov esi, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esi + eax]
movzx edx, byte [esp + eax + 0xc]
test cl, cl
je 0x40ef72
inc eax
cmp cl, dl
je 0x40ef60
mov dword [esp + 4], esi
mov bl, 1
cmp cl, dl
je 0x40f1f6
mov dword [esp + 0xc], 0xfdcfc0f1
mov dword [esp + 0x10], 0x6dfcfec7
mov dword [esp + 0x14], 0
mov eax, 0x97
nop
nop
nop
movzx ecx, byte [esp + eax - 0x8b]
mov edx, ecx
not edx
or edx, eax
mov esi, eax
or esi, ecx
add edx, ecx
mov ecx, 0xfe
sub ecx, edx
and ecx, esi
add cl, 0xd
mov byte [esp + eax - 0x8b], cl
inc eax
cmp eax, 0xa3
jne 0x40efa0
movzx eax, byte [esp + 0xc]
mov edx, dword [esp + 4]
test al, al
je 0x40f014
mov ecx, ebp
mov edx, dword [esp + 4]
mov esi, edx
jmp 0x40eff7
movzx eax, byte [ecx]
test al, al
je 0x40f014
mov ah, byte [esi]
test ah, ah
je 0x40f1f4
inc esi
inc ecx
lea edi, [edx + 1]
cmp ah, al
je 0x40f00e
mov edx, edi
mov esi, edi
je 0x40eff0
mov ecx, ebp
jmp 0x40eff0
xor ecx, ecx
test edx, edx
je 0x40f1f4
mov dword [esp + 0xc], 0x5a63a89a
mov dword [esp + 0x10], 0x6f531b31
mov dword [esp + 0x14], 0x1f106663
mov dword [esp + 0x18], 0x666e5c66
mov dword [esp + 0x1c], 0xe7083c55
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, edx
shr edi, 2
mov eax, edx
not eax
mov esi, edx
and esi, 0x7ffffffc
or esi, 2
mov ebp, edx
shr ebp, 1
and ebp, 1
imul ebp, esi
lea esi, [edx + ebp*2]
movzx ebp, byte [esp + edx + 0xc]
and eax, 2
imul eax, edi
mov edi, ecx
or edi, 0x7591ea02
shl eax, 2
sub eax, edi
add eax, esi
xor eax, ebp
add eax, 0x4bd99209
mov esi, eax
and esi, 1
xor eax, 1
lea eax, [eax + esi*2]
mov byte [esp + edx + 0xc], al
inc edx
add ecx, 2
cmp edx, 0x14
jne 0x40f050
movzx ecx, byte [esp + 0xc]
mov eax, dword [esp + 4]
mov dword [esp], eax
test cl, cl
je 0x40f0f7
lea ebp, [esp + 0xc]
mov edx, ebp
mov eax, dword [esp + 4]
mov edi, eax
mov dword [esp], eax
jmp 0x40f0d7
movzx ecx, byte [edx]
test cl, cl
je 0x40f0f7
movzx eax, byte [edi]
test al, al
je 0x40f1f4
inc edi
inc edx
mov esi, dword [esp]
inc esi
cmp al, cl
je 0x40f0f1
mov dword [esp], esi
mov edi, esi
je 0x40f0d0
mov edx, ebp
jmp 0x40f0d0
xor edx, edx
cmp dword [esp], 0
je 0x40f1f4
mov word [esp + 0xc], 0x29c2
mov byte [esp + 0xe], 0xea
mov word [esp + 0xf], 0
mov byte [esp + 0x11], 0
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edx + 0xc]
mov dword [esp + 0x70], ecx
mov eax, edx
and eax, 5
mov esi, edx
and esi, 2
mov ebp, edx
or ebp, 2
imul ebp, esi
xor esi, 2
imul esi, eax
mov edi, edx
xor edi, 0xb5226627
add edi, ebp
add edi, esi
mov ebp, ecx
and ebp, edi
mov esi, ebp
and esi, 2
mov ecx, ebp
or ecx, 0xfd
inc ecx
mov eax, ebp
and eax, 0xfffffffd
imul eax, ecx
or ebp, 2
imul ebp, esi
sub eax, ebp
add eax, edi
add al, byte [esp + 0x70]
add al, 0x3d
mov byte [esp + edx + 0xc], al
inc edx
cmp edx, 6
jne 0x40f120
mov eax, dword [esp]
add eax, 0x13
movzx ecx, byte [esp + 0xc]
test cl, cl
je 0x40f1c4
lea edi, [esp + 0xc]
mov edx, eax
mov ebp, eax
mov dword [esp], eax
jmp 0x40f1a7
movzx ecx, byte [edi]
test cl, cl
je 0x40f1c8
movzx eax, byte [ebp]
test al, al
je 0x40f1f4
inc ebp
inc edi
lea esi, [edx + 1]
cmp al, cl
je 0x40f1bc
mov edx, esi
mov ebp, esi
je 0x40f1a0
lea edi, [esp + 0xc]
jmp 0x40f1a0
mov edx, eax
jmp 0x40f1cf
test edx, edx
mov eax, dword [esp]
je 0x40f1f4
mov byte [0x44f2c8], 1
push edx
push eax
push 0x100
push 0x44f2ca
call fcn.0040ea10
add esp, 0x10
mov eax, dword [esp + 8]
mov dword [esp + 4], eax
jmp 0x40f1f6
xor ebx, ebx
push dword [esp + 4]
call fcn.0043dc40
add esp, 4
mov eax, ebx
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret