Function at 0x4f1fd0
Capabilities:
Check for time delay via queryperformancecounter
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x80
mov eax, dword [0x644040]
xor eax, ebp
mov dword [esp + 0x78], eax
mov edi, dword [ecx + 0xa0]
mov esi, dword [ecx + 0xa4]
cmp edi, esi
je 0x4f2233
mov ebx, dword [ebp + 8]
cmp dword [ecx + 0x6c], 0
je 0x4f221e
mov dword [esp + 4], esi
mov eax, dword [ecx + 0x58]
mov edx, dword [ecx + 0x5c]
mov esi, eax
or esi, edx
je 0x4f2755
mov dword [esp], ecx
mov esi, dword [ecx + 0x8c]
test esi, esi
je 0x4f275e
mov ebx, dword [esi + 0xa4]
sub ebx, dword [esi + 0xa0]
cmp ebx, 0x58
mov ebx, dword [ebp + 8]
mov esi, dword [esp + 4]
jne 0x4f221e
mov ecx, dword [esp]
add ecx, 0x58
mov dword [esp + 8], ecx
mov dword [esp + 0x6c], 0xffffffff
mov dword [esp + 0x68], 0xffffffff
cmp byte [ebx + 8], 0
jne 0x4f2129
mov ecx, dword [fcn.005515a0]
cmp ecx, 0x522100
jne 0x4f2117
mov dword [esp + 0x74], 0
mov dword [esp + 0x70], 0
lea eax, [esp + 0x70]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov ebx, dword [esp + 0x70]
mov esi, dword [esp + 0x74]
cmp ebx, 0x7bd05af7
mov eax, esi
sbb eax, 0x863
jge 0x4f2880
mov ecx, 0xf4240
mov eax, ebx
mul ecx
imul ecx, esi, 0xf4240
add ecx, edx
push dword [0x6496bc]
push dword [0x6496b8]
push ecx
push eax
call fcn.00588630
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], edx
mov ebx, dword [ebp + 8]
cmp byte [ebx + 8], 0
jne 0x4f283e
test ebx, ebx
je 0x4f2764
mov esi, dword [esp + 0x70]
mov eax, dword [esp + 0x74]
mov dword [ebx], esi
mov edi, eax
mov dword [ebx + 4], eax
mov byte [ebx + 8], 1
mov ecx, dword [esp + 8]
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
jmp 0x4f212e
call dword [0x63e64c]
lea eax, [esp + 0x70]
push eax
call ecx
add esp, 4
jmp 0x4f20e7
mov esi, dword [ebx]
mov edi, dword [ebx + 4]
mov ecx, esi
sub ecx, eax
mov eax, edi
sbb eax, edx
seto bl
mov edx, eax
sar edx, 0x1f
test bl, bl
cmovne ecx, edx
add edx, 0x80000000
test bl, bl
cmove edx, eax
mov ebx, esi
xor esi, esi
mov eax, 0x1c9c37f
cmp eax, ecx
mov eax, 0
sbb eax, edx
mov dword [esp + 4], ebx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x14], edi
mov dword [esp + 0x6c], edi
jl 0x4f21e9
mov edi, 1
mov ebx, ecx
add ebx, 1
mov eax, edx
adc eax, 0x80000000
cmp edi, ebx
sbb esi, eax
mov eax, dword [esp]
mov ebx, dword [eax + 0x40]
mov esi, dword [eax + 0x44]
jae 0x4f27f9
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
mov ecx, dword [esp]
mov dword [ecx + 0x40], ebx
mov dword [ecx + 0x44], eax
cmp ebx, 0x186a0
mov ecx, eax
sbb ecx, 0
jge 0x4f26ad
mov eax, dword [esp + 4]
mov ecx, dword [esp]
mov dword [ecx + 0x60], eax
mov eax, dword [esp + 0x14]
mov dword [ecx + 0x64], eax
cmp dword [ecx + 0x8c], 0
je 0x4f2761
movzx eax, byte [0x649525]
test al, al
setne bl
jne 0x4f2773
mov eax, dword [esp]
mov byte [eax + 0x88], bl
movsd xmm0, qword [esp + 0x68]
movsd qword [eax + 0x58], xmm0
mov edi, dword [eax + 0xa0]
mov esi, dword [eax + 0xa4]
mov ebx, dword [ebp + 8]
cmp edi, esi
je 0x4f2746
cmp dword [esi - 0x30], 0
mov dword [esi - 0x30], 0
jne 0x4f2248
mov ecx, dword [esp + 0x78]
xor ecx, ebp
call fcn.00568175
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 4
lea ecx, [esi - 0x20]
call fcn.00401210
mov ecx, esi
mov esi, dword [esi - 0x50]
mov edi, dword [ecx - 0x4c]
mov eax, esi
or eax, edi
jne 0x4f2339
mov dword [esp + 0x60], 0xa
movzx eax, byte [0x649446]
test al, al
jne 0x4f2852
mov ecx, dword [0x645d64]
test ecx, ecx
je 0x4f2233
call fcn.005c4b60
jmp 0x4f2233
call dword [0x63e64c]
lea eax, [esp + 0x70]
push eax
call ecx
add esp, 4
jmp 0x4f2300
mov ecx, dword [fcn.005515a0]
cmp ecx, 0x522100
jne 0x4f228a
xor eax, eax
lea esi, [esp + 0x70]
mov dword [esi + 4], eax
mov dword [esi], eax
push esi
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov edi, dword [esi]
mov esi, dword [esi + 4]
cmp edi, 0x7bd05af7
mov eax, esi
sbb eax, 0x863
jge 0x4f2a5a
mov ecx, 0xf4240
mov eax, edi
mul ecx
imul ecx, esi, 0xf4240
add ecx, edx
push dword [0x6496bc]
push dword [0x6496b8]
push ecx
push eax
call fcn.00588630
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], edx
mov eax, dword [ebp + 8]
cmp byte [eax + 8], 0
jne 0x4f29db
test eax, eax
je 0x4f2764
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x74]
mov dword [esp + 0x10], ecx
mov dword [eax], ecx
mov dword [esp + 0x18], edx
mov dword [eax + 4], edx
mov byte [eax + 8], 1
mov eax, dword [esp + 0x20]
mov esi, dword [eax]
mov edi, dword [eax + 4]
jmp 0x4f235b
mov dword [esp + 4], ecx
lea eax, [ecx - 0x50]
mov dword [esp + 0x20], eax
cmp byte [ebx + 8], 0
je 0x4f229c
mov eax, dword [ebx]
mov dword [esp + 0x10], eax
mov eax, dword [ebx + 4]
mov dword [esp + 0x18], eax
mov ebx, dword [esp + 4]
lea eax, [ebx - 0x58]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x70]
push eax
call fcn.004056d0
add esp, 4
lea edx, [esp + 0x70]
mov eax, dword [edx]
sub eax, dword [ebx - 0x48]
mov ecx, ebx
mov ebx, dword [edx + 4]
sbb ebx, dword [ecx - 0x44]
seto dl
mov byte [esp + 4], dl
mov ecx, ebx
sar ecx, 0x1f
test dl, dl
cmovne eax, ecx
mov dword [esp + 0x1c], eax
xor ecx, 0x80000000
mov edx, dword [esp + 0x10]
sub edx, esi
mov eax, dword [esp + 0x18]
sbb eax, edi
seto byte [esp]
cmp byte [esp + 4], 0
cmove ecx, ebx
mov ebx, eax
sar ebx, 0x1f
cmp byte [esp], 0
cmovne edx, ebx
xor ebx, 0x80000000
cmp byte [esp], 0
cmove ebx, eax
cmp edx, dword [esp + 0x1c]
mov eax, ebx
sbb eax, ecx
mov dword [esp + 0x24], ecx
cmovl ecx, ebx
mov dword [esp], ecx
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], edx
cmovl eax, edx
mov dword [esp + 8], eax
mov dword [esp + 0x68], edx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x60], edx
mov dword [esp + 0x64], ebx
sub esp, 0x10
movsd xmm0, qword [esp + 0x78]
movsd qword [esp + 8], xmm0
movsd xmm0, qword [esp + 0x70]
movsd qword [esp], xmm0
mov ecx, dword [esp + 0x24]
mov edx, str.Scheduling.ThreadController.ActiveIntervalDuration
call fcn.00402090
mov edx, dword [esp + 0x18]
add esp, 0x10
mov eax, edx
add eax, 1
mov ecx, dword [esp]
adc ecx, 0x80000000
cmp eax, 2
mov eax, dword [esp + 4]
sbb ecx, 0
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x58], eax
mov dword [esp + 0xc], ebx
jb 0x4f2981
sub eax, edx
mov ecx, ebx
sbb ecx, dword [esp]
seto dl
mov ebx, ecx
sar ebx, 0x1f
test dl, dl
cmovne eax, ebx
add ebx, 0x80000000
test dl, dl
cmove ebx, ecx
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], ebx
sub esp, 0x10
movsd xmm0, qword [esp + 0x68]
movsd qword [esp + 8], xmm0
movsd xmm0, qword [esp + 0x60]
movsd qword [esp], xmm0
mov ebx, dword [esp + 0x24]
mov ecx, ebx
mov edx, str.Scheduling.ThreadController.ActiveIntervalOffCpuDuration
call fcn.00402090
add esp, 0x10
mov eax, dword [esp + 0xc]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 4]
mov dword [esp + 0x48], eax
mov eax, dword [esp]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 8]
mov dword [esp + 0x40], eax
sub esp, 0x10
movsd xmm0, qword [esp + 0x58]
movsd qword [esp + 8], xmm0
movsd xmm0, qword [esp + 0x50]
movsd qword [esp], xmm0
mov ecx, ebx
mov edx, str.Scheduling.ThreadController.ActiveIntervalOnCpuDuration
call fcn.00402090
add esp, 0x10
mov eax, dword [esp + 0x10]
xor eax, esi
mov ecx, dword [esp + 0x18]
xor ecx, edi
or ecx, eax
je 0x4f2905
mov esi, dword [esp]
mov eax, esi
sar eax, 0x1f
xor esi, eax
mov edi, dword [esp + 8]
xor edi, eax
sub edi, eax
sbb esi, eax
mov dword [esp + 8], esi
mov ecx, 0x64
mov eax, edi
mul ecx
mov dword [esp + 0x10], eax
imul ecx, esi, 0x64
add edx, ecx
mov dword [esp + 0x18], 0
neg eax
mov esi, 0
sbb esi, edx
xor ebx, ebx
inc ebx
add ebx, 0xffffffff
mov ecx, 0x80000000
adc ecx, 0xffffffff
cmp dword [esp], 0
cmovns esi, edx
cmovns eax, dword [esp + 0x10]
mov edx, 1
lea edx, [edx - 2]
cmovns ebx, edx
mov edx, 0x80000000
lea edx, [edx - 1]
cmovns ecx, edx
mov edx, 0x7ae147ae
cmp edx, edi
mov edx, 0x147ae14
sbb edx, dword [esp + 8]
mov edi, 0x80000000
cmovae ebx, eax
cmovae ecx, esi
xor esi, esi
inc esi
mov eax, ebx
add eax, esi
mov edx, ecx
adc edx, edi
cmp eax, 2
sbb edx, 0
jb 0x4f2917
mov edi, dword [esp + 0xc]
push edi
mov esi, dword [esp + 8]
push esi
push ecx
push ebx
call fcn.00588630
mov dword [esp + 0x38], esi
mov dword [esp + 0x3c], edi
sub esp, 8
movsd xmm0, qword [esp + 0x40]
movsd qword [esp], xmm0
mov ecx, dword [esp + 0x1c]
mov edx, eax
call fcn.00402a30
add esp, 8
xorps xmm0, xmm0
mov eax, dword [esp + 0x20]
movups xmmword [eax], xmm0
mov ebx, dword [ebp + 8]
cmp byte [ebx + 8], 0
je 0x4f2602
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
mov edx, dword [esp + 0x14]
mov dword [edx], eax
mov dword [edx + 4], ecx
jmp 0x4f2262
mov ecx, dword [fcn.005515a0]
cmp ecx, 0x522100
jne 0x4f269b
xor eax, eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x70], eax
lea eax, [esp + 0x70]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov ebx, dword [esp + 0x70]
mov esi, dword [esp + 0x74]
cmp ebx, 0x7bd05af7
mov eax, esi
sbb eax, 0x863
jge 0x4f2ae1
mov ecx, 0xf4240
mov eax, ebx
mul ecx
imul ecx, esi, 0xf4240
add ecx, edx
push dword [0x6496bc]
push dword [0x6496b8]
push ecx
push eax
call fcn.00588630
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], edx
mov ebx, dword [ebp + 8]
cmp byte [ebx + 8], 0
jne 0x4f29c9
test ebx, ebx
je 0x4f2764
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov dword [ebx], eax
mov dword [ebx + 4], ecx
mov byte [ebx + 8], 1
jmp 0x4f25f4
call dword [0x63e64c]
lea eax, [esp + 0x70]
push eax
call ecx
add esp, 4
jmp 0x4f2670
movd xmm0, ebx
movd xmm1, eax
punpckldq xmm0, xmm1
movq qword [esp + 0x30], xmm0
fild qword [esp + 0x30]
fstp qword [esp + 0x28]
movsd xmm0, qword [esp + 0x28]
divsd xmm0, qword [0x636b10]
cvttsd2si ebx, xmm0
mov eax, dword [esp]
mov edi, dword [eax + 0x6c]
mov eax, dword [edi]
mov esi, dword [eax + 0x18]
mov ecx, esi
call dword [0x63e64c]
mov ecx, edi
push ebx
push 6
call esi
mov eax, ebx
neg eax
cmovs eax, ebx
mov ecx, 0x3e8
mul ecx
xor ecx, ecx
mov esi, eax
neg esi
sbb ecx, edx
test ebx, ebx
cmovns ecx, edx
cmovns esi, eax
mov edx, dword [esp]
mov eax, dword [edx + 0x40]
sub eax, esi
mov edx, dword [edx + 0x44]
mov esi, eax
sbb edx, ecx
seto al
mov ebx, edx
sar ebx, 0x1f
test al, al
cmovne esi, ebx
add ebx, 0x80000000
test al, al
cmove ebx, edx
mov eax, dword [esp]
mov dword [eax + 0x40], esi
mov dword [eax + 0x44], ebx
jmp 0x4f21cb
push str....._third_partylibc_srcinclude_vector:622:_assertion__empty___failed:_back___called_on_an_empty_vector_n
push 0x624173
call fcn.00591ed0
mov esi, dword [esp + 4]
jmp 0x4f221e
int3
int3
push str....._third_partylibc_srcinclude__memoryconstruct_at.h:40:_assertion___location___nullptr_failed:_null_pointer_given_to_construct_at_n
push 0x624173
call fcn.00591ed0
mov eax, dword [esp]
cmp byte [eax + 0x88], 0
jne 0x4f2794
mov dword [esp + 0x58], 0xe9
mov al, byte [0x649525]
test al, al
jne 0x4f29f5
mov dword [esp + 0x60], 0xe9
mov al, byte [0x649525]
test al, al
jne 0x4f2943
mov dword [esp + 0x60], 0xe9
mov al, byte [0x649525]
test al, al
je 0x4f21fb
mov ecx, dword [esp]
cmp byte [ecx + 0x80], 0
je 0x4f2b68
movzx ecx, al
mov eax, dword [esp]
add eax, 0x70
lea esi, [esp + 0x70]
mov dword [esi], 0
lea edi, [esp + 0x68]
lea edx, [esp + 0x60]
push edi
push eax
push esi
call fcn.005d1770
add esp, 0xc
jmp 0x4f21fb
mov eax, ebx
add eax, edi
mov dword [esp + 0xc], eax
mov eax, esi
adc eax, 0x80000000
mov dword [esp + 0x10], eax
xor ecx, ebx
xor edx, esi
mov ebx, 0x80000000
add edi, 0xffffffff
adc ebx, 0xffffffff
or edx, ecx
jne 0x4f2826
mov esi, edi
jmp 0x4f2738
xor eax, eax
xor ecx, ecx
inc ecx
cmp ecx, dword [esp + 0xc]
sbb eax, dword [esp + 0x10]
mov esi, edi
jb 0x4f2738
int3
mov esi, dword [esp + 0x70]
mov eax, dword [esp + 0x74]
mov dword [ebx], esi
mov edi, eax
mov dword [ebx + 4], eax
jmp 0x4f210c
movzx edi, al
lea esi, [esp + 0x70]
mov ecx, ebx
push esi
call fcn.004f4260
lea eax, [esp + 0x68]
mov dword [eax], 0
lea edx, [esp + 0x60]
mov ecx, edi
push esi
push eax
call fcn.005d16a0
add esp, 8
jmp 0x4f2279
mov ecx, dword [0x6496b8]
mov eax, dword [0x6496bc]
mov dword [esp + 4], eax
push eax
push ecx
mov dword [esp + 0x1c], ecx
mov edi, ecx
push esi
push ebx
call fcn.00588630
mov dword [esp + 0x18], edx
mov ecx, eax
mul edi
mov dword [esp + 0xc], eax
mov eax, ecx
imul ecx, dword [esp + 4]
add edx, ecx
mov ecx, dword [esp + 0x18]
imul edi, ecx, 0xf4240
mov dword [esp + 0x10], edi
imul ecx, dword [esp + 0x14]
add ecx, edx
sub ebx, dword [esp + 0xc]
sbb esi, ecx
mov ecx, 0xf4240
mul ecx
mov dword [esp + 0xc], eax
mov edi, edx
add edi, dword [esp + 0x10]
mov eax, ebx
mul ecx
imul ecx, esi, 0xf4240
add edx, ecx
push dword [esp + 4]
push dword [esp + 0x18]
push edx
push eax
call fcn.00588630
add eax, dword [esp + 0xc]
adc edx, edi
jmp 0x4f20dc
mov eax, 0x64
mov esi, dword [esp + 4]
mov edi, dword [esp + 0xc]
jmp 0x4f25b8
mov eax, dword [esp + 4]
add eax, esi
adc edi, dword [esp + 0xc]
cmp esi, eax
sbb dword [esp + 0x18], edi
jae 0x4f2b7a
xor eax, eax
mov edi, dword [esp + 0xc]
xor ecx, edi
setns al
neg eax
mov esi, dword [esp + 4]
jmp 0x4f25b8
mov ecx, dword [esp]
cmp byte [ecx + 0x80], 0
je 0x4f2b68
movzx eax, al
mov ecx, dword [esp]
add ecx, 0x70
lea edx, [esp + 0x70]
mov dword [edx], str.IdleWork
lea esi, [esp + 0x60]
push dword [esp + 8]
push ecx
push 1
push edx
push esi
push eax
call fcn.0059eb60
add esp, 0x18
jmp 0x4f27a9
cmp dword [esp + 0x1c], eax
sbb dword [esp + 0x24], ebx
jge 0x4f2b77
cmp dword [esp], 0
js 0x4f29b0
xor eax, eax
inc eax
add eax, 0xffffffff
mov ecx, 0x80000000
adc ecx, 0xffffffff
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], ecx
jmp 0x4f2481
mov eax, 0x80000000
dec eax
xor ecx, ecx
inc ecx
add ecx, 0xfffffffe
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], eax
jmp 0x4f2481
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov dword [ebx], eax
mov dword [ebx + 4], ecx
jmp 0x4f25f4
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x74]
mov dword [esp + 0x10], ecx
mov dword [eax], ecx
mov dword [esp + 0x18], edx
mov dword [eax + 4], edx
jmp 0x4f232e
mov edx, 0xfff0bdc0
mov edi, dword [esp]
add edx, dword [edi + 0x58]
mov esi, dword [edi + 0x5c]
adc esi, 0xffffffff
mov ecx, 0x80000000
cmovno ecx, esi
mov esi, 0
cmovo edx, esi
mov dword [esp + 0x70], edx
mov dword [esp + 0x74], ecx
cmp byte [edi + 0x80], 0
je 0x4f2b68
movzx eax, al
mov ecx, dword [esp]
add ecx, 0x70
lea edx, [esp + 0x60]
mov dword [edx], str.MessagePumpPhases
lea esi, [esp + 0x70]
lea edi, [esp + 0x58]
push esi
push ecx
push 3
push edx
push edi
push eax
call fcn.0059eb60
add esp, 0x18
jmp 0x4f2794
mov ebx, dword [0x6496b8]
mov dword [esp + 0x10], ebx
mov eax, dword [0x6496bc]
mov dword [esp], eax
push eax
push ebx
push esi
push edi
call fcn.00588630
mov dword [esp + 0x14], eax
mov ecx, edx
mov eax, dword [esp + 0x14]
mul ebx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x14]
mov ebx, eax
imul ebx, dword [esp]
add edx, ebx
imul ebx, ecx, 0xf4240
mov dword [esp + 8], ebx
mov ebx, dword [esp + 0x10]
imul ecx, ebx
add ecx, edx
sub edi, dword [esp + 0xc]
sbb esi, ecx
mov ecx, 0xf4240
mul ecx
mov dword [esp + 0x14], eax
add edx, dword [esp + 8]
mov dword [esp + 8], edx
mov eax, edi
mul ecx
imul ecx, esi, 0xf4240
add edx, ecx
push dword [esp]
push ebx
push edx
push eax
call fcn.00588630
add eax, dword [esp + 0x14]
adc edx, dword [esp + 8]
jmp 0x4f22f8
mov edi, dword [0x6496b8]
mov dword [esp + 0x10], edi
mov eax, dword [0x6496bc]
mov dword [esp], eax
push eax
push edi
push esi
push ebx
call fcn.00588630
mov dword [esp + 4], eax
mov ecx, edx
mov eax, dword [esp + 4]
mul edi
mov dword [esp + 0xc], eax
mov eax, dword [esp + 4]
mov edi, eax
imul edi, dword [esp]
add edx, edi
imul edi, ecx, 0xf4240
mov dword [esp + 8], edi
mov edi, dword [esp + 0x10]
imul ecx, edi
add ecx, edx
sub ebx, dword [esp + 0xc]
sbb esi, ecx
mov ecx, 0xf4240
mul ecx
mov dword [esp + 4], eax
add edx, dword [esp + 8]
mov dword [esp + 8], edx
mov eax, ebx
mul ecx
imul ecx, esi, 0xf4240
add edx, ecx
push dword [esp]
push edi
push edx
push eax
call fcn.00588630
add eax, dword [esp + 4]
adc edx, dword [esp + 8]
jmp 0x4f2668
push str....._third_partylibc_srcincludeoptional:806:_assertion_this__has_value___failed:_optional_operator_called_on_a_disengaged_value_n
push 0x624173
call fcn.00591ed0
int3
int3