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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x110
cmp dword [ecx + 0x20], 0
je 0x40a097
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.00406170
add esp, 4
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x10], 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 + 0x14], edx
lea eax, [edx + 0x400]
push eax
call fcn.00408380
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x74], 0x676b5668
mov byte [esp + 0x78], 0xc4
mov dword [esp + 0x79], 0
mov dword [esp + 0x7c], 0
mov eax, 0x30
mov ecx, 0xcf
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + eax + 0x44]
mov ebp, eax
and ebp, ebx
lea edx, [ebx + ebx]
not edx
add edx, ebx
and edx, ecx
or edx, ebp
mov bl, 0xf
sub bl, dl
mov byte [esp + eax + 0x44], bl
inc eax
dec ecx
cmp eax, 0x3c
jne 0x409c40
lea ebp, [esp + 0x74]
mov ecx, esi
push 0x44bf3c
push ebp
push dword [esp + 8]
call fcn.00409300
mov dword [esp + 0x74], 0x19b6acac
mov word [esp + 0x78], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x74]
lea ecx, [eax + eax]
mov ebx, ecx
and ebx, 6
mov edi, eax
xor edi, 0x97f24bfb
add edi, ebx
mov ebx, edi
or ebx, edx
not edx
or edi, edx
sub edx, edi
add edx, ebx
add dl, 0x19
mov byte [esp + eax + 0x74], dl
and ecx, 2
xor eax, 1
add eax, ecx
cmp eax, 6
jb 0x409c90
lea eax, [esp + 6]
mov ecx, esi
push eax
push ebp
push dword [esp + 8]
call fcn.00409300
mov eax, dword [str.yau6Na__6642475507]
mov dword [esp + 0xc], eax
mov dword [esp + 0x74], 0x37cac0cc
mov dword [esp + 0x78], 0
mov ecx, 0xe92ed76
mov edx, 0x89
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx - 0xe92ed02]
lea ebx, [edi + edi]
not ebx
add ebx, edi
and edi, edx
and ebx, ecx
or ebx, edi
lea edi, [ebx + 0xb1]
mov eax, 0x4e
sub eax, ebx
or eax, 1
add eax, ebx
xor edi, 1
lea eax, [edi + eax*2]
add al, 0x64
mov byte [esp + ecx - 0xe92ed02], al
inc ecx
dec edx
cmp ecx, 0xe92ed7e
jne 0x409d00
mov dword [esp + 8], esi
mov ecx, esi
push dword [esp + 0xc]
push ebp
push dword [esp + 8]
call fcn.00409300
mov dword [esp + 0x74], 0xd5c0d8c9
mov dword [esp + 0x78], 0xc0d5ccd1
mov dword [esp + 0x7c], 0x2ecfd4c1
mov byte [esp + 0x80], 0xc8
mov word [esp + 0x81], 0
mov byte [esp + 0x83], 0
mov eax, 0x75
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 1]
mov edx, ecx
not edx
or edx, eax
lea edi, [ecx + edx]
inc edi
mov esi, edi
and esi, 0xfffffffd
mov ebx, edi
and ebx, 2
mov edx, edi
or edx, 0xfffffffd
inc edx
imul edx, esi
or edi, 2
imul edi, ebx
add edx, ecx
sub edx, edi
lea ecx, [eax + edx]
add ecx, 0xedfa20eb
mov edx, ecx
xor edx, 0x34
and ecx, 0x4b
add ecx, ecx
sub ecx, edx
mov byte [esp + eax - 1], cl
inc eax
cmp eax, 0x85
jne 0x409d90
mov dword [esp + 0x18], 0xc15a6a67
mov byte [esp + 0x1c], 0
mov edx, 0xb1
nop
movzx eax, byte [esp + edx - 0x99]
mov ebx, eax
mov esi, eax
and ebx, edx
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0xbd
mul cl
mov ecx, eax
mov eax, esi
add cl, al
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, edx
add al, 0x8b
mov byte [esp + edx - 0x99], al
inc edx
cmp edx, 0xb6
jne 0x409df0
lea ebx, [esp + 0x18]
mov ecx, dword [esp + 8]
push ebp
push ebx
push dword [esp + 8]
call fcn.00409300
mov dword [esp + 0x74], 0xda22e0e2
mov byte [esp + 0x78], 0xb4
mov dword [esp + 0x79], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x74]
mov esi, eax
and esi, 2
xor esi, 0x6d085562
mov ecx, eax
and ecx, 0xd
sub ecx, esi
mov esi, ecx
and esi, edx
add ecx, edx
add esi, esi
sub ecx, esi
add cl, 0xea
mov byte [esp + eax + 0x74], cl
inc eax
cmp eax, 9
jne 0x409e70
mov esi, dword [esp + 8]
mov ecx, esi
push dword [esp + 0x14]
push dword [esp + 0x14]
push ebp
push dword [esp + 0xc]
call fcn.00409650
mov dword [esp + 0x18], 0x59ab5b81
mov dword [esp + 0x1c], 0x5daa5faa
mov dword [esp + 0x20], 0x51a053a7
mov dword [esp + 0x24], 0x556557a4
mov dword [esp + 0x28], 0x69e56b80
mov dword [esp + 0x2c], 0x6d956f98
mov dword [esp + 0x30], 0x614263a2
mov dword [esp + 0x34], 0x65ed6793
mov dword [esp + 0x38], 0x798e7b98
mov dword [esp + 0x3c], 0x7d8e7f87
mov dword [esp + 0x40], 0x7184739b
mov dword [esp + 0x44], 0x75477784
mov dword [esp + 0x48], 0x9fb0b8e
mov dword [esp + 0x4c], 0xdfd0ffe
mov dword [esp + 0x50], 0x1e6033f
mov dword [esp + 0x54], 0x5f207e7
mov dword [esp + 0x58], 0x19d71be3
mov dword [esp + 0x5c], 0x1df81f38
mov dword [esp + 0x60], 0x119913ed
mov dword [esp + 0x64], 0x15f217e2
mov dword [esp + 0x68], 0x29dc2bf3
mov dword [esp + 0x6c], 0x2ded2fa7
mov dword [esp + 0x70], 0x232c
xor eax, eax
mov ecx, eax
add cl, 0x8f
xor cl, byte [esp + eax + 0x18]
add cl, 0x35
mov byte [esp + eax + 0x18], cl
inc eax
cmp eax, 0x5c
jne 0x409f70
movzx eax, word [esp + 0x18]
test ax, ax
je 0x409fb2
lea ebp, [esp + 0x74]
lea ecx, [esp + 0x1a]
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebp], ax
add ebp, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x409fa0
mov word [ebp], 0
movzx ecx, byte [esi + 0x60]
test cl, cl
je 0x409fe2
lea eax, [esi + 0x61]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ecx, cl
mov word [ebp], cx
add ebp, 2
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x409fd0
mov dword [ebp], 0xa000d
mov word [ebp + 4], 0
mov eax, dword [esi + 0x80]
mov dword [esp + 0x18], 0x63c361bf
mov dword [esp + 0x1c], 0x67ff65f4
mov word [esp + 0x20], 0x5958
mov dword [esp + 0x22], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 0x18]
mov edx, ecx
xor edx, 0x72cac867
mov edi, ecx
or edi, 8
and edi, edx
mov edx, ecx
xor edx, 0xd353798
lea edx, [edx + edi*2]
mov edi, edx
and edi, esi
add edx, esi
add edi, edi
sub edx, edi
add dl, 8
mov byte [esp + ecx + 0x18], dl
inc ecx
cmp ecx, 0xe
jne 0x40a020
lea ecx, [esp + 0x74]
push 0x493e0
push eax
mov esi, dword [esp + 8]
push esi
push 0
push 0
push ecx
push ebx
call fcn.0040cac0
add esp, 0x1c
mov ebx, eax
push esi
call fcn.00408390
add esp, 4
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x80]
add dword [ecx + 4], eax
mov dword [ecx + 0x80], 0
jmp 0x40a099
mov bl, 1
mov eax, ebx
add esp, 0x110
pop esi
pop edi
pop ebx
pop ebp
ret