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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x104
cmp dword [ecx + 0x20], 0
je 0x409e79
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.00406140
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.00408300
add esp, 4
mov edi, eax
mov dword [esp + 0x68], 0x9d9dae9c
mov byte [esp + 0x6c], 0x20
mov dword [esp + 0x6d], 0
mov dword [esp + 0x70], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x89
xor cl, byte [esp + eax + 0x68]
add cl, 0x53
mov byte [esp + eax + 0x68], cl
inc eax
cmp eax, 0xc
jne 0x409a50
lea ebx, [esp + 0x68]
mov ecx, esi
push 0x44b9a4
push ebx
push edi
call fcn.00409280
mov dword [esp + 0x68], 0xd9bea4b4
mov word [esp + 0x6c], 0
mov byte [esp + 0x6e], 0
mov eax, 0x74d6144f
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x74d613e7]
lea edx, [eax - 0x74d61400]
and edx, ecx
or ecx, eax
lea ebp, [edx + edx]
not ebp
add ebp, edx
and ebp, ecx
mov ecx, ebp
and ecx, 0x74
xor ebp, 0x74
lea ecx, [ecx*2]
add ecx, ebp
inc cl
mov byte [esp + eax - 0x74d613e7], cl
inc eax
cmp eax, 0x74d61456
jne 0x409aa0
lea eax, [esp + 2]
mov ecx, esi
push eax
push ebx
push edi
call fcn.00409280
mov eax, dword [str.Dvh8ui__222]
mov dword [esp + 0x68], 0x219a9c90
mov dword [esp + 0x6c], 0
mov ecx, 0xc9
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx - 0x61]
mov ebp, ecx
and ebp, edx
add ebp, ebp
sub edx, ebp
add edx, ecx
add edx, 0xbbe75700
mov ebp, edx
xor ebp, 0xab84b6ee
and edx, 0x10634911
add edx, edx
sub edx, ebp
mov ebp, edx
not ebp
or ebp, 1
add ebp, edx
xor edx, 1
lea edx, [edx + ebp*2]
add dl, 2
mov byte [esp + ecx - 0x61], dl
inc ecx
cmp ecx, 0xd1
jne 0x409b10
mov ecx, esi
push eax
push ebx
push edi
call fcn.00409280
mov dword [esp + 0x68], 0x35383001
mov dword [esp + 0x6c], 0x83d3429
mov dword [esp + 0x70], 0x3a3b3c09
mov byte [esp + 0x74], 0x80
mov dword [esp + 0x75], 0
mov dword [esp + 0x78], 0
mov eax, 0x1f831be3
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x1f831b7b]
xor ecx, eax
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, edx
add cl, 0x90
mov byte [esp + eax - 0x1f831b7b], cl
inc eax
cmp eax, 0x1f831bf7
jne 0x409ba0
mov dword [esp + 0xc], 0x1faabeb9
xor eax, eax
mov ecx, eax
add cl, 0x7a
xor cl, byte [esp + eax + 0xc]
add cl, 0x9e
mov byte [esp + eax + 0xc], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 4
jb 0x409bd0
lea eax, [esp + 0xc]
mov ecx, esi
push ebx
push eax
push edi
call fcn.00409280
mov dword [esp + 0x68], 0xfe86f8fe
mov byte [esp + 0x6c], 0x1c
mov dword [esp + 0x6d], 0
mov byte [esp + 0x71], 0
mov eax, 0xd8d8bfc4
nop
nop
nop
movzx ecx, byte [esp + eax + 0x272740a4]
xor ecx, eax
add ecx, 0xc3c4412b
mov edx, ecx
xor edx, 0xc3f1f1f0
and ecx, 0x1c0c000f
add ecx, ecx
sub ecx, edx
inc ecx
mov edx, ecx
and edx, 0x70
xor ecx, 0xf0
lea ecx, [ecx + edx*2]
mov byte [esp + eax + 0x272740a4], cl
inc eax
cmp eax, 0xd8d8bfce
jne 0x409c20
mov ecx, esi
push dword [esp + 8]
push dword [esp + 8]
push ebx
push edi
call fcn.00409520
mov dword [esp + 0xc], 0x239d21e3
mov dword [esp + 0x10], 0x2792259a
mov dword [esp + 0x14], 0x3b84399d
mov dword [esp + 0x18], 0x3fc33d88
mov dword [esp + 0x1c], 0x33bb31e4
mov dword [esp + 0x20], 0x37933584
mov dword [esp + 0x24], 0xbea09c2
mov dword [esp + 0x28], 0xfbb0db1
mov dword [esp + 0x2c], 0x3b601bc
mov dword [esp + 0x30], 0x7b605bd
mov dword [esp + 0x34], 0x1ba819b9
mov dword [esp + 0x38], 0x1fe11da8
mov dword [esp + 0x3c], 0x13ad11b6
mov dword [esp + 0x40], 0x17ab15a6
mov dword [esp + 0x44], 0xeb4ee915
mov dword [esp + 0x48], 0xef5aed4d
mov dword [esp + 0x4c], 0xe329e141
mov dword [esp + 0x50], 0xe744e504
mov dword [esp + 0x54], 0xfb4ff947
mov dword [esp + 0x58], 0xff5afd42
mov dword [esp + 0x5c], 0xf340f151
mov dword [esp + 0x60], 0xf73bf57d
mov dword [esp + 0x64], 0xc9c8
xor eax, eax
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0xc]
lea ecx, [eax + 0x48]
or ecx, edx
mov ebp, 0xb7
sub ebp, eax
or ebp, edx
add ebp, eax
sub ecx, ebp
add cl, 0x4f
mov byte [esp + eax + 0xc], cl
mov ecx, eax
not ecx
or ecx, 1
add ecx, eax
xor eax, 1
lea eax, [eax + ecx*2]
add eax, 2
cmp eax, 0x5c
jb 0x409d30
movzx eax, word [esp + 0xc]
test ax, ax
je 0x409d91
lea ebx, [esp + 0x68]
lea ecx, [esp + 0xe]
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 0x409d80
mov word [ebx], 0
movzx ecx, byte [esi + 0x60]
test cl, cl
je 0x409dc1
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 0x409db0
mov dword [ebx], 0xa000d
mov word [ebx + 4], 0
mov eax, dword [esi + 0x80]
mov dword [esp + 0xc], 0x39953b6d
mov dword [esp + 0x10], 0x25b127a8
mov word [esp + 0x14], 0x2324
mov dword [esp + 0x16], 0
mov word [esp + 0x1a], 0
xor ecx, ecx
nop
nop
nop
nop
nop
mov edx, ecx
and edx, 9
mov ebx, ecx
and ebx, 2
mov ebp, ebx
xor ebp, 2
imul ebp, edx
or edx, 2
imul edx, ebx
add edx, ebp
mov ebx, ecx
xor ebx, 0xc49af50b
mov ebp, edx
and ebp, ebx
xor ebx, edx
lea edx, [ebx + ebp*2]
xor dl, byte [esp + ecx + 0xc]
add dl, 0xc9
mov byte [esp + ecx + 0xc], dl
inc ecx
cmp ecx, 0x10
jne 0x409e00
lea ecx, [esp + 0x68]
push 0x493e0
push eax
push edi
push 0
push 0
push ecx
lea eax, [esp + 0x24]
push eax
call fcn.0040c650
add esp, 0x1c
mov ebx, eax
push edi
call fcn.00408310
add esp, 4
mov eax, dword [esi + 0x80]
add dword [esi + 4], eax
mov dword [esi + 0x80], 0
jmp 0x409e7b
mov bl, 1
mov eax, ebx
add esp, 0x104
pop esi
pop edi
pop ebx
pop ebp
ret