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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xe0
mov edi, ecx
mov eax, dword [0x644040]
xor eax, ebp
mov dword [esp + 0xd8], eax
mov eax, dword [ecx + 0x94]
mov ecx, dword [ecx + 0x98]
cmp eax, ecx
je 0x4f6972
mov esi, dword [ebp + 8]
mov edx, ecx
sub edx, eax
sar edx, 4
imul eax, edx, 0xb6db6db7
cmp eax, dword [ebp + 0xc]
jne 0x4f6ebe
cmp dword [edi + 0x6c], 0
je 0x4f6953
mov eax, dword [edi + 0x58]
or eax, dword [edi + 0x5c]
je 0x4f6953
mov eax, dword [edi + 0x8c]
test eax, eax
je 0x4f6ea9
mov ecx, dword [eax + 0x98]
sub ecx, dword [eax + 0x94]
cmp ecx, 0x70
jne 0x4f6953
movzx eax, byte [edi + 0x68]
mov dword [esp + 0x10], 3
mov byte [esp + 0x18], al
test al, al
jne 0x4f67b5
mov byte [edi + 0x68], 1
mov dword [esp + 0x10], 5
mov dword [esp + 0x5c], 0xffffffff
mov dword [esp + 0x58], 0xffffffff
movzx eax, byte [esi + 8]
test al, al
jne 0x4f686c
mov ecx, dword [fcn.0055f760]
cmp ecx, 0x552d10
jne 0x4f698a
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 0
lea eax, [esp + 0x60]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov ebx, dword [esp + 0x60]
mov eax, dword [esp + 0x64]
cmp ebx, 0x7bd05af7
mov ecx, eax
sbb eax, 0x863
jge 0x4f700b
mov edx, 0xf4240
mov eax, ebx
mul edx
imul ecx, ecx, 0xf4240
add ecx, edx
push dword [0x6496cc]
push dword [0x6496c8]
push ecx
push eax
call fcn.00586340
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edx
movzx eax, byte [esi + 8]
cmp al, 1
je 0x4f6f63
test esi, esi
je 0x4f6f54
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x64]
mov dword [esi], eax
mov dword [esi + 4], ecx
mov byte [esi + 8], 1
mov al, 1
test al, al
je 0x4f6eaf
lea edx, [edi + 0x58]
mov ecx, dword [esi]
mov eax, dword [esi + 4]
mov dword [esp + 0x58], ecx
mov dword [esp + 0x5c], eax
sub ecx, dword [edx]
mov dword [esp + 0x14], edx
sbb eax, dword [edx + 4]
seto bl
mov edx, eax
sar edx, 0x1f
test bl, bl
cmovne ecx, edx
add edx, 0x80000000
test bl, bl
cmove edx, eax
xor esi, esi
mov eax, 0x1c9c37f
cmp eax, ecx
mov eax, 0
sbb eax, edx
mov dword [esp + 0x24], edi
jl 0x4f692d
mov ebx, ecx
add ebx, 1
mov eax, edx
adc eax, 0x80000000
mov edi, 1
cmp edi, ebx
sbb esi, eax
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x10]
mov ebx, dword [eax + edi*8 + 0x10]
mov esi, dword [eax + edi*8 + 0x14]
jae 0x4f6f72
add ebx, ecx
adc esi, edx
seto cl
mov eax, esi
sar eax, 0x1f
test cl, cl
cmovne ebx, eax
add eax, 0x80000000
test cl, cl
cmove eax, esi
cmp ebx, 0x186a0
mov ecx, eax
sbb ecx, 0
mov esi, dword [esp + 0x24]
mov dword [esi + edi*8 + 0x10], ebx
mov dword [esi + edi*8 + 0x14], eax
jge 0x4f6d24
cmp dword [esi + 0x8c], 0
mov edi, esi
je 0x4f6eac
movzx eax, byte [0x649534]
test al, al
setne bl
jne 0x4f6eda
mov byte [edi + 0x88], bl
movsd xmm0, qword [esp + 0x58]
movsd qword [edi + 0x58], xmm0
mov esi, dword [ebp + 8]
mov ebx, dword [edi + 0x98]
cmp dword [edi + 0x94], ebx
je 0x4f6e9a
cmp dword [ebx - 0x28], 0
mov dword [ebx - 0x28], 1
je 0x4f699f
mov ecx, dword [esp + 0xd8]
xor ecx, ebp
call fcn.00565ea5
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 8
call dword [0x63e1bc]
lea eax, [esp + 0x60]
push eax
call ecx
add esp, 4
jmp 0x4f6845
mov eax, dword [ebx - 0x68]
or eax, dword [ebx - 0x64]
jne 0x4f6f3e
mov eax, dword [ebx - 0x60]
or eax, dword [ebx - 0x5c]
jne 0x4f6f41
lea ecx, [ebx - 0x70]
mov eax, dword [ecx]
mov dword [esp + 0x24], ecx
or eax, dword [ecx + 4]
mov dword [esp + 0x10], ebx
jne 0x4f6bce
mov eax, dword [0x657bf4]
mov ecx, dword [0x64784c]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x4f6dcb
mov eax, dword [ebx - 0x20]
test eax, eax
je 0x4f6f44
cmp byte [0x657bf0], 1
jne 0x4f6ab1
cmp byte [eax + 0xc], 0
jne 0x4f6f47
movsd xmm0, qword [0x6260a8]
mov esi, dword [ebx - 0x38]
mov ecx, dword [ebx - 0x34]
mov eax, ecx
shld eax, esi, 0x17
mov edi, dword [ebx - 0x2c]
mov edx, esi
shl edx, 0x17
xor edx, esi
xor eax, ecx
mov esi, eax
mov ecx, edi
shr ecx, 0x1a
xor ecx, edi
xor ecx, eax
shr eax, 0x11
xor eax, ecx
mov ecx, dword [esp + 0x10]
mov ebx, dword [ecx - 0x30]
shld esi, edx, 0xf
mov ecx, edi
shld ecx, ebx, 6
xor ecx, ebx
xor ecx, edx
xor ecx, esi
mov edx, dword [esp + 0x10]
mov dword [edx - 0x38], ebx
mov edx, dword [esp + 0x10]
mov dword [edx - 0x34], edi
mov edx, dword [esp + 0x10]
mov dword [edx - 0x30], ecx
add ecx, ebx
mov ebx, dword [esp + 0x10]
mov dword [ebx - 0x2c], eax
adc eax, edi
mov edx, eax
shr edx, 0xb
movd xmm1, edx
shld eax, ecx, 0x15
movd xmm2, eax
punpckldq xmm2, xmm1
movq qword [esp + 0x30], xmm2
fild qword [esp + 0x30]
fstp qword [esp + 0x28]
movsd xmm1, qword [esp + 0x28]
mulsd xmm1, qword [0x6260a0]
ucomisd xmm0, xmm1
mov esi, dword [ebp + 8]
ja 0x4f6af1
mov dword [esp + 0x4c], 0xa
movzx eax, byte [0x649456]
test al, al
jne 0x4f6fcc
lea ecx, [ebx - 0x18]
mov eax, dword [ebx - 8]
inc eax
mov dword [ebx - 8], eax
push 0
push eax
call section..text
jmp 0x4f6972
call dword [0x63e1bc]
lea eax, [esp + 0x60]
push eax
call ecx
add esp, 4
jmp 0x4f6b60
mov al, byte [esi + 8]
test al, al
jne 0x4f6b8c
mov ebx, esi
mov ecx, dword [fcn.0055f760]
cmp ecx, 0x552d10
jne 0x4f6adf
xor eax, eax
lea esi, [esp + 0x60]
mov dword [esi + 4], eax
mov dword [esi], eax
push esi
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov eax, dword [esi]
mov esi, dword [esi + 4]
cmp eax, 0x7bd05af7
mov ecx, esi
sbb ecx, 0x863
jge 0x4f725b
mov ecx, 0xf4240
mul ecx
imul ecx, esi, 0xf4240
add ecx, edx
push dword [0x6496cc]
push dword [0x6496c8]
push ecx
push eax
call fcn.00586340
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edx
mov esi, ebx
mov al, byte [ebx + 8]
cmp al, 1
je 0x4f70e3
test esi, esi
je 0x4f6f54
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x64]
mov dword [esi], eax
mov dword [esi + 4], ecx
mov byte [esi + 8], 1
mov al, 1
mov ebx, dword [esp + 0x10]
test al, al
je 0x4f6eaf
movsd xmm0, qword [esi]
movsd qword [ebx - 0x68], xmm0
mov edi, esi
lea esi, [esp + 0x60]
push esi
call fcn.00406780
add esp, 4
movsd xmm0, qword [esi]
mov esi, edi
movsd qword [ebx - 0x60], xmm0
jmp 0x4f6ab1
call dword [0x63e1bc]
lea eax, [esp + 0x60]
push eax
call ecx
add esp, 4
jmp 0x4f6c3d
mov al, byte [esi + 8]
test al, al
jne 0x4f6c69
mov ebx, esi
mov ecx, dword [fcn.0055f760]
cmp ecx, 0x552d10
jne 0x4f6bbc
xor eax, eax
lea esi, [esp + 0x60]
mov dword [esi + 4], eax
mov dword [esi], eax
push esi
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov eax, dword [esi]
mov esi, dword [esi + 4]
cmp eax, 0x7bd05af7
mov ecx, esi
sbb ecx, 0x863
jge 0x4f71c7
mov ecx, 0xf4240
mul ecx
imul ecx, esi, 0xf4240
add ecx, edx
push dword [0x6496cc]
push dword [0x6496c8]
push ecx
push eax
call fcn.00586340
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edx
mov esi, ebx
mov al, byte [ebx + 8]
cmp al, 1
je 0x4f70d4
test esi, esi
je 0x4f6f54
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x64]
mov dword [esi], eax
mov dword [esi + 4], ecx
mov byte [esi + 8], 1
mov al, 1
mov ebx, dword [esp + 0x10]
test al, al
je 0x4f6eaf
mov edi, dword [esi]
sub edi, dword [ebx - 0x70]
mov eax, dword [esi + 4]
sbb eax, dword [ebx - 0x6c]
seto cl
mov esi, eax
sar esi, 0x1f
test cl, cl
cmovne edi, esi
add esi, 0x80000000
test cl, cl
cmove esi, eax
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], esi
mov dword [esp + 0x50], edi
mov dword [esp + 0x54], esi
sub esp, 0x10
movsd xmm0, qword [esp + 0x68]
movsd qword [esp + 8], xmm0
movsd xmm0, qword [esp + 0x60]
movsd qword [esp], xmm0
mov ecx, dword [esp + 0x34]
mov edx, str.Scheduling.ThreadController.IdleDuration
call fcn.00402130
add esp, 0x10
xor edx, edx
mov dword [ebx - 0x6c], edx
mov dword [ebx - 0x70], edx
mov dword [esp + 0x18], edi
add edi, 1
mov ecx, esi
adc ecx, 0x80000000
cmp edi, 2
sbb ecx, 0
mov eax, dword [ebx - 0x58]
mov ecx, dword [ebx - 0x54]
jb 0x4f7189
add eax, dword [esp + 0x18]
adc ecx, esi
seto dl
mov edi, ecx
sar edi, 0x1f
lea esi, [edi - 0x80000000]
test dl, dl
cmove edi, eax
test dl, dl
cmove esi, ecx
mov dword [ebx - 0x58], edi
mov dword [ebx - 0x54], esi
mov esi, dword [ebp + 8]
jmp 0x4f69cd
movd xmm0, ebx
movd xmm1, eax
punpckldq xmm0, xmm1
movq qword [esp + 0x40], xmm0
fild qword [esp + 0x40]
fstp qword [esp + 0x38]
movsd xmm0, qword [esp + 0x38]
divsd xmm0, qword [0x636410]
cvttsd2si ebx, xmm0
mov eax, dword [esi + 0x6c]
mov dword [esp + 0xc], eax
mov eax, dword [eax]
mov ecx, dword [eax + 0x18]
mov dword [esp + 8], ecx
call dword [0x63e1bc]
mov ecx, dword [esp + 0xc]
push ebx
push edi
call dword [esp + 0x10]
mov eax, ebx
neg eax
cmovs eax, ebx
mov ecx, 0x3e8
mul ecx
xor ecx, ecx
mov edi, esi
mov esi, eax
neg esi
sbb ecx, edx
test ebx, ebx
cmovns ecx, edx
cmovns esi, eax
mov eax, dword [esp + 0x10]
mov ebx, dword [edi + eax*8 + 0x10]
sub ebx, esi
mov esi, edi
mov edi, dword [esp + 0x10]
mov edx, dword [esi + edi*8 + 0x14]
sbb edx, ecx
seto al
mov ecx, edx
sar ecx, 0x1f
test al, al
cmovne ebx, ecx
add ecx, 0x80000000
test al, al
cmove ecx, edx
mov dword [esi + edi*8 + 0x10], ebx
mov dword [esi + edi*8 + 0x14], ecx
jmp 0x4f691e
push 0x657bf4
call fcn.00562c08
add esp, 4
cmp dword [0x657bf4], 0xffffffff
jne 0x4f69ee
mov eax, dword [0x64967c]
mov ecx, dword [0x64784c]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x4f6e1e
mov al, byte [0x649678]
mov byte [0x657bf0], al
push 0x657bf4
call fcn.00562c57
add esp, 4
jmp 0x4f69ee
push 0x64967c
call fcn.00562c08
add esp, 4
cmp dword [0x64967c], 0xffffffff
jne 0x4f6e02
xorpd xmm0, xmm0
lea edi, [esp + 0x60]
movupd xmmword [edi + 0x1f], xmm0
movapd xmmword [edi + 0x10], xmm0
movapd xmmword [edi], xmm0
movsd xmm1, qword [str.unknown]
movsd qword [edi + 0x2f], xmm1
movq xmm1, qword [0x62e70b]
movq qword [edi + 0x34], xmm1
movupd xmmword [edi + 0x3c], xmm0
movupd xmmword [edi + 0x4c], xmm0
movupd xmmword [edi + 0x5c], xmm0
mov byte [edi + 0x6c], 0
mov ecx, edi
push 0
call fcn.00437490
mov al, byte [edi + 0x2d]
mov byte [0x649678], al
push 0x64967c
call fcn.00562c57
add esp, 4
jmp 0x4f6e02
push str....._third_partylibc_srcinclude_vector:622:_assertion__empty___failed:_back___called_on_an_empty_vector_n
push 0x622e92
call fcn.0058fdd0
int3
int3
push str....._third_partylibc_srcincludeoptional:800:_assertion_this__has_value___failed:_optional_operator_called_on_a_disengaged_value_n
push 0x622e92
call fcn.0058fdd0
lea ebx, [edi + 0x94]
add ecx, 0xffffff90
mov edx, esi
call fcn.005ccbc0
mov ecx, ebx
call fcn.005ccc30
jmp 0x4f6953
mov esi, edi
cmp byte [edi + 0x88], 0
jne 0x4f6efa
mov dword [esp + 0x4c], 0xe8
mov al, byte [0x649534]
test al, al
jne 0x4f7126
mov ecx, str.NativeTask
mov eax, str.ApplicationTask
cmp byte [esp + 0x18], 0
cmovne eax, ecx
mov dword [esp + 0x50], 0xe8
mov cl, byte [0x649534]
test cl, cl
jne 0x4f70f2
mov dword [esp + 0x50], 0xe8
mov al, byte [0x649534]
test al, al
jne 0x4f709b
mov edi, esi
jmp 0x4f693f
int3
int3
int3
movsd xmm0, qword [0x615a88]
jmp 0x4f6a18
push str....._third_partylibc_srcinclude__memoryconstruct_at.h:40:_assertion___location___nullptr_failed:_null_pointer_given_to_construct_at_n
push 0x622e92
call fcn.0058fdd0
movsd xmm0, qword [esp + 0x60]
movsd qword [esi], xmm0
jmp 0x4f686c
mov dword [esp + 8], ebx
mov eax, 1
add dword [esp + 8], eax
mov eax, esi
adc eax, 0x80000000
mov dword [esp + 0xc], eax
mov dword [esp + 0x1c], 0
xor eax, eax
inc eax
cmp eax, dword [esp + 8]
mov eax, dword [esp + 0x1c]
sbb eax, dword [esp + 0xc]
setb al
xor ecx, ebx
mov ebx, 1
xor edx, esi
or edx, ecx
mov ecx, 0x80000000
sete dl
add ebx, 0xffffffff
adc ecx, 0xffffffff
or dl, al
mov esi, dword [esp + 0x24]
jne 0x4f6dbe
int3
movzx eax, al
mov dword [esp + 0x18], eax
mov ecx, esi
lea esi, [esp + 0x58]
mov eax, dword [esp + 0x24]
mov dword [esi], eax
lea edi, [esp + 0x60]
push edi
call fcn.004fa990
lea eax, [esp + 0x50]
mov dword [eax], str.ThreadController_active
lea edx, [esp + 0x4c]
mov ecx, dword [esp + 0x18]
push esi
push edi
push eax
call fcn.005ccf40
add esp, 0xc
jmp 0x4f6ac8
mov esi, dword [0x6496c8]
mov dword [esp + 0xc], esi
mov eax, dword [0x6496cc]
mov dword [esp + 0x14], eax
push eax
push esi
mov dword [esp + 0x10], ecx
push ecx
push ebx
call fcn.00586340
mov dword [esp + 0x1c], eax
mov ecx, edx
mov eax, dword [esp + 0x1c]
mul esi
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x1c]
mov esi, eax
imul esi, dword [esp + 0x14]
add edx, esi
imul esi, ecx, 0xf4240
imul ecx, dword [esp + 0xc]
add ecx, edx
sub ebx, dword [esp + 0x20]
sbb dword [esp + 8], ecx
mov ecx, 0xf4240
mul ecx
mov dword [esp + 0x1c], eax
add edx, esi
mov dword [esp + 0x20], edx
mov esi, dword [ebp + 8]
mov eax, ebx
mul ecx
imul ecx, dword [esp + 8], 0xf4240
add edx, ecx
push dword [esp + 0x14]
push dword [esp + 0x10]
push edx
push eax
call fcn.00586340
add eax, dword [esp + 0x1c]
adc edx, dword [esp + 0x20]
jmp 0x4f683d
cmp byte [esi + 0x80], 0
je 0x4f6eaf
movzx ecx, al
lea eax, [esi + 0x70]
lea edx, [esp + 0x60]
mov dword [edx], 0
lea edx, [esp + 0x50]
lea edi, [esp + 0x58]
push edi
push eax
lea eax, [esp + 0x68]
push eax
call fcn.005cd1e0
add esp, 0xc
jmp 0x4f6f37
movsd xmm0, qword [esp + 0x60]
movsd qword [esi], xmm0
jmp 0x4f6c65
movsd xmm0, qword [esp + 0x60]
movsd qword [esi], xmm0
jmp 0x4f6b88
cmp byte [esi + 0x80], 0
je 0x4f6eaf
movzx ecx, cl
lea edx, [esi + 0x70]
lea edi, [esp + 0x60]
mov dword [edi], eax
lea eax, [esp + 0x50]
push dword [esp + 0x14]
push edx
push 1
push edi
push eax
push ecx
call fcn.0059c750
add esp, 0x18
jmp 0x4f6f22
mov edx, 0xfff0bdc0
add edx, dword [esi + 0x58]
mov ecx, dword [esi + 0x5c]
adc ecx, 0xffffffff
mov edi, 0x80000000
cmovno edi, ecx
mov ecx, 0
cmovo edx, ecx
mov dword [esp + 0x60], edx
mov dword [esp + 0x64], edi
mov ecx, dword [esp + 0x24]
cmp byte [ecx + 0x80], 0
je 0x4f6eaf
movzx eax, al
lea ecx, [esi + 0x70]
lea edx, [esp + 0x50]
mov dword [edx], str.MessagePumpPhases
lea edi, [esp + 0x60]
push edi
push ecx
push 3
push edx
lea ecx, [esp + 0x5c]
push ecx
push eax
call fcn.0059c750
add esp, 0x18
jmp 0x4f6efa
xor edi, edi
inc edi
mov ebx, eax
add ebx, edi
mov dword [esp + 0x14], eax
mov eax, ecx
adc eax, 0x80000000
xor edi, edi
inc edi
cmp edi, ebx
mov ebx, dword [esp + 0x10]
sbb edx, eax
setb dl
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
xor edi, eax
xor ecx, esi
or ecx, edi
mov edi, eax
sete al
or al, dl
jne 0x4f6d16
int3
mov edi, dword [0x6496c8]
mov dword [esp + 0x14], edi
mov ecx, dword [0x6496cc]
mov dword [esp + 0x18], ecx
push ecx
push edi
push esi
push eax
mov dword [esp + 0x1c], eax
call fcn.00586340
mov dword [esp + 8], eax
mov ecx, edx
mov eax, dword [esp + 8]
mul edi
mov dword [esp + 0x20], eax
mov eax, dword [esp + 8]
mov edi, eax
imul edi, dword [esp + 0x18]
add edx, edi
imul edi, ecx, 0xf4240
mov dword [esp + 0x1c], edi
imul ecx, dword [esp + 0x14]
add ecx, edx
mov edi, dword [esp + 0xc]
sub edi, dword [esp + 0x20]
sbb esi, ecx
mov ecx, 0xf4240
mul ecx
mov dword [esp + 8], eax
add edx, dword [esp + 0x1c]
mov dword [esp + 0xc], edx
mov eax, edi
mul ecx
imul ecx, esi, 0xf4240
add edx, ecx
push dword [esp + 0x18]
push dword [esp + 0x18]
push edx
push eax
call fcn.00586340
add eax, dword [esp + 8]
adc edx, dword [esp + 0xc]
jmp 0x4f6c35
mov edi, dword [0x6496c8]
mov dword [esp + 0x14], edi
mov ecx, dword [0x6496cc]
mov dword [esp + 0x18], ecx
push ecx
push edi
push esi
push eax
mov dword [esp + 0x1c], eax
call fcn.00586340
mov dword [esp + 8], eax
mov ecx, edx
mov eax, dword [esp + 8]
mul edi
mov dword [esp + 0x20], eax
mov eax, dword [esp + 8]
mov edi, eax
imul edi, dword [esp + 0x18]
add edx, edi
imul edi, ecx, 0xf4240
mov dword [esp + 0x1c], edi
imul ecx, dword [esp + 0x14]
add ecx, edx
mov edi, dword [esp + 0xc]
sub edi, dword [esp + 0x20]
sbb esi, ecx
mov ecx, 0xf4240
mul ecx
mov dword [esp + 8], eax
add edx, dword [esp + 0x1c]
mov dword [esp + 0xc], edx
mov eax, edi
mul ecx
imul ecx, esi, 0xf4240
add edx, ecx
push dword [esp + 0x18]
push dword [esp + 0x18]
push edx
push eax
call fcn.00586340
add eax, dword [esp + 8]
adc edx, dword [esp + 0xc]
jmp 0x4f6b58