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

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x28
cmp byte [0x1012d738], 0
mov edx, ecx
push esi
push edi
mov dword [ebp - 0xc], edx
je case.default.0x100803ec
mov eax, dword [0x1012d73c]
mov esi, dword [0x1010f1bc]
mov dword [ebp - 0x10], esi
cmp eax, 3
jbe 0x1007ff90
movzx ecx, word [esi + 0x1e]
mov al, cl
shr al, 3
test al, 1
je 0x1007ff61
xor eax, eax
jmp 0x1007ff90
mov al, cl
shr al, 4
test al, 1
je 0x1007ff71
mov eax, 1
jmp 0x1007ff90
mov eax, ecx
shr eax, 0xa
test al, 1
je 0x1007ff81
mov eax, 2
jmp 0x1007ff90
shr ecx, 9
mov eax, 3
test cl, 1
jne 0x1007ff90
mov eax, dword [edx]
mov dword [edx], eax
cmp byte [0x1012eb82], 0
jne case.default.0x100803ec
movss xmm2, dword [0x1012d74c]
xorps xmm1, xmm1
ucomiss xmm2, xmm1
lahf
test ah, 0x44
jnp 0x1008004e
movss xmm0, dword [0x100f8ef4]
divss xmm0, dword [0x1010d7d0]
divss xmm0, xmm2
cvtps2pd xmm2, xmm0
movsd xmm0, qword [0x1010da70]
ucomisd xmm0, xmm2
movsd qword [ebp - 0x20], xmm2
lahf
test ah, 0x44
jnp 0x1008004e
mov edi, dword [sym.imp.KERNEL32.dll_VirtualProtect]
push 0x10128c20
push 0x40
push 8
push dword [0x1010f354]
call edi
movsd xmm0, qword [ebp - 0x20]
mulsd xmm0, qword [0x100f90d0]
mov eax, dword [0x1010f354]
push 0x10128c20
movsd qword [eax], xmm0
push dword [0x10128c20]
mov esi, dword [0x1010f354]
push 8
push esi
call edi
push 8
push esi
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_FlushInstructionCache]
movsd xmm0, qword [ebp - 0x20]
xorps xmm1, xmm1
mov esi, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
movsd qword [0x1010da70], xmm0
cmp byte [0x1012eb81], 0
mov edi, dword [0x1010f068]
je 0x1008009a
cmp dword [edi + 0xe0], 0xffffffff
je 0x10080090
mov eax, dword [0x1010d988]
inc eax
mov dword [0x1010d988], eax
cmp eax, 0x32
jb 0x10080085
mov dword [0x1010d988], 0x32
mov eax, 0x32
cmp eax, 1
ja case.default.0x100803ec
jmp 0x1008009a
mov dword [0x1010d988], 0
cmp byte [0x1012d740], 0
je 0x100800fb
movss xmm2, dword [0x1012eba4]
movss xmm0, dword [0x100f8e58]
comiss xmm0, xmm2
jbe 0x100800c8
comiss xmm2, dword [0x100f9230]
jbe 0x100800c8
mov eax, dword [0x1017df14]
jmp 0x100800e7
comiss xmm1, xmm2
jbe 0x100800d2
or eax, 0xffffffff
jmp 0x100800e2
mov eax, dword [0x1017df14]
mov ecx, 1
comiss xmm2, xmm1
cmova eax, ecx
mov dword [0x1017df14], eax
push dword [edx]
movd xmm2, eax
cvtdq2ps xmm2, xmm2
call fcn.1007f960
mov edi, dword [0x1010f068]
mov eax, dword [ebp - 0xc]
xorps xmm0, xmm0
movss xmm2, dword [0x100fa820]
movss xmm3, dword [0x100f9054]
movss xmm1, dword [0x1012d748]
mov ecx, dword [eax]
mov eax, ecx
sub eax, 1
je 0x10080139
sub eax, 1
je 0x10080134
sub eax, 1
jne 0x10080140
movaps xmm0, xmm1
xorps xmm0, xmm2
jmp 0x10080140
movaps xmm0, xmm1
jmp 0x10080140
movaps xmm0, xmm1
mulss xmm0, xmm3
mulss xmm1, xmm3
movss xmm3, dword [0x100f9090]
divss xmm3, xmm1
mulss xmm3, xmm0
movss xmm0, dword [0x100f9138]
comiss xmm0, dword [0x1012df7c]
movss dword [ebp - 0x10], xmm3
jbe 0x100801c0
cmp ecx, 3
ja case.default.0x10080173
jmp dword [ecx*4 + 0x1008044c]
mov eax, dword [edi + 0x1f4]
mov dword [esi + 0x10], eax
jmp case.default.0x10080173
movss xmm0, dword [edi + 0x1f4]
xorps xmm0, xmm2
movss dword [esi + 0x10], xmm0
jmp case.default.0x10080173
mov eax, dword [edi + 0x1f4]
mov dword [esi + 0x14], eax
jmp case.default.0x10080173
movss xmm0, dword [edi + 0x1f4]
xorps xmm0, xmm2
movss dword [esi + 0x14], xmm0
jmp case.default.0x10080173
movss xmm1, dword [edi + 0x5c]
movss xmm0, dword [edi + 0x60]
call fcn.10035f20
movss xmm1, dword [esi + 8]
mulss xmm1, dword [0x100f8e54]
movss dword [ebp - 0x14], xmm0
subss xmm0, xmm1
movss dword [ebp - 4], xmm1
subss xmm0, dword [ebp - 0x10]
call fcn.10035ee0
movaps xmm1, xmm0
movss dword [ebp - 8], xmm0
mulss xmm1, xmm0
movss xmm0, dword [0x100f8ef4]
subss xmm0, xmm1
call fcn.10036210
movaps xmm1, xmm0
movss xmm0, dword [ebp - 8]
call fcn.10035f20
mov dword [esi + 0x10], 0
movaps xmm1, xmm0
mov eax, dword [0x1012d744]
movss dword [ebp - 0x1c], xmm1
test eax, eax
je 0x1008023f
movd xmm0, eax
cvtdq2ps xmm0, xmm0
jmp 0x10080247
movss xmm0, dword [edi + 0x1f4]
comiss xmm1, dword [0x100f8e18]
movss dword [ebp - 8], xmm0
ja 0x10080261
xorps xmm0, xmmword [0x100fa820]
movss dword [ebp - 8], xmm0
movss xmm0, dword [ebp - 4]
call fcn.10035ee0
movss dword [ebp - 0x24], xmm0
movss xmm0, dword [ebp - 4]
call fcn.10035f00
movss dword [ebp - 0x18], xmm0
movss xmm0, dword [ebp - 4]
addss xmm0, xmm0
subss xmm0, dword [ebp - 0x14]
addss xmm0, dword [ebp - 0x10]
movss dword [ebp - 4], xmm0
call fcn.10035ee0
movss dword [ebp - 0x14], xmm0
movss xmm0, dword [ebp - 4]
call fcn.10035f00
movss xmm2, dword [ebp - 0x14]
movaps xmm6, xmm0
movss xmm3, dword [ebp - 0x18]
movaps xmm1, xmm2
mulss xmm2, dword [ebp - 0x24]
mulss xmm6, dword [ebp - 0x24]
mulss xmm0, xmm3
mulss xmm1, xmm3
addss xmm0, xmm2
subss xmm6, xmm1
movss xmm1, dword [0x100f8ef4]
mulss xmm0, dword [ebp - 8]
mulss xmm6, dword [ebp - 8]
movss dword [esi + 0x14], xmm0
movss xmm0, dword [0x100f9218]
movss dword [esi + 0x10], xmm6
movss xmm2, dword [0x1012df7c]
addss xmm2, xmm1
movss dword [ebp - 0x18], xmm6
divss xmm0, xmm2
call fcn.10035f20
movaps xmm1, xmm0
movss xmm0, dword [ebp - 0x1c]
call fcn.100361a0
comiss xmm1, xmm0
xorps xmm0, xmm0
jb 0x100803c2
mov eax, dword [ebp - 0xc]
xorps xmm1, xmm1
xorps xmm2, xmm2
mov eax, dword [eax]
cmp eax, 3
ja case.default.0x1008033c
jmp dword [eax*4 + 0x1008045c]
movss xmm1, dword [0x1012dfac]
movss xmm2, dword [0x1012dfb0]
jmp case.default.0x1008033c
movss xmm1, dword [0x1012dfc4]
movss xmm2, dword [0x1012dfc8]
mulss xmm1, xmm1
mulss xmm2, xmm2
addss xmm1, xmm2
addss xmm0, xmm1
call fcn.10036210
movss xmm4, dword [edi + 0x5c]
movaps xmm3, xmm0
movss xmm0, dword [edi + 0x60]
mulss xmm4, xmm3
mulss xmm0, xmm3
mulss xmm4, xmm3
mulss xmm0, xmm3
mulss xmm4, dword [edi + 0x5c]
mulss xmm0, dword [edi + 0x60]
addss xmm4, xmm0
xorps xmm0, xmm0
ucomiss xmm4, xmm0
lahf
test ah, 0x44
jnp 0x100803c2
movss xmm0, dword [0x100f9224]
divss xmm0, xmm4
call fcn.10036210
movss xmm1, dword [ebp - 0x18]
movss xmm2, dword [0x100fa820]
addss xmm1, xmm0
movss dword [esi + 0x10], xmm1
mov eax, dword [ebp - 0xc]
movss xmm0, dword [esi + 0x10]
movss xmm1, dword [esi + 0x14]
mov eax, dword [eax]
cmp eax, 3
ja case.default.0x100803ec
jmp dword [eax*4 + 0x1008046c]
movss dword [esi + 0x10], xmm0
movss dword [esi + 0x14], xmm1
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
xorps xmm0, xmm2
xorps xmm1, xmm2
movss dword [esi + 0x10], xmm0
movss dword [esi + 0x14], xmm1
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
xorps xmm1, xmm2
movss dword [esi + 0x14], xmm0
movss dword [esi + 0x10], xmm1
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
xorps xmm0, xmm2
movss dword [esi + 0x10], xmm1
movss dword [esi + 0x14], xmm0
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret