Function at 0x10243490
Capabilities:
Check for time delay via queryperformancecounter

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x174
push ebx
push esi
push edi
mov edi, ecx
cmp byte [edi + 4], 0
je 0x102436ff
lea esi, [edi + 0xe8]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [edi + 0x20c]
xorps xmm0, xmm0
mov dword [ebp - 0x24], eax
mov ecx, edi
lea eax, [ebp - 0x10]
mov byte [edi + 0x10c], 1
push eax
movlpd qword [ebp - 0x10], xmm0
call fcn.102433d0
mov edx, dword [0x11d0c5b8]
mov ecx, dword fs:[0x2c]
mov dword [ebp - 4], eax
mov eax, dword [edi + eax*4 + 0x44]
mov dword [ebp - 0x20], eax
mov eax, dword [ecx + edx*4]
mov dword [ebp - 0x28], eax
mov eax, dword [eax + 0x10]
cmp dword [eax + 0xd3bc], 0
jne 0x1024352c
cmp dword [eax + 0xd3c0], 0
jne 0x1024352c
mov eax, dword [edi + 0xdc]
lea ebx, [edi + 0xdc]
mov eax, dword [eax + 0xf7c]
cmp byte [eax + 0xcf4], 0
je 0x102435d4
mov eax, dword [edi + 0xdc]
lea ebx, [edi + 0xdc]
mov esi, dword [eax + 0xf7c]
mov eax, dword [esi + 0xc74]
cmp eax, dword [esi + 0xc78]
ja 0x102435b5
add eax, eax
mov ecx, 0x1000
cmp eax, ecx
mov edx, 4
cmovb eax, ecx
xor ecx, ecx
mov dword [ebp - 0x18], eax
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.10450898
mov edx, dword [esi + 0xc70]
add esp, 4
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x1c], edx
test eax, eax
je 0x102435ce
mov ecx, dword [esi + 0xc74]
shl ecx, 2
push ecx
push edx
push eax
call fcn.10425d60
mov eax, dword [ebp - 0x14]
add esp, 0xc
mov dword [esi + 0xc70], eax
mov eax, dword [ebp - 0x18]
mov dword [esi + 0xc74], eax
push dword [ebp - 0x1c]
call fcn.10450877
add esp, 4
mov ecx, dword [esi + 0xc78]
mov eax, dword [esi + 0xc70]
mov edx, dword [ebp - 0x20]
mov dword [eax + ecx*4 - 4], edx
inc dword [esi + 0xc78]
lea esi, [edi + 0xe8]
mov ecx, dword [ebp - 4]
cmp dword [edi + 0x30], ecx
je 0x102435e5
mov eax, dword [edi + 0x30]
mov dword [edi + 0x34], eax
mov dword [edi + 0x30], ecx
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push 0x12c
lea eax, [ebp - 0x170]
push 0
push eax
call fcn.10425c00
mov eax, dword [ebx]
add esp, 0xc
mov esi, dword [eax]
mov ecx, dword [esi + 0xf93c]
mov eax, dword [esi + 0xf880]
and ecx, 0xf
mov edx, dword [esi + 0xf884]
shl ecx, 3
call fcn.10451430
mov ecx, dword [esi + 0xf944]
mov edx, 1
shl edx, cl
dec edx
and eax, edx
mov edx, dword [ebp - 0x24]
movzx eax, al
bsf ecx, eax
lea eax, [ecx + ecx*8]
mov eax, dword [edx + eax*8 + 0x10]
mov dword [ebp - 0x168], eax
mov eax, dword [ebp - 4]
mov eax, dword [edi + eax*4 + 0xc0]
mov eax, dword [eax + 8]
test eax, eax
je 0x10243660
mov eax, dword [eax + ecx*4 + 8]
jmp 0x10243662
xor eax, eax
mov esi, dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov dword [ebp - 0x170], eax
lea eax, [ebp - 0x38]
push eax
call esi
mov ecx, dword [ebx]
lea eax, [ebp - 0x170]
push eax
call fcn.101d0f20
lea eax, [ebp - 0x40]
push eax
call esi
mov eax, dword [ebp - 0x10]
mov esi, dword [ebp - 0xc]
cmp eax, dword [edi + 0x90]
jne 0x102436f0
cmp esi, dword [edi + 0x94]
jne 0x102436f0
mov eax, dword [ebx]
mov edx, 1
mov ecx, dword [edi + 0x124]
shl edx, cl
test dword [eax + 0x1028], edx
je 0x102436f0
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0x10]
mov ecx, dword [eax + 0xd3a4]
test cl, 1
jne 0x102436e9
test cl, 2
jne 0x102436f0
cmp dword [eax + 0xd39c], 0
je 0x102436f0
cmp dword [eax + 0xd3a8], 0
jne 0x102436f0
cmp byte [eax + 0xd3e0], 0
je 0x102436f0
mov byte [edi + 0x98], 1
mov ebx, dword [ebp - 0x10]
mov dword [edi + 0x90], ebx
mov dword [edi + 0x94], esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret