Function at 0x409c90
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 0x40a1a1
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.00406300
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 + 2], al
mov byte [esp + 3], 0
mov dword [esp + 0x14], edx
lea eax, [edx + 0x400]
push eax
call fcn.004084d0
add esp, 4
mov ebp, eax
mov dword [esp + 0x74], 0x171b0618
mov byte [esp + 0x78], 0x74
mov word [esp + 0x79], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x74]
xor cl, al
xor cl, 0x70
mov byte [esp + eax + 0x74], cl
inc eax
cmp eax, 7
jne 0x409d20
lea edi, [esp + 0x74]
mov ecx, esi
push 0x448a4c
push edi
push ebp
call fcn.00409560
mov dword [esp + 0x74], 0xaf0a041c
mov word [esp + 0x78], 0
mov eax, 0x4c
mov ecx, 0x33
nop
mov ebx, ecx
and ebx, 0x28
mov edx, eax
and edx, 0x57
or edx, ebx
xor dl, byte [esp + eax + 0x28]
xor dl, 0xa8
add dl, 0xa0
mov byte [esp + eax + 0x28], dl
inc eax
dec ecx
cmp eax, 0x52
jne 0x409d60
lea eax, [esp + 2]
mov ecx, esi
push eax
push edi
mov dword [esp + 0xc], ebp
push ebp
call fcn.00409560
mov eax, dword [str.1vJIvk__win_chr_main]
mov dword [esp + 0xc], eax
mov dword [esp + 0x74], 0x61c4d6d2
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x74]
lea ebx, [ecx + 0x55d5c60e]
mov eax, 1
sub eax, ecx
and eax, 5
mov ebp, ebx
and ebp, 0x1495c21a
or ebp, eax
xor ebp, edx
xor ebp, 0x1495c21a
and ebp, ebx
add ebp, ebp
mov eax, 0xaa2a39f1
sub eax, ecx
and eax, ebp
not ebp
and ebp, ebx
sub eax, ebp
mov ebx, eax
xor ebx, edx
not eax
and eax, edx
add eax, eax
sub eax, ebx
add al, 0x90
mov byte [esp + ecx + 0x74], al
add ecx, 0xae52f075
mov eax, ecx
xor eax, 0xae52f074
and ecx, 0xb
add ecx, ecx
sub ecx, eax
cmp ecx, 4
jb 0x409db0
mov dword [esp + 8], esi
mov ecx, esi
push dword [esp + 0xc]
push edi
push dword [esp + 0xc]
call fcn.00409560
mov dword [esp + 0x74], 0xe7ece4f3
mov dword [esp + 0x78], 0xf4e3e8db
mov dword [esp + 0x7c], 0xeeede8fb
mov byte [esp + 0x80], 0x8c
mov word [esp + 0x81], 0
mov byte [esp + 0x83], 0
mov edx, 0x80
movzx eax, byte [esp + edx - 0xc]
mov ebx, eax
mov esi, eax
and ebx, edx
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0x8d
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
mov byte [esp + edx - 0xc], al
inc edx
cmp edx, 0x90
jne 0x409e60
mov dword [esp + 0x18], 0xdd48383b
mov word [esp + 0x1c], 0
mov eax, 0x3ae6e475
mov esi, 0x45191b8a
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + esi - 0x45191b72]
lea ebx, [edx + edx]
not ebx
add ebx, edx
mov ebp, eax
and ebp, 0x38e6043a
mov ecx, esi
and ecx, 0x1091885
or ecx, ebp
xor ecx, 0xc5
or ecx, esi
add ecx, eax
add ecx, 0xc5191c01
or ecx, ebx
lea ebx, [esi - 0x45191b00]
or ebx, edx
and ebx, ecx
add bl, 0xb0
mov byte [esp + esi - 0x45191b72], bl
dec eax
inc esi
cmp eax, 0x3ae6e46f
jne 0x409ec0
lea eax, [esp + 0x18]
mov esi, dword [esp + 8]
mov ecx, esi
push edi
push eax
mov ebx, dword [esp + 0xc]
push ebx
call fcn.00409560
mov dword [esp + 0x74], 0x5ba1a55d
mov byte [esp + 0x78], 0x3f
mov word [esp + 0x79], 0
mov byte [esp + 0x7b], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x23
xor cl, byte [esp + eax + 0x74]
add cl, 0xe8
mov byte [esp + eax + 0x74], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 8
jb 0x409f50
mov ecx, esi
push dword [esp + 0x14]
push dword [esp + 0x14]
push edi
push ebx
call fcn.00409850
mov dword [esp + 0x18], 0xb818a666
mov dword [esp + 0x1c], 0xbc0fba07
mov dword [esp + 0x20], 0xb001be18
mov dword [esp + 0x24], 0xb44eb205
mov dword [esp + 0x28], 0x883eb661
mov dword [esp + 0x2c], 0x8c2e8a39
mov dword [esp + 0x30], 0x806f8e47
mov dword [esp + 0x34], 0x8436823c
mov dword [esp + 0x38], 0x98338639
mov dword [esp + 0x3c], 0x9c2b9a20
mov dword [esp + 0x40], 0x902d9e3c
mov dword [esp + 0x44], 0x946c9225
mov dword [esp + 0x48], 0x68289633
mov dword [esp + 0x4c], 0x6cd66adb
mov dword [esp + 0x50], 0x60cb6e90
mov dword [esp + 0x54], 0x64d762c0
mov dword [esp + 0x58], 0x78ac66c4
mov dword [esp + 0x5c], 0x7cd97a99
mov dword [esp + 0x60], 0x70ca7ec2
mov dword [esp + 0x64], 0x74d772cf
mov dword [esp + 0x68], 0x48c576d4
mov dword [esp + 0x6c], 0x4c864ac0
mov dword [esp + 0x70], 0x4e4d
xor eax, eax
xor ecx, ecx
nop
nop
nop
mov esi, eax
and esi, 0x9a
mov edx, ecx
xor edx, 0xcd
add edx, esi
xor dl, byte [esp + ecx + 0x18]
add dl, 0x98
mov byte [esp + ecx + 0x18], dl
inc ecx
add eax, 2
cmp ecx, 0x5c
jne 0x40a040
movzx eax, word [esp + 0x18]
test ax, ax
je 0x40a091
lea edi, [esp + 0x74]
lea ecx, [esp + 0x1a]
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 0x40a080
mov word [edi], 0
mov edx, dword [esp + 8]
movzx ecx, byte [edx + 0x60]
test cl, cl
je 0x40a0c1
lea eax, [edx + 0x61]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ecx, cl
mov word [edi], cx
add edi, 2
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x40a0b0
mov dword [edi], 0xa000d
mov word [edi + 4], 0
mov eax, dword [edx + 0x80]
mov dword [esp + 0x18], 0xbeb0927
mov dword [esp + 0x1c], 0xfe70dfc
mov dword [esp + 0x20], 0x1110
mov ecx, 0xabb14c48
mov edx, 0x544eb3b7
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx + 0x544eb3d0]
mov edi, ecx
and edi, ebx
add edi, edi
mov esi, edi
sub esi, ebx
add esi, edx
or esi, 0xa2759dbf
add esi, ebx
sub ebx, edi
add ebx, ecx
sub esi, edi
lea edi, [ecx + esi]
inc edi
mov esi, edi
and esi, 0xfd
mov ebp, edi
and ebp, 2
or edi, 2
imul edi, ebp
xor ebp, 2
imul ebp, esi
xor ebx, 0xbf
add ebx, edi
add ebx, ebp
inc bl
mov byte [esp + ecx + 0x544eb3d0], bl
inc ecx
dec edx
cmp ecx, 0xabb14c54
jne 0x40a100
lea ecx, [esp + 0x74]
push 0x493e0
push eax
mov esi, dword [esp + 0xc]
push esi
push 0
push 0
push ecx
lea eax, [esp + 0x30]
push eax
call fcn.0040cae0
add esp, 0x1c
mov ebx, eax
push esi
call fcn.004084e0
add esp, 4
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x80]
add dword [ecx + 4], eax
mov dword [ecx + 0x80], 0
jmp 0x40a1a3
mov bl, 1
mov eax, ebx
add esp, 0x110
pop esi
pop edi
pop ebx
pop ebp
ret