Function at 0x517fc0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xc0
mov esi, esp
mov ebx, ecx
lea ecx, [ebp + 8]
mov eax, dword [0x64a040]
xor eax, ebp
mov dword [esi + 0xb8], eax
mov eax, dword [ecx]
mov dword [esi + 0x28], eax
mov ecx, dword [ecx + 4]
pcmpeqd xmm0, xmm0
movdqa xmmword [esi + 0x90], xmm0
xor eax, eax
mov byte [esi + 0x90], al
mov byte [esi + 0x9c], al
test ecx, ecx
mov dword [esi + 0xc], ebx
mov dword [esi + 4], ecx
jne 0x518efa
xor eax, eax
dec eax
mov dword [esi], eax
mov dword [esi + 8], eax
push dword [ebx + 0x10]
call dword [sym.imp.KERNEL32.dll_ResetEvent]
pcmpeqd xmm0, xmm0
movdqu xmmword [esi + 0x80], xmm0
movdqu xmmword [esi + 0x74], xmm0
movdqu xmmword [esi + 0x64], xmm0
mov edi, dword [ebx - 0x10]
mov dword [esi + 0x60], 0x6289e8
mov eax, edi
shr eax, 0xe
mov ecx, edi
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x6527ec]
bt ecx, eax
jb 0x519a37
mov eax, edi
shr eax, 0x15
mov byte [eax + 0x65a7ec], 1
mov dword [esi + 0x64], edi
xor eax, eax
mov byte [esi + 0x80], al
pxor xmm0, xmm0
movdqu xmmword [esi + 0x68], xmm0
mov dword [esi + 0x60], 0x628a9c
mov dword [esi + 0x84], eax
pcmpeqd xmm0, xmm0
movdqa xmmword [esi + 0x40], xmm0
mov byte [esi + 0x40], al
mov byte [esi + 0x4c], al
mov dword [esi + 0x50], eax
mov edi, dword [ebx - 0x10]
add edi, 0x50
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x519383
mov ecx, dword [ebx - 0x10]
add ecx, 0x50
mov edx, ecx
shr edx, 0xe
mov eax, ecx
shr eax, 0x13
mov dword [esi + 0x24], eax
mov eax, dword [eax*4 + 0x6527ec]
mov dword [esi + 0x2c], edx
bt eax, edx
mov dword [esi + 0x3c], ecx
jb 0x519acb
mov eax, ecx
shr eax, 0x15
mov byte [eax + 0x65a7ec], 1
test ecx, ecx
je 0x5199b4
cmp byte [ebx - 5], 0
jne 0x5198b2
cmp byte [ebx - 0x1f], 0
je 0x519a1d
mov eax, dword [ebx - 0x10]
mov ecx, dword [eax + 0xac]
dec ecx
cmp byte [ebx - 0x20], 0
mov dword [eax + 0xac], ecx
je 0x51919e
mov edx, dword [eax + 0x5c]
cmp edx, dword [eax + 0x60]
je 0x518131
cmp ecx, dword [eax + 0xa4]
jae 0x519295
mov word [eax + 0x78], 0
mov ecx, dword [esi + 4]
cmp byte [ebx - 0x1d], 0
lea eax, [ebp + 8]
je 0x518147
mov byte [ebx - 0x1d], 0
cmp byte [ebx - 0x1f], 0
je 0x518151
mov byte [ebx - 0x1f], 0
mov dword [esi + 0x20], edi
test ecx, ecx
jne 0x5191f9
mov eax, dword [eax + 0xc]
mov dword [esi + 4], eax
mov edx, dword [ebx - 0x10]
mov eax, dword [edx]
mov edi, dword [eax + 0x28]
cmp edi, fcn.00547f70
jne 0x518e51
cmp dword [edx + 0xa4], 0
je 0x51848b
cmp byte [edx + 0xe4], 0
jne 0x51848b
mov edi, dword [edx + 0x68]
mov ecx, dword [edx + 0xb0]
mov dword [esi + 8], 0
mov ebx, 0
test edi, edi
mov dword [esi + 0x10], edx
mov dword [esi], ecx
jne 0x5192b0
mov ecx, dword [edx + 0x70]
mov eax, dword [edx + 0xa8]
mov dword [esi + 0x14], eax
mov eax, dword [edx + 0xb0]
mov dword [esi + 0x18], eax
mov edi, dword [edx + 0xac]
add ecx, dword [edx + 0x6c]
mov dword [esi + 0x1c], ecx
je 0x518d6e
mov eax, dword [edx + 8]
mov eax, dword [eax + 0x10]
cmp eax, 1
mov eax, dword [esi]
ja 0x5182c1
mov eax, dword [edx + 0x5c]
cmp eax, dword [edx + 0x60]
je 0x519a0e
mov cl, byte [eax + 8]
dec cl
cmp cl, 1
ja 0x518d68
mov eax, dword [eax]
mov dword [esi + 8], eax
mov eax, dword [eax]
mov ecx, dword [eax + 4]
cmp ecx, 0x548620
mov dword [esi + 0x34], ebx
jne 0x518221
xor eax, eax
inc eax
jmp 0x5182aa
cmp ecx, 0x57da10
jne 0x518eaf
mov ecx, dword [esi + 8]
mov eax, dword [ecx + 0x24]
test al, 1
jne 0x519896
mov edx, dword [ecx + 0x34]
test edx, edx
je 0x519b44
xor ecx, ecx
inc ecx
mov dword [esi + 0x38], edx
lock xadd dword [edx], ecx
test ecx, ecx
jle 0x519b47
cmp ecx, 0x7fffffff
je 0x519b4a
shr eax, 1
movzx eax, al
mov dword [esi + 0x30], eax
mov eax, dword [esi + 8]
mov eax, dword [eax + 0x34]
mov ecx, dword [eax + 4]
call dword [0x6445dc]
push dword [esi + 0x30]
push dword [esi + 0x38]
call ecx
add esp, 8
mov ecx, eax
mov eax, dword [esi + 0x38]
lock dec dword [eax]
je 0x519da8
cmp ecx, 0x20
mov eax, 0x20
cmovb eax, ecx
xor ecx, ecx
sub eax, dword [esi + 0x30]
cmovb eax, ecx
mov edx, dword [esi + 0x10]
mov ecx, dword [esi + 0x1c]
lea ebx, [ecx + eax]
add eax, ecx
dec eax
cmp eax, 1
adc ebx, 0xffffffff
mov dword [esi + 8], ebx
mov eax, dword [esi]
mov ebx, dword [esi + 0x34]
add ebx, eax
mov eax, dword [esi + 0x18]
sub edi, eax
mov ecx, dword [esi + 0x14]
cmp ecx, ebx
cmovb ebx, ecx
cmp ebx, eax
cmovbe ebx, eax
add edi, dword [esi + 8]
add edi, ebx
mov eax, dword [edx + 0xa4]
cmp eax, edi
cmovb edi, eax
mov ebx, 0x100
cmp edi, 0x100
cmovb ebx, edi
mov edi, dword [edx + 0xd0]
sub edi, dword [edx + 0xcc]
sar edi, 2
sub edi, dword [edx + 0xf4]
cmp ebx, edi
ja 0x518d9e
cmp ebx, edi
jne 0x518334
mov eax, dword [edx + 0xd0]
sub eax, dword [edx + 0xcc]
cmp eax, 0x400
je 0x518334
cmp dword [edx + 0xf4], 0
je 0x519435
mov eax, dword [edx + 0x5c]
cmp eax, dword [edx + 0x60]
je 0x51834e
mov ecx, dword [edx + 0xac]
cmp ecx, dword [edx + 0xa4]
jae 0x519319
mov word [edx + 0x78], 0
cmp byte [edx + 0xc0], 0
jne 0x51848b
mov edi, dword [edx + 0x68]
mov ebx, dword [edx + 0xb0]
xor ecx, ecx
test edi, edi
jne 0x519326
add ecx, ebx
cmp ecx, dword [edx + 0xa8]
ja 0x519764
mov edi, dword [edx + 0x68]
mov ebx, dword [edx + 0xac]
xor ecx, ecx
mov dword [esi], 0
test edi, edi
jne 0x519396
mov edi, dword [edx + 0x70]
add edi, dword [edx + 0x6c]
je 0x518479
mov eax, dword [edx + 8]
mov eax, dword [eax + 0x10]
cmp eax, 1
ja 0x518479
mov dword [esi + 8], ebx
mov eax, dword [edx + 0x5c]
cmp eax, dword [edx + 0x60]
je 0x519a0e
mov dword [esi + 0x18], edi
mov cl, byte [eax + 8]
dec cl
cmp cl, 1
ja 0x519b03
mov ebx, dword [eax]
mov eax, dword [ebx]
mov edi, dword [eax + 4]
cmp edi, 0x548620
jne 0x5183ea
xor eax, eax
inc eax
jmp 0x518465
cmp edi, 0x57da10
jne 0x51918d
mov eax, dword [ebx + 0x24]
test al, 1
jne 0x51989d
mov edx, ebx
mov ebx, dword [ebx + 0x34]
test ebx, ebx
je 0x519b59
xor ecx, ecx
inc ecx
lock xadd dword [ebx], ecx
test ecx, ecx
jle 0x519b5c
cmp ecx, 0x7fffffff
je 0x519b5f
shr eax, 1
movzx edi, al
mov eax, dword [edx + 0x34]
mov ecx, dword [eax + 4]
call dword [0x6445dc]
mov dword [esi + 0x14], edi
push edi
push ebx
call ecx
add esp, 8
mov edi, eax
lock dec dword [ebx]
je 0x519d6b
cmp edi, 0x20
mov eax, 0x20
cmovb eax, edi
xor ecx, ecx
sub eax, dword [esi + 0x14]
cmovb eax, ecx
mov edx, dword [esi + 0x10]
mov ecx, dword [esi + 0x18]
lea edi, [ecx + eax]
add eax, ecx
dec eax
mov ecx, edi
cmp eax, 1
adc ecx, 0xffffffff
mov ebx, dword [esi + 8]
add ebx, dword [esi]
lea eax, [ecx + ebx]
inc eax
cmp eax, dword [edx + 0xa4]
ja 0x518e81
mov eax, dword [esi + 0xc]
mov ebx, dword [eax - 0x10]
add ebx, 0x50
mov ecx, ebx
shr ecx, 0xe
mov edi, ebx
shr edi, 0x13
mov eax, dword [edi*4 + 0x6527ec]
mov dword [esi], ecx
bt eax, ecx
jb 0x519730
mov eax, ebx
shr eax, 0x15
mov byte [eax + 0x65a7ec], 1
test ebx, ebx
je 0x5199b7
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
cmp dword [esi + 0x74], 2
jae 0x5194b3
push ebx
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x519784
mov eax, dword [esi + 0xc]
lea ecx, [eax - 0x30]
mov eax, dword [edi*4 + 0x6527ec]
mov edx, dword [esi]
bt eax, edx
mov dword [esi + 8], ecx
jb 0x519753
mov eax, dword [ecx]
mov edi, dword [eax + 0x14]
cmp edi, 0x576830
jne 0x518e93
mov eax, dword [esi + 0xc]
mov ebx, dword [eax - 0x10]
cmp dword [ebx + 0xf4], 0
je 0x519113
mov eax, dword [ebx + 0xec]
mov eax, dword [eax + 0x10]
mov ecx, dword [esi + 4]
cmp eax, ecx
je 0x519a03
mov ebx, ecx
lea edi, [ecx + 0xc]
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x519aa8
mov eax, dword [ebx + 0x18]
or eax, dword [ebx + 0x1c]
setne byte [esi]
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov eax, dword [esi + 0xc]
mov ebx, dword [eax - 0x10]
add ebx, 0x50
mov edi, ebx
shr edi, 0xe
mov eax, ebx
shr eax, 0x13
mov dword [esi + 0x10], eax
mov eax, dword [eax*4 + 0x6527ec]
bt eax, edi
mov ecx, dword [esi + 8]
jb 0x519b19
mov eax, ebx
shr eax, 0x15
mov byte [eax + 0x65a7ec], 1
test ebx, ebx
je 0x519a0b
cmp byte [esi], 0
jne 0x519790
mov eax, dword [esi + 0xc]
mov eax, dword [eax - 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], edx
cmp ecx, dword [eax + 0xa4]
ja 0x5197a6
mov eax, dword [esi + 0x10]
mov eax, dword [eax*4 + 0x6527ec]
bt eax, edi
jb 0x519b0b
cmp byte [esi], 0
mov ebx, dword [esi + 0xc]
je 0x51973e
xor edi, edi
mov dword [esi], edi
mov eax, dword [ebx - 0x10]
mov ecx, dword [eax + 0x5c]
cmp ecx, dword [eax + 0x60]
je 0x518712
movzx edx, byte [ecx + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x518d75
mov ecx, dword [ebx - 0x10]
test dl, dl
je 0x519302
mov dword [esi + 0x10], edx
lea eax, [esi + 0x60]
push eax
lea eax, [esi + 0xa8]
push eax
call fcn.00541110
mov edx, dword [esi]
mov eax, edx
shr eax, 0xe
mov ecx, edx
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x6527ec]
bt ecx, eax
mov eax, dword [esi + 0xa8]
mov dword [esi + 0x18], eax
mov edi, dword [esi + 0xac]
mov eax, 0
mov dword [esi + 0xa8], eax
mov dword [esi + 0xac], eax
jb 0x519bb5
mov dword [esi + 0xa8], 0
mov eax, dword [esi + 0xac]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x6527ec]
bt edx, ecx
jb 0x519adc
mov dword [esi + 0xac], 0
mov ecx, dword [esi + 0xa8]
test ecx, ecx
mov edx, dword [esi + 0x10]
jne 0x519aea
cmp dword [esi + 0x18], 0
je 0x5185ed
mov eax, dword [ebx - 0x10]
mov ecx, dword [eax + 0xac]
inc ecx
mov dword [eax + 0xac], ecx
test dl, dl
je 0x519378
mov edx, dword [eax + 0x5c]
cmp edx, dword [eax + 0x60]
je 0x5186e5
cmp ecx, dword [eax + 0xa4]
jae 0x5193f9
mov word [eax + 0x78], 0
movzx eax, word [esi + 0x10]
or eax, 0x100
mov word [ebx - 0x20], ax
mov ecx, dword [esi + 0x18]
movzx eax, byte [ecx + 9]
and eax, 0x7f
or eax, 0x100
mov word [ebx - 0x1e], ax
xor edx, edx
jmp 0x518947
mov ecx, dword [esi + 8]
mov eax, dword [ecx]
mov edi, dword [eax + 0x1c]
cmp edi, 0x46b050
jne 0x5191cc
mov edx, dword [esi + 4]
mov eax, edx
shr eax, 0xe
mov ecx, edx
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x6527ec]
bt ecx, eax
mov edi, dword [ebx - 0x10]
mov eax, dword [edi + 0xec]
mov dword [esi + 0x18], eax
jb 0x5192a2
mov eax, edx
shr eax, 0x15
mov byte [eax + 0x65a7ec], 1
lea eax, [edi + 0xf0]
mov dword [esi + 8], edi
mov ecx, dword [edi + 0xf0]
mov ebx, eax
mov dword [esi + 0x10], eax
mov edi, eax
test ecx, ecx
je 0x518793
mov eax, dword [esi + 4]
mov eax, dword [eax + 0x38]
mov edi, ecx
mov ecx, dword [ecx + 0x10]
mov ecx, dword [ecx + 0x38]
cmp eax, ecx
jae 0x518e68
mov ecx, dword [edi]
mov ebx, edi
test ecx, ecx
jne 0x51877b
push 0x14
call fcn.0057dc30
add esp, 4
cmp eax, 0xfffffff0
je 0x519ab4
mov ecx, dword [esi + 4]
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 + 8]
mov ecx, dword [edx + 0xec]
mov ecx, dword [ecx]
test ecx, ecx
je 0x5187cf
mov dword [edx + 0xec], ecx
mov eax, dword [ebx]
mov ecx, dword [esi + 0x10]
mov edi, dword [ecx]
cmp eax, edi
sete byte [eax + 0xc]
je 0x51884a
mov edx, dword [eax + 8]
cmp byte [edx + 0xc], 0
jne 0x51884a
mov ecx, dword [edx + 8]
mov ebx, dword [ecx]
cmp ebx, edx
je 0x519148
test ebx, ebx
je 0x518814
cmp byte [ebx + 0xc], 0
jne 0x518814
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 0x5187dc
jmp 0x51884a
cmp dword [edx], eax
je 0x51940e
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 0x518835
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 eax, dword [esi + 8]
inc dword [eax + 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 + 0xc]
mov edi, dword [esi + 4]
jb 0x519b30
mov eax, dword [esi + 8]
mov eax, dword [eax + 0xec]
cmp dword [eax + 0x10], edi
jne 0x518892
mov eax, dword [esi + 0x18]
cmp eax, dword [esi + 0x10]
je 0x518932
mov edi, dword [eax + 0x10]
lea eax, [edi + 0xc]
mov dword [esi + 8], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x5198a4
mov ecx, dword [0x64c080]
cmp ecx, 0x56aca0
jne 0x5191a9
mov dword [esi + 4], edi
xor eax, eax
mov dword [esi + 0xac], eax
mov dword [esi + 0xa8], eax
lea eax, [esi + 0xa8]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov edi, dword [esi + 0xa8]
mov ecx, dword [esi + 0xac]
mov eax, 0x7bd05af6
cmp eax, edi
mov eax, 0x863
mov ebx, ecx
sbb eax, ecx
jl 0x519e3d
mov ecx, 0xf4240
mov eax, edi
mul ecx
imul ecx, ebx, 0xf4240
add ecx, edx
push dword [0x64f6a4]
push dword [0x64f6a0]
push ecx
push eax
call fcn.005a13d0
mov edi, dword [esi + 4]
mov ebx, dword [esi + 0xc]
mov dword [edi + 0x18], eax
mov dword [edi + 0x1c], edx
push dword [esi + 8]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov eax, dword [ebx - 0x10]
push dword [eax + 0xbc]
call dword [sym.imp.KERNEL32.dll_WakeAllConditionVariable]
xor ecx, ecx
xor edi, edi
mov edx, dword [esi]
mov eax, dword [esi + 0x28]
mov dword [eax], ecx
mov dword [eax + 4], edi
mov eax, edx
shr eax, 0xe
mov ecx, edx
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x6527ec]
bt ecx, eax
mov edi, dword [esi + 0x2c]
mov ebx, dword [esi + 0x24]
jb 0x519a9a
mov eax, dword [ebx*4 + 0x6527ec]
bt eax, edi
mov edi, dword [esi + 0x20]
jb 0x519a45
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
lea ecx, [esi + 0x40]
call fcn.0051a6d0
mov dword [esi + 0x60], 0x628a9c
mov ebx, dword [esi + 0x84]
test bl, 1
jne 0x5199ba
lea eax, [esi + 0x88]
cmp ebx, 2
jae 0x518ae3
test ebx, ebx
jne 0x518ad3
lea edi, [esi + 0x78]
mov dword [edi - 0x18], 0x6289e8
mov edx, dword [edi - 4]
mov eax, edx
mov dword [esi + 0xc], edi
and eax, 1
jne 0x519a2c
mov ebx, edx
shr ebx, 1
mov cl, 1
cmp edx, 2
jae 0x5194f3
test eax, eax
jne 0x5199c5
test cl, cl
je 0x519482
test eax, eax
jne 0x519a55
mov dword [esi + 0x74], 0
cmp byte [esi + 0x80], 0
jne 0x519824
mov edi, dword [esi + 0x68]
test edi, edi
jne 0x518b63
mov eax, dword [esi + 0x64]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x6527ec]
bt edx, ecx
jb 0x519a65
cmp byte [esi + 0x9c], 0
jne 0x518aae
lea eax, [ebp + 8]
mov edi, dword [eax + 4]
test edi, edi
jne 0x518c2c
mov dword [eax + 4], 0
test edi, edi
jne 0x518c58
mov edi, eax
mov eax, dword [eax + 8]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x6527ec]
bt edx, ecx
jb 0x519a73
mov dword [edi + 8], 0
mov ecx, dword [edi + 4]
test ecx, ecx
jne 0x519a81
mov edi, dword [edi]
mov ecx, dword [esi + 0xb8]
xor ecx, ebp
call fcn.005810d5
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10
mov edi, dword [esi + 0x98]
test edi, edi
jne 0x518bfa
lea ecx, [esi + 0x90]
mov dword [ecx + 8], 0
call fcn.0051a790
jmp 0x518a45
lea ecx, [esi + 0x84]
call fcn.00547ef0
jmp 0x5189be
shr ebx, 1
shl ebx, 2
xor edi, edi
mov dword [esi + 0xc], eax
mov ecx, dword [eax + edi]
test ecx, ecx
je 0x519b4d
xor eax, eax
inc eax
lock xadd dword [ecx + 4], eax
cmp eax, 0x7fffffff
je 0x519b41
mov dword [esi + 0xb4], 0x9c
mov al, byte [0x64f4c0]
test al, al
mov dword [esi], ecx
jne 0x519dfc
mov eax, dword [ecx + 0x48]
lea edx, [eax + 0x10]
cmp byte [eax + 0x14], 0
je 0x518bde
lea eax, [ecx + 4]
mov dword [esi + 4], eax
push dword [edx]
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov eax, dword [esi + 4]
lock dec dword [eax]
je 0x519d1f
add edi, 4
cmp ebx, edi
mov eax, dword [esi + 0xc]
jne 0x518aed
mov ebx, dword [esi + 0x84]
jmp 0x5189b6
mov ecx, dword [esi + 0x6c]
mov eax, edi
cmp ecx, edi
je 0x518bcd
mov edx, ecx
add ecx, 0xfffffff8
je 0x5199f4
mov ebx, dword [ecx]
test ebx, ebx
mov dword [esi + 0xc], ecx
jne 0x51959f
mov dword [ecx], 0
test ebx, ebx
jne 0x5195c9
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 0x519d79
mov dword [ebx - 4], 0
mov ecx, dword [ebx - 8]
test ecx, ecx
jne 0x519d55
mov ecx, dword [esi + 0xc]
cmp ecx, edi
jne 0x518b6c
mov eax, dword [esi + 0x68]
mov dword [esi + 0x6c], edi
push eax
call fcn.0057dc2b
add esp, 4
jmp 0x518a1f
mov dword [esi + 0xb4], 0x1a8
mov al, byte [0x64f5cc]
test al, al
je 0x518b34
jmp 0x51a04d
lea eax, [edi + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov eax, edi
shr eax, 0xe
mov ecx, edi
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x6527ec]
bt ecx, eax
jae 0x518abc
push edi
call fcn.00507280
add esp, 4
jmp 0x518abc
mov ebx, dword [eax + 8]
test ebx, ebx
je 0x518a53
mov dword [eax + 4], 0
mov al, byte [edi + 9]
and al, 0x7f
cmp al, 2
je 0x5196f0
lock dec dword [ebx + 0xc]
lea eax, [ebp + 8]
je 0x518ce4
lock dec dword [edi + 4]
jne 0x518a62
mov dword [edi], 0x6289f0
mov ebx, dword [edi + 0x5c]
test ebx, ebx
jne 0x519843
lea ecx, [edi + 0x3c]
mov ebx, dword [edi + 0x3c]
mov edx, dword [edi + 0x40]
mov eax, ebx
cmp edx, ebx
jne 0x51a026
mov dword [edi + 0x40], ebx
test eax, eax
jne 0x51a095
mov eax, dword [edi + 0x30]
mov ebx, dword [edi + 0x34]
cmp ebx, eax
jne 0x519f79
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 0x518cd3
push eax
call fcn.00507280
add esp, 4
push edi
call fcn.0057dc2b
add esp, 4
lea eax, [ebp + 8]
jmp 0x518a62
lea eax, [ebx + 0x14]
mov dword [esi + 0xc], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x519f5d
push dword [ebx + 0x18]
call dword [sym.imp.KERNEL32.dll_WakeAllConditionVariable]
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x519f6b
mov eax, dword [ebx + 0x1c]
mov dword [esi + 4], eax
mov eax, dword [ebx + 0x20]
mov dword [esi + 8], eax
pxor xmm0, xmm0
mov eax, dword [ebx + 0x24]
mov dword [esi], eax
mov eax, dword [ebx + 0x28]
movdqu xmmword [ebx + 0x1c], xmm0
mov ebx, eax
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov eax, dword [esi]
cmp eax, ebx
jne 0x519eb8
push 0
push dword [esi + 4]
push 0x63bbe0
call fcn.0051e4d0
add esp, 0xc
lea eax, [ebp + 8]
jmp 0x518a5a
mov eax, dword [esi + 0x1c]
mov dword [esi + 8], eax
mov eax, dword [esi]
jmp 0x5182c1
test dl, dl
je 0x518712
cmp eax, 1
jne 0x518712
mov ecx, dword [ebx - 0x10]
jmp 0x51861b
sar eax, 2
cmp eax, dword [edx + 0xa4]
jae 0x518dc7
jmp 0x5197d8
lea eax, [edx + 0xec]
mov dword [esi], eax
xor eax, eax
mov dword [esi + 8], eax
mov eax, dword [edx + 0xd0]
sub eax, dword [edx + 0xcc]
cmp eax, 0x400
je 0x518dc7
cmp dword [edx + 0xf4], 0
je 0x518d8e
mov ecx, dword [esi]
call fcn.00548630
test eax, eax
je 0x518de6
xor ecx, ecx
inc ecx
lock xadd dword [eax + 4], ecx
cmp ecx, 0x7fffffff
je 0x519b3e
mov dword [esi + 0xa8], eax
mov ecx, dword [esi + 0x84]
mov dword [esi + 0x18], 2
lea edx, [esi + 0x88]
test cl, 1
jne 0x519d3b
shr ecx, 1
cmp ecx, dword [esi + 0x18]
je 0x519dbc
shl ecx, 2
add edx, ecx
je 0x519ab4
mov dword [edx], eax
add dword [esi + 0x84], 2
mov eax, ebx
sub eax, edi
mov ecx, 0
cmovb eax, ecx
xor ecx, ecx
cmp eax, 2
setae cl
mov eax, dword [esi + 8]
cmp eax, ecx
lea eax, [eax + 1]
mov edx, dword [esi + 0x10]
je 0x518310
jmp 0x518da8
mov ecx, edi
mov ebx, edx
call dword [0x6445dc]
lea eax, [esi + 0x60]
mov ecx, ebx
push eax
call edi
jmp 0x51848b
jbe 0x519ac3
mov ecx, dword [edi + 4]
test ecx, ecx
jne 0x51877b
lea ebx, [edi + 4]
jmp 0x518793
cmp dword [edx + 0xb4], 0
jle 0x51848b
jmp 0x519771
mov ebx, ecx
mov ecx, edi
call dword [0x6445dc]
lea eax, [esi + 0x60]
mov ecx, ebx
push dword [esi + 4]
push eax
call edi
test al, al
jmp 0x5185e2
mov ebx, ecx
call dword [0x6445dc]
mov ecx, dword [esi + 8]
call ebx
jmp 0x5182a7
push dword [esi + 0x24]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x518f5c
push ebx
call fcn.00506e00
mov edx, dword [esi]
add esp, 4
jmp 0x518f7d
push ebx
call fcn.00506e00
mov edx, dword [esi]
add esp, 4
jmp 0x518fc4
push ebx
call fcn.00506e00
add esp, 4
jmp 0x518f47
mov dword [esi + 0x20], esp
push eax
sub esp, 8
mov edx, esp
lea ecx, [ebp + 8]
mov ebx, dword [ecx + 4]
mov dword [edx + 4], ebx
mov dword [ecx + 4], eax
mov edi, dword [ecx + 8]
mov dword [esi + 0x2c], edi
mov dword [edx + 8], edi
mov dword [ecx + 8], eax
lea eax, [esi + 0x60]
mov dword [esi + 8], edx
mov dword [edx], eax
mov ecx, ebx
shr ecx, 0xe
mov edi, ebx
shr edi, 0x13
mov eax, dword [edi*4 + 0x6527ec]
mov dword [esi], ecx
bt eax, ecx
jb 0x518eef
mov eax, ebx
shr eax, 0x15
mov byte [eax + 0x65a7ec], 1
lea eax, [ebx + 0x10]
mov dword [esi + 0x24], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x518ec1
mov dword [esi + 0x24], esp
mov eax, dword [edi*4 + 0x6527ec]
mov edx, dword [esi]
bt eax, edx
jb 0x518ecf
mov eax, ebx
shr eax, 0x15
mov byte [eax + 0x65a7ec], 1
mov eax, dword [edi*4 + 0x6527ec]
bt eax, edx
jae 0x518f94
push ebx
call fcn.00507280
mov edx, dword [esi]
add esp, 4
xor eax, eax
mov ecx, dword [esi + 8]
mov dword [ecx + 4], eax
mov dword [ecx + 8], eax
mov dword [esi + 0x60], ebx
mov eax, dword [esi + 0x2c]
mov dword [esi + 0x64], eax
mov eax, dword [edi*4 + 0x6527ec]
bt eax, edx
jb 0x518edf
mov eax, ebx
shr eax, 0x15
mov byte [eax + 0x65a7ec], 1
mov dword [esi + 0x68], ebx
mov eax, dword [edi*4 + 0x6527ec]
bt eax, edx
jae 0x518fdc
push ebx
call fcn.00507280
add esp, 4
mov esp, dword [esi + 0x24]
mov edi, dword [esi + 8]
mov eax, dword [edi + 4]
test eax, eax
jne 0x5190ed
mov dword [esi + 0x40], eax
mov dword [edi + 4], 0
mov ebx, dword [esi + 0xc]
test eax, eax
jne 0x5190d5
mov eax, dword [edi + 8]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x6527ec]
bt edx, ecx
jb 0x519d2d
mov dword [edi + 8], 0
mov ecx, dword [edi + 4]
test ecx, ecx
jne 0x519b89
mov esp, dword [esi + 0x20]
cmp byte [esi + 0x9c], 0
jne 0x519d87
mov eax, dword [esi + 0x60]
mov ecx, dword [esi + 0x64]
mov dword [esi + 0x90], eax
xor eax, eax
mov dword [esi + 0x60], eax
mov dword [esi + 8], ecx
mov dword [esi + 0x94], ecx
mov dword [esi + 0x64], eax
mov edi, dword [esi + 0x68]
mov eax, edi
shr eax, 0xe
mov ecx, edi
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x6527ec]
bt ecx, eax
jb 0x5190c7
mov eax, edi
shr eax, 0x15
mov byte [eax + 0x65a7ec], 1
mov eax, edi
mov dword [esi], edi
mov dword [esi + 0x98], edi
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x6527ec]
bt edx, ecx
jae 0x5190ac
push eax
call fcn.00507280
add esp, 4
mov byte [esi + 0x9c], 1
lea ecx, [esi + 0x60]
mov dword [ecx + 8], 0
call fcn.0051a790
jmp 0x51801b
push edi
call fcn.00506e00
add esp, 4
mov eax, dword [esi + 0x68]
jmp 0x519085
lock dec dword [eax + 4]
jne 0x519002
mov ecx, eax
push 1
call fcn.0053b7e0
jmp 0x519002
mov ecx, dword [edi + 8]
test ecx, ecx
je 0x518fed
mov dword [edi + 4], 0
lea edi, [esi + 0x40]
push eax
push edi
call fcn.00406e30
mov eax, dword [edi]
mov edi, dword [esi + 8]
jmp 0x518ff7
xor eax, eax
jmp 0x51852c
mov dword [edi + 8], edx
mov ecx, dword [edx + 8]
jmp 0x51912e
mov eax, dword [edx + 4]
mov edi, dword [eax]
mov dword [edx + 4], edi
test edi, edi
jne 0x51911a
mov dword [eax + 8], ecx
mov ecx, dword [edx + 8]
cmp dword [ecx], edx
jne 0x519df4
mov dword [ecx], eax
mov dword [eax], edx
mov dword [edx + 8], eax
mov ecx, dword [eax + 8]
jmp 0x51915f
mov ebx, dword [ecx + 4]
test ebx, ebx
je 0x519159
cmp byte [ebx + 0xc], 0
je 0x5187fc
cmp dword [edx], eax
jne 0x519122
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 0x519175
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 0x518847
mov ecx, edi
call dword [0x6445dc]
mov ecx, ebx
call edi
jmp 0x518462
dec dword [eax + 0xb0]
jmp 0x51811d
call dword [0x6445dc]
lea eax, [esi + 0xa8]
push eax
call ecx
add esp, 4
mov eax, dword [esi + 0xa8]
mov edx, dword [esi + 0xac]
jmp 0x518923
mov ebx, ecx
mov ecx, edi
call dword [0x6445dc]
mov ecx, ebx
push dword [esi + 4]
lea eax, [esi + 0x60]
push eax
call edi
jmp 0x518941
push ecx
mov dword [esi + 8], edx
call fcn.00506e00
mov edx, dword [esi + 8]
mov ecx, dword [esi]
add esp, 4
jmp 0x519249
mov dword [esi + 0x10], esp
mov edx, dword [ebx - 0x10]
push eax
sub esp, 0x10
mov edi, esp
mov eax, dword [esi + 0x90]
mov dword [edi + 8], eax
xor eax, eax
mov dword [esi + 0x90], eax
mov ecx, dword [esi + 8]
mov dword [esi + 4], edi
mov dword [edi + 0xc], ecx
mov dword [esi + 0x94], eax
mov ecx, dword [esi]
mov edi, ecx
shr edi, 0xe
mov ebx, ecx
shr ebx, 0x13
mov eax, dword [ebx*4 + 0x6527ec]
bt eax, edi
jb 0x5191e6
mov eax, ecx
shr eax, 0x15
mov byte [eax + 0x65a7ec], 1
mov eax, dword [esi + 4]
mov dword [eax + 0x10], ecx
mov eax, dword [ebx*4 + 0x6527ec]
bt eax, edi
jae 0x519268
push ecx
mov edi, edx
call fcn.00507280
mov edx, edi
add esp, 4
mov dword [esi + 0x98], 0
lea eax, [esi + 0x60]
mov ecx, dword [esi + 4]
mov dword [ecx], eax
lea eax, [esi + 0x40]
mov dword [ecx + 4], eax
mov ecx, edx
call fcn.0051ad00
mov esp, dword [esi + 0x10]
lea eax, [ebp + 8]
mov ebx, dword [esi + 0xc]
jmp 0x51815c
movzx ecx, word [edx + 8]
mov word [eax + 0x78], cx
jmp 0x518137
push edx
call fcn.00506e00
add esp, 4
jmp 0x51875b
mov eax, dword [edx + 8]
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x5181b2
mov eax, dword [edx + 0x5c]
cmp eax, dword [edx + 0x60]
je 0x519a0e
cmp byte [eax + 8], 0
jne 0x5192fb
mov eax, dword [eax]
mov dword [esi + 0x18], eax
mov eax, dword [eax]
mov ebx, dword [eax + 4]
mov ecx, ebx
call dword [0x6445dc]
mov ecx, dword [esi + 0x18]
call ebx
mov edx, dword [esi + 0x10]
lea ebx, [edi + eax]
add eax, edi
dec eax
cmp eax, 1
adc ebx, 0xffffffff
jmp 0x5181b2
mov ebx, edi
jmp 0x5181b2
mov eax, dword [ecx + 0xb0]
cmp eax, dword [ecx + 0xa8]
jb 0x51861b
jmp 0x518712
movzx eax, word [eax + 8]
mov word [edx + 0x78], ax
jmp 0x518354
mov eax, dword [edx + 8]
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x518374
mov eax, dword [edx + 0x5c]
cmp eax, dword [edx + 0x60]
je 0x519a0e
cmp byte [eax + 8], 0
jne 0x519371
mov eax, dword [eax]
mov dword [esi], eax
mov eax, dword [eax]
mov ecx, dword [eax + 4]
mov dword [esi + 8], ecx
call dword [0x6445dc]
mov ecx, dword [esi]
call dword [esi + 8]
mov edx, dword [esi + 0x10]
lea ecx, [edi + eax]
add eax, edi
dec eax
cmp eax, 1
adc ecx, 0xffffffff
jmp 0x518374
mov ecx, edi
jmp 0x518374
inc dword [eax + 0xb0]
jmp 0x5186d1
push edi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x5180b2
mov dword [esi], edi
jmp 0x51839b
mov eax, dword [edx + 8]
mov eax, dword [eax + 0x10]
mov dword [esi], 0
test eax, eax
jne 0x51839b
mov eax, dword [edx + 0x5c]
cmp eax, dword [edx + 0x60]
je 0x519a0e
cmp byte [eax + 8], 0
jne 0x51938f
mov eax, dword [eax]
mov dword [esi], eax
mov eax, dword [eax]
mov ecx, dword [eax + 4]
mov dword [esi + 8], ebx
mov ebx, ecx
call dword [0x6445dc]
mov ecx, dword [esi]
call ebx
xor ecx, ecx
mov ebx, dword [esi + 8]
mov edx, dword [esi + 0x10]
mov dword [esi + 0x18], eax
mov eax, edi
mov edi, dword [esi + 0x18]
add edi, eax
mov dword [esi], edi
mov edi, dword [esi + 0x18]
add eax, edi
dec eax
cmp eax, 1
adc dword [esi], 0xffffffff
jmp 0x51839b
movzx ecx, word [edx + 8]
mov word [eax + 0x78], cx
jmp 0x5186eb
mov dword [edi + 8], edx
mov ecx, dword [edx + 8]
jmp 0x519417
mov edi, dword [eax + 4]
mov dword [edx], edi
test edi, edi
jne 0x519406
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 0x51881e
sar eax, 2
cmp eax, dword [edx + 0xa4]
jae 0x518334
lea ebx, [edx + 0xec]
lea edi, [esi + 0xa8]
mov dword [edi], 0xffffffff
lea eax, [esi + 0x60]
mov ecx, edx
push eax
push edi
call fcn.0040e200
mov edi, dword [edi]
mov ecx, ebx
push edi
call fcn.00548a70
test edi, edi
je 0x51947a
lock dec dword [edi + 4]
je 0x51a27f
mov edx, dword [esi + 0x10]
jmp 0x518334
lea edi, [edi + ebx*4]
add edi, 0xfffffffc
neg ebx
test edi, edi
je 0x5199f4
mov ecx, dword [edi]
test ecx, ecx
je 0x5194a2
lock dec dword [ecx + 4]
je 0x51a0d5
add edi, 0xfffffffc
inc ebx
jne 0x51948a
mov eax, dword [esi + 0x74]
and eax, 1
jmp 0x5189f8
lea ecx, [esi + 0x60]
call fcn.0043ff00
lea eax, [esi + 0x60]
mov edx, dword [eax + 0x14]
mov eax, edx
and eax, 1
jne 0x51a0b1
lea ecx, [esi + 0x78]
cmp edx, 2
jae 0x519939
test eax, eax
jne 0x51a26f
mov dword [esi + 0x74], 0
mov byte [esi + 0x80], 0
jmp 0x5184d5
shl ebx, 2
xor ecx, ecx
mov eax, dword [esi + 0xc]
mov dword [esi], ecx
mov ecx, dword [eax + ecx]
test ecx, ecx
je 0x519517
xor eax, eax
inc eax
lock xadd dword [ecx + 4], eax
cmp eax, 0x7fffffff
je 0x51a0ab
mov dword [esi + 4], ecx
mov ecx, dword [esi + 0x64]
mov eax, dword [ecx + 0x30]
mov edx, dword [ecx + 0x34]
test eax, eax
je 0x51953b
xor ecx, ecx
inc ecx
lock xadd dword [eax + 4], ecx
cmp ecx, 0x7fffffff
je 0x51a0ae
mov ecx, dword [esi + 4]
push edx
push eax
call fcn.00443140
mov ecx, dword [esi + 0x64]
cmp byte [ecx + 0xe0], 0
jne 0x51a0b9
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x519566
lock dec dword [ecx + 4]
je 0x51a0c9
mov ecx, dword [esi]
add ecx, 4
cmp ebx, ecx
jne 0x5194f8
mov ecx, dword [esi + 0x74]
mov ebx, ecx
shr ebx, 1
mov eax, ecx
and eax, 1
cmp ecx, 2
setb cl
jmp 0x5189e8
mov eax, dword [esi + 4]
mov eax, dword [eax + 8]
mov ecx, 0xfffffffe
lock xadd dword [eax], ecx
cmp ecx, 3
jne 0x5195bc
jmp 0x51997a
mov eax, dword [edx - 4]
mov dword [esi + 4], eax
test eax, eax
je 0x518b84
mov dword [ecx], 0
mov al, byte [ebx + 9]
and al, 0x7f
cmp al, 2
je 0x519586
mov eax, dword [esi + 4]
lock dec dword [eax + 0xc]
je 0x51965d
lock dec dword [ebx + 4]
jne 0x518b92
mov dword [ebx], 0x6289f0
mov ecx, dword [ebx + 0x5c]
test ecx, ecx
mov dword [esi + 8], edx
jne 0x5198e3
lea eax, [ebx + 0x3c]
mov dword [esi], eax
mov eax, dword [ebx + 0x3c]
mov ecx, dword [ebx + 0x40]
mov dword [esi + 4], eax
cmp ecx, eax
jne 0x51a2e3
mov dword [ebx + 0x40], eax
cmp dword [esi + 4], 0
jne 0x51a317
mov eax, dword [ebx + 0x30]
mov ecx, dword [ebx + 0x34]
cmp ecx, eax
jne 0x51a1b6
push 0
push dword [ebx + 0x28]
push 0x63bbe0
call fcn.0051e4d0
add esp, 0xc
mov eax, dword [ebx + 0x24]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x6527ec]
bt edx, ecx
jae 0x51964c
push eax
call fcn.00507280
add esp, 4
push ebx
call fcn.0057dc2b
add esp, 4
mov edx, dword [esi + 8]
jmp 0x518b92
mov dword [esi + 8], edx
lea ecx, [eax + 0x14]
mov dword [esi], ecx
push ecx
mov eax, dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
call eax
test al, al
je 0x51a0e1
mov eax, dword [esi + 4]
push dword [eax + 0x18]
call dword [sym.imp.KERNEL32.dll_WakeAllConditionVariable]
push dword [esi]
mov eax, dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
call eax
push dword [esi]
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x51a0ee
mov ecx, dword [esi + 4]
mov eax, dword [ecx + 0x1c]
mov dword [esi + 0x28], eax
mov eax, dword [ecx + 0x20]
mov dword [esi + 0x24], eax
mov eax, dword [ecx + 0x24]
mov dword [esi + 0x2c], eax
mov eax, dword [ecx + 0x28]
mov dword [esi + 0x20], eax
pxor xmm0, xmm0
movdqu xmmword [ecx + 0x1c], xmm0
push dword [esi]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ecx, dword [esi + 0x2c]
mov eax, dword [esi + 0x20]
mov edx, ecx
cmp ecx, eax
jne 0x51a0fb
push 0
push dword [esi + 0x28]
push 0x63bbe0
call fcn.0051e4d0
add esp, 0xc
mov edx, dword [esi + 8]
jmp 0x518b8a
mov eax, dword [ebx + 8]
mov ecx, 0xfffffffe
lock xadd dword [eax], ecx
cmp ecx, 3
jne 0x518c4b
lea eax, [ebx + 0x2c]
mov dword [esi + 0xc], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x51a383
mov ecx, dword [ebx + 0x30]
call fcn.00558ee0
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x518c4b
push ebx
call fcn.00506e00
add esp, 4
jmp 0x5184bc
xor eax, eax
mov ecx, dword [esi + 0x28]
mov dword [ecx], eax
mov dword [ecx + 4], eax
mov edi, dword [esi + 0x2c]
mov ebx, dword [esi + 0x24]
jmp 0x51896f
push ebx
call fcn.00506f30
mov ecx, dword [esi + 8]
add esp, 4
jmp 0x5184ff
cmp dword [edx + 0xb8], 0
jle 0x518382
mov al, 1
mov byte [esi + 0x80], al
mov byte [edx + 0xc0], al
jmp 0x51848b
push ebx
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x5184e4
mov dword [esi + 0x18], edi
push dword [esi + 4]
call fcn.0040ae90
mov ecx, 0x18
test al, al
jne 0x5197ae
jmp 0x5197ca
mov dword [esi + 0x18], edi
mov ecx, 0x1c
mov eax, dword [esi + 8]
mov eax, dword [eax]
mov edi, dword [eax + ecx]
mov ecx, edi
call dword [0x6445dc]
lea eax, [esi + 0x60]
mov ecx, dword [esi + 8]
push dword [esi + 4]
push eax
call edi
mov dword [esi], 0
mov edi, dword [esi + 0x18]
jmp 0x5185cc
lea eax, [esi + 0xa8]
mov dword [eax], 0xffffffff
mov ecx, edx
lea edx, [esi + 0x60]
push edx
push eax
call fcn.0040e200
lea eax, [esi + 0xa8]
mov eax, dword [eax]
mov dword [esi + 0x18], eax
mov ecx, dword [esi]
push eax
call fcn.00548a70
mov ecx, dword [esi + 0x18]
test ecx, ecx
je 0x518dc7
lock dec dword [ecx + 4]
jne 0x518dc7
push 1
call fcn.00403940
jmp 0x518dc7
mov ecx, dword [esi + 0x64]
call fcn.00443320
cmp dword [esi + 0x74], 0
je 0x518a14
lea ecx, [esi + 0x74]
call fcn.005f35a0
jmp 0x518a14
mov edx, dword [edi + 0x60]
mov eax, ebx
cmp edx, ebx
je 0x519885
mov ecx, edx
mov eax, edx
add eax, 0xfffffff4
mov dword [esi + 0xc], eax
je 0x5199f4
mov eax, ecx
mov ecx, dword [ecx - 4]
test ecx, ecx
je 0x519879
add eax, 0xfffffff8
mov dword [esi + 4], eax
call dword [0x6445dc]
push dword [esi + 4]
call ecx
add esp, 4
mov eax, dword [esi + 0xc]
mov ecx, eax
cmp eax, ebx
jne 0x519850
mov eax, dword [edi + 0x5c]
mov dword [edi + 0x60], ebx
push eax
call fcn.0057dc2b
add esp, 4
jmp 0x518c73
xor eax, eax
jmp 0x5182aa
xor eax, eax
jmp 0x518465
push dword [esi + 8]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x5188a7
mov ecx, dword [ebx - 0x10]
call fcn.00403ae0
cmp byte [ebx - 0x1f], 0
je 0x519a1d
mov eax, dword [esi + 0xc]
cmp byte [eax - 0x20], 0
je 0x51a335
mov ebx, dword [esi + 0xc]
mov word [ebx - 7], 0
mov byte [ebx - 5], 0
jmp 0x5180f9
mov dword [esi + 0x10], ebx
mov ebx, dword [ebx + 0x60]
mov eax, ecx
mov dword [esi], ecx
cmp ebx, ecx
je 0x519923
mov dword [esi + 4], ebx
add dword [esi + 4], 0xfffffff4
je 0x5199f4
mov ecx, dword [ebx - 4]
test ecx, ecx
je 0x519914
add ebx, 0xfffffff8
call dword [0x6445dc]
push ebx
call ecx
add esp, 4
mov eax, dword [esi + 4]
mov ebx, eax
cmp eax, dword [esi]
jne 0x5198f4
mov eax, dword [esi + 0x10]
mov eax, dword [eax + 0x5c]
mov ebx, dword [esi + 0x10]
mov ecx, dword [esi]
mov dword [ebx + 0x60], ecx
push eax
call fcn.0057dc2b
add esp, 4
jmp 0x5195e7
shr edx, 1
lea eax, [ecx + edx*4]
add eax, 0xfffffffc
mov dword [esi + 8], eax
neg edx
mov dword [esi + 0x10], edx
cmp dword [esi + 8], 0
je 0x5199f4
mov eax, dword [esi + 8]
mov ecx, dword [eax]
test ecx, ecx
je 0x519966
lock dec dword [ecx + 4]
je 0x51a345
add dword [esi + 8], 0xfffffffc
inc dword [esi + 0x10]
jne 0x519949
mov eax, dword [esi + 0x74]
and eax, 1
jmp 0x5194d8
mov dword [esi + 0x10], ebx
mov dword [esi + 8], edx
mov eax, dword [esi + 4]
add eax, 0x2c
mov ebx, eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x51a3b8
mov eax, dword [esi + 4]
mov ecx, dword [eax + 0x30]
call fcn.00558ee0
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov edx, dword [esi + 8]
mov ebx, dword [esi + 0x10]
jmp 0x5195bc
int3
int3
mov eax, dword [esi + 0x88]
jmp 0x5189ad
mov edi, dword [esi + 0x78]
jmp 0x5189f0
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
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
mov byte [esi], 1
jmp 0x518561
int3
push str....._third_partylibc_srcinclude_vector:618:_assertion__empty___failed:_front___called_on_an_empty_vector_n
push 0x62a183
call fcn.005aacb0
push str....._third_partylibc_srcincludeoptional:801:_assertion_this__has_value___failed:_optional_operator_called_on_a_disengaged_value_n
push 0x62a183
call fcn.005aacb0
mov ecx, dword [esi + 0x78]
mov dword [esi + 0xc], ecx
jmp 0x5189d9
push edi
call fcn.00506e00
add esp, 4
jmp 0x51806a
push dword [esi + 0x3c]
call fcn.00506f30
add esp, 4
jmp 0x518982
push dword [esi + 0x78]
call fcn.0057dc2b
add esp, 4
jmp 0x518a00
push eax
call fcn.00506f30
add esp, 4
jmp 0x518a3c
push eax
call fcn.00507280
add esp, 4
jmp 0x518a81
lock dec dword [ecx + 4]
jne 0x518a93
push 1
call fcn.0053b7e0
lea edi, [ebp + 8]
jmp 0x518a93
push edx
call fcn.00507280
add esp, 4
jmp 0x51896f
push edi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x51854b
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
mov eax, dword [esi + 4]
jmp 0x518855
push ecx
call fcn.00506e00
mov ecx, dword [esi + 0x3c]
add esp, 4
jmp 0x5180e7
push eax
call fcn.00507280
add esp, 4
jmp 0x518694
lock dec dword [ecx + 4]
jne 0x5186af
push 1
call fcn.0053b7e0
mov edx, dword [esi + 0x10]
jmp 0x5186af
mov ecx, dword [esi + 0x18]
jmp 0x518476
push ebx
call fcn.00506f30
add esp, 4
jmp 0x5185df
push ebx
mov dword [esi + 0x18], edi
call fcn.00506e00
mov edi, dword [esi + 0x18]
mov ecx, dword [esi + 8]
add esp, 4
jmp 0x518590
push eax
call fcn.00507280
add esp, 4
jmp 0x518875
int3
int3
int3
int3
int3
xor ecx, ecx
call fcn.00539a40
jmp 0x518b4e
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
lock dec dword [ecx + 4]
jne 0x519031
push 1
call fcn.0053b7e0
jmp 0x519031
mov eax, dword [ebx + 8]
mov ecx, 0xfffffffe
lock xadd dword [eax], ecx
cmp ecx, 3
jne 0x519bf1
jmp 0x51a35c
push edx
call fcn.00507280
add esp, 4
mov eax, dword [esi + 0xa8]
mov dword [esi], eax
test eax, eax
je 0x51866a
mov ebx, dword [esi + 0xac]
mov dword [esi + 0xa8], 0
test ebx, ebx
je 0x519c7d
mov eax, dword [esi]
mov al, byte [eax + 9]
and al, 0x7f
cmp al, 2
je 0x519b9f
lock dec dword [ebx + 0xc]
jne 0x519c7d
lea eax, [ebx + 0x14]
mov dword [esi + 0x14], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x51a3e5
push dword [ebx + 0x18]
call dword [sym.imp.KERNEL32.dll_WakeAllConditionVariable]
push dword [esi + 0x14]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
push dword [esi + 0x14]
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x51a3f3
mov eax, dword [ebx + 0x1c]
mov dword [esi + 0x38], eax
mov eax, dword [ebx + 0x20]
mov dword [esi + 0x30], eax
pxor xmm0, xmm0
mov eax, dword [ebx + 0x24]
mov dword [esi + 0x34], eax
mov eax, dword [ebx + 0x28]
mov dword [esi + 0x1c], eax
movdqu xmmword [ebx + 0x1c], xmm0
push dword [esi + 0x14]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov eax, dword [esi + 0x34]
mov ebx, eax
cmp eax, dword [esi + 0x1c]
jne 0x51a602
push 0
push dword [esi + 0x38]
push 0x63bbe0
call fcn.0051e4d0
add esp, 0xc
mov eax, dword [esi]
lock dec dword [eax + 4]
mov ebx, dword [esi + 0xc]
jne 0x518674
mov eax, dword [esi]
mov dword [eax], 0x6289f0
mov ebx, dword [eax + 0x5c]
test ebx, ebx
jne 0x51a28d
mov eax, dword [esi]
lea ecx, [eax + 0x3c]
mov dword [esi + 0x1c], ecx
mov ebx, dword [eax + 0x3c]
mov ecx, dword [eax + 0x40]
mov eax, ebx
mov dword [esi + 0x14], ecx
cmp ecx, ebx
jne 0x51a3c4
mov ecx, dword [esi]
mov dword [ecx + 0x40], ebx
test eax, eax
jne 0x51a6ad
mov ecx, dword [esi]
mov eax, dword [ecx + 0x30]
mov ebx, dword [ecx + 0x34]
cmp ebx, eax
jne 0x51a468
push 0
mov ebx, dword [esi]
push dword [ebx + 0x28]
push 0x63bbe0
call fcn.0051e4d0
add esp, 0xc
mov eax, dword [ebx + 0x24]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x6527ec]
bt edx, ecx
jae 0x519d0d
push eax
call fcn.00507280
add esp, 4
push dword [esi]
call fcn.0057dc2b
add esp, 4
mov ebx, dword [esi + 0xc]
jmp 0x518674
mov ecx, dword [esi]
push 1
call fcn.00403940
jmp 0x518b4e
push eax
call fcn.00507280
add esp, 4
jmp 0x51901f
mov edx, dword [esi + 0x88]
mov dword [esi + 0x14], ebx
mov ebx, dword [esi + 0x8c]
mov dword [esi + 0x18], ebx
mov ebx, dword [esi + 0x14]
jmp 0x518e08
lock dec dword [ecx + 4]
jne 0x518bc3
push 1
call fcn.0053b7e0
jmp 0x518bc3
push ebx
call fcn.00502690
add esp, 4
jmp 0x51844f
push eax
call fcn.00507280
add esp, 4
jmp 0x518bb1
lea ecx, [esi + 0x98]
call fcn.00576770
lea edi, [esi + 0x90]
mov ecx, edi
call fcn.0051a790
mov byte [edi + 0xc], 0
jmp 0x519041
push eax
mov dword [esi + 8], ecx
call fcn.00502690
mov ecx, dword [esi + 8]
add esp, 4
jmp 0x518294
lea eax, [esi + 0xa8]
lea ecx, [esi + 0x84]
push eax
call fcn.005f4630
lea eax, [esi + 0xa8]
mov ecx, dword [eax]
test ecx, ecx
je 0x518e27
lock dec dword [ecx + 4]
jne 0x518e27
push 1
call fcn.00403940
jmp 0x518e27
add ecx, 4
jmp 0x51913c
movzx eax, al
mov ecx, dword [0x64e76c]
mov edx, dword [0x64e768]
xor edx, dword [esi]
mov dword [esi + 0x44], ecx
mov dword [esi + 0x40], edx
lea ecx, [esi + 0xa8]
mov dword [ecx], str.WorkerThreadWaitableEvent::WakeUp
lea edx, [esi + 0x40]
push edx
push 3
push ecx
lea ecx, [esi + 0xb4]
push ecx
push eax
call fcn.005e2380
mov ecx, dword [esi]
add esp, 0x14
jmp 0x518b24
mov eax, dword [0x64f6a0]
mov dword [esi + 0x10], eax
mov ecx, dword [0x64f6a4]
mov dword [esi + 0x18], ecx
push ecx
push eax
mov dword [esi + 0x14], ebx
push ebx
push edi
call fcn.005a13d0
mov ecx, edx
mov ebx, eax
mul dword [esi + 0x10]
mov dword [esi + 0x1c], eax
mov eax, ebx
imul ebx, dword [esi + 0x18]
add edx, ebx
imul ebx, ecx, 0xf4240
imul ecx, dword [esi + 0x10]
add ecx, edx
sub edi, dword [esi + 0x1c]
sbb dword [esi + 0x14], ecx
mov ecx, 0xf4240
mul ecx
mov dword [esi + 0x1c], eax
add edx, ebx
mov dword [esi + 0x34], edx
mov ebx, dword [esi + 0xc]
mov eax, edi
mul ecx
imul ecx, dword [esi + 0x14], 0xf4240
add edx, ecx
push dword [esi + 0x18]
push dword [esi + 0x10]
push edx
push eax
call fcn.005a13d0
add eax, dword [esi + 0x1c]
adc edx, dword [esi + 0x34]
mov edi, dword [esi + 4]
jmp 0x518923
mov dword [esi + 0xc], ebx
mov ebx, eax
cmp dword [esi + 8], ebx
jb 0x51a391
mov eax, dword [esi + 4]
mov ecx, dword [eax + ebx*4]
test ecx, ecx
je 0x51a394
mov eax, ecx
mov edx, ecx
mov dword [esi + 0x28], eax
mov dword [esi + 0x60], eax
mov eax, dword [esi + 4]
xor ecx, ecx
mov dword [eax + ebx*4], ecx
mov ecx, dword [edx + 4]
call dword [0x6445dc]
push dword [esi + 0x28]
call ecx
add esp, 4
lea ecx, [esi + 0x60]
call fcn.0057b780
inc ebx
cmp ebx, dword [esi + 8]
mov eax, 0
cmove ebx, eax
cmp ebx, dword [esi + 0xc]
jne 0x519ebd
mov eax, dword [esi]
cmp dword [esi + 0xc], eax
jbe 0x51a4ea
mov eax, dword [esi + 8]
cmp eax, dword [esi + 0xc]
jb 0x51a397
mov eax, dword [esi]
cmp eax, dword [esi + 0xc]
jg 0x51a39a
mov eax, dword [esi]
mov ecx, dword [esi + 4]
lea ebx, [ecx + eax*4]
mov ecx, dword [esi + 0xc]
shl ecx, 2
shl eax, 2
sub ecx, eax
mov dword [esi + 0xc], ecx
mov ecx, ebx
call fcn.0057b780
add ebx, 4
add dword [esi + 0xc], 0xfffffffc
jne 0x519f48
jmp 0x518d4e
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x518cf9
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x518d1c
mov ecx, dword [edi + 0x2c]
jbe 0x519fb5
cmp ecx, ebx
jb 0x51a39d
cmp eax, ebx
jg 0x51a3a0
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 0x519f9e
jmp 0x518c9f
cmp ecx, eax
jb 0x51a3a3
jl 0x51a3a6
je 0x519fee
imul eax, eax, 0x58
mov edx, dword [edi + 0x28]
add edx, eax
imul ecx, ecx, 0x58
sub ecx, eax
mov dword [esi + 4], ecx
mov ecx, edx
mov dword [esi + 0xc], edx
call fcn.0057d530
mov edx, dword [esi + 0xc]
add edx, 0x58
add dword [esi + 4], 0xffffffa8
jne 0x519fd5
mov eax, dword [edi + 0x2c]
cmp eax, ebx
jb 0x51a3a9
test ebx, ebx
js 0x51a3ac
je 0x518c9f
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 0x51a00d
jmp 0x518c9f
mov dword [esi + 0xc], edx
mov dword [esi + 4], ecx
add dword [esi + 0xc], 0xffffffa8
je 0x5199f4
mov ecx, dword [esi + 0xc]
call fcn.0057d530
cmp dword [esi + 0xc], ebx
jne 0x51a02c
mov ecx, dword [esi + 4]
mov eax, dword [ecx]
jmp 0x518c86
movzx eax, al
mov ecx, dword [0x64e76c]
mov dword [esi + 4], edx
mov edx, dword [0x64e768]
xor edx, dword [esi + 4]
mov dword [esi + 0x44], ecx
mov dword [esi + 0x40], edx
lea ecx, [esi + 0xa8]
mov dword [ecx], str.WaitableEvent::Signal
lea edx, [esi + 0x40]
push edx
push 3
push ecx
lea ecx, [esi + 0xb4]
push ecx
push eax
call fcn.005e2380
mov edx, dword [esi + 4]
mov ecx, dword [esi]
add esp, 0x14
jmp 0x518b34
mov ebx, ecx
call fcn.005f4540
push dword [ebx]
call fcn.0057dc2b
add esp, 4
jmp 0x518c91
int3
int3
mov ecx, dword [esi + 0x78]
jmp 0x5194cf
add ecx, 0xd8
call fcn.0054a300
jmp 0x519555
push 1
call fcn.00403940
jmp 0x519566
push 1
call fcn.00403940
jmp 0x5194a2
push dword [esi]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x519675
push dword [esi]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x51969a
mov dword [esi + 0x10], ebx
cmp dword [esi + 0x24], edx
jb 0x519b62
mov ebx, edx
mov eax, dword [esi + 0x28]
mov ecx, dword [eax + edx*4]
test ecx, ecx
je 0x519b65
mov eax, ecx
lea ecx, [esi + 0x40]
mov edx, eax
mov dword [esi + 4], eax
mov dword [ecx], eax
xor ecx, ecx
mov eax, dword [esi + 0x28]
mov dword [eax + ebx*4], ecx
mov ecx, dword [edx + 4]
call dword [0x6445dc]
push dword [esi + 4]
call ecx
add esp, 4
lea ecx, [esi + 0x40]
call fcn.0057b780
mov edx, ebx
inc edx
cmp edx, dword [esi + 0x24]
mov eax, 0
cmove edx, eax
mov eax, dword [esi + 0x20]
cmp edx, eax
mov ebx, dword [esi + 0x10]
mov ecx, dword [esi + 0x2c]
jne 0x51a0fb
cmp eax, ecx
jbe 0x51a556
mov eax, dword [esi + 0x24]
cmp eax, dword [esi + 0x20]
jb 0x519b68
mov eax, dword [esi + 0x2c]
cmp eax, dword [esi + 0x20]
jg 0x519b6b
mov eax, dword [esi + 0x28]
mov ecx, dword [esi + 0x2c]
lea edx, [eax + ecx*4]
mov eax, dword [esi + 0x20]
shl eax, 2
shl ecx, 2
sub eax, ecx
mov ebx, dword [esi + 0x10]
mov dword [esi + 0x20], eax
mov ecx, edx
mov dword [esi + 4], edx
call fcn.0057b780
mov eax, dword [esi + 0x20]
mov edx, dword [esi + 4]
add edx, 4
add eax, 0xfffffffc
jne 0x51a196
jmp 0x5196d6
mov dword [esi], ecx
mov dword [esi + 0x10], ebx
mov ecx, dword [ebx + 0x2c]
jbe 0x51a1fa
cmp ecx, dword [esi]
jb 0x519b6e
cmp eax, dword [esi]
jg 0x519b71
imul eax, eax, 0x58
mov ebx, dword [esi + 0x10]
mov ecx, dword [ebx + 0x28]
add ecx, eax
imul edx, dword [esi], 0x58
sub edx, eax
mov dword [esi], edx
mov dword [esi + 4], ecx
call fcn.0057d530
mov ecx, dword [esi + 4]
add ecx, 0x58
add dword [esi], 0xffffffa8
jne 0x51a1e2
jmp 0x519618
cmp ecx, eax
jb 0x519b74
jl 0x519b77
je 0x51a233
imul eax, eax, 0x58
mov edx, dword [esi + 0x10]
mov ebx, dword [edx + 0x28]
add ebx, eax
imul ecx, ecx, 0x58
sub ecx, eax
mov dword [esi + 4], ecx
mov ecx, ebx
call fcn.0057d530
add ebx, 0x58
add dword [esi + 4], 0xffffffa8
jne 0x51a21d
mov eax, dword [esi + 0x10]
mov eax, dword [eax + 0x2c]
cmp eax, dword [esi]
jb 0x519b7a
cmp dword [esi], 0
js 0x519b7d
mov ebx, dword [esi + 0x10]
mov eax, dword [esi]
je 0x519618
mov ecx, dword [ebx + 0x28]
imul eax, eax, 0x58
mov dword [esi], eax
mov dword [esi + 4], ecx
call fcn.0057d530
mov ecx, dword [esi + 4]
add ecx, 0x58
add dword [esi], 0xffffffa8
jne 0x51a257
jmp 0x519618
push dword [esi + 0x78]
call fcn.0057dc2b
add esp, 4
jmp 0x5194e0
mov ecx, edi
push 1
call fcn.00403940
jmp 0x51947a
mov eax, dword [esi]
mov ecx, dword [eax + 0x60]
mov eax, ebx
cmp ecx, ebx
je 0x51a2d0
mov edx, ecx
mov dword [esi + 0x14], ecx
add dword [esi + 0x14], 0xfffffff4
je 0x5199f4
mov ecx, dword [edx - 4]
test ecx, ecx
je 0x51a2c2
add edx, 0xfffffff8
mov dword [esi + 0x1c], edx
call dword [0x6445dc]
push dword [esi + 0x1c]
call ecx
add esp, 4
mov eax, dword [esi + 0x14]
mov edx, eax
cmp eax, ebx
jne 0x51a29d
mov eax, dword [esi]
mov eax, dword [eax + 0x5c]
mov ecx, dword [esi]
mov dword [ecx + 0x60], ebx
push eax
call fcn.0057dc2b
add esp, 4
jmp 0x519c9f
mov dword [esi + 4], ecx
mov dword [esi + 0x28], eax
mov dword [esi + 0x10], ebx
add dword [esi + 4], 0xffffffa8
je 0x5199f4
mov ebx, dword [esi + 4]
mov ecx, ebx
call fcn.0057d530
cmp ebx, dword [esi + 0x28]
jne 0x51a2ec
mov eax, dword [esi]
mov eax, dword [eax]
mov dword [esi + 4], eax
mov ebx, dword [esi + 0x10]
mov eax, dword [esi + 0x28]
jmp 0x5195fd
mov ecx, dword [esi]
mov dword [esi + 0x10], ebx
call fcn.005f4540
mov eax, dword [esi]
push dword [eax]
call fcn.0057dc2b
mov ebx, dword [esi + 0x10]
add esp, 4
jmp 0x51960a
mov eax, dword [esi + 0xc]
mov ecx, dword [eax - 0x10]
call fcn.00503c40
jmp 0x5198d1
push 1
call fcn.00403940
jmp 0x519966
push dword [esi + 0x14]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x51a36d
lea eax, [ebx + 0x2c]
mov dword [esi + 0x14], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x51a351
mov ecx, dword [ebx + 0x30]
call fcn.00558ee0
push dword [esi + 0x14]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x519bf1
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x51971a
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
push ebx
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x519997
add dword [esi + 0x14], 0xffffffa8
je 0x5199f4
mov ecx, dword [esi + 0x14]
call fcn.0057d530
cmp dword [esi + 0x14], ebx
jne 0x51a3c4
mov eax, dword [esi + 0x1c]
mov eax, dword [eax]
jmp 0x519cba
push dword [esi + 0x14]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x519c10
push dword [esi + 0x14]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x519c33
mov eax, dword [esi + 0x34]
cmp dword [esi + 0x30], eax
jb 0x5199eb
jl 0x5199ee
je 0x51a43c
mov eax, dword [esi + 0x38]
mov ecx, dword [esi + 0x34]
lea ebx, [eax + ecx*4]
mov eax, dword [esi + 0x30]
shl eax, 2
shl ecx, 2
sub eax, ecx
mov dword [esi + 0x30], eax
mov ecx, ebx
call fcn.0057b780
add ebx, 4
add dword [esi + 0x30], 0xfffffffc
jne 0x51a42c
cmp dword [esi + 0x1c], 0
js 0x5199f1
je 0x519c6b
shl dword [esi + 0x1c], 2
mov ebx, dword [esi + 0x38]
mov ecx, ebx
call fcn.0057b780
add ebx, 4
add dword [esi + 0x1c], 0xfffffffc
jne 0x51a453
jmp 0x519c6b
mov ecx, dword [esi]
mov ecx, dword [ecx + 0x2c]
ja 0x51a5cb
cmp ecx, eax
jb 0x5199df
jl 0x5199e2
je 0x51a4b0
imul eax, eax, 0x58
mov edx, dword [esi]
mov edx, dword [edx + 0x28]
add edx, eax
imul ecx, ecx, 0x58
sub ecx, eax
mov dword [esi + 0x14], ecx
mov ecx, edx
mov dword [esi + 0x1c], edx
call fcn.0057d530
mov edx, dword [esi + 0x1c]
add edx, 0x58
add dword [esi + 0x14], 0xffffffa8
jne 0x51a495
mov eax, dword [esi]
mov eax, dword [eax + 0x2c]
cmp eax, ebx
jb 0x5199e5
test ebx, ebx
js 0x5199e8
je 0x519cd7
mov eax, dword [esi]
mov eax, dword [eax + 0x28]
imul ecx, ebx, 0x58
mov dword [esi + 0x14], ecx
mov ebx, eax
mov ecx, eax
call fcn.0057d530
add ebx, 0x58
mov eax, ebx
add dword [esi + 0x14], 0xffffffa8
jne 0x51a4d1
jmp 0x519cd7
mov eax, dword [esi]
cmp dword [esi + 8], eax
jb 0x51a3af
jl 0x51a3b2
je 0x51a523
mov eax, dword [esi + 4]
mov ecx, dword [esi]
lea ebx, [eax + ecx*4]
mov eax, dword [esi + 8]
shl eax, 2
shl ecx, 2
sub eax, ecx
mov dword [esi + 8], eax
mov ecx, ebx
call fcn.0057b780
add ebx, 4
add dword [esi + 8], 0xfffffffc
jne 0x51a513
cmp dword [esi + 0xc], 0
js 0x51a3b5
mov ebx, dword [esi + 0xc]
je 0x518d4e
shl ebx, 2
mov eax, dword [esi + 4]
mov ecx, eax
mov dword [esi + 0xc], eax
call fcn.0057b780
mov eax, dword [esi + 0xc]
add eax, 4
add ebx, 0xfffffffc
jne 0x51a53c
jmp 0x518d4e
mov eax, dword [esi + 0x2c]
cmp dword [esi + 0x24], eax
jb 0x519b80
jl 0x519b83
je 0x51a591
mov eax, dword [esi + 0x28]
mov ecx, dword [esi + 0x2c]
lea ebx, [eax + ecx*4]
mov eax, dword [esi + 0x24]
shl eax, 2
shl ecx, 2
sub eax, ecx
mov dword [esi + 0x24], eax
mov ecx, ebx
call fcn.0057b780
add ebx, 4
add dword [esi + 0x24], 0xfffffffc
jne 0x51a581
cmp dword [esi + 0x20], 0
js 0x519b86
mov ebx, dword [esi + 0x10]
mov eax, dword [esi + 0x20]
je 0x5196d6
shl eax, 2
mov ecx, dword [esi + 0x28]
mov dword [esi + 0x20], eax
mov dword [esi + 4], ecx
call fcn.0057b780
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 4]
add ecx, 4
add eax, 0xfffffffc
jne 0x51a5ad
jmp 0x5196d6
cmp ecx, ebx
jb 0x5199cd
cmp eax, ebx
jg 0x5199d0
imul eax, eax, 0x58
mov ecx, dword [esi]
mov ecx, dword [ecx + 0x28]
add ecx, eax
imul ebx, ebx, 0x58
sub ebx, eax
mov dword [esi + 0x14], ecx
call fcn.0057d530
mov ecx, dword [esi + 0x14]
add ecx, 0x58
add ebx, 0xffffffa8
jne 0x51a5ea
jmp 0x519cd7
cmp dword [esi + 0x30], ebx
jb 0x5199d3
mov eax, dword [esi + 0x38]
mov ecx, dword [eax + ebx*4]
test ecx, ecx
je 0x5199d6
mov eax, ecx
lea ecx, [esi + 0xb4]
mov edx, eax
mov dword [esi + 0x14], eax
mov dword [ecx], eax
xor ecx, ecx
mov eax, dword [esi + 0x38]
mov dword [eax + ebx*4], ecx
mov ecx, dword [edx + 4]
call dword [0x6445dc]
push dword [esi + 0x14]
call ecx
add esp, 4
lea ecx, [esi + 0xb4]
call fcn.0057b780
inc ebx
cmp ebx, dword [esi + 0x30]
mov eax, 0
cmove ebx, eax
cmp ebx, dword [esi + 0x1c]
jne 0x51a602
mov eax, dword [esi + 0x34]
cmp dword [esi + 0x1c], eax
jbe 0x51a401
mov eax, dword [esi + 0x30]
cmp eax, dword [esi + 0x1c]
jb 0x5199d9
mov eax, dword [esi + 0x34]
cmp eax, dword [esi + 0x1c]
jg 0x5199dc
mov eax, dword [esi + 0x38]
mov ecx, dword [esi + 0x34]
lea ebx, [eax + ecx*4]
mov eax, dword [esi + 0x1c]
shl eax, 2
shl ecx, 2
sub eax, ecx
mov dword [esi + 0x1c], eax
mov ecx, ebx
call fcn.0057b780
add ebx, 4
add dword [esi + 0x1c], 0xfffffffc
jne 0x51a698
jmp 0x519c6b
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
call fcn.005f4540
push dword [ebx]
call fcn.0057dc2b
add esp, 4
jmp 0x519cc7