Function at 0x409ae0
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 0x409fd0
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.00406200
add esp, 4
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xc], 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 + 0x10], edx
lea eax, [edx + 0x400]
push eax
call fcn.004083e0
add esp, 4
mov ebp, eax
mov dword [esp + 0x74], 0xd5e516e4
mov byte [esp + 0x78], 0xb0
mov dword [esp + 0x79], 0
mov dword [esp + 0x7c], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
mov edi, eax
and edi, 0x1a
mov edx, ecx
xor edx, 0x1d
add edx, edi
xor dl, byte [esp + ecx + 0x74]
add dl, 0x6f
mov byte [esp + ecx + 0x74], dl
inc ecx
add eax, 2
cmp ecx, 0xc
jne 0x409b70
lea ebx, [esp + 0x74]
mov ecx, esi
push 0x44def0
push ebx
push ebp
call fcn.004093b0
mov dword [esp + 0x74], 0x37cac0c8
xor eax, eax
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x74]
mov edx, 0xd8ccbc89
sub edx, eax
or edx, ecx
mov edi, 0x89
sub edi, eax
and edi, ecx
xor edi, edx
mov ecx, edi
and ecx, 1
add edi, 0x4f
or edi, 1
sub ecx, edi
mov byte [esp + eax + 0x74], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 4
jb 0x409bb0
lea eax, [esp + 2]
mov ecx, esi
push eax
push ebx
push ebp
call fcn.004093b0
mov eax, dword [str.HpOoIh__b8bb860e1ee2]
mov dword [esp + 0x74], 0x3f9a9094
mov word [esp + 0x78], 0
mov byte [esp + 0x7a], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x4a
xor dl, byte [esp + ecx + 0x74]
add dl, 0x8e
mov byte [esp + ecx + 0x74], dl
inc ecx
cmp ecx, 7
jne 0x409c20
mov dword [esp + 8], esi
mov ecx, esi
push eax
push ebx
mov dword [esp + 0xc], ebp
push ebp
call fcn.004093b0
mov dword [esp + 0x74], 0x35003809
mov dword [esp + 0x78], 0x350c31
mov dword [esp + 0x7c], 0x2e0f3401
mov byte [esp + 0x80], 0x88
mov dword [esp + 0x81], 0
mov dword [esp + 0x84], 0
xor eax, eax
movzx ecx, byte [esp + eax + 0x74]
lea edx, [eax - 0xadb1adb]
and edx, ecx
add ecx, eax
add ecx, 0xf524e525
add edx, edx
sub ecx, edx
mov edx, ecx
xor edx, 0xba
and ecx, 0x45
add ecx, ecx
sub ecx, edx
inc cl
mov byte [esp + eax + 0x74], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x14
jb 0x409c80
mov dword [esp + 0x14], 0x4fdaaea9
mov dword [esp + 0x18], 0
mov eax, 0x185965b7
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x185965a3]
lea ebp, [eax - 0x18596525]
and ebp, edx
mov edi, ebp
and edi, 2
mov esi, ebp
or esi, 0xfffffffd
inc esi
mov ecx, ebp
and ecx, 0xffffff9d
imul ecx, esi
or ebp, 2
imul ebp, edi
add ecx, edx
sub ecx, ebp
add ecx, eax
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov byte [esp + eax - 0x185965a3], cl
inc eax
cmp eax, 0x185965bf
jne 0x409ce0
lea eax, [esp + 0x14]
mov edi, dword [esp + 8]
mov ecx, edi
push ebx
push eax
mov ebp, dword [esp + 0xc]
push ebp
call fcn.004093b0
mov dword [esp + 0x74], 0x6e66686e
mov byte [esp + 0x78], 0xac
mov dword [esp + 0x79], 0
mov dword [esp + 0x7c], 0
xor ecx, ecx
mov eax, 0xffffffff
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
or esi, 0x5c
mov edx, ecx
or edx, 0x5c
add edx, esi
add edx, ecx
inc dl
xor dl, byte [esp + ecx + 0x74]
add dl, 0x34
mov byte [esp + ecx + 0x74], dl
lea edx, [ecx + 1]
dec eax
mov ecx, edx
cmp edx, 0xc
jne 0x409d70
mov ecx, edi
push dword [esp + 0x10]
push dword [esp + 0x10]
push ebx
push ebp
call fcn.004096a0
mov dword [esp + 0x14], 0x33a53173
mov dword [esp + 0x18], 0x2fa22dba
mov dword [esp + 0x1c], 0x2bbc29b5
mov dword [esp + 0x20], 0x277325a8
mov dword [esp + 0x24], 0x23ab218c
mov dword [esp + 0x28], 0x1f831d8c
mov dword [esp + 0x2c], 0x1b7a1952
mov dword [esp + 0x30], 0x179b1581
mov dword [esp + 0x34], 0x139e1184
mov dword [esp + 0x38], 0xf9e0d95
mov dword [esp + 0x3c], 0xb9809a9
mov dword [esp + 0x40], 0x7510588
mov dword [esp + 0x44], 0x395019e
mov dword [esp + 0x48], 0x7feb7dee
mov dword [esp + 0x4c], 0x7be6792d
mov dword [esp + 0x50], 0x77fa75d5
mov dword [esp + 0x54], 0x733971d1
mov dword [esp + 0x58], 0x6fcc6d0c
mov dword [esp + 0x5c], 0x6be769ff
mov dword [esp + 0x60], 0x67fa65f2
mov dword [esp + 0x64], 0x63f061c1
mov dword [esp + 0x68], 0x5f1b5dd5
mov word [esp + 0x6c], 0x5958
mov word [esp + 0x72], 0
mov dword [esp + 0x6e], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, ecx
xor esi, 0x74
mov edx, eax
and edx, 0x16
sub edx, esi
xor dl, byte [esp + ecx + 0x14]
add dl, 0x44
mov byte [esp + ecx + 0x14], dl
inc ecx
add eax, 2
cmp ecx, 0x60
jne 0x409e80
movzx eax, word [esp + 0x14]
test ax, ax
je 0x409ed1
lea ebx, [esp + 0x74]
lea ecx, [esp + 0x16]
nop
nop
nop
nop
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 0x409ec0
mov word [ebx], 0
movzx ecx, byte [edi + 0x60]
test cl, cl
je 0x409f01
lea eax, [edi + 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 0x409ef0
mov dword [ebx], 0xa000d
mov word [ebx + 4], 0
mov edi, dword [edi + 0x80]
mov dword [esp + 0x14], 0xc3a3c1ef
mov dword [esp + 0x18], 0xc7afc554
mov word [esp + 0x1c], 0xc9c8
mov dword [esp + 0x1e], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x14]
mov ebx, ecx
xor ebx, 0xe3ad5aaf
mov eax, edx
or eax, ebx
lea ebp, [ecx + eax]
add ebp, 0x1c52a551
mov eax, ebp
and eax, 0xfffffffd
mov esi, ebp
and esi, 2
or ebp, 2
imul ebp, esi
xor esi, 2
imul esi, eax
add ebp, esi
lea eax, [ecx + 0x50]
xor eax, ebp
and ebp, ebx
add ebp, ebp
sub eax, ebp
add al, dl
add al, 0x70
mov byte [esp + ecx + 0x14], al
inc ecx
cmp ecx, 0xe
jne 0x409f40
lea eax, [esp + 0x74]
push 0x493e0
push edi
mov esi, dword [esp + 0xc]
push esi
push 0
push 0
push eax
lea eax, [esp + 0x2c]
push eax
call fcn.0040c5a0
add esp, 0x1c
mov ebx, eax
push esi
call fcn.004083f0
add esp, 4
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x80]
add dword [ecx + 4], eax
mov dword [ecx + 0x80], 0
jmp 0x409fd2
mov bl, 1
mov eax, ebx
add esp, 0x110
pop esi
pop edi
pop ebx
pop ebp
ret