Function at 0x409c70
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 0x40a1a0
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.00406610
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 + 4], edx
lea eax, [edx + 0x400]
push eax
call fcn.00408740
add esp, 4
mov ebp, eax
mov dword [esp + 0x70], 0x477b7678
mov byte [esp + 0x74], 0xe4
mov dword [esp + 0x75], 0
mov byte [esp + 0x79], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x70]
lea ecx, [eax + 0x53585958]
mov edi, 0x1a6a7
sub edi, eax
and edi, 0x10017
and ecx, 0x40400168
or ecx, edi
mov edi, edx
xor edi, 0x40400168
xor edx, 0x93185817
or edx, ecx
not ecx
or ecx, edi
and ecx, edx
mov edx, 0x6a
sub edx, ecx
add ecx, 0x95
and edx, 0x4d
and ecx, 0xb2
sub ecx, edx
mov byte [esp + eax + 0x70], cl
add eax, 0x5f65f86c
mov ecx, eax
xor ecx, 0x5f65f86b
and eax, 0x14
add eax, eax
sub eax, ecx
cmp eax, 0xa
jb 0x409d00
lea ebx, [esp + 0x70]
mov ecx, esi
push 0x449500
push ebx
push ebp
call fcn.00409540
mov dword [esp + 0x70], 0x8f2a3038
mov word [esp + 0x74], 0
mov byte [esp + 0x76], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x70]
lea ecx, [eax - 0x2139d95e]
mov edi, 0x2139d95d
sub edi, eax
and edi, 0x2128910e
and ecx, 0xc0c20421
or ecx, edi
xor ecx, edx
mov edx, ecx
xor edx, 0x3f2cb38e
mov edi, edx
and edi, 0x55
and ecx, 0x55
add ecx, ecx
xor ecx, 0xf7
lea edx, [edx + edi*2]
add edx, ecx
add dl, 0xd7
mov byte [esp + eax + 0x70], dl
lea ecx, [eax + eax]
and ecx, 2
mov edx, ecx
and edx, eax
or ecx, eax
xor ecx, 1
add ecx, edx
mov eax, ecx
cmp ecx, 7
jb 0x409da0
lea eax, [esp + 2]
mov ecx, esi
push eax
push ebx
push ebp
call fcn.00409540
mov eax, dword [str.hRjzG3__AEX]
mov dword [esp + 0x70], 0x9ffaf0f4
mov ecx, 0x1d41c49a
nop
nop
movzx edx, byte [esp + ecx - 0x1d41c42a]
xor edx, ecx
mov edi, edx
not edi
add edx, 0xfd
and edi, 1
or edx, 1
add edx, edi
mov byte [esp + ecx - 0x1d41c42a], dl
inc ecx
cmp ecx, 0x1d41c49e
jne 0x409e20
mov ecx, esi
push eax
push ebx
mov dword [esp + 0x10], ebp
push ebp
call fcn.00409540
mov dword [esp + 0x70], 0xfdf0f8e9
mov dword [esp + 0x74], 0xd0fdf4c1
mov dword [esp + 0x78], 0xc6c7fcd1
mov byte [esp + 0x7c], 0x58
mov word [esp + 0x7d], 0
mov byte [esp + 0x7f], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x99
xor cl, byte [esp + eax + 0x70]
add cl, 3
mov byte [esp + eax + 0x70], cl
inc eax
cmp eax, 0x10
jne 0x409e90
mov dword [esp + 0x10], 0x73fe1211
mov dword [esp + 0x14], 0
xor ebp, ebp
xor ecx, ecx
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx + 0x10]
mov eax, ebp
and eax, 8
mov edx, ecx
xor edx, 0x23de2f6c
add edx, eax
mov eax, edx
and eax, edi
add edx, edi
add eax, eax
sub edx, eax
add dl, 0xe4
mov byte [esp + ecx + 0x10], dl
inc ecx
add ebp, 2
cmp ecx, 8
jne 0x409ec0
lea eax, [esp + 0x10]
mov ecx, esi
push ebx
push eax
mov ebp, dword [esp + 0x10]
push ebp
call fcn.00409540
mov dword [esp + 0x70], 0x7a727072
mov byte [esp + 0x74], 0x9c
mov dword [esp + 0x75], 0
mov dword [esp + 0x78], 0
xor eax, eax
nop
movzx edx, byte [esp + eax + 0x70]
lea edi, [eax + 0xda]
and edi, edx
lea ecx, [eax - 0x149aba26]
or ecx, edx
xor ecx, edi
add ecx, 0x6705a2bd
mov edx, ecx
xor edx, 0x7e
mov edi, ecx
or edi, 1
and edi, edx
xor ecx, 1
lea ecx, [ecx + edi*2]
mov byte [esp + eax + 0x70], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0xc
jb 0x409f20
mov ecx, esi
push dword [esp + 4]
push dword [esp + 0x10]
push ebx
push ebp
call fcn.00409810
mov dword [esp + 0x10], 0x299b2be1
mov dword [esp + 0x14], 0x2d9a2f9a
mov dword [esp + 0x18], 0x31803387
mov dword [esp + 0x1c], 0x35c53784
mov dword [esp + 0x20], 0x39853be0
mov dword [esp + 0x24], 0x3d953f88
mov dword [esp + 0x28], 0x1e203c2
mov dword [esp + 0x2c], 0x5bd07b3
mov dword [esp + 0x30], 0x9be0ba8
mov dword [esp + 0x34], 0xdbe0fa7
mov dword [esp + 0x38], 0x11a413ab
mov dword [esp + 0x3c], 0x15e717a4
mov dword [esp + 0x40], 0x19ab1bbe
mov dword [esp + 0x44], 0x1dad1fae
mov dword [esp + 0x48], 0xe146e3ef
mov dword [esp + 0x4c], 0xe552e747
mov dword [esp + 0x50], 0xe917eb43
mov dword [esp + 0x54], 0xed48ef08
mov dword [esp + 0x58], 0xf149f35d
mov dword [esp + 0x5c], 0xf552f742
mov dword [esp + 0x60], 0xf94cfb53
mov dword [esp + 0x64], 0xfd3dff47
mov word [esp + 0x68], 0xc3fc
mov byte [esp + 0x6e], 0
mov dword [esp + 0x6a], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x47
xor cl, byte [esp + eax + 0x10]
add cl, 0x9d
mov byte [esp + eax + 0x10], cl
inc eax
cmp eax, 0x5f
jne 0x40a040
movzx eax, word [esp + 0x10]
test ax, ax
je 0x40a081
lea ebx, [esp + 0x70]
lea ecx, [esp + 0x12]
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 0x40a070
mov word [ebx], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, 0xffffffff
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [esi + ecx + 0x61], 0
lea ecx, [ecx + 1]
jne 0x40a0a0
cmp eax, ecx
jae 0x40a0bc
movsx ecx, byte [esi + eax + 0x60]
mov word [ebx], cx
add ebx, 2
inc eax
jmp 0x40a090
mov dword [ebx], 0xa000d
mov word [ebx + 4], 0
mov eax, dword [esi + 0x80]
mov dword [esp + 4], eax
mov dword [esp + 0x10], 0x19b51bed
mov dword [esp + 0x14], 0xe551e7a8
mov dword [esp + 0x18], 0xe3e4
mov byte [esp + 0x1c], 0
mov ecx, 0x15f1b4fb
mov edx, 0x4a0e4b04
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ecx - 0x15f1b4eb]
mov edi, ecx
and edi, 0x10100090
mov ebx, edx
and ebx, 0x4800016f
or ebx, edi
xor ebx, eax
mov edi, ebx
and edi, 0x18
xor edi, 8
mov eax, ebx
xor eax, 8
mov ebp, ebx
xor ebp, 0x80
and ebp, 0xee
and ebx, 0x11
or ebx, ebp
xor ebx, 0xf7
and eax, 0x18
or eax, ebx
add eax, edi
inc al
mov byte [esp + ecx - 0x15f1b4eb], al
inc ecx
dec edx
cmp ecx, 0x15f1b508
jne 0x40a100
lea eax, [esp + 0x70]
push 0x493e0
push dword [esp + 8]
mov edi, dword [esp + 0x10]
push edi
push 0
push 0
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0040cad0
add esp, 0x1c
mov ebx, eax
push edi
call fcn.00408750
add esp, 4
mov eax, dword [esi + 0x80]
add dword [esi + 4], eax
mov dword [esi + 0x80], 0
jmp 0x40a1a2
mov bl, 1
mov eax, ebx
add esp, 0x10c
pop esi
pop edi
pop ebx
pop ebp
ret