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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x118
cmp dword [ecx + 0x20], 0
je 0x40dfe7
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.0040a720
add esp, 4
mov eax, dword [esi + 0x10]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x10], eax
mov dword [esp + 0x7c], 0x808784
mov byte [esp + 0x80], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x7c]
lea ecx, [eax + 0x773ca789]
mov edi, ecx
xor edi, 0x501c8fe8
and ecx, 0x27202017
add ecx, ecx
sub ecx, edi
mov edi, ecx
and edi, edx
lea ebx, [ecx + edx]
not ebx
lea edi, [ebx + edi*2]
and edi, ecx
add edi, edi
sub ecx, edi
add ecx, edx
mov edx, ecx
xor edx, 0xd9
and ecx, 0x59
lea ecx, [edx + ecx*2]
add cl, 2
mov byte [esp + eax + 0x7c], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 5
jb 0x40dae0
mov eax, dword [esp + 0x7c]
push dword [eax + 0x14]
call fcn.0040cf90
add esp, 4
call fcn.0040cfb0
mov dword [esp + 0x18], eax
mov ebx, eax
and ebx, 0xf
mov edi, 0xfffffff0
mov ebp, 0x38e38e39
nop
nop
nop
call fcn.0040cfb0
mov ecx, eax
imul ebp
mov eax, edx
shr eax, 0x1f
sar edx, 3
add edx, eax
shl edx, 2
lea eax, [edx + edx*8]
neg eax
movzx eax, byte [ecx + eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [esi + edi + 0x70], al
inc edi
cmp ebx, edi
jne 0x40db60
mov dword [esp + 0x14], ebx
mov byte [esi + edi + 0x70], 0
movzx eax, byte [esi]
imul ecx, eax, 0xcd
shr ecx, 0xa
and ecx, 0xfffffffe
lea ecx, [ecx + ecx*4]
sub al, cl
movzx eax, al
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [esp + 2], al
mov byte [esp + 3], 0
mov eax, dword [esp + 4]
add eax, 0x400
push eax
call fcn.0040c8c0
add esp, 4
mov ebx, eax
mov dword [esp + 0x7c], 0xf5859684
mov byte [esp + 0x80], 0x10
mov dword [esp + 0x81], 0
mov byte [esp + 0x85], 0
mov eax, 0x6b2455c5
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x6b245549]
xor ecx, eax
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, edx
add cl, 0x26
mov byte [esp + eax - 0x6b245549], cl
inc eax
cmp eax, 0x6b2455cf
jne 0x40dc00
lea edi, [esp + 0x7c]
mov ecx, esi
push 0x44c728
push edi
push ebx
call fcn.0040d3e0
mov dword [esp + 0x7c], 0x7f1a10e8
mov dword [esp + 0x80], 0
mov eax, 0x403f2fea
movzx ecx, byte [esp + eax - 0x403f2f6e]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x6e
mov byte [esp + eax - 0x403f2f6e], cl
inc eax
cmp eax, 0x403f2ff2
jne 0x40dc50
lea eax, [esp + 2]
mov ecx, esi
push eax
push edi
push ebx
call fcn.0040d3e0
mov eax, dword [str.MeHdy4__pl7vs05]
mov dword [esp + 0x7c], 0x77daa09c
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0xbe
xor dl, byte [esp + ecx + 0x7c]
add dl, 0x4a
mov byte [esp + ecx + 0x7c], dl
inc ecx
cmp ecx, 4
jne 0x40dca0
mov dword [esp + 0xc], esi
mov ecx, esi
push eax
push edi
mov dword [esp + 0x10], ebx
push ebx
call fcn.0040d3e0
mov dword [esp + 0x7c], 0x35003809
mov dword [esp + 0x80], 0x350c31
mov dword [esp + 0x84], 0x2e0f3401
mov byte [esp + 0x88], 0x88
mov word [esp + 0x89], 0
mov byte [esp + 0x8b], 0
mov eax, 0x25
mov ecx, 0xda
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + eax + 0x57]
not ebx
mov edx, eax
or edx, ebx
or ebx, ecx
not edx
add edx, eax
and edx, ebx
add dl, 0x47
mov byte [esp + eax + 0x57], dl
inc eax
dec ecx
cmp eax, 0x35
jne 0x40dd10
mov dword [esp + 0x1c], 0xf19aaaaf
mov word [esp + 0x20], 0
mov ebx, 0xe2c0d37d
mov ebp, 0xd3f2c82
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ebx + 0x1d3f2c9f]
mov eax, ebp
and eax, 0x65
mov edx, ebx
and edx, 0x9a
or edx, eax
xor edx, esi
xor edx, 0x9a
and edx, ebx
mov eax, edx
or al, 0xfd
inc al
mov ecx, edx
and cl, 0xfd
mul cl
mov ecx, eax
mov eax, esi
add cl, al
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, ebx
add al, 0x8f
mov byte [esp + ebx + 0x1d3f2c9f], al
inc ebx
dec ebp
cmp ebx, 0xe2c0d383
jne 0x40dd50
lea eax, [esp + 0x1c]
mov esi, dword [esp + 0xc]
mov ecx, esi
push edi
push eax
mov ebp, dword [esp + 0x10]
push ebp
call fcn.0040d3e0
mov dword [esp + 0x7c], 0x12eeec16
mov byte [esp + 0x80], pe_nt_image_headers32
mov dword [esp + 0x81], 0
mov dword [esp + 0x84], 0
mov eax, 0x36e495eb
mov ecx, 0x14
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x36e4956f]
mov ebx, ecx
xor ebx, eax
and ebx, edx
xor ebx, eax
mov edx, ebx
and edx, 0x68
xor ebx, 0x68
lea edx, [ebx + edx*2]
inc dl
mov byte [esp + eax - 0x36e4956f], dl
inc eax
dec ecx
cmp eax, 0x36e495f7
jne 0x40de00
mov ecx, esi
push dword [esp + 4]
push dword [esp + 0x14]
push edi
push ebp
call fcn.0040d6b0
mov dword [esp + 0x1c], 0x23bd21e3
mov dword [esp + 0x20], 0x27b225ba
mov dword [esp + 0x24], 0xdb44d93d
mov dword [esp + 0x28], 0xdf03dd48
mov dword [esp + 0x2c], 0xd35bd124
mov dword [esp + 0x30], 0xd733d544
mov dword [esp + 0x34], 0xcbeac902
mov dword [esp + 0x38], 0xcf5bcd51
mov dword [esp + 0x3c], 0xc356c15c
mov dword [esp + 0x40], 0xc756c55d
mov dword [esp + 0x44], 0xfb68f919
mov dword [esp + 0x48], 0xff21fd68
mov dword [esp + 0x4c], 0xf36df116
mov dword [esp + 0x50], 0xf76bf566
mov dword [esp + 0x54], 0xeb0ee935
mov dword [esp + 0x58], 0xef7aed0d
mov dword [esp + 0x5c], 0xe329e101
mov dword [esp + 0x60], 0xe704e5c4
mov dword [esp + 0x64], 0x9b0f9907
mov dword [esp + 0x68], 0x9f7a9d02
mov dword [esp + 0x6c], 0x93009171
mov dword [esp + 0x70], 0x975b951d
mov word [esp + 0x74], 0x8988
mov byte [esp + 0x78], 0
mov word [esp + 0x76], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x78
xor cl, byte [esp + eax + 0x1c]
add cl, 0xa8
mov byte [esp + eax + 0x1c], cl
inc eax
cmp eax, 0x5d
jne 0x40df10
movzx eax, word [esp + 0x1c]
test ax, ax
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
je 0x40df51
lea edi, [esp + 0x7c]
lea ecx, [esp + 0x1e]
mov word [edi], ax
add edi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40df40
mov word [edi], 0
and edx, 7
mov ebp, edx
sub ebx, edx
lea edx, [ebx*2 + 0x20]
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
movsx ebx, byte [esi + ecx + 0x60]
mov word [edi + eax], bx
movsx ebx, byte [esi + ecx + 0x61]
mov word [edi + eax + 2], bx
movsx ebx, byte [esi + ecx + 0x62]
mov word [edi + eax + 4], bx
movsx ebx, byte [esi + ecx + 0x63]
mov word [edi + eax + 6], bx
movsx ebx, byte [esi + ecx + 0x64]
mov word [edi + eax + 8], bx
movsx ebx, byte [esi + ecx + 0x65]
mov word [edi + eax + 0xa], bx
movsx ebx, byte [esi + ecx + 0x66]
mov word [edi + eax + 0xc], bx
movsx ebx, byte [esi + ecx + 0x67]
mov word [edi + eax + 0xe], bx
add ecx, 8
add eax, 0x10
cmp edx, eax
jne 0x40df70
test ebp, ebp
je 0x40dfee
neg eax
nop
movsx edx, byte [esi + ecx + 0x60]
mov word [edi + ecx*2], dx
inc ecx
add eax, 0xfffffffe
dec ebp
jne 0x40dfd0
sub edi, eax
lea ecx, [edi - 2]
jmp 0x40dff6
mov bl, 1
jmp 0x40e0a3
lea ecx, [edi + eax]
add ecx, 0xfffffffe
add edi, eax
mov word [edi], 0xd
mov dword [ecx + 4], 0xa
mov eax, dword [esi + 0x80]
mov dword [esp + 0x1c], 0x57f7493b
mov dword [esp + 0x20], 0x53fb55e4
mov word [esp + 0x24], 0x5150
mov dword [esp + 0x26], 0
xor ecx, ecx
mov ebp, dword [esp + 8]
nop
nop
nop
movzx edx, byte [esp + ecx + 0x1c]
lea edi, [ecx + 0xee]
and edi, edx
add edx, ecx
add edx, 0xa29cfc47
add edi, edi
mov ebx, edx
sub ebx, edi
and edx, 1
xor ebx, 1
lea edx, [ebx + edx*2]
mov byte [esp + ecx + 0x1c], dl
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 0xe
jb 0x40e030
lea ecx, [esp + 0x7c]
push 0x493e0
push eax
push ebp
push 0
push 0
push ecx
lea eax, [esp + 0x34]
push eax
call fcn.004102d0
add esp, 0x1c
mov ebx, eax
push ebp
call fcn.0040c8d0
add esp, 4
mov eax, dword [esi + 0x80]
add dword [esi + 4], eax
mov dword [esi + 0x80], 0
mov eax, ebx
add esp, 0x118
pop esi
pop edi
pop ebx
pop ebp
ret