Function at 0x5115f0
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 [0x64a040]
xor eax, ebp
mov dword [esi + 0x138], eax
mov dword [esi + 0xa0], 0xa
mov al, byte [0x64f42e]
test al, al
jne 0x515151
mov dword [esi + 0xa0], 0xa
mov al, byte [0x64f42e]
test al, al
jne 0x515181
mov edi, dword [ebx + 0x2c]
test edi, edi
mov dword [esi + 0x28], ebx
jne 0x5150b3
mov eax, dword [ebx]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x6445dc]
mov ecx, ebx
call edi
mov edi, eax
mov eax, dword [eax]
mov ebx, dword [eax + 8]
mov ecx, ebx
call dword [0x6445dc]
mov ecx, edi
mov edi, dword [esi + 0x28]
push edi
call ebx
mov eax, dword [0x65b058]
test eax, eax
je 0x51170b
mov eax, dword [edi + 0x24]
mov eax, dword [eax + 8]
mov eax, dword [eax]
test al, 1
mov ebx, edi
jne 0x511695
cmp dword [ebx + 0x30], 0
je 0x5116fb
mov ecx, dword [0x65b054]
test ecx, ecx
je 0x514f18
lea edi, [esi + 0xe0]
push 2
push edi
call fcn.005aac90
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 [0x64d82c]
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 0x511fd8
mov dword [esi + 0x48], 0
mov dword [esi + 0x44], 0
jmp 0x5116bb
mov dword [esi + 0x48], 0
mov dword [esi + 0x44], 0
mov ebx, edi
jmp 0x5116bb
mov ecx, edi
call dword [0x6445dc]
mov ecx, ebx
mov ebx, dword [esi + 0x28]
push ebx
lea eax, [esi + 0xe0]
push eax
call edi
mov edi, dword [esi + 0xc]
test al, al
jne 0x512ac3
xor eax, eax
mov dword [esi + 0x128], eax
mov dword [esi + 0x12c], eax
mov ebx, dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x511a51
mov ecx, dword [esi + 0xec]
mov eax, edi
cmp ecx, edi
je 0x5117c8
mov edx, ecx
add ecx, 0xfffffff8
je 0x51431a
mov ebx, dword [ecx]
test ebx, ebx
mov dword [esi + 0xc], ecx
jne 0x513b77
mov dword [ecx], 0
test ebx, ebx
jne 0x513ba1
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 + 0x6527ec]
bt edx, ecx
jb 0x514b49
mov dword [ebx - 4], 0
mov ecx, dword [ebx - 8]
test ecx, ecx
jne 0x514b25
mov ecx, dword [esi + 0xc]
cmp ecx, edi
jne 0x511764
mov eax, dword [esi + 0xe8]
mov dword [esi + 0xec], edi
push eax
call fcn.0057dc2b
add esp, 4
mov ebx, dword [esi + 0x28]
jmp 0x511b13
mov dword [edi + 8], edx
mov ecx, dword [edx + 8]
jmp 0x5117f0
mov edi, dword [eax + 4]
mov dword [edx], edi
test edi, edi
jne 0x5117df
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 0x5118fe
mov dword [esi + 0xc0], 0x1a8
mov al, byte [0x64f5cc]
test al, al
je 0x511874
jmp 0x5150fb
shr ebx, 1
shl ebx, 2
xor edi, edi
mov dword [esi + 0xc], eax
mov ecx, dword [eax + edi]
test ecx, ecx
je 0x51491c
xor eax, eax
inc eax
lock xadd dword [ecx + 4], eax
cmp eax, 0x7fffffff
je 0x5147f4
mov dword [esi + 0xc0], 0x9c
mov al, byte [0x64f4c0]
test al, al
mov dword [esi + 0x10], ecx
jne 0x514eb3
mov eax, dword [ecx + 0x48]
lea edx, [eax + 0x10]
cmp byte [eax + 0x14], 0
je 0x51180e
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 0x514ae1
add edi, 4
cmp ebx, edi
mov eax, dword [esi + 0xc]
jne 0x511830
mov ebx, dword [esi + 0x104]
jmp 0x511a95
lea ecx, [esi + 0x104]
call fcn.00547ef0
jmp 0x511a9d
call dword [0x6445dc]
lea eax, [esi + 0xd0]
push eax
call ecx
add esp, 4
mov eax, dword [esi + 0xd0]
mov edx, dword [esi + 0xd4]
jmp 0x511a07
mov ecx, edi
mov ebx, edx
call dword [0x6445dc]
mov ecx, ebx
mov ebx, dword [esi + 0x28]
push ebx
lea eax, [esi + 0x128]
push eax
call edi
jmp 0x511b33
cmp dword [edx], eax
je 0x5117e7
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 0x511915
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 + 0x6527ec]
bt edx, ecx
mov ebx, dword [esi + 0x28]
jb 0x5147e3
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 0x511977
mov ecx, dword [esi + 0x30]
cmp ecx, dword [esi + 0x2c]
je 0x511a15
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 0x5140ea
mov ecx, dword [0x64c080]
cmp ecx, 0x56aca0
jne 0x5118b3
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 ebx, ecx
mov eax, ecx
mov ecx, 0x863
sbb eax, ecx
jge 0x514f1f
mov eax, edx
mov ecx, 0xf4240
mul ecx
imul ecx, ebx, 0xf4240
add ecx, edx
push dword [0x64f6a4]
push dword [0x64f6a0]
push ecx
push eax
call fcn.005a13d0
mov ebx, dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
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 + 0x6527ec]
bt ecx, eax
jb 0x5144f9
mov eax, dword [esi + 0x1c]
mov eax, dword [eax*4 + 0x6527ec]
mov ecx, dword [esi + 0x18]
bt eax, ecx
mov edi, dword [esi + 0x10]
jb 0x5144c8
push edi
call ebx
mov dword [esi + 0xe0], 0x628a9c
mov ebx, dword [esi + 0x104]
lea eax, [esi + 0x108]
test bl, 1
jne 0x514411
cmp ebx, 2
jae 0x511826
test ebx, ebx
jne 0x5118a3
mov dword [esi + 0xe0], 0x6289e8
mov edx, dword [esi + 0xf4]
mov eax, edx
lea edi, [esi + 0xf8]
and eax, 1
jne 0x51441c
mov ebx, edx
shr ebx, 1
mov cl, 1
cmp edx, 2
jae 0x51397f
lea edx, [esi + 0xf8]
test eax, eax
jne 0x514427
test cl, cl
je 0x513902
test eax, eax
jne 0x5144d8
mov dword [esi + 0xf4], 0
cmp byte [esi + 0x100], 0
mov ebx, dword [esi + 0x28]
jne 0x513dd2
mov edi, dword [esi + 0xe8]
test edi, edi
jne 0x511758
mov eax, dword [esi + 0xe4]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x6527ec]
bt edx, ecx
jb 0x5144eb
mov eax, dword [esi + 0x128]
test eax, eax
je 0x513398
mov dword [esi + 0xc8], eax
lea eax, [esi + 0xc8]
push eax
call fcn.00505000
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.00515d50
mov esp, edi
mov eax, dword [esi + 0x128]
test eax, eax
jne 0x514478
mov dword [esi + 0xd0], eax
mov dword [esi + 0x128], 0
test eax, eax
jne 0x5143c9
mov eax, dword [esi + 0xe0]
mov dword [esi + 0xe0], 0
mov ecx, dword [esi + 0x128]
mov dword [esi + 0x128], eax
test ecx, ecx
jne 0x514387
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 + 0x6527ec]
bt edx, ecx
jb 0x5143e1
mov dword [esi + 0x12c], edi
mov edi, dword [esi + 0xe0]
test edi, edi
jne 0x513516
mov dword [esi + 0xe0], 0
test edi, edi
jne 0x513541
mov eax, dword [esi + 0xe4]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x6527ec]
bt edx, ecx
jb 0x5143ef
mov dword [esi + 0xe4], 0
mov ecx, dword [esi + 0xe0]
test ecx, ecx
mov ebx, dword [esi + 0x28]
jne 0x51439d
mov eax, dword [esi + 0x128]
mov dword [esi + 0xd0], eax
lea eax, [esi + 0xd0]
push eax
call fcn.00505000
add esp, 4
cmp byte [esi + 0x44], 0
je 0x511d80
cmp byte [esi + 0xb8], 0
je 0x511d5f
cmp byte [esi + 0xa0], 0
je 0x511d5f
mov eax, dword [esi + 0x4c]
mov ecx, dword [eax]
test ecx, ecx
je 0x511d5f
movq xmm0, qword [ecx + 8]
pshufd xmm0, xmm0, 0x55
movd eax, xmm0
test eax, eax
mov dword [esi + 0xc], ecx
js 0x51423c
cmp dword [ecx + 0x1c], 1
jne 0x5142a1
cmp dword [ecx + 0x10], 0
jne 0x5147a6
mov eax, dword [ecx + 8]
mov edx, dword [ecx + 0xc]
nop
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 0x511cf0
mov edi, dword [esi + 0xa8]
mov ebx, dword [esi + 0xac]
cmp dword [ecx + 0x10], 0
jne 0x51482b
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]
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 dword [esi + 0xe0], 0xffffffff
mov dword [esi + 0xe4], 0xffffffff
mov eax, dword [ebx]
mov edi, dword [eax + 0xc]
cmp edi, 0x515d30
jne 0x512e2c
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.00517fc0
jne 0x512e1b
mov ecx, edi
call fcn.00517fc0
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 0x51373a
mov edi, dword [ecx + 0x30]
cmp dword [ecx + 0x34], edi
jne 0x513ea3
cmp dword [esi + 0x128], 0
jne 0x514333
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 + 0x6527ec]
bt edx, ecx
jb 0x514595
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 + 0x6527ec]
bt edx, ecx
jb 0x5143fd
mov dword [esi + 0xe4], 0
mov ecx, dword [esi + 0xe0]
test ecx, ecx
mov ebx, dword [esi + 0x28]
jne 0x5143b3
mov eax, dword [esi + 0x128]
test eax, eax
jne 0x511b41
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 + 0x6527ec]
bt edx, ecx
jb 0x514730
mov cl, 1
cmp byte [esi + 0xb8], 0
je 0x511fd0
cmp byte [esi + 0xa0], 0
je 0x511fd0
mov eax, dword [esi + 0x4c]
mov edi, dword [eax]
test edi, edi
je 0x511fd0
movq xmm0, qword [edi + 8]
pshufd xmm0, xmm0, 0x55
movd eax, xmm0
test eax, eax
js 0x51424f
cmp dword [edi + 0x1c], 1
mov dword [esi + 8], ecx
mov dword [esi + 0xc], edi
jne 0x5142de
cmp dword [edi + 0x10], 0
jne 0x5147f7
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 0x511f60
mov edx, dword [esi + 0xa8]
mov ebx, dword [esi + 0xac]
mov edi, dword [esi + 0xc]
cmp dword [edi + 0x10], 0
jne 0x5148c4
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 0x513779
mov al, byte [ebx + 0x20]
test al, al
jne 0x513779
mov eax, dword [ebx]
mov edi, dword [eax + 0x10]
cmp edi, 0x515d40
jne 0x512e3f
mov al, byte [ebx + 0x4c]
test al, al
jne 0x513779
mov edi, dword [ebx + 0x24]
lea ebx, [edi + 0x2c]
push ebx
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x5138ea
mov eax, dword [edi + 0x30]
test eax, eax
jne 0x513753
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 [0x64f42e]
test al, al
jne 0x514772
mov ecx, dword [0x64bd64]
test ecx, ecx
jne 0x514329
mov eax, dword [ebx]
mov edi, dword [eax + 0xc]
cmp edi, 0x515d30
jne 0x512e79
mov ecx, dword [ebx + 0x48]
mov eax, dword [ecx]
cmp dword [eax + 0x18], 0x517a00
jne 0x512e11
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, 0x57d5f0
jne 0x512e61
cmp byte [ebx - 8], 0
mov eax, edx
mov ecx, 0x7fffffff
jne 0x513841
mov dword [esi + 0xc8], eax
mov dword [esi + 0xcc], ecx
mov ecx, dword [fcn.0056d830]
cmp ecx, 0x56aca0
mov dword [esi + 0x10], ebx
jne 0x512eb1
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 0x514b57
mov eax, edi
mov ecx, 0xf4240
mul ecx
imul ecx, ebx, 0xf4240
add ecx, edx
push dword [0x64f6a4]
push dword [0x64f6a0]
push ecx
push eax
call fcn.005a13d0
mov dword [esi + 0xc0], eax
mov dword [esi + 0xc4], edx
mov ebx, dword [esi + 0x10]
mov eax, dword [ebx]
cmp dword [eax + 0x28], 0x601750
mov eax, dword [esi + 0xc0]
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0xc4]
mov dword [esi + 8], eax
mov eax, dword [0x64d82c]
mov ecx, dword fs:[0x2c]
mov ecx, dword [ecx + eax*4]
mov eax, dword [0x65e6d8]
mov ecx, dword [ecx + 4]
cmp eax, ecx
jg 0x513b20
cmp byte [0x65e6d4], 0
je 0x514469
mov eax, dword [0x65e6e8]
mov ecx, dword [0x64d82c]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x513ae4
mov ecx, dword [ebx + 8]
mov eax, dword [ebx + 0xc]
mov edx, ecx
or edx, eax
jne 0x5121d9
mov eax, dword [0x65e6e4]
mov ecx, dword [0x65e6e0]
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.005a1fa0
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 + 0x30], 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 0x513a1a
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 0x512fd3
mov edx, edi
xor edx, ecx
mov ecx, dword [esi + 0xc]
mov eax, 0x7fffffff
xor ecx, eax
mov dword [esi + 0x20], edx
mov eax, edx
mov dword [esi + 0x24], ecx
or eax, ecx
je 0x512e9f
mov ecx, dword [0x64c080]
cmp ecx, 0x56aca0
mov dword [esi + 8], edi
jne 0x512f98
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 0x514d4c
mov eax, edi
mov ecx, 0xf4240
mul ecx
imul ecx, ebx, 0xf4240
add ecx, edx
push dword [0x64f6a4]
push dword [0x64f6a0]
push ecx
push eax
call fcn.005a13d0
mov ebx, edx
mov edi, dword [esi + 8]
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 0x51243a
push 0
mov eax, 0x3e8
push eax
mov dword [esi + 0xc], ebx
push ebx
mov dword [esi + 8], edx
push edx
call fcn.0059d670
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 0x513050
mov cl, 1
mov eax, dword [esi + 0x10]
cmp byte [eax + 0x14], 0
je 0x513434
mov ebx, dword [esi + 0x28]
cmp byte [esi + 0x110], 0
jne 0x513135
test cl, cl
je 0x513a2a
mov dword [esi + 0x128], 0xa
mov al, byte [0x64f42e]
test al, al
jne 0x51486e
mov al, byte [ebx + 0x20]
test al, al
jne 0x51349a
mov eax, dword [ebx]
mov edi, dword [eax + 0x10]
cmp edi, 0x515d40
jne 0x512e50
mov al, byte [ebx + 0x4c]
test al, al
jne 0x51349a
mov edi, dword [ebx + 0x24]
lea ebx, [edi + 0x2c]
push ebx
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x5138f6
mov eax, dword [edi + 0x30]
test eax, eax
jne 0x513e06
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
cmp byte [esi + 0x44], 0
mov ebx, dword [esi + 0x28]
je 0x512511
cmp byte [esi + 0xb8], 0
jne 0x514459
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 0x513837
mov edi, dword [ebx + 0x30]
cmp dword [ebx + 0x34], edi
jne 0x5144b7
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, 0x515d30
jne 0x512e8c
mov edx, dword [ebx + 0x48]
mov eax, dword [edx]
mov edi, dword [eax + 0xc]
cmp edi, 0x576990
jne 0x5118d6
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 + 0x6527ec]
bt ecx, eax
mov dword [esi + 0xc], edx
jb 0x514536
mov eax, edi
shr eax, 0x15
mov byte [eax + 0x65a7ec], 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], 0x628a9c
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 0x513428
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 + 0x6527ec]
mov dword [esi + 0x18], ecx
bt eax, ecx
jb 0x514547
mov eax, ebx
shr eax, 0x15
mov byte [eax + 0x65a7ec], 1
mov dword [esi + 0x3c], ebx
test ebx, ebx
je 0x51440b
mov dword [esi + 0x10], edi
mov edi, dword [edx - 0x10]
mov eax, dword [edi]
mov ebx, dword [eax + 0x28]
cmp ebx, fcn.00547f70
jne 0x512fbb
cmp dword [edi + 0xa4], 0
je 0x512961
cmp byte [edi + 0xe4], 0
jne 0x512961
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 0x5134a1
mov edx, dword [edi + 0x70]
mov eax, dword [edi + 0xa8]
mov dword [esi + 0x20], eax
mov eax, dword [edi + 0xb0]
mov dword [esi + 0x30], eax
mov ebx, dword [edi + 0xac]
add edx, dword [edi + 0x6c]
je 0x51278b
mov eax, dword [edi + 8]
mov eax, dword [eax + 0x10]
cmp eax, 1
ja 0x51278b
mov dword [esi + 0x34], ecx
mov dword [esi + 0x14], edx
mov eax, dword [edi + 0x5c]
cmp eax, dword [edi + 0x60]
je 0x5144a8
mov dword [esi + 0x24], ebx
mov cl, byte [eax + 8]
dec cl
cmp cl, 1
ja 0x51451f
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, 0x548620
mov edi, dword [esi + 8]
je 0x512773
cmp ecx, 0x57da10
jne 0x513381
mov ebx, dword [esi + 0x38]
mov eax, dword [ebx + 0x24]
test al, 1
jne 0x513ef2
mov edx, ebx
mov ebx, dword [ebx + 0x34]
test ebx, ebx
je 0x5148bb
xor ecx, ecx
inc ecx
lock xadd dword [ebx], ecx
test ecx, ecx
jle 0x5148be
cmp ecx, 0x7fffffff
je 0x5148c1
shr eax, 1
movzx edi, al
mov eax, dword [edx + 0x34]
mov ecx, dword [eax + 4]
call dword [0x6445dc]
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 0x514b17
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]
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 + 0x30]
sub ebx, eax
mov edx, dword [esi + 0x20]
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 0x512ed8
cmp ebx, ecx
jne 0x5127fb
mov eax, dword [edi + 0xd0]
sub eax, dword [edi + 0xcc]
cmp eax, 0x400
je 0x5127fb
cmp dword [edi + 0xf4], 0
je 0x51388d
mov eax, dword [edi + 0x5c]
cmp eax, dword [edi + 0x60]
je 0x51281e
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 0x5134f3
mov word [edi + 0x78], 0
cmp byte [edi + 0xc0], 0
jne 0x512961
mov ebx, dword [edi + 0x68]
mov edi, dword [edi + 0xb0]
xor ecx, ecx
test ebx, ebx
jne 0x513655
add ecx, edi
mov edx, dword [esi + 8]
cmp ecx, dword [edx + 0xa8]
ja 0x51370b
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 0x5136ac
mov ebx, dword [edx + 0x70]
add ebx, dword [edx + 0x6c]
je 0x51294c
mov eax, dword [edx + 8]
mov eax, dword [eax + 0x10]
cmp eax, 1
ja 0x51294c
mov eax, dword [edx + 0x5c]
cmp eax, dword [edx + 0x60]
je 0x5144a8
mov dword [esi + 0x30], ebx
mov cl, byte [eax + 8]
dec cl
cmp cl, 1
ja 0x514767
mov edi, dword [eax]
mov eax, dword [edi]
mov ecx, dword [eax + 4]
xor ebx, ebx
inc ebx
cmp ecx, 0x548620
mov edx, dword [esi + 8]
je 0x51293d
cmp ecx, 0x57da10
jne 0x513412
mov eax, dword [edi + 0x24]
test al, 1
jne 0x5140e3
mov edx, edi
mov edi, dword [edi + 0x34]
test edi, edi
je 0x514913
xor ecx, ecx
inc ecx
lock xadd dword [edi], ecx
test ecx, ecx
jle 0x514916
cmp ecx, 0x7fffffff
je 0x514919
shr eax, 1
movzx ebx, al
mov eax, dword [edx + 0x34]
mov ecx, dword [eax + 4]
call dword [0x6445dc]
mov dword [esi + 0x20], ebx
push ebx
push edi
call ecx
add esp, 8
mov ebx, eax
lock dec dword [edi]
je 0x514b3b
cmp ebx, 0x20
mov eax, 0x20
cmovae ebx, eax
sub ebx, dword [esi + 0x20]
mov eax, 0
cmovb ebx, eax
mov edx, dword [esi + 8]
mov eax, dword [esi + 0x30]
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 0x51371a
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 + 0x6527ec]
mov dword [esi + 8], ecx
bt eax, ecx
jb 0x513ccd
mov eax, edi
shr eax, 0x15
mov byte [eax + 0x65a7ec], 1
test edi, edi
je 0x51440e
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
cmp dword [esi + 0xf4], 2
jae 0x513936
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x513ce9
mov eax, dword [ebx*4 + 0x6527ec]
mov ecx, dword [esi + 8]
bt eax, ecx
jb 0x513cdb
mov ecx, dword [esi + 0xc]
lea ebx, [ecx - 0x30]
mov eax, dword [ebx]
mov edi, dword [eax + 0x14]
cmp edi, 0x576830
mov dword [esi + 0x2c], ebx
jne 0x51171d
mov ebx, dword [ecx - 0x10]
cmp dword [ebx + 0xf4], 0
je 0x513116
mov eax, dword [ebx + 0xec]
mov eax, dword [eax + 0x10]
cmp eax, dword [esi + 0x28]
je 0x514507
mov edi, dword [esi + 0x64]
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x514513
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 edi, dword [esi + 0xc]
mov ebx, dword [edi - 0x10]
add ebx, 0x50
mov ecx, ebx
shr ecx, 0xe
mov eax, ebx
shr eax, 0x13
mov dword [esi + 0x30], eax
mov eax, dword [eax*4 + 0x6527ec]
mov dword [esi + 0x14], ecx
bt eax, ecx
jb 0x514703
mov eax, ebx
shr eax, 0x15
mov byte [eax + 0x65a7ec], 1
test ebx, ebx
je 0x514475
cmp byte [esi + 8], 0
jne 0x513cf5
mov eax, dword [edi - 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 0x513d0b
mov eax, dword [esi + 0x30]
mov eax, dword [eax*4 + 0x6527ec]
mov ecx, dword [esi + 0x14]
bt eax, ecx
jb 0x514714
cmp byte [esi + 8], 0
je 0x51173f
xor eax, eax
mov dword [esi + 8], eax
mov eax, dword [edi - 0x10]
mov ecx, dword [eax + 0x5c]
cmp ecx, dword [eax + 0x60]
je 0x512c02
movzx edx, byte [ecx + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x512dc1
mov ecx, dword [edi - 0x10]
test dl, dl
je 0x512dfa
mov dword [esi + 0x30], edx
lea eax, [esi + 0xe0]
push eax
lea eax, [esi + 0xd0]
push eax
call fcn.00541110
mov edx, dword [esi + 8]
mov eax, edx
shr eax, 0xe
mov ecx, edx
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x6527ec]
bt ecx, eax
mov ebx, 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 0x51493e
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 + 0x6527ec]
bt edx, ecx
jb 0x514558
mov dword [esi + 0xd4], 0
mov ecx, dword [esi + 0xd0]
test ecx, ecx
mov edi, dword [esi + 0xc]
jne 0x514566
test ebx, ebx
mov eax, dword [esi + 0x14]
je 0x512ac5
mov dword [esi + 8], ebx
mov eax, dword [edi - 0x10]
mov ecx, dword [eax + 0xac]
inc ecx
mov dword [eax + 0xac], ecx
mov edx, dword [esi + 0x30]
mov edi, edx
test dl, dl
je 0x512def
mov edx, dword [eax + 0x5c]
cmp edx, dword [eax + 0x60]
mov ebx, dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
je 0x512bd1
cmp ecx, dword [eax + 0xa4]
jae 0x512de2
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 0x511a2b
mov ecx, dword [esi + 0x2c]
mov eax, dword [ecx]
mov ebx, dword [eax + 0x1c]
cmp ebx, 0x46b050
jne 0x512d48
mov edi, dword [edi - 0x10]
mov edx, dword [edi + 0xec]
mov eax, dword [esi + 0x60]
mov ecx, dword [esi + 0x5c]
test dword [ecx*4 + 0x6527ec], eax
mov dword [esi + 0x30], edx
jne 0x512db1
mov eax, dword [esi + 0x58]
mov byte [eax + 0x65a7ec], 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 0x512c77
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 0x512d6f
mov ecx, dword [edi]
mov ebx, edi
test ecx, ecx
jne 0x512c5f
push 0x14
call fcn.0057dc30
add esp, 4
cmp eax, 0xfffffff0
je 0x514527
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 0x512cb3
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 0x51192a
mov edx, dword [eax + 8]
cmp byte [edx + 0xc], 0
jne 0x51192a
mov ecx, dword [edx + 8]
mov ebx, dword [ecx]
cmp ebx, edx
je 0x512d07
test ebx, ebx
je 0x5118f4
cmp byte [ebx + 0xc], 0
jne 0x5118f4
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 0x512cc4
jmp 0x51192a
mov ebx, dword [ecx + 4]
test ebx, ebx
je 0x512d14
cmp byte [ebx + 0xc], 0
je 0x512cec
cmp dword [edx], eax
jne 0x512d88
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 0x512d30
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 0x511927
mov edi, ecx
mov ecx, ebx
call dword [0x6445dc]
mov ecx, edi
push dword [esi + 0x28]
lea eax, [esi + 0xe0]
push eax
call ebx
xor edi, edi
xor eax, eax
mov ebx, dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x511a28
jbe 0x514725
mov ecx, dword [edi + 4]
test ecx, ecx
jne 0x512c5f
lea ebx, [edi + 4]
jmp 0x512c77
mov eax, dword [edx + 4]
mov edi, dword [eax]
mov dword [edx + 4], edi
test edi, edi
jne 0x512dda
mov dword [eax + 8], ecx
mov ecx, dword [edx + 8]
cmp dword [ecx], edx
jne 0x514d44
mov dword [ecx], eax
mov dword [eax], edx
mov dword [edx + 8], eax
mov ecx, dword [eax + 8]
jmp 0x512d1a
push dword [esi + 0x28]
call fcn.00506e00
add esp, 4
jmp 0x512c3f
test dl, dl
je 0x512c02
cmp eax, 1
jne 0x512c02
mov ecx, dword [edi - 0x10]
jmp 0x512af4
mov dword [edi + 8], edx
mov ecx, dword [edx + 8]
jmp 0x512d94
movzx ecx, word [edx + 8]
mov word [eax + 0x78], cx
jmp 0x512bd7
inc dword [eax + 0xb0]
jmp 0x512bb7
mov eax, dword [ecx + 0xb0]
cmp eax, dword [ecx + 0xa8]
jb 0x512af4
jmp 0x512c02
call fcn.00517a00
jmp 0x512475
mov ecx, ebx
call dword [0x6445dc]
mov ecx, edi
call ebx
jmp 0x511dfa
mov ecx, edi
call dword [0x6445dc]
mov ecx, ebx
call edi
mov edi, eax
jmp 0x511da8
mov ecx, edi
call dword [0x6445dc]
mov ecx, ebx
call edi
jmp 0x511ff7
mov ecx, edi
call dword [0x6445dc]
mov ecx, ebx
call edi
jmp 0x5124ab
mov ecx, edi
call dword [0x6445dc]
mov ecx, ebx
lea eax, [esi + 0xc8]
push eax
call edi
jmp 0x5120d2
mov ecx, edi
call dword [0x6445dc]
mov ecx, ebx
call edi
mov ecx, eax
jmp 0x512084
mov ecx, edi
call dword [0x6445dc]
mov ecx, ebx
call edi
mov edx, eax
jmp 0x512550
xor eax, eax
dec eax
mov dword [esi + 0x1c], eax
mov dword [esi + 0x14], 0x7fffffff
jmp 0x5123dd
call dword [0x6445dc]
lea eax, [esi + 0xc0]
push eax
call ecx
add esp, 4
jmp 0x512157
sar eax, 2
cmp eax, dword [edi + 0xa4]
jae 0x512f08
jmp 0x513d4c
lea eax, [edi + 0xec]
mov dword [esi + 0x14], eax
xor eax, eax
mov dword [esi + 0x24], ebx
mov dword [esi + 0x30], ecx
mov dword [esi + 0x2c], eax
mov eax, dword [edi + 0xd0]
sub eax, dword [edi + 0xcc]
cmp eax, 0x400
je 0x512f08
cmp dword [edi + 0xf4], 0
je 0x512ec8
mov ecx, dword [esi + 0x14]
call fcn.00548630
test eax, eax
je 0x512f28
xor ecx, ecx
inc ecx
lock xadd dword [eax + 4], ecx
cmp ecx, 0x7fffffff
je 0x5147f1
mov dword [esi + 0xd0], eax
mov ecx, dword [esi + 0x104]
mov ebx, 2
lea edx, [esi + 0x108]
test cl, 1
jne 0x514902
shr ecx, 1
cmp ecx, ebx
je 0x514d0b
shl ecx, 2
add edx, ecx
mov ebx, dword [esi + 0x24]
je 0x514527
mov dword [edx], eax
add dword [esi + 0x104], 2
mov eax, ebx
mov edx, dword [esi + 0x30]
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 0x5127d7
jmp 0x512ee9
call dword [0x6445dc]
lea eax, [esi + 0x128]
push eax
call ecx
add esp, 4
mov eax, dword [esi + 0x128]
mov ebx, dword [esi + 0x12c]
jmp 0x5123b7
mov ecx, ebx
call dword [0x6445dc]
mov ecx, edi
lea eax, [esi + 0xe0]
push eax
call ebx
jmp 0x512961
push 0x24
push str.waitable_event.cc
push str.TimedWait
lea eax, [esi + 0xd0]
push eax
call fcn.0051dbb0
add esp, 0x10
cmp byte [esi + 0x110], 0
jne 0x514ac7
lea ecx, [esi + 0xe0]
push 1
push 0
call fcn.00536a30
mov dword [esi + 0x124], 0xa
mov al, byte [0x64f42e]
test al, al
jne 0x514ccb
mov byte [esi + 0x110], 1
xor ecx, ecx
dec ecx
jmp 0x51231e
call dword [0x6445dc]
lea eax, [esi + 0xd0]
push eax
call ecx
add esp, 4
mov eax, dword [esi + 0xd0]
mov edx, dword [esi + 0xd4]
jmp 0x5130ca
cmp eax, 0x102
jne 0x514aaf
mov ecx, dword [0x64c080]
cmp ecx, 0x56aca0
jne 0x513030
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 0x514fc8
mov eax, edi
mov ecx, 0xf4240
mul ecx
imul ecx, ebx, 0xf4240
add ecx, edx
push dword [0x64f6a4]
push dword [0x64f6a0]
push ecx
push eax
call fcn.005a13d0
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 0x5123e0
xor ecx, ecx
jmp 0x512460
xor eax, eax
jmp 0x512a04
cmp byte [ebx + 0x2a], 0
mov eax, dword [ebx + 0x20]
jne 0x5141dd
dec dword [eax + 0xb8]
jmp 0x5131d7
mov dword [esi + 0xc], ecx
mov dword [esi + 0x128], 0xa
mov al, byte [0x64f42e]
test al, al
jne 0x514bd4
call fcn.0057dc60
mov eax, dword [eax]
mov dword [esi + 8], eax
call fcn.0057dc60
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 0x5131e6
cmp dword [esi + 0xe4], 0
jne 0x5131e6
cmp byte [ebx + 0x11], 0
je 0x5131e6
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 0x513d3e
xor eax, eax
mov dword [ebx + 0x1c], eax
mov dword [ebx + 0x18], eax
cmp byte [ebx + 0x2b], 0
jne 0x5131d7
cmp byte [ebx + 0x29], 0
mov eax, dword [ebx + 0x20]
jne 0x513d9d
dec dword [eax + 0xb4]
cmp byte [ebx + 0x11], 0
je 0x514dcb
cmp byte [ebx + 0x10], 0
je 0x51311d
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.0057dc60
mov ecx, dword [esi + 8]
mov dword [eax], ecx
cmp byte [esi + 0x108], 0
mov ebx, dword [esi + 0x28]
je 0x51320d
mov eax, dword [esi + 0x100]
test eax, eax
jne 0x51327d
mov eax, dword [esi + 0xe8]
test eax, eax
je 0x51321f
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 + 0x6527ec]
bt edx, ecx
jb 0x514162
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 + 0x6527ec]
bt edx, ecx
mov ecx, dword [esi + 0xc]
jae 0x51246d
push eax
call fcn.00506f30
mov ecx, dword [esi + 0xc]
add esp, 4
jmp 0x51246d
mov dword [esi + 8], eax
mov ecx, dword [fcn.0056d830]
cmp ecx, 0x56aca0
jne 0x513361
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 0x515245
mov eax, edi
mov ecx, 0xf4240
mul ecx
imul ecx, ebx, 0xf4240
add ecx, edx
push dword [0x64f6a4]
push dword [0x64f6a0]
push ecx
push eax
call fcn.005a13d0
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 0x513ef9
mov edi, dword [esi + 0x100]
test edi, edi
mov ebx, dword [esi + 0x28]
je 0x51320d
lock dec dword [edi]
jne 0x51320d
jmp 0x514f03
call dword [0x6445dc]
lea eax, [esi + 0x128]
push eax
call ecx
add esp, 4
mov eax, dword [esi + 0x128]
mov ecx, dword [esi + 0x12c]
jmp 0x513301
mov edi, ecx
call dword [0x6445dc]
mov ecx, dword [esi + 0x38]
call edi
mov edi, dword [esi + 8]
mov ebx, eax
jmp 0x512773
mov al, byte [ebx + 0x20]
test al, al
jne 0x511eba
mov eax, dword [ebx]
mov edi, dword [eax + 0x10]
mov ecx, edi
call dword [0x6445dc]
mov ecx, ebx
call edi
test al, al
jne 0x511eba
mov edi, dword [ebx + 0x24]
lea ebx, [edi + 0x2c]
push ebx
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x513dfa
mov eax, dword [edi + 0x30]
test eax, eax
jne 0x514105
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 [0x6445dc]
mov ecx, ebx
call edi
mov edi, eax
mov eax, dword [eax]
mov ebx, dword [eax + 0x20]
mov ecx, ebx
call dword [0x6445dc]
mov ecx, edi
call ebx
mov ebx, dword [esi + 0x28]
jmp 0x511eba
mov ebx, ecx
call dword [0x6445dc]
mov ecx, edi
call ebx
mov edx, dword [esi + 8]
mov ebx, eax
jmp 0x51293d
push edi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x5125eb
mov dword [esi + 0x134], 0x1a8
mov al, byte [0x64f5cc]
test al, al
je 0x51245d
movzx eax, al
mov edx, dword [esi + 0x18]
xor edx, dword [0x64e768]
mov ecx, dword [0x64e76c]
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.005e6670
mov cl, 1
add esp, 0x14
jmp 0x51245d
xor ecx, ecx
jmp 0x511ef4
mov eax, dword [edi + 8]
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x51267e
mov eax, dword [edi + 0x5c]
cmp eax, dword [edi + 0x60]
je 0x5144a8
cmp byte [eax + 8], 0
jne 0x5134ec
mov eax, dword [eax]
mov dword [esi + 0x30], eax
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ecx, edi
call dword [0x6445dc]
mov ecx, dword [esi + 0x30]
call edi
mov edi, dword [esi + 8]
lea ecx, [ebx + eax]
add eax, ebx
dec eax
cmp eax, 1
adc ecx, 0xffffffff
jmp 0x51267e
mov ecx, ebx
jmp 0x51267e
movzx eax, word [eax + 8]
mov word [edi + 0x78], ax
jmp 0x512824
mov eax, dword [ebx + 8]
mov ecx, 0xfffffffe
lock xadd dword [eax], ecx
cmp ecx, 3
jne 0x513537
jmp 0x514211
mov ebx, dword [esi + 0xe4]
test ebx, ebx
je 0x511c23
mov dword [esi + 0xe0], 0
mov al, byte [edi + 9]
and al, 0x7f
cmp al, 2
je 0x513500
lock dec dword [ebx + 0xc]
je 0x5135ca
lock dec dword [edi + 4]
jne 0x511c35
mov dword [edi], 0x6289f0
mov ebx, dword [edi + 0x5c]
test ebx, ebx
jne 0x513e3e
lea ecx, [edi + 0x3c]
mov ebx, dword [edi + 0x3c]
mov edx, dword [edi + 0x40]
mov eax, ebx
cmp edx, ebx
jne 0x514fa1
mov dword [edi + 0x40], ebx
test eax, eax
jne 0x5150e5
mov eax, dword [edi + 0x30]
mov ebx, dword [edi + 0x34]
cmp ebx, eax
jne 0x514df6
push 0
push dword [edi + 0x28]
push 0x63bbe0
call fcn.0051e4d0
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 + 0x6527ec]
bt edx, ecx
jae 0x5135bc
push eax
call fcn.00507280
add esp, 4
push edi
call fcn.0057dc2b
add esp, 4
jmp 0x511c35
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 0x514dda
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 0x514de8
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 0x514bff
push 0
push dword [esi + 8]
push 0x63bbe0
call fcn.0051e4d0
add esp, 0xc
jmp 0x511c2d
mov eax, dword [esi + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x512844
mov ecx, dword [esi + 8]
mov eax, dword [ecx + 0x5c]
cmp eax, dword [ecx + 0x60]
je 0x5144a8
cmp byte [eax + 8], 0
jne 0x5136a5
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 [0x6445dc]
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 0x512844
mov ecx, ebx
jmp 0x512844
mov eax, dword [edx + 8]
mov eax, dword [eax + 0x10]
mov dword [esi + 0x14], 0
test eax, eax
jne 0x512872
mov eax, dword [edx + 0x5c]
cmp eax, dword [edx + 0x60]
je 0x5144a8
cmp byte [eax + 8], 0
jne 0x513703
mov eax, dword [eax]
mov dword [esi + 0x14], eax
mov eax, dword [eax]
mov ecx, dword [eax + 4]
mov dword [esi + 0x30], ecx
call dword [0x6445dc]
mov ecx, dword [esi + 0x14]
call dword [esi + 0x30]
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 0x512872
mov dword [esi + 0x14], ebx
jmp 0x512872
cmp dword [edx + 0xb8], 0
jle 0x512855
jmp 0x513727
cmp dword [edx + 0xb4], 0
jle 0x512961
mov al, 1
mov byte [esi + 0x100], al
mov byte [edx + 0xc0], al
jmp 0x512961
mov edi, 3
jmp 0x511e13
lock dec dword [ecx + 4]
jne 0x5137bc
push 1
call fcn.00403940
jmp 0x5137bc
push 0
push dword [eax]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edi, eax
test eax, eax
jne 0x514170
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
test edi, edi
mov ebx, dword [esi + 0x28]
jne 0x512029
mov eax, dword [ebx]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x6445dc]
mov ecx, ebx
call edi
mov edi, eax
mov eax, dword [eax]
mov ebx, dword [eax + 0x1c]
mov ecx, ebx
call dword [0x6445dc]
mov ecx, edi
push dword [esi + 0x28]
call ebx
mov eax, dword [esi + 0x28]
mov edi, dword [eax + 0x2c]
test edi, edi
jne 0x5150cc
mov ecx, dword [eax + 8]
mov dword [eax + 8], 0
test ecx, ecx
jne 0x513744
mov dword [esi + 0xa0], 0xa
mov al, byte [0x64f42e]
test al, al
mov edi, dword [esi + 0x48]
jne 0x5151b1
mov dword [esi + 0xa0], 0xa
mov al, byte [0x64f42e]
test al, al
jne 0x5151e5
mov ecx, dword [0x64bd64]
test ecx, ecx
jne 0x514ea9
test edi, edi
je 0x513822
mov ecx, dword [edi + 4]
call dword [0x6445dc]
push edi
call ecx
add esp, 4
lock dec dword [edi]
jne 0x513822
mov ecx, dword [edi + 8]
call dword [0x6445dc]
push edi
call ecx
add esp, 4
mov ecx, dword [esi + 0x138]
xor ecx, ebp
call fcn.005810d5
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov edi, 3
jmp 0x512524
mov eax, dword [ebx - 0x10]
fild qword [eax + 0x20]
fstp qword [esi + 0x98]
movsd xmm0, qword [esi + 0x98]
mulsd xmm0, qword [0x63d5c8]
movsd xmm1, qword [0x635c18]
ucomisd xmm1, xmm0
jb 0x515219
maxsd xmm0, qword [0x635c20]
movsd qword [esi + 0x50], xmm0
fld qword [esi + 0x50]
fisttp qword [esi + 0x50]
mov eax, dword [esi + 0x50]
mov ecx, dword [esi + 0x54]
jmp 0x5120c6
sar eax, 2
cmp eax, dword [edi + 0xa4]
jae 0x5127fb
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.0040e200
mov ecx, ebx
push dword [esi + 0xd0]
call fcn.00548a70
mov ecx, dword [esi + 0xd0]
test ecx, ecx
je 0x5138e2
lock dec dword [ecx + 4]
je 0x515514
mov edi, dword [esi + 8]
jmp 0x5127fb
push ebx
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x512014
push ebx
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x5124c8
lea edi, [edx + ebx*4]
add edi, 0xfffffffc
neg ebx
test edi, edi
je 0x51431a
mov ecx, dword [edi]
test ecx, ecx
je 0x513922
lock dec dword [ecx + 4]
je 0x5153c1
add edi, 0xfffffffc
inc ebx
jne 0x51390a
mov eax, dword [esi + 0xf4]
and eax, 1
jmp 0x511ae3
lea ecx, [esi + 0xe0]
call fcn.0043ff00
mov edx, dword [esi + 0xf4]
mov eax, edx
lea ecx, [esi + 0xf8]
and eax, 1
jne 0x51523a
cmp edx, 2
jae 0x51412c
test eax, eax
jne 0x515501
mov dword [esi + 0xf4], 0
mov byte [esi + 0x100], 0
jmp 0x5129af
shl ebx, 2
xor eax, eax
mov dword [esi + 8], eax
mov ecx, dword [edi + eax]
test ecx, ecx
je 0x5139a1
xor eax, eax
inc eax
lock xadd dword [ecx + 4], eax
cmp eax, 0x7fffffff
je 0x514ea3
mov dword [esi + 0xc], ecx
mov ecx, dword [esi + 0xe4]
mov eax, dword [ecx + 0x30]
mov edx, dword [ecx + 0x34]
test eax, eax
je 0x5139c8
xor ecx, ecx
inc ecx
lock xadd dword [eax + 4], ecx
cmp ecx, 0x7fffffff
je 0x514ea6
mov ecx, dword [esi + 0xc]
push edx
push eax
call fcn.00443140
mov ecx, dword [esi + 0xe4]
cmp byte [ecx + 0xe0], 0
jne 0x5153a5
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x5139f6
lock dec dword [ecx + 4]
je 0x5153b5
mov eax, dword [esi + 8]
add eax, 4
cmp ebx, eax
jne 0x513984
mov ecx, dword [esi + 0xf4]
mov ebx, ecx
shr ebx, 1
mov eax, ecx
and eax, 1
cmp ecx, 2
setb cl
jmp 0x511acd
mov ecx, dword [esi + 0x18]
call fcn.0057ba50
test al, al
jne 0x512475
call fcn.0051bcc0
mov eax, dword [esi + 0xc8]
mov ecx, dword [esi + 0xcc]
cmp dword [esi + 0x30], eax
mov edx, dword [esi + 0x2c]
sbb edx, ecx
jge 0x512475
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 0x513a91
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.0051b130
jmp 0x512475
mov ecx, dword [esi + 0xc]
xor edx, edx
dec edx
mov ebx, dword [esi + 0x30]
add edx, ebx
mov edi, 0x7fffffff
adc edi, dword [esi + 0x2c]
add edx, 2
adc edi, 0
cmp edx, 2
sbb edi, 0
jb 0x5155a7
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 0x513a74
push 0x65e6e8
call fcn.0057dc73
add esp, 4
cmp dword [0x65e6e8], 0xffffffff
jne 0x5121c2
mov eax, dword [esi + 0xc]
mov dword [0x65e6e0], eax
mov eax, dword [esi + 8]
mov dword [0x65e6e4], eax
push 0x65e6e8
call fcn.0057dcc2
add esp, 4
jmp 0x5121c2
push 0x65e6d8
call fcn.0057dc73
add esp, 4
cmp dword [0x65e6d8], 0xffffffff
jne 0x512194
push 0x64d144
call fcn.0051beb0
add esp, 4
mov byte [0x65e6d4], al
push 0x65e6d8
call fcn.0057dcc2
add esp, 4
jmp 0x512194
mov eax, dword [esi + 8]
mov eax, dword [eax + 8]
mov ecx, 0xfffffffe
lock xadd dword [eax], ecx
cmp ecx, 3
jne 0x513b94
jmp 0x514267
mov eax, dword [edx - 4]
mov dword [esi + 8], eax
test eax, eax
je 0x51177c
mov dword [ecx], 0
mov al, byte [ebx + 9]
and al, 0x7f
cmp al, 2
je 0x513b5e
mov eax, dword [esi + 8]
lock dec dword [eax + 0xc]
je 0x513c36
lock dec dword [ebx + 4]
jne 0x51178a
mov dword [ebx], 0x6289f0
mov ecx, dword [ebx + 0x5c]
test ecx, ecx
mov dword [esi + 0x18], edx
jne 0x514188
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 0x515572
mov dword [ebx + 0x40], eax
cmp dword [esi + 8], 0
jne 0x5155ca
mov eax, dword [ebx + 0x30]
mov ecx, dword [ebx + 0x34]
cmp ecx, eax
jne 0x51543d
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 0x515421
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 0x51542f
mov eax, dword [esi + 8]
mov ecx, dword [eax + 0x1c]
mov dword [esi + 0x1c], ecx
mov ecx, dword [eax + 0x20]
mov dword [esi + 0x30], 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 0x5152c4
push 0
push dword [esi + 0x1c]
push 0x63bbe0
call fcn.0051e4d0
add esp, 0xc
mov edx, dword [esi + 0x18]
jmp 0x511782
push edi
call fcn.00506e00
add esp, 4
jmp 0x512993
push edi
call fcn.00506f30
add esp, 4
jmp 0x5129d1
push edi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x5129be
mov ecx, dword [esi + 0x2c]
push dword [esi + 0x28]
call fcn.0040ae90
mov ecx, 0x18
test al, al
jne 0x513d10
jmp 0x513d2f
mov ecx, 0x1c
mov eax, dword [esi + 0x2c]
mov eax, dword [eax]
mov edi, dword [eax + ecx]
mov ecx, edi
call dword [0x6445dc]
mov ecx, dword [esi + 0x2c]
push dword [esi + 0x28]
lea eax, [esi + 0xe0]
push eax
call edi
mov dword [esi + 8], 0
mov edi, dword [esi + 0xc]
jmp 0x512aa3
push dword [esi + 0x18]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x5131a2
mov dword [esi + 0xd0], 0xffffffff
mov ecx, edi
lea eax, [esi + 0xe0]
push eax
lea eax, [esi + 0xd0]
push eax
call fcn.0040e200
mov ecx, dword [esi + 0x14]
push dword [esi + 0xd0]
call fcn.00548a70
mov ecx, dword [esi + 0xd0]
test ecx, ecx
je 0x512f08
lock dec dword [ecx + 4]
jne 0x512f08
push 1
call fcn.00403940
jmp 0x512f08
mov ecx, dword [eax + 0x5c]
mov edx, dword [eax + 0xa4]
dec edx
mov dword [eax + 0xa4], edx
cmp ecx, dword [eax + 0x60]
je 0x513dba
cmp dword [eax + 0xac], edx
jae 0x513dc5
mov word [eax + 0x78], 0
jmp 0x5131c3
movzx ecx, word [ecx + 8]
mov word [eax + 0x78], cx
jmp 0x5131c3
mov ecx, dword [esi + 0xe4]
call fcn.00443320
cmp dword [esi + 0xf4], 0
je 0x511b05
lea ecx, [esi + 0xf4]
call fcn.005f35a0
jmp 0x511b05
push ebx
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x5133d1
push 0
push dword [eax]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edi, eax
test eax, eax
jne 0x513e2a
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
test edi, edi
jne 0x5124da
jmp 0x5155c0
cmp edi, 0x102
je 0x513e16
mov ecx, edi
call fcn.005e65e0
jmp 0x5124d3
mov edx, dword [edi + 0x60]
mov eax, ebx
cmp edx, ebx
je 0x513e7c
mov eax, edx
add eax, 0xfffffff4
je 0x51431a
mov dword [esi + 0xc], eax
mov ecx, dword [edx - 4]
test ecx, ecx
je 0x513e70
add edx, 0xfffffff8
mov dword [esi + 8], edx
call dword [0x6445dc]
push dword [esi + 8]
call ecx
add esp, 4
mov eax, dword [esi + 0xc]
mov edx, eax
cmp eax, ebx
jne 0x513e49
mov eax, dword [edi + 0x5c]
mov dword [edi + 0x60], ebx
push eax
call fcn.0057dc2b
add esp, 4
jmp 0x51355c
mov ecx, dword [ecx + 0x24]
cmp ecx, 3
je 0x5156c7
xor eax, eax
cmp ecx, 1
sete al
jmp 0x513ebe
mov eax, dword [0x64d82c]
mov ecx, dword fs:[0x2c]
mov eax, dword [ecx + eax*4]
mov ecx, dword [eax + 0xb8]
xor eax, eax
test ecx, ecx
jne 0x513e8d
cmp edi, 7
jge 0x514336
mov ecx, dword [0x64d82c]
mov edx, dword fs:[0x2c]
mov ebx, dword [edx + ecx*4]
push eax
push edi
call fcn.00412f60
add esp, 8
mov dword [ebx + 0xb0], edi
mov eax, dword [esi + 0x28]
mov dword [eax + 0x34], edi
jmp 0x511e1c
xor ebx, ebx
jmp 0x512773
mov dword [esi + 0x24], edx
mov dword [esi + 0x20], 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 0x515646
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 0x515626
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 [0x634a90]
sub esp, 8
movsd qword [esp], xmm0
call fcn.005aa8b0
add esp, 8
fstp qword [esi + 0x80]
movsd xmm0, qword [esi + 0x80]
movsd xmm1, qword [0x6350b0]
ucomisd xmm1, xmm0
mov ecx, 0xffffffff
jb 0x5155f8
maxsd xmm0, qword [0x6350b8]
cvttsd2si ebx, xmm0
mov edx, dword [esi + 0x20]
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 0x514038
movsd xmm0, qword [0x6350c0]
jmp 0x514045
movsd xmm0, qword [esi + 0x70]
divsd xmm0, qword [0x634a90]
sub esp, 8
movsd qword [esp], xmm0
call fcn.005aa9ad
add esp, 8
fstp qword [esi + 0x68]
movsd xmm0, qword [esi + 0x68]
movsd xmm1, qword [0x6350b0]
ucomisd xmm1, xmm0
jb 0x51560f
maxsd xmm0, qword [0x6350b8]
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 0x5155ea
cmp edi, ebx
mov eax, dword [esi + 8]
jge 0x5140b5
inc dword [eax + edi*4 + 8]
inc edi
cmp ebx, edi
jne 0x5140ac
push dword [esi + 0x1c]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov edx, dword [esi + 0x18]
cmp edx, 0x3d
jl 0x513342
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 0x51407d
jmp 0x513342
xor ebx, ebx
jmp 0x51293d
push dword [esi + 0x14]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x51198c
cmp edi, 0x102
je 0x514115
jmp 0x5157fb
push 0
push dword [eax]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edi, eax
test eax, eax
jne 0x5140f8
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
test edi, edi
mov ebx, dword [esi + 0x28]
jne 0x5133e6
jmp 0x511eba
shr edx, 1
lea eax, [ecx + edx*4]
add eax, 0xfffffffc
neg edx
test eax, eax
je 0x51431a
mov ecx, dword [eax]
test ecx, ecx
je 0x51414e
lock dec dword [ecx + 4]
je 0x515ce3
add eax, 0xfffffffc
inc edx
jne 0x514136
mov eax, dword [esi + 0xf4]
and eax, 1
jmp 0x513961
push eax
call fcn.00506f30
add esp, 4
jmp 0x51323f
cmp edi, 0x102
je 0x513767
mov ecx, edi
call fcn.005e65e0
jmp 0x51201f
mov edx, dword [ebx + 0x60]
mov eax, ecx
cmp edx, ecx
je 0x5141cc
mov eax, edx
mov dword [esi + 0x1c], ecx
add eax, 0xfffffff4
je 0x51431a
mov dword [esi + 8], eax
mov ecx, dword [edx - 4]
test ecx, ecx
je 0x5141bd
add edx, 0xfffffff8
mov dword [esi + 0x10], edx
call dword [0x6445dc]
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 0x514196
mov eax, dword [ebx + 0x5c]
mov dword [ebx + 0x60], ecx
push eax
call fcn.0057dc2b
add esp, 4
jmp 0x513bbf
dec dword [eax + 0xa8]
mov ecx, dword [eax + 0x5c]
cmp ecx, dword [eax + 0x60]
je 0x5141f9
mov edx, dword [eax + 0xac]
cmp edx, dword [eax + 0xa4]
jae 0x514204
mov word [eax + 0x78], 0
jmp 0x5131d7
movzx ecx, word [ecx + 8]
mov word [eax + 0x78], cx
jmp 0x5131d7
lea eax, [ebx + 0x2c]
mov dword [esi + 0xc], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x515813
mov ecx, dword [ebx + 0x30]
call fcn.00558ee0
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x513537
mov ecx, dword [0x65b054]
call fcn.005aac50
mov ecx, dword [esi + 0xc]
jmp 0x511cd5
mov ebx, edi
mov edi, ecx
mov ecx, dword [0x65b054]
call fcn.005aac50
mov ecx, edi
mov edi, ebx
jmp 0x511f31
mov dword [esi + 0x20], 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 0x515807
mov eax, dword [esi + 8]
mov ecx, dword [eax + 0x30]
call fcn.00558ee0
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov edx, dword [esi + 0x18]
mov ebx, dword [esi + 0x20]
jmp 0x513b94
cmp byte [esi + 0xb0], 0
je 0x511d0d
cmp dword [ecx + 0x10], 0
jne 0x515045
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 0x5142c1
jmp 0x511d0d
cmp byte [esi + 0xb0], 0
je 0x511f7a
mov eax, dword [esi + 0xc]
mov edi, eax
cmp dword [eax + 0x10], 0
jne 0x51507c
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 0x514300
jmp 0x511f7a
push str....._third_partylibc_srcinclude__memoryconstruct_at.h:66:_assertion___loc___nullptr_failed:_null_pointer_given_to_destroy_at_n
push 0x62a183
call fcn.005aacb0
call fcn.005e6260
jmp 0x512070
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 0x511bdf
push 1
call fcn.0053b7e0
jmp 0x511bdf
lock dec dword [ecx + 4]
jne 0x511c70
push 1
call fcn.0053b7e0
jmp 0x511c70
lock dec dword [ecx + 4]
jne 0x511eba
push 1
call fcn.0053b7e0
jmp 0x511eba
lock dec dword [eax + 4]
jne 0x511bbb
mov ecx, eax
push 1
call fcn.0053b7e0
jmp 0x511bbb
push eax
call fcn.00507280
add esp, 4
jmp 0x511c0f
push eax
call fcn.00507280
add esp, 4
jmp 0x511c55
push eax
call fcn.00507280
add esp, 4
jmp 0x511e9f
int3
int3
mov eax, dword [esi + 0x108]
jmp 0x511a8c
mov edi, dword [esi + 0xf8]
jmp 0x511abe
mov edx, dword [esi + 0xf8]
jmp 0x511adb
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
lea ecx, [esi + 0xa0]
call fcn.0050b980
jmp 0x5124f0
xor ebx, ebx
mov edx, 0xf4240
jmp 0x51229e
int3
mov ecx, dword [esi + 0x12c]
test ecx, ecx
je 0x511ba3
mov dword [esi + 0x128], 0
push eax
lea eax, [esi + 0xd0]
push eax
call fcn.00406e30
mov eax, dword [esi + 0xd0]
jmp 0x511bb3
push str....._third_partylibc_srcinclude_vector:618:_assertion__empty___failed:_front___called_on_an_empty_vector_n
push 0x62a183
call fcn.005aacb0
push edi
call fcn.00412ef0
add esp, 4
mov dword [ebx + 0x34], edi
jmp 0x51252d
push dword [esi + 0x3c]
call fcn.00506f30
add esp, 4
jmp 0x511a6a
push dword [esi + 0xf8]
call fcn.0057dc2b
add esp, 4
jmp 0x511aeb
push eax
call fcn.00506f30
add esp, 4
jmp 0x511b33
push edx
call fcn.00507280
add esp, 4
jmp 0x511a51
mov byte [esi + 8], 1
mov edi, dword [esi + 0xc]
jmp 0x512a39
push edi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x512a1f
mov edi, dword [esi + 8]
jmp 0x512785
push str....._third_partylibc_srcinclude__memoryconstruct_at.h:40:_assertion___location___nullptr_failed:_null_pointer_given_to_construct_at_n
push 0x62a183
call fcn.005aacb0
push edi
call fcn.00506e00
mov edx, dword [esi + 0xc]
add esp, 4
jmp 0x5125a4
push ebx
call fcn.00506e00
mov edx, dword [esi + 0xc]
add esp, 4
jmp 0x51261f
push eax
call fcn.00507280
add esp, 4
jmp 0x512b71
lock dec dword [ecx + 4]
jne 0x512b8c
push 1
call fcn.0053b7e0
mov edi, dword [esi + 0xc]
jmp 0x512b8c
mov eax, dword [ebx + 8]
mov ecx, 0xfffffffe
lock xadd dword [eax], ecx
cmp ecx, 3
jne 0x5145d9
jmp 0x5156a5
push eax
call fcn.00507280
add esp, 4
mov eax, dword [esi + 0xe0]
mov dword [esi + 0x12c], edi
mov dword [esi + 0xc], eax
test eax, eax
je 0x511e75
mov ebx, dword [esi + 0xe4]
mov dword [esi + 0xe0], 0
test ebx, ebx
je 0x514663
mov eax, dword [esi + 0xc]
mov al, byte [eax + 9]
and al, 0x7f
cmp al, 2
je 0x51457f
lock dec dword [ebx + 0xc]
jne 0x514663
lea eax, [ebx + 0x14]
mov dword [esi + 8], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x51583f
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 0x51584d
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 0x515c13
push 0
push dword [esi + 0x18]
push 0x63bbe0
call fcn.0051e4d0
add esp, 0xc
mov eax, dword [esi + 0xc]
lock dec dword [eax + 4]
jne 0x511e7f
mov eax, dword [esi + 0xc]
mov dword [eax], 0x6289f0
mov ebx, dword [eax + 0x5c]
test ebx, ebx
jne 0x5153cd
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 0x515821
mov ecx, dword [esi + 0xc]
mov dword [ecx + 0x40], edi
test eax, eax
jne 0x515cfb
mov ecx, dword [esi + 0xc]
mov eax, dword [ecx + 0x30]
mov ebx, dword [ecx + 0x34]
cmp ebx, eax
jne 0x515905
push 0
mov edi, dword [esi + 0xc]
push dword [edi + 0x28]
push 0x63bbe0
call fcn.0051e4d0
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 + 0x6527ec]
bt edx, ecx
jae 0x5146f3
push eax
call fcn.00507280
add esp, 4
push dword [esi + 0xc]
call fcn.0057dc2b
add esp, 4
jmp 0x511e7f
push ebx
call fcn.00506e00
mov edi, dword [esi + 0xc]
add esp, 4
jmp 0x512a68
push ebx
call fcn.00506f30
mov edi, dword [esi + 0xc]
add esp, 4
jmp 0x512ab9
mov eax, dword [esi + 0x28]
mov edi, dword [esi + 0x14]
jmp 0x511935
push eax
call fcn.00507280
add esp, 4
mov ecx, dword [esi + 0x128]
mov dword [esi + 0x12c], 0
test ecx, ecx
je 0x511ef2
lock dec dword [ecx + 4]
jne 0x511ef2
push 1
call fcn.0053b7e0
jmp 0x511ef2
mov edi, dword [esi + 0x30]
mov edx, dword [esi + 8]
jmp 0x51294c
movzx eax, al
mov dword [esi + 0xe0], str.WorkerThread_active
push 0
push 0x45
push 0x62c8f8
push 2
lea ecx, [esi + 0xe0]
push ecx
lea ecx, [esi + 0xd0]
push ecx
push eax
call fcn.005d83a0
add esp, 0x1c
jmp 0x512062
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.005e6400
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 0x511ce9
push eax
call fcn.00507280
add esp, 4
jmp 0x511952
int3
int3
lea ecx, [edi + 0x10]
movq xmm0, qword [edi + 8]
pshufd xmm0, xmm0, 0x55
movd ebx, xmm0
call fcn.005e6400
and ebx, 0xff000000
or ebx, edx
movd xmm0, ebx
movd xmm1, eax
punpckldq xmm1, xmm0
movq qword [edi + 8], xmm1
jmp 0x511f4b
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.005e6400
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 0x511d23
movzx eax, al
mov ecx, dword [0x64e768]
xor ecx, dword [ebx + 0x3c]
mov edx, dword [0x64e76c]
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.005e6670
add esp, 0x14
jmp 0x51248c
int3
int3
int3
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.005e6400
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 0x511f93
mov edx, dword [esi + 0x108]
mov ebx, dword [esi + 0x10c]
jmp 0x512f48
int3
int3
int3
xor ecx, ecx
call fcn.00539a40
jmp 0x51188e
mov eax, dword [ebx + 8]
mov ecx, 0xfffffffe
lock xadd dword [eax], ecx
cmp ecx, 3
jne 0x51497f
jmp 0x515acc
push edx
call fcn.00507280
add esp, 4
mov eax, dword [esi + 0xd0]
mov dword [esi + 0x20], eax
test eax, eax
je 0x512b47
mov dword [esi + 8], ebx
mov ebx, dword [esi + 0xd4]
mov dword [esi + 0xd0], 0
test ebx, ebx
je 0x514a09
mov eax, dword [esi + 0x20]
mov al, byte [eax + 9]
and al, 0x7f
cmp al, 2
je 0x514928
lock dec dword [ebx + 0xc]
jne 0x514a09
lea eax, [ebx + 0x14]
mov dword [esi + 0x24], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x51585b
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 0x515869
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 0x515b5f
push 0
push dword [esi + 0x38]
push 0x63bbe0
call fcn.0051e4d0
add esp, 0xc
mov eax, dword [esi + 0x20]
lock dec dword [eax + 4]
mov ebx, dword [esi + 8]
jne 0x512b51
mov eax, dword [esi + 0x20]
mov dword [eax], 0x6289f0
mov ebx, dword [eax + 0x5c]
test ebx, ebx
jne 0x515520
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 0x5156d1
mov ecx, dword [esi + 0x20]
mov dword [ecx + 0x40], ebx
test eax, eax
jne 0x515d14
mov ecx, dword [esi + 0x20]
mov eax, dword [ecx + 0x30]
mov ebx, dword [ecx + 0x34]
cmp ebx, eax
jne 0x5156f5
push 0
mov edi, dword [esi + 0x20]
push dword [edi + 0x28]
push 0x63bbe0
call fcn.0051e4d0
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 + 0x6527ec]
bt edx, ecx
jae 0x514a9c
push eax
call fcn.00507280
add esp, 4
push dword [esi + 0x20]
call fcn.0057dc2b
add esp, 4
mov ebx, dword [esi + 8]
jmp 0x512b51
mov ecx, dword [esi + 0x20]
or ecx, dword [esi + 0x24]
jne 0x51305b
mov ecx, eax
call fcn.005e65e0
jmp 0x51305b
lea ecx, [esi + 0xe0]
call fcn.0054a630
lea eax, [esi + 0xe0]
mov byte [eax + 0x30], 0
jmp 0x512ffb
mov ecx, dword [esi + 0x10]
push 1
call fcn.00403940
jmp 0x51188e
int3
int3
push ecx
call fcn.00502690
add esp, 4
jmp 0x51275a
lock dec dword [ecx + 4]
jne 0x5117bb
push 1
call fcn.0053b7e0
jmp 0x5117bb
push edi
call fcn.00502690
add esp, 4
jmp 0x512924
push eax
call fcn.00507280
add esp, 4
jmp 0x5117a9
mov eax, dword [0x64f6a0]
mov dword [esi + 0xc], eax
mov ecx, dword [0x64f6a4]
mov dword [esi + 8], ecx
push ecx
push eax
push ebx
push edi
call fcn.005a13d0
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.005a13d0
add eax, dword [esi + 0x18]
adc edx, dword [esi + 0x1c]
jmp 0x512148
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.005beed0
add esp, 0x10
jmp 0x51314f
cmp dword [esi + 0x1c], ebx
jb 0x514339
mov eax, dword [esi + 8]
mov eax, dword [eax + ebx*4]
mov dword [esi + 0xc], eax
test eax, eax
je 0x51433c
mov eax, dword [esi + 8]
mov dword [eax + ebx*4], 0
mov eax, dword [esi + 0xc]
mov ecx, dword [eax + 4]
call dword [0x6445dc]
push dword [esi + 0xc]
call ecx
add esp, 4
mov eax, dword [esi + 0xc]
lock dec dword [eax]
jne 0x514c53
mov eax, dword [esi + 0xc]
mov ecx, dword [eax + 8]
call dword [0x6445dc]
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 0x514bff
cmp eax, ecx
jbe 0x515983
mov eax, dword [esi + 0x1c]
cmp eax, dword [esi + 0x10]
jb 0x51433f
mov eax, dword [esi + 0x18]
cmp eax, dword [esi + 0x10]
jg 0x514342
mov eax, dword [esi + 0x10]
shl eax, 2
mov ecx, dword [esi + 0x18]
shl ecx, 2
mov dword [esi + 0x10], eax
jmp 0x514cb7
mov ecx, dword [ebx + 8]
call dword [0x6445dc]
push ebx
call ecx
add esp, 4
mov ecx, dword [esi + 0x18]
add ecx, 4
mov eax, dword [esi + 0x10]
cmp eax, ecx
je 0x51363e
mov dword [esi + 0x18], ecx
mov eax, dword [esi + 8]
mov ebx, dword [eax + ecx]
test ebx, ebx
je 0x514ca6
lock dec dword [ebx]
je 0x514c97
jmp 0x514ca6
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.005da640
add esp, 8
jmp 0x513021
lea ecx, [esi + 0x104]
lea eax, [esi + 0xd0]
push eax
call fcn.005f4630
mov ecx, dword [esi + 0xd0]
test ecx, ecx
mov ebx, dword [esi + 0x24]
je 0x512f69
lock dec dword [ecx + 4]
jne 0x512f69
push 1
call fcn.00403940
jmp 0x512f69
add ecx, 4
jmp 0x512da2
mov eax, dword [0x64f6a0]
mov dword [esi + 0x1c], eax
mov ecx, dword [0x64f6a4]
mov dword [esi + 0x14], ecx
push ecx
push eax
push ebx
push edi
call fcn.005a13d0
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.005a13d0
mov ebx, edx
add eax, dword [esi + 0x3c]
adc ebx, dword [esi + 0x34]
jmp 0x5123b4
push str....._third_partylibc_srcincludeoptional:801:_assertion_this__has_value___failed:_optional_operator_called_on_a_disengaged_value_n
push 0x62a183
call fcn.005aacb0
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x5135e0
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x513604
mov ecx, dword [edi + 0x2c]
jbe 0x514e32
cmp ecx, ebx
jb 0x514345
cmp eax, ebx
jg 0x514348
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.0057d530
add ebx, 0x58
mov ecx, ebx
add dword [esi + 0xc], 0xffffffa8
jne 0x514e1b
jmp 0x513588
cmp ecx, eax
jb 0x51434b
jl 0x51434e
je 0x514e6b
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.0057d530
mov edx, dword [esi + 0xc]
add edx, 0x58
add dword [esi + 8], 0xffffffa8
jne 0x514e52
mov eax, dword [edi + 0x2c]
cmp eax, ebx
jb 0x514351
test ebx, ebx
js 0x514354
je 0x513588
mov eax, dword [edi + 0x28]
imul ecx, ebx, 0x58
mov dword [esi + 0xc], ecx
mov ebx, eax
mov ecx, eax
call fcn.0057d530
add ebx, 0x58
mov eax, ebx
add dword [esi + 0xc], 0xffffffa8
jne 0x514e8a
jmp 0x513588
int3
int3
call fcn.005e6260
jmp 0x5137fb
movzx eax, al
mov ecx, dword [0x64e76c]
mov edx, dword [0x64e768]
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.005e2380
mov ecx, dword [esi + 0x10]
add esp, 0x14
jmp 0x511868
mov ecx, edi
call fcn.00503060
push edi
call fcn.0057dc2b
add esp, 4
jmp 0x51320d
xor eax, eax
jmp 0x5116b3
mov eax, dword [0x64f6a0]
mov dword [esi + 0x2c], eax
mov ecx, dword [0x64f6a4]
mov dword [esi + 0x30], ecx
push ecx
push eax
mov dword [esi + 0x20], ebx
push ebx
push edx
mov dword [esi + 0x24], edx
call fcn.005a13d0
mov ecx, edx
mov ebx, eax
mul dword [esi + 0x2c]
mov dword [esi + 0x34], eax
mov eax, ebx
imul ebx, dword [esi + 0x30]
add edx, ebx
imul ebx, ecx, 0xf4240
imul ecx, dword [esi + 0x2c]
add ecx, edx
mov edx, dword [esi + 0x34]
sub dword [esi + 0x24], edx
sbb dword [esi + 0x20], 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 + 0x20], 0xf4240
add edx, ecx
push dword [esi + 0x30]
push dword [esi + 0x2c]
push edx
push eax
call fcn.005a13d0
add eax, dword [esi + 0x34]
adc edx, dword [esi + 0x38]
jmp 0x511a07
mov dword [esi + 0xc], edx
mov dword [esi + 8], ecx
add dword [esi + 0xc], 0xffffffa8
je 0x51431a
mov ecx, dword [esi + 0xc]
call fcn.0057d530
cmp dword [esi + 0xc], ebx
jne 0x514fa7
mov ecx, dword [esi + 8]
mov eax, dword [ecx]
jmp 0x51356f
mov eax, dword [0x64f6a0]
mov dword [esi + 0xc], eax
mov ecx, dword [0x64f6a4]
mov dword [esi + 8], ecx
push ecx
push eax
push ebx
push edi
call fcn.005a13d0
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.005a13d0
add eax, dword [esi + 0x3c]
adc edx, dword [esi + 0x34]
jmp 0x5130ca
mov edi, dword [esi + 0xc]
lea ecx, [edi + 0x10]
movq xmm0, qword [edi + 8]
pshufd xmm0, xmm0, 0x55
movd ebx, xmm0
call fcn.005e6400
and ebx, 0xff000000
or ebx, edx
movd xmm0, ebx
movd xmm1, eax
punpckldq xmm1, xmm0
movq qword [edi + 8], xmm1
jmp 0x5142b8
lea ecx, [edi + 0x10]
movq xmm0, qword [edi + 8]
pshufd xmm0, xmm0, 0x55
movd ebx, xmm0
call fcn.005e6400
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 0x5142fa
mov eax, dword [edi]
mov ebx, dword [eax + 4]
mov ecx, ebx
call dword [0x6445dc]
mov ecx, edi
call ebx
mov ebx, dword [esi + 0x28]
jmp 0x51164c
mov eax, dword [edi]
mov ebx, dword [eax + 8]
mov ecx, ebx
call dword [0x6445dc]
mov ecx, edi
call ebx
mov eax, dword [esi + 0x28]
jmp 0x5137ae
mov ebx, ecx
call fcn.005f4540
push dword [ebx]
call fcn.0057dc2b
add esp, 4
jmp 0x51357a
movzx eax, al
mov ecx, dword [0x64e76c]
mov dword [esi + 8], edx
mov edx, dword [0x64e768]
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.005e2380
mov edx, dword [esi + 8]
mov ecx, dword [esi + 0x10]
add esp, 0x14
jmp 0x511874
movzx eax, al
lea ecx, [esi + 0xe0]
mov dword [ecx], str.WorkerThread_born
lea edx, [esi + 0xa0]
push 8
push 0x49
push 0x62c8f8
push 3
push ecx
push edx
push eax
call fcn.005d83a0
add esp, 0x1c
jmp 0x511627
movzx eax, al
lea ecx, [esi + 0xe0]
mov dword [ecx], str.WorkerThread_active
lea edx, [esi + 0xa0]
push 0
push 0x42
push 0x62c8f8
push 1
push ecx
push edx
push eax
call fcn.005d83a0
add esp, 0x1c
jmp 0x51163e
movzx eax, al
mov dword [esi + 0xe0], str.WorkerThread_active
lea ecx, [esi + 0xa0]
push 0
push 0x45
push 0x62c8f8
push 2
lea edx, [esi + 0xe0]
push edx
push ecx
push eax
call fcn.005d83a0
add esp, 0x1c
jmp 0x5137d6
movzx eax, al
mov dword [esi + 0xe0], str.WorkerThread_dead
lea ecx, [esi + 0xa0]
push 8
push 0x49
push 0x62c8f8
push 3
lea edx, [esi + 0xe0]
push edx
push ecx
push eax
call fcn.005d83a0
add esp, 0x1c
jmp 0x5137ed
xor eax, eax
ucomisd xmm0, qword [0x635c20]
mov ecx, 0
mov edi, edx
mov edx, 0x7fffffff
cmovae ecx, edx
cmovae eax, edi
jmp 0x5120c6
mov ecx, dword [esi + 0xf8]
jmp 0x513958
mov eax, dword [0x64f6a0]
mov dword [esi + 0x18], eax
mov ecx, dword [0x64f6a4]
mov dword [esi + 0x1c], ecx
push ecx
push eax
push ebx
push edi
call fcn.005a13d0
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 + 0x20], 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 + 0x20]
mov dword [esi + 0x20], 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.005a13d0
mov ecx, edx
add eax, dword [esi + 0x14]
adc ecx, dword [esi + 0x20]
jmp 0x5132f5
mov dword [esi + 0x20], ebx
mov eax, edx
mov dword [esi + 8], edx
cmp dword [esi + 0x30], edx
jb 0x514af0
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 0x514af3
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 [0x6445dc]
push ebx
call ecx
add esp, 4
lock dec dword [ebx]
jne 0x51531f
add ecx, 0xd8
call fcn.0054a300
jmp 0x5139e5
push 1
call fcn.00403940
jmp 0x5139f6
push 1
call fcn.00403940
jmp 0x513922
mov eax, dword [esi + 0xc]
mov ecx, dword [eax + 0x60]
mov eax, ebx
cmp ecx, ebx
je 0x51540d
mov edx, ecx
mov edi, ecx
add edi, 0xfffffff4
je 0x51431a
mov ecx, dword [edx - 4]
test ecx, ecx
je 0x515401
add edx, 0xfffffff8
mov dword [esi + 8], edx
call dword [0x6445dc]
push dword [esi + 8]
call ecx
add esp, 4
mov edx, edi
cmp edi, ebx
jne 0x5153dd
mov eax, dword [esi + 0xc]
mov eax, dword [eax + 0x5c]
mov ecx, dword [esi + 0xc]
mov dword [ecx + 0x60], ebx
push eax
call fcn.0057dc2b
add esp, 4
jmp 0x514684
push dword [esi + 0x10]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x513c4f
push dword [esi + 0x10]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x513c76
push dword [esi + 0xf8]
call fcn.0057dc2b
add esp, 4
jmp 0x513969
push 1
call fcn.00403940
jmp 0x5138e2
mov eax, dword [esi + 0x20]
mov edi, dword [eax + 0x60]
mov eax, ebx
cmp edi, ebx
je 0x51555e
mov dword [esi + 0x24], edi
add dword [esi + 0x24], 0xfffffff4
je 0x51431a
mov ecx, dword [edi - 4]
test ecx, ecx
je 0x51554f
add edi, 0xfffffff8
call dword [0x6445dc]
push edi
call ecx
add esp, 4
mov eax, dword [esi + 0x24]
mov edi, eax
cmp eax, ebx
jne 0x51552f
mov eax, dword [esi + 0x20]
mov eax, dword [eax + 0x5c]
mov ecx, dword [esi + 0x20]
mov dword [ecx + 0x60], ebx
push eax
call fcn.0057dc2b
add esp, 4
jmp 0x514a2d
mov dword [esi + 8], ecx
mov dword [esi + 0x1c], eax
mov dword [esi + 0x20], ebx
add dword [esi + 8], 0xffffffa8
je 0x51431a
mov ebx, dword [esi + 8]
mov ecx, ebx
call fcn.0057d530
cmp ebx, dword [esi + 0x1c]
jne 0x51557b
mov eax, dword [esi + 0x10]
mov eax, dword [eax]
mov dword [esi + 8], eax
mov ebx, dword [esi + 0x20]
mov eax, dword [esi + 0x1c]
jmp 0x513bd6
xor eax, eax
dec eax
mov dword [esi + 0xe0], eax
mov eax, 0x7fffffff
mov dword [esi + 0xe4], eax
jmp 0x513adf
xor ecx, ecx
mov ebx, dword [esi + 0x28]
jmp 0x511ef4
mov ecx, dword [esi + 0x10]
mov dword [esi + 0x20], ebx
call fcn.005f4540
mov eax, dword [esi + 0x10]
push dword [eax]
call fcn.0057dc2b
mov ebx, dword [esi + 0x20]
add esp, 4
jmp 0x513be3
push dword [esi + 0x1c]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x5140a5
xor eax, eax
ucomisd xmm0, qword [0x6350b8]
mov ebx, 0x7fffffff
cmovb ebx, eax
jmp 0x513ffd
xor eax, eax
ucomisd xmm0, qword [0x6350b8]
mov edx, 0x7fffffff
cmovb edx, eax
jmp 0x51407b
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 + 0x6350a0]
jmp 0x513fb4
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.00502f80
add esp, 0xc
mov ebx, dword [ebx]
test ebx, ebx
je 0x513f38
lock dec dword [ebx]
jne 0x513f38
mov ecx, ebx
call fcn.00503060
push ebx
call fcn.0057dc2b
add esp, 4
jmp 0x513f38
push edi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x5156b3
lea edi, [ebx + 0x2c]
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x51569c
mov ecx, dword [ebx + 0x30]
call fcn.00558ee0
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x5145d9
mov eax, 3
jmp 0x513ebe
mov edi, ecx
add edi, 0xffffffa8
je 0x51431a
mov ecx, edi
mov dword [esi + 0x34], edi
call fcn.0057d530
cmp dword [esi + 0x34], ebx
jne 0x5156d3
mov eax, dword [esi + 0x24]
mov eax, dword [eax]
jmp 0x514a46
mov ecx, dword [esi + 0x20]
mov ecx, dword [ecx + 0x2c]
ja 0x515af5
cmp ecx, eax
jb 0x514444
jl 0x514447
je 0x51573a
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.0057d530
add edi, 0x58
add dword [esi + 0x24], 0xffffffa8
jne 0x515724
mov eax, dword [esi + 0x20]
mov eax, dword [eax + 0x2c]
cmp eax, ebx
jb 0x51444a
test ebx, ebx
js 0x51444d
je 0x514a65
mov eax, dword [esi + 0x20]
mov edi, dword [eax + 0x28]
imul ebx, ebx, 0x58
mov ecx, edi
call fcn.0057d530
add edi, 0x58
add ebx, 0xffffffa8
jne 0x515759
jmp 0x514a65
mov eax, dword [esi + 0x1c]
cmp eax, dword [esi + 8]
jb 0x51437e
jl 0x514381
je 0x5157ba
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 0x5157aa
lock dec dword [ebx]
jne 0x5157aa
mov ecx, dword [ebx + 8]
call dword [0x6445dc]
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 0x515789
cmp dword [esi + 0x10], 0
js 0x514384
je 0x515cc2
shl dword [esi + 0x10], 2
xor ebx, ebx
mov eax, dword [esi + 0x18]
mov edi, dword [eax + ebx]
test edi, edi
je 0x5157ee
lock dec dword [edi]
jne 0x5157ee
mov ecx, dword [edi + 8]
call dword [0x6445dc]
push edi
call ecx
add esp, 4
add ebx, 4
cmp dword [esi + 0x10], ebx
jne 0x5157d0
jmp 0x515cc2
mov ecx, edi
call fcn.005e65e0
jmp 0x5133dc
push ebx
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x514284
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x514226
add ebx, 0xffffffa8
je 0x51431a
mov ecx, ebx
call fcn.0057d530
cmp ebx, edi
jne 0x515821
mov eax, dword [esi + 8]
mov eax, dword [eax]
jmp 0x51469d
push dword [esi + 8]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x5145f8
push dword [esi + 8]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x51461a
push dword [esi + 0x24]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x51499e
push dword [esi + 0x24]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x5149c0
mov eax, dword [esi + 0x40]
cmp eax, dword [esi + 0x24]
jb 0x514450
jl 0x514453
je 0x5158c4
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 0x5158b4
lock dec dword [ebx]
jne 0x5158b4
mov ecx, dword [ebx + 8]
call dword [0x6445dc]
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 0x515893
cmp dword [esi + 0x34], 0
js 0x514456
je 0x5149f7
shl dword [esi + 0x34], 2
xor ebx, ebx
mov eax, dword [esi + 0x38]
mov edi, dword [eax + ebx]
test edi, edi
je 0x5158f8
lock dec dword [edi]
jne 0x5158f8
mov ecx, dword [edi + 8]
call dword [0x6445dc]
push edi
call ecx
add esp, 4
add ebx, 4
cmp dword [esi + 0x34], ebx
jne 0x5158da
jmp 0x5149f7
mov ecx, dword [esi + 0xc]
mov ecx, dword [ecx + 0x2c]
ja 0x515b29
cmp ecx, eax
jb 0x514372
jl 0x514375
je 0x51594c
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.0057d530
mov edx, dword [esi + 8]
add edx, 0x58
add edi, 0xffffffa8
jne 0x515931
mov eax, dword [esi + 0xc]
mov eax, dword [eax + 0x2c]
cmp eax, ebx
jb 0x514378
test ebx, ebx
js 0x51437b
je 0x5146bc
mov eax, dword [esi + 0xc]
mov eax, dword [eax + 0x28]
imul edi, ebx, 0x58
mov ebx, eax
mov ecx, eax
call fcn.0057d530
add ebx, 0x58
mov eax, ebx
add edi, 0xffffffa8
jne 0x51596b
jmp 0x5146bc
mov eax, dword [esi + 0x1c]
cmp eax, dword [esi + 0x18]
jb 0x514369
jl 0x51436c
je 0x5159d0
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 0x5159c0
lock dec dword [ebx]
jne 0x5159c0
mov ecx, dword [ebx + 8]
call dword [0x6445dc]
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 0x51599f
cmp dword [esi + 0x10], 0
js 0x51436f
mov eax, dword [esi + 0x10]
je 0x51363e
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 0x515a10
mov eax, ecx
lock dec dword [ecx]
jne 0x515a10
mov dword [esi + 0xc], eax
mov ecx, dword [eax + 8]
call dword [0x6445dc]
push dword [esi + 0xc]
call ecx
add esp, 4
add ebx, 4
mov eax, dword [esi + 0x10]
cmp eax, ebx
jne 0x5159e8
jmp 0x51363e
lea edi, [ebx + 0x2c]
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x515ae1
push edi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
mov ecx, dword [ebx + 0x30]
call fcn.00558ee0
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x51497f
cmp ecx, ebx
jb 0x514432
cmp eax, ebx
jg 0x514435
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.0057d530
add edi, 0x58
add ebx, 0xffffffa8
jne 0x515b15
jmp 0x514a65
cmp ecx, ebx
jb 0x514357
cmp eax, ebx
jg 0x51435a
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.0057d530
add ebx, 0x58
mov ecx, ebx
add edi, 0xffffffa8
jne 0x515b49
jmp 0x5146bc
cmp dword [esi + 0x40], ebx
jb 0x514438
mov eax, dword [esi + 0x38]
mov edi, dword [eax + ebx*4]
test edi, edi
je 0x51443b
mov eax, dword [esi + 0x38]
mov dword [eax + ebx*4], 0
mov ecx, dword [edi + 4]
call dword [0x6445dc]
push edi
call ecx
add esp, 4
lock dec dword [edi]
jne 0x515ba3
mov ecx, dword [edi + 8]
call dword [0x6445dc]
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 0x515b5f
mov eax, dword [esi + 0x24]
cmp dword [esi + 0x34], eax
jbe 0x515877
mov eax, dword [esi + 0x40]
cmp eax, dword [esi + 0x34]
jb 0x51443e
mov eax, dword [esi + 0x24]
cmp eax, dword [esi + 0x34]
jg 0x514441
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 0x515bfe
lock dec dword [ebx]
jne 0x515bfe
mov ecx, dword [ebx + 8]
call dword [0x6445dc]
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 0x515bdd
jmp 0x5149f7
cmp dword [esi + 0x1c], ebx
jb 0x51435d
mov eax, dword [esi + 0x18]
mov edi, dword [eax + ebx*4]
test edi, edi
je 0x514360
mov eax, dword [esi + 0x18]
mov dword [eax + ebx*4], 0
mov ecx, dword [edi + 4]
call dword [0x6445dc]
push edi
call ecx
add esp, 4
lock dec dword [edi]
jne 0x515c57
mov ecx, dword [edi + 8]
call dword [0x6445dc]
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 0x515c13
mov eax, dword [esi + 8]
cmp dword [esi + 0x10], eax
jbe 0x51576d
mov eax, dword [esi + 0x1c]
cmp eax, dword [esi + 0x10]
jb 0x514363
mov eax, dword [esi + 8]
cmp eax, dword [esi + 0x10]
jg 0x514366
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 0x515cb2
lock dec dword [ebx]
jne 0x515cb2
mov ecx, dword [ebx + 8]
call dword [0x6445dc]
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 0x515c91
push 0
push dword [esi + 0x18]
push 0x63bbe0
call fcn.0051e4d0
add esp, 0xc
cmp dword [esi + 0xc], 0
je 0x511e7f
jmp 0x514663
push 1
mov dword [esi + 0x14], edx
mov dword [esi + 0x2c], eax
call fcn.00403940
mov eax, dword [esi + 0x2c]
mov edx, dword [esi + 0x14]
jmp 0x51414e
mov edi, dword [esi + 8]
mov ecx, edi
call fcn.005f4540
push dword [edi]
call fcn.0057dc2b
add esp, 4
jmp 0x5146ab
mov edi, dword [esi + 0x24]
mov ecx, edi
call fcn.005f4540
push dword [edi]
call fcn.0057dc2b
add esp, 4
jmp 0x514a54