Function at 0x409dc0
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 0x40a2a1
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.00406550
add esp, 4
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 8], 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 + 0xc], edx
lea eax, [edx + 0x400]
push eax
call fcn.004086e0
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x70], 0xadaddeac
mov byte [esp + 0x74], 0x40
mov dword [esp + 0x75], 0
mov dword [esp + 0x78], 0
xor eax, eax
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x91
xor cl, byte [esp + eax + 0x70]
add cl, 0x2b
mov byte [esp + eax + 0x70], cl
inc eax
cmp eax, 0xc
jne 0x409e50
lea edi, [esp + 0x70]
mov ecx, esi
push 0x44b9a0
push edi
push dword [esp + 8]
call fcn.00409670
mov dword [esp + 0x70], 0x73eee8e0
xor eax, eax
mov ebp, 0x13
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x70]
lea ebx, [edx + edx]
not ebx
add ebx, edx
and ebx, 0xa2
and edx, 0x5d
or edx, ebx
mov ecx, ebp
xor ecx, 0x11
mov ebx, eax
and ebx, 1
or ebx, ecx
or ebx, 0x4c
xor ebx, edx
add bl, 0x64
mov byte [esp + eax + 0x70], bl
inc eax
dec ebp
cmp eax, 4
jne 0x409e90
lea eax, [esp + 6]
mov ecx, esi
push eax
push edi
push dword [esp + 8]
call fcn.00409670
mov eax, dword [str.HpOoIh__bd10a1647218]
mov dword [esp + 0x70], 0x9ffaf0f4
mov byte [esp + 0x74], 0
xor ecx, ecx
xor edx, edx
nop
nop
nop
mov ebp, ecx
and ebp, 4
mov ebx, edx
xor ebx, 0x1a
add ebx, ebp
xor bl, byte [esp + edx + 0x70]
add bl, 0x7e
mov byte [esp + edx + 0x70], bl
inc edx
add ecx, 2
cmp edx, 5
jne 0x409ef0
mov ecx, esi
push eax
push edi
push dword [esp + 8]
call fcn.00409670
mov dword [esp + 0x70], 0x5b246417
mov dword [esp + 0x74], 0x2c5f2057
mov dword [esp + 0x78], 0x5255502f
mov byte [esp + 0x7c], 0xbc
mov dword [esp + 0x7d], 0
mov dword [esp + 0x80], 0
xor eax, eax
nop
movzx ebx, byte [esp + eax + 0x70]
lea ebp, [eax - 0x377f92a2]
lea ecx, [eax + eax]
mov edx, 0xa1
sub edx, eax
xor edx, ebp
and edx, ebx
xor edx, ebp
lea ebx, [edx*2 + 0x2afbba52]
add edx, 0x157ddd29
and ebx, 2
mov ebp, ebx
and ebp, edx
or ebx, edx
xor ebx, 1
add ebx, ebp
mov byte [esp + eax + 0x70], bl
and ecx, 2
mov edx, ecx
and edx, eax
xor ecx, eax
xor ecx, 1
lea eax, [ecx + edx*2]
cmp eax, 0x14
jb 0x409f50
mov dword [esp + 0x10], 0x19a6b6b3
mov word [esp + 0x14], 0
xor eax, eax
nop
movzx edx, byte [esp + eax + 0x10]
lea ecx, [eax + edx]
lea ebx, [eax + 0x7b]
and ebx, edx
add ebx, ebx
sub ecx, ebx
add cl, 0x14
mov byte [esp + eax + 0x10], cl
mov ecx, eax
and ecx, 1
xor eax, 0xabf72a9
lea eax, [eax + ecx*2]
add eax, 0xf5408d58
cmp eax, 6
jb 0x409fb0
lea eax, [esp + 0x10]
mov ecx, esi
push edi
push eax
push dword [esp + 8]
call fcn.00409670
mov dword [esp + 0x70], 0x525e5c56
mov byte [esp + 0x74], 0xc8
mov dword [esp + 0x75], 0
mov word [esp + 0x79], 0
mov eax, 0x461431ab
mov ecx, 0xb9ebce53
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx + 0x4614321d]
lea ebp, [eax + 1]
mov edx, ebp
and edx, ebx
xor ebp, ebx
add ebp, edx
or ebx, ecx
mov edx, eax
sub edx, ebp
and edx, ebx
mov ebx, edx
and ebx, 1
or edx, 1
add edx, ebx
add dl, 0x60
mov byte [esp + ecx + 0x4614321d], dl
dec eax
inc ecx
cmp eax, 0x461431a0
jne 0x40a020
mov ecx, esi
push dword [esp + 0xc]
push dword [esp + 0xc]
push edi
push dword [esp + 0xc]
call fcn.00409940
mov dword [esp + 0x10], 0x21972779
mov dword [esp + 0x14], 0x3dae2396
mov dword [esp + 0x18], 0x39883f83
mov dword [esp + 0x1c], 0x354d3bb4
mov dword [esp + 0x20], 0x31bd3798
mov dword [esp + 0x24], 0xd8d3380
mov dword [esp + 0x28], 0x96e0f46
mov dword [esp + 0x2c], 0x5850bbf
mov dword [esp + 0x30], 0x18a07b0
mov dword [esp + 0x34], 0x1db203bb
mov dword [esp + 0x38], 0x19ac1fbf
mov dword [esp + 0x3c], 0x156b1b94
mov dword [esp + 0x40], 0x11a717aa
mov dword [esp + 0x44], 0x6da513a2
mov dword [esp + 0x48], 0x69d26f1b
mov dword [esp + 0x4c], 0x65e66bcb
mov dword [esp + 0x50], 0x612367c7
mov dword [esp + 0x54], 0x7dc06300
mov dword [esp + 0x58], 0x79f17fcd
mov dword [esp + 0x5c], 0x75c67bce
mov dword [esp + 0x60], 0x71c477d7
mov dword [esp + 0x64], 0x4d3573fb
mov word [esp + 0x68], 0x4f4c
mov dword [esp + 0x6a], 0
mov eax, 0xa4e16d89
mov ecx, 0x5b1e9276
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + eax + 0x5b1e9287]
mov edx, eax
xor edx, ebp
mov ebx, eax
and ebx, ebp
or edx, ecx
not edx
or edx, ebx
add edx, edx
mov ebx, edx
xor ebx, eax
and edx, ecx
add edx, edx
sub edx, ebx
mov ebx, edx
xor ebx, ebp
not edx
and edx, ebp
add edx, edx
sub edx, ebx
add dl, 0x53
mov byte [esp + eax + 0x5b1e9287], dl
inc eax
dec ecx
cmp eax, 0xa4e16de7
jne 0x40a140
movzx eax, word [esp + 0x10]
test ax, ax
je 0x40a1b1
lea edi, [esp + 0x70]
lea ecx, [esp + 0x12]
nop
nop
nop
nop
nop
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 0x40a1a0
mov word [edi], 0
movzx ecx, byte [esi + 0x60]
test cl, cl
je 0x40a1e1
lea eax, [esi + 0x61]
nop
nop
nop
nop
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 0x40a1d0
mov dword [edi], 0xa000d
mov word [edi + 4], 0
mov eax, dword [esi + 0x80]
mov dword [esp + 0x10], 0xd97ddb35
mov dword [esp + 0x14], 0xdd61df68
mov word [esp + 0x18], 0xd3dc
mov dword [esp + 0x1a], 0
mov byte [esp + 0x1e], 0
mov ecx, 0x57f014af
mov edx, 0x50
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx - 0x57f0149f]
mov edi, ecx
or edi, ebx
not ebx
or ebx, edx
and ebx, edi
mov edi, ebx
and edi, 1
or ebx, 1
add ebx, edi
add bl, 0x94
mov byte [esp + ecx - 0x57f0149f], bl
inc ecx
dec edx
cmp ecx, 0x57f014be
jne 0x40a230
lea ecx, [esp + 0x70]
push 0x493e0
push eax
mov edi, dword [esp + 8]
push edi
push 0
push 0
push ecx
lea eax, [esp + 0x28]
push eax
call fcn.0040c660
add esp, 0x1c
mov ebx, eax
push edi
call fcn.004086f0
add esp, 4
mov eax, dword [esi + 0x80]
add dword [esi + 4], eax
mov dword [esi + 0x80], 0
jmp 0x40a2a3
mov bl, 1
mov eax, ebx
add esp, 0x10c
pop esi
pop edi
pop ebx
pop ebp
ret