Function at 0x502ec0
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 [0x644040]
xor eax, ebp
mov dword [esi + 0xb8], eax
mov eax, dword [ecx]
mov dword [esi + 0x2c], 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 0x503d53
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], 0x6229e8
mov eax, edi
shr eax, 0xe
mov ecx, edi
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x64c804]
bt ecx, eax
jb 0x50494d
mov eax, edi
shr eax, 0x15
mov byte [eax + 0x654804], 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], 0x622a9c
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 0x50427e
mov ecx, dword [ebx - 0x10]
add ecx, 0x50
mov edx, ecx
shr edx, 0xe
mov eax, ecx
shr eax, 0x13
mov dword [esi + 0x28], eax
mov eax, dword [eax*4 + 0x64c804]
mov dword [esi + 0x20], edx
bt eax, edx
mov dword [esi + 0x3c], ecx
jb 0x5049ca
mov eax, ecx
shr eax, 0x15
mov byte [eax + 0x654804], 1
test ecx, ecx
je 0x5048d5
cmp byte [ebx - 5], 0
jne 0x50479f
cmp byte [ebx - 0x1f], 0
je 0x504924
mov eax, dword [ebx - 0x10]
mov ecx, dword [eax + 0xac]
dec ecx
cmp byte [ebx - 0x20], 0
mov dword [eax + 0xac], ecx
je 0x504065
mov edx, dword [eax + 0x5c]
cmp edx, dword [eax + 0x60]
je 0x503031
cmp ecx, dword [eax + 0xa4]
jae 0x504190
mov word [eax + 0x78], 0
mov ecx, dword [esi + 4]
cmp byte [ebx - 0x1d], 0
lea eax, [ebp + 8]
je 0x503047
mov byte [ebx - 0x1d], 0
cmp byte [ebx - 0x1f], 0
je 0x503051
mov byte [ebx - 0x1f], 0
mov dword [esi + 0x24], edi
test ecx, ecx
jne 0x5040f4
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.00531240
jne 0x503bd7
cmp dword [edx + 0xa4], 0
je 0x5032ad
cmp byte [edx + 0xe4], 0
jne 0x5032ad
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 0x50419d
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 0x503bc8
mov eax, dword [edx + 8]
mov eax, dword [eax + 0x10]
cmp eax, 1
mov eax, dword [esi]
ja 0x50314c
mov eax, dword [edx + 0x5c]
cmp eax, dword [edx + 0x60]
je 0x50493e
mov cl, byte [eax + 8]
dec cl
cmp cl, 1
ja 0x503bc2
mov eax, dword [eax]
mov dword [esi + 8], eax
mov eax, dword [eax]
mov ecx, dword [eax + 4]
cmp ecx, 0x5318e0
mov dword [esi + 0x34], ebx
je 0x503bcf
cmp ecx, 0x564cb0
je 0x503fe6
mov ebx, ecx
call dword [0x63e63c]
mov ecx, dword [esi + 8]
call ebx
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 0x503c06
cmp ebx, edi
jne 0x5031bf
mov eax, dword [edx + 0xd0]
sub eax, dword [edx + 0xcc]
cmp eax, 0x400
je 0x5031bf
cmp dword [edx + 0xf4], 0
je 0x504330
mov eax, dword [edx + 0x5c]
cmp eax, dword [edx + 0x60]
je 0x5031d9
mov ecx, dword [edx + 0xac]
cmp ecx, dword [edx + 0xa4]
jae 0x504266
mov word [edx + 0x78], 0
cmp byte [edx + 0xc0], 0
jne 0x5032ad
mov edi, dword [edx + 0x68]
mov ebx, dword [edx + 0xb0]
xor ecx, ecx
test edi, edi
jne 0x504214
add ecx, ebx
cmp ecx, dword [edx + 0xa8]
ja 0x50466b
mov edi, dword [edx + 0x68]
mov ebx, dword [edx + 0xac]
xor ecx, ecx
mov dword [esi], 0
test edi, edi
jne 0x504291
mov edi, dword [edx + 0x70]
add edi, dword [edx + 0x6c]
je 0x50329b
mov eax, dword [edx + 8]
mov eax, dword [eax + 0x10]
cmp eax, 1
ja 0x50329b
mov dword [esi + 8], ebx
mov eax, dword [edx + 0x5c]
cmp eax, dword [edx + 0x60]
je 0x50493e
mov dword [esi + 0x18], edi
mov cl, byte [eax + 8]
dec cl
cmp cl, 1
ja 0x504a19
mov ebx, dword [eax]
mov eax, dword [ebx]
mov edi, dword [eax + 4]
cmp edi, 0x5318e0
je 0x503bee
cmp edi, 0x564cb0
je 0x504070
mov ecx, edi
call dword [0x63e63c]
mov ecx, ebx
call edi
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 0x503cd5
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 + 0x64c804]
mov dword [esi], ecx
bt eax, ecx
jb 0x50462b
mov eax, ebx
shr eax, 0x15
mov byte [eax + 0x654804], 1
test ebx, ebx
je 0x5048d8
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
cmp dword [esi + 0x74], 2
jae 0x5043ae
push ebx
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x504639
mov eax, dword [esi + 0xc]
lea ecx, [eax - 0x30]
mov eax, dword [edi*4 + 0x64c804]
mov edx, dword [esi]
bt eax, edx
mov dword [esi + 8], ecx
jb 0x50465a
mov eax, dword [ecx]
mov edi, dword [eax + 0x14]
cmp edi, 0x55dc90
jne 0x503cb9
mov eax, dword [esi + 0xc]
mov ebx, dword [eax - 0x10]
cmp dword [ebx + 0xf4], 0
je 0x503f6c
mov eax, dword [ebx + 0xec]
mov eax, dword [eax + 0x10]
mov ecx, dword [esi + 4]
cmp eax, ecx
je 0x504933
mov ebx, ecx
lea edi, [ecx + 0xc]
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x5049be
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 + 0x64c804]
bt eax, edi
mov ecx, dword [esi + 8]
jb 0x504a40
mov eax, ebx
shr eax, 0x15
mov byte [eax + 0x654804], 1
test ebx, ebx
je 0x50493b
cmp byte [esi], 0
jne 0x50468b
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 0x5046a1
mov eax, dword [esi + 0x10]
mov eax, dword [eax*4 + 0x64c804]
bt eax, edi
jb 0x504a21
cmp byte [esi], 0
mov ebx, dword [esi + 0xc]
je 0x504645
xor edi, edi
mov dword [esi], edi
mov eax, dword [ebx - 0x10]
mov ecx, dword [eax + 0x5c]
cmp ecx, dword [eax + 0x60]
je 0x503537
movzx edx, byte [ecx + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x503ba9
mov ecx, dword [ebx - 0x10]
test dl, dl
je 0x5041fd
mov dword [esi + 0x10], edx
lea eax, [esi + 0x60]
push eax
lea eax, [esi + 0xa8]
push eax
call fcn.0052ba00
mov edx, dword [esi]
mov eax, edx
shr eax, 0xe
mov ecx, edx
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x64c804]
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 0x504a7c
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 + 0x64c804]
bt edx, ecx
jb 0x5049db
mov dword [esi + 0xac], 0
mov ecx, dword [esi + 0xa8]
test ecx, ecx
mov edx, dword [esi + 0x10]
jne 0x5049e9
cmp dword [esi + 0x18], 0
je 0x50340f
mov eax, dword [ebx - 0x10]
mov ecx, dword [eax + 0xac]
inc ecx
mov dword [eax + 0xac], ecx
test dl, dl
je 0x504273
mov edx, dword [eax + 0x5c]
cmp edx, dword [eax + 0x60]
je 0x503507
cmp ecx, dword [eax + 0xa4]
jae 0x5042f4
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
mov eax, dword [esi + 0x2c]
jmp 0x50378b
mov ecx, dword [esi + 8]
mov eax, dword [ecx]
mov edi, dword [eax + 0x1c]
cmp edi, 0x55fc10
jne 0x503d00
mov edx, dword [esi + 4]
mov eax, edx
shr eax, 0xe
mov ecx, edx
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x64c804]
bt ecx, eax
mov edi, dword [ebx - 0x10]
mov eax, dword [edi + 0xec]
mov dword [esi + 0x18], eax
jb 0x5041ef
mov eax, edx
shr eax, 0x15
mov byte [eax + 0x654804], 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 0x5035b8
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 0x503ce7
mov ecx, dword [edi]
mov ebx, edi
test ecx, ecx
jne 0x5035a0
push 0x14
call fcn.00564ea5
add esp, 4
cmp eax, 0xfffffff0
je 0x504a02
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 0x5035f4
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 0x50366f
mov edx, dword [eax + 8]
cmp byte [edx + 0xc], 0
jne 0x50366f
mov ecx, dword [edx + 8]
mov ebx, dword [ecx]
cmp ebx, edx
je 0x503fa1
test ebx, ebx
je 0x503639
cmp byte [ebx + 0xc], 0
jne 0x503639
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 0x503601
jmp 0x50366f
cmp dword [edx], eax
je 0x504309
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 0x50365a
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 + 0x64c804]
bt edx, ecx
mov ebx, dword [esi + 0xc]
mov edi, dword [esi + 4]
jb 0x504a32
mov eax, dword [esi + 8]
mov eax, dword [eax + 0xec]
cmp dword [eax + 0x10], edi
jne 0x5036b7
mov eax, dword [esi + 0x18]
cmp eax, dword [esi + 0x10]
je 0x503773
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 0x504791
mov ecx, dword [0x646080]
cmp ecx, 0x522100
jne 0x503746
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 0x504eb3
mov ecx, 0xf4240
mov eax, edi
mul ecx
imul ecx, ebx, 0xf4240
add ecx, edx
push dword [0x6496bc]
push dword [0x6496b8]
push ecx
push eax
call fcn.00588630
mov edi, dword [esi + 4]
mov ebx, dword [esi + 0xc]
jmp 0x503764
call dword [0x63e63c]
lea eax, [esi + 0xa8]
push eax
call ecx
add esp, 4
mov eax, dword [esi + 0xa8]
mov edx, dword [esi + 0xac]
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 eax, dword [esi + 0x2c]
mov edx, dword [esi]
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 + 0x64c804]
bt ecx, eax
mov edi, dword [esi + 0x20]
mov ebx, dword [esi + 0x28]
jb 0x5049b0
mov eax, dword [ebx*4 + 0x64c804]
bt eax, edi
mov edi, dword [esi + 0x24]
jb 0x50495b
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
lea ecx, [esi + 0x40]
call fcn.005055d0
mov dword [esi + 0x60], 0x622a9c
mov ebx, dword [esi + 0x84]
test bl, 1
jne 0x5048db
lea eax, [esi + 0x88]
cmp ebx, 2
jae 0x503924
test ebx, ebx
jne 0x503914
lea edi, [esi + 0x78]
mov dword [edi - 0x18], 0x6229e8
mov edx, dword [edi - 4]
mov eax, edx
mov dword [esi + 0xc], edi
and eax, 1
jne 0x5047de
mov ebx, edx
shr ebx, 1
mov cl, 1
cmp edx, 2
jae 0x5043ee
test eax, eax
jne 0x5048e6
test cl, cl
je 0x50437d
test eax, eax
jne 0x50496b
mov dword [esi + 0x74], 0
cmp byte [esi + 0x80], 0
jne 0x50471f
mov edi, dword [esi + 0x68]
test edi, edi
jne 0x5039a4
mov eax, dword [esi + 0x64]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x50497b
cmp byte [esi + 0x9c], 0
jne 0x5038ef
lea eax, [ebp + 8]
mov edi, dword [eax + 4]
test edi, edi
jne 0x503a6d
mov dword [eax + 4], 0
test edi, edi
jne 0x503a99
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 + 0x64c804]
bt edx, ecx
jb 0x504989
mov dword [edi + 8], 0
mov ecx, dword [edi + 4]
test ecx, ecx
jne 0x504997
mov edi, dword [edi]
mov ecx, dword [esi + 0xb8]
xor ecx, ebp
call fcn.00568175
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 0x503a3b
lea ecx, [esi + 0x90]
mov dword [ecx + 8], 0
call fcn.00523780
jmp 0x503886
lea ecx, [esi + 0x84]
call fcn.005311c0
jmp 0x5037ff
shr ebx, 1
shl ebx, 2
xor edi, edi
mov dword [esi + 0xc], eax
mov ecx, dword [eax + edi]
test ecx, ecx
je 0x504a5a
xor eax, eax
inc eax
lock xadd dword [ecx + 4], eax
cmp eax, 0x7fffffff
je 0x504a2f
mov dword [esi + 0xb4], 0x9c
mov al, byte [0x6494d8]
test al, al
mov dword [esi], ecx
jne 0x504d12
mov eax, dword [ecx + 0x48]
lea edx, [eax + 0x10]
cmp byte [eax + 0x14], 0
je 0x503a1f
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 0x504c05
add edi, 4
cmp ebx, edi
mov eax, dword [esi + 0xc]
jne 0x50392e
mov ebx, dword [esi + 0x84]
jmp 0x5037f7
mov ecx, dword [esi + 0x6c]
mov eax, edi
cmp ecx, edi
je 0x503a0e
mov edx, ecx
add ecx, 0xfffffff8
je 0x504915
mov ebx, dword [ecx]
test ebx, ebx
mov dword [esi + 0xc], ecx
jne 0x50449a
mov dword [ecx], 0
test ebx, ebx
jne 0x5044c4
mov eax, dword [edx - 4]
mov ecx, eax
shr ecx, 0xe
mov ebx, edx
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x504ca2
mov dword [ebx - 4], 0
mov ecx, dword [ebx - 8]
test ecx, ecx
jne 0x504c6b
mov ecx, dword [esi + 0xc]
cmp ecx, edi
jne 0x5039ad
mov eax, dword [esi + 0x68]
mov dword [esi + 0x6c], edi
push eax
call fcn.00564ea0
add esp, 4
jmp 0x503860
mov dword [esi + 0xb4], 0x1a8
mov al, byte [0x6495e4]
test al, al
je 0x503975
jmp 0x504f55
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 + 0x64c804]
bt ecx, eax
jae 0x5038fd
push edi
call fcn.004f1260
add esp, 4
jmp 0x5038fd
mov ebx, dword [eax + 8]
test ebx, ebx
je 0x503894
mov dword [eax + 4], 0
mov al, byte [edi + 9]
and al, 0x7f
cmp al, 2
je 0x5045eb
lock dec dword [ebx + 0xc]
lea eax, [ebp + 8]
je 0x503b25
lock dec dword [edi + 4]
jne 0x5038a3
mov dword [edi], 0x6229f0
mov ebx, dword [edi + 0x5c]
test ebx, ebx
jne 0x50473e
lea ecx, [edi + 0x3c]
mov ebx, dword [edi + 0x3c]
mov edx, dword [edi + 0x40]
mov eax, ebx
cmp edx, ebx
jne 0x504f2e
mov dword [edi + 0x40], ebx
test eax, eax
jne 0x504f9d
mov eax, dword [edi + 0x30]
mov ebx, dword [edi + 0x34]
cmp ebx, eax
jne 0x504e06
push 0
push dword [edi + 0x28]
push 0x635c90
call fcn.005087f0
add esp, 0xc
mov eax, dword [edi + 0x24]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jae 0x503b14
push eax
call fcn.004f1260
add esp, 4
push edi
call fcn.00564ea0
add esp, 4
lea eax, [ebp + 8]
jmp 0x5038a3
lea eax, [ebx + 0x14]
mov dword [esi + 0xc], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x504880
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 0x504df8
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 0x504d53
push 0
push dword [esi + 4]
push 0x635c90
call fcn.005087f0
add esp, 0xc
lea eax, [ebp + 8]
jmp 0x50389b
test dl, dl
je 0x503537
cmp eax, 1
jne 0x503537
mov ecx, dword [ebx - 0x10]
jmp 0x50343d
mov eax, dword [esi + 0x1c]
mov dword [esi + 8], eax
mov eax, dword [esi]
jmp 0x50314c
xor eax, eax
inc eax
jmp 0x503135
mov ecx, edi
mov ebx, edx
call dword [0x63e63c]
lea eax, [esi + 0x60]
mov ecx, ebx
push eax
call edi
jmp 0x5032ad
xor eax, eax
inc eax
jmp 0x503287
sar eax, 2
cmp eax, dword [edx + 0xa4]
jae 0x503c2f
jmp 0x5046d3
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 0x503c2f
cmp dword [edx + 0xf4], 0
je 0x503bf6
mov ecx, dword [esi]
call fcn.005318f0
test eax, eax
je 0x503c4e
xor ecx, ecx
inc ecx
lock xadd dword [eax + 4], ecx
cmp ecx, 0x7fffffff
je 0x504a57
mov dword [esi + 0xa8], eax
mov ecx, dword [esi + 0x84]
mov dword [esi + 0x18], 2
lea edx, [esi + 0x88]
test cl, 1
jne 0x504c51
shr ecx, 1
cmp ecx, dword [esi + 0x18]
je 0x504cda
shl ecx, 2
add edx, ecx
je 0x504a02
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 0x50319b
jmp 0x503c10
mov ebx, ecx
mov ecx, edi
call dword [0x63e63c]
lea eax, [esi + 0x60]
mov ecx, ebx
push dword [esi + 4]
push eax
call edi
test al, al
jmp 0x503404
cmp dword [edx + 0xb4], 0
jle 0x5032ad
jmp 0x504678
jbe 0x504a11
mov ecx, dword [edi + 4]
test ecx, ecx
jne 0x5035a0
lea ebx, [edi + 4]
jmp 0x5035b8
mov ebx, ecx
mov ecx, edi
call dword [0x63e63c]
mov ecx, ebx
push dword [esi + 4]
lea eax, [esi + 0x60]
push eax
call edi
jmp 0x503782
push dword [esi + 0x28]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x503db5
push ebx
call fcn.004f0de0
mov edx, dword [esi]
add esp, 4
jmp 0x503e1d
push ebx
call fcn.004f0de0
mov edx, dword [esi]
add esp, 4
jmp 0x503dd6
push ebx
call fcn.004f0de0
add esp, 4
jmp 0x503da0
mov dword [esi + 0x24], 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 + 0x20], 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 + 0x64c804]
mov dword [esi], ecx
bt eax, ecx
jb 0x503d48
mov eax, ebx
shr eax, 0x15
mov byte [eax + 0x654804], 1
lea eax, [ebx + 0x10]
mov dword [esi + 0x28], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x503d1a
mov dword [esi + 0x28], esp
mov eax, dword [edi*4 + 0x64c804]
mov edx, dword [esi]
bt eax, edx
jb 0x503d38
mov eax, ebx
shr eax, 0x15
mov byte [eax + 0x654804], 1
mov eax, dword [edi*4 + 0x64c804]
bt eax, edx
jae 0x503ded
push ebx
call fcn.004f1260
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 + 0x20]
mov dword [esi + 0x64], eax
mov eax, dword [edi*4 + 0x64c804]
bt eax, edx
jb 0x503d28
mov eax, ebx
shr eax, 0x15
mov byte [eax + 0x654804], 1
mov dword [esi + 0x68], ebx
mov eax, dword [edi*4 + 0x64c804]
bt eax, edx
jae 0x503e35
push ebx
call fcn.004f1260
add esp, 4
mov esp, dword [esi + 0x28]
mov edi, dword [esi + 8]
mov eax, dword [edi + 4]
test eax, eax
jne 0x503f46
mov dword [esi + 0x40], eax
mov dword [edi + 4], 0
mov ebx, dword [esi + 0xc]
test eax, eax
jne 0x503f2e
mov eax, dword [edi + 8]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x504c3a
mov dword [edi + 8], 0
mov ecx, dword [edi + 4]
test ecx, ecx
jne 0x504be6
mov esp, dword [esi + 0x24]
cmp byte [esi + 0x9c], 0
jne 0x504c81
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 + 0x64c804]
bt ecx, eax
jb 0x503f20
mov eax, edi
shr eax, 0x15
mov byte [eax + 0x654804], 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 + 0x64c804]
bt edx, ecx
jae 0x503f05
push eax
call fcn.004f1260
add esp, 4
mov byte [esi + 0x9c], 1
lea ecx, [esi + 0x60]
mov dword [ecx + 8], 0
call fcn.00523780
jmp 0x502f1b
push edi
call fcn.004f0de0
add esp, 4
mov eax, dword [esi + 0x68]
jmp 0x503ede
lock dec dword [eax + 4]
jne 0x503e5b
mov ecx, eax
push 1
call fcn.0053f300
jmp 0x503e5b
mov ecx, dword [edi + 8]
test ecx, ecx
je 0x503e46
mov dword [edi + 4], 0
lea edi, [esi + 0x40]
push eax
push edi
call fcn.00412130
mov eax, dword [edi]
mov edi, dword [esi + 8]
jmp 0x503e50
xor eax, eax
jmp 0x50334e
mov dword [edi + 8], edx
mov ecx, dword [edx + 8]
jmp 0x503f87
mov eax, dword [edx + 4]
mov edi, dword [eax]
mov dword [edx + 4], edi
test edi, edi
jne 0x503f73
mov dword [eax + 8], ecx
mov ecx, dword [edx + 8]
cmp dword [ecx], edx
jne 0x504cd2
mov dword [ecx], eax
mov dword [eax], edx
mov dword [edx + 8], eax
mov ecx, dword [eax + 8]
jmp 0x503fb8
mov ebx, dword [ecx + 4]
test ebx, ebx
je 0x503fb2
cmp byte [ebx + 0xc], 0
je 0x503621
cmp dword [edx], eax
jne 0x503f7b
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 0x503fce
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 0x50366c
mov ecx, dword [esi + 8]
mov eax, dword [ecx + 0x24]
test al, 1
jne 0x5047d0
mov edx, dword [ecx + 0x34]
test edx, edx
je 0x504bfc
xor ecx, ecx
inc ecx
mov dword [esi + 0x38], edx
lock xadd dword [edx], ecx
test ecx, ecx
jle 0x504bff
cmp ecx, 0x7fffffff
je 0x504c02
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 [0x63e63c]
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 0x504cbe
cmp ecx, 0x20
mov eax, 0x20
cmovb eax, ecx
xor ecx, ecx
sub eax, dword [esi + 0x30]
cmovb eax, ecx
jmp 0x503132
dec dword [eax + 0xb0]
jmp 0x50301d
mov eax, dword [ebx + 0x24]
test al, 1
jne 0x5047d7
mov edx, ebx
mov ebx, dword [ebx + 0x34]
test ebx, ebx
je 0x504c48
xor ecx, ecx
inc ecx
lock xadd dword [ebx], ecx
test ecx, ecx
jle 0x504c4b
cmp ecx, 0x7fffffff
je 0x504c4e
shr eax, 1
movzx edi, al
mov eax, dword [edx + 0x34]
mov ecx, dword [eax + 4]
call dword [0x63e63c]
mov dword [esi + 0x14], edi
push edi
push ebx
call ecx
add esp, 8
mov edi, eax
lock dec dword [ebx]
je 0x504cb0
cmp edi, 0x20
mov eax, 0x20
cmovb eax, edi
xor ecx, ecx
sub eax, dword [esi + 0x14]
cmovb eax, ecx
jmp 0x503284
push ecx
mov dword [esi + 8], edx
call fcn.004f0de0
mov edx, dword [esi + 8]
mov ecx, dword [esi]
add esp, 4
jmp 0x504144
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 + 0x64c804]
bt eax, edi
jb 0x5040e1
mov eax, ecx
shr eax, 0x15
mov byte [eax + 0x654804], 1
mov eax, dword [esi + 4]
mov dword [eax + 0x10], ecx
mov eax, dword [ebx*4 + 0x64c804]
bt eax, edi
jae 0x504163
push ecx
mov edi, edx
call fcn.004f1260
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.00505690
mov esp, dword [esi + 0x10]
lea eax, [ebp + 8]
mov ebx, dword [esi + 0xc]
jmp 0x50305c
movzx ecx, word [edx + 8]
mov word [eax + 0x78], cx
jmp 0x503037
mov eax, dword [edx + 8]
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x5030b2
mov eax, dword [edx + 0x5c]
cmp eax, dword [edx + 0x60]
je 0x50493e
cmp byte [eax + 8], 0
jne 0x5041e8
mov eax, dword [eax]
mov dword [esi + 0x18], eax
mov eax, dword [eax]
mov ebx, dword [eax + 4]
mov ecx, ebx
call dword [0x63e63c]
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 0x5030b2
mov ebx, edi
jmp 0x5030b2
push edx
call fcn.004f0de0
add esp, 4
jmp 0x503580
mov eax, dword [ecx + 0xb0]
cmp eax, dword [ecx + 0xa8]
jb 0x50343d
jmp 0x503537
mov eax, dword [edx + 8]
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x5031ff
mov eax, dword [edx + 0x5c]
cmp eax, dword [edx + 0x60]
je 0x50493e
cmp byte [eax + 8], 0
jne 0x50425f
mov eax, dword [eax]
mov dword [esi], eax
mov eax, dword [eax]
mov ecx, dword [eax + 4]
mov dword [esi + 8], ecx
call dword [0x63e63c]
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 0x5031ff
mov ecx, edi
jmp 0x5031ff
movzx eax, word [eax + 8]
mov word [edx + 0x78], ax
jmp 0x5031df
inc dword [eax + 0xb0]
jmp 0x5034f3
push edi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x502fb2
mov dword [esi], edi
jmp 0x503226
mov eax, dword [edx + 8]
mov eax, dword [eax + 0x10]
mov dword [esi], 0
test eax, eax
jne 0x503226
mov eax, dword [edx + 0x5c]
cmp eax, dword [edx + 0x60]
je 0x50493e
cmp byte [eax + 8], 0
jne 0x50428a
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 [0x63e63c]
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 0x503226
movzx ecx, word [edx + 8]
mov word [eax + 0x78], cx
jmp 0x50350d
mov dword [edi + 8], edx
mov ecx, dword [edx + 8]
jmp 0x504312
mov edi, dword [eax + 4]
mov dword [edx], edi
test edi, edi
jne 0x504301
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 0x503643
sar eax, 2
cmp eax, dword [edx + 0xa4]
jae 0x5031bf
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.0040a060
mov edi, dword [edi]
mov ecx, ebx
push edi
call fcn.00531d30
test edi, edi
je 0x504375
lock dec dword [edi + 4]
je 0x50517a
mov edx, dword [esi + 0x10]
jmp 0x5031bf
lea edi, [edi + ebx*4]
add edi, 0xfffffffc
neg ebx
test edi, edi
je 0x504915
mov ecx, dword [edi]
test ecx, ecx
je 0x50439d
lock dec dword [ecx + 4]
je 0x504fdd
add edi, 0xfffffffc
inc ebx
jne 0x504385
mov eax, dword [esi + 0x74]
and eax, 1
jmp 0x503839
lea ecx, [esi + 0x60]
call fcn.0042e410
lea eax, [esi + 0x60]
mov edx, dword [eax + 0x14]
mov eax, edx
and eax, 1
jne 0x504fb9
lea ecx, [esi + 0x78]
cmp edx, 2
jae 0x5047e9
test eax, eax
jne 0x504fe9
mov dword [esi + 0x74], 0
mov byte [esi + 0x80], 0
jmp 0x5032f7
shl ebx, 2
xor ecx, ecx
mov eax, dword [esi + 0xc]
mov dword [esi], ecx
mov ecx, dword [eax + ecx]
test ecx, ecx
je 0x504412
xor eax, eax
inc eax
lock xadd dword [ecx + 4], eax
cmp eax, 0x7fffffff
je 0x504fb3
mov dword [esi + 4], ecx
mov ecx, dword [esi + 0x64]
mov eax, dword [ecx + 0x30]
mov edx, dword [ecx + 0x34]
test eax, eax
je 0x504436
xor ecx, ecx
inc ecx
lock xadd dword [eax + 4], ecx
cmp ecx, 0x7fffffff
je 0x504fb6
mov ecx, dword [esi + 4]
push edx
push eax
call fcn.00434660
mov ecx, dword [esi + 0x64]
cmp byte [ecx + 0xe0], 0
jne 0x504fc1
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x504461
lock dec dword [ecx + 4]
je 0x504fd1
mov ecx, dword [esi]
add ecx, 4
cmp ebx, ecx
jne 0x5043f3
mov ecx, dword [esi + 0x74]
mov ebx, ecx
shr ebx, 1
mov eax, ecx
and eax, 1
cmp ecx, 2
setb cl
jmp 0x503829
mov eax, dword [esi + 4]
mov eax, dword [eax + 8]
mov ecx, 0xfffffffe
lock xadd dword [eax], ecx
cmp ecx, 3
jne 0x5044b7
jmp 0x50489b
mov eax, dword [edx - 4]
mov dword [esi + 4], eax
test eax, eax
je 0x5039c5
mov dword [ecx], 0
mov al, byte [ebx + 9]
and al, 0x7f
cmp al, 2
je 0x504481
mov eax, dword [esi + 4]
lock dec dword [eax + 0xc]
je 0x504558
lock dec dword [ebx + 4]
jne 0x5039d3
mov dword [ebx], 0x6229f0
mov ecx, dword [ebx + 0x5c]
test ecx, ecx
mov dword [esi + 8], edx
jne 0x50482a
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 0x5051de
mov dword [ebx + 0x40], eax
cmp dword [esi + 4], 0
jne 0x505212
mov eax, dword [ebx + 0x30]
mov ecx, dword [ebx + 0x34]
cmp ecx, eax
jne 0x5050c1
push 0
push dword [ebx + 0x28]
push 0x635c90
call fcn.005087f0
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 + 0x64c804]
bt edx, ecx
jae 0x504547
push eax
call fcn.004f1260
add esp, 4
push ebx
call fcn.00564ea0
add esp, 4
mov edx, dword [esi + 8]
jmp 0x5039d3
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 0x50488e
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 0x504ff9
mov ecx, dword [esi + 4]
mov eax, dword [ecx + 0x1c]
mov dword [esi + 0x24], eax
mov eax, dword [ecx + 0x20]
mov dword [esi + 0x2c], eax
mov eax, dword [ecx + 0x24]
mov dword [esi + 0x28], 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 + 0x28]
mov eax, dword [esi + 0x20]
mov edx, ecx
cmp ecx, eax
jne 0x505006
push 0
push dword [esi + 0x24]
push 0x635c90
call fcn.005087f0
add esp, 0xc
mov edx, dword [esi + 8]
jmp 0x5039cb
mov eax, dword [ebx + 8]
mov ecx, 0xfffffffe
lock xadd dword [eax], ecx
cmp ecx, 3
jne 0x503a8c
lea eax, [ebx + 0x2c]
mov dword [esi + 0xc], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x50528c
mov ecx, dword [ebx + 0x30]
call fcn.0053f280
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x503a8c
push ebx
call fcn.004f0de0
add esp, 4
jmp 0x5032de
push ebx
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x503306
xor eax, eax
mov ecx, dword [esi + 0x2c]
mov dword [ecx], eax
mov dword [ecx + 4], eax
mov edi, dword [esi + 0x20]
mov ebx, dword [esi + 0x28]
jmp 0x5037b0
push ebx
call fcn.004f0f10
mov ecx, dword [esi + 8]
add esp, 4
jmp 0x503321
cmp dword [edx + 0xb8], 0
jle 0x50320d
mov al, 1
mov byte [esi + 0x80], al
mov byte [edx + 0xc0], al
jmp 0x5032ad
mov dword [esi + 0x18], edi
push dword [esi + 4]
call fcn.004093c0
mov ecx, 0x18
test al, al
jne 0x5046a9
jmp 0x5046c5
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 [0x63e63c]
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 0x5033ee
lea eax, [esi + 0xa8]
mov dword [eax], 0xffffffff
mov ecx, edx
lea edx, [esi + 0x60]
push edx
push eax
call fcn.0040a060
lea eax, [esi + 0xa8]
mov eax, dword [eax]
mov dword [esi + 0x18], eax
mov ecx, dword [esi]
push eax
call fcn.00531d30
mov ecx, dword [esi + 0x18]
test ecx, ecx
je 0x503c2f
lock dec dword [ecx + 4]
jne 0x503c2f
push 1
call fcn.004036f0
jmp 0x503c2f
mov ecx, dword [esi + 0x64]
call fcn.00434840
cmp dword [esi + 0x74], 0
je 0x503855
lea ecx, [esi + 0x74]
call fcn.005d1d20
jmp 0x503855
mov edx, dword [edi + 0x60]
mov eax, ebx
cmp edx, ebx
je 0x504780
mov ecx, edx
mov eax, edx
add eax, 0xfffffff4
mov dword [esi + 0xc], eax
je 0x504915
mov eax, ecx
mov ecx, dword [ecx - 4]
test ecx, ecx
je 0x504774
add eax, 0xfffffff8
mov dword [esi + 4], eax
call dword [0x63e63c]
push dword [esi + 4]
call ecx
add esp, 4
mov eax, dword [esi + 0xc]
mov ecx, eax
cmp eax, ebx
jne 0x50474b
mov eax, dword [edi + 0x5c]
mov dword [edi + 0x60], ebx
push eax
call fcn.00564ea0
add esp, 4
jmp 0x503ab4
push dword [esi + 8]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x5036cc
mov ecx, dword [ebx - 0x10]
call fcn.00403890
cmp byte [ebx - 0x1f], 0
je 0x504924
mov eax, dword [esi + 0xc]
cmp byte [eax - 0x20], 0
je 0x505230
mov ebx, dword [esi + 0xc]
mov word [ebx - 7], 0
mov byte [ebx - 5], 0
jmp 0x502ff9
xor eax, eax
jmp 0x503135
xor eax, eax
jmp 0x503287
mov ecx, dword [esi + 0x78]
mov dword [esi + 0xc], ecx
jmp 0x50381a
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 0x504915
mov eax, dword [esi + 8]
mov ecx, dword [eax]
test ecx, ecx
je 0x504816
lock dec dword [ecx + 4]
je 0x50524e
add dword [esi + 8], 0xfffffffc
inc dword [esi + 0x10]
jne 0x5047f9
mov eax, dword [esi + 0x74]
and eax, 1
jmp 0x5043d3
mov dword [esi + 0x10], ebx
mov ebx, dword [ebx + 0x60]
mov eax, ecx
mov dword [esi], ecx
cmp ebx, ecx
je 0x50486a
mov dword [esi + 4], ebx
add dword [esi + 4], 0xfffffff4
je 0x504915
mov ecx, dword [ebx - 4]
test ecx, ecx
je 0x50485b
add ebx, 0xfffffff8
call dword [0x63e63c]
push ebx
call ecx
add esp, 4
mov eax, dword [esi + 4]
mov ebx, eax
cmp eax, dword [esi]
jne 0x50483b
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.00564ea0
add esp, 4
jmp 0x5044e2
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x503b3a
push dword [esi]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x504570
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 0x5052c1
mov eax, dword [esi + 4]
mov ecx, dword [eax + 0x30]
call fcn.0053f280
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov edx, dword [esi + 8]
mov ebx, dword [esi + 0x10]
jmp 0x5044b7
int3
int3
mov eax, dword [esi + 0x88]
jmp 0x5037ee
mov edi, dword [esi + 0x78]
jmp 0x503831
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 0x624173
call fcn.00591ed0
push str....._third_partylibc_srcincludeoptional:801:_assertion_this__has_value___failed:_optional_operator_called_on_a_disengaged_value_n
push 0x624173
call fcn.00591ed0
mov byte [esi], 1
jmp 0x503383
int3
push str....._third_partylibc_srcinclude_vector:618:_assertion__empty___failed:_front___called_on_an_empty_vector_n
push 0x624173
call fcn.00591ed0
push edi
call fcn.004f0de0
add esp, 4
jmp 0x502f6a
push dword [esi + 0x3c]
call fcn.004f0f10
add esp, 4
jmp 0x5037c3
push dword [esi + 0x78]
call fcn.00564ea0
add esp, 4
jmp 0x503841
push eax
call fcn.004f0f10
add esp, 4
jmp 0x50387d
push eax
call fcn.004f1260
add esp, 4
jmp 0x5038c2
lock dec dword [ecx + 4]
jne 0x5038d4
push 1
call fcn.0053f300
lea edi, [ebp + 8]
jmp 0x5038d4
push edx
call fcn.004f1260
add esp, 4
jmp 0x5037b0
push edi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x50336d
push ecx
call fcn.004f0de0
mov ecx, dword [esi + 0x3c]
add esp, 4
jmp 0x502fe7
push eax
call fcn.004f1260
add esp, 4
jmp 0x5034b6
lock dec dword [ecx + 4]
jne 0x5034d1
push 1
call fcn.0053f300
mov edx, dword [esi + 0x10]
jmp 0x5034d1
push str....._third_partylibc_srcinclude__memoryconstruct_at.h:40:_assertion___location___nullptr_failed:_null_pointer_given_to_construct_at_n
push 0x624173
call fcn.00591ed0
mov eax, dword [esi + 4]
jmp 0x50367a
mov ecx, dword [esi + 0x18]
jmp 0x503298
push ebx
call fcn.004f0f10
add esp, 4
jmp 0x503401
int3
push eax
call fcn.004f1260
add esp, 4
jmp 0x50369a
push ebx
mov dword [esi + 0x18], edi
call fcn.004f0de0
mov edi, dword [esi + 0x18]
mov ecx, dword [esi + 8]
add esp, 4
jmp 0x5033b2
int3
xor ecx, ecx
call fcn.00523cf0
jmp 0x50398f
mov eax, dword [ebx + 8]
mov ecx, 0xfffffffe
lock xadd dword [eax], ecx
cmp ecx, 3
jne 0x504ab8
jmp 0x505265
push edx
call fcn.004f1260
add esp, 4
mov eax, dword [esi + 0xa8]
mov dword [esi], eax
test eax, eax
je 0x50348c
mov ebx, dword [esi + 0xac]
mov dword [esi + 0xa8], 0
test ebx, ebx
je 0x504b44
mov eax, dword [esi]
mov al, byte [eax + 9]
and al, 0x7f
cmp al, 2
je 0x504a66
lock dec dword [ebx + 0xc]
jne 0x504b44
lea eax, [ebx + 0x14]
mov dword [esi + 0x14], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x505240
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 0x5052ee
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 0x5054fd
push 0
push dword [esi + 0x38]
push 0x635c90
call fcn.005087f0
add esp, 0xc
mov eax, dword [esi]
lock dec dword [eax + 4]
mov ebx, dword [esi + 0xc]
jne 0x503496
mov eax, dword [esi]
mov dword [eax], 0x6229f0
mov ebx, dword [eax + 0x5c]
test ebx, ebx
jne 0x505188
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 0x5052cd
mov ecx, dword [esi]
mov dword [ecx + 0x40], ebx
test eax, eax
jne 0x5055a8
mov ecx, dword [esi]
mov eax, dword [ecx + 0x30]
mov ebx, dword [ecx + 0x34]
cmp ebx, eax
jne 0x505363
push 0
mov ebx, dword [esi]
push dword [ebx + 0x28]
push 0x635c90
call fcn.005087f0
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 + 0x64c804]
bt edx, ecx
jae 0x504bd4
push eax
call fcn.004f1260
add esp, 4
push dword [esi]
call fcn.00564ea0
add esp, 4
mov ebx, dword [esi + 0xc]
jmp 0x503496
lock dec dword [ecx + 4]
jne 0x503e8a
push 1
call fcn.0053f300
jmp 0x503e8a
int3
int3
int3
mov ecx, dword [esi]
push 1
call fcn.004036f0
jmp 0x50398f
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
push eax
call fcn.004f1260
add esp, 4
jmp 0x503e78
int3
int3
int3
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 0x503c70
lock dec dword [ecx + 4]
jne 0x503a04
push 1
call fcn.0053f300
jmp 0x503a04
lea ecx, [esi + 0x98]
call fcn.0055dbd0
lea edi, [esi + 0x90]
mov ecx, edi
call fcn.00523780
mov byte [edi + 0xc], 0
jmp 0x503e9a
push eax
call fcn.004f1260
add esp, 4
jmp 0x5039f2
push ebx
call fcn.004ed190
add esp, 4
jmp 0x5040c9
push eax
mov dword [esi + 8], ecx
call fcn.004ed190
mov ecx, dword [esi + 8]
add esp, 4
jmp 0x50404d
add ecx, 4
jmp 0x503f95
lea eax, [esi + 0xa8]
lea ecx, [esi + 0x84]
push eax
call fcn.005d2ed0
lea eax, [esi + 0xa8]
mov ecx, dword [eax]
test ecx, ecx
je 0x503c8f
lock dec dword [ecx + 4]
jne 0x503c8f
push 1
call fcn.004036f0
jmp 0x503c8f
movzx eax, al
mov ecx, dword [0x648784]
mov edx, dword [0x648780]
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.005c0c80
mov ecx, dword [esi]
add esp, 0x14
jmp 0x503965
mov dword [esi + 0xc], ebx
mov ebx, eax
cmp dword [esi + 8], ebx
jb 0x50529a
mov eax, dword [esi + 4]
mov ecx, dword [eax + ebx*4]
test ecx, ecx
je 0x50529d
mov eax, ecx
mov edx, ecx
mov dword [esi + 0x24], 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 [0x63e63c]
push dword [esi + 0x24]
call ecx
add esp, 4
lea ecx, [esi + 0x60]
call fcn.00563120
inc ebx
cmp ebx, dword [esi + 8]
mov eax, 0
cmove ebx, eax
cmp ebx, dword [esi + 0xc]
jne 0x504d58
mov eax, dword [esi]
cmp dword [esi + 0xc], eax
jbe 0x5053e5
mov eax, dword [esi + 8]
cmp eax, dword [esi + 0xc]
jb 0x5052a0
mov eax, dword [esi]
cmp eax, dword [esi + 0xc]
jg 0x5052a3
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.00563120
add ebx, 4
add dword [esi + 0xc], 0xfffffffc
jne 0x504de3
jmp 0x503b8f
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x503b5d
mov ecx, dword [edi + 0x2c]
jbe 0x504e42
cmp ecx, ebx
jb 0x5052a6
cmp eax, ebx
jg 0x5052a9
imul eax, eax, 0x58
mov ecx, dword [edi + 0x28]
add ecx, eax
imul edx, ebx, 0x58
sub edx, eax
mov dword [esi + 0xc], edx
mov ebx, ecx
call fcn.005647d0
add ebx, 0x58
mov ecx, ebx
add dword [esi + 0xc], 0xffffffa8
jne 0x504e2b
jmp 0x503ae0
cmp ecx, eax
jb 0x5052ac
jl 0x5052af
je 0x504e7b
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.005647d0
mov edx, dword [esi + 0xc]
add edx, 0x58
add dword [esi + 4], 0xffffffa8
jne 0x504e62
mov eax, dword [edi + 0x2c]
cmp eax, ebx
jb 0x5052b2
test ebx, ebx
js 0x5052b5
je 0x503ae0
mov eax, dword [edi + 0x28]
imul ecx, ebx, 0x58
mov dword [esi + 0xc], ecx
mov ebx, eax
mov ecx, eax
call fcn.005647d0
add ebx, 0x58
mov eax, ebx
add dword [esi + 0xc], 0xffffffa8
jne 0x504e9a
jmp 0x503ae0
mov eax, dword [0x6496b8]
mov dword [esi + 0x10], eax
mov ecx, dword [0x6496bc]
mov dword [esi + 0x18], ecx
push ecx
push eax
mov dword [esi + 0x14], ebx
push ebx
push edi
call fcn.00588630
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.00588630
add eax, dword [esi + 0x1c]
adc edx, dword [esi + 0x34]
mov edi, dword [esi + 4]
jmp 0x503764
mov dword [esi + 0xc], edx
mov dword [esi + 4], ecx
add dword [esi + 0xc], 0xffffffa8
je 0x504915
mov ecx, dword [esi + 0xc]
call fcn.005647d0
cmp dword [esi + 0xc], ebx
jne 0x504f34
mov ecx, dword [esi + 4]
mov eax, dword [ecx]
jmp 0x503ac7
movzx eax, al
mov ecx, dword [0x648784]
mov dword [esi + 4], edx
mov edx, dword [0x648780]
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.005c0c80
mov edx, dword [esi + 4]
mov ecx, dword [esi]
add esp, 0x14
jmp 0x503975
mov ebx, ecx
call fcn.005d2de0
push dword [ebx]
call fcn.00564ea0
add esp, 4
jmp 0x503ad2
int3
int3
mov ecx, dword [esi + 0x78]
jmp 0x5043ca
add ecx, 0xd8
call fcn.005342b0
jmp 0x504450
push 1
call fcn.004036f0
jmp 0x504461
push 1
call fcn.004036f0
jmp 0x50439d
push dword [esi + 0x78]
call fcn.00564ea0
add esp, 4
jmp 0x5043db
push dword [esi]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x504595
mov dword [esi + 0x10], ebx
cmp dword [esi + 0x2c], edx
jb 0x504c13
mov ebx, edx
mov eax, dword [esi + 0x24]
mov ecx, dword [eax + edx*4]
test ecx, ecx
je 0x504c16
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 + 0x24]
mov dword [eax + ebx*4], ecx
mov ecx, dword [edx + 4]
call dword [0x63e63c]
push dword [esi + 4]
call ecx
add esp, 4
lea ecx, [esi + 0x40]
call fcn.00563120
mov edx, ebx
inc edx
cmp edx, dword [esi + 0x2c]
mov eax, 0
cmove edx, eax
mov eax, dword [esi + 0x20]
cmp edx, eax
mov ebx, dword [esi + 0x10]
mov ecx, dword [esi + 0x28]
jne 0x505006
cmp eax, ecx
jbe 0x505451
mov eax, dword [esi + 0x2c]
cmp eax, dword [esi + 0x20]
jb 0x504c19
mov eax, dword [esi + 0x28]
cmp eax, dword [esi + 0x20]
jg 0x504c1c
mov eax, dword [esi + 0x24]
mov ecx, dword [esi + 0x28]
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.00563120
mov eax, dword [esi + 0x20]
mov edx, dword [esi + 4]
add edx, 4
add eax, 0xfffffffc
jne 0x5050a1
jmp 0x5045d1
mov dword [esi], ecx
mov dword [esi + 0x10], ebx
mov ecx, dword [ebx + 0x2c]
jbe 0x505105
cmp ecx, dword [esi]
jb 0x504c1f
cmp eax, dword [esi]
jg 0x504c22
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.005647d0
mov ecx, dword [esi + 4]
add ecx, 0x58
add dword [esi], 0xffffffa8
jne 0x5050ed
jmp 0x504513
cmp ecx, eax
jb 0x504c25
jl 0x504c28
je 0x50513e
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.005647d0
add ebx, 0x58
add dword [esi + 4], 0xffffffa8
jne 0x505128
mov eax, dword [esi + 0x10]
mov eax, dword [eax + 0x2c]
cmp eax, dword [esi]
jb 0x504c2b
cmp dword [esi], 0
js 0x504c2e
mov ebx, dword [esi + 0x10]
mov eax, dword [esi]
je 0x504513
mov ecx, dword [ebx + 0x28]
imul eax, eax, 0x58
mov dword [esi], eax
mov dword [esi + 4], ecx
call fcn.005647d0
mov ecx, dword [esi + 4]
add ecx, 0x58
add dword [esi], 0xffffffa8
jne 0x505162
jmp 0x504513
mov ecx, edi
push 1
call fcn.004036f0
jmp 0x504375
mov eax, dword [esi]
mov ecx, dword [eax + 0x60]
mov eax, ebx
cmp ecx, ebx
je 0x5051cb
mov edx, ecx
mov dword [esi + 0x14], ecx
add dword [esi + 0x14], 0xfffffff4
je 0x504915
mov ecx, dword [edx - 4]
test ecx, ecx
je 0x5051bd
add edx, 0xfffffff8
mov dword [esi + 0x1c], edx
call dword [0x63e63c]
push dword [esi + 0x1c]
call ecx
add esp, 4
mov eax, dword [esi + 0x14]
mov edx, eax
cmp eax, ebx
jne 0x505198
mov eax, dword [esi]
mov eax, dword [eax + 0x5c]
mov ecx, dword [esi]
mov dword [ecx + 0x60], ebx
push eax
call fcn.00564ea0
add esp, 4
jmp 0x504b66
mov dword [esi + 4], ecx
mov dword [esi + 0x24], eax
mov dword [esi + 0x10], ebx
add dword [esi + 4], 0xffffffa8
je 0x504915
mov ebx, dword [esi + 4]
mov ecx, ebx
call fcn.005647d0
cmp ebx, dword [esi + 0x24]
jne 0x5051e7
mov eax, dword [esi]
mov eax, dword [eax]
mov dword [esi + 4], eax
mov ebx, dword [esi + 0x10]
mov eax, dword [esi + 0x24]
jmp 0x5044f8
mov ecx, dword [esi]
mov dword [esi + 0x10], ebx
call fcn.005d2de0
mov eax, dword [esi]
push dword [eax]
call fcn.00564ea0
mov ebx, dword [esi + 0x10]
add esp, 4
jmp 0x504505
mov eax, dword [esi + 0xc]
mov ecx, dword [eax - 0x10]
call fcn.004ee620
jmp 0x5047be
push dword [esi + 0x14]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x504ad7
push 1
call fcn.004036f0
jmp 0x504816
push dword [esi + 0x14]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x505276
lea eax, [ebx + 0x2c]
mov dword [esi + 0x14], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x50525a
mov ecx, dword [ebx + 0x30]
call fcn.0053f280
push dword [esi + 0x14]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x504ab8
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x504615
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
push ebx
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x5048b8
add dword [esi + 0x14], 0xffffffa8
je 0x504915
mov ecx, dword [esi + 0x14]
call fcn.005647d0
cmp dword [esi + 0x14], ebx
jne 0x5052cd
mov eax, dword [esi + 0x1c]
mov eax, dword [eax]
jmp 0x504b81
push dword [esi + 0x14]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x504afa
mov eax, dword [esi + 0x34]
cmp dword [esi + 0x30], eax
jb 0x50490c
jl 0x50490f
je 0x505337
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.00563120
add ebx, 4
add dword [esi + 0x30], 0xfffffffc
jne 0x505327
cmp dword [esi + 0x1c], 0
js 0x504912
je 0x504b32
shl dword [esi + 0x1c], 2
mov ebx, dword [esi + 0x38]
mov ecx, ebx
call fcn.00563120
add ebx, 4
add dword [esi + 0x1c], 0xfffffffc
jne 0x50534e
jmp 0x504b32
mov ecx, dword [esi]
mov ecx, dword [ecx + 0x2c]
ja 0x5054c6
cmp ecx, eax
jb 0x504900
jl 0x504903
je 0x5053ab
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.005647d0
mov edx, dword [esi + 0x1c]
add edx, 0x58
add dword [esi + 0x14], 0xffffffa8
jne 0x505390
mov eax, dword [esi]
mov eax, dword [eax + 0x2c]
cmp eax, ebx
jb 0x504906
test ebx, ebx
js 0x504909
je 0x504b9e
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.005647d0
add ebx, 0x58
mov eax, ebx
add dword [esi + 0x14], 0xffffffa8
jne 0x5053cc
jmp 0x504b9e
mov eax, dword [esi]
cmp dword [esi + 8], eax
jb 0x5052b8
jl 0x5052bb
je 0x50541e
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.00563120
add ebx, 4
add dword [esi + 8], 0xfffffffc
jne 0x50540e
cmp dword [esi + 0xc], 0
js 0x5052be
mov ebx, dword [esi + 0xc]
je 0x503b8f
shl ebx, 2
mov eax, dword [esi + 4]
mov ecx, eax
mov dword [esi + 0xc], eax
call fcn.00563120
mov eax, dword [esi + 0xc]
add eax, 4
add ebx, 0xfffffffc
jne 0x505437
jmp 0x503b8f
mov eax, dword [esi + 0x28]
cmp dword [esi + 0x2c], eax
jb 0x504c31
jl 0x504c34
je 0x50548c
mov eax, dword [esi + 0x24]
mov ecx, dword [esi + 0x28]
lea ebx, [eax + ecx*4]
mov eax, dword [esi + 0x2c]
shl eax, 2
shl ecx, 2
sub eax, ecx
mov dword [esi + 0x2c], eax
mov ecx, ebx
call fcn.00563120
add ebx, 4
add dword [esi + 0x2c], 0xfffffffc
jne 0x50547c
cmp dword [esi + 0x20], 0
js 0x504c37
mov ebx, dword [esi + 0x10]
mov eax, dword [esi + 0x20]
je 0x5045d1
shl eax, 2
mov ecx, dword [esi + 0x24]
mov dword [esi + 0x20], eax
mov dword [esi + 4], ecx
call fcn.00563120
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 4]
add ecx, 4
add eax, 0xfffffffc
jne 0x5054a8
jmp 0x5045d1
cmp ecx, ebx
jb 0x5048ee
cmp eax, ebx
jg 0x5048f1
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.005647d0
mov ecx, dword [esi + 0x14]
add ecx, 0x58
add ebx, 0xffffffa8
jne 0x5054e5
jmp 0x504b9e
cmp dword [esi + 0x30], ebx
jb 0x5048f4
mov eax, dword [esi + 0x38]
mov ecx, dword [eax + ebx*4]
test ecx, ecx
je 0x5048f7
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 [0x63e63c]
push dword [esi + 0x14]
call ecx
add esp, 4
lea ecx, [esi + 0xb4]
call fcn.00563120
inc ebx
cmp ebx, dword [esi + 0x30]
mov eax, 0
cmove ebx, eax
cmp ebx, dword [esi + 0x1c]
jne 0x5054fd
mov eax, dword [esi + 0x34]
cmp dword [esi + 0x1c], eax
jbe 0x5052fc
mov eax, dword [esi + 0x30]
cmp eax, dword [esi + 0x1c]
jb 0x5048fa
mov eax, dword [esi + 0x34]
cmp eax, dword [esi + 0x1c]
jg 0x5048fd
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.00563120
add ebx, 4
add dword [esi + 0x1c], 0xfffffffc
jne 0x505593
jmp 0x504b32
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
call fcn.005d2de0
push dword [ebx]
call fcn.00564ea0
add esp, 4
jmp 0x504b8e