Function at 0x100aa300
Capabilities:
Check for time delay via gettickcount
Get number of processors

Disassembly:
push 0xffffffffffffffff
push 0x10185ee0
mov eax, dword fs:[0]
push eax
sub esp, 0x14
push ebx
push ebp
push esi
push edi
mov eax, dword [0x101c6444]
xor eax, esp
push eax
lea eax, [esp + 0x28]
mov dword fs:[0], eax
mov esi, ecx
call fcn.10023df0
mov ebp, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov dword [esp + 0x24], eax
add eax, 4
push eax
mov dword [esp + 0x24], 0x101975f4
mov dword [esp + 0x20], eax
call ebp
mov edi, dword [esp + 0x38]
xor ebx, ebx
or eax, 0xffffffff
cmp edi, eax
mov dword [esp + 0x30], ebx
jne 0x100aa399
cmp byte [esi + 0x5800], bl
je 0x100aa36f
mov dword [esi + 0x5808], 2
jmp 0x100aa379
mov dword [esi + 0x5808], 3
cmp dword [esi + 0x583c], eax
je 0x100aa40a
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [esi + 0x5840], eax
mov dword [esi + 0x5854], ebx
jmp 0x100aa40a
cmp byte [esi + 0x5800], bl
je 0x100aa3a9
mov dword [esi + 0x5808], ebx
jmp 0x100aa3b3
mov dword [esi + 0x5808], 1
cmp dword [esi + 0x583c], eax
jne 0x100aa40a
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [esi + 0x5840]
cmp eax, ecx
jb 0x100aa3cf
sub eax, ecx
jmp 0x100aa3d4
sub eax, ecx
sub eax, 1
mov ecx, eax
mov eax, 0x10624dd3
mul ecx
mov eax, dword [esi + 0x5690]
mov ecx, dword [esi + 0x568c]
shr edx, 6
add dword [esi + 0x5680], edx
cmp eax, ecx
mov dword [esi + 0x5840], ebx
ja 0x100aa3fe
mov eax, ecx
mov dword [esi + 0x568c], eax
mov dword [esi + 0x5690], ebx
mov bl, 0x64
mov dword [esi + 0x583c], edi
cmp byte [0x101c5039], bl
jbe 0x100aa420
mov byte [0x101c5039], bl
mov eax, dword [esi + 0x5808]
cmp eax, 3
ja case.default.0x100aa42f
jmp dword [eax*4 + 0x100aa5d8]
push 0
push 0
push 0
mov ecx, esi
call fcn.100aa0a0
mov eax, 1
cmp dword [esi + 0x57e8], eax
je case.default.0x100aa42f
mov dword [esi + 0x57e8], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [esi + 0x57e0], eax
jmp case.default.0x100aa42f
mov eax, dword [esi + 0x5534]
test eax, eax
jbe 0x100aa47e
push 0
push 1
jmp 0x100aa5ac
cmp byte [0x101c503b], 9
jne 0x100aa59d
call fcn.10063c50
mov ecx, eax
call fcn.1005e520
cmp eax, 0x25800
jbe 0x100aa4a7
xor eax, eax
push eax
push eax
jmp 0x100aa5a9
movzx ecx, byte [0x101c5039]
imul ecx, eax
mov eax, 0x51eb851f
mul ecx
movzx eax, byte [0x101c503a]
shr edx, 5
shl eax, 0xa
cmp edx, eax
jbe 0x100aa4cb
mov eax, edx
push 0
push 0
jmp 0x100aa5a9
mov eax, dword [esi + 0x5534]
test eax, eax
ja 0x100aa475
cmp byte [0x101c504e], 0
jbe 0x100aa529
lea ecx, [esi + 0x4b60]
call fcn.10054130
test eax, eax
jne 0x100aa529
lea ecx, [esi + 0x4c68]
call fcn.10054130
test eax, eax
jle 0x100aa529
movzx ebx, byte [0x101c504e]
call fcn.10023df0
lea edi, [eax + 4]
push edi
call ebp
push edi
mov dword [esi + 0x5538], ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp case.default.0x100aa42f
cmp byte [0x101c503b], 9
jne 0x100aa59d
call fcn.10063c50
mov ecx, eax
call fcn.1005e520
cmp eax, 0x25800
jbe 0x100aa54f
xor edx, edx
push edx
push edx
shr edx, 0xa
push edx
jmp 0x100aa5ad
mov cl, byte [0x101c503d]
test cl, cl
jne 0x100aa55d
mov cl, 0x5a
jmp 0x100aa563
cmp cl, bl
jbe 0x100aa569
mov cl, bl
mov byte [0x101c503d], cl
movzx edx, cl
movzx ecx, byte [0x101c5039]
imul edx, ecx
imul edx, eax
mov eax, 0xd1b71759
mul edx
movzx eax, byte [0x101c503a]
shr edx, 0xd
shl eax, 0xa
cmp edx, eax
ja 0x100aa593
mov edx, eax
push 0
push 0
shr edx, 0xa
push edx
jmp 0x100aa5ad
push 0
push 0
push edi
mov ecx, esi
call fcn.100a8660
shr eax, 0xa
push eax
mov ecx, esi
call fcn.100aa0a0
mov edx, dword [esp + 0x1c]
push edx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [esp + 0x28]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 4