Function at 0x100984e0
Capabilities:
Allocate or change rwx memory
Check for time delay via gettickcount
Execute shellcode via indirect call

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0x34
cmp dword [0x10643bbc], 3
push ebx
push esi
push edi
mov edi, ecx
jne 0x1009851b
cmp dword [0x10643ba4], 0
je 0x1009851b
mov edx, 5
mov dword [esp + 0x38], 0x51bf05c1
lea ecx, [esp + 0x38]
mov byte [esp + 0x3c], 0
call fcn.10098a10
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x10643bc0], 0
mov dword [0x10643bbc], 0
call esi
mov dword [0x10643bb8], eax
call esi
mov dword [0x10643bb4], eax
xor ecx, ecx
mov eax, dword [edi + 0x48]
mov dword [0x10641af0], eax
mov eax, dword [edi + 0x4c]
mov dword [0x10641aec], eax
mov eax, dword [edi + 0x50]
mov dword [0x10641ae8], eax
mov eax, dword [edi + 0x54]
mov dword [0x10643b94], eax
mov eax, dword [edi + 0x58]
mov dword [0x10643b90], eax
mov eax, dword [edi + 0x5c]
mov dword [0x10643b8c], eax
mov eax, dword [edi + 0x60]
mov dword [0x10643b88], eax
mov eax, dword [edi + 0x64]
mov dword [0x10643b84], eax
mov eax, dword [edi + 0x68]
mov dword [0x10643b80], eax
mov eax, dword [edi + 0x6c]
mov dword [0x10643b7c], eax
mov eax, dword [edi + 0x70]
mov dword [0x10643b78], eax
mov eax, dword [edi + 0x74]
mov dword [0x10643b74], eax
mov eax, dword [edi + 0x78]
mov dword [0x10643b40], eax
mov eax, dword [edi + 0x7c]
mov dword [0x10643b3c], eax
mov eax, dword [edi + 0x80]
mov dword [0x10643b38], eax
mov eax, dword [edi + 0x84]
mov dword [0x10643b34], eax
mov eax, dword [edi + 0x88]
mov dword [0x10643b30], eax
mov eax, dword [0x7f05cac]
mov dword [0x10643bb0], 0
mov dword [0x10643bac], 0
mov dword [0x10643ba8], 0
mov word [eax + 0x7e], cx
mov eax, dword [0x7f05cac]
mov dword [0x10643ba4], 0
mov byte [eax + 0x328], cl
mov eax, dword [0x8499dcc]
movzx eax, byte [eax + 0xb]
and eax, 7
cmp eax, 6
ja case.default.0x10098627
jmp dword [eax*4 + 0x100988ac]
cmp dword [0x102c4d6c], 0xffff
mov esi, dword [sym.imp.KERNEL32.dll_VirtualProtect]
lea eax, [esp + 0x38]
push eax
push 0x40
sbb bl, bl
push 1
and bl, 0xd
push 0x55b6a2
add bl, 2
call esi
mov byte [0x55b6a2], bl
jmp 0x100986ab
cmp dword [0x102c4d74], 0xffff
jmp 0x10098638
cmp dword [0x102c4d78], 0xffff
jmp 0x10098638
cmp dword [0x102c4d7c], 0xffff
jmp 0x10098638
cmp dword [0x102c4d80], 0xffff
jmp 0x10098638
mov esi, dword [sym.imp.KERNEL32.dll_VirtualProtect]
lea eax, [esp + 0x38]
push eax
push 0x40
push 1
push 0x55b6a2
call esi
mov byte [0x55b6a2], 0xf
lea eax, [esp + 0x38]
push eax
push dword [esp + 0x3c]
push 1
push 0x55b6a2
call esi
mov eax, dword [edi + 0x90]
mov edx, 4
mov ecx, dword [edi + 0x94]
mov dword [0x10643a4c], ecx
mov dword [0x10643a48], eax
mov eax, dword [edi + 0x98]
mov ecx, dword [edi + 0x9c]
mov dword [0x10643a54], ecx
mov dword [0x10643a50], eax
mov ecx, dword [edi + 0xa4]
mov eax, dword [edi + 0xa0]
mov dword [0x10641afc], ecx
lea ecx, [esp + 0x38]
mov dword [0x10641af8], eax
mov dword [esp + 0x38], 0xf7f304c1
call fcn.10098a10
push dword [0x104f9de0]
call fcn.1003a7c0
call fcn.100626f0
cmp dword [0x104f9dc8], 0
jle 0x100988a3
mov edi, 0x936aac
call edi
movss xmm1, dword [0x11b3794]
mov edx, eax
mov ecx, dword [0x104f9dc8]
xor eax, eax
movss xmm0, dword [0x100d183c]
add ecx, 0x140
comiss xmm0, xmm1
xorps xmm3, xmm3
movd xmm2, ecx
cvtdq2ps xmm2, xmm2
setae al
movd xmm4, eax
cvtdq2ps xmm4, xmm4
mulss xmm2, xmm1
ucomiss xmm4, xmm3
lahf
test ah, 0x44
jnp 0x10098785
movaps xmm0, xmm1
jmp 0x1009878d
movss xmm0, dword [0x11b3798]
mulss xmm0, dword [0x100d1e74]
ucomiss xmm4, xmm3
subss xmm2, xmm0
lahf
test ah, 0x44
jp 0x100987aa
movss xmm1, dword [0x11b3798]
mulss xmm1, dword [0x100d1e08]
sub esp, 0x10
mov esi, 0x927d4b
movsd xmm0, qword [0x100d1b38]
addss xmm1, xmm2
movsd qword [esp + 8], xmm0
cvtps2pd xmm0, xmm1
movsd qword [esp], xmm0
push str._f__f
push str.SetPos
push dword [edx + 0x13c]
call esi
add esp, 0x1c
cmp dword [0x118ee38], 0x780
jne 0x100988a3
call edi
mov ecx, dword [0x104f9dc8]
xorps xmm3, xmm3
movss xmm1, dword [0x11b3794]
add ecx, 0x140
movss xmm0, dword [0x100d183c]
mov edx, eax
movd xmm2, ecx
xor ecx, ecx
comiss xmm0, xmm1
cvtdq2ps xmm2, xmm2
setae cl
movd xmm4, ecx
cvtdq2ps xmm4, xmm4
mulss xmm2, xmm1
ucomiss xmm4, xmm3
lahf
test ah, 0x44
jnp 0x10098844
movaps xmm0, xmm1
jmp 0x1009884c
movss xmm0, dword [0x11b3798]
mulss xmm0, dword [0x100d1e74]
ucomiss xmm4, xmm3
subss xmm2, xmm0
lahf
test ah, 0x44
jp 0x10098869
movss xmm1, dword [0x11b3798]
mulss xmm1, dword [0x100d1e2c]
sub esp, 0x10
movsd xmm0, qword [0x100d1b78]
addss xmm1, xmm2
movsd qword [esp + 8], xmm0
cvtps2pd xmm0, xmm1
movsd qword [esp], xmm0
push str._f__f
push str.SetPos
push dword [edx + 0x13c]
call esi
add esp, 0x1c
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret