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

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
cmp byte [0x1020a00e], 0
push ebx
push esi
mov ebx, ecx
push edi
mov dword [ebp - 8], ebx
jne 0x1008e20e
mov ebx, dword [0x1020a03c]
cmp dword [0x10337044], ebx
je 0x1008e20c
mov esi, dword [0x10333770]
test esi, esi
je 0x1008e1d2
inc esi
jmp 0x1008e1d4
xor esi, esi
mov edi, dword [sym.imp.KERNEL32.dll_VirtualProtect]
lea eax, [ebp - 4]
push eax
push 0x40
push 4
push esi
add ebx, 3
mov dword [ebp - 4], 0
call edi
lea eax, [ebp - 4]
mov dword [esi], ebx
push eax
push dword [ebp - 4]
push 4
push esi
call edi
mov eax, dword [0x1020a03c]
mov ebx, dword [ebp - 8]
mov dword [0x10337044], eax
jmp 0x1008e20e
mov ebx, ecx
mov eax, dword [0x10332cfc]
test eax, eax
je 0x1008e222
mov al, byte [eax + 0x20]
test al, al
jne 0x1008e424
mov eax, dword [0x10332ec4]
test al, 1
jne 0x1008e241
mov ecx, dword [0x10332ea0]
or eax, 1
mov dword [0x10332ec4], eax
mov dword [0x10332ec0], ecx
jmp 0x1008e247
mov ecx, dword [0x10332ec0]
mov eax, dword [0x1020a080]
test byte [ecx + eax], 0x40
jne 0x1008e424
mov eax, dword [0x1033740c]
cmp byte [eax + 0x2c], 0
je 0x1008e26b
cmp byte [eax + 0x2d], 0
jne 0x1008e3a0
mov ecx, dword [0x10337410]
call fcn.10087e60
test al, al
jne 0x1008e3a0
mov eax, dword [0x1033740c]
cmp byte [eax + 0x18], 0
jne 0x1008e299
cmp byte [eax + 0x19], 0
je 0x1008e299
cmp dword [eax + 0x1c], 0
jle 0x1008e3a0
cmp byte [0x103259f4], 0
je 0x1008e3a0
mov ecx, ebx
call fcn.1008de50
mov ecx, dword [0x10333fc4]
mov edi, eax
movzx esi, byte [0x103259cc]
mov eax, dword [0x10333a04]
test cl, 1
jne 0x1008e2d9
or ecx, 1
mov edx, eax
mov dword [0x10333fc4], ecx
mov dword [0x10333fc0], edx
jmp 0x1008e2df
mov edx, dword [0x10333fc0]
test cl, 1
jne 0x1008e2f5
or ecx, 1
mov edx, eax
mov dword [0x10333fc4], ecx
mov dword [0x10333fc0], edx
mov eax, dword [0x1020a080]
movss xmm0, dword [edx + eax]
movss xmm1, dword [edx + eax + 4]
mov eax, dword [0x103259fc]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm1, xmm0
movss xmm0, dword [0x101bb96c]
comiss xmm0, xmm1
seta cl
test al, 1
je 0x1008e32c
test cl, cl
jne 0x1008e35b
test al, 2
je 0x1008e348
test cl, cl
jne 0x1008e348
mov ecx, dword [0x103373f4]
call fcn.100ac150
test al, al
jne 0x1008e35b
mov eax, dword [0x103259fc]
test al, 4
je 0x1008e35d
mov ecx, dword [0x103373f4]
call fcn.100ac150
test al, al
jne 0x1008e35d
mov esi, edi
mov ecx, dword [0x103373f4]
call fcn.100ac150
test al, al
jne 0x1008e3a9
cmp byte [0x103259f5], al
je 0x1008e3a9
mov eax, dword [0x10332c84]
lea ecx, [edi + 1]
mov ebx, dword [eax + 0x1c]
mov eax, dword [0x10337040]
sub eax, ebx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
jle 0x1008e39c
mov esi, 1
mov dword [0x10337040], ebx
jmp 0x1008e3a9
mov esi, edi
jmp 0x1008e3a9
mov ecx, ebx
call fcn.1008de50
mov esi, eax
mov ecx, dword [0x1033740c]
cmp byte [ecx + 0x2c], 0
je 0x1008e407
cmp byte [ecx + 0x2d], 0
je 0x1008e407
mov bl, 1
mov al, byte [0x1020a014]
cmp byte [ecx + 0x18], 0
jne 0x1008e424
test esi, esi
je 0x1008e424
test bl, bl
jne 0x1008e3e3
test al, al
je 0x1008e3e3
mov ecx, dword [0x10337410]
call fcn.10087e60
test al, al
je 0x1008e424
mov eax, dword [0x1020a090]
mov byte [eax], 0
mov eax, dword [0x10332cdc]
cmp dword [eax + 0x4d30], esi
jl 0x1008e431
mov eax, dword [0x1020a090]
pop edi
pop esi
pop ebx
mov byte [eax], 1
mov esp, ebp
pop ebp
ret
xor bl, bl
cmp byte [0x10325a01], bl
jne 0x1008e3bd
mov ecx, dword [0x103373f4]
call fcn.100aba50
mov ecx, dword [0x1033740c]
jmp 0x1008e3c2
mov eax, dword [0x1020a090]
cmp byte [eax], 0
jne 0x1008e431
mov byte [eax], 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret