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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x48
push ebx
push esi
push edi
mov edi, ecx
xor esi, esi
mov ecx, dword [edi + 0x107c]
test ecx, ecx
je 0x101d4bd8
cmp byte [ecx + 0x21], 0
je 0x101d4bd8
test byte [ecx + 0xb30], 1
je 0x101d4bd8
mov ebx, dword [ebp + 8]
test ebx, ebx
je 0x101d4be3
cmp dword [ebx], esi
je 0x101d4be3
mov eax, dword [ebx + 0xc0]
test eax, eax
push ecx
cmovne ebx, eax
push ebx
mov dword [ebp + 8], ebx
call fcn.10288150
mov esi, eax
test esi, esi
js 0x101d4bda
mov eax, dword [edi + 0x107c]
mov eax, dword [eax + 0xb30]
shr eax, 1
test al, 1
je 0x101d4bd8
mov ecx, dword [0x11d0c5b8]
mov eax, dword fs:[0x2c]
mov dword [ebp - 0x18], 0
mov eax, dword [eax + ecx*4]
mov dword [ebp - 0x20], eax
mov eax, dword [eax + 0x10]
cmp dword [eax + 0xf944], 0
jbe 0x101d4bd8
lea ecx, [ebx + 0x1c0]
mov dword [ebp - 0x10], 0
mov dword [ebp - 8], 0xd8
mov dword [ebp - 0xc], ecx
nop dword [eax]
mov eax, dword [edi + 0x107c]
mov ebx, dword [eax + 0x1c]
test byte [ebx + 0x20], 2
je 0x101d4a8c
mov eax, dword [ebx + 0x1c]
test eax, eax
je 0x101d4a96
cmp byte [eax + 4], 0
je 0x101d4a96
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ecx, dword [ebp - 0xc]
test byte [ebx + 0x20], 2
mov edx, dword [ecx]
mov eax, dword [ecx + 4]
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x14], eax
je 0x101d4ab4
mov eax, dword [ebx + 0x1c]
test eax, eax
je 0x101d4abe
cmp byte [eax + 4], 0
je 0x101d4abe
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp - 8]
mov eax, dword [ecx + 0xc0]
test eax, eax
je 0x101d4ad2
add eax, ebx
jmp 0x101d4ad5
lea eax, [ebx + ecx]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
cmp dword [ebp - 0x14], eax
jb 0x101d4aea
ja 0x101d4ae5
cmp edx, ecx
jbe 0x101d4aea
mov eax, dword [ebp - 0x14]
jmp 0x101d4aec
mov edx, ecx
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x30], eax
add ecx, 4
mov eax, dword [edi + 0x1054]
add eax, ecx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x44], eax
lea eax, [ebp - 0x34]
mov dword [ebp - 0x40], eax
mov eax, dword [edi]
mov dword [ebp - 0x48], 1
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x38], 0
cmp dword [eax + 0xd45c], 1
jne 0x101d4b85
lea eax, [edi + 0x1428]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov eax, dword [edi + 0x110c]
lea ecx, [ebp - 0x48]
push ecx
push dword [edi + 0x11cc]
call eax
push eax
push ecx
mov ecx, edi
call fcn.101c9e10
mov esi, eax
xorps xmm0, xmm0
lea eax, [ebp - 0x2c]
movlpd qword [ebp - 0x2c], xmm0
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov ecx, dword [ebp - 0x2c]
sub ecx, dword [edi + 0x1428]
mov eax, dword [ebp - 0x28]
sbb eax, dword [edi + 0x142c]
add dword [edi + 0x1420], ecx
adc dword [edi + 0x1424], eax
jmp 0x101d4ba2
mov eax, dword [edi + 0x110c]
lea ecx, [ebp - 0x48]
push ecx
push dword [edi + 0x11cc]
call eax
push eax
push ecx
mov ecx, edi
call fcn.101c9e10
mov esi, eax
test esi, esi
js 0x101d4bd8
mov eax, dword [ebp - 0x20]
add ebx, 8
mov edx, dword [ebp - 0x18]
mov ecx, dword [ebp - 0xc]
inc edx
add dword [ebp - 0x10], 0x20
add ecx, 0x100
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x18], edx
mov dword [ebp - 8], ebx
mov dword [ebp - 0xc], ecx
cmp edx, dword [eax + 0xf944]
jb 0x101d4a70
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 4