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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10c
cmp dword [ecx + 0x20], 0
je 0x40a397
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.00406620
add esp, 4
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 8], eax
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 dword [esp + 0xc], edx
lea eax, [edx + 0x400]
push eax
call fcn.00408770
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x70], 0x1b176210
mov byte [esp + 0x74], 0xfc
mov dword [esp + 0x75], 0
mov word [esp + 0x79], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x70]
lea edx, [eax - 0x694913d6]
xor edx, ecx
mov ecx, edx
and ecx, 0x2d
xor edx, 0x2d
lea ecx, [edx + ecx*2]
inc cl
mov byte [esp + eax + 0x70], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0xb
jb 0x409f70
lea ebx, [esp + 0x70]
mov ecx, esi
push 0x44bb04
push ebx
push dword [esp + 8]
call fcn.00409780
mov dword [esp + 0x70], 0xd1aaa4bc
mov word [esp + 0x74], 0
mov byte [esp + 0x76], 0
mov eax, 0xb2
nop
nop
nop
nop
movzx edx, byte [ebx]
lea ecx, [eax - 0x5ab71700]
or ecx, edx
and edx, eax
not ecx
or ecx, edx
add ecx, 0xf5dd2679
mov edx, ecx
and edx, 0x7e
xor ecx, 0x7e
lea ecx, [ecx + edx*2]
add cl, 0x88
mov byte [ebx], cl
inc ebx
dec eax
cmp eax, 0xab
jne 0x409fd0
lea eax, [esp + 6]
lea ebx, [esp + 0x70]
mov ecx, esi
push eax
push ebx
push dword [esp + 8]
call fcn.00409780
mov eax, dword [str.tLYMe5__222new]
mov dword [esp + 0x70], 0xe90e0408
mov byte [esp + 0x74], 0
xor ecx, ecx
xor ebp, ebp
nop
nop
nop
nop
nop
movzx edi, byte [esp + ebp + 0x70]
mov edx, ebp
xor edx, 0xcb545d27
add edx, ecx
xor edx, edi
mov edi, edx
and edi, 1
or edx, 1
add edx, edi
add dl, 0x3c
mov byte [esp + ebp + 0x70], dl
lea edx, [ebp + 1]
add ecx, 2
mov ebp, edx
cmp edx, 5
jne 0x40a030
mov ecx, esi
push eax
push ebx
push dword [esp + 8]
call fcn.00409780
mov dword [esp + 0x70], 0x5b64a497
mov dword [esp + 0x74], 0x6c5f6057
mov dword [esp + 0x78], 0x5255506f
mov byte [esp + 0x7c], 0xfc
mov dword [esp + 0x7d], 0
mov word [esp + 0x81], 0
mov ebp, 0x3e
mov ecx, 0x14eb4a81
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ebp + 0x32]
lea eax, [edx + edx]
not eax
add eax, edx
and eax, 0xcd
and edx, 0x32
or edx, eax
mov eax, ecx
xor eax, 0x32
mov edi, ecx
or edi, 0xcd
and edi, eax
mov eax, ebp
and eax, 0x32
xor eax, edi
xor eax, edx
add al, 0x8a
mov byte [esp + ebp + 0x32], al
inc ebp
dec ecx
cmp ebp, 0x51
jne 0x40a0b0
mov dword [esp + 0x10], 0x314a5a5f
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xb5
xor cl, byte [esp + eax + 0x10]
add cl, 0x77
mov byte [esp + eax + 0x10], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 4
jb 0x40a100
lea ebp, [esp + 0x10]
mov ecx, esi
push ebx
push ebp
push dword [esp + 8]
call fcn.00409780
mov dword [esp + 0x70], 0xfaf2f0f2
mov byte [esp + 0x74], 0x9c
mov dword [esp + 0x75], 0
mov byte [esp + 0x79], 0
mov eax, 0x36e4731a
movzx ecx, byte [esp + eax - 0x36e472aa]
xor ecx, eax
mov edx, ecx
xor edx, 0x12763f82
mov edi, ecx
or edi, 0x2480407d
and edi, edx
lea edx, [ecx + ecx]
and edx, 0x490080fa
sub ecx, edx
lea edx, [ecx + edi*2]
add edx, 0xed89c07d
mov ecx, edx
xor ecx, 0xfe
or edx, 1
and ecx, edx
add ecx, edx
mov byte [esp + eax - 0x36e472aa], cl
inc eax
cmp eax, 0x36e47324
jne 0x40a150
mov ecx, esi
push dword [esp + 0xc]
push dword [esp + 0xc]
push ebx
push dword [esp + 0xc]
call fcn.00409a80
mov dword [esp + 0x10], 0xc95bcbb1
mov dword [esp + 0x14], 0xc54ac75a
mov dword [esp + 0x18], 0xc150c35f
mov dword [esp + 0x1c], 0xfdadff4c
mov dword [esp + 0x20], 0xf97dfb90
mov dword [esp + 0x24], 0xf56df768
mov dword [esp + 0x28], 0xf1d2f3b2
mov dword [esp + 0x2c], 0xed65ef63
mov dword [esp + 0x30], 0xe966eb78
mov dword [esp + 0x34], 0xe576e77f
mov dword [esp + 0x38], 0xe16ce37b
mov dword [esp + 0x3c], 0x1d4f1f6c
mov dword [esp + 0x40], 0x198b1b86
mov dword [esp + 0x44], 0x15851796
mov dword [esp + 0x48], 0x118e1347
mov dword [esp + 0x4c], 0xd820f8f
mov dword [esp + 0x50], 0x94f0b93
mov dword [esp + 0x54], 0x5980728
mov dword [esp + 0x58], 0x1890395
mov dword [esp + 0x5c], 0x3da23f92
mov dword [esp + 0x60], 0x39b43ba3
mov dword [esp + 0x64], 0x357537bf
mov word [esp + 0x68], 0x3334
mov word [esp + 0x6e], 0
mov dword [esp + 0x6a], 0
mov eax, 0x378c62c
nop
nop
nop
movzx edx, byte [ebp]
mov ecx, eax
or ecx, edx
lea edi, [eax - 0x378c600]
and edi, edx
not ecx
or ecx, edi
mov edx, ecx
and edx, 0x60
add edx, edx
xor ecx, 0x1f
sub edx, ecx
mov byte [ebp], dl
inc ebp
dec eax
cmp eax, 0x378c5cc
jne 0x40a280
movzx eax, word [esp + 0x10]
test ax, ax
je 0x40a2d1
lea ebx, [esp + 0x70]
lea ecx, [esp + 0x12]
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40a2c0
mov word [ebx], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, 0xffffffff
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [esi + ecx + 0x61], 0
lea ecx, [ecx + 1]
jne 0x40a2f0
cmp eax, ecx
jae 0x40a30c
movsx ecx, byte [esi + eax + 0x60]
mov word [ebx], cx
add ebx, 2
inc eax
jmp 0x40a2e0
mov dword [ebx], 0xa000d
mov word [ebx + 4], 0
mov eax, dword [esi + 0x80]
mov dword [esp + 0x10], 0xf757f98b
mov dword [esp + 0x14], 0xf34bf544
mov word [esp + 0x18], 0xf1f0
mov dword [esp + 0x1a], 0
xor ecx, ecx
nop
mov edx, ecx
add dl, 0xd6
xor dl, byte [esp + ecx + 0x10]
add dl, 0xd2
mov byte [esp + ecx + 0x10], dl
inc ecx
cmp ecx, 0xe
jne 0x40a340
lea ecx, [esp + 0x70]
lea edx, [esp + 0x10]
push 0x493e0
push eax
mov edi, dword [esp + 8]
push edi
push 0
push 0
push ecx
push edx
call fcn.0040cc80
add esp, 0x1c
mov ebx, eax
push edi
call fcn.00408780
add esp, 4
mov eax, dword [esi + 0x80]
add dword [esi + 4], eax
mov dword [esi + 0x80], 0
jmp 0x40a399
mov bl, 1
mov eax, ebx
add esp, 0x10c
pop esi
pop edi
pop ebx
pop ebp
ret