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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x78
mov eax, dword [0x5f3418]
xor eax, ebp
mov dword [esp + 0x70], eax
mov dword [esp + 0x5c], 0xffffffff
mov dword [esp + 8], ecx
mov esi, dword [ecx + 0x20]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
mov eax, esi
shr eax, 0xe
mov ecx, esi
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x6c24fc]
bt ecx, eax
jb 0x4f80b2
mov eax, esi
shr eax, 0x15
mov byte [eax + 0x6ca4fc], 1
mov dword [esp + 0x38], esi
xorps xmm0, xmm0
movups xmmword [esp + 0x3c], xmm0
movups xmmword [esp + 0x4c], xmm0
mov byte [esp + 0x5c], 0
mov esi, dword [esp + 8]
mov eax, dword [esi + 0x20]
add eax, 0x14
mov dword [esp + 0x28], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4f7cb5
mov ebx, dword [esi + 0x20]
mov eax, dword [ebx]
mov esi, dword [eax + 0x1c]
cmp esi, 0x4fbd20
jne 0x4f7b8b
cmp dword [ebx + 0x98], 0
je 0x4f78af
cmp byte [ebx + 0xcc], 0
jne 0x4f78af
mov edi, dword [ebx + 0x2c]
mov edx, dword [ebx + 0xa4]
mov dword [esp + 4], 0
mov esi, 0
test edi, edi
jne 0x4f7ba1
add esi, edx
mov eax, dword [ebx + 0x9c]
cmp eax, esi
cmovb esi, eax
mov edx, dword [ebx + 0xa4]
cmp esi, edx
cmovbe esi, edx
mov eax, dword [ebx + 0x34]
mov edi, dword [ebx + 0xa0]
add eax, dword [ebx + 0x30]
je 0x4f773f
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 4]
mov eax, dword [eax + 0x20]
cmp eax, 1
ja 0x4f773f
mov eax, dword [ebx + 0x20]
cmp eax, dword [ebx + 0x24]
je 0x4f8094
mov cl, byte [eax + 8]
dec cl
cmp cl, 1
ja 0x4f8628
mov eax, dword [eax]
mov dword [esp + 0x10], eax
mov eax, dword [eax]
mov ecx, dword [eax + 4]
xor eax, eax
inc eax
mov dword [esp + 4], eax
mov dword [esp + 0x14], ecx
cmp ecx, 0x501660
je 0x4f772a
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x18], edx
call dword [section..00cfg]
mov ecx, dword [esp + 0x10]
call dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0xc]
add eax, ecx
dec eax
cmp eax, 2
mov ecx, dword [esp + 4]
cmovae ecx, eax
mov dword [esp + 4], ecx
sub edi, edx
add edi, esi
add edi, dword [esp + 4]
mov eax, dword [ebx + 0x98]
cmp eax, edi
cmovb edi, eax
cmp edi, 0x100
mov ecx, 0x100
cmovb ecx, edi
mov edi, dword [ebx + 0x8c]
sub edi, dword [ebx + 0x88]
sar edi, 2
mov eax, dword [ebx + 0xb4]
sub eax, dword [ebx + 0xb0]
sar eax, 2
sub edi, eax
xor edx, edx
mov eax, ecx
sub eax, edi
cmovb eax, edx
cmp eax, 2
mov edx, 2
cmovb edx, eax
lea esi, [ebx + 0xb0]
test edx, edx
jne 0x4f7a06
cmp ecx, edi
jne 0x4f77cb
mov eax, dword [ebx + 0x8c]
sub eax, dword [ebx + 0x88]
cmp eax, 0x400
je 0x4f77cb
mov ecx, dword [ebx + 0xb0]
cmp ecx, dword [ebx + 0xb4]
je 0x4f7e4c
mov eax, dword [ebx + 0x20]
cmp eax, dword [ebx + 0x24]
je 0x4f77e5
mov ecx, dword [ebx + 0xa0]
cmp ecx, dword [ebx + 0x98]
jae 0x4f863c
mov word [ebx + 0x3c], 0
cmp byte [ebx + 0xc0], 0
jne 0x4f78af
mov esi, dword [ebx + 0x2c]
mov ecx, dword [ebx + 0xa4]
xor edi, edi
test esi, esi
jne 0x4f7bf8
add edi, ecx
cmp edi, dword [ebx + 0x9c]
ja 0x4f8110
mov edi, dword [ebx + 0x2c]
mov edx, dword [ebx + 0xa0]
xor ecx, ecx
mov dword [esp + 4], 0
test edi, edi
jne 0x4f7c4a
mov esi, dword [ebx + 0x34]
add esi, dword [ebx + 0x30]
je 0x4f789b
mov eax, dword [ebx + 4]
mov eax, dword [eax + 0x20]
cmp eax, 1
ja 0x4f789b
mov eax, dword [ebx + 0x20]
cmp eax, dword [ebx + 0x24]
je 0x4f8094
mov cl, byte [eax + 8]
dec cl
cmp cl, 1
ja 0x4f8635
mov eax, dword [eax]
mov dword [esp + 0xc], eax
mov eax, dword [eax]
mov edi, dword [eax + 4]
xor ecx, ecx
inc ecx
mov eax, ecx
cmp edi, 0x501660
je 0x4f7892
mov ecx, edi
mov dword [esp + 0x14], edx
call dword [section..00cfg]
mov ecx, dword [esp + 0xc]
call edi
xor ecx, ecx
inc ecx
mov edx, dword [esp + 0x14]
add eax, esi
dec eax
cmp eax, 2
cmovae ecx, eax
add edx, dword [esp + 4]
lea eax, [ecx + edx]
inc eax
cmp eax, dword [ebx + 0x98]
ja 0x4f811f
mov eax, dword [esp + 0x3c]
or eax, dword [esp + 0x4c]
jne 0x4f7cc3
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x20]
mov edx, dword [eax + 0xb0]
mov ecx, dword [eax + 0xb4]
cmp edx, ecx
je 0x4f7df6
mov esi, dword [ecx - 4]
mov ebx, dword [ebp + 0xc]
cmp esi, ebx
je 0x4f7ea5
lea esi, [ebx + 0xc]
push esi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4f80c0
mov edi, dword [ebx + 0x18]
mov ebx, dword [ebx + 0x1c]
push esi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x20]
cmp byte [eax + 0x58], 0
jne 0x4f80cc
or edi, ebx
jne 0x4f7eaf
mov ecx, dword [eax + 0x8c]
sub ecx, dword [eax + 0x88]
mov edx, dword [eax + 0xb4]
sar ecx, 2
sub edx, dword [eax + 0xb0]
sar edx, 2
sub ecx, edx
cmp ecx, dword [eax + 0x98]
ja 0x4f80ff
mov eax, dword [esp + 8]
mov edi, dword [eax + 0x20]
mov eax, dword [edi + 0x20]
cmp eax, dword [edi + 0x24]
je 0x4f8151
movzx ebx, byte [eax + 8]
mov eax, dword [edi + 4]
mov eax, dword [eax + 0x20]
test eax, eax
jne 0x4f813d
mov eax, dword [esp + 8]
mov edi, dword [eax + 0x20]
test ebx, ebx
je 0x4f7995
mov ecx, edi
lea eax, [esp + 0x2c]
push eax
lea eax, [esp + 0x6c]
push eax
call fcn.004f8aa0
mov esi, dword [esp + 0x68]
test esi, esi
je 0x4f794a
jmp 0x4f79a8
mov eax, dword [edi + 0xa4]
cmp eax, dword [edi + 0x9c]
jb 0x4f797a
jmp 0x4f8151
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 8]
mov ecx, dword [ecx + 0x20]
mov edx, dword [ecx + 0xa0]
inc edx
mov dword [ecx + 0xa0], edx
test ebx, ebx
jne 0x4f79ca
inc dword [ecx + 0xa4]
mov edi, dword [ecx + 0x20]
cmp edi, dword [ecx + 0x24]
je 0x4f79de
cmp edx, dword [ecx + 0x98]
jae 0x4f86e3
mov word [ecx + 0x3c], 0
shl ebx, 8
or ebx, 1
mov edx, dword [esp + 8]
mov dword [edx + 0x10], ebx
movzx ecx, byte [esi + 0x12]
and ecx, 0x7f
shl ecx, 8
or ecx, 1
mov dword [edx + 0x14], ecx
jmp 0x4f82aa
xor eax, eax
mov dword [esp + 4], esi
mov dword [esp + 0x20], ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
mov eax, dword [ebx + 0x8c]
sub eax, dword [ebx + 0x88]
cmp eax, 0x400
je 0x4f7a3d
mov ecx, dword [ebx + 0xb0]
cmp ecx, dword [ebx + 0xb4]
je 0x4f7dfd
mov ecx, dword [ebx + 0xb0]
mov eax, dword [ebx + 0xb4]
cmp ecx, eax
je 0x4f7aaf
lea edx, [eax - 4]
mov esi, dword [eax - 4]
mov dword [esp + 0xc], esi
mov esi, dword [esp + 4]
mov dword [ebx + 0xb4], edx
cmp ecx, edx
je 0x4f7a94
mov esi, dword [eax - 8]
lea eax, [esi + 0xc]
mov dword [esp + 0x10], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4f8653
xor eax, eax
mov dword [esi + 0x1c], eax
mov dword [esi + 0x18], eax
push dword [esp + 0x10]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov esi, dword [esp + 4]
mov eax, dword [esp + 0xc]
test eax, eax
mov edx, dword [esp + 0x18]
je 0x4f7aaf
lock inc dword [eax + 4]
cmp dword [esp + 0x3c], 0
jne 0x4f7ac5
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x14]
inc eax
cmp eax, edx
mov ecx, dword [esp + 0x20]
je 0x4f77a2
jmp 0x4f7a14
mov esi, dword [esp + 0x44]
mov eax, dword [esp + 0x48]
cmp esi, eax
jb 0x4f86fe
mov edx, dword [esp + 0x40]
mov dword [esp + 0x10], esi
sub esi, edx
sar esi, 2
lea ecx, [esi + 1]
cmp ecx, 0x40000000
jae 0x4f8649
mov dword [esp + 0x1c], edx
sub eax, edx
mov edx, eax
sar edx, 1
cmp edx, ecx
cmovbe edx, ecx
cmp eax, 0x7ffffffc
mov eax, 0x3fffffff
cmovae edx, eax
test edx, edx
mov dword [esp + 0x24], edx
je 0x4f8714
cmp edx, 0x40000000
jae 0x4f864e
lea eax, [edx*4]
push eax
call fcn.00510d64
add esp, 4
lea edx, [eax + esi*4]
mov ecx, dword [esp + 0xc]
mov dword [edx], ecx
mov ecx, dword [esp + 0x24]
lea ecx, [eax + ecx*4]
lea eax, [eax + esi*4]
add eax, 4
mov esi, dword [esp + 0x1c]
cmp dword [esp + 0x10], esi
jne 0x4f871b
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], ecx
mov esi, dword [esp + 4]
mov eax, dword [esp + 0x10]
test eax, eax
mov edx, dword [esp + 0x18]
je 0x4f7aaf
push eax
call fcn.0050fc7c
mov edx, dword [esp + 0x1c]
add esp, 4
jmp 0x4f7aaf
mov ecx, esi
call dword [section..00cfg]
lea eax, [esp + 0x2c]
mov ecx, ebx
push eax
call esi
jmp 0x4f78af
mov eax, dword [ebx + 4]
mov eax, dword [eax + 0x20]
mov esi, 0
test eax, eax
jne 0x4f76a3
mov eax, dword [ebx + 0x20]
cmp eax, dword [ebx + 0x24]
je 0x4f8094
cmp byte [eax + 8], 0
jne 0x4f8661
mov eax, dword [eax]
mov dword [esp + 0x14], eax
mov eax, dword [eax]
mov ecx, dword [eax + 4]
xor esi, esi
inc esi
mov eax, esi
mov dword [esp + 0xc], ecx
cmp ecx, 0x501660
jne 0x4f8668
add eax, edi
dec eax
cmp eax, 2
cmovae esi, eax
jmp 0x4f76a3
mov eax, dword [ebx + 4]
mov eax, dword [eax + 0x20]
test eax, eax
jne 0x4f780b
mov eax, dword [ebx + 0x20]
cmp eax, dword [ebx + 0x24]
je 0x4f8094
cmp byte [eax + 8], 0
jne 0x4f868f
mov eax, dword [eax]
mov dword [esp + 0xc], eax
mov eax, dword [eax]
mov edx, dword [eax + 4]
xor edi, edi
inc edi
mov eax, edi
mov dword [esp + 4], edx
cmp edx, 0x501660
jne 0x4f8696
add eax, esi
dec eax
cmp eax, 2
cmovae edi, eax
jmp 0x4f780b
mov eax, dword [ebx + 4]
mov eax, dword [eax + 0x20]
mov dword [esp + 4], 0
test eax, eax
jne 0x4f7834
mov eax, dword [ebx + 0x20]
cmp eax, dword [ebx + 0x24]
je 0x4f8094
cmp byte [eax + 8], 0
jne 0x4f86b5
mov eax, dword [eax]
mov dword [esp + 0x10], eax
mov eax, dword [eax]
mov eax, dword [eax + 4]
xor esi, esi
inc esi
mov dword [esp + 4], esi
mov dword [esp + 0xc], esi
mov dword [esp + 0x18], eax
cmp eax, 0x501660
jne 0x4f86be
mov eax, dword [esp + 0xc]
add eax, edi
dec eax
cmp eax, 2
mov esi, dword [esp + 4]
cmovae esi, eax
mov dword [esp + 4], esi
jmp 0x4f7834
mov ecx, dword [esp + 0x28]
call fcn.004f8930
jmp 0x4f7657
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x20]
add eax, 0x14
mov dword [esp + 4], eax
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov eax, dword [esp + 0x3c]
test eax, eax
jne 0x4f7db7
mov ecx, dword [esp + 0x4c]
test ecx, ecx
jne 0x4f8011
cmp byte [esp + 0x5c], 0
jne 0x4f86f0
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x3c], 0
test esi, esi
je 0x4f7d15
lock dec dword [esi + 4]
je 0x4f878d
mov edi, dword [esp + 0x40]
mov ebx, dword [esp + 0x44]
cmp ebx, edi
je 0x4f7d43
mov esi, dword [ebx - 4]
add ebx, 0xfffffffc
test esi, esi
je 0x4f7d1d
lock dec dword [esi + 4]
jne 0x4f7d1d
mov ecx, esi
call fcn.004045b0
push esi
call fcn.0050fc7c
add esp, 4
jmp 0x4f7d1d
mov dword [esp + 0x44], edi
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x4c], 0
test esi, esi
je 0x4f7d61
lock dec dword [esi + 4]
je 0x4f87a2
mov edi, dword [esp + 0x50]
mov ebx, dword [esp + 0x54]
cmp ebx, edi
je 0x4f7d8f
mov esi, dword [ebx - 4]
add ebx, 0xfffffffc
test esi, esi
je 0x4f7d69
lock dec dword [esi + 4]
jne 0x4f7d69
mov ecx, esi
call fcn.004045b0
push esi
call fcn.0050fc7c
add esp, 4
jmp 0x4f7d69
mov dword [esp + 0x54], edi
mov byte [esp + 0x5c], 0
mov esi, dword [esp + 4]
push esi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x4f78bd
mov ecx, esi
call fcn.004f8930
jmp 0x4f78bd
push dword [eax + 0x20]
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
cmp edi, esi
je 0x4f7ce4
mov ebx, dword [edi]
test ebx, ebx
je 0x4f883f
lock inc dword [ebx + 4]
push dword [ebx + 0x20]
call dword [sym.imp.KERNEL32.dll_SetEvent]
lock dec dword [ebx + 4]
je 0x4f8850
add edi, 4
jmp 0x4f7dc8
xor esi, esi
jmp 0x4f78db
sar eax, 2
cmp eax, dword [ebx + 0x98]
jae 0x4f7a3d
mov dword [esp + 0x68], 0xffffffff
mov ecx, ebx
lea eax, [esp + 0x2c]
push eax
lea eax, [esp + 0x6c]
push eax
call fcn.00407760
mov ecx, esi
mov esi, dword [esp + 0x68]
push esi
call fcn.004f9600
test esi, esi
je 0x4f7e3f
lock dec dword [esi + 4]
je 0x4f882a
mov esi, dword [esp + 4]
mov edx, dword [esp + 0x18]
jmp 0x4f7a3d
sar eax, 2
cmp eax, dword [ebx + 0x98]
jae 0x4f77cb
mov edi, esi
lea esi, [esp + 0x68]
mov dword [esi], 0xffffffff
lea eax, [esp + 0x2c]
mov ecx, ebx
push eax
push esi
call fcn.00407760
mov esi, dword [esi]
mov ecx, edi
push esi
call fcn.004f9600
test esi, esi
je 0x4f77cb
lock dec dword [esi + 4]
jne 0x4f77cb
mov ecx, esi
call fcn.004045b0
push esi
call fcn.0050fc7c
add esp, 4
jmp 0x4f77cb
cmp byte [eax + 0x58], 0
jne 0x4f80d8
mov edi, dword [ebp + 0xc]
lea esi, [edi + 0xc]
push esi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4f87e0
mov ebx, dword [edi + 0x18]
mov edi, dword [edi + 0x1c]
push esi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov eax, ebx
or eax, edi
je 0x4f82a6
mov ecx, dword [0x5f5104]
cmp ecx, 0x50efc0
jne 0x4f7ffa
mov dword [esp + 0x14], ebx
mov dword [esp + 0xc], edi
xor eax, eax
lea edi, [esp + 0x68]
mov dword [edi + 4], eax
mov dword [edi], eax
push edi
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov eax, dword [edi]
mov edi, dword [edi + 4]
cmp eax, 0x7bd05af7
mov ecx, edi
sbb ecx, 0x863
jl 0x4f87ec
mov esi, dword [0x6c02b0]
mov ecx, dword [0x6c02b4]
mov dword [esp + 4], ecx
push ecx
push esi
push edi
push eax
mov dword [esp + 0x28], eax
call fcn.00517110
mov ebx, eax
mov dword [esp + 0x20], edi
mov edi, edx
mov dword [esp + 0x10], esi
mul esi
mov ecx, ebx
imul ecx, dword [esp + 4]
add edx, ecx
imul ecx, edi, 0xf4240
mov dword [esp + 0x1c], ecx
imul edi, esi
add edi, edx
mov esi, dword [esp + 0x18]
sub esi, eax
mov ecx, dword [esp + 0x20]
sbb ecx, edi
mov edx, 0xf4240
mov eax, ebx
mul edx
mov ebx, eax
mov edi, edx
add edi, dword [esp + 0x1c]
mov eax, esi
mov edx, 0xf4240
mul edx
imul ecx, ecx, 0xf4240
add edx, ecx
push dword [esp + 4]
push dword [esp + 0x14]
push edx
push eax
call fcn.00517110
add eax, ebx
adc edx, edi
mov edi, dword [esp + 0xc]
mov ebx, dword [esp + 0x14]
sub eax, ebx
sbb edx, edi
seto bl
mov ecx, edx
sar ecx, 0x1f
test bl, bl
cmovne eax, ecx
add ecx, 0x80000000
test bl, bl
cmove ecx, edx
mov edx, dword [esp + 8]
mov edx, dword [edx + 0x20]
cmp eax, dword [edx + 0x50]
sbb ecx, dword [edx + 0x54]
jl 0x4f82a6
xor esi, esi
cmp byte [edx + 0xc1], 0
jne 0x4f82a8
mov ecx, dword [esp + 8]
mov edx, dword [ebp + 0xc]
call fcn.00407b10
jmp 0x4f82a8
call dword [section..00cfg]
lea esi, [esp + 0x60]
push esi
call ecx
add esp, 4
mov eax, dword [esi]
mov edx, dword [esi + 4]
jmp 0x4f7fab
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 0x60]
mov edx, dword [edx + 0x64]
test eax, eax
je 0x4f8023
lock inc dword [eax + 4]
push edx
push eax
call fcn.00407510
mov ecx, dword [esp + 0x38]
cmp byte [ecx + 0xd0], 0
jne 0x4f888d
mov edi, dword [esp + 0x50]
mov esi, dword [esp + 0x54]
cmp edi, esi
je 0x4f7cf0
mov ebx, dword [edi]
test ebx, ebx
je 0x4f8055
lock inc dword [ebx + 4]
mov ecx, dword [esp + 0x38]
mov eax, dword [ecx + 0x60]
mov edx, dword [ecx + 0x64]
test eax, eax
je 0x4f8067
lock inc dword [eax + 4]
mov ecx, ebx
push edx
push eax
call fcn.00407510
mov ecx, dword [esp + 0x38]
cmp byte [ecx + 0xd0], 0
jne 0x4f889d
test ebx, ebx
je 0x4f808f
lock dec dword [ebx + 4]
je 0x4f88ad
add edi, 4
jmp 0x4f8043
push str.front___called_on_an_empty_vector
push str._empty__
push 0x225
push str....._buildtools_third_partylibc_trunkinclude_vector
push str._s:_d:_assertion__s_failed:__s
call fcn.005495a0
push esi
call fcn.004e3a80
add esp, 4
jmp 0x4f7624
mov ecx, esi
call fcn.004f8930
jmp 0x4f78f8
mov edx, dword [eax + 0xb0]
mov ecx, dword [eax + 0xb4]
sub ecx, edx
mov edx, dword [eax + 0x8c]
sub edx, dword [eax + 0x88]
sar edx, 2
sar ecx, 2
sub edx, ecx
cmp edx, dword [eax + 0x98]
jbe 0x4f794a
jmp 0x4f85f0
mov ecx, dword [esp + 8]
mov edx, dword [ebp + 0xc]
call fcn.00422e60
jmp 0x4f82a6
cmp dword [ebx + 0xac], 0
jle 0x4f7819
jmp 0x4f812c
cmp dword [ebx + 0xa8], 0
jle 0x4f78af
mov al, 1
mov byte [esp + 0x5c], al
mov byte [ebx + 0xc0], al
jmp 0x4f78af
mov ecx, dword [esp + 8]
mov edi, dword [ecx + 0x20]
test ebx, ebx
je 0x4f8151
cmp eax, 1
je 0x4f797a
cmp byte [edi + 0x58], 0
jne 0x4f85d5
mov eax, dword [edi + 0xb0]
mov ecx, dword [edi + 0xb4]
cmp eax, ecx
je 0x4f8279
mov ebx, dword [ecx - 4]
lea esi, [ebx + 0xc]
push esi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4f85ad
mov ecx, dword [0x5f5104]
cmp ecx, 0x50efc0
jne 0x4f83be
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], esi
xor eax, eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x68], eax
lea eax, [esp + 0x68]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov eax, dword [esp + 0x68]
mov esi, dword [esp + 0x6c]
cmp eax, 0x7bd05af7
mov ecx, esi
sbb ecx, 0x863
jl 0x4f8601
mov ecx, dword [0x6c02b0]
mov dword [esp + 0xc], ecx
mov edx, dword [0x6c02b4]
mov dword [esp + 4], edx
push edx
push ecx
push esi
push eax
mov dword [esp + 0x30], eax
call fcn.00517110
mov dword [esp + 0x18], esi
mov ebx, edx
mov ecx, eax
mov esi, dword [esp + 0xc]
mul esi
mov dword [esp + 0x24], eax
mov eax, ecx
imul ecx, dword [esp + 4]
add edx, ecx
imul ecx, ebx, 0xf4240
mov dword [esp + 0x1c], ecx
imul ebx, esi
add ebx, edx
mov ecx, dword [esp + 0x20]
sub ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x18]
sbb esi, ebx
mov edx, 0xf4240
mul edx
mov dword [esp + 0x18], eax
mov ebx, edx
add ebx, dword [esp + 0x1c]
mov eax, ecx
mov ecx, 0xf4240
mul ecx
imul ecx, esi, 0xf4240
add edx, ecx
push dword [esp + 4]
push dword [esp + 0x10]
push edx
push eax
call fcn.00517110
add eax, dword [esp + 0x18]
adc edx, ebx
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov dword [ebx + 0x18], eax
mov dword [ebx + 0x1c], edx
push esi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov eax, dword [edi + 0xb4]
cmp eax, dword [edi + 0xb8]
je 0x4f8449
mov ecx, dword [ebp + 0xc]
mov dword [eax], ecx
add eax, 4
mov dword [edi + 0xb4], eax
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x20]
push dword [eax + 0xbc]
call dword [sym.imp.KERNEL32.dll_WakeAllConditionVariable]
xor esi, esi
xor eax, eax
mov edi, dword [ebp + 8]
mov dword [edi], esi
mov dword [edi + 4], eax
push dword [esp + 0x28]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov eax, dword [esp + 0x3c]
test eax, eax
jne 0x4f8358
mov ecx, dword [esp + 0x4c]
test ecx, ecx
jne 0x4f8501
cmp byte [esp + 0x5c], 0
jne 0x4f85b9
mov ebx, dword [esp + 0x50]
test ebx, ebx
jne 0x4f83db
mov esi, dword [esp + 0x4c]
test esi, esi
jne 0x4f858e
mov ebx, dword [esp + 0x40]
test ebx, ebx
jne 0x4f83fb
mov esi, dword [esp + 0x3c]
test esi, esi
jne 0x4f839f
mov eax, dword [esp + 0x38]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x6c24fc]
bt edx, ecx
jb 0x4f85c7
mov dword [esp + 0x38], 0
mov ebx, dword [esp + 0x2c]
test ebx, ebx
jne 0x4f841b
mov ecx, dword [esp + 0x70]
xor ecx, ebp
call fcn.00512ee3
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 8
push dword [eax + 0x20]
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
cmp ebx, esi
je 0x4f82c8
mov eax, dword [ebx]
test eax, eax
je 0x4f87b7
lock inc dword [eax + 4]
push dword [eax + 0x20]
mov dword [esp + 0xc], eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov eax, dword [esp + 8]
lock dec dword [eax + 4]
je 0x4f87c8
add ebx, 4
jmp 0x4f8369
lock dec dword [esi + 4]
jne 0x4f830f
mov ecx, esi
call fcn.004045b0
push esi
call fcn.0050fc7c
add esp, 4
jmp 0x4f830f
call dword [section..00cfg]
lea eax, [esp + 0x68]
push eax
call ecx
add esp, 4
mov eax, dword [esp + 0x68]
mov edx, dword [esp + 0x6c]
jmp 0x4f8266
mov esi, dword [esp + 0x54]
mov eax, ebx
cmp esi, ebx
jne 0x4f88c2
mov dword [esp + 0x54], ebx
push eax
call fcn.0050fc7c
add esp, 4
jmp 0x4f82eb
mov esi, dword [esp + 0x44]
mov eax, ebx
cmp esi, ebx
jne 0x4f88f8
mov dword [esp + 0x44], ebx
push eax
call fcn.0050fc7c
add esp, 4
jmp 0x4f8303
mov esi, dword [esp + 0x30]
mov eax, ebx
cmp esi, ebx
je 0x4f8437
add esi, 0xfffffff8
mov ecx, esi
call fcn.004f8ee0
cmp esi, ebx
jne 0x4f8425
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x30], ebx
push eax
call fcn.0050fc7c
add esp, 4
jmp 0x4f8341
sub eax, dword [edi + 0xb0]
mov esi, eax
sar esi, 2
lea ecx, [esi + 1]
cmp ecx, 0x40000000
jae 0x4f8649
mov edx, eax
sar edx, 1
cmp edx, ecx
cmovbe edx, ecx
cmp eax, 0x7ffffffc
mov ebx, 0x3fffffff
cmovb ebx, edx
test ebx, ebx
je 0x4f8813
cmp ebx, 0x40000000
jae 0x4f864e
lea eax, [ebx*4]
push eax
call fcn.00510d64
add esp, 4
mov edx, esi
lea esi, [eax + esi*4]
lea ecx, [eax + ebx*4]
mov dword [esp + 4], ecx
mov ecx, dword [ebp + 0xc]
mov dword [esi], ecx
lea ebx, [eax + edx*4]
add ebx, 4
mov eax, dword [edi + 0xb0]
mov ecx, dword [edi + 0xb4]
sub ecx, eax
sub esi, ecx
push ecx
push eax
push esi
call fcn.00518c30
add esp, 0xc
mov eax, dword [edi + 0xb0]
mov dword [edi + 0xb0], esi
mov dword [edi + 0xb4], ebx
mov ecx, dword [esp + 4]
mov dword [edi + 0xb8], ecx
test eax, eax
je 0x4f8293
push eax
call fcn.0050fc7c
add esp, 4
jmp 0x4f8293
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 0x60]
mov edx, dword [edx + 0x64]
test eax, eax
je 0x4f8513
lock inc dword [eax + 4]
push edx
push eax
call fcn.00407510
mov ecx, dword [esp + 0x38]
cmp byte [ecx + 0xd0], 0
jne 0x4f881a
mov ebx, dword [esp + 0x50]
mov esi, dword [esp + 0x54]
cmp ebx, esi
je 0x4f82d4
mov eax, dword [ebx]
test eax, eax
je 0x4f8545
lock inc dword [eax + 4]
mov dword [esp + 8], eax
mov ecx, dword [esp + 0x38]
mov eax, dword [ecx + 0x60]
mov edx, dword [ecx + 0x64]
test eax, eax
je 0x4f855b
lock inc dword [eax + 4]
mov ecx, dword [esp + 8]
push edx
push eax
call fcn.00407510
mov ecx, dword [esp + 0x38]
cmp byte [ecx + 0xd0], 0
jne 0x4f8865
mov eax, dword [esp + 8]
test eax, eax
je 0x4f8589
lock dec dword [eax + 4]
je 0x4f8875
add ebx, 4
jmp 0x4f8533
lock dec dword [esi + 4]
jne 0x4f82f7
mov ecx, esi
call fcn.004045b0
push esi
call fcn.0050fc7c
add esp, 4
jmp 0x4f82f7
mov ecx, esi
call fcn.004f8930
jmp 0x4f8184
mov ecx, dword [esp + 0x38]
call fcn.00596de0
jmp 0x4f82df
push eax
call fcn.004e3ba0
add esp, 4
jmp 0x4f832d
mov eax, dword [edi + 0x8c]
sub eax, dword [edi + 0x88]
sar eax, 2
cmp eax, dword [edi + 0x98]
jbe 0x4f815b
mov ecx, dword [esp + 8]
mov edx, dword [ebp + 0xc]
call fcn.00407b10
jmp 0x4f82a6
mov ecx, 0xf4240
mul ecx
imul ecx, esi, 0xf4240
add ecx, edx
push dword [0x6c02b4]
push dword [0x6c02b0]
push ecx
push eax
call fcn.00517110
jmp 0x4f825e
mov eax, dword [esp + 0xc]
mov dword [esp + 4], eax
jmp 0x4f773f
mov ecx, esi
jmp 0x4f789b
movzx eax, word [eax + 8]
mov word [ebx + 0x3c], ax
jmp 0x4f77eb
call fcn.0052ce30
call fcn.00549f00
mov ecx, dword [esp + 0x10]
call fcn.004f8930
jmp 0x4f7a7e
mov esi, edi
jmp 0x4f76a3
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x10], edx
call dword [section..00cfg]
mov ecx, dword [esp + 0x14]
call dword [esp + 0xc]
mov edx, dword [esp + 0x10]
mov dword [esp + 4], 0
jmp 0x4f7bea
mov edi, esi
jmp 0x4f780b
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 4]
call dword [section..00cfg]
mov ecx, dword [esp + 0xc]
call dword [esp + 4]
mov ecx, dword [esp + 0x14]
jmp 0x4f7c3c
mov dword [esp + 4], edi
jmp 0x4f7834
mov esi, dword [esp + 0x18]
mov ecx, esi
mov dword [esp + 0x14], edx
call dword [section..00cfg]
mov ecx, dword [esp + 0x10]
call esi
xor ecx, ecx
mov edx, dword [esp + 0x14]
mov dword [esp + 0xc], eax
jmp 0x4f7c9b
movzx edx, word [edi + 8]
mov word [ecx + 0x3c], dx
jmp 0x4f79e4
mov ecx, dword [esp + 0x38]
call fcn.00596de0
jmp 0x4f7cfb
mov eax, dword [esp + 0xc]
mov dword [esi], eax
add esi, 4
mov dword [esp + 0x44], esi
mov esi, dword [esp + 4]
jmp 0x4f7aaf
xor eax, eax
jmp 0x4f7b35
mov esi, dword [esp + 0x10]
mov esi, dword [esi - 4]
mov dword [edx - 4], esi
mov esi, dword [esp + 0x10]
mov dword [esi - 4], 0
add esi, 0xfffffffc
add edx, 0xfffffffc
mov dword [esp + 0x10], esi
cmp esi, dword [esp + 0x1c]
jne 0x4f871b
mov esi, dword [esp + 0x40]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x44]
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], ecx
cmp esi, dword [esp + 0x10]
je 0x4f7b65
mov ecx, dword [esi - 4]
add esi, 0xfffffffc
test ecx, ecx
je 0x4f8758
mov eax, ecx
lock dec dword [ecx + 4]
jne 0x4f8758
mov ecx, eax
mov dword [esp + 0xc], eax
call fcn.004045b0
push dword [esp + 0xc]
call fcn.0050fc7c
add esp, 4
jmp 0x4f8758
mov ecx, esi
call fcn.004045b0
push esi
call fcn.0050fc7c
add esp, 4
jmp 0x4f7d15
mov ecx, esi
call fcn.004045b0
push esi
call fcn.0050fc7c
add esp, 4
jmp 0x4f7d61
push dword [0x20]
call dword [sym.imp.KERNEL32.dll_SetEvent]
jmp 0x4f839a
mov ecx, eax
call fcn.004045b0
push dword [esp + 8]
call fcn.0050fc7c
add esp, 4
jmp 0x4f839a
mov ecx, esi
call fcn.004f8930
jmp 0x4f7ec4
mov ecx, 0xf4240
mul ecx
imul ecx, edi, 0xf4240
add ecx, edx
push dword [0x6c02b4]
push dword [0x6c02b0]
push ecx
push eax
call fcn.00517110
jmp 0x4f7fa3
xor eax, eax
jmp 0x4f849d
add ecx, 0xd4
call fcn.004fd7d0
jmp 0x4f852b
mov ecx, esi
call fcn.004045b0
push esi
call fcn.0050fc7c
add esp, 4
jmp 0x4f7e3f
push dword [0x20]
call dword [sym.imp.KERNEL32.dll_SetEvent]
jmp 0x4f7df1
mov ecx, ebx
call fcn.004045b0
push ebx
call fcn.0050fc7c
add esp, 4
jmp 0x4f7df1
add ecx, 0xd4
call fcn.004fd7d0
jmp 0x4f8577
mov ecx, eax
call fcn.004045b0
push dword [esp + 8]
call fcn.0050fc7c
add esp, 4
jmp 0x4f8589
add ecx, 0xd4
call fcn.004fd7d0
jmp 0x4f803b
add ecx, 0xd4
call fcn.004fd7d0
jmp 0x4f8081
mov ecx, ebx
call fcn.004045b0
push ebx
call fcn.0050fc7c
add esp, 4
jmp 0x4f808f
mov eax, dword [esi - 4]
add esi, 0xfffffffc
test eax, eax
je 0x4f88d2
lock dec dword [eax + 4]
je 0x4f88df
cmp esi, ebx
jne 0x4f88c2
mov eax, dword [esp + 0x50]
jmp 0x4f83e9
mov ecx, eax
mov dword [esp + 8], eax
call fcn.004045b0
push dword [esp + 8]
call fcn.0050fc7c
add esp, 4
jmp 0x4f88d2
mov eax, dword [esi - 4]
add esi, 0xfffffffc
test eax, eax
je 0x4f8908
lock dec dword [eax + 4]
je 0x4f8915
cmp esi, ebx
jne 0x4f88f8
mov eax, dword [esp + 0x40]
jmp 0x4f8409
mov ecx, eax
mov dword [esp + 8], eax
call fcn.004045b0
push dword [esp + 8]
call fcn.0050fc7c
add esp, 4
jmp 0x4f8908