Function at 0x4fb960
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, 0xfffffff0
sub esp, 0x140
mov esi, esp
mov ebx, ecx
mov eax, dword [0x644040]
xor eax, ebp
mov dword [esi + 0x138], eax
mov dword [esi + 0xa0], 0xa
mov al, byte [0x649446]
test al, al
jne 0x4ff4cd
mov dword [esi + 0xa0], 0xa
mov al, byte [0x649446]
test al, al
jne 0x4ff4fd
mov edi, dword [ebx + 0x2c]
test edi, edi
mov dword [esi + 0x28], ebx
jne 0x4ff42f
mov eax, dword [ebx]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x63e64c]
mov ecx, ebx
call edi
mov edi, eax
mov eax, dword [eax]
mov ebx, dword [eax + 8]
mov ecx, ebx
call dword [0x63e64c]
mov ecx, edi
mov edi, dword [esi + 0x28]
push edi
call ebx
mov eax, dword [0x655070]
test eax, eax
je 0x4fba7b
mov eax, dword [edi + 0x24]
mov eax, dword [eax + 8]
mov eax, dword [eax]
test al, 1
mov ebx, edi
jne 0x4fba05
cmp dword [ebx + 0x30], 0
je 0x4fba6b
mov ecx, dword [0x65506c]
test ecx, ecx
je 0x4ff28f
lea edi, [esi + 0xe0]
push 2
push edi
call fcn.00591eb0
mov eax, dword [edi]
mov dword [esi + 0x48], eax
mov al, 1
mov dword [esi + 0x44], eax
mov ecx, ebx
shr ecx, 0xe
xor eax, eax
inc eax
shl eax, cl
mov dword [esi + 0x60], eax
mov eax, dword [0x64783c]
mov ecx, dword fs:[0x2c]
mov eax, dword [ecx + eax*4]
mov ecx, ebx
shr ecx, 0x13
mov dword [esi + 0x5c], ecx
mov ecx, ebx
shr ecx, 0x15
mov dword [esi + 0x58], ecx
lea eax, [eax + 0xb4]
mov dword [esi + 0x4c], eax
lea eax, [ebx + 0xc]
mov dword [esi + 0x64], eax
jmp 0x4fc328
mov dword [esi + 0x48], 0
mov dword [esi + 0x44], 0
jmp 0x4fba2b
mov dword [esi + 0x48], 0
mov dword [esi + 0x44], 0
mov ebx, edi
jmp 0x4fba2b
call fcn.005000c0
jmp 0x4fc7e1
mov ecx, dword [esi + 0xec]
mov eax, edi
cmp ecx, edi
je 0x4fbb07
mov edx, ecx
add ecx, 0xfffffff8
je 0x4fe669
mov ebx, dword [ecx]
test ebx, ebx
mov dword [esi + 0xc], ecx
jne 0x4fdeab
mov dword [ecx], 0
test ebx, ebx
jne 0x4fded5
mov eax, dword [edx - 4]
mov ecx, eax
shr ecx, 0xe
mov ebx, edx
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x4fefb4
mov dword [ebx - 4], 0
mov ecx, dword [ebx - 8]
test ecx, ecx
jne 0x4fee99
mov ecx, dword [esi + 0xc]
cmp ecx, edi
jne 0x4fbaa3
mov eax, dword [esi + 0xe8]
mov dword [esi + 0xec], edi
push eax
call fcn.00564ea0
add esp, 4
mov ebx, dword [esi + 0x28]
jmp 0x4fbe4a
mov dword [edi + 8], edx
mov ecx, dword [edx + 8]
jmp 0x4fbb2f
mov edi, dword [eax + 4]
mov dword [edx], edi
test edi, edi
jne 0x4fbb1e
mov dword [eax + 8], ecx
mov ecx, dword [edx + 8]
xor ebx, ebx
cmp dword [ecx], edx
setne bl
mov dword [ecx + ebx*4], eax
mov dword [eax + 4], edx
mov dword [edx + 8], eax
mov ecx, dword [eax + 8]
jmp 0x4fbc84
mov dword [esi + 0xc0], 0x1a8
mov al, byte [0x6495e4]
test al, al
je 0x4fbbb3
jmp 0x4ff477
shr ebx, 1
shl ebx, 2
xor edi, edi
mov dword [esi + 0xc], eax
mov ecx, dword [eax + edi]
test ecx, ecx
je 0x4fec72
xor eax, eax
inc eax
lock xadd dword [ecx + 4], eax
cmp eax, 0x7fffffff
je 0x4febd3
mov dword [esi + 0xc0], 0x9c
mov al, byte [0x6494d8]
test al, al
mov dword [esi + 0x10], ecx
jne 0x4ff22a
mov eax, dword [ecx + 0x48]
lea edx, [eax + 0x10]
cmp byte [eax + 0x14], 0
je 0x4fbb4d
lea eax, [ecx + 4]
mov dword [esi + 8], eax
push dword [edx]
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov eax, dword [esi + 8]
lock dec dword [eax]
je 0x4fee28
add edi, 4
cmp ebx, edi
mov eax, dword [esi + 0xc]
jne 0x4fbb6f
mov ebx, dword [esi + 0x104]
jmp 0x4fbdcc
lea ecx, [esi + 0x104]
call fcn.005311c0
jmp 0x4fbdd4
xor eax, eax
mov dword [esi + 0xd4], eax
mov dword [esi + 0xd0], eax
lea eax, [esi + 0xd0]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov edx, dword [esi + 0xd0]
mov ecx, dword [esi + 0xd4]
mov eax, 0x7bd05af7
cmp edx, eax
mov dword [esi + 0x2c], ecx
mov eax, ecx
mov ecx, 0x863
sbb eax, ecx
jge 0x4ff2f4
mov eax, edx
mov ecx, 0xf4240
mul ecx
imul ecx, dword [esi + 0x2c], 0xf4240
add ecx, edx
push dword [0x6496bc]
push dword [0x6496b8]
push ecx
push eax
call fcn.00588630
jmp 0x4fbd3e
mov ecx, edi
mov ebx, edx
call dword [0x63e64c]
mov ecx, ebx
mov ebx, dword [esi + 0x28]
push ebx
lea eax, [esi + 0x128]
push eax
call edi
jmp 0x4fbe6a
cmp dword [edx], eax
je 0x4fbb26
mov eax, edx
mov byte [eax + 0xc], 1
mov byte [ecx + 0xc], 0
mov eax, dword [ecx + 4]
mov edx, dword [eax]
mov dword [ecx + 4], edx
test edx, edx
je 0x4fbc9b
mov dword [edx + 8], ecx
mov edx, dword [ecx + 8]
mov dword [eax + 8], edx
xor ebx, ebx
cmp dword [edx], ecx
setne bl
mov dword [edx + ebx*4], eax
mov dword [eax], ecx
mov dword [ecx + 8], eax
mov edi, dword [esi + 0x14]
inc dword [edi + 0xf4]
xor eax, eax
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
mov ebx, dword [esi + 0x28]
jb 0x4fec23
mov eax, dword [edi + 0xec]
mov edi, ebx
cmp dword [eax + 0x10], ebx
mov ebx, dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov eax, dword [esi + 0xc]
jne 0x4fbcf9
mov ecx, dword [esi + 0x20]
cmp ecx, dword [esi + 0x2c]
je 0x4fbd4c
mov edi, dword [ecx + 0x10]
lea eax, [edi + 0xc]
mov dword [esi + 0x14], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4fe42f
mov ecx, dword [0x646080]
cmp ecx, 0x522100
je 0x4fbbf2
call dword [0x63e64c]
lea eax, [esi + 0xd0]
push eax
call ecx
add esp, 4
mov eax, dword [esi + 0xd0]
mov edx, dword [esi + 0xd4]
mov dword [edi + 0x18], eax
mov dword [edi + 0x1c], edx
push dword [esi + 0x14]
call ebx
mov eax, dword [esi + 0xc]
mov eax, dword [eax - 0x10]
push dword [eax + 0xbc]
call dword [sym.imp.KERNEL32.dll_WakeAllConditionVariable]
xor edi, edi
xor eax, eax
mov edx, dword [esi + 8]
mov dword [esi + 0x128], edi
mov dword [esi + 0x12c], eax
mov eax, edx
shr eax, 0xe
mov ecx, edx
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x64c804]
bt ecx, eax
jb 0x4fe850
mov eax, dword [esi + 0x1c]
mov eax, dword [eax*4 + 0x64c804]
mov ecx, dword [esi + 0x18]
bt eax, ecx
mov edi, dword [esi + 0x10]
jb 0x4fe81f
push edi
call ebx
mov dword [esi + 0xe0], 0x622a9c
mov ebx, dword [esi + 0x104]
lea eax, [esi + 0x108]
test bl, 1
jne 0x4fe797
cmp ebx, 2
jae 0x4fbb65
test ebx, ebx
jne 0x4fbbe2
mov dword [esi + 0xe0], 0x6229e8
mov edx, dword [esi + 0xf4]
mov eax, edx
lea edi, [esi + 0xf8]
and eax, 1
jne 0x4fe43d
mov ebx, edx
shr ebx, 1
mov cl, 1
cmp edx, 2
jae 0x4fdd7d
lea edx, [esi + 0xf8]
test eax, eax
jne 0x4fe7a2
test cl, cl
je 0x4fdc36
test eax, eax
jne 0x4fe82f
mov dword [esi + 0xf4], 0
cmp byte [esi + 0x100], 0
mov ebx, dword [esi + 0x28]
jne 0x4fe125
mov edi, dword [esi + 0xe8]
test edi, edi
jne 0x4fba97
mov eax, dword [esi + 0xe4]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x4fe842
mov eax, dword [esi + 0x128]
test eax, eax
je 0x4fd68f
mov dword [esi + 0xc8], eax
lea eax, [esi + 0xc8]
push eax
call fcn.004ef3c0
add esp, 4
mov edi, esp
mov ecx, dword [ebx + 0x24]
sub esp, 0xc
mov eax, esp
mov edx, dword [esi + 0x128]
mov dword [eax + 4], edx
mov dword [esi + 0x128], 0
mov edx, dword [esi + 0x12c]
mov dword [eax + 8], edx
mov dword [esi + 0x12c], 0
lea edx, [esi + 0xe0]
mov dword [eax], edx
call fcn.00500680
mov esp, edi
mov eax, dword [esi + 0x128]
test eax, eax
jne 0x4fe7c0
mov dword [esi + 0xd0], eax
mov dword [esi + 0x128], 0
test eax, eax
jne 0x4fe718
mov eax, dword [esi + 0xe0]
mov dword [esi + 0xe0], 0
mov ecx, dword [esi + 0x128]
mov dword [esi + 0x128], eax
test ecx, ecx
jne 0x4fe6d6
mov edi, dword [esi + 0xe4]
mov dword [esi + 0xe4], 0
mov eax, dword [esi + 0x12c]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x4fe730
mov dword [esi + 0x12c], edi
mov edi, dword [esi + 0xe0]
test edi, edi
jne 0x4fd861
mov dword [esi + 0xe0], 0
test edi, edi
jne 0x4fd88c
mov eax, dword [esi + 0xe4]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x4fe73e
mov dword [esi + 0xe4], 0
mov ecx, dword [esi + 0xe0]
test ecx, ecx
mov ebx, dword [esi + 0x28]
jne 0x4fe6ec
mov eax, dword [esi + 0x128]
mov dword [esi + 0xd0], eax
lea eax, [esi + 0xd0]
push eax
call fcn.004ef3c0
add esp, 4
cmp byte [esi + 0x44], 0
je 0x4fc0c8
cmp byte [esi + 0xb8], 0
je 0x4fc09f
cmp byte [esi + 0xa0], 0
je 0x4fc09f
mov eax, dword [esi + 0x4c]
mov ecx, dword [eax]
test ecx, ecx
je 0x4fc09f
movq xmm0, qword [ecx + 8]
pshufd xmm0, xmm0, 0x55
movd eax, xmm0
test eax, eax
mov dword [esi + 0xc], ecx
js 0x4fe7ad
cmp dword [ecx + 0x1c], 1
jne 0x4fe5f0
cmp dword [ecx + 0x10], 0
jne 0x4feaee
mov eax, dword [ecx + 8]
mov edx, dword [ecx + 0xc]
nop word cs:[eax + eax]
mov ebx, eax
xor ecx, ecx
dec ecx
and ebx, ecx
mov ecx, edx
mov edi, 0xbfffffff
and ecx, edi
mov edi, dword [esi + 0xc]
lock cmpxchg8b qword [edi + 8]
mov ecx, dword [esi + 0xc]
jne 0x4fc030
mov edi, dword [esi + 0xa8]
mov ebx, dword [esi + 0xac]
cmp dword [ecx + 0x10], 0
jne 0x4feb75
movq xmm0, qword [ecx + 8]
pshufd xmm0, xmm0, 0x55
movd eax, xmm0
mov edx, ecx
mov ecx, 0x40000000
and eax, ecx
mov ecx, 0xffffff
and ebx, ecx
or ebx, eax
movd xmm0, ebx
xor eax, eax
dec eax
and edi, eax
movd xmm1, edi
punpckldq xmm1, xmm0
movq qword [edx + 8], xmm1
dec dword [edx + 0x1c]
mov ebx, dword [esi + 0x28]
mov dword [esi + 0xac], 0
mov dword [esi + 0xa8], 0
mov byte [esi + 0xb0], 0
mov byte [esi + 0xa0], 0
mov byte [esi + 0xb8], 1
mov dword [esi + 0xe0], 0xffffffff
mov dword [esi + 0xe4], 0xffffffff
mov eax, dword [ebx]
mov edi, dword [eax + 0xc]
cmp edi, 0x5000a0
jne 0x4fd094
mov edi, dword [ebx + 0x48]
mov dword [esi + 0xc], esp
push eax
sub esp, 0xc
mov eax, esp
mov ecx, dword [esi + 0x128]
mov dword [eax + 4], ecx
mov dword [esi + 0x128], 0
mov ecx, dword [esi + 0x12c]
mov dword [eax + 8], ecx
mov dword [esi + 0x12c], 0
lea ecx, [esi + 0xe0]
mov dword [eax], ecx
mov dword [eax + 0xc], ebx
mov eax, dword [edi]
mov ebx, dword [eax + 0x10]
cmp ebx, fcn.00502ec0
je 0x4fc145
mov ecx, ebx
call dword [0x63e64c]
mov ecx, edi
call ebx
jmp 0x4fc14c
mov ecx, edi
call fcn.00502ec0
mov esp, dword [esi + 0xc]
mov ecx, dword [esi + 0x28]
mov eax, dword [ecx + 0x24]
mov eax, dword [eax + 8]
mov eax, dword [eax]
test al, 1
jne 0x4fda63
mov edi, dword [ecx + 0x30]
cmp dword [ecx + 0x34], edi
jne 0x4fe1f6
cmp dword [esi + 0x128], 0
jne 0x4fe682
mov eax, dword [esi + 0xe0]
mov edi, dword [esi + 0xe4]
mov dword [esi + 0xe0], 0
mov dword [esi + 0x128], eax
mov dword [esi + 0xe4], 0
mov eax, dword [esi + 0x12c]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x4fe904
mov dword [esi + 0x12c], edi
mov dword [esi + 0xe0], 0
mov eax, dword [esi + 0xe4]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x4fe74c
mov dword [esi + 0xe4], 0
mov ecx, dword [esi + 0xe0]
test ecx, ecx
mov ebx, dword [esi + 0x28]
jne 0x4fe702
mov eax, dword [esi + 0x128]
test eax, eax
jne 0x4fbe78
mov dword [esi + 0x128], 0
mov eax, dword [esi + 0x12c]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x4fea72
mov cl, 1
cmp byte [esi + 0xb8], 0
je 0x4fc320
cmp byte [esi + 0xa0], 0
je 0x4fc320
mov eax, dword [esi + 0x4c]
mov edi, dword [eax]
test edi, edi
je 0x4fc320
movq xmm0, qword [edi + 8]
pshufd xmm0, xmm0, 0x55
movd eax, xmm0
test eax, eax
js 0x4fe8c7
cmp dword [edi + 0x1c], 1
mov dword [esi + 8], ecx
mov dword [esi + 0xc], edi
jne 0x4fe62d
cmp dword [edi + 0x10], 0
jne 0x4feb41
mov eax, dword [edi + 8]
mov edx, dword [edi + 0xc]
nop word cs:[eax + eax]
mov ebx, eax
xor ecx, ecx
dec ecx
and ebx, ecx
mov ecx, edx
mov edi, 0xbfffffff
and ecx, edi
mov edi, dword [esi + 0xc]
lock cmpxchg8b qword [edi + 8]
jne 0x4fc2b0
mov edx, dword [esi + 0xa8]
mov ebx, dword [esi + 0xac]
mov edi, dword [esi + 0xc]
cmp dword [edi + 0x10], 0
jne 0x4fec31
movq xmm0, qword [edi + 8]
pshufd xmm0, xmm0, 0x55
movd eax, xmm0
mov ecx, 0x40000000
and eax, ecx
mov ecx, 0xffffff
and ebx, ecx
or ebx, eax
movd xmm0, ebx
xor eax, eax
dec eax
and edx, eax
movd xmm1, edx
punpckldq xmm1, xmm0
movq qword [edi + 8], xmm1
dec dword [edi + 0x1c]
mov ebx, dword [esi + 0x28]
mov ecx, dword [esi + 8]
test cl, cl
je 0x4fdaa2
mov al, byte [ebx + 0x20]
test al, al
jne 0x4fdaa2
mov eax, dword [ebx]
mov edi, dword [eax + 0x10]
cmp edi, 0x5000b0
jne 0x4fd0a7
mov al, byte [ebx + 0x4c]
test al, al
jne 0x4fdaa2
mov edi, dword [ebx + 0x24]
lea ebx, [edi + 0x2c]
push ebx
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4fdb75
mov eax, dword [edi + 0x30]
test eax, eax
jne 0x4fda7c
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ebx, dword [esi + 0x28]
pcmpeqd xmm0, xmm0
movdqa xmmword [esi + 0xa0], xmm0
movdqa xmmword [esi + 0xb0], xmm0
xor eax, eax
mov byte [esi + 0xa0], al
mov byte [esi + 0xb8], al
mov dword [esi + 0xd0], 0xa
mov al, byte [0x649446]
test al, al
jne 0x4feaba
mov ecx, dword [0x645d64]
test ecx, ecx
jne 0x4fe678
mov eax, dword [ebx]
mov edi, dword [eax + 0xc]
cmp edi, 0x5000a0
jne 0x4fd0c9
mov ecx, dword [ebx + 0x48]
mov eax, dword [ecx]
cmp dword [eax + 0x18], 0x5000c0
jne 0x4fba8d
xor edx, edx
dec edx
mov dword [esi + 0xc8], edx
mov dword [esi + 0xcc], edx
mov eax, dword [ecx]
mov ebx, ecx
mov edi, dword [eax + 0x14]
cmp edi, 0x564890
jne 0x4fd0ef
cmp byte [ebx - 8], 0
mov eax, edx
mov ecx, 0x7fffffff
jne 0x4fdb8d
mov dword [esi + 0xc8], eax
mov dword [esi + 0xcc], ecx
mov ecx, dword [fcn.005515a0]
cmp ecx, 0x522100
mov dword [esi + 0x10], ebx
jne 0x4fd107
xor eax, eax
mov dword [esi + 0xe4], eax
mov dword [esi + 0xe0], eax
lea eax, [esi + 0xe0]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov edi, dword [esi + 0xe0]
mov ebx, dword [esi + 0xe4]
mov eax, 0x7bd05af7
cmp edi, eax
mov eax, ebx
mov ecx, 0x863
sbb eax, ecx
jge 0x4fefd0
mov eax, edi
mov ecx, 0xf4240
mul ecx
imul ecx, ebx, 0xf4240
add ecx, edx
push dword [0x6496bc]
push dword [0x6496b8]
push ecx
push eax
call fcn.00588630
mov dword [esi + 0xc0], eax
mov dword [esi + 0xc4], edx
mov ebx, dword [esi + 0x10]
mov eax, dword [ebx]
cmp dword [eax + 0x28], 0x5e2b60
mov eax, dword [esi + 0xc0]
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0xc4]
mov dword [esi + 8], eax
mov eax, dword [0x64783c]
mov ecx, dword fs:[0x2c]
mov ecx, dword [ecx + eax*4]
mov eax, dword [0x6586d8]
mov ecx, dword [ecx + 4]
cmp eax, ecx
jg 0x4fde54
cmp byte [0x6586d4], 0
je 0x4fe7f0
mov eax, dword [0x6586e8]
mov ecx, dword [0x64783c]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x4fde18
mov ecx, dword [ebx + 8]
mov eax, dword [ebx + 0xc]
mov edx, ecx
or edx, eax
jne 0x4fc529
mov eax, dword [0x6586e4]
mov ecx, dword [0x6586e0]
mov edx, 0x3938700
add ecx, edx
mov edx, 0
adc eax, edx
mov edx, 0x7fffffff
cmovo eax, edx
mov ebx, 0xffffffff
cmovo ecx, ebx
mov edx, dword [esi + 0xc]
cmp ecx, edx
mov ecx, dword [esi + 8]
sbb eax, ecx
mov edi, 0x3938700
mov eax, 0xf4240
cmovl edi, eax
add edi, edx
mov eax, ebx
mov ebx, ecx
mov ecx, 0
adc ebx, ecx
cmovo edi, eax
mov eax, 0x7fffffff
cmovo ebx, eax
push ecx
mov eax, 0xf4240
push eax
push ebx
push edi
call fcn.00589200
mov dword [esi + 0x18], edx
mov ecx, edi
neg ecx
mov ecx, 0
sbb ecx, ebx
mov edx, 0
mov ecx, 0xf4240
cmovl edx, ecx
sub edx, eax
mov ecx, 0
sbb ecx, dword [esi + 0x18]
or eax, dword [esi + 0x18]
mov eax, 0
cmove ecx, eax
cmove edx, eax
add edx, edi
adc ecx, ebx
seto bl
mov eax, ecx
sar eax, 0x1f
test bl, bl
cmovne edx, eax
mov edi, 0x80000000
xor eax, edi
test bl, bl
cmove eax, ecx
sub edx, dword [esi + 0xc]
sbb eax, dword [esi + 8]
seto cl
mov ebx, eax
sar ebx, 0x1f
test cl, cl
cmovne edx, ebx
xor ebx, edi
test cl, cl
cmove ebx, eax
mov edi, dword [esi + 0xc8]
mov ecx, dword [esi + 0xcc]
cmp edi, edx
mov eax, ecx
sbb eax, ebx
mov dword [esi + 0x2c], ebx
cmovge ecx, ebx
mov dword [esi + 0x20], edx
cmovge edi, edx
mov eax, edi
neg eax
mov eax, 0
mov dword [esi + 0xc], ecx
sbb eax, ecx
mov edx, dword [esi + 0x10]
lea eax, [edx + 0x10]
mov dword [esi + 0x18], eax
mov ebx, dword [esi + 0x28]
jge 0x4fdcb3
pcmpeqd xmm0, xmm0
movdqa xmmword [esi + 0xe0], xmm0
xor ecx, ecx
dec ecx
mov dword [esi + 0x110], ecx
mov dword [esi + 0x114], ecx
movdqa xmmword [esi + 0x100], xmm0
movdqa xmmword [esi + 0xf0], xmm0
xor eax, eax
mov byte [esi + 0xe0], al
mov byte [esi + 0x110], al
cmp byte [edx + 0x14], al
je 0x4fd148
mov edx, edi
xor edx, ecx
mov ecx, dword [esi + 0xc]
mov eax, 0x7fffffff
xor ecx, eax
mov dword [esi + 0x30], edx
mov eax, edx
mov dword [esi + 0x24], ecx
or eax, ecx
je 0x4fd136
mov ecx, dword [0x646080]
cmp ecx, 0x522100
mov dword [esi + 8], edi
jne 0x4fc705
xor eax, eax
mov dword [esi + 0xd4], eax
mov dword [esi + 0xd0], eax
lea eax, [esi + 0xd0]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov edi, dword [esi + 0xd0]
mov ebx, dword [esi + 0xd4]
mov eax, 0x7bd05af7
cmp edi, eax
mov eax, ebx
mov ecx, 0x863
sbb eax, ecx
jge 0x4ff1a8
mov eax, edi
mov ecx, 0xf4240
mul ecx
imul ecx, ebx, 0xf4240
add ecx, edx
push dword [0x6496bc]
push dword [0x6496b8]
push ecx
push eax
call fcn.00588630
mov ebx, edx
mov edi, dword [esi + 8]
jmp 0x4fc723
call dword [0x63e64c]
lea eax, [esi + 0x128]
push eax
call ecx
add esp, 4
mov eax, dword [esi + 0x128]
mov ebx, dword [esi + 0x12c]
add eax, edi
adc ebx, dword [esi + 0xc]
seto cl
mov edx, ebx
sar edx, 0x1f
test cl, cl
lea edi, [edx - 0x80000000]
cmove edx, eax
mov dword [esi + 0x1c], edx
test cl, cl
cmove edi, ebx
mov dword [esi + 0x14], edi
mov edi, dword [esi + 8]
mov ecx, dword [esi + 0xc]
mov eax, edi
xor edx, edx
dec edx
xor eax, edx
mov ebx, ecx
mov edx, edi
mov edi, 0x7fffffff
xor ecx, edi
or ecx, eax
mov eax, 0xffffffff
je 0x4fc7a6
push 0
mov eax, 0x3e8
push eax
mov dword [esi + 0xc], ebx
push ebx
mov dword [esi + 8], edx
push edx
call fcn.005848d0
mov ecx, eax
mov edi, edx
mov edx, 0x3e8
mul edx
imul ebx, edi, 0x3e8
add ebx, edx
cmp eax, dword [esi + 8]
sbb ebx, dword [esi + 0xc]
adc ecx, 0
adc edi, 0
neg edi
mov eax, 0
sbb eax, eax
or eax, ecx
push eax
mov eax, dword [esi + 0x18]
push dword [eax]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
jne 0x4fd313
mov cl, 1
mov eax, dword [esi + 0x10]
cmp byte [eax + 0x14], 0
je 0x4fd78c
mov ebx, dword [esi + 0x28]
cmp byte [esi + 0x110], 0
jne 0x4fd3ae
test cl, cl
je 0x4fdcc3
mov dword [esi + 0x128], 0xa
mov al, byte [0x649446]
test al, al
jne 0x4febd6
mov al, byte [ebx + 0x20]
test al, al
jne 0x4fd7f2
mov eax, dword [ebx]
mov edi, dword [eax + 0x10]
cmp edi, 0x5000b0
jne 0x4fd0b8
mov al, byte [ebx + 0x4c]
test al, al
jne 0x4fd7f2
mov edi, dword [ebx + 0x24]
lea ebx, [edi + 0x2c]
push ebx
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4fdb81
mov eax, dword [edi + 0x30]
test eax, eax
jne 0x4fe159
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
cmp byte [esi + 0x44], 0
mov ebx, dword [esi + 0x28]
je 0x4fc87d
cmp byte [esi + 0xb8], 0
jne 0x4fe75a
xor eax, eax
mov dword [esi + 0xac], eax
mov dword [esi + 0xa8], eax
mov byte [esi + 0xb0], al
mov byte [esi + 0xa0], al
mov byte [esi + 0xb8], 1
mov eax, dword [ebx + 0x24]
mov eax, dword [eax + 8]
mov eax, dword [eax]
test al, 1
jne 0x4fdb6b
mov edi, dword [ebx + 0x30]
cmp dword [ebx + 0x34], edi
jne 0x4fe7fc
xor eax, eax
dec eax
mov dword [esi + 0x128], eax
mov dword [esi + 0x12c], eax
mov eax, dword [ebx]
mov edi, dword [eax + 0xc]
cmp edi, 0x5000a0
jne 0x4fd0dc
mov edx, dword [ebx + 0x48]
mov eax, dword [edx]
mov edi, dword [eax + 0xc]
cmp edi, 0x55ddf0
jne 0x4fbc5c
xor eax, eax
dec eax
lea ecx, [esi + 0xf8]
mov dword [ecx + 0x14], eax
mov dword [ecx + 0x10], eax
pcmpeqd xmm0, xmm0
movdqu xmmword [ecx], xmm0
mov edi, dword [edx - 0x10]
mov eax, edi
shr eax, 0xe
mov ecx, edi
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x64c804]
bt ecx, eax
mov dword [esi + 0xc], edx
jb 0x4fe87e
mov eax, edi
shr eax, 0x15
mov byte [eax + 0x654804], 1
mov dword [esi + 0xe4], edi
mov byte [esi + 0x100], 0
pxor xmm0, xmm0
lea eax, [esi + 0xf8]
movdqu xmmword [eax - 0x10], xmm0
mov dword [esi + 0xe0], 0x622a9c
mov dword [esi + 0x104], 0
mov edi, dword [edx - 0x10]
add edi, 0x50
push edi
mov ebx, edx
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4fd780
mov edx, ebx
mov ebx, dword [ebx - 0x10]
add ebx, 0x50
mov ecx, ebx
shr ecx, 0xe
mov eax, ebx
shr eax, 0x13
mov dword [esi + 0x1c], eax
mov eax, dword [eax*4 + 0x64c804]
mov dword [esi + 0x18], ecx
bt eax, ecx
jb 0x4fe88f
mov eax, ebx
shr eax, 0x15
mov byte [eax + 0x654804], 1
mov dword [esi + 0x3c], ebx
test ebx, ebx
je 0x4fe791
mov dword [esi + 0x10], edi
mov edi, dword [edx - 0x10]
mov eax, dword [edi]
mov ebx, dword [eax + 0x28]
cmp ebx, fcn.00531240
jne 0x4fd11e
cmp dword [edi + 0xa4], 0
je 0x4fcbf3
cmp byte [edi + 0xe4], 0
jne 0x4fcbf3
mov ebx, dword [edi + 0x68]
mov eax, dword [edi + 0xb0]
mov dword [esi + 0x2c], eax
mov dword [esi + 0x14], 0
mov ecx, 0
test ebx, ebx
mov dword [esi + 8], edi
jne 0x4fd7f9
mov edx, dword [edi + 0x70]
mov eax, dword [edi + 0xa8]
mov dword [esi + 0x30], eax
mov eax, dword [edi + 0xb0]
mov dword [esi + 0x20], eax
mov ebx, dword [edi + 0xac]
add edx, dword [edi + 0x6c]
je 0x4fca86
mov eax, dword [edi + 8]
mov eax, dword [eax + 0x10]
cmp eax, 1
ja 0x4fca86
mov dword [esi + 0x34], ecx
mov dword [esi + 0x14], edx
mov eax, dword [edi + 0x5c]
cmp eax, dword [edi + 0x60]
je 0x4fe810
mov dword [esi + 0x24], ebx
mov cl, byte [eax + 8]
dec cl
cmp cl, 1
ja 0x4fe876
mov eax, dword [eax]
mov dword [esi + 0x38], eax
mov eax, dword [eax]
mov ecx, dword [eax + 4]
xor ebx, ebx
inc ebx
cmp ecx, 0x5318e0
mov edi, dword [esi + 8]
je 0x4fca6e
cmp ecx, 0x564cb0
je 0x4fd613
mov edi, ecx
call dword [0x63e64c]
mov ecx, dword [esi + 0x38]
call edi
mov edi, dword [esi + 8]
mov ebx, eax
mov eax, dword [esi + 0x14]
lea edx, [eax + ebx]
add eax, ebx
dec eax
cmp eax, 1
adc edx, 0xffffffff
mov dword [esi + 0x14], edx
mov ebx, dword [esi + 0x24]
mov ecx, dword [esi + 0x34]
add ecx, dword [esi + 0x2c]
mov eax, dword [esi + 0x20]
sub ebx, eax
mov edx, dword [esi + 0x30]
cmp edx, ecx
cmovb ecx, edx
cmp ecx, eax
cmovbe ecx, eax
add ebx, dword [esi + 0x14]
add ebx, ecx
mov eax, dword [edi + 0xa4]
cmp eax, ebx
cmovb ebx, eax
mov ecx, dword [edi + 0xd0]
mov eax, 0x100
cmp ebx, eax
cmovae ebx, eax
sub ecx, dword [edi + 0xcc]
sar ecx, 2
sub ecx, dword [edi + 0xf4]
cmp ebx, ecx
ja 0x4fd1b5
cmp ebx, ecx
jne 0x4fcaf6
mov eax, dword [edi + 0xd0]
sub eax, dword [edi + 0xcc]
cmp eax, 0x400
je 0x4fcaf6
cmp dword [edi + 0xf4], 0
je 0x4fdbd9
mov eax, dword [edi + 0x5c]
cmp eax, dword [edi + 0x60]
je 0x4fcb19
mov ecx, dword [esi + 8]
mov ecx, dword [ecx + 0xac]
mov edi, dword [esi + 8]
cmp ecx, dword [edi + 0xa4]
mov edi, dword [esi + 8]
jae 0x4fda56
mov word [edi + 0x78], 0
cmp byte [edi + 0xc0], 0
jne 0x4fcbf3
mov ebx, dword [edi + 0x68]
mov edi, dword [edi + 0xb0]
xor ecx, ecx
test ebx, ebx
jne 0x4fd9a0
add ecx, edi
mov edx, dword [esi + 8]
cmp ecx, dword [edx + 0xa8]
ja 0x4fe029
mov ebx, dword [edx + 0x68]
mov eax, dword [edx + 0xac]
mov dword [esi + 0x2c], eax
xor edi, edi
mov dword [esi + 0x14], 0
test ebx, ebx
jne 0x4fd9f7
mov ebx, dword [edx + 0x70]
add ebx, dword [edx + 0x6c]
je 0x4fcbde
mov eax, dword [edx + 8]
mov eax, dword [eax + 0x10]
cmp eax, 1
ja 0x4fcbde
mov eax, dword [edx + 0x5c]
cmp eax, dword [edx + 0x60]
je 0x4fe810
mov dword [esi + 0x20], ebx
mov cl, byte [eax + 8]
dec cl
cmp cl, 1
ja 0x4feb36
mov edi, dword [eax]
mov eax, dword [edi]
mov ecx, dword [eax + 4]
xor ebx, ebx
inc ebx
cmp ecx, 0x5318e0
mov edx, dword [esi + 8]
je 0x4fcbcf
cmp ecx, 0x564cb0
je 0x4fd709
mov ebx, ecx
call dword [0x63e64c]
mov ecx, edi
call ebx
mov edx, dword [esi + 8]
mov ebx, eax
mov eax, dword [esi + 0x20]
lea edi, [eax + ebx]
add eax, ebx
dec eax
cmp eax, 1
adc edi, 0xffffffff
mov eax, dword [esi + 0x2c]
add eax, dword [esi + 0x14]
add eax, edi
inc eax
cmp eax, dword [edx + 0xa4]
ja 0x4fd5fa
mov eax, dword [esi + 0xc]
mov edi, dword [eax - 0x10]
add edi, 0x50
mov ecx, edi
shr ecx, 0xe
mov ebx, edi
shr ebx, 0x13
mov eax, dword [ebx*4 + 0x64c804]
mov dword [esi + 8], ecx
bt eax, ecx
jb 0x4fe001
mov eax, edi
shr eax, 0x15
mov byte [eax + 0x654804], 1
test edi, edi
je 0x4fe794
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
cmp dword [esi + 0xf4], 2
jae 0x4fdc6a
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4fe01d
mov eax, dword [ebx*4 + 0x64c804]
mov ecx, dword [esi + 8]
bt eax, ecx
jb 0x4fe00f
mov ecx, dword [esi + 0xc]
lea ebx, [ecx - 0x30]
mov eax, dword [ebx]
mov edi, dword [eax + 0x14]
cmp edi, 0x55dc90
mov dword [esi + 0x2c], ebx
jne 0x4fd275
mov ebx, dword [ecx - 0x10]
cmp dword [ebx + 0xf4], 0
je 0x4fd60c
mov eax, dword [ebx + 0xec]
mov eax, dword [eax + 0x10]
cmp eax, dword [esi + 0x28]
je 0x4fe85e
mov edi, dword [esi + 0x64]
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4fe86a
mov ecx, dword [esi + 0x28]
mov eax, dword [ecx + 0x18]
or eax, dword [ecx + 0x1c]
setne byte [esi + 8]
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov edx, dword [esi + 0xc]
mov ebx, dword [edx - 0x10]
add ebx, 0x50
mov ecx, ebx
shr ecx, 0xe
mov edi, ebx
shr edi, 0x13
mov eax, dword [edi*4 + 0x64c804]
mov dword [esi + 0x14], ecx
bt eax, ecx
jb 0x4feaa9
mov eax, ebx
shr eax, 0x15
mov byte [eax + 0x654804], 1
test ebx, ebx
je 0x4fe80d
cmp byte [esi + 8], 0
jne 0x4fe057
mov eax, dword [edx - 0x10]
mov ecx, dword [eax + 0xd0]
sub ecx, dword [eax + 0xcc]
sar ecx, 2
sub ecx, dword [eax + 0xf4]
mov dl, 1
mov dword [esi + 8], edx
cmp ecx, dword [eax + 0xa4]
ja 0x4fe06d
mov eax, dword [edi*4 + 0x64c804]
mov ecx, dword [esi + 0x14]
bt eax, ecx
jb 0x4febb8
cmp byte [esi + 8], 0
mov edx, dword [esi + 0xc]
je 0x4fd297
xor eax, eax
mov dword [esi + 8], eax
mov eax, dword [edx - 0x10]
mov ecx, dword [eax + 0x5c]
cmp ecx, dword [eax + 0x60]
je 0x4fce8b
movzx ebx, byte [ecx + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x4fd03c
mov ecx, dword [edx - 0x10]
test bl, bl
je 0x4fd07d
lea eax, [esi + 0xe0]
push eax
lea eax, [esi + 0xd0]
push eax
call fcn.0052ba00
mov edx, dword [esi + 8]
mov eax, edx
shr eax, 0xe
mov ecx, edx
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x64c804]
bt ecx, eax
mov edi, dword [esi + 0xd0]
mov eax, dword [esi + 0xd4]
mov dword [esi + 0x14], eax
mov eax, 0
mov dword [esi + 0xd0], eax
mov dword [esi + 0xd4], eax
jb 0x4fecae
mov dword [esi + 0xd0], 0
mov eax, dword [esi + 0xd4]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x4fe8a0
mov dword [esi + 0xd4], 0
mov ecx, dword [esi + 0xd0]
test ecx, ecx
mov edx, dword [esi + 0xc]
jne 0x4fe8ae
test edi, edi
mov eax, dword [esi + 0x14]
je 0x4fcd54
mov dword [esi + 8], edi
mov eax, dword [edx - 0x10]
mov ecx, dword [eax + 0xac]
inc ecx
mov dword [eax + 0xac], ecx
mov edi, ebx
test bl, bl
je 0x4fd072
mov edx, dword [eax + 0x5c]
cmp edx, dword [eax + 0x60]
mov ebx, dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
je 0x4fce5a
cmp ecx, dword [eax + 0xa4]
jae 0x4fd065
mov word [eax + 0x78], 0
movzx eax, di
mov ecx, 0x100
or eax, ecx
mov edx, dword [esi + 0xc]
mov word [edx - 0x20], ax
mov edi, dword [esi + 8]
movzx eax, byte [edi + 9]
and eax, 0x7f
or eax, ecx
mov word [edx - 0x1e], ax
xor edx, edx
mov eax, dword [esi + 0x14]
jmp 0x4fbd62
mov ebx, dword [esi + 0x2c]
mov eax, dword [ebx]
mov edi, dword [eax + 0x1c]
cmp edi, 0x55fc10
jne 0x4fcfd1
mov edi, dword [edx - 0x10]
mov edx, dword [edi + 0xec]
mov eax, dword [esi + 0x60]
mov ecx, dword [esi + 0x5c]
test dword [ecx*4 + 0x64c804], eax
mov dword [esi + 0x20], edx
jne 0x4fd055
mov eax, dword [esi + 0x58]
mov byte [eax + 0x654804], 1
lea eax, [edi + 0xf0]
mov dword [esi + 0x14], edi
mov ecx, dword [edi + 0xf0]
mov ebx, eax
mov dword [esi + 0x2c], eax
mov edi, eax
test ecx, ecx
je 0x4fcf00
mov eax, dword [esi + 0x28]
mov eax, dword [eax + 0x38]
mov edi, ecx
mov ecx, dword [ecx + 0x10]
mov ecx, dword [ecx + 0x38]
cmp eax, ecx
jae 0x4fcff6
mov ecx, dword [edi]
mov ebx, edi
test ecx, ecx
jne 0x4fcee8
push 0x14
call fcn.00564ea5
add esp, 4
cmp eax, 0xfffffff0
je 0x4fe8df
mov ecx, dword [esi + 0x28]
mov dword [eax + 0x10], ecx
xor ecx, ecx
mov dword [eax], ecx
mov dword [eax + 4], ecx
mov dword [eax + 8], edi
mov dword [ebx], eax
mov edx, dword [esi + 0x14]
mov ecx, dword [edx + 0xec]
mov ecx, dword [ecx]
test ecx, ecx
je 0x4fcf3c
mov dword [edx + 0xec], ecx
mov eax, dword [ebx]
mov ecx, dword [esi + 0x2c]
mov edi, dword [ecx]
cmp eax, edi
sete byte [eax + 0xc]
je 0x4fbcb0
mov edx, dword [eax + 8]
cmp byte [edx + 0xc], 0
jne 0x4fbcb0
mov ecx, dword [edx + 8]
mov ebx, dword [ecx]
cmp ebx, edx
je 0x4fcf90
test ebx, ebx
je 0x4fbc7a
cmp byte [ebx + 0xc], 0
jne 0x4fbc7a
add ebx, 0xc
mov al, 1
mov byte [edx + 0xc], al
mov dl, 1
mov eax, ecx
cmp ecx, edi
sete byte [ecx + 0xc]
mov byte [ebx], dl
jne 0x4fcf4d
jmp 0x4fbcb0
mov ebx, dword [ecx + 4]
test ebx, ebx
je 0x4fcf9d
cmp byte [ebx + 0xc], 0
je 0x4fcf75
cmp dword [edx], eax
jne 0x4fd00f
mov eax, edx
mov byte [eax + 0xc], 1
mov byte [ecx + 0xc], 0
mov eax, dword [ecx]
mov edx, dword [eax + 4]
mov dword [ecx], edx
test edx, edx
je 0x4fcfb9
mov dword [edx + 8], ecx
mov edx, dword [ecx + 8]
mov dword [eax + 8], edx
xor ebx, ebx
cmp dword [edx], ecx
setne bl
mov dword [edx + ebx*4], eax
mov dword [eax + 4], ecx
jmp 0x4fbcad
mov ecx, edi
call dword [0x63e64c]
mov ecx, ebx
push dword [esi + 0x28]
lea eax, [esi + 0xe0]
push eax
call edi
xor edi, edi
xor eax, eax
mov ebx, dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x4fbd5f
jbe 0x4feb2b
mov ecx, dword [edi + 4]
test ecx, ecx
jne 0x4fcee8
lea ebx, [edi + 4]
jmp 0x4fcf00
mov eax, dword [edx + 4]
mov edi, dword [eax]
mov dword [edx + 4], edi
test edi, edi
jne 0x4fdb60
mov dword [eax + 8], ecx
mov ecx, dword [edx + 8]
cmp dword [ecx], edx
jne 0x4ff157
mov dword [ecx], eax
mov dword [eax], edx
mov dword [edx + 8], eax
mov ecx, dword [eax + 8]
jmp 0x4fcfa3
test bl, bl
je 0x4fce8b
cmp eax, 1
jne 0x4fce8b
mov ecx, dword [edx - 0x10]
jmp 0x4fcd83
push dword [esi + 0x28]
call fcn.004f0de0
add esp, 4
jmp 0x4fcec8
movzx ecx, word [edx + 8]
mov word [eax + 0x78], cx
jmp 0x4fce60
inc dword [eax + 0xb0]
jmp 0x4fce40
mov eax, dword [ecx + 0xb0]
cmp eax, dword [ecx + 0xa8]
jb 0x4fcd83
jmp 0x4fce8b
mov ecx, edi
call dword [0x63e64c]
mov ecx, ebx
call edi
mov edi, eax
jmp 0x4fc0f0
mov ecx, edi
call dword [0x63e64c]
mov ecx, ebx
call edi
jmp 0x4fc347
mov ecx, edi
call dword [0x63e64c]
mov ecx, ebx
call edi
jmp 0x4fc817
mov ecx, edi
call dword [0x63e64c]
mov ecx, ebx
call edi
mov ecx, eax
jmp 0x4fc3d4
mov ecx, edi
call dword [0x63e64c]
mov ecx, ebx
call edi
mov edx, eax
jmp 0x4fc8bc
mov ecx, edi
call dword [0x63e64c]
mov ecx, ebx
lea eax, [esi + 0xc8]
push eax
call edi
jmp 0x4fc422
call dword [0x63e64c]
lea eax, [esi + 0xc0]
push eax
call ecx
add esp, 4
jmp 0x4fc4a7
mov ecx, ebx
call dword [0x63e64c]
mov ecx, edi
lea eax, [esi + 0xe0]
push eax
call ebx
jmp 0x4fcbf3
xor eax, eax
dec eax
mov dword [esi + 0x1c], eax
mov dword [esi + 0x14], 0x7fffffff
jmp 0x4fc749
push 0x24
push str.waitable_event.cc
push str.TimedWait
lea eax, [esi + 0xd0]
push eax
call fcn.005068d0
add esp, 0x10
cmp byte [esi + 0x110], 0
jne 0x4fee37
lea ecx, [esi + 0xe0]
push 1
push 0
call fcn.00520200
mov dword [esi + 0x124], 0xa
mov al, byte [0x649446]
test al, al
jne 0x4ff05c
mov byte [esi + 0x110], 1
xor ecx, ecx
dec ecx
jmp 0x4fc66e
sar eax, 2
cmp eax, dword [edi + 0xa4]
jae 0x4fd1e5
jmp 0x4fe0d4
lea eax, [edi + 0xec]
mov dword [esi + 0x14], eax
xor eax, eax
mov dword [esi + 0x24], ebx
mov dword [esi + 0x20], ecx
mov dword [esi + 0x2c], eax
mov eax, dword [edi + 0xd0]
sub eax, dword [edi + 0xcc]
cmp eax, 0x400
je 0x4fd1e5
cmp dword [edi + 0xf4], 0
je 0x4fd1a5
mov ecx, dword [esi + 0x14]
call fcn.005318f0
test eax, eax
je 0x4fd205
xor ecx, ecx
inc ecx
lock xadd dword [eax + 4], ecx
cmp ecx, 0x7fffffff
je 0x4fec6f
mov dword [esi + 0xd0], eax
mov ecx, dword [esi + 0x104]
mov ebx, 2
lea edx, [esi + 0x108]
test cl, 1
jne 0x4fec87
shr ecx, 1
cmp ecx, ebx
je 0x4ff15f
shl ecx, 2
add edx, ecx
mov ebx, dword [esi + 0x24]
je 0x4fe8df
mov dword [edx], eax
add dword [esi + 0x104], 2
mov eax, ebx
mov edx, dword [esi + 0x20]
sub eax, edx
mov ecx, 0
cmovb eax, ecx
xor ecx, ecx
cmp eax, 2
setae cl
mov eax, dword [esi + 0x2c]
cmp eax, ecx
mov ecx, edx
lea eax, [eax + 1]
mov edi, dword [esi + 8]
je 0x4fcad2
jmp 0x4fd1c6
mov ecx, edi
call dword [0x63e64c]
mov ecx, ebx
mov ebx, dword [esi + 0x28]
push ebx
lea eax, [esi + 0xe0]
push eax
call edi
mov edx, dword [esi + 0xc]
test al, al
jne 0x4fcd52
xor eax, eax
mov dword [esi + 0x128], eax
mov dword [esi + 0x12c], eax
mov ebx, dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x4fbd88
xor eax, eax
mov dword [esi + 0xd4], eax
mov dword [esi + 0xd0], eax
lea eax, [esi + 0xd0]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov edi, dword [esi + 0xd0]
mov ebx, dword [esi + 0xd4]
mov eax, 0x7bd05af7
cmp edi, eax
mov eax, ebx
mov ecx, 0x863
sbb eax, ecx
jge 0x4ff3b2
mov eax, edi
mov ecx, 0xf4240
mul ecx
imul ecx, ebx, 0xf4240
add ecx, edx
push dword [0x6496bc]
push dword [0x6496b8]
push ecx
push eax
call fcn.00588630
jmp 0x4fd34a
cmp eax, 0x102
jne 0x4fee51
mov ecx, dword [0x646080]
cmp ecx, 0x522100
je 0x4fd2b0
call dword [0x63e64c]
lea eax, [esi + 0xd0]
push eax
call ecx
add esp, 4
mov eax, dword [esi + 0xd0]
mov edx, dword [esi + 0xd4]
mov dword [esi + 0x3c], edx
mov dword [esi + 8], eax
mov edi, dword [esi + 0x1c]
sub edi, eax
mov ebx, dword [esi + 0x14]
sbb ebx, edx
seto dl
mov ecx, ebx
sar ecx, 0x1f
test dl, dl
lea eax, [ecx - 0x80000000]
mov dword [esi + 0xc], eax
cmove ecx, edi
mov edi, ecx
mov ecx, dword [esi + 0xc]
test dl, dl
cmove ecx, ebx
mov eax, dword [esi + 8]
cmp eax, dword [esi + 0x1c]
mov eax, dword [esi + 0x3c]
sbb eax, dword [esi + 0x14]
mov ebx, dword [esi + 0x28]
jl 0x4fc74c
xor ecx, ecx
jmp 0x4fc7cc
cmp byte [ebx + 0x2a], 0
mov eax, dword [ebx + 0x20]
jne 0x4fe53b
dec dword [eax + 0xb8]
jmp 0x4fd450
mov dword [esi + 0xc], ecx
mov dword [esi + 0x128], 0xa
mov al, byte [0x649446]
test al, al
jne 0x4fef89
call fcn.00564ed5
mov eax, dword [eax]
mov dword [esi + 8], eax
call fcn.00564ed5
xor ebx, ebx
mov dword [eax], ebx
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
push ebx
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov ebx, dword [esi + 0xe0]
test ebx, ebx
je 0x4fd45f
cmp dword [esi + 0xe4], 0
jne 0x4fd45f
cmp byte [ebx + 0x11], 0
je 0x4fd45f
mov eax, dword [ebx + 0x20]
add eax, 0x50
mov dword [esi + 0x18], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4fe049
xor eax, eax
mov dword [ebx + 0x1c], eax
mov dword [ebx + 0x18], eax
cmp byte [ebx + 0x2b], 0
jne 0x4fd450
cmp byte [ebx + 0x29], 0
mov eax, dword [ebx + 0x20]
jne 0x4fe09f
dec dword [eax + 0xb4]
cmp byte [ebx + 0x11], 0
je 0x4ff04d
cmp byte [ebx + 0x10], 0
je 0x4fd396
mov word [ebx + 0x29], 0
push dword [esi + 0x18]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
push edi
call dword [sym.imp.KERNEL32.dll_SetLastError]
call fcn.00564ed5
mov ecx, dword [esi + 8]
mov dword [eax], ecx
cmp byte [esi + 0x108], 0
mov ebx, dword [esi + 0x28]
je 0x4fd486
mov eax, dword [esi + 0x100]
test eax, eax
jne 0x4fd4f6
mov eax, dword [esi + 0xe8]
test eax, eax
je 0x4fd498
mov ecx, dword [esi + 0xec]
mov dword [eax], ecx
mov eax, dword [esi + 0xe4]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x4fe4c0
mov dword [esi + 0xe4], 0
mov eax, dword [esi + 0xe0]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
mov ecx, dword [esi + 0xc]
jae 0x4fc7d9
push eax
call fcn.004f0f10
mov ecx, dword [esi + 0xc]
add esp, 4
jmp 0x4fc7d9
mov dword [esi + 8], eax
mov ecx, dword [fcn.005515a0]
cmp ecx, 0x522100
jne 0x4fd5da
xor eax, eax
mov dword [esi + 0xd4], eax
mov dword [esi + 0xd0], eax
lea eax, [esi + 0xd0]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov edi, dword [esi + 0xd0]
mov ebx, dword [esi + 0xd4]
mov eax, 0x7bd05af7
cmp edi, eax
mov eax, ebx
mov ecx, 0x863
sbb eax, ecx
jge 0x4ff5c1
mov eax, edi
mov ecx, 0xf4240
mul ecx
imul ecx, ebx, 0xf4240
add ecx, edx
push dword [0x6496bc]
push dword [0x6496b8]
push ecx
push eax
call fcn.00588630
mov ecx, edx
mov dword [esi + 0x128], eax
mov dword [esi + 0x12c], ecx
mov edi, dword [esi + 0xf8]
mov edx, dword [esi + 0xfc]
mov dword [esi + 0x1c], eax
mov dword [esi + 0x18], edi
sub eax, edi
mov dword [esi + 0x14], ecx
sbb ecx, edx
seto bl
mov edi, ecx
sar edi, 0x1f
test bl, bl
cmovne eax, edi
add edi, 0x80000000
test bl, bl
cmove edi, ecx
cmp eax, 0xf4240
mov ecx, edi
sbb ecx, 0
jge 0x4fe245
mov edi, dword [esi + 0x100]
test edi, edi
mov ebx, dword [esi + 0x28]
je 0x4fd486
lock dec dword [edi]
jne 0x4fd486
jmp 0x4ff27a
call dword [0x63e64c]
lea eax, [esi + 0x128]
push eax
call ecx
add esp, 4
mov eax, dword [esi + 0x128]
mov ecx, dword [esi + 0x12c]
jmp 0x4fd57a
cmp dword [edx + 0xb4], 0
jle 0x4fcbf3
jmp 0x4fe036
xor eax, eax
jmp 0x4fcc96
mov ebx, dword [esi + 0x38]
mov eax, dword [ebx + 0x24]
test al, 1
jne 0x4fe47c
mov edx, ebx
mov ebx, dword [ebx + 0x34]
test ebx, ebx
je 0x4fec7e
xor ecx, ecx
inc ecx
lock xadd dword [ebx], ecx
test ecx, ecx
jle 0x4fec81
cmp ecx, 0x7fffffff
je 0x4fec84
shr eax, 1
movzx edi, al
mov eax, dword [edx + 0x34]
mov ecx, dword [eax + 4]
call dword [0x63e64c]
mov dword [esi + 0x38], edi
push edi
push ebx
call ecx
mov ecx, ebx
add esp, 8
mov ebx, eax
lock dec dword [ecx]
je 0x4feeaf
cmp ebx, 0x20
mov eax, 0x20
cmovae ebx, eax
sub ebx, dword [esi + 0x38]
mov eax, 0
cmovb ebx, eax
mov edi, dword [esi + 8]
jmp 0x4fca6e
mov al, byte [ebx + 0x20]
test al, al
jne 0x4fc20c
mov eax, dword [ebx]
mov edi, dword [eax + 0x10]
mov ecx, edi
call dword [0x63e64c]
mov ecx, ebx
call edi
test al, al
jne 0x4fc20c
mov edi, dword [ebx + 0x24]
lea ebx, [edi + 0x2c]
push ebx
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4fe14d
mov eax, dword [edi + 0x30]
test eax, eax
jne 0x4fe455
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ebx, dword [esi + 0x28]
mov eax, dword [ebx]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x63e64c]
mov ecx, ebx
call edi
mov edi, eax
mov eax, dword [eax]
mov ebx, dword [eax + 0x20]
mov ecx, ebx
call dword [0x63e64c]
mov ecx, edi
call ebx
mov ebx, dword [esi + 0x28]
jmp 0x4fc20c
mov eax, dword [edi + 0x24]
test al, 1
jne 0x4fe483
mov edx, edi
mov edi, dword [edi + 0x34]
test edi, edi
je 0x4fee69
xor ecx, ecx
inc ecx
lock xadd dword [edi], ecx
test ecx, ecx
jle 0x4fee6c
cmp ecx, 0x7fffffff
je 0x4fee6f
shr eax, 1
movzx ebx, al
mov eax, dword [edx + 0x34]
mov ecx, dword [eax + 4]
call dword [0x63e64c]
mov dword [esi + 0x30], ebx
push ebx
push edi
call ecx
add esp, 8
mov ebx, eax
lock dec dword [edi]
je 0x4fefc2
cmp ebx, 0x20
mov eax, 0x20
cmovae ebx, eax
sub ebx, dword [esi + 0x30]
mov eax, 0
cmovb ebx, eax
mov edx, dword [esi + 8]
jmp 0x4fcbcf
push edi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x4fc957
mov dword [esi + 0x134], 0x1a8
mov al, byte [0x6495e4]
test al, al
je 0x4fc7c9
movzx eax, al
mov edx, dword [esi + 0x18]
xor edx, dword [0x648780]
mov ecx, dword [0x648784]
mov dword [esi + 0xd4], ecx
mov dword [esi + 0xd0], edx
mov dword [esi + 0x128], str.WaitableEvent::Wait_Complete
lea ecx, [esi + 0x134]
lea edx, [esi + 0xd0]
push edx
push 3
lea edx, [esi + 0x128]
push edx
push ecx
push eax
call fcn.005c4fa0
mov cl, 1
add esp, 0x14
jmp 0x4fc7c9
xor ecx, ecx
jmp 0x4fc246
mov eax, dword [edi + 8]
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x4fc9ea
mov eax, dword [edi + 0x5c]
cmp eax, dword [edi + 0x60]
je 0x4fe810
cmp byte [eax + 8], 0
jne 0x4fd844
mov eax, dword [eax]
mov dword [esi + 0x20], eax
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ecx, edi
call dword [0x63e64c]
mov ecx, dword [esi + 0x20]
call edi
mov edi, dword [esi + 8]
lea ecx, [ebx + eax]
add eax, ebx
dec eax
cmp eax, 1
adc ecx, 0xffffffff
jmp 0x4fc9ea
mov ecx, ebx
jmp 0x4fc9ea
mov eax, dword [ebx + 8]
mov ecx, 0xfffffffe
lock xadd dword [eax], ecx
cmp ecx, 3
jne 0x4fd882
jmp 0x4fe57d
mov ebx, dword [esi + 0xe4]
test ebx, ebx
je 0x4fbf5a
mov dword [esi + 0xe0], 0
mov al, byte [edi + 9]
and al, 0x7f
cmp al, 2
je 0x4fd84b
lock dec dword [ebx + 0xc]
je 0x4fd915
lock dec dword [edi + 4]
jne 0x4fbf6c
mov dword [edi], 0x6229f0
mov ebx, dword [edi + 0x5c]
test ebx, ebx
jne 0x4fe191
lea ecx, [edi + 0x3c]
mov ebx, dword [edi + 0x3c]
mov edx, dword [edi + 0x40]
mov eax, ebx
cmp edx, ebx
jne 0x4ff296
mov dword [edi + 0x40], ebx
test eax, eax
jne 0x4ff461
mov eax, dword [edi + 0x30]
mov ebx, dword [edi + 0x34]
cmp ebx, eax
jne 0x4ff0aa
push 0
push dword [edi + 0x28]
push 0x635c90
call fcn.005087f0
add esp, 0xc
mov eax, dword [edi + 0x24]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jae 0x4fd907
push eax
call fcn.004f1260
add esp, 4
push edi
call fcn.00564ea0
add esp, 4
jmp 0x4fbf6c
lea eax, [ebx + 0x14]
mov dword [esi + 0xc], eax
push eax
mov eax, dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
call eax
test al, al
je 0x4fe56f
push dword [ebx + 0x18]
call dword [sym.imp.KERNEL32.dll_WakeAllConditionVariable]
push dword [esi + 0xc]
mov eax, dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
call eax
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4ff09c
mov eax, dword [ebx + 0x1c]
mov dword [esi + 8], eax
mov eax, dword [ebx + 0x20]
mov dword [esi + 0x1c], eax
mov eax, dword [ebx + 0x24]
mov dword [esi + 0x18], eax
mov eax, dword [ebx + 0x28]
mov dword [esi + 0x10], eax
pxor xmm0, xmm0
movdqu xmmword [ebx + 0x1c], xmm0
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x10]
mov ebx, ecx
cmp ecx, eax
jne 0x4feebd
push 0
push dword [esi + 8]
push 0x635c90
call fcn.005087f0
add esp, 0xc
jmp 0x4fbf64
mov eax, dword [esi + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x4fcb3f
mov ecx, dword [esi + 8]
mov eax, dword [ecx + 0x5c]
cmp eax, dword [ecx + 0x60]
je 0x4fe810
cmp byte [eax + 8], 0
jne 0x4fd9f0
mov eax, dword [eax]
mov dword [esi + 0x14], eax
mov eax, dword [eax]
mov ecx, dword [eax + 4]
mov dword [esi + 0x2c], ecx
call dword [0x63e64c]
mov ecx, dword [esi + 0x14]
call dword [esi + 0x2c]
lea ecx, [ebx + eax]
add eax, ebx
dec eax
cmp eax, 1
adc ecx, 0xffffffff
jmp 0x4fcb3f
mov ecx, ebx
jmp 0x4fcb3f
mov eax, dword [edx + 8]
mov eax, dword [eax + 0x10]
mov dword [esi + 0x14], 0
test eax, eax
jne 0x4fcb6d
mov eax, dword [edx + 0x5c]
cmp eax, dword [edx + 0x60]
je 0x4fe810
cmp byte [eax + 8], 0
jne 0x4fda4e
mov eax, dword [eax]
mov dword [esi + 0x14], eax
mov eax, dword [eax]
mov ecx, dword [eax + 4]
mov dword [esi + 0x20], ecx
call dword [0x63e64c]
mov ecx, dword [esi + 0x14]
call dword [esi + 0x20]
mov edx, dword [esi + 8]
lea ecx, [ebx + eax]
add eax, ebx
dec eax
cmp eax, 1
adc ecx, 0xffffffff
mov dword [esi + 0x14], ecx
jmp 0x4fcb6d
mov dword [esi + 0x14], ebx
jmp 0x4fcb6d
movzx eax, word [eax + 8]
mov word [edi + 0x78], ax
jmp 0x4fcb1f
mov edi, 3
jmp 0x4fc165
lock dec dword [ecx + 4]
jne 0x4fdae5
push 1
call fcn.004036f0
jmp 0x4fdae5
push 0
push dword [eax]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edi, eax
test eax, eax
jne 0x4fe4ce
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
test edi, edi
mov ebx, dword [esi + 0x28]
jne 0x4fc379
mov eax, dword [ebx]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x63e64c]
mov ecx, ebx
call edi
mov edi, eax
mov eax, dword [eax]
mov ebx, dword [eax + 0x1c]
mov ecx, ebx
call dword [0x63e64c]
mov ecx, edi
push dword [esi + 0x28]
call ebx
mov eax, dword [esi + 0x28]
mov edi, dword [eax + 0x2c]
test edi, edi
jne 0x4ff448
mov ecx, dword [eax + 8]
mov dword [eax + 8], 0
test ecx, ecx
jne 0x4fda6d
mov dword [esi + 0xa0], 0xa
mov al, byte [0x649446]
test al, al
mov edi, dword [esi + 0x48]
jne 0x4ff52d
mov dword [esi + 0xa0], 0xa
mov al, byte [0x649446]
test al, al
jne 0x4ff561
mov ecx, dword [0x645d64]
test ecx, ecx
jne 0x4ff19e
test edi, edi
je 0x4fdb4b
mov ecx, dword [edi + 4]
call dword [0x63e64c]
push edi
call ecx
add esp, 4
lock dec dword [edi]
jne 0x4fdb4b
mov ecx, dword [edi + 8]
call dword [0x63e64c]
push edi
call ecx
add esp, 4
mov ecx, dword [esi + 0x138]
xor ecx, ebp
call fcn.00568175
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [edi + 8], edx
mov ecx, dword [edx + 8]
jmp 0x4fd01f
mov edi, 3
jmp 0x4fc890
push ebx
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x4fc364
push ebx
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x4fc834
mov eax, dword [ebx - 0x10]
fild qword [eax + 0x20]
fstp qword [esi + 0x98]
movsd xmm0, qword [esi + 0x98]
mulsd xmm0, qword [0x637678]
movsd xmm1, qword [0x62fc88]
ucomisd xmm1, xmm0
jb 0x4ff5a0
maxsd xmm0, qword [0x62fc90]
movsd qword [esi + 0x50], xmm0
fld qword [esi + 0x50]
fisttp qword [esi + 0x50]
mov eax, dword [esi + 0x50]
mov ecx, dword [esi + 0x54]
jmp 0x4fc416
sar eax, 2
cmp eax, dword [edi + 0xa4]
jae 0x4fcaf6
lea ebx, [edi + 0xec]
mov dword [esi + 0xd0], 0xffffffff
mov ecx, edi
lea eax, [esi + 0xe0]
push eax
lea eax, [esi + 0xd0]
push eax
call fcn.0040a060
mov ecx, ebx
push dword [esi + 0xd0]
call fcn.00531d30
mov ecx, dword [esi + 0xd0]
test ecx, ecx
je 0x4fdc2e
lock dec dword [ecx + 4]
je 0x4ff882
mov edi, dword [esi + 8]
jmp 0x4fcaf6
lea edi, [edx + ebx*4]
add edi, 0xfffffffc
neg ebx
test edi, edi
je 0x4fe669
mov ecx, dword [edi]
test ecx, ecx
je 0x4fdc56
lock dec dword [ecx + 4]
je 0x4ff65c
add edi, 0xfffffffc
inc ebx
jne 0x4fdc3e
mov eax, dword [esi + 0xf4]
and eax, 1
jmp 0x4fbe1a
lea ecx, [esi + 0xe0]
call fcn.0042e410
mov edx, dword [esi + 0xf4]
mov eax, edx
lea ecx, [esi + 0xf8]
and eax, 1
jne 0x4ff595
cmp edx, 2
jae 0x4fe48a
test eax, eax
jne 0x4ff79d
mov dword [esi + 0xf4], 0
mov byte [esi + 0x100], 0
jmp 0x4fcc41
mov ecx, dword [esi + 0x18]
call fcn.005636e0
test al, al
jne 0x4fc7e1
call fcn.00505ac0
mov eax, dword [esi + 0xc8]
mov ecx, dword [esi + 0xcc]
cmp dword [esi + 0x20], eax
mov edx, dword [esi + 0x2c]
sbb edx, ecx
jge 0x4fc7e1
mov edx, eax
xor edi, edi
dec edi
xor edx, edi
mov edi, ecx
mov dword [esi + 0xc], ecx
mov ecx, 0x7fffffff
xor edi, ecx
or edi, edx
jne 0x4fdd2a
xor eax, eax
dec eax
mov dword [esi + 0xe0], eax
mov eax, 0x7fffffff
mov dword [esi + 0xe4], eax
mov ecx, dword [esi + 0x10]
sub esp, 8
movq xmm0, qword [esi + 0xe0]
movq qword [esp], xmm0
call fcn.00502330
jmp 0x4fc7e1
mov ecx, dword [esi + 0xc]
xor edx, edx
dec edx
mov ebx, dword [esi + 0x20]
add edx, ebx
mov edi, 0x7fffffff
adc edi, dword [esi + 0x2c]
add edx, 2
adc edi, 0
cmp edx, 2
sbb edi, 0
jb 0x4ff8e0
sub eax, ebx
sbb ecx, dword [esi + 0x2c]
seto bl
mov edx, ecx
sar edx, 0x1f
test bl, bl
cmovne eax, edx
add edx, 0x80000000
test bl, bl
cmove edx, ecx
mov dword [esi + 0xe0], eax
mov dword [esi + 0xe4], edx
mov ebx, dword [esi + 0x28]
jmp 0x4fdd0d
shl ebx, 2
xor eax, eax
mov dword [esi + 8], eax
mov ecx, dword [edi + eax]
test ecx, ecx
je 0x4fdd9f
xor eax, eax
inc eax
lock xadd dword [ecx + 4], eax
cmp eax, 0x7fffffff
je 0x4ff198
mov dword [esi + 0xc], ecx
mov ecx, dword [esi + 0xe4]
mov eax, dword [ecx + 0x30]
mov edx, dword [ecx + 0x34]
test eax, eax
je 0x4fddc6
xor ecx, ecx
inc ecx
lock xadd dword [eax + 4], ecx
cmp ecx, 0x7fffffff
je 0x4ff19b
mov ecx, dword [esi + 0xc]
push edx
push eax
call fcn.00434660
mov ecx, dword [esi + 0xe4]
cmp byte [ecx + 0xe0], 0
jne 0x4ff640
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x4fddf4
lock dec dword [ecx + 4]
je 0x4ff650
mov eax, dword [esi + 8]
add eax, 4
cmp ebx, eax
jne 0x4fdd82
mov ecx, dword [esi + 0xf4]
mov ebx, ecx
shr ebx, 1
mov eax, ecx
and eax, 1
cmp ecx, 2
setb cl
jmp 0x4fbe04
push 0x6586e8
call fcn.00564ee8
add esp, 4
cmp dword [0x6586e8], 0xffffffff
jne 0x4fc512
mov eax, dword [esi + 0xc]
mov dword [0x6586e0], eax
mov eax, dword [esi + 8]
mov dword [0x6586e4], eax
push 0x6586e8
call fcn.00564f37
add esp, 4
jmp 0x4fc512
push 0x6586d8
call fcn.00564ee8
add esp, 4
cmp dword [0x6586d8], 0xffffffff
jne 0x4fc4e4
push 0x64714c
call fcn.00505cb0
add esp, 4
mov byte [0x6586d4], al
push 0x6586d8
call fcn.00564f37
add esp, 4
jmp 0x4fc4e4
mov eax, dword [esi + 8]
mov eax, dword [eax + 8]
mov ecx, 0xfffffffe
lock xadd dword [eax], ecx
cmp ecx, 3
jne 0x4fdec8
jmp 0x4fe5b6
mov eax, dword [edx - 4]
mov dword [esi + 8], eax
test eax, eax
je 0x4fbabb
mov dword [ecx], 0
mov al, byte [ebx + 9]
and al, 0x7f
cmp al, 2
je 0x4fde92
mov eax, dword [esi + 8]
lock dec dword [eax + 0xc]
je 0x4fdf6a
lock dec dword [ebx + 4]
jne 0x4fbac9
mov dword [ebx], 0x6229f0
mov ecx, dword [ebx + 0x5c]
test ecx, ecx
mov dword [esi + 0x18], edx
jne 0x4fe4e6
lea eax, [ebx + 0x3c]
mov dword [esi + 0x10], eax
mov eax, dword [ebx + 0x3c]
mov ecx, dword [ebx + 0x40]
mov dword [esi + 8], eax
cmp ecx, eax
jne 0x4ff8f9
mov dword [ebx + 0x40], eax
cmp dword [esi + 8], 0
jne 0x4ff938
mov eax, dword [ebx + 0x30]
mov ecx, dword [ebx + 0x34]
cmp ecx, eax
jne 0x4ff7be
mov dword [esi + 0x18], edx
lea ecx, [eax + 0x14]
mov dword [esi + 0x10], ecx
push ecx
mov eax, dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
call eax
test al, al
je 0x4fe5a8
mov eax, dword [esi + 8]
push dword [eax + 0x18]
call dword [sym.imp.KERNEL32.dll_WakeAllConditionVariable]
push dword [esi + 0x10]
mov eax, dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
call eax
push dword [esi + 0x10]
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4ff7b0
mov eax, dword [esi + 8]
mov ecx, dword [eax + 0x1c]
mov dword [esi + 0x1c], ecx
mov ecx, dword [eax + 0x20]
mov dword [esi + 0x20], ecx
mov ecx, dword [eax + 0x24]
mov dword [esi + 0x2c], ecx
mov ecx, dword [eax + 0x28]
mov dword [esi + 0x14], ecx
pxor xmm0, xmm0
movdqu xmmword [eax + 0x1c], xmm0
push dword [esi + 0x10]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ecx, dword [esi + 0x2c]
mov eax, dword [esi + 0x14]
mov edx, ecx
cmp ecx, eax
jne 0x4ff6bc
push 0
push dword [esi + 0x1c]
push 0x635c90
call fcn.005087f0
add esp, 0xc
mov edx, dword [esi + 0x18]
jmp 0x4fbac1
push edi
call fcn.004f0de0
add esp, 4
jmp 0x4fcc25
push edi
call fcn.004f0f10
add esp, 4
jmp 0x4fcc63
push edi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x4fcc50
cmp dword [edx + 0xb8], 0
jle 0x4fcb50
mov al, 1
mov byte [esi + 0x100], al
mov byte [edx + 0xc0], al
jmp 0x4fcbf3
push dword [esi + 0x18]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x4fd41b
mov ecx, dword [esi + 0x2c]
push dword [esi + 0x28]
call fcn.004093c0
mov ecx, 0x18
test al, al
jne 0x4fe072
jmp 0x4fe093
mov ecx, 0x1c
mov eax, dword [esi + 0x2c]
mov eax, dword [eax]
mov ecx, dword [eax + ecx]
mov dword [esi + 8], ecx
call dword [0x63e64c]
mov ecx, dword [esi + 0x2c]
push dword [esi + 0x28]
lea eax, [esi + 0xe0]
push eax
call dword [esi + 8]
mov dword [esi + 8], 0
jmp 0x4fcd32
mov ecx, dword [eax + 0x5c]
mov edx, dword [eax + 0xa4]
dec edx
mov dword [eax + 0xa4], edx
cmp ecx, dword [eax + 0x60]
je 0x4fe0bc
cmp dword [eax + 0xac], edx
jae 0x4fe0c7
mov word [eax + 0x78], 0
jmp 0x4fd43c
movzx ecx, word [ecx + 8]
mov word [eax + 0x78], cx
jmp 0x4fd43c
mov dword [esi + 0xd0], 0xffffffff
mov ecx, edi
lea eax, [esi + 0xe0]
push eax
lea eax, [esi + 0xd0]
push eax
call fcn.0040a060
mov ecx, dword [esi + 0x14]
push dword [esi + 0xd0]
call fcn.00531d30
mov ecx, dword [esi + 0xd0]
test ecx, ecx
je 0x4fd1e5
lock dec dword [ecx + 4]
jne 0x4fd1e5
push 1
call fcn.004036f0
jmp 0x4fd1e5
mov ecx, dword [esi + 0xe4]
call fcn.00434840
cmp dword [esi + 0xf4], 0
je 0x4fbe3c
lea ecx, [esi + 0xf4]
call fcn.005d1d20
jmp 0x4fbe3c
push ebx
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x4fd6c8
push 0
push dword [eax]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edi, eax
test eax, eax
jne 0x4fe17d
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
test edi, edi
jne 0x4fc846
jmp 0x4ff92e
cmp edi, 0x102
je 0x4fe169
mov ecx, edi
call fcn.005c4f10
jmp 0x4fc83f
mov edx, dword [edi + 0x60]
mov eax, ebx
cmp edx, ebx
je 0x4fe1cf
mov eax, edx
add eax, 0xfffffff4
je 0x4fe669
mov dword [esi + 0xc], eax
mov ecx, dword [edx - 4]
test ecx, ecx
je 0x4fe1c3
add edx, 0xfffffff8
mov dword [esi + 8], edx
call dword [0x63e64c]
push dword [esi + 8]
call ecx
add esp, 4
mov eax, dword [esi + 0xc]
mov edx, eax
cmp eax, ebx
jne 0x4fe19c
mov eax, dword [edi + 0x5c]
mov dword [edi + 0x60], ebx
push eax
call fcn.00564ea0
add esp, 4
jmp 0x4fd8a7
mov ecx, dword [ecx + 0x24]
cmp ecx, 3
je 0x4ffa43
xor eax, eax
cmp ecx, 1
sete al
jmp 0x4fe211
mov eax, dword [0x64783c]
mov ecx, dword fs:[0x2c]
mov eax, dword [ecx + eax*4]
mov ecx, dword [eax + 0xb8]
xor eax, eax
test ecx, ecx
jne 0x4fe1e0
cmp edi, 7
jge 0x4fe685
mov ecx, dword [0x64783c]
mov edx, dword fs:[0x2c]
mov ebx, dword [edx + ecx*4]
push eax
push edi
call fcn.00410840
add esp, 8
mov dword [ebx + 0xb0], edi
mov eax, dword [esi + 0x28]
mov dword [eax + 0x34], edi
jmp 0x4fc16e
mov dword [esi + 0x24], edx
mov dword [esi + 0x30], eax
xor edx, edx
dec edx
mov ecx, 0x3938700
mov eax, dword [esi + 8]
add ecx, dword [eax + 0xf8]
mov ebx, dword [eax + 0xfc]
adc ebx, 0
mov eax, 0x7fffffff
cmovno eax, ebx
mov ebx, eax
cmovo ecx, edx
mov eax, dword [esi + 0x1c]
cmp eax, ecx
mov edx, dword [esi + 0x14]
mov ecx, edx
sbb ecx, ebx
jge 0x4ff9c2
mov eax, dword [esi + 8]
mov ecx, dword [eax + 0xf8]
mov eax, dword [eax + 0xfc]
mov edx, dword [esi + 0x18]
mov dword [esi + 0x14], ecx
sub edx, ecx
mov ecx, dword [esi + 0x24]
mov dword [esi + 0x1c], eax
sbb ecx, eax
seto bl
mov eax, ecx
sar eax, 0x1f
test bl, bl
cmovne edx, eax
add eax, 0x80000000
test bl, bl
cmove eax, ecx
xor ecx, ecx
dec ecx
add ecx, edx
mov ebx, 0x7fffffff
adc ebx, eax
add ecx, 2
adc ebx, 0
cmp ecx, 2
sbb ebx, 0
jb 0x4ff994
movd xmm0, edx
movd xmm1, eax
punpckldq xmm0, xmm1
movq qword [esi + 0x90], xmm0
fild qword [esi + 0x90]
fstp qword [esi + 0x88]
movsd xmm0, qword [esi + 0x88]
divsd xmm0, qword [0x62eae0]
sub esp, 8
movsd qword [esp], xmm0
call fcn.00591b10
add esp, 8
fstp qword [esi + 0x80]
movsd xmm0, qword [esi + 0x80]
movsd xmm1, qword [0x62f100]
ucomisd xmm1, xmm0
mov ecx, 0xffffffff
jb 0x4ff966
maxsd xmm0, qword [0x62f108]
cvttsd2si ebx, xmm0
mov edx, dword [esi + 0x30]
add ecx, edx
mov eax, 0x7fffffff
adc eax, edi
movd xmm0, edx
add ecx, 2
adc eax, 0
movd xmm1, edi
cmp ecx, 2
sbb eax, 0
punpckldq xmm0, xmm1
movq qword [esi + 0x78], xmm0
fild qword [esi + 0x78]
fstp qword [esi + 0x70]
jae 0x4fe384
movsd xmm0, qword [0x62f110]
jmp 0x4fe391
movsd xmm0, qword [esi + 0x70]
divsd xmm0, qword [0x62eae0]
sub esp, 8
movsd qword [esp], xmm0
call fcn.00591c0d
add esp, 8
fstp qword [esi + 0x68]
movsd xmm0, qword [esi + 0x68]
movsd xmm1, qword [0x62f100]
ucomisd xmm1, xmm0
jb 0x4ff97d
maxsd xmm0, qword [0x62f108]
cvttsd2si edx, xmm0
mov edi, ebx
add edx, edi
cmp edx, 0x3c
mov ebx, 0x3c
mov dword [esi + 0x18], edx
cmovl ebx, edx
mov eax, dword [esi + 8]
add eax, 4
mov dword [esi + 0x1c], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4ff958
cmp edi, ebx
mov eax, dword [esi + 8]
jge 0x4fe401
inc dword [eax + edi*4 + 8]
inc edi
cmp ebx, edi
jne 0x4fe3f8
push dword [esi + 0x1c]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov edx, dword [esi + 0x18]
cmp edx, 0x3d
jl 0x4fd5bb
mov eax, dword [esi + 8]
mov eax, dword [eax + 0x100]
sub edx, ebx
xor edi, edi
mov dword [esi + 8], eax
test eax, eax
jne 0x4fe3c9
jmp 0x4fd5bb
push dword [esi + 0x14]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x4fbd0e
mov edi, dword [esi + 0xf8]
jmp 0x4fbdf5
cmp edi, 0x102
je 0x4fe465
jmp 0x4ffb77
push 0
push dword [eax]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edi, eax
test eax, eax
jne 0x4fe448
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
test edi, edi
mov ebx, dword [esi + 0x28]
jne 0x4fd6dd
jmp 0x4fc20c
xor ebx, ebx
jmp 0x4fca6e
xor ebx, ebx
jmp 0x4fcbcf
shr edx, 1
lea eax, [ecx + edx*4]
add eax, 0xfffffffc
neg edx
test eax, eax
je 0x4fe669
mov ecx, dword [eax]
test ecx, ecx
je 0x4fe4ac
lock dec dword [ecx + 4]
je 0x500051
add eax, 0xfffffffc
inc edx
jne 0x4fe494
mov eax, dword [esi + 0xf4]
and eax, 1
jmp 0x4fdc95
push eax
call fcn.004f0f10
add esp, 4
jmp 0x4fd4b8
cmp edi, 0x102
je 0x4fda90
mov ecx, edi
call fcn.005c4f10
jmp 0x4fc36f
mov edx, dword [ebx + 0x60]
mov eax, ecx
cmp edx, ecx
je 0x4fe52a
mov eax, edx
mov dword [esi + 0x1c], ecx
add eax, 0xfffffff4
je 0x4fe669
mov dword [esi + 8], eax
mov ecx, dword [edx - 4]
test ecx, ecx
je 0x4fe51b
add edx, 0xfffffff8
mov dword [esi + 0x10], edx
call dword [0x63e64c]
push dword [esi + 0x10]
call ecx
add esp, 4
mov eax, dword [esi + 8]
mov edx, eax
mov ecx, dword [esi + 0x1c]
cmp eax, ecx
jne 0x4fe4f4
mov eax, dword [ebx + 0x5c]
mov dword [ebx + 0x60], ecx
push eax
call fcn.00564ea0
add esp, 4
jmp 0x4fdef3
dec dword [eax + 0xa8]
mov ecx, dword [eax + 0x5c]
cmp ecx, dword [eax + 0x60]
je 0x4fe557
mov edx, dword [eax + 0xac]
cmp edx, dword [eax + 0xa4]
jae 0x4fe562
mov word [eax + 0x78], 0
jmp 0x4fd450
movzx ecx, word [ecx + 8]
mov word [eax + 0x78], cx
jmp 0x4fd450
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x4fd92b
lea eax, [ebx + 0x2c]
mov dword [esi + 0xc], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4ffb8f
mov ecx, dword [ebx + 0x30]
call fcn.0053f280
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x4fd882
push dword [esi + 0x10]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x4fdf83
mov dword [esi + 0x30], ebx
mov dword [esi + 0x18], edx
mov eax, dword [esi + 8]
add eax, 0x2c
mov ebx, eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4ffb83
mov eax, dword [esi + 8]
mov ecx, dword [eax + 0x30]
call fcn.0053f280
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov edx, dword [esi + 0x18]
mov ebx, dword [esi + 0x30]
jmp 0x4fdec8
cmp byte [esi + 0xb0], 0
je 0x4fc04d
cmp dword [ecx + 0x10], 0
jne 0x4ff2bd
mov ecx, dword [esi + 0xc]
mov eax, dword [ecx + 8]
mov edx, dword [ecx + 0xc]
mov ecx, edx
mov edi, 0x40000000
or ecx, edi
mov ebx, eax
mov edi, dword [esi + 0xc]
lock cmpxchg8b qword [edi + 8]
mov ecx, dword [esi + 0xc]
jne 0x4fe610
jmp 0x4fc04d
cmp byte [esi + 0xb0], 0
je 0x4fc2ca
mov eax, dword [esi + 0xc]
mov edi, eax
cmp dword [eax + 0x10], 0
jne 0x4ff37b
mov eax, dword [edi + 8]
mov edx, dword [edi + 0xc]
mov ecx, edx
mov edi, 0x40000000
or ecx, edi
mov ebx, eax
mov edi, dword [esi + 0xc]
lock cmpxchg8b qword [edi + 8]
jne 0x4fe64f
jmp 0x4fc2ca
push str....._third_partylibc_srcinclude__memoryconstruct_at.h:66:_assertion___loc___nullptr_failed:_null_pointer_given_to_destroy_at_n
push 0x624173
call fcn.00591ed0
call fcn.005c4b60
jmp 0x4fc3c0
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
lock dec dword [ecx + 4]
jne 0x4fbf16
push 1
call fcn.0053f300
jmp 0x4fbf16
lock dec dword [ecx + 4]
jne 0x4fbfa7
push 1
call fcn.0053f300
jmp 0x4fbfa7
lock dec dword [ecx + 4]
jne 0x4fc20c
push 1
call fcn.0053f300
jmp 0x4fc20c
lock dec dword [eax + 4]
jne 0x4fbef2
mov ecx, eax
push 1
call fcn.0053f300
jmp 0x4fbef2
push eax
call fcn.004f1260
add esp, 4
jmp 0x4fbf46
push eax
call fcn.004f1260
add esp, 4
jmp 0x4fbf8c
push eax
call fcn.004f1260
add esp, 4
jmp 0x4fc1f1
lea ecx, [esi + 0xa0]
call fcn.004f5940
jmp 0x4fc85c
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
mov eax, dword [esi + 0x108]
jmp 0x4fbdc3
mov edx, dword [esi + 0xf8]
jmp 0x4fbe12
mov ecx, dword [0x65506c]
call fcn.005c4d00
mov ecx, dword [esi + 0xc]
jmp 0x4fc00c
mov ecx, dword [esi + 0x12c]
test ecx, ecx
je 0x4fbeda
mov dword [esi + 0x128], 0
push eax
lea eax, [esi + 0xd0]
push eax
call fcn.00412130
mov eax, dword [esi + 0xd0]
jmp 0x4fbeea
xor ebx, ebx
mov edx, 0xf4240
jmp 0x4fc5ee
push edi
call fcn.004107d0
add esp, 4
mov dword [ebx + 0x34], edi
jmp 0x4fc899
int3
push str....._third_partylibc_srcinclude_vector:618:_assertion__empty___failed:_front___called_on_an_empty_vector_n
push 0x624173
call fcn.00591ed0
push dword [esi + 0x3c]
call fcn.004f0f10
add esp, 4
jmp 0x4fbda1
push dword [esi + 0xf8]
call fcn.00564ea0
add esp, 4
jmp 0x4fbe22
push eax
call fcn.004f0f10
add esp, 4
jmp 0x4fbe6a
push edx
call fcn.004f1260
add esp, 4
jmp 0x4fbd88
mov byte [esi + 8], 1
mov edx, dword [esi + 0xc]
jmp 0x4fcccb
push edi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x4fccb1
mov edi, dword [esi + 8]
jmp 0x4fca80
push edi
call fcn.004f0de0
mov edx, dword [esi + 0xc]
add esp, 4
jmp 0x4fc910
push ebx
call fcn.004f0de0
mov edx, dword [esi + 0xc]
add esp, 4
jmp 0x4fc98b
push eax
call fcn.004f1260
add esp, 4
jmp 0x4fcdfd
lock dec dword [ecx + 4]
jne 0x4fce18
push 1
call fcn.0053f300
mov edx, dword [esi + 0xc]
jmp 0x4fce18
mov ebx, edi
mov edi, ecx
mov ecx, dword [0x65506c]
call fcn.005c4d00
mov ecx, edi
mov edi, ebx
jmp 0x4fc283
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 [ebx + 8]
mov ecx, 0xfffffffe
lock xadd dword [eax], ecx
cmp ecx, 3
jne 0x4fe948
jmp 0x4ffa21
push eax
call fcn.004f1260
add esp, 4
mov eax, dword [esi + 0xe0]
mov dword [esi + 0x12c], edi
mov dword [esi + 0xc], eax
test eax, eax
je 0x4fc1c7
mov ebx, dword [esi + 0xe4]
mov dword [esi + 0xe0], 0
test ebx, ebx
je 0x4fe9d2
mov eax, dword [esi + 0xc]
mov al, byte [eax + 9]
and al, 0x7f
cmp al, 2
je 0x4fe8ee
lock dec dword [ebx + 0xc]
jne 0x4fe9d2
lea eax, [ebx + 0x14]
mov dword [esi + 8], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4ff9b4
push dword [ebx + 0x18]
call dword [sym.imp.KERNEL32.dll_WakeAllConditionVariable]
mov edi, dword [esi + 8]
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4ffbbb
mov eax, dword [ebx + 0x1c]
mov dword [esi + 0x18], eax
mov eax, dword [ebx + 0x20]
mov dword [esi + 0x1c], eax
pxor xmm0, xmm0
mov edi, dword [ebx + 0x24]
mov eax, dword [ebx + 0x28]
mov dword [esi + 0x10], eax
movdqu xmmword [ebx + 0x1c], xmm0
push dword [esi + 8]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ebx, edi
mov eax, edi
mov dword [esi + 8], edi
cmp edi, dword [esi + 0x10]
jne 0x4fff81
push 0
push dword [esi + 0x18]
push 0x635c90
call fcn.005087f0
add esp, 0xc
mov eax, dword [esi + 0xc]
lock dec dword [eax + 4]
jne 0x4fc1d1
mov eax, dword [esi + 0xc]
mov dword [eax], 0x6229f0
mov ebx, dword [eax + 0x5c]
test ebx, ebx
jne 0x4ff668
mov eax, dword [esi + 0xc]
lea ecx, [eax + 0x3c]
mov dword [esi + 8], ecx
mov edi, dword [eax + 0x3c]
mov ebx, dword [eax + 0x40]
mov eax, edi
cmp ebx, edi
jne 0x4ffb9d
mov ecx, dword [esi + 0xc]
mov dword [ecx + 0x40], edi
test eax, eax
jne 0x500069
mov ecx, dword [esi + 0xc]
mov eax, dword [ecx + 0x30]
mov ebx, dword [ecx + 0x34]
cmp ebx, eax
jne 0x4ffc73
push 0
mov edi, dword [esi + 0xc]
push dword [edi + 0x28]
push 0x635c90
call fcn.005087f0
add esp, 0xc
mov eax, dword [edi + 0x24]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jae 0x4fea62
push eax
call fcn.004f1260
add esp, 4
push dword [esi + 0xc]
call fcn.00564ea0
add esp, 4
jmp 0x4fc1d1
push eax
call fcn.004f1260
add esp, 4
mov ecx, dword [esi + 0x128]
mov dword [esi + 0x12c], 0
test ecx, ecx
je 0x4fc244
lock dec dword [ecx + 4]
jne 0x4fc244
push 1
call fcn.0053f300
jmp 0x4fc244
push ebx
call fcn.004f0de0
mov edx, dword [esi + 0xc]
add esp, 4
jmp 0x4fccf7
movzx eax, al
mov dword [esi + 0xe0], str.WorkerThread_active
push 0
push 0x45
push 0x626958
push 2
lea ecx, [esi + 0xe0]
push ecx
lea ecx, [esi + 0xd0]
push ecx
push eax
call fcn.005b6ec0
add esp, 0x1c
jmp 0x4fc3b2
mov eax, dword [esi + 0xc]
lea ecx, [eax + 0x10]
mov eax, dword [esi + 0xc]
movq xmm0, qword [eax + 8]
pshufd xmm0, xmm0, 0x55
movd ebx, xmm0
call fcn.005c4d30
mov ecx, dword [esi + 0xc]
and ebx, 0xff000000
or ebx, edx
movd xmm0, ebx
movd xmm1, eax
punpckldq xmm1, xmm0
movq qword [ecx + 8], xmm1
jmp 0x4fc020
mov eax, dword [esi + 0x28]
mov edi, dword [esi + 0x14]
jmp 0x4fbcbb
mov edi, dword [esi + 0x20]
mov edx, dword [esi + 8]
jmp 0x4fcbde
lea ecx, [edi + 0x10]
movq xmm0, qword [edi + 8]
pshufd xmm0, xmm0, 0x55
movd ebx, xmm0
call fcn.005c4d30
and ebx, 0xff000000
or ebx, edx
movd xmm0, ebx
movd xmm1, eax
punpckldq xmm1, xmm0
movq qword [edi + 8], xmm1
jmp 0x4fc29d
mov eax, dword [esi + 0xc]
lea ecx, [eax + 0x10]
mov eax, dword [esi + 0xc]
movq xmm0, qword [eax + 8]
pshufd xmm0, xmm0, 0x55
mov dword [esi + 8], edi
movd edi, xmm0
call fcn.005c4d30
mov ecx, dword [esi + 0xc]
and edi, 0xff000000
or edi, edx
movd xmm0, edi
mov edi, dword [esi + 8]
movd xmm1, eax
punpckldq xmm1, xmm0
movq qword [ecx + 8], xmm1
jmp 0x4fc063
push ebx
call fcn.004f0f10
mov edx, dword [esi + 0xc]
add esp, 4
cmp byte [esi + 8], 0
jne 0x4fcd52
jmp 0x4fd297
int3
movzx eax, al
mov ecx, dword [0x648780]
xor ecx, dword [ebx + 0x3c]
mov edx, dword [0x648784]
mov dword [esi + 0xe4], edx
mov dword [esi + 0xe0], ecx
mov dword [esi + 0xd0], str.WorkerThread_active
lea ecx, [esi + 0xe0]
push ecx
push 1
lea ecx, [esi + 0xd0]
push ecx
lea ecx, [esi + 0x128]
push ecx
push eax
call fcn.005c4fa0
add esp, 0x14
jmp 0x4fc7f8
push eax
call fcn.004f1260
add esp, 4
jmp 0x4fbcd8
lea ecx, [edi + 0x10]
movq xmm0, qword [edi + 8]
pshufd xmm0, xmm0, 0x55
movd dword [esi + 0x18], xmm0
mov dword [esi + 0x10], edx
call fcn.005c4d30
mov ecx, dword [esi + 0x18]
and ecx, 0xff000000
or ecx, edx
mov edx, dword [esi + 0x10]
movd xmm0, ecx
movd xmm1, eax
punpckldq xmm1, xmm0
movq qword [edi + 8], xmm1
jmp 0x4fc2e3
int3
xor ecx, ecx
call fcn.00523cf0
jmp 0x4fbbcd
int3
int3
int3
mov edx, dword [esi + 0x108]
mov ebx, dword [esi + 0x10c]
jmp 0x4fd225
mov eax, dword [ebx + 8]
mov ecx, 0xfffffffe
lock xadd dword [eax], ecx
cmp ecx, 3
jne 0x4fecf2
jmp 0x4ffe3a
push edx
call fcn.004f1260
add esp, 4
mov eax, dword [esi + 0xd0]
mov dword [esi + 0x20], eax
test eax, eax
je 0x4fcdd3
mov dword [esi + 8], edi
mov dword [esi + 0x30], ebx
mov ebx, dword [esi + 0xd4]
mov dword [esi + 0xd0], 0
test ebx, ebx
je 0x4fed7c
mov eax, dword [esi + 0x20]
mov al, byte [eax + 9]
and al, 0x7f
cmp al, 2
je 0x4fec98
lock dec dword [ebx + 0xc]
jne 0x4fed7c
lea eax, [ebx + 0x14]
mov dword [esi + 0x24], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4ffbc9
push dword [ebx + 0x18]
call dword [sym.imp.KERNEL32.dll_WakeAllConditionVariable]
mov edi, dword [esi + 0x24]
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4ffbd7
mov eax, dword [ebx + 0x1c]
mov dword [esi + 0x38], eax
mov eax, dword [ebx + 0x20]
mov dword [esi + 0x40], eax
pxor xmm0, xmm0
mov edi, dword [ebx + 0x24]
mov eax, dword [ebx + 0x28]
mov dword [esi + 0x34], eax
movdqu xmmword [ebx + 0x1c], xmm0
push dword [esi + 0x24]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ebx, edi
mov eax, edi
mov dword [esi + 0x24], edi
cmp edi, dword [esi + 0x34]
jne 0x4ffecd
push 0
push dword [esi + 0x38]
push 0x635c90
call fcn.005087f0
add esp, 0xc
mov eax, dword [esi + 0x20]
lock dec dword [eax + 4]
mov ebx, dword [esi + 0x30]
mov edi, dword [esi + 8]
jne 0x4fcddd
mov eax, dword [esi + 0x20]
mov dword [eax], 0x6229f0
mov ebx, dword [eax + 0x5c]
test ebx, ebx
jne 0x4ff88e
mov eax, dword [esi + 0x20]
lea ecx, [eax + 0x3c]
mov dword [esi + 0x24], ecx
mov ebx, dword [eax + 0x3c]
mov ecx, dword [eax + 0x40]
mov eax, ebx
cmp ecx, ebx
jne 0x4ffa4d
mov ecx, dword [esi + 0x20]
mov dword [ecx + 0x40], ebx
test eax, eax
jne 0x500082
mov ecx, dword [esi + 0x20]
mov eax, dword [ecx + 0x30]
mov ebx, dword [ecx + 0x34]
cmp ebx, eax
jne 0x4ffa71
push 0
mov edi, dword [esi + 0x20]
push dword [edi + 0x28]
push 0x635c90
call fcn.005087f0
add esp, 0xc
mov eax, dword [edi + 0x24]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jae 0x4fee12
push eax
call fcn.004f1260
add esp, 4
push dword [esi + 0x20]
call fcn.00564ea0
add esp, 4
mov ebx, dword [esi + 0x30]
mov edi, dword [esi + 8]
jmp 0x4fcddd
mov ecx, dword [esi + 0x10]
push 1
call fcn.004036f0
jmp 0x4fbbcd
lea ecx, [esi + 0xe0]
call fcn.005345e0
lea eax, [esi + 0xe0]
mov byte [eax + 0x30], 0
jmp 0x4fd170
mov ecx, dword [esi + 0x30]
or ecx, dword [esi + 0x24]
jne 0x4fd31e
mov ecx, eax
call fcn.005c4f10
jmp 0x4fd31e
int3
int3
int3
int3
int3
lock dec dword [ecx + 4]
jne 0x4fbafa
push 1
call fcn.0053f300
jmp 0x4fbafa
push ecx
call fcn.004ed190
add esp, 4
jmp 0x4fd671
cmp dword [esi + 0x1c], ebx
jb 0x4fe688
mov eax, dword [esi + 8]
mov eax, dword [eax + ebx*4]
mov dword [esi + 0xc], eax
test eax, eax
je 0x4fe68b
mov eax, dword [esi + 8]
mov dword [eax + ebx*4], 0
mov eax, dword [esi + 0xc]
mov ecx, dword [eax + 4]
call dword [0x63e64c]
push dword [esi + 0xc]
call ecx
add esp, 4
mov eax, dword [esi + 0xc]
lock dec dword [eax]
jne 0x4fef11
mov eax, dword [esi + 0xc]
mov ecx, dword [eax + 8]
call dword [0x63e64c]
push dword [esi + 0xc]
call ecx
add esp, 4
inc ebx
xor eax, eax
cmp ebx, dword [esi + 0x1c]
cmove ebx, eax
mov eax, dword [esi + 0x10]
cmp ebx, eax
mov ecx, dword [esi + 0x18]
jne 0x4feebd
cmp eax, ecx
jbe 0x4ffcf1
mov eax, dword [esi + 0x1c]
cmp eax, dword [esi + 0x10]
jb 0x4fe68e
mov eax, dword [esi + 0x18]
cmp eax, dword [esi + 0x10]
jg 0x4fe691
mov eax, dword [esi + 0x10]
shl eax, 2
mov ecx, dword [esi + 0x18]
shl ecx, 2
mov dword [esi + 0x10], eax
jmp 0x4fef75
mov ecx, dword [ebx + 8]
call dword [0x63e64c]
push ebx
call ecx
add esp, 4
mov ecx, dword [esi + 0x18]
add ecx, 4
mov eax, dword [esi + 0x10]
cmp eax, ecx
je 0x4fd989
mov dword [esi + 0x18], ecx
mov eax, dword [esi + 8]
mov ebx, dword [eax + ecx]
test ebx, ebx
je 0x4fef64
lock dec dword [ebx]
je 0x4fef55
jmp 0x4fef64
movzx eax, al
mov dword [esi + 0xd0], 0
push 2
lea ecx, [esi + 0xd0]
push ecx
lea ecx, [esi + 0x128]
push ecx
push eax
call fcn.0059d990
add esp, 0x10
jmp 0x4fd3c8
push eax
call fcn.004f1260
add esp, 4
jmp 0x4fbae8
push edi
call fcn.004ed190
add esp, 4
jmp 0x4fd762
mov eax, dword [0x6496b8]
mov dword [esi + 0xc], eax
mov ecx, dword [0x6496bc]
mov dword [esi + 8], ecx
push ecx
push eax
push ebx
push edi
call fcn.00588630
mov dword [esi + 0x18], eax
mov dword [esi + 0x2c], edx
mul dword [esi + 0xc]
mov dword [esi + 0x14], eax
mov ecx, dword [esi + 0x18]
imul ecx, dword [esi + 8]
add edx, ecx
mov eax, dword [esi + 0x2c]
imul ecx, eax, 0xf4240
mov dword [esi + 0x1c], ecx
imul eax, dword [esi + 0xc]
add eax, edx
sub edi, dword [esi + 0x14]
sbb ebx, eax
mov ecx, 0xf4240
mov eax, dword [esi + 0x18]
mul ecx
mov dword [esi + 0x18], eax
add edx, dword [esi + 0x1c]
mov dword [esi + 0x1c], edx
mov eax, edi
mul ecx
imul ecx, ebx, 0xf4240
add edx, ecx
push dword [esi + 8]
push dword [esi + 0xc]
push edx
push eax
call fcn.00588630
add eax, dword [esi + 0x18]
adc edx, dword [esi + 0x1c]
jmp 0x4fc498
push str....._third_partylibc_srcincludeoptional:801:_assertion_this__has_value___failed:_optional_operator_called_on_a_disengaged_value_n
push 0x624173
call fcn.00591ed0
movzx ecx, al
lea eax, [esi + 0xd0]
mov dword [esi + 0x128], eax
lea eax, [esi + 0x134]
mov dword [eax], str.ScopedBlockingCallWithBaseSyncPrimitives
lea edx, [esi + 0x124]
mov eax, edi
lea edi, [esi + 0x128]
push edi
mov edi, eax
lea eax, [esi + 0x134]
push eax
call fcn.005b9160
add esp, 8
jmp 0x4fd196
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x4fd94f
mov ecx, dword [edi + 0x2c]
jbe 0x4ff0e6
cmp ecx, ebx
jb 0x4fe694
cmp eax, ebx
jg 0x4fe697
imul eax, eax, 0x58
mov ecx, dword [edi + 0x28]
add ecx, eax
imul edx, ebx, 0x58
sub edx, eax
mov dword [esi + 0xc], edx
mov ebx, ecx
call fcn.005647d0
add ebx, 0x58
mov ecx, ebx
add dword [esi + 0xc], 0xffffffa8
jne 0x4ff0cf
jmp 0x4fd8d3
cmp ecx, eax
jb 0x4fe69a
jl 0x4fe69d
je 0x4ff11f
imul eax, eax, 0x58
mov edx, dword [edi + 0x28]
add edx, eax
imul ecx, ecx, 0x58
sub ecx, eax
mov dword [esi + 8], ecx
mov ecx, edx
mov dword [esi + 0xc], edx
call fcn.005647d0
mov edx, dword [esi + 0xc]
add edx, 0x58
add dword [esi + 8], 0xffffffa8
jne 0x4ff106
mov eax, dword [edi + 0x2c]
cmp eax, ebx
jb 0x4fe6a0
test ebx, ebx
js 0x4fe6a3
je 0x4fd8d3
mov eax, dword [edi + 0x28]
imul ecx, ebx, 0x58
mov dword [esi + 0xc], ecx
mov ebx, eax
mov ecx, eax
call fcn.005647d0
add ebx, 0x58
mov eax, ebx
add dword [esi + 0xc], 0xffffffa8
jne 0x4ff13e
jmp 0x4fd8d3
add ecx, 4
jmp 0x4fd02d
lea ecx, [esi + 0x104]
lea eax, [esi + 0xd0]
push eax
call fcn.005d2ed0
mov ecx, dword [esi + 0xd0]
test ecx, ecx
mov ebx, dword [esi + 0x24]
je 0x4fd246
lock dec dword [ecx + 4]
jne 0x4fd246
push 1
call fcn.004036f0
jmp 0x4fd246
int3
int3
call fcn.005c4b60
jmp 0x4fdb24
mov eax, dword [0x6496b8]
mov dword [esi + 0x1c], eax
mov ecx, dword [0x6496bc]
mov dword [esi + 0x14], ecx
push ecx
push eax
push ebx
push edi
call fcn.00588630
mov dword [esi + 0x3c], eax
mov dword [esi + 0x40], edx
mul dword [esi + 0x1c]
mov dword [esi + 0x38], eax
mov ecx, dword [esi + 0x3c]
imul ecx, dword [esi + 0x14]
add edx, ecx
mov eax, dword [esi + 0x40]
imul ecx, eax, 0xf4240
mov dword [esi + 0x34], ecx
imul eax, dword [esi + 0x1c]
add eax, edx
sub edi, dword [esi + 0x38]
sbb ebx, eax
mov ecx, 0xf4240
mov eax, dword [esi + 0x3c]
mul ecx
mov dword [esi + 0x3c], eax
add edx, dword [esi + 0x34]
mov dword [esi + 0x34], edx
mov eax, edi
mul ecx
imul ecx, ebx, 0xf4240
add edx, ecx
push dword [esi + 0x14]
push dword [esi + 0x1c]
push edx
push eax
call fcn.00588630
mov ebx, edx
add eax, dword [esi + 0x3c]
adc ebx, dword [esi + 0x34]
mov edi, dword [esi + 8]
jmp 0x4fc723
movzx eax, al
mov ecx, dword [0x648784]
mov edx, dword [0x648780]
xor edx, dword [esi + 0x10]
mov dword [esi + 0xd4], ecx
mov dword [esi + 0xd0], edx
mov dword [esi + 0xc8], str.WorkerThreadWaitableEvent::WakeUp
lea ecx, [esi + 0xd0]
push ecx
push 3
lea ecx, [esi + 0xc8]
push ecx
lea ecx, [esi + 0xc0]
push ecx
push eax
call fcn.005c0c80
mov ecx, dword [esi + 0x10]
add esp, 0x14
jmp 0x4fbba7
mov ecx, edi
call fcn.004ed960
push edi
call fcn.00564ea0
add esp, 4
jmp 0x4fd486
xor eax, eax
jmp 0x4fba23
mov dword [esi + 0xc], edx
mov dword [esi + 8], ecx
add dword [esi + 0xc], 0xffffffa8
je 0x4fe669
mov ecx, dword [esi + 0xc]
call fcn.005647d0
cmp dword [esi + 0xc], ebx
jne 0x4ff29c
mov ecx, dword [esi + 8]
mov eax, dword [ecx]
jmp 0x4fd8ba
mov edi, dword [esi + 0xc]
lea ecx, [edi + 0x10]
movq xmm0, qword [edi + 8]
pshufd xmm0, xmm0, 0x55
movd ebx, xmm0
call fcn.005c4d30
and ebx, 0xff000000
or ebx, edx
movd xmm0, ebx
movd xmm1, eax
punpckldq xmm1, xmm0
movq qword [edi + 8], xmm1
jmp 0x4fe607
mov ebx, dword [0x6496b8]
mov dword [esi + 0x30], ebx
mov eax, dword [0x6496bc]
mov dword [esi + 0x20], eax
push eax
push ebx
push dword [esi + 0x2c]
push edx
mov dword [esi + 0x24], edx
call fcn.00588630
mov dword [esi + 0x34], eax
mov ecx, edx
mov eax, dword [esi + 0x34]
mul ebx
mov dword [esi + 0x38], eax
mov eax, dword [esi + 0x34]
mov ebx, eax
imul ebx, dword [esi + 0x20]
add edx, ebx
imul ebx, ecx, 0xf4240
imul ecx, dword [esi + 0x30]
add ecx, edx
mov edx, dword [esi + 0x38]
sub dword [esi + 0x24], edx
sbb dword [esi + 0x2c], ecx
mov ecx, 0xf4240
mul ecx
mov dword [esi + 0x34], eax
add edx, ebx
mov dword [esi + 0x38], edx
mov ebx, dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov eax, dword [esi + 0x24]
mul ecx
imul ecx, dword [esi + 0x2c], 0xf4240
add edx, ecx
push dword [esi + 0x20]
push dword [esi + 0x30]
push edx
push eax
call fcn.00588630
add eax, dword [esi + 0x34]
adc edx, dword [esi + 0x38]
jmp 0x4fbd3e
lea ecx, [edi + 0x10]
movq xmm0, qword [edi + 8]
pshufd xmm0, xmm0, 0x55
movd ebx, xmm0
call fcn.005c4d30
and ebx, 0xff000000
or ebx, edx
movd xmm0, ebx
movd xmm1, eax
punpckldq xmm1, xmm0
mov eax, dword [esi + 0xc]
movq qword [eax + 8], xmm1
jmp 0x4fe649
mov eax, dword [0x6496b8]
mov dword [esi + 0xc], eax
mov ecx, dword [0x6496bc]
mov dword [esi + 8], ecx
push ecx
push eax
push ebx
push edi
call fcn.00588630
mov dword [esi + 0x3c], eax
mov dword [esi + 0x40], edx
mul dword [esi + 0xc]
mov dword [esi + 0x38], eax
mov ecx, dword [esi + 0x3c]
imul ecx, dword [esi + 8]
add edx, ecx
mov eax, dword [esi + 0x40]
imul ecx, eax, 0xf4240
mov dword [esi + 0x34], ecx
imul eax, dword [esi + 0xc]
add eax, edx
sub edi, dword [esi + 0x38]
sbb ebx, eax
mov ecx, 0xf4240
mov eax, dword [esi + 0x3c]
mul ecx
mov dword [esi + 0x3c], eax
add edx, dword [esi + 0x34]
mov dword [esi + 0x34], edx
mov eax, edi
mul ecx
imul ecx, ebx, 0xf4240
add edx, ecx
push dword [esi + 8]
push dword [esi + 0xc]
push edx
push eax
call fcn.00588630
add eax, dword [esi + 0x3c]
adc edx, dword [esi + 0x34]
jmp 0x4fd34a
mov eax, dword [edi]
mov ebx, dword [eax + 4]
mov ecx, ebx
call dword [0x63e64c]
mov ecx, edi
call ebx
mov ebx, dword [esi + 0x28]
jmp 0x4fb9bc
mov eax, dword [edi]
mov ebx, dword [eax + 8]
mov ecx, ebx
call dword [0x63e64c]
mov ecx, edi
call ebx
mov eax, dword [esi + 0x28]
jmp 0x4fdad7
mov ebx, ecx
call fcn.005d2de0
push dword [ebx]
call fcn.00564ea0
add esp, 4
jmp 0x4fd8c5
movzx eax, al
mov ecx, dword [0x648784]
mov dword [esi + 8], edx
mov edx, dword [0x648780]
xor edx, dword [esi + 8]
mov dword [esi + 0xd4], ecx
mov dword [esi + 0xd0], edx
mov dword [esi + 0xc8], str.WaitableEvent::Signal
lea ecx, [esi + 0xd0]
push ecx
push 3
lea ecx, [esi + 0xc8]
push ecx
lea ecx, [esi + 0xc0]
push ecx
push eax
call fcn.005c0c80
mov edx, dword [esi + 8]
mov ecx, dword [esi + 0x10]
add esp, 0x14
jmp 0x4fbbb3
movzx eax, al
lea ecx, [esi + 0xe0]
mov dword [ecx], str.WorkerThread_born
lea edx, [esi + 0xa0]
push 8
push 0x49
push 0x626958
push 3
push ecx
push edx
push eax
call fcn.005b6ec0
add esp, 0x1c
jmp 0x4fb997
movzx eax, al
lea ecx, [esi + 0xe0]
mov dword [ecx], str.WorkerThread_active
lea edx, [esi + 0xa0]
push 0
push 0x42
push 0x626958
push 1
push ecx
push edx
push eax
call fcn.005b6ec0
add esp, 0x1c
jmp 0x4fb9ae
movzx eax, al
mov dword [esi + 0xe0], str.WorkerThread_active
lea ecx, [esi + 0xa0]
push 0
push 0x45
push 0x626958
push 2
lea edx, [esi + 0xe0]
push edx
push ecx
push eax
call fcn.005b6ec0
add esp, 0x1c
jmp 0x4fdaff
movzx eax, al
mov dword [esi + 0xe0], str.WorkerThread_dead
lea ecx, [esi + 0xa0]
push 8
push 0x49
push 0x626958
push 3
lea edx, [esi + 0xe0]
push edx
push ecx
push eax
call fcn.005b6ec0
add esp, 0x1c
jmp 0x4fdb16
mov ecx, dword [esi + 0xf8]
jmp 0x4fdc8c
xor eax, eax
ucomisd xmm0, qword [0x62fc90]
mov ecx, 0
mov edi, edx
mov edx, 0x7fffffff
cmovae ecx, edx
cmovae eax, edi
jmp 0x4fc416
mov eax, dword [0x6496b8]
mov dword [esi + 0x18], eax
mov ecx, dword [0x6496bc]
mov dword [esi + 0x1c], ecx
push ecx
push eax
push ebx
push edi
call fcn.00588630
mov dword [esi + 0x14], eax
mov dword [esi + 0x3c], edx
mul dword [esi + 0x18]
mov dword [esi + 0x24], eax
mov ecx, dword [esi + 0x14]
imul ecx, dword [esi + 0x1c]
add edx, ecx
mov eax, dword [esi + 0x3c]
imul ecx, eax, 0xf4240
mov dword [esi + 0x30], ecx
imul eax, dword [esi + 0x18]
add eax, edx
sub edi, dword [esi + 0x24]
sbb ebx, eax
mov ecx, 0xf4240
mov eax, dword [esi + 0x14]
mul ecx
mov dword [esi + 0x14], eax
add edx, dword [esi + 0x30]
mov dword [esi + 0x30], edx
mov eax, edi
mul ecx
imul ecx, ebx, 0xf4240
add edx, ecx
push dword [esi + 0x1c]
push dword [esi + 0x18]
push edx
push eax
call fcn.00588630
mov ecx, edx
add eax, dword [esi + 0x14]
adc ecx, dword [esi + 0x30]
jmp 0x4fd56e
add ecx, 0xd8
call fcn.005342b0
jmp 0x4fdde3
push 1
call fcn.004036f0
jmp 0x4fddf4
push 1
call fcn.004036f0
jmp 0x4fdc56
mov eax, dword [esi + 0xc]
mov ecx, dword [eax + 0x60]
mov eax, ebx
cmp ecx, ebx
je 0x4ff6a8
mov edx, ecx
mov edi, ecx
add edi, 0xfffffff4
je 0x4fe669
mov ecx, dword [edx - 4]
test ecx, ecx
je 0x4ff69c
add edx, 0xfffffff8
mov dword [esi + 8], edx
call dword [0x63e64c]
push dword [esi + 8]
call ecx
add esp, 4
mov edx, edi
cmp edi, ebx
jne 0x4ff678
mov eax, dword [esi + 0xc]
mov eax, dword [eax + 0x5c]
mov ecx, dword [esi + 0xc]
mov dword [ecx + 0x60], ebx
push eax
call fcn.00564ea0
add esp, 4
jmp 0x4fe9f3
mov dword [esi + 0x30], ebx
mov eax, edx
mov dword [esi + 8], edx
cmp dword [esi + 0x20], edx
jb 0x4fee72
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 8]
mov eax, dword [eax + ecx*4]
mov dword [esi + 0x10], eax
test eax, eax
je 0x4fee75
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 8]
mov dword [eax + ecx*4], 0
mov ebx, dword [esi + 0x10]
mov ecx, dword [ebx + 4]
call dword [0x63e64c]
push ebx
call ecx
add esp, 4
lock dec dword [ebx]
jne 0x4ff717
push dword [esi + 0xf8]
call fcn.00564ea0
add esp, 4
jmp 0x4fdc9d
push dword [esi + 0x10]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x4fdfaa
push 1
call fcn.004036f0
jmp 0x4fdc2e
mov eax, dword [esi + 0x20]
mov edi, dword [eax + 0x60]
mov eax, ebx
cmp edi, ebx
je 0x4ff8cc
mov dword [esi + 0x24], edi
add dword [esi + 0x24], 0xfffffff4
je 0x4fe669
mov ecx, dword [edi - 4]
test ecx, ecx
je 0x4ff8bd
add edi, 0xfffffff8
call dword [0x63e64c]
push edi
call ecx
add esp, 4
mov eax, dword [esi + 0x24]
mov edi, eax
cmp eax, ebx
jne 0x4ff89d
mov eax, dword [esi + 0x20]
mov eax, dword [eax + 0x5c]
mov ecx, dword [esi + 0x20]
mov dword [ecx + 0x60], ebx
push eax
call fcn.00564ea0
add esp, 4
jmp 0x4feda3
xor eax, eax
dec eax
mov dword [esi + 0xe0], eax
mov eax, 0x7fffffff
mov dword [esi + 0xe4], eax
jmp 0x4fdd78
mov dword [esi + 8], ecx
mov dword [esi + 0x1c], eax
mov dword [esi + 0x30], ebx
add dword [esi + 8], 0xffffffa8
je 0x4fe669
mov ebx, dword [esi + 8]
mov ecx, ebx
call fcn.005647d0
cmp ebx, dword [esi + 0x1c]
jne 0x4ff902
mov eax, dword [esi + 0x10]
mov eax, dword [eax]
mov dword [esi + 8], eax
mov ebx, dword [esi + 0x30]
mov eax, dword [esi + 0x1c]
jmp 0x4fdf0a
xor ecx, ecx
mov ebx, dword [esi + 0x28]
jmp 0x4fc246
mov ecx, dword [esi + 0x10]
mov dword [esi + 0x30], ebx
call fcn.005d2de0
mov eax, dword [esi + 0x10]
push dword [eax]
call fcn.00564ea0
mov ebx, dword [esi + 0x30]
add esp, 4
jmp 0x4fdf17
push dword [esi + 0x1c]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x4fe3f1
xor eax, eax
ucomisd xmm0, qword [0x62f108]
mov ebx, 0x7fffffff
cmovb ebx, eax
jmp 0x4fe349
xor eax, eax
ucomisd xmm0, qword [0x62f108]
mov edx, 0x7fffffff
cmovb edx, eax
jmp 0x4fe3c7
mov eax, dword [esi + 0x18]
cmp eax, dword [esi + 0x14]
mov eax, dword [esi + 0x24]
sbb eax, dword [esi + 0x1c]
setl al
movzx eax, al
movsd xmm0, qword [eax*8 + 0x62f0f0]
jmp 0x4fe300
push dword [esi + 8]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x4fe967
mov dword [esi + 0xd0], eax
mov dword [esi + 0xd4], edx
sub esp, 0xc
movq xmm0, qword [esi + 0xd0]
movq qword [esp + 4], xmm0
lea ebx, [esi + 0x134]
mov dword [esp], ebx
call fcn.004ed880
add esp, 0xc
mov ebx, dword [ebx]
test ebx, ebx
je 0x4fe284
lock dec dword [ebx]
jne 0x4fe284
mov ecx, ebx
call fcn.004ed960
push ebx
call fcn.00564ea0
add esp, 4
jmp 0x4fe284
push edi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x4ffa2f
lea edi, [ebx + 0x2c]
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4ffa18
mov ecx, dword [ebx + 0x30]
call fcn.0053f280
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x4fe948
mov eax, 3
jmp 0x4fe211
mov edi, ecx
add edi, 0xffffffa8
je 0x4fe669
mov ecx, edi
mov dword [esi + 0x34], edi
call fcn.005647d0
cmp dword [esi + 0x34], ebx
jne 0x4ffa4f
mov eax, dword [esi + 0x24]
mov eax, dword [eax]
jmp 0x4fedbc
mov ecx, dword [esi + 0x20]
mov ecx, dword [ecx + 0x2c]
ja 0x4ffe63
cmp ecx, eax
jb 0x4fe77c
jl 0x4fe77f
je 0x4ffab6
imul eax, eax, 0x58
mov edx, dword [esi + 0x20]
mov edi, dword [edx + 0x28]
add edi, eax
imul ecx, ecx, 0x58
sub ecx, eax
mov dword [esi + 0x24], ecx
mov ecx, edi
call fcn.005647d0
add edi, 0x58
add dword [esi + 0x24], 0xffffffa8
jne 0x4ffaa0
mov eax, dword [esi + 0x20]
mov eax, dword [eax + 0x2c]
cmp eax, ebx
jb 0x4fe782
test ebx, ebx
js 0x4fe785
je 0x4feddb
mov eax, dword [esi + 0x20]
mov edi, dword [eax + 0x28]
imul ebx, ebx, 0x58
mov ecx, edi
call fcn.005647d0
add edi, 0x58
add ebx, 0xffffffa8
jne 0x4ffad5
jmp 0x4feddb
mov eax, dword [esi + 0x1c]
cmp eax, dword [esi + 8]
jb 0x4fe6cd
jl 0x4fe6d0
je 0x4ffb36
shl dword [esi + 0x1c], 2
shl dword [esi + 8], 2
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 8]
mov ebx, dword [eax + ecx]
test ebx, ebx
je 0x4ffb26
lock dec dword [ebx]
jne 0x4ffb26
mov ecx, dword [ebx + 8]
call dword [0x63e64c]
push ebx
call ecx
add esp, 4
mov ecx, dword [esi + 8]
add ecx, 4
mov eax, ecx
mov dword [esi + 8], ecx
cmp dword [esi + 0x1c], ecx
jne 0x4ffb05
cmp dword [esi + 0x10], 0
js 0x4fe6d3
je 0x500030
shl dword [esi + 0x10], 2
xor ebx, ebx
mov eax, dword [esi + 0x18]
mov edi, dword [eax + ebx]
test edi, edi
je 0x4ffb6a
lock dec dword [edi]
jne 0x4ffb6a
mov ecx, dword [edi + 8]
call dword [0x63e64c]
push edi
call ecx
add esp, 4
add ebx, 4
cmp dword [esi + 0x10], ebx
jne 0x4ffb4c
jmp 0x500030
mov ecx, edi
call fcn.005c4f10
jmp 0x4fd6d3
push ebx
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x4fe5d3
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x4fe592
add ebx, 0xffffffa8
je 0x4fe669
mov ecx, ebx
call fcn.005647d0
cmp ebx, edi
jne 0x4ffb9d
mov eax, dword [esi + 8]
mov eax, dword [eax]
jmp 0x4fea0c
push dword [esi + 8]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x4fe989
push dword [esi + 0x24]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x4fed11
push dword [esi + 0x24]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x4fed33
mov eax, dword [esi + 0x40]
cmp eax, dword [esi + 0x24]
jb 0x4fe788
jl 0x4fe78b
je 0x4ffc32
shl dword [esi + 0x40], 2
shl dword [esi + 0x24], 2
mov eax, dword [esi + 0x38]
mov ecx, dword [esi + 0x24]
mov ebx, dword [eax + ecx]
test ebx, ebx
je 0x4ffc22
lock dec dword [ebx]
jne 0x4ffc22
mov ecx, dword [ebx + 8]
call dword [0x63e64c]
push ebx
call ecx
add esp, 4
mov ecx, dword [esi + 0x24]
add ecx, 4
mov eax, ecx
mov dword [esi + 0x24], ecx
cmp dword [esi + 0x40], ecx
jne 0x4ffc01
cmp dword [esi + 0x34], 0
js 0x4fe78e
je 0x4fed6a
shl dword [esi + 0x34], 2
xor ebx, ebx
mov eax, dword [esi + 0x38]
mov edi, dword [eax + ebx]
test edi, edi
je 0x4ffc66
lock dec dword [edi]
jne 0x4ffc66
mov ecx, dword [edi + 8]
call dword [0x63e64c]
push edi
call ecx
add esp, 4
add ebx, 4
cmp dword [esi + 0x34], ebx
jne 0x4ffc48
jmp 0x4fed6a
mov ecx, dword [esi + 0xc]
mov ecx, dword [ecx + 0x2c]
ja 0x4ffe97
cmp ecx, eax
jb 0x4fe6c1
jl 0x4fe6c4
je 0x4ffcba
imul eax, eax, 0x58
mov edx, dword [esi + 0xc]
mov edx, dword [edx + 0x28]
add edx, eax
imul edi, ecx, 0x58
sub edi, eax
mov ecx, edx
mov dword [esi + 8], edx
call fcn.005647d0
mov edx, dword [esi + 8]
add edx, 0x58
add edi, 0xffffffa8
jne 0x4ffc9f
mov eax, dword [esi + 0xc]
mov eax, dword [eax + 0x2c]
cmp eax, ebx
jb 0x4fe6c7
test ebx, ebx
js 0x4fe6ca
je 0x4fea2b
mov eax, dword [esi + 0xc]
mov eax, dword [eax + 0x28]
imul edi, ebx, 0x58
mov ebx, eax
mov ecx, eax
call fcn.005647d0
add ebx, 0x58
mov eax, ebx
add edi, 0xffffffa8
jne 0x4ffcd9
jmp 0x4fea2b
mov eax, dword [esi + 0x1c]
cmp eax, dword [esi + 0x18]
jb 0x4fe6b8
jl 0x4fe6bb
je 0x4ffd3e
shl dword [esi + 0x1c], 2
shl dword [esi + 0x18], 2
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0x18]
mov ebx, dword [eax + ecx]
test ebx, ebx
je 0x4ffd2e
lock dec dword [ebx]
jne 0x4ffd2e
mov ecx, dword [ebx + 8]
call dword [0x63e64c]
push ebx
call ecx
add esp, 4
mov ecx, dword [esi + 0x18]
add ecx, 4
mov eax, ecx
mov dword [esi + 0x18], ecx
cmp dword [esi + 0x1c], ecx
jne 0x4ffd0d
cmp dword [esi + 0x10], 0
js 0x4fe6be
mov eax, dword [esi + 0x10]
je 0x4fd989
shl eax, 2
xor ebx, ebx
mov dword [esi + 0x10], eax
mov eax, dword [esi + 8]
mov ecx, dword [eax + ebx]
test ecx, ecx
je 0x4ffd7e
mov eax, ecx
lock dec dword [ecx]
jne 0x4ffd7e
mov dword [esi + 0xc], eax
mov ecx, dword [eax + 8]
call dword [0x63e64c]
push dword [esi + 0xc]
call ecx
add esp, 4
add ebx, 4
mov eax, dword [esi + 0x10]
cmp eax, ebx
jne 0x4ffd56
jmp 0x4fd989
lea edi, [ebx + 0x2c]
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x4ffe4f
push edi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
mov ecx, dword [ebx + 0x30]
call fcn.0053f280
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x4fecf2
cmp ecx, ebx
jb 0x4fe76a
cmp eax, ebx
jg 0x4fe76d
imul eax, eax, 0x58
mov ecx, dword [esi + 0x20]
mov edi, dword [ecx + 0x28]
add edi, eax
imul ebx, ebx, 0x58
sub ebx, eax
mov ecx, edi
call fcn.005647d0
add edi, 0x58
add ebx, 0xffffffa8
jne 0x4ffe83
jmp 0x4feddb
cmp ecx, ebx
jb 0x4fe6a6
cmp eax, ebx
jg 0x4fe6a9
imul eax, eax, 0x58
mov ecx, dword [esi + 0xc]
mov ecx, dword [ecx + 0x28]
add ecx, eax
imul edi, ebx, 0x58
sub edi, eax
mov ebx, ecx
call fcn.005647d0
add ebx, 0x58
mov ecx, ebx
add edi, 0xffffffa8
jne 0x4ffeb7
jmp 0x4fea2b
cmp dword [esi + 0x40], ebx
jb 0x4fe770
mov eax, dword [esi + 0x38]
mov edi, dword [eax + ebx*4]
test edi, edi
je 0x4fe773
mov eax, dword [esi + 0x38]
mov dword [eax + ebx*4], 0
mov ecx, dword [edi + 4]
call dword [0x63e64c]
push edi
call ecx
add esp, 4
lock dec dword [edi]
jne 0x4fff11
mov ecx, dword [edi + 8]
call dword [0x63e64c]
push edi
call ecx
add esp, 4
inc ebx
xor eax, eax
cmp ebx, dword [esi + 0x40]
cmove ebx, eax
cmp ebx, dword [esi + 0x34]
jne 0x4ffecd
mov eax, dword [esi + 0x24]
cmp dword [esi + 0x34], eax
jbe 0x4ffbe5
mov eax, dword [esi + 0x40]
cmp eax, dword [esi + 0x34]
jb 0x4fe776
mov eax, dword [esi + 0x24]
cmp eax, dword [esi + 0x34]
jg 0x4fe779
shl dword [esi + 0x34], 2
shl dword [esi + 0x24], 2
mov eax, dword [esi + 0x38]
mov ecx, dword [esi + 0x24]
mov ebx, dword [eax + ecx]
test ebx, ebx
je 0x4fff6c
lock dec dword [ebx]
jne 0x4fff6c
mov ecx, dword [ebx + 8]
call dword [0x63e64c]
push ebx
call ecx
add esp, 4
mov ecx, dword [esi + 0x24]
add ecx, 4
mov eax, ecx
mov dword [esi + 0x24], ecx
cmp dword [esi + 0x34], ecx
jne 0x4fff4b
jmp 0x4fed6a
cmp dword [esi + 0x1c], ebx
jb 0x4fe6ac
mov eax, dword [esi + 0x18]
mov edi, dword [eax + ebx*4]
test edi, edi
je 0x4fe6af
mov eax, dword [esi + 0x18]
mov dword [eax + ebx*4], 0
mov ecx, dword [edi + 4]
call dword [0x63e64c]
push edi
call ecx
add esp, 4
lock dec dword [edi]
jne 0x4fffc5
mov ecx, dword [edi + 8]
call dword [0x63e64c]
push edi
call ecx
add esp, 4
inc ebx
xor eax, eax
cmp ebx, dword [esi + 0x1c]
cmove ebx, eax
cmp ebx, dword [esi + 0x10]
jne 0x4fff81
mov eax, dword [esi + 8]
cmp dword [esi + 0x10], eax
jbe 0x4ffae9
mov eax, dword [esi + 0x1c]
cmp eax, dword [esi + 0x10]
jb 0x4fe6b2
mov eax, dword [esi + 8]
cmp eax, dword [esi + 0x10]
jg 0x4fe6b5
shl dword [esi + 0x10], 2
shl dword [esi + 8], 2
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 8]
mov ebx, dword [eax + ecx]
test ebx, ebx
je 0x500020
lock dec dword [ebx]
jne 0x500020
mov ecx, dword [ebx + 8]
call dword [0x63e64c]
push ebx
call ecx
add esp, 4
mov ecx, dword [esi + 8]
add ecx, 4
mov eax, ecx
mov dword [esi + 8], ecx
cmp dword [esi + 0x10], ecx
jne 0x4fffff
push 0
push dword [esi + 0x18]
push 0x635c90
call fcn.005087f0
add esp, 0xc
cmp dword [esi + 0xc], 0
je 0x4fc1d1
jmp 0x4fe9d2
push 1
mov dword [esi + 0x14], edx
mov dword [esi + 0x2c], eax
call fcn.004036f0
mov eax, dword [esi + 0x2c]
mov edx, dword [esi + 0x14]
jmp 0x4fe4ac
mov edi, dword [esi + 8]
mov ecx, edi
call fcn.005d2de0
push dword [edi]
call fcn.00564ea0
add esp, 4
jmp 0x4fea1a
mov edi, dword [esi + 0x24]
mov ecx, edi
call fcn.005d2de0
push dword [edi]
call fcn.00564ea0
add esp, 4
jmp 0x4fedca