Function at 0x10085e00
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xd8
cmp byte [0x1019d00e], 0
push ebx
push esi
mov ebx, ecx
push edi
mov dword [ebp - 8], ebx
jne 0x10085e6e
mov edi, dword [0x1019d038]
cmp dword [0x10347214], edi
je 0x10085e6e
mov eax, dword [0x1030e3b4]
test eax, eax
je 0x10085e36
lea ebx, [eax + 1]
jmp 0x10085e38
xor ebx, ebx
mov esi, dword [sym.imp.KERNEL32.dll_VirtualProtect]
lea eax, [ebp - 4]
push eax
push 0x40
push 4
push ebx
add edi, 3
mov dword [ebp - 4], 0
call esi
lea eax, [ebp - 4]
mov dword [ebx], edi
push eax
push dword [ebp - 4]
push 4
push ebx
call esi
mov eax, dword [0x1019d038]
mov ebx, dword [ebp - 8]
mov dword [0x10347214], eax
mov eax, dword [0x1030d9ac]
test eax, eax
je 0x10085e82
mov al, byte [eax + 0x20]
test al, al
jne 0x100860b4
mov eax, dword [0x1030db64]
test al, 1
jne 0x10085ea1
mov ecx, dword [0x1030db40]
or eax, 1
mov dword [0x1030db64], eax
mov dword [0x1030db60], ecx
jmp 0x10085ea7
mov ecx, dword [0x1030db60]
mov eax, dword [0x1019d07c]
test byte [ecx + eax], 0x40
jne 0x100860b4
mov eax, dword [0x103473fc]
cmp byte [eax + 0x94], 0
je 0x10085ed1
cmp byte [eax + 0x95], 0
jne 0x10086034
mov ecx, dword [0x10347400]
call fcn.1007f8a0
test al, al
jne 0x10086034
mov eax, dword [0x103473fc]
cmp byte [eax + 0x80], 0
jne 0x10085f08
cmp byte [eax + 0x81], 0
je 0x10085f08
cmp dword [eax + 0x84], 0
jle 0x10086034
cmp byte [0x102fe91f], 0
je 0x10086034
lea eax, [ebp - 0xd8]
push eax
call fcn.100de9e0
mov esi, eax
lea edi, [ebp - 0x70]
mov ecx, 0x1a
add esp, 4
rep movsd dword es:[edi], dword [esi]
lea edi, [ebx + 0xc]
mov ecx, 0x1a
lea esi, [ebp - 0x70]
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
call fcn.10085a20
mov ecx, dword [0x10344194]
mov edi, eax
movzx esi, byte [ebx + 0x48]
mov eax, dword [0x1030e624]
test cl, 1
jne 0x10085f6d
or ecx, 1
mov edx, eax
mov dword [0x10344194], ecx
mov dword [0x10344190], edx
jmp 0x10085f73
mov edx, dword [0x10344190]
test cl, 1
jne 0x10085f89
or ecx, 1
mov edx, eax
mov dword [0x10344194], ecx
mov dword [0x10344190], edx
mov eax, dword [0x1019d07c]
movss xmm0, dword [edx + eax]
movss xmm1, dword [edx + eax + 4]
mov eax, dword [0x102fe928]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm1, xmm0
movss xmm0, dword [0x10171564]
comiss xmm0, xmm1
seta cl
test al, 1
je 0x10085fc0
test cl, cl
jne 0x10085fef
test al, 2
je 0x10085fdc
test cl, cl
jne 0x10085fdc
mov ecx, dword [0x103473e4]
call fcn.100a3820
test al, al
jne 0x10085fef
mov eax, dword [0x102fe928]
test al, 4
je 0x10085ff1
mov ecx, dword [0x103473e4]
call fcn.100a3820
test al, al
jne 0x10085ff1
mov esi, edi
mov ecx, dword [0x103473e4]
call fcn.100a3820
test al, al
jne 0x1008603d
cmp byte [0x102fe920], al
je 0x1008603d
mov eax, dword [0x1030d934]
lea ecx, [edi + 1]
mov ebx, dword [eax + 0x1c]
mov eax, dword [0x10347210]
sub eax, ebx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
jle 0x10086030
mov esi, 1
mov dword [0x10347210], ebx
jmp 0x1008603d
mov esi, edi
jmp 0x1008603d
mov ecx, ebx
call fcn.10085a20
mov esi, eax
mov ecx, dword [0x103473fc]
cmp byte [ecx + 0x94], 0
je 0x10086059
cmp byte [ecx + 0x95], 0
je 0x10086059
mov bl, 1
jmp 0x1008605b
xor bl, bl
mov ecx, dword [0x103473e4]
call fcn.100a34a0
mov ecx, dword [0x103473fc]
cmp byte [ecx + 0x80], 0
jne 0x100860b4
test esi, esi
je 0x100860b4
test bl, bl
jne 0x10086090
test al, al
je 0x10086090
mov ecx, dword [0x10347400]
call fcn.1007f8a0
test al, al
je 0x100860b4
mov eax, dword [0x1019d08c]
mov byte [eax], 0
mov eax, dword [0x1030d98c]
cmp dword [eax + 0x4d30], esi
jl 0x100860c1
mov eax, dword [0x1019d08c]
pop edi
pop esi
pop ebx
mov byte [eax], 1
mov esp, ebp
pop ebp
ret
mov eax, dword [0x1019d08c]
cmp byte [eax], 0
jne 0x100860c1
mov byte [eax], 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret