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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x11c
cmp dword [ecx + 0x20], 0
je 0x40e047
lea eax, [ecx + 0x10]
push eax
mov esi, ecx
call fcn.0040a700
add esp, 4
mov eax, dword [esi + 0x10]
mov dword [esp + 0xc], eax
mov dword [esp + 8], esi
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x14], eax
mov dword [esp + 0x80], 0x54d4c9c8
mov dword [esp + 0x84], 0
mov eax, 0x2561ff2e
mov ecx, 0xda9e00d1
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0x2561feae]
mov edx, eax
and edx, edi
mov ebx, edx
and ebx, 0x3d
mov ebp, edx
and ebp, 2
or edx, 2
imul edx, ebp
xor ebp, 2
imul ebp, ebx
add edx, ebp
lea ebx, [eax + edi]
mov ebp, ecx
sub ebp, edi
and ebp, edx
not edx
and edx, ebx
sub edx, ebp
add dl, 0x1a
mov byte [esp + eax - 0x2561feae], dl
inc eax
dec ecx
cmp eax, 0x2561ff36
jne 0x40dae0
mov eax, dword [esp + 0x80]
push dword [eax + 0x14]
call fcn.0040cfa0
add esp, 4
call fcn.0040cfb0
mov dword [esp + 0x1c], eax
mov ebp, eax
and ebp, 0xf
mov edi, 0xfffffff0
mov ebx, 0x38e38e39
mov esi, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
call fcn.0040cfb0
mov ecx, eax
imul ebx
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 ebp, edi
jne 0x40db60
mov dword [esp + 0x18], ebp
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 + 6], al
mov byte [esp + 7], 0
mov eax, dword [esp + 0xc]
add eax, 0x400
push eax
call fcn.0040c860
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x80], 0xcdc5f2cc
mov byte [esp + 0x84], 0x68
mov dword [esp + 0x85], 0
mov dword [esp + 0x88], 0
lea eax, [esp + 0x80]
xor ecx, ecx
mov edx, 0x78449397
xor ebx, ebx
nop
nop
nop
nop
nop
nop
movzx edi, cl
and edi, 7
add edi, edi
mov ebp, edx
sub ebp, edi
mov edi, ebx
and edi, 0xe
mov esi, ebp
and esi, edi
xor edi, ebp
mov ebp, ecx
lea ecx, [edi + esi*2]
xor cl, byte [eax]
add cl, 0xd
mov byte [eax], cl
mov ecx, ebp
inc eax
add ebx, 2
inc edx
inc cl
cmp ebx, 0x18
jne 0x40dc10
lea edi, [esp + 0x80]
mov ebx, dword [esp + 8]
mov ecx, ebx
push 0x449a90
push edi
push dword [esp + 8]
call fcn.0040d3a0
mov dword [esp + 0x80], 0x970a0008
mov eax, 0x26
nop
nop
nop
movzx ecx, byte [esp + eax + 0x5a]
mov edx, eax
and edx, ecx
add edx, edx
sub ecx, edx
add ecx, eax
add ecx, 0xbfd44b41
mov edx, ecx
xor edx, 0x7e
mov esi, ecx
or esi, 1
and esi, edx
xor ecx, 1
lea ecx, [ecx + esi*2]
mov byte [esp + eax + 0x5a], cl
inc eax
cmp eax, 0x2a
jne 0x40dc70
lea eax, [esp + 6]
mov ecx, ebx
push eax
push edi
push dword [esp + 8]
call fcn.0040d3a0
mov eax, dword [str.MeHdy4__pl4vs03]
mov dword [esp + 0x10], eax
mov dword [esp + 0x80], 0xff1a1014
mov word [esp + 0x84], 0
mov byte [esp + 0x86], 0
mov ecx, 0x748bf555
mov ebp, 0x29
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ebp + 0x57]
mov eax, ecx
or eax, ebx
lea edx, [ecx - 0x748bf500]
and edx, ebx
xor edx, eax
lea eax, [ebp - 0x748bf57f]
and eax, edx
mov edx, eax
and edx, 0xbd
mov esi, eax
and esi, 2
or eax, 2
imul eax, esi
xor esi, 2
imul esi, edx
add eax, esi
lea esi, [ecx + eax]
add esi, 0x8b740b01
xor esi, ebx
mov edx, ebp
sub edx, eax
and edx, ebx
add edx, edx
sub edx, esi
add dl, 0xae
mov byte [esp + ebp + 0x57], dl
dec ecx
inc ebp
cmp ebp, 0x30
jne 0x40dcf0
mov ebp, dword [esp + 8]
mov ecx, ebp
push dword [esp + 0x10]
push edi
push dword [esp + 8]
call fcn.0040d3a0
mov dword [esp + 0x80], 0xbbacbcaf
mov dword [esp + 0x84], 0xd4c7b0bf
mov dword [esp + 0x88], 0xc2cdc0d7
mov byte [esp + 0x8c], 0x64
mov dword [esp + 0x8d], 0
mov byte [esp + 0x91], 0
xor eax, eax
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x3a
xor cl, byte [esp + eax + 0x80]
add cl, 0xde
mov byte [esp + eax + 0x80], cl
inc eax
cmp eax, 0x12
jne 0x40dda0
mov dword [esp + 0x20], 0xf37e1211
mov word [esp + 0x24], 0
mov byte [esp + 0x26], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
and esi, 8
mov edx, ecx
xor edx, 0xac
add edx, esi
xor dl, byte [esp + ecx + 0x20]
add dl, 0xa4
mov byte [esp + ecx + 0x20], dl
inc ecx
add eax, 2
cmp ecx, 7
jne 0x40dde0
lea eax, [esp + 0x20]
mov ecx, ebp
push edi
push eax
push dword [esp + 8]
call fcn.0040d3a0
mov dword [esp + 0x80], 0x8286848e
mov byte [esp + 0x84], 0x28
mov word [esp + 0x85], 0
mov byte [esp + 0x87], 0
xor eax, eax
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x80]
mov edx, eax
and edx, 1
xor edx, 0xb1660f79
mov esi, eax
and esi, 6
sub esi, edx
xor esi, ecx
mov ecx, 0x23
sub ecx, esi
or ecx, 1
add ecx, esi
xor esi, 1
lea ecx, [esi + ecx*2]
add cl, 0x16
mov byte [esp + eax + 0x80], cl
inc eax
cmp eax, 8
jne 0x40de40
mov ecx, ebp
push dword [esp + 0xc]
push dword [esp + 0x18]
push edi
push dword [esp + 0xc]
call fcn.0040d670
mov dword [esp + 0x20], 0x99eb9bd1
mov dword [esp + 0x24], 0xa5daa7ea
mov dword [esp + 0x28], 0xa1d0a3cf
mov dword [esp + 0x2c], 0xad9dafdc
mov dword [esp + 0x30], 0xa92dabf0
mov dword [esp + 0x34], 0xb5ddb7d8
mov dword [esp + 0x38], 0xb192b3f2
mov dword [esp + 0x3c], 0xbdc5bfc3
mov dword [esp + 0x40], 0xb9c6bbc8
mov dword [esp + 0x44], 0xc5b6c7cf
mov dword [esp + 0x48], 0xc1bcc3ab
mov dword [esp + 0x4c], 0xcdffcfbc
mov dword [esp + 0x50], 0xc9bbcba6
mov dword [esp + 0x54], 0xd5a5d7b6
mov dword [esp + 0x58], 0xd1bed3e7
mov dword [esp + 0x5c], 0xdda2dfbf
mov dword [esp + 0x60], 0xd99fdbb3
mov dword [esp + 0x64], 0xe588e7f8
mov dword [esp + 0x68], 0xe199e395
mov dword [esp + 0x6c], 0xed82ef92
mov dword [esp + 0x70], 0xe994eb83
mov dword [esp + 0x74], 0xf5b5f76f
mov word [esp + 0x78], 0xf3f4
mov byte [esp + 0x7e], 0
mov dword [esp + 0x7a], 0
mov eax, 0x1b
mov ecx, 0xe4
movzx esi, byte [esp + eax + 5]
mov edx, eax
xor edx, ecx
and edx, esi
xor edx, ecx
mov bl, pe_nt_image_headers32
sub bl, dl
mov byte [esp + eax + 5], bl
inc eax
dec ecx
cmp eax, 0x7a
jne 0x40df60
movzx eax, word [esp + 0x20]
test ax, ax
je 0x40dfb1
lea edi, [esp + 0x80]
lea ecx, [esp + 0x22]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], ax
add edi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40dfa0
mov word [edi], 0
mov ebx, dword [esp + 0x1c]
and ebx, 7
mov eax, dword [esp + 0x18]
sub eax, ebx
lea edx, [eax*2 + 0x20]
xor eax, eax
xor ecx, ecx
nop
nop
movsx esi, byte [ebp + ecx + 0x60]
mov word [edi + eax], si
movsx esi, byte [ebp + ecx + 0x61]
mov word [edi + eax + 2], si
movsx esi, byte [ebp + ecx + 0x62]
mov word [edi + eax + 4], si
movsx esi, byte [ebp + ecx + 0x63]
mov word [edi + eax + 6], si
movsx esi, byte [ebp + ecx + 0x64]
mov word [edi + eax + 8], si
movsx esi, byte [ebp + ecx + 0x65]
mov word [edi + eax + 0xa], si
movsx esi, byte [ebp + ecx + 0x66]
mov word [edi + eax + 0xc], si
movsx esi, byte [ebp + ecx + 0x67]
mov word [edi + eax + 0xe], si
add ecx, 8
add eax, 0x10
cmp edx, eax
jne 0x40dfd0
test ebx, ebx
je 0x40e04e
neg eax
nop
movsx edx, byte [ebp + ecx + 0x60]
mov word [edi + ecx*2], dx
inc ecx
add eax, 0xfffffffe
dec ebx
jne 0x40e030
sub edi, eax
lea ecx, [edi - 2]
jmp 0x40e056
mov bl, 1
jmp 0x40e110
lea ecx, [edi + eax]
add ecx, 0xfffffffe
add edi, eax
mov word [edi], 0xd
mov dword [ecx + 4], 0xa
mov ebp, dword [ebp + 0x80]
mov dword [esp + 0x20], 0x43e3412f
mov dword [esp + 0x24], 0x47ef45d4
mov dword [esp + 0x28], 0x4948
mov edi, 0x70
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + edi - 0x50]
mov ebx, edx
and ebx, edi
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0x7d
mul cl
mov ecx, eax
add cl, dl
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub cl, al
movzx eax, cl
add eax, edi
add al, 0xd0
mov byte [esp + edi - 0x50], al
inc edi
cmp edi, 0x7c
jne 0x40e090
lea eax, [esp + 0x80]
push 0x493e0
push ebp
mov esi, dword [esp + 8]
push esi
push 0
push 0
push eax
lea eax, [esp + 0x38]
push eax
call fcn.004107f0
add esp, 0x1c
mov ebx, eax
push esi
call fcn.0040c870
add esp, 4
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x80]
add dword [ecx + 4], eax
mov dword [ecx + 0x80], 0
mov eax, ebx
add esp, 0x11c
pop esi
pop edi
pop ebx
pop ebp
ret