Function at 0x455870
Capabilities:
Check for time delay via queryperformancecounter
Get thread local storage value
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xf0
mov esi, esp
mov edi, ecx
mov eax, dword [0x511014]
xor eax, ebp
mov dword [esi + 0xe8], eax
test byte [0x512ba0], 0x19
jne 0x455a33
mov ebx, dword [edi + 0x38]
test ebx, ebx
jne 0x455af5
mov ecx, dword [edi + 0x2c]
push edi
call fcn.00404660
mov eax, dword [0x524b74]
test eax, eax
mov dword [esi + 0x20], edi
je 0x455a0f
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov eax, dword [eax]
test al, 1
jne 0x455a27
cmp dword [edi + 0x3c], 0
mov dword [esi + 0x68], 0
je 0x4559e1
mov ecx, dword [0x524b60]
test ecx, ecx
je 0x455b68
lea eax, [esi + 0x90]
push 2
push eax
call fcn.00418e50
lea edi, [esi + 0x90]
lea ecx, [esi + 0x68]
push edi
call fcn.00404210
mov edi, dword [edi]
test edi, edi
je 0x45594e
mov dword [esi + 0x90], 0
mov ecx, dword [edi + 4]
call dword [section..00cfg]
push edi
call ecx
add esp, 4
lock dec dword [edi]
jne 0x455940
mov ecx, dword [edi + 8]
call dword [section..00cfg]
push edi
call ecx
add esp, 4
mov edi, dword [esi + 0x90]
test edi, edi
jne 0x4559f2
mov al, 1
mov dword [esi + 0x34], eax
mov dword [esi + 0x40], 0
test byte [0x512ba0], 0x19
jne 0x455b0d
mov eax, dword [esi + 0x20]
mov ecx, dword [eax + 0x2c]
add eax, 0x20
mov dword [esi + 0x28], eax
push eax
call fcn.00403bc0
test byte [0x512ba0], 0x19
je 0x455bc3
lea edi, [esi + 0x90]
push edi
call fcn.0048cd00
add esp, 4
call fcn.00493210
sub esp, 0x30
xor ecx, ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], ecx
xorpd xmm0, xmm0
movupd xmmword [esp + 0xc], xmm0
mov dword [esp + 8], str.WorkerThread_active
mov dword [esp + 4], 0x512ba0
mov dword [esp], 0x42
call fcn.0047eb60
add esp, 0x30
jmp 0x455bc3
mov dword [esi + 0x34], 0
mov al, 1
mov dword [esi + 0x40], eax
jmp 0x45595a
lock dec dword [edi]
jne 0x45594e
mov ecx, dword [edi + 8]
call dword [section..00cfg]
push edi
call ecx
add esp, 4
jmp 0x45594e
mov dword [esi + 0x68], 0
mov al, 1
mov dword [esi + 0x40], eax
mov dword [esi + 0x34], 0
jmp 0x45595a
mov dword [esi + 0x68], 0
jmp 0x4558e2
lea ebx, [esi + 0x90]
push ebx
call fcn.0048cd00
add esp, 4
call fcn.00493210
sub esp, 0x30
xor ecx, ecx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], ecx
xorpd xmm0, xmm0
movupd xmmword [esp + 0xc], xmm0
mov dword [esp + 0x2c], 8
mov dword [esp + 8], str.WorkerThread_born
mov dword [esp + 4], 0x512ba0
mov dword [esp], 0x49
call fcn.0047eb60
add esp, 0x30
test byte [0x512ba0], 0x19
je 0x45589d
lea ebx, [esi + 0x90]
push ebx
call fcn.0048cd00
add esp, 4
call fcn.00493210
sub esp, 0x30
xor ecx, ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], ecx
xorpd xmm0, xmm0
movupd xmmword [esp + 0xc], xmm0
mov dword [esp + 8], str.WorkerThread_active
mov dword [esp + 4], 0x512ba0
mov dword [esp], 0x42
call fcn.0047eb60
add esp, 0x30
jmp 0x45589d
mov eax, dword [ebx]
mov ecx, dword [eax + 4]
mov dword [esi + 0x20], ecx
call dword [section..00cfg]
mov ecx, ebx
call dword [esi + 0x20]
jmp 0x4558a8
lea edi, [esi + 0x90]
push edi
call fcn.0048cd00
add esp, 4
call fcn.00493210
sub esp, 0x30
xor ecx, ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], ecx
xorpd xmm0, xmm0
movupd xmmword [esp + 0xc], xmm0
mov dword [esp + 8], str.WorkerThread_active
mov dword [esp + 4], 0x512ba0
mov dword [esp], 0x45
call fcn.0047eb60
add esp, 0x30
jmp 0x455967
mov dword [esi + 0x90], 0
jmp 0x4558fe
mov dword [esi + 0x7c], 0
mov dword [esi + 0x78], 0x11e1a300
push 0x1db
push str....._base_threading_thread_local_storage.cc
push 0x50535a
lea edi, [esi + 0x90]
push edi
call fcn.00454af0
add esp, 4
movsd xmm0, qword [esi + 0x78]
movsd qword [esp + 4], xmm0
mov dword [esp], edi
call fcn.004be150
add esp, 0xc
cmp byte [esi + 0x10], 0
jne 0x45686a
mov eax, dword [esi + 0x20]
movzx eax, byte [eax + 0x28]
test al, al
jne 0x45686a
mov eax, dword [esi + 0x20]
movzx eax, byte [eax + 0x44]
test al, al
jne 0x45686a
mov eax, dword [esi + 0x20]
mov edi, dword [eax + 0x30]
lea ebx, [edi + 0x3c]
push ebx
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4566b1
mov eax, dword [edi + 0x40]
test eax, eax
jne 0x45684f
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ebx, dword [esi + 0x20]
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov eax, dword [eax]
test al, 1
jne 0x4567ac
mov edi, dword [ebx + 0x3c]
cmp dword [ebx + 0x40], edi
jne 0x456a69
mov dword [esi + 0x60], 0xffffffff
mov dword [esi + 0x64], 0xffffffff
mov ecx, dword [ebx + 0x2c]
push ebx
lea eax, [esi + 0x60]
push eax
call fcn.004730b0
mov eax, dword [esi + 0x60]
test eax, eax
je 0x455db3
mov dword [esi + 0x70], eax
lea eax, [esi + 0x70]
push eax
call fcn.00459370
add esp, 4
mov edi, esp
mov ecx, dword [ebx + 0x30]
sub esp, 0xc
mov eax, esp
mov edx, dword [esi + 0x60]
mov dword [eax + 4], edx
xor ebx, ebx
mov dword [esi + 0x60], ebx
mov edx, dword [esi + 0x64]
mov dword [esi + 0x64], ebx
mov dword [eax + 8], edx
lea edx, [esi + 0x90]
mov dword [eax], edx
call fcn.00457790
mov esp, edi
mov eax, dword [esi + 0x60]
test eax, eax
jne 0x456a93
mov dword [esi + 0x78], eax
mov dword [esi + 0x60], 0
test eax, eax
jne 0x456ab7
mov eax, dword [esi + 0x90]
mov dword [esi + 0x90], 0
mov ecx, dword [esi + 0x60]
mov dword [esi + 0x60], eax
test ecx, ecx
jne 0x456acf
mov eax, dword [esi + 0x94]
mov dword [esi + 0x64], eax
mov eax, dword [esi + 0x60]
mov dword [esi + 0x90], eax
lea eax, [esi + 0x90]
push eax
call fcn.00459370
add esp, 4
mov edi, esp
mov eax, dword [esi + 0x20]
mov ecx, dword [eax + 0x2c]
sub esp, 8
mov eax, esp
mov edx, dword [esi + 0x60]
mov dword [eax], edx
xor ebx, ebx
mov dword [esi + 0x60], ebx
mov edx, dword [esi + 0x64]
mov dword [esi + 0x64], ebx
mov dword [eax + 4], edx
call fcn.0046dcd0
mov esp, edi
cmp dword [esi + 0x60], ebx
jne 0x456a90
mov eax, dword [esi + 0x28]
push dword [eax]
call dword [sym.imp.KERNEL32.dll_ResetEvent]
mov dword [esi + 0x10], 0
mov ebx, dword [esi + 0x34]
mov edi, dword [esi + 0x60]
test edi, edi
jne 0x45637c
mov dword [esi + 0x60], 0
test edi, edi
jne 0x4563a5
mov ecx, dword [esi + 0x60]
test ecx, ecx
jne 0x456a7a
test bl, bl
je 0x455bb9
mov eax, dword [0x524b70]
mov ecx, dword [0x514f00]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x45699d
push dword [0x514c54]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
and ecx, 3
cmp ecx, 2
je 0x455b77
and eax, 0xfffffffc
je 0x455bb9
mov ecx, dword [0x524b68]
mov eax, dword [eax + ecx*8 + 4]
cmp eax, dword [0x524b6c]
jmp 0x455bb9
mov al, byte [ebx + 0x28]
mov cl, 1
mov dword [esi + 0x10], ecx
test al, al
jne 0x455d2a
mov al, byte [ebx + 0x44]
test al, al
jne 0x455d2a
mov edi, dword [ebx + 0x30]
lea ebx, [edi + 0x3c]
push ebx
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4567f4
mov eax, dword [edi + 0x40]
test eax, eax
jne 0x45697a
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
test byte [0x512ba0], 0x19
jne 0x456b2f
cmp byte [esi + 0x40], 0
jne 0x455e85
mov eax, dword [0x524b70]
mov ecx, dword [0x514f00]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x4569e9
push dword [0x514c54]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
and ecx, 3
cmp ecx, 2
jne 0x45632c
mov dword [esi + 0x7c], 0
mov dword [esi + 0x78], 0x11e1a300
push 0x1db
push str....._base_threading_thread_local_storage.cc
push 0x50535a
lea edi, [esi + 0x90]
push edi
call fcn.00454af0
add esp, 4
movsd xmm0, qword [esi + 0x78]
movsd qword [esp + 4], xmm0
mov dword [esp], edi
call fcn.004be150
add esp, 0xc
mov eax, dword [esi + 0x20]
mov ecx, dword [eax + 0x2c]
mov eax, dword [ecx]
cmp dword [eax + 0x18], 0x403bc0
jne 0x456446
mov eax, dword [ecx + 0x20]
cmp byte [eax + 0x58], 0
mov ecx, 0xffffffff
mov edx, 0x7fffffff
je 0x456c06
mov eax, 0xf4240
cmp ecx, eax
mov eax, 0xf4240
cmovb eax, ecx
test edx, edx
mov edi, 0
mov dword [esi + 0x3c], edx
cmovs edi, edx
mov dword [esi + 4], edi
mov edx, 0xf4240
mov dword [esi + 0x44], ecx
cmovs edx, ecx
cmove edx, eax
mov dword [esi + 0x10], edx
mov eax, dword [0x514f00]
mov ecx, dword fs:[0x2c]
mov eax, dword [ecx + eax*4]
mov ecx, dword [0x5261a8]
cmp ecx, dword [eax + 4]
jg 0x4567b6
cmp byte [0x5261a4], 0
je 0x45696f
xor eax, eax
dec eax
mov dword [esi + 0x7c], eax
mov dword [esi + 0x78], eax
mov ecx, dword [fcn.0048cd00]
cmp ecx, 0x493220
jne 0x456432
xor eax, eax
mov dword [esi + 0x94], eax
mov dword [esi + 0x90], eax
lea eax, [esi + 0x90]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov ebx, dword [esi + 0x90]
mov edi, dword [esi + 0x94]
mov eax, 0x7bd05af7
cmp ebx, eax
mov eax, edi
mov ecx, 0x863
sbb eax, ecx
jge 0x456d90
mov eax, ebx
mov ecx, 0xf4240
mul ecx
imul ecx, edi, 0xf4240
add ecx, edx
push dword [0x52120c]
push dword [0x521208]
push ecx
push eax
call fcn.004b5fc0
mov dword [esi + 0x78], eax
mov dword [esi + 0x7c], edx
mov eax, dword [0x5261b8]
mov ecx, dword [0x514f00]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x45674c
xor eax, eax
dec eax
mov edx, dword [esi + 0x10]
add eax, edx
mov ecx, 0x7fffffff
mov edi, dword [esi + 4]
adc ecx, edi
add eax, 2
adc ecx, 0
cmp eax, 2
mov ebx, dword [esi + 0x78]
sbb ecx, 0
mov ecx, dword [esi + 0x7c]
mov dword [esi + 8], ebx
mov dword [esi + 0x18], ecx
jb 0x456c4a
add edx, ebx
adc edi, ecx
seto al
mov ecx, edi
sar ecx, 0x1f
test al, al
lea ebx, [ecx - 0x80000000]
cmove ecx, edx
test al, al
cmove ebx, edi
mov dword [esi + 0x14], ecx
neg ecx
mov eax, 0
mov dword [esi + 0xc], ebx
sbb eax, ebx
seto dl
mov edi, eax
sar edi, 0x1f
test dl, dl
cmovne ecx, edi
add edi, 0x80000000
test dl, dl
cmove edi, eax
xor ebx, ebx
dec ebx
mov eax, ebx
add eax, ecx
mov edx, 0x7fffffff
adc edx, edi
add eax, 2
adc edx, 0
cmp eax, 2
sbb edx, 0
mov eax, 0x7fffffff
jb 0x456062
push 0
push 0xf4240
push edi
push ecx
call fcn.004b6f50
mov ebx, eax
mov ecx, eax
or ecx, edx
je 0x45669a
mov eax, edx
mov dword [esi + 0x10], ebx
mov ecx, ebx
add ecx, 0xf4240
mov edx, eax
adc edx, 0
seto bl
mov edi, edx
sar edi, 0x1f
test bl, bl
cmovne ecx, edi
add edi, 0x80000000
test bl, bl
cmove edi, edx
mov edx, dword [esi + 0x14]
neg edx
mov edx, 0
sbb edx, dword [esi + 0xc]
cmovge edi, eax
cmovge ecx, dword [esi + 0x10]
xor eax, eax
dec eax
add eax, ecx
mov edx, 0x7fffffff
adc edx, edi
add eax, 2
adc edx, 0
cmp eax, 2
sbb edx, 0
jb 0x456d3e
mov eax, dword [esi + 0x14]
add eax, ecx
mov edx, dword [esi + 0xc]
adc edx, edi
seto cl
mov ebx, edx
sar ebx, 0x1f
test cl, cl
lea edi, [ebx - 0x80000000]
cmove ebx, eax
mov eax, edi
test cl, cl
cmove eax, edx
sub ebx, dword [esi + 8]
mov edi, dword [esi + 0x18]
sbb eax, edi
mov dword [esi + 0x14], eax
seto dl
mov byte [esi + 4], dl
mov ecx, eax
sar ecx, 0x1f
test dl, dl
cmovne ebx, ecx
mov edx, 0x80000000
xor ecx, edx
mov eax, dword [0x5261b0]
sub eax, dword [esi + 8]
mov edx, dword [0x5261b4]
sbb edx, edi
mov dword [esi + 8], edx
seto byte [esi + 0x10]
cmp byte [esi + 4], 0
cmove ecx, dword [esi + 0x14]
mov edi, edx
sar edi, 0x1f
cmp byte [esi + 0x10], 0
cmovne eax, edi
mov edx, 0x80000000
xor edi, edx
cmp byte [esi + 0x10], 0
cmove edi, dword [esi + 8]
cmp ebx, eax
mov edx, eax
cmova edx, ebx
cmp ecx, edi
cmovg eax, ebx
cmove eax, edx
cmovg edi, ecx
mov dword [esi + 0x10], eax
neg eax
mov eax, 0
mov dword [esi + 4], edi
sbb eax, edi
jge 0x456bec
pcmpeqd xmm0, xmm0
movdqa xmmword [esi + 0x90], xmm0
movdqa xmmword [esi + 0xd0], xmm0
movdqa xmmword [esi + 0xc0], xmm0
movdqa xmmword [esi + 0xb0], xmm0
movdqa xmmword [esi + 0xa0], xmm0
mov byte [esi + 0x90], 0
pxor xmm0, xmm0
lea eax, [esi + 0x98]
movdqu xmmword [eax + 0x30], xmm0
movdqu xmmword [eax + 0x20], xmm0
movdqu xmmword [eax + 0x10], xmm0
movdqu xmmword [eax], xmm0
mov eax, dword [esi + 0x20]
mov al, byte [eax + 0x24]
xor ecx, ecx
dec ecx
mov dword [esi + 0x1c], ecx
mov ebx, ecx
mov byte [esi + 0x14], al
test al, al
jne 0x456453
mov dword [esi + 0x18], ebx
mov eax, dword [esi + 0x10]
xor eax, ecx
mov ecx, dword [esi + 4]
mov edx, 0x7fffffff
xor ecx, edx
or ecx, eax
je 0x456364
mov ecx, dword [0x514bd0]
cmp ecx, 0x493220
jne 0x45634a
xor eax, eax
mov dword [esi + 0x7c], eax
mov dword [esi + 0x78], eax
lea eax, [esi + 0x78]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov ebx, dword [esi + 0x78]
mov edi, dword [esi + 0x7c]
mov eax, 0x7bd05af7
cmp ebx, eax
mov eax, edi
mov ecx, 0x863
sbb eax, ecx
jge 0x456e36
mov eax, ebx
mov ecx, 0xf4240
mul ecx
imul ecx, edi, 0xf4240
add ecx, edx
push dword [0x52120c]
push dword [0x521208]
push ecx
push eax
call fcn.004b5fc0
mov edi, edx
add eax, dword [esi + 0x10]
mov dword [esi + 8], eax
mov ebx, dword [esi + 4]
adc edi, ebx
seto cl
mov edx, edi
sar edx, 0x1f
test cl, cl
lea eax, [edx - 0x80000000]
cmove edx, dword [esi + 8]
mov dword [esi + 0x24], edx
test cl, cl
cmove eax, edi
mov dword [esi + 0x30], eax
mov edi, dword [esi + 0x10]
mov edx, ebx
mov dword [esi + 8], edi
mov eax, edi
xor edi, edi
dec edi
xor eax, edi
mov ebx, edx
mov ecx, edx
mov edx, 0x7fffffff
xor ecx, edx
or ecx, eax
mov eax, edi
je 0x4562cf
push 0
mov edi, 0x3e8
push edi
mov dword [esi + 0xc], ebx
push ebx
push dword [esi + 8]
call fcn.004b23a0
mov ecx, eax
mov ebx, edx
mul edi
imul edi, ebx, 0x3e8
add edi, edx
cmp eax, dword [esi + 8]
sbb edi, dword [esi + 0xc]
adc ecx, 0
adc ebx, 0
neg ebx
mov eax, 0
sbb eax, eax
or eax, ecx
push eax
mov eax, dword [esi + 0x28]
push dword [eax]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
jne 0x456534
mov bl, 1
test byte [0x513224], 0x19
jne 0x456c9b
cmp byte [esi + 0x90], 0
jne 0x4564ef
cmp byte [esi + 0x14], 0
jne 0x45650c
test bl, bl
je 0x4566bd
xor ebx, ebx
test byte [0x512ba0], 0x19
mov dword [esi + 0x10], 0
je 0x455d2d
jmp 0x456b8a
and eax, 0xfffffffc
je 0x455e85
mov ecx, dword [0x524b68]
mov eax, dword [eax + ecx*8 + 4]
cmp eax, dword [0x524b6c]
jmp 0x455e85
call dword [section..00cfg]
lea eax, [esi + 0x70]
push eax
call ecx
add esp, 4
mov eax, dword [esi + 0x70]
mov edi, dword [esi + 0x74]
jmp 0x45624c
xor eax, eax
dec eax
mov dword [esi + 0x24], eax
mov dword [esi + 0x30], 0x7fffffff
mov edi, dword [esi + 0x10]
mov ebx, dword [esi + 4]
jmp 0x456279
mov edx, dword [esi + 0x64]
test edx, edx
je 0x455d38
mov dword [esi + 0x60], 0
mov al, byte [edi + 0x12]
and al, 0x7f
cmp al, 2
je 0x456680
lock dec dword [edx + 0x1c]
je 0x4565d2
lock dec dword [edi + 4]
jne 0x455d47
mov dword [edi], 0x4ff360
mov edx, dword [edi + 0x5c]
test edx, edx
jne 0x456800
lea eax, [edi + 0x44]
mov dword [esi + 4], eax
mov edx, dword [edi + 0x44]
mov ecx, dword [edi + 0x48]
mov eax, edx
cmp ecx, edx
jne 0x4570ba
mov dword [edi + 0x48], edx
test eax, eax
jne 0x4570e9
mov eax, dword [edi + 0x38]
mov ecx, dword [edi + 0x3c]
cmp ecx, eax
jne 0x457104
push 0
push dword [edi + 0x30]
push 0x504ee4
call fcn.004684e0
add esp, 0xc
mov dword [edi], 0x4ff390
mov eax, dword [edi + 0x24]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x518914]
bt edx, ecx
jb 0x4566a3
push edi
call fcn.00494aa1
add esp, 4
jmp 0x455d47
call dword [section..00cfg]
lea eax, [esi + 0x78]
push eax
call ecx
add esp, 4
jmp 0x455f91
push dword [esi + 0x28]
call fcn.00403bc0
jmp 0x456311
call fcn.00459380
mov edi, eax
mov eax, dword [esi + 0x28]
mov dword [esi + 0x78], eax
mov dword [esi + 0x7c], 0
mov ecx, dword [0x52113c]
xor ebx, ebx
test ecx, ecx
jne 0x456f3b
mov eax, ebx
shr eax, 0xe
mov ecx, ebx
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x518914]
bt ecx, eax
jb 0x456f47
mov eax, ebx
shr eax, 0x15
mov byte [eax + 0x520914], 1
xor eax, eax
dec eax
mov dword [esi + 0x1c], eax
test ebx, ebx
jne 0x456f55
push 0x26
push str....._base_synchronizationwaitable_event.cc
push str.TimedWait
lea edi, [esi + 0x78]
push edi
call fcn.00454af0
add esp, 0x10
lea ecx, [esi + 0x98]
push 1
push 0
push edi
call fcn.0046afe0
test byte [0x512ba0], 0x19
jne 0x456f6d
mov byte [esi + 0x90], 1
xor ecx, ecx
dec ecx
jmp 0x4561cc
test byte [0x512ba0], 0x19
jne 0x456f9c
lea ecx, [esi + 0x98]
call fcn.00471300
jmp 0x4562ff
mov ecx, dword [esi + 0x18]
test ecx, ecx
jne 0x456fde
mov eax, ecx
shr eax, 0xe
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x518914]
bt ecx, eax
jae 0x456309
jmp 0x457013
mov ecx, dword [0x514bd0]
cmp ecx, 0x493220
jne 0x456666
xor eax, eax
mov dword [esi + 0x7c], eax
mov dword [esi + 0x78], eax
lea eax, [esi + 0x78]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov ebx, dword [esi + 0x78]
mov edi, dword [esi + 0x7c]
mov eax, 0x7bd05af7
cmp ebx, eax
mov eax, edi
mov ecx, 0x863
sbb eax, ecx
jge 0x457023
mov eax, ebx
mov ecx, 0xf4240
mul ecx
imul ecx, edi, 0xf4240
add ecx, edx
push dword [0x52120c]
push dword [0x521208]
push ecx
push eax
call fcn.004b5fc0
mov edi, dword [esi + 0x24]
sub edi, eax
mov eax, dword [esi + 0x30]
sbb eax, edx
seto cl
mov edx, eax
sar edx, 0x1f
test cl, cl
cmovne edi, edx
add edx, 0x80000000
test cl, cl
cmove edx, eax
xor ebx, ebx
mov eax, edi
neg eax
mov eax, 0
sbb eax, edx
jl 0x45627b
jmp 0x4562f2
lea eax, [edx + 0x24]
mov dword [esi + 4], eax
push eax
mov eax, dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
mov dword [esi + 8], edx
call eax
test al, al
je 0x4570a0
mov eax, dword [esi + 8]
push dword [eax + 0x28]
call dword [sym.imp.KERNEL32.dll_WakeAllConditionVariable]
push dword [esi + 4]
mov eax, dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
call eax
push dword [esi + 4]
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x4570ad
mov eax, dword [esi + 8]
mov ecx, dword [eax + 0x2c]
mov dword [esi + 0x14], ecx
mov ecx, dword [eax + 0x30]
mov dword [esi + 0x1c], ecx
mov ecx, dword [eax + 0x34]
mov dword [esi + 0x18], ecx
mov ecx, dword [eax + 0x38]
mov dword [esi + 0xc], ecx
xorpd xmm0, xmm0
movupd xmmword [eax + 0x2c], xmm0
push dword [esi + 4]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0xc]
mov edx, ecx
cmp ecx, eax
jne 0x45739e
push 0
push dword [esi + 0x14]
push 0x504ee4
call fcn.004684e0
add esp, 0xc
jmp 0x455d3f
call dword [section..00cfg]
lea eax, [esi + 0x78]
push eax
call ecx
add esp, 4
mov eax, dword [esi + 0x78]
mov edx, dword [esi + 0x7c]
jmp 0x456598
mov eax, dword [edx + 0x18]
mov ecx, 0xfffffffe
lock xadd dword [eax], ecx
cmp ecx, 3
jne 0x45639b
jmp 0x456a35
xor ecx, ecx
xor edi, edi
jmp 0x4560bc
push eax
call fcn.004810e0
add esp, 4
jmp 0x456424
mov ecx, ebx
call fcn.004597a0
jmp 0x455bf9
mov eax, dword [0x514f00]
mov ecx, dword fs:[0x2c]
mov eax, dword [ecx + eax*4]
mov ebx, dword [eax + 0x90]
cmp ebx, 2
jb 0x4566f8
mov byte [ebx + 4], 0
mov edi, pe_nt_image_headers32
lea eax, [ebx + edi]
mov ecx, ebx
push 0
push eax
call fcn.00471d60
add edi, 8
cmp edi, 0x2f8
jne 0x4566e0
mov ecx, dword [esi + 0x44]
cmp dword [esi + 0x10], ecx
mov eax, dword [esi + 4]
sbb eax, dword [esi + 0x3c]
jge 0x456311
mov eax, ecx
xor edi, edi
dec edi
xor eax, edi
mov ecx, dword [esi + 0x3c]
mov edx, 0x7fffffff
xor ecx, edx
or ecx, eax
jne 0x4574d1
mov dword [esi + 0x90], edi
mov dword [esi + 0x94], edx
sub esp, 8
movsd xmm0, qword [esi + 0x90]
movsd qword [esp], xmm0
mov ecx, dword [esi + 0x28]
call fcn.0045d5d0
jmp 0x456311
push 0x5261b8
call fcn.00494ba0
add esp, 4
cmp dword [0x5261b8], 0xffffffff
jne 0x455fb2
mov eax, dword [esi + 0x7c]
mov ecx, dword [esi + 0x78]
mov edx, 0x3938700
add ecx, edx
adc eax, 0
seto bl
mov edx, eax
sar edx, 0x1f
test bl, bl
cmovne ecx, edx
add edx, 0x80000000
test bl, bl
cmove edx, eax
mov dword [0x5261b0], ecx
mov dword [0x5261b4], edx
push 0x5261b8
call fcn.00495b95
add esp, 4
jmp 0x455fb2
mov edi, 2
jmp 0x455c21
push 0x5261a8
call fcn.00494ba0
add esp, 4
cmp dword [0x5261a8], 0xffffffff
jne 0x455f02
push 0x514c90
call fcn.004593d0
add esp, 4
mov byte [0x5261a4], al
push 0x5261a8
call fcn.00495b95
add esp, 4
jmp 0x455f02
mov ecx, ebx
call fcn.004597a0
jmp 0x455de3
mov eax, dword [edi + 0x60]
mov ecx, edx
cmp eax, edx
je 0x45683e
mov dword [esi + 0x14], edx
lea ecx, [eax - 0xc]
mov dword [esi + 8], ecx
mov ecx, dword [eax - 8]
mov dword [esi + 4], ecx
cmp dword [esi + 4], 0
je 0x456832
mov ecx, dword [eax - 4]
call dword [section..00cfg]
push dword [esi + 4]
call ecx
mov edx, dword [esi + 0x14]
add esp, 4
mov ecx, dword [esi + 8]
mov eax, ecx
cmp ecx, edx
jne 0x45680c
mov ecx, dword [edi + 0x5c]
mov dword [edi + 0x60], edx
push ecx
call fcn.00494aa1
add esp, 4
jmp 0x4563c0
push 0
push dword [eax]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edi, eax
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
test edi, edi
jne 0x455c0b
mov eax, dword [esi + 0x20]
mov edi, dword [eax + 0x2c]
mov ebx, dword [edi + 0xc]
mov dword [edi + 0xc], 0
test ebx, ebx
je 0x456892
mov eax, dword [ebx]
mov ecx, dword [eax]
mov dword [esi + 0x10], ecx
call dword [section..00cfg]
mov ecx, ebx
push 1
call dword [esi + 0x10]
mov ebx, dword [edi + 0x20]
add ebx, 0x14
push ebx
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x45718a
mov eax, dword [edi + 0x20]
inc dword [eax + 0xc4]
mov eax, dword [edi + 0x20]
mov ecx, dword [eax + 0xc8]
test ecx, ecx
jne 0x457196
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov edi, dword [esi + 0x20]
mov ebx, dword [edi + 0x38]
test ebx, ebx
jne 0x4571a0
mov ebx, dword [edi + 8]
mov dword [edi + 8], 0
test ebx, ebx
jne 0x456954
test byte [0x512ba0], 0x19
jne 0x4571b8
mov edi, dword [esi + 0x68]
test edi, edi
je 0x456929
mov dword [esi + 0x68], 0
mov ecx, dword [edi + 4]
call dword [section..00cfg]
push edi
call ecx
add esp, 4
lock dec dword [edi]
jne 0x456922
mov ecx, dword [edi + 8]
call dword [section..00cfg]
push edi
call ecx
add esp, 4
mov edi, dword [esi + 0x68]
test edi, edi
jne 0x45693e
mov ecx, dword [esi + 0xe8]
xor ecx, ebp
call fcn.00496ce3
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
lock dec dword [edi]
jne 0x456929
mov ecx, dword [edi + 8]
call dword [section..00cfg]
push edi
call ecx
add esp, 4
jmp 0x456929
lock dec dword [ebx + 4]
jne 0x4568e4
mov ecx, ebx
call fcn.00404a10
push ebx
call fcn.00494aa1
add esp, 4
jmp 0x4568e4
mov eax, dword [esi + 0x10]
mov edi, dword [esi + 4]
jmp 0x45614e
push 0
push dword [eax]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edi, eax
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ebx, dword [esi + 0x34]
test edi, edi
jne 0x455df5
jmp 0x455d2d
push 0x524b70
call fcn.00494ba0
add esp, 4
cmp dword [0x524b70], 0xffffffff
jne 0x455d7b
mov dword [0x524b6c], 0
mov dword [0x524b68], 0xffffffff
mov ecx, 0x524b68
push 0
call fcn.00404c70
push 0x524b70
call fcn.00495b95
add esp, 4
jmp 0x455d7b
push 0x524b70
call fcn.00494ba0
add esp, 4
cmp dword [0x524b70], 0xffffffff
jne 0x455e29
mov dword [0x524b6c], 0
mov dword [0x524b68], 0xffffffff
mov ecx, 0x524b68
push 0
call fcn.00404c70
push 0x524b70
call fcn.00495b95
add esp, 4
jmp 0x455e29
mov dword [esi + 8], edx
lea eax, [edx + 0x3c]
mov dword [esi + 4], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x45753d
mov eax, dword [esi + 8]
mov ecx, dword [eax + 0x40]
call fcn.004750a0
push dword [esi + 4]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov edx, dword [esi + 8]
jmp 0x45639b
push edi
call fcn.0040e8b0
add esp, 4
mov dword [ebx + 0x40], edi
jmp 0x455c2a
lock dec dword [ecx + 4]
jne 0x455d52
push 1
call fcn.0048a2d0
jmp 0x455d52
int3
mov ecx, dword [esi + 0x64]
test ecx, ecx
je 0x455c97
mov dword [esi + 0x60], 0
push eax
lea eax, [esi + 0x78]
push eax
call fcn.004876a0
mov eax, dword [esi + 0x78]
jmp 0x455ca1
lock dec dword [eax + 4]
jne 0x455ca9
mov ecx, eax
push 1
call fcn.0048a2d0
jmp 0x455ca9
lock dec dword [ecx + 4]
jne 0x456adc
push 1
call fcn.0048a2d0
mov edi, dword [esi + 0x90]
mov eax, dword [esi + 0x94]
xor ecx, ecx
mov dword [esi + 0x94], ecx
mov dword [esi + 0x64], eax
mov dword [esi + 0x90], ecx
test edi, edi
je 0x455cd0
lock dec dword [edi + 4]
je 0x456eb5
mov ecx, dword [esi + 0x90]
test ecx, ecx
je 0x455cd0
lock dec dword [ecx + 4]
jne 0x455cd0
push 1
call fcn.0048a2d0
jmp 0x455cd0
lea edi, [esi + 0x90]
push edi
call fcn.0048cd00
add esp, 4
call fcn.00493210
sub esp, 0x30
xor ecx, ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], ecx
xorpd xmm0, xmm0
movupd xmmword [esp + 0xc], xmm0
mov dword [esp + 8], str.WorkerThread_active
mov dword [esp + 4], 0x512ba0
mov dword [esp], 0x45
call fcn.0047eb60
add esp, 0x30
jmp 0x455e02
lea edi, [esi + 0x90]
push edi
call fcn.0048cd00
add esp, 4
call fcn.00493210
sub esp, 0x30
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], ebx
xorpd xmm0, xmm0
movupd xmmword [esp + 0xc], xmm0
mov dword [esp + 8], str.WorkerThread_active
mov dword [esp + 4], 0x512ba0
mov dword [esp], 0x42
call fcn.0047eb60
add esp, 0x30
xor ebx, ebx
mov dword [esi + 0x10], 0
jmp 0x455d2d
push 0
mov eax, dword [esi + 0x28]
push dword [eax]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x456311
jmp 0x4566bd
fild qword [eax + 0x50]
fstp qword [esi + 0x58]
movsd xmm0, qword [esi + 0x58]
mulsd xmm0, qword [0x506d40]
movsd xmm1, qword [0x5049c8]
ucomisd xmm1, xmm0
jae 0x456e0d
xor ecx, ecx
ucomisd xmm0, qword [0x5049d0]
mov edx, 0x7fffffff
cmovb edx, ecx
mov eax, 0xffffffff
cmovae ecx, eax
jmp 0x455eb1
xor edx, edx
dec edx
mov eax, edx
add eax, ebx
mov ebx, 0x7fffffff
adc ebx, ecx
add eax, 2
adc ebx, 0
add edx, 1
mov dword [esi + 0x14], edx
mov ecx, 0x7fffffff
adc ecx, 0
mov dword [esi + 0xc], ecx
xor edx, edx
xor edi, edi
inc edi
cmp edi, eax
sbb edx, ebx
jb 0x456e2b
mov eax, dword [esi + 0x10]
xor eax, dword [esi + 8]
mov ecx, dword [esi + 4]
xor ecx, dword [esi + 0x18]
or ecx, eax
mov ecx, dword [esi + 0x14]
mov ebx, dword [esi + 0xc]
je 0x455ffe
int3
mov eax, dword [0x515c3c]
mov dword [esi + 8], eax
mov edi, dword [0x515c38]
xor edi, dword [esi + 0x28]
mov dword [esi + 0x84], 0x401170
mov dword [esi + 0x88], 0x506e90
push 8
call fcn.00494aa6
add esp, 4
mov ecx, dword [esi + 8]
mov dword [eax + 4], ecx
mov dword [eax], edi
mov dword [esi + 0x7c], eax
xor eax, eax
mov dword [esi + 0x74], eax
mov dword [esi + 0x70], eax
sub esp, 0x1c
movq xmm0, qword [esi + 0x70]
movq qword [esp + 0x10], xmm0
lea eax, [esi + 0x78]
mov dword [esp + 0x18], eax
mov dword [esp + 0xc], 0x502e28
mov dword [esp + 8], str.WaitableEvent::Wait_Complete
mov dword [esp + 4], 0x513224
mov dword [esp], 0x49
call section..text
add esp, 0x1c
mov eax, dword [esi + 0x88]
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x4562f2
mov edi, dword [esi + 0x7c]
call dword [section..00cfg]
push edi
call ecx
add esp, 4
jmp 0x4562f2
xor eax, eax
dec eax
add eax, dword [esi + 0x14]
mov edx, 0x7fffffff
adc edx, dword [esi + 0xc]
add eax, 2
adc edx, 0
mov dword [esi + 0x10], 0
xor ebx, ebx
inc ebx
cmp ebx, eax
sbb dword [esi + 0x10], edx
mov ebx, 0xffffffff
mov eax, 0x7fffffff
jb 0x4560e0
mov eax, dword [esi + 0x14]
xor eax, ecx
mov ecx, dword [esi + 0xc]
xor ecx, edi
or ecx, eax
mov ebx, 0xffffffff
mov eax, 0x7fffffff
je 0x4560e0
int3
mov eax, dword [0x521208]
mov dword [esi + 8], eax
mov ecx, dword [0x52120c]
mov dword [esi + 0x14], ecx
push ecx
push eax
push edi
push ebx
call fcn.004b5fc0
mov dword [esi + 0xc], eax
mov dword [esi + 0x24], edx
mul dword [esi + 8]
mov dword [esi + 0x1c], eax
mov ecx, dword [esi + 0xc]
imul ecx, dword [esi + 0x14]
add edx, ecx
mov eax, dword [esi + 0x24]
imul ecx, eax, 0xf4240
mov dword [esi + 0x18], ecx
imul eax, dword [esi + 8]
add eax, edx
sub ebx, dword [esi + 0x1c]
sbb edi, eax
mov ecx, 0xf4240
mov eax, dword [esi + 0xc]
mul ecx
mov dword [esi + 0xc], eax
add edx, dword [esi + 0x18]
mov dword [esi + 0x18], edx
mov eax, ebx
mul ecx
imul ecx, edi, 0xf4240
add edx, ecx
push dword [esi + 0x14]
push dword [esi + 8]
push edx
push eax
call fcn.004b5fc0
add eax, dword [esi + 0xc]
adc edx, dword [esi + 0x18]
jmp 0x455f8b
maxsd xmm0, qword [0x5049d0]
movsd qword [esi + 0x48], xmm0
fld qword [esi + 0x48]
fisttp qword [esi + 0x48]
mov ecx, dword [esi + 0x48]
mov edx, dword [esi + 0x4c]
jmp 0x455eb1
mov ecx, dword [esi + 0x14]
mov ebx, dword [esi + 0xc]
jmp 0x455ffe
mov eax, dword [0x521208]
mov dword [esi + 8], eax
mov ecx, dword [0x52120c]
mov dword [esi + 0xc], ecx
push ecx
push eax
push edi
push ebx
call fcn.004b5fc0
mov dword [esi + 0x24], eax
mov dword [esi + 0x38], edx
mul dword [esi + 8]
mov dword [esi + 0x2c], eax
mov ecx, dword [esi + 0x24]
imul ecx, dword [esi + 0xc]
add edx, ecx
mov eax, dword [esi + 0x38]
imul ecx, eax, 0xf4240
mov dword [esi + 0x30], ecx
imul eax, dword [esi + 8]
add eax, edx
sub ebx, dword [esi + 0x2c]
sbb edi, eax
mov ecx, 0xf4240
mov eax, dword [esi + 0x24]
mul ecx
mov dword [esi + 0x24], eax
add edx, dword [esi + 0x30]
mov dword [esi + 0x30], edx
mov eax, ebx
mul ecx
imul ecx, edi, 0xf4240
add edx, ecx
push dword [esi + 0xc]
push dword [esi + 8]
push edx
push eax
call fcn.004b5fc0
mov edi, edx
add eax, dword [esi + 0x24]
adc edi, dword [esi + 0x30]
jmp 0x45624c
mov dword [edi], 0x4ff360
mov ebx, dword [edi + 0x5c]
test ebx, ebx
jne 0x457466
lea eax, [edi + 0x44]
mov dword [esi + 0x10], eax
mov ebx, dword [edi + 0x44]
mov ecx, dword [edi + 0x48]
mov eax, ebx
mov dword [esi + 4], ecx
cmp ecx, ebx
jne 0x45754a
mov dword [edi + 0x48], ebx
test eax, eax
jne 0x457584
mov eax, dword [edi + 0x38]
mov ebx, dword [edi + 0x3c]
cmp ebx, eax
jne 0x45759e
push 0
push dword [edi + 0x30]
push 0x504ee4
call fcn.004684e0
add esp, 0xc
mov dword [edi], 0x4ff390
mov eax, dword [edi + 0x24]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x518914]
bt edx, ecx
jb 0x45717c
push edi
call fcn.00494aa1
add esp, 4
jmp 0x456b0b
call fcn.004d7a40
mov ebx, eax
jmp 0x456477
push ebx
call fcn.00455550
add esp, 4
jmp 0x45649d
mov ecx, ebx
lea eax, [esi + 0x78]
push eax
push 0x30
push 0
push edi
call fcn.004d7280
mov dword [esi + 0x1c], eax
jmp 0x4564ab
lea edx, [esi + 0x6c]
lea eax, [esi + 0x78]
mov dword [edx], eax
xor eax, eax
mov dword [esi + 0x74], eax
mov dword [esi + 0x70], eax
sub esp, 8
movq xmm0, qword [esi + 0x70]
movq qword [esp], xmm0
mov ecx, str.ScopedBlockingCallWithBaseSyncPrimitives
call fcn.004d87a0
add esp, 8
jmp 0x4564e0
xor eax, eax
mov dword [esi + 0x7c], eax
mov dword [esi + 0x78], eax
sub esp, 0x18
movq xmm0, qword [esi + 0x78]
movq qword [esp + 0x10], xmm0
mov dword [esp + 0xc], 0x502e28
mov dword [esp + 8], 0x504a73
mov dword [esp + 4], 0x512ba0
mov dword [esp], 0x45
call fcn.00414a30
add esp, 0x18
jmp 0x4564fc
mov eax, dword [esi + 0x1c]
cmp dword [ecx + 0xc], eax
jbe 0x456ffd
mov eax, dword [esi + 0x18]
mov eax, dword [eax + 8]
mov ecx, dword [esi + 0x1c]
shl ecx, 7
cmp dword [eax + ecx + 0x68], 0
jne 0x45734c
mov ecx, dword [esi + 0x18]
mov eax, dword [ecx + 4]
lock dec dword [eax + 0x38]
mov eax, dword [ecx + 4]
lock inc dword [eax + 0x3c]
jmp 0x456517
push dword [esi + 0x18]
call fcn.00454d60
add esp, 4
jmp 0x456309
mov eax, dword [0x521208]
mov dword [esi + 8], eax
mov ecx, dword [0x52120c]
mov dword [esi + 0xc], ecx
push ecx
push eax
push edi
push ebx
call fcn.004b5fc0
mov dword [esi + 0x2c], eax
mov dword [esi + 0x50], edx
mul dword [esi + 8]
mov dword [esi + 0x54], eax
mov ecx, dword [esi + 0x2c]
imul ecx, dword [esi + 0xc]
add edx, ecx
mov eax, dword [esi + 0x50]
imul ecx, eax, 0xf4240
mov dword [esi + 0x38], ecx
imul eax, dword [esi + 8]
add eax, edx
sub ebx, dword [esi + 0x54]
sbb edi, eax
mov ecx, 0xf4240
mov eax, dword [esi + 0x2c]
mul ecx
mov dword [esi + 0x2c], eax
add edx, dword [esi + 0x38]
mov dword [esi + 0x38], edx
mov eax, ebx
mul ecx
imul ecx, edi, 0xf4240
add edx, ecx
push dword [esi + 0xc]
push dword [esi + 8]
push edx
push eax
call fcn.004b5fc0
add eax, dword [esi + 0x2c]
adc edx, dword [esi + 0x38]
jmp 0x456598
mov ecx, dword [esi + 4]
call fcn.004597a0
jmp 0x4565eb
mov ecx, dword [esi + 4]
call fcn.004597a0
jmp 0x456612
mov dword [esi + 8], ecx
mov dword [esi + 0x14], edx
mov eax, dword [esi + 8]
mov ecx, dword [eax - 0x58]
add eax, 0xffffffa8
mov dword [esi + 8], eax
test ecx, ecx
jne 0x4574ad
mov eax, dword [esi + 8]
cmp eax, dword [esi + 0x14]
jne 0x4570c0
mov eax, dword [esi + 4]
mov eax, dword [eax]
mov edx, dword [esi + 0x14]
jmp 0x4563d6
mov ecx, dword [esi + 4]
push eax
call fcn.004ec1c0
mov eax, dword [esi + 4]
push dword [eax]
call fcn.00494aa1
add esp, 4
jmp 0x4563e1
mov dword [esi + 0xc], ecx
mov ecx, dword [edi + 0x34]
jbe 0x457281
cmp ecx, dword [esi + 0xc]
jb 0x457278
cmp ecx, eax
jb 0x45727b
cmp eax, dword [esi + 0xc]
jg 0x45727e
mov ecx, dword [edi + 0x30]
mov dword [esi + 8], ecx
imul ecx, dword [esi + 0xc], 0x58
mov dword [esi + 0x14], ecx
imul eax, eax, 0x58
mov dword [esi + 4], eax
mov eax, dword [esi + 8]
mov ecx, dword [esi + 4]
mov ecx, dword [eax + ecx]
test ecx, ecx
jne 0x45715f
mov ecx, dword [esi + 4]
add ecx, 0x58
mov eax, ecx
mov dword [esi + 4], ecx
cmp dword [esi + 0x14], ecx
jne 0x45713d
jmp 0x4563ef
mov eax, ecx
lock dec dword [ecx]
jne 0x45714a
mov dword [esi + 0xc], eax
mov ecx, dword [eax + 8]
call dword [section..00cfg]
push dword [esi + 0xc]
call ecx
add esp, 4
jmp 0x45714a
push eax
call fcn.004810e0
add esp, 4
jmp 0x456f2d
mov ecx, ebx
call fcn.004597a0
jmp 0x4568a7
call fcn.00493e20
jmp 0x4568c1
mov eax, dword [ebx]
mov ecx, dword [eax + 8]
mov dword [esi + 0x10], ecx
call dword [section..00cfg]
mov ecx, ebx
call dword [esi + 0x10]
jmp 0x4568d6
lea ebx, [esi + 0x90]
push ebx
call fcn.0048cd00
add esp, 4
call fcn.00493210
sub esp, 0x30
xor edi, edi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], edi
mov dword [esp + 0x24], ebx
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], edi
xorpd xmm0, xmm0
movupd xmmword [esp + 0xc], xmm0
mov dword [esp + 8], str.WorkerThread_active
mov dword [esp + 4], 0x512ba0
mov dword [esp], 0x45
call fcn.0047eb60
add esp, 0x30
test byte [0x512ba0], 0x19
je 0x4568f1
lea ebx, [esi + 0x90]
push ebx
call fcn.0048cd00
add esp, 4
call fcn.00493210
sub esp, 0x30
mov dword [esp + 0x28], edi
mov dword [esp + 0x24], ebx
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], edi
xorpd xmm0, xmm0
movupd xmmword [esp + 0xc], xmm0
mov dword [esp + 0x2c], 8
mov dword [esp + 8], str.WorkerThread_dead
mov dword [esp + 4], 0x512ba0
mov dword [esp], 0x49
call fcn.0047eb60
add esp, 0x30
jmp 0x4568f1
int3
int3
int3
cmp ecx, eax
jb 0x4572d7
jl 0x4572da
je 0x4572e0
mov edx, dword [edi + 0x30]
mov dword [esi + 8], edx
imul ecx, ecx, 0x58
mov dword [esi + 0x14], ecx
imul eax, eax, 0x58
mov dword [esi + 4], eax
mov eax, dword [esi + 8]
mov ecx, dword [esi + 4]
mov ecx, dword [eax + ecx]
test ecx, ecx
jne 0x4572ba
mov ecx, dword [esi + 4]
add ecx, 0x58
mov eax, ecx
mov dword [esi + 4], ecx
cmp dword [esi + 0x14], ecx
jne 0x45729b
jmp 0x4572dd
mov eax, ecx
lock dec dword [ecx]
jne 0x4572a8
mov dword [esi + 0x18], eax
mov ecx, dword [eax + 8]
call dword [section..00cfg]
push dword [esi + 0x18]
call ecx
add esp, 4
jmp 0x4572a8
int3
int3
mov eax, dword [edi + 0x34]
cmp eax, dword [esi + 0xc]
jb 0x457346
cmp dword [esi + 0xc], 0
js 0x457349
mov eax, dword [esi + 0xc]
je 0x4563ef
mov ecx, dword [edi + 0x30]
mov dword [esi + 8], ecx
imul eax, eax, 0x58
mov dword [esi + 0x14], eax
mov dword [esi + 4], 0
mov eax, dword [esi + 8]
mov ecx, dword [esi + 4]
mov ecx, dword [eax + ecx]
test ecx, ecx
jne 0x457329
mov ecx, dword [esi + 4]
add ecx, 0x58
mov eax, ecx
mov dword [esi + 4], ecx
cmp dword [esi + 0x14], ecx
jne 0x457307
jmp 0x4563ef
mov eax, ecx
lock dec dword [ecx]
jne 0x457314
mov dword [esi + 0xc], eax
mov ecx, dword [eax + 8]
call dword [section..00cfg]
push dword [esi + 0xc]
call ecx
add esp, 4
jmp 0x457314
int3
int3
mov edi, dword [0x52113c]
lea eax, [edi + 0x74]
mov dword [esi + 8], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x457530
add edi, 0x48
mov ecx, dword [esi + 0x18]
push edi
push dword [esi + 0x1c]
call fcn.004d7640
push dword [esi + 8]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x456ffd
mov eax, ecx
lock dec dword [ecx]
jne 0x4573d7
mov ecx, dword [eax + 8]
call dword [section..00cfg]
push dword [esi + 4]
call ecx
add esp, 4
jmp 0x4573d7
mov eax, dword [esi + 0x1c]
mov dword [esi + 8], edx
cmp eax, edx
jb 0x45745a
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov edx, dword [eax + ecx*4]
mov dword [esi + 4], edx
mov dword [eax + ecx*4], 0
mov ecx, dword [edx + 4]
call dword [section..00cfg]
push dword [esi + 4]
call ecx
add esp, 4
mov ecx, dword [esi + 4]
test ecx, ecx
jne 0x457384
mov edx, dword [esi + 8]
inc edx
xor eax, eax
mov ecx, dword [esi + 0x1c]
cmp edx, ecx
cmove edx, eax
mov eax, dword [esi + 0xc]
cmp edx, eax
mov ecx, dword [esi + 0x18]
jne 0x45739e
cmp eax, ecx
jbe 0x4575ff
mov eax, dword [esi + 0x1c]
cmp eax, dword [esi + 0xc]
jb 0x45745d
mov eax, dword [esi + 0x1c]
cmp eax, dword [esi + 0x18]
jb 0x457460
mov eax, dword [esi + 0x18]
cmp eax, dword [esi + 0xc]
jg 0x457463
mov eax, dword [esi + 0xc]
shl eax, 2
mov ecx, dword [esi + 0x18]
shl ecx, 2
mov dword [esi + 0xc], eax
mov dword [esi + 0x18], ecx
mov eax, dword [esi + 0x14]
mov ecx, dword [eax + ecx]
test ecx, ecx
jne 0x45743d
mov ecx, dword [esi + 0x18]
add ecx, 4
mov eax, dword [esi + 0xc]
cmp eax, ecx
jne 0x45741e
jmp 0x45664f
mov eax, ecx
lock dec dword [ecx]
jne 0x45742b
mov dword [esi + 4], eax
mov ecx, dword [eax + 8]
call dword [section..00cfg]
push dword [esi + 4]
call ecx
add esp, 4
jmp 0x45742b
int3
int3
int3
int3
mov eax, dword [edi + 0x60]
mov ecx, ebx
cmp eax, ebx
je 0x45749c
lea ecx, [eax - 0xc]
mov dword [esi + 0x10], ecx
mov ecx, dword [eax - 8]
mov dword [esi + 4], ecx
test ecx, ecx
je 0x457490
mov ecx, dword [eax - 4]
call dword [section..00cfg]
push dword [esi + 4]
call ecx
add esp, 4
mov ecx, dword [esi + 0x10]
mov eax, ecx
cmp ecx, ebx
jne 0x45746f
mov ecx, dword [edi + 0x5c]
mov dword [edi + 0x60], ebx
push ecx
call fcn.00494aa1
add esp, 4
jmp 0x456ec6
mov eax, ecx
lock dec dword [ecx]
jne 0x4570d4
mov dword [esi + 0xc], eax
mov ecx, dword [eax + 8]
call dword [section..00cfg]
push dword [esi + 0xc]
call ecx
add esp, 4
jmp 0x4570d4
mov eax, edi
add eax, dword [esi + 0x10]
mov ecx, 0x7fffffff
adc ecx, dword [esi + 4]
add eax, 2
adc ecx, 0
cmp eax, 2
sbb ecx, 0
jae 0x4574fc
xor eax, eax
dec eax
mov dword [esi + 0x90], eax
mov eax, 0x7fffffff
jmp 0x457525
mov edx, dword [esi + 0x44]
sub edx, dword [esi + 0x10]
mov edi, dword [esi + 0x3c]
sbb edi, dword [esi + 4]
seto cl
mov eax, edi
sar eax, 0x1f
test cl, cl
cmovne edx, eax
add eax, 0x80000000
test cl, cl
cmove eax, edi
mov dword [esi + 0x90], edx
mov dword [esi + 0x94], eax
jmp 0x45672f
mov ecx, dword [esi + 8]
call fcn.004597a0
jmp 0x457367
mov ecx, dword [esi + 4]
call fcn.004597a0
jmp 0x456a4d
mov eax, dword [esi + 4]
mov ecx, dword [eax - 0x58]
add eax, 0xffffffa8
mov dword [esi + 4], eax
test ecx, ecx
je 0x457575
mov eax, ecx
lock dec dword [ecx]
jne 0x457575
mov dword [esi + 8], eax
mov ecx, dword [eax + 8]
call dword [section..00cfg]
push dword [esi + 8]
call ecx
add esp, 4
cmp dword [esi + 4], ebx
jne 0x45754a
mov eax, dword [esi + 0x10]
mov eax, dword [eax]
jmp 0x456edf
mov ebx, dword [esi + 0x10]
mov ecx, ebx
push eax
call fcn.004ec1c0
push dword [ebx]
call fcn.00494aa1
add esp, 4
jmp 0x456eea
mov ecx, dword [edi + 0x34]
jbe 0x457680
cmp ecx, ebx
jb 0x4575f6
cmp ecx, eax
jb 0x4575f9
cmp eax, ebx
jg 0x4575fc
mov ecx, dword [edi + 0x30]
mov dword [esi + 0x10], ecx
imul ecx, ebx, 0x58
mov dword [esi + 4], ecx
imul ebx, eax, 0x58
mov eax, dword [esi + 0x10]
mov ecx, dword [eax + ebx]
test ecx, ecx
jne 0x4575d9
add ebx, 0x58
cmp dword [esi + 4], ebx
jne 0x4575c2
jmp 0x456ef8
mov eax, ecx
lock dec dword [ecx]
jne 0x4575cc
mov dword [esi + 8], eax
mov ecx, dword [eax + 8]
call dword [section..00cfg]
push dword [esi + 8]
call ecx
add esp, 4
jmp 0x4575cc
int3
int3
int3
mov eax, dword [esi + 0x1c]
cmp eax, dword [esi + 0x18]
jb 0x457674
jl 0x457677
jne 0x4576e0
mov eax, dword [esi + 0x1c]
cmp eax, dword [esi + 0xc]
jb 0x45767a
cmp dword [esi + 0xc], 0
js 0x45767d
mov eax, dword [esi + 0xc]
je 0x45664f
shl eax, 2
mov dword [esi + 4], 0
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 4]
mov ecx, dword [eax + ecx]
test ecx, ecx
jne 0x457657
mov edx, dword [esi + 4]
add edx, 4
mov eax, dword [esi + 0xc]
mov ecx, edx
mov dword [esi + 4], edx
cmp eax, edx
jne 0x457633
jmp 0x45664f
mov eax, ecx
lock dec dword [ecx]
jne 0x457640
mov dword [esi + 8], eax
mov ecx, dword [eax + 8]
call dword [section..00cfg]
push dword [esi + 8]
call ecx
add esp, 4
jmp 0x457640
int3
int3
int3
int3
cmp ecx, eax
jb 0x4576da
jl 0x4576dd
je 0x457733
mov edx, dword [edi + 0x30]
mov dword [esi + 4], edx
imul ecx, ecx, 0x58
mov dword [esi + 8], ecx
imul eax, eax, 0x58
mov dword [esi + 0x10], eax
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0x10]
mov ecx, dword [eax + ecx]
test ecx, ecx
jne 0x4576bd
mov ecx, dword [esi + 0x10]
add ecx, 0x58
mov eax, ecx
mov dword [esi + 0x10], ecx
cmp dword [esi + 8], ecx
jne 0x45769e
jmp 0x457730
mov eax, ecx
lock dec dword [ecx]
jne 0x4576ab
mov dword [esi + 0x14], eax
mov ecx, dword [eax + 8]
call dword [section..00cfg]
push dword [esi + 0x14]
call ecx
add esp, 4
jmp 0x4576ab
int3
int3
mov eax, dword [esi + 0x1c]
lea eax, [eax*4]
mov dword [esi + 4], eax
shl dword [esi + 0x18], 2
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 0x18]
mov ecx, dword [eax + ecx]
test ecx, ecx
jne 0x457713
mov ecx, dword [esi + 0x18]
add ecx, 4
mov eax, ecx
mov dword [esi + 0x18], ecx
cmp dword [esi + 4], ecx
jne 0x4576f1
jmp 0x45760f
mov eax, ecx
lock dec dword [ecx]
jne 0x4576fe
mov dword [esi + 8], eax
mov ecx, dword [eax + 8]
call dword [section..00cfg]
push dword [esi + 8]
call ecx
add esp, 4
jmp 0x4576fe
mov eax, dword [edi + 0x34]
cmp eax, ebx
jb 0x457783
test ebx, ebx
js 0x457786
je 0x456ef8
mov eax, dword [edi + 0x30]
mov dword [esi + 0x10], eax
imul eax, ebx, 0x58
mov dword [esi + 4], eax
xor ebx, ebx
mov eax, dword [esi + 0x10]
mov ecx, dword [eax + ebx]
test ecx, ecx
jne 0x457766
add ebx, 0x58
cmp dword [esi + 4], ebx
jne 0x45774f
jmp 0x456ef8
mov eax, ecx
lock dec dword [ecx]
jne 0x457759
mov dword [esi + 8], eax
mov ecx, dword [eax + 8]
call dword [section..00cfg]
push dword [esi + 8]
call ecx
add esp, 4
jmp 0x457759
int3
int3