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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xd4
mov eax, dword [0x11ad127c]
xor eax, esp
mov dword [esp + 0xd0], eax
push ebx
push esi
mov esi, dword [ebp + 0xc]
mov ebx, ecx
mov eax, dword [ebp + 8]
push edi
mov dword [esp + 0x20], eax
push dword [esi + 0x14]
mov eax, dword [ebp + 0x10]
push dword [esi + 0x10]
mov dword [esp + 0x18], esi
push dword [esi + 0xc]
mov dword [esp + 0x20], eax
push dword [esi + 8]
push dword [esi + 4]
push dword [esi]
push 0x1046e460
push ebx
call fcn.10010190
add esp, 0x20
push dword [esi]
call fcn.10211920
test byte [ebx + 0xab], 0x10
je 0x10212bda
mov ecx, ebx
call fcn.10222c70
mov eax, dword [ebx]
mov eax, dword [eax + 0xf7c]
cmp byte [eax + 0xb38], 0
jge 0x10212bf8
mov eax, dword [esi]
mov dword [ebx + 0x5728], eax
mov eax, dword [esi + 4]
jmp 0x10212c04
mov dword [ebx + 0x5728], 0
xor eax, eax
mov dword [ebx + 0x572c], eax
mov cl, byte [ebx + 0xa9]
test cl, cl
jns 0x10212c60
mov al, byte [ebx + 0xa4]
test al, 8
je 0x10212c60
test byte [esi + 0x10], 1
je 0x10212c28
and al, 0xf7
jmp 0x10212c5a
and cl, 0xfd
mov dword [ebx + 0xc4], 0
test byte [ebx + 0xaa], 1
mov dword [ebx + 0xc8], 0
mov dword [0x11d0d8ec], 0
mov byte [ebx + 0xa9], cl
je 0x10212c60
or al, 2
mov byte [ebx + 0xa4], al
mov eax, dword [esi]
xor ecx, ecx
mov edx, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov dword [esp + 0x18], eax
test eax, eax
je 0x10212cce
lea esi, [ebx + 0x11c]
push esi
call edx
mov edi, dword [ebx + 0x10c]
test edi, edi
je 0x10212cba
mov ecx, dword [ebx + 0x114]
xor eax, eax
test ecx, ecx
je 0x10212cba
mov edx, dword [esp + 0x18]
mov edi, dword [edi + eax*4]
test edi, edi
je 0x10212ca0
cmp dword [edi], edx
je 0x10212cad
inc eax
cmp eax, ecx
jae 0x10212cba
mov edi, dword [ebx + 0x10c]
jmp 0x10212c95
mov eax, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push esi
call eax
mov ecx, dword [edi + 4]
jmp 0x10212cc4
mov eax, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push esi
call eax
xor ecx, ecx
mov edx, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov esi, dword [esp + 0x10]
mov dword [ebx + 0x2bc], ecx
xor ecx, ecx
mov eax, dword [esi]
mov dword [esp + 0x18], eax
test eax, eax
je 0x10212d34
lea esi, [ebx + 0x11c]
push esi
call edx
mov edi, dword [ebx + 0x10c]
test edi, edi
je 0x10212d27
mov ecx, dword [ebx + 0x114]
xor eax, eax
test ecx, ecx
je 0x10212d27
mov edx, dword [esp + 0x18]
mov edi, dword [edi + eax*4]
test edi, edi
je 0x10212d0e
cmp dword [edi], edx
je 0x10212d1b
inc eax
cmp eax, ecx
jae 0x10212d27
mov edi, dword [ebx + 0x10c]
jmp 0x10212d03
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [edi + 8]
jmp 0x10212d30
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor ecx, ecx
mov esi, dword [esp + 0x10]
mov al, byte [ebx + 0xae]
mov dword [ebx + 0x2c0], ecx
not al
movups xmm0, xmmword [esi]
and al, 0x7f
push esi
movups xmmword [ebx + 0x2a4], xmm0
movq xmm0, qword [esi + 0x10]
movq qword [ebx + 0x2b4], xmm0
mov ecx, dword [esi + 0x10]
shr ecx, 2
shl cl, 7
not cl
xor cl, al
mov byte [ebx + 0xae], cl
mov ecx, ebx
call fcn.1022d280
mov al, byte [ebx + 0xa8]
mov byte [esp + 0xf], al
test al, 0x10
je 0x10212f4a
call fcn.1004f0e0
test al, al
je 0x10212f4a
test byte [esp + 0xf], 0x20
je 0x10212f4a
cmp dword [ebx + 0x59b0], 0
jne 0x10212f4a
cmp dword [0x11d0c744], 0
mov edi, dword [ebx]
je 0x10212de1
cmp dword [edi + 4], 0x58544e43
jne 0x10212de1
mov eax, dword fs:[0x2c]
mov ecx, dword [0x11d0c5b8]
mov ecx, dword [eax + ecx*4]
mov eax, dword [edi]
mov dword [ecx + 0x10], eax
mov dword [edi + 8], 0
jmp 0x10212de3
xor edi, edi
push 0x9c
lea eax, [esp + 0x3c]
push 0
push eax
call fcn.10425c00
mov edx, dword [ebx + 0x541c]
add esp, 0xc
xor eax, eax
test edx, edx
je 0x10212e3a
mov esi, dword [ebx + 0x53a4]
lea ecx, [ebx + 0x542c]
nop
cmp dword [ecx], esi
je 0x10212e1e
inc eax
add ecx, 0x60
cmp eax, edx
jb 0x10212e10
jmp 0x10212e3a
lea ecx, [eax + eax*2]
shl ecx, 5
mov eax, dword [ecx + ebx + 0x5428]
mov dword [esp + 0x68], eax
mov eax, dword [ecx + ebx + 0x5424]
mov dword [esp + 0x6c], eax
xor ecx, ecx
mov eax, 4
mov dword [esp + 0x28], ecx
mov word [esp + 0x72], ax
mov dword [esp + 0x34], ecx
and ecx, 0xfffffffe
mov eax, dword [edi + 0x11cc]
mov dword [esp + 0x24], eax
lea eax, [esp + 0x38]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], 0x9c
mov dword [esp + 0x48], 0x10000a4
mov dword [esp + 0x38], 0x4e564441
mov dword [esp + 0x3c], 0x10002
mov dword [esp + 0x44], 0x4e564458
mov dword [esp + 0x40], 0x9c
mov edx, dword [edi + 0x10b4]
test edx, edx
je 0x10212f26
mov eax, dword [edi]
test eax, eax
je 0x10212f26
mov ecx, dword [eax + 0xbe28]
test ecx, ecx
je 0x10212f26
mov ecx, dword [ecx + 0x14]
test ecx, ecx
je 0x10212f26
cmp dword [eax + 0xd45c], 1
jne 0x10212f1e
mov esi, dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
lea eax, [edi + 0x1428]
push eax
call esi
lea eax, [esp + 0x24]
push eax
mov eax, dword [edi]
mov eax, dword [eax + 0xbe28]
push dword [eax + 0x14]
mov eax, dword [edi + 0x10b4]
call eax
lea eax, [esp + 0x18]
xorps xmm0, xmm0
push eax
movlpd qword [esp + 0x1c], xmm0
call esi
mov ecx, dword [esp + 0x18]
sub ecx, dword [edi + 0x1428]
mov eax, dword [esp + 0x1c]
sbb eax, dword [edi + 0x142c]
add dword [edi + 0x1420], ecx
adc dword [edi + 0x1424], eax
jmp 0x10212f26
lea eax, [esp + 0x24]
push eax
push ecx
call edx
push 0x9c
call fcn.10450898
mov ecx, 0x27
mov dword [ebx + 0x59b0], eax
lea esi, [esp + 0x3c]
mov edi, eax
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x14]
add esp, 4
mov ecx, ebx
call fcn.102119f0
mov dword [ebx + 0x378c], 0
mov dword [ebx + 0x53f8], 0
cmp dword [esi + 8], 0
jne 0x1021306d
mov al, byte [ebx + 0xa8]
test al, 0x10
je 0x1021306d
test byte [esi + 0x10], 4
je 0x1021306d
test al, 0x20
je 0x1021306d
cmp dword [ebx + 0x2bc], 0
jne 0x1021306d
and al, 0xdf
mov ecx, ebx
mov byte [ebx + 0xa8], al
call fcn.10206310
push 0
mov ecx, ebx
call fcn.10215000
push 0
mov ecx, ebx
call fcn.10214490
lea eax, [ebx + 0x1a4]
push eax
push dword [ebx]
call fcn.101a00f0
lea eax, [ebx + 0xea0]
push eax
push dword [ebx]
call fcn.10198ed0
push 0
mov ecx, ebx
call fcn.1021ab40
mov eax, dword [ebx + 0x574c]
test eax, eax
je 0x10212ffc
push dword [eax + 4]
mov ecx, ebx
push dword [eax]
add eax, 8
push eax
call fcn.10219570
mov eax, dword [ebx + 0x133c]
test eax, eax
je 0x1021306d
mov edx, dword [eax + 0xc]
cmp edx, 0xffffffff
je 0x1021306d
mov cl, byte [ebx + 0xac]
test cl, 0x40
jne 0x10213054
mov eax, dword [eax + 0x10]
xor cl, cl
sub eax, 1
je 0x10213032
sub eax, 1
jne 0x1021303c
push edx
mov ecx, ebx
call fcn.10219730
jmp 0x1021303a
push edx
mov ecx, ebx
call fcn.10219aa0
mov cl, 1
mov al, byte [ebx + 0xac]
shl cl, 6
and al, 0xbf
or cl, al
mov byte [ebx + 0xac], cl
test cl, 0x40
je 0x1021306d
mov eax, dword [ebx + 0x133c]
mov ecx, ebx
push 4
push dword [eax + 0xc]
lea eax, [ebx + 0x24a0]
push eax
call fcn.10219570
cmp dword [ebx + 0xec], 0x20
jne 0x102130b2
test byte [ebx + 0xab], 8
jne 0x102130b2
cmp byte [ebx + 0xae], 0
jge 0x102130b2
mov ecx, ebx
call fcn.10232b30
test al, al
je 0x102130b2
mov ecx, ebx
call fcn.10232ee0
mov cl, byte [ebx + 0xa4]
test al, al
je 0x102130a9
or cl, 2
jmp 0x102130ac
and cl, 0xfd
mov byte [ebx + 0xa4], cl
mov al, byte [ebx + 0xa8]
and al, 0x30
cmp al, 0x30
jne 0x10213151
call fcn.1004f0e0
test al, al
jne 0x10213151
cmp byte [ebx + 0xae], al
jl 0x10213253
cmp dword [esi + 0x14], 0
je 0x1021325d
test byte [ebx + 0xb1], 4
mov edi, dword [0x11d0c5b8]
je 0x10213128
test byte [ebx + 0xb4], 2
jne 0x1021311f
mov eax, dword fs:[0x2c]
mov ecx, ebx
push 1
mov eax, dword [eax + edi*4]
mov eax, dword [eax + 0x10]
mov dword [eax + 0xd2e4], 0x47814940
call fcn.10206910
test byte [ebx + 0xb1], 4
jne 0x10213151
mov eax, dword fs:[0x2c]
mov ecx, ebx
push 0
mov eax, dword [eax + edi*4]
mov eax, dword [eax + 0x10]
mov dword [eax + 0xd2e4], 0x8416747
or byte [ebx + 0xb4], 2
call fcn.10206910
mov edi, dword [0x11d0c5b8]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
call fcn.10212110
mov cl, byte [ebx + 0xa4]
test cl, 1
jne 0x10213203
mov eax, dword [ebx + 0xc8]
shr eax, 1
test al, 1
je 0x10213188
test byte [ebx + 0xb0], 0x40
jne 0x10213203
cmp dword [ebx + 0x53e8], 2
jne 0x10213203
test cl, 8
je 0x10213203
test byte [esi + 0x10], 4
je 0x10213203
cmp dword [ebx + 0x2bc], 0
je 0x10213203
mov ecx, dword [esp + 0x20]
call fcn.101e9800
mov ecx, ebx
mov esi, eax
call fcn.10229390
test al, al
mov eax, dword [esi]
mov esi, dword [esp + 0x10]
sete cl
cmp dword [eax + 0xf944], 2
seta al
test cl, al
je 0x10213203
mov edx, dword [esi + 4]
mov ecx, dword [ebx + 0x2bc]
push 1
call fcn.1020e080
mov eax, dword [esi + 4]
push 0
push eax
push ecx
push dword [ebx + 0x2bc]
mov ecx, ebx
push eax
push dword [esi]
call fcn.1022d140
mov ecx, dword [esp + 0x14]
mov eax, dword [ebx + 0x2bc]
mov dword [ecx], eax
test byte [ebx + 0xab], 2
je 0x10213231
test byte [esi + 0x10], 4
jne 0x10213231
mov eax, dword fs:[0x2c]
mov eax, dword [eax + edi*4]
mov eax, dword [eax + 0x10]
cmp dword [eax + 0xd590], 1
jne 0x10213231
mov ecx, ebx
call fcn.10205c90
push dword [esp + 0x14]
mov ecx, ebx
call fcn.10211aa0
mov ecx, dword [esp + 0xdc]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.1045066c
mov esp, ebp
pop ebp
ret 0xc
cmp dword [esi + 0x14], 0
jne 0x10213151
mov edi, dword [0x11d0c5b8]
mov ecx, ebx
mov eax, dword fs:[0x2c]
push 1
mov eax, dword [eax + edi*4]
mov eax, dword [eax + 0x10]
mov dword [eax + 0xd2e4], 0x60925292
call fcn.10206910
jmp 0x10213157