Function at 0x409890
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 0x409d2c
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.00406100
add esp, 4
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 4], 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 + 2], al
mov byte [esp + 3], 0
mov dword [esp + 8], edx
lea eax, [edx + 0x400]
push eax
call fcn.00408210
add esp, 4
mov dword [esp + 0x70], 0xb5a5b6a4
mov byte [esp + 0x74], 0x50
mov word [esp + 0x75], 0
mov byte [esp + 0x77], 0
mov edi, 0x5b9eb38d
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + edi - 0x5b9eb31d]
xor edx, edi
mov ebx, edx
mov ecx, edx
xor ecx, 0x35e67e3e
add ecx, edx
and edx, 0x1186323e
and ebx, 0x4a1881c1
sub ecx, ebx
add ecx, edx
mov edx, ecx
xor edx, 0xfe
or ecx, 1
and edx, ecx
add edx, ecx
mov byte [esp + edi - 0x5b9eb31d], dl
inc edi
cmp edi, 0x5b9eb395
jne 0x409920
lea ebx, [esp + 0x70]
mov ecx, esi
push 0x449514
push ebx
mov dword [esp + 0x14], eax
push eax
call fcn.00409170
mov dword [esp + 0x70], 0x294e44b4
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edi + 0x70]
mov ebp, ecx
not ebp
mov eax, edi
and eax, 1
xor eax, 0xa4073129
mov edx, edi
and edx, 2
sub edx, eax
and ebp, 0x1d
mov eax, ecx
xor eax, 0x1d
or ecx, 0xe2
and ecx, eax
or ecx, ebp
mov eax, 0xf
sub eax, edx
add edx, 0xe0
and eax, 0xd
and edx, 0xa2
or edx, eax
xor edx, ecx
add dl, 0x6d
mov byte [esp + edi + 0x70], dl
inc edi
cmp edi, 4
jne 0x409990
lea eax, [esp + 2]
mov ecx, esi
push eax
push ebx
mov ebp, dword [esp + 0x14]
push ebp
call fcn.00409170
mov eax, dword [str.tLYMe5__333new]
mov dword [esp + 0x70], 0x99f6ece8
mov byte [esp + 0x74], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x1b
xor dl, byte [esp + ecx + 0x70]
add dl, 0x79
mov byte [esp + ecx + 0x70], dl
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 5
jb 0x409a10
mov ecx, esi
push eax
push ebx
push ebp
call fcn.00409170
mov dword [esp + 0x70], 0x55a0a899
mov dword [esp + 0x74], 0x60555c51
mov dword [esp + 0x78], 0x5e5f5461
mov byte [esp + 0x7c], 0xf8
mov word [esp + 0x7d], 0
mov byte [esp + 0x7f], 0
mov eax, 0x1d7533fd
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x1d75338d]
xor ecx, eax
mov edx, ecx
xor edx, 0x71
mov edi, ecx
or edi, 0xe
and edi, edx
xor ecx, 0xe
lea ecx, [ecx + edi*2]
inc cl
mov byte [esp + eax - 0x1d75338d], cl
inc eax
cmp eax, 0x1d75340d
jne 0x409a70
mov dword [esp + 0x10], 0x19a6b6b3
mov word [esp + 0x14], 0
mov byte [esp + 0x16], 0
mov eax, 0x286f5fb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x286f5eb]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x19
mov byte [esp + eax - 0x286f5eb], cl
inc eax
cmp eax, 0x286f602
jne 0x409ac0
lea eax, [esp + 0x10]
mov ecx, esi
push ebx
push eax
push ebp
call fcn.00409170
mov dword [esp + 0x70], 0x666e6866
mov byte [esp + 0x74], 0xc4
mov word [esp + 0x75], 0
mov byte [esp + 0x77], 0
xor eax, eax
movzx ecx, byte [esp + eax + 0x70]
lea edx, [ecx + ecx]
not edx
add edx, ecx
and edx, 0x17
and ecx, 0xffffffe8
or ecx, edx
xor ecx, eax
xor cl, 0xa7
add cl, 0x90
mov byte [esp + eax + 0x70], cl
inc eax
cmp eax, 8
jne 0x409b10
mov ecx, esi
push dword [esp + 8]
push dword [esp + 8]
push ebx
push ebp
call fcn.00409480
mov dword [esp + 0x10], 0x69fb6ba1
mov dword [esp + 0x14], 0x6dfa6ffa
mov dword [esp + 0x18], 0x51c053c7
mov dword [esp + 0x1c], 0x558557c4
mov dword [esp + 0x20], 0x59c55be0
mov dword [esp + 0x24], 0x5df55fc8
mov dword [esp + 0x28], 0x41a24382
mov dword [esp + 0x2c], 0x45dd47d3
mov dword [esp + 0x30], 0x49de4be8
mov dword [esp + 0x34], 0x4dde4fe7
mov dword [esp + 0x38], 0x31a433eb
mov dword [esp + 0x3c], 0x35e737a4
mov dword [esp + 0x40], 0x39ab3b9e
mov dword [esp + 0x44], 0x3dad3fae
mov dword [esp + 0x48], 0x218623ef
mov dword [esp + 0x4c], 0x25b22787
mov dword [esp + 0x50], 0x29f72b83
mov dword [esp + 0x54], 0x2d882fc8
mov dword [esp + 0x58], 0x118913bd
mov dword [esp + 0x5c], 0x15b21782
mov dword [esp + 0x60], 0x198c1bb3
mov dword [esp + 0x64], 0x1ddd1f87
mov word [esp + 0x68], 0x31c
mov word [esp + 0x6e], 0
mov dword [esp + 0x6a], 0
mov eax, 0x17
mov ecx, 0x68
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, ecx
and edi, 0xb5
mov edx, eax
and edx, 0x4a
or edx, edi
xor dl, byte [esp + eax - 7]
xor dl, 0xb5
add dl, 0xd
mov byte [esp + eax - 7], dl
inc eax
dec ecx
cmp eax, 0x77
jne 0x409c20
movzx eax, word [esp + 0x10]
test ax, ax
je 0x409c71
lea ebx, [esp + 0x70]
lea ecx, [esp + 0x12]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x409c60
mov word [ebx], 0
movzx ecx, byte [esi + 0x60]
test cl, cl
je 0x409ca1
lea eax, [esi + 0x61]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ecx, cl
mov word [ebx], cx
add ebx, 2
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x409c90
mov dword [ebx], 0xa000d
mov word [ebx + 4], 0
mov eax, dword [esi + 0x80]
mov dword [esp + 0x10], 0x99f59bad
mov dword [esp + 0x14], 0xa5d1a7e8
mov dword [esp + 0x18], 0xa3a4
mov ecx, 0x1b
movzx edx, byte [esp + ecx - 0xb]
mov ebx, edx
and ebx, ecx
add bl, bl
sub dl, bl
movzx edx, dl
add edx, ecx
add dl, 0x79
mov byte [esp + ecx - 0xb], dl
inc ecx
cmp ecx, 0x27
jne 0x409cd0
lea ecx, [esp + 0x70]
push 0x493e0
push eax
push ebp
push 0
push 0
push ecx
lea eax, [esp + 0x28]
push eax
call fcn.0040c080
add esp, 0x1c
mov ebx, eax
push ebp
call fcn.00408220
add esp, 4
mov eax, dword [esi + 0x80]
add dword [esi + 4], eax
mov dword [esi + 0x80], 0
jmp 0x409d2e
mov bl, 1
mov eax, ebx
add esp, 0x10c
pop esi
pop edi
pop ebx
pop ebp
ret