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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x60
mov edi, dword [ecx]
mov esi, dword [ecx + 4]
mov ebx, ecx
lea ecx, [esp + 0x54]
mov edx, edi
push esi
call fcn.007253a0
add esp, 4
lea eax, [esi + 0x138]
add esi, 0x100
test edi, edi
mov dword [esp + 8], ebx
cmovne esi, eax
mov eax, dword [ebx + 0xc]
mov esi, dword [esi]
mov dword [esp + 0x3c], eax
mov eax, dword [esi + 0x80]
test eax, eax
je 0x724cad
mov ecx, dword [esi + 0x84]
mov edx, dword [ecx + 8]
dec edx
and edx, 0xfffffff8
lea eax, [edx + eax + 8]
push eax
call dword [ecx + 0x14]
add esp, 4
lea eax, [esi + 0x28]
mov dword [esp + 4], eax
push eax
call dword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
mov eax, dword [0x94bfbc]
mov ecx, 0
test eax, 0x7fffffff
jne 0x7252ce
mov eax, dword [esp + 8]
add eax, 4
mov dword [esp + 0x4c], eax
movzx eax, byte [esi + 0x2c]
lea eax, [esi + 0x90]
mov dword [esp + 0x10], 0
mov dword [esp + 0x40], eax
mov eax, dword [esi + 0x3c]
test eax, eax
je 0x724da0
mov ebx, ecx
mov ecx, dword [esi + 0x38]
mov edi, dword [esi + 0x30]
mov ebp, 0
lea edx, [ecx + 1]
cmp edx, edi
mov edx, dword [esi + 0x34]
cmovb edi, ebp
dec eax
neg edi
lea edi, [ecx + edi + 1]
mov dword [esi + 0x38], edi
mov dword [esi + 0x3c], eax
mov edi, dword [edx + ecx*8]
lock dec dword [esi + 0xa0]
test bl, bl
jne 0x724d3f
mov eax, dword [0x94bfbc]
test eax, 0x7fffffff
jne 0x724e9c
push dword [esp + 4]
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
mov eax, dword [edi + 8]
push edi
call dword [eax]
add esp, 4
mov eax, 0xffffffc0
lock xadd dword [edi], eax
cmp eax, 0x3f
jbe 0x72534d
and eax, 0xffffffc0
cmp eax, 0x40
jne 0x724d76
mov eax, dword [edi + 8]
push edi
call dword [eax + 8]
add esp, 4
push dword [esp + 4]
call dword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
mov eax, dword [0x94bfbc]
test eax, 0x7fffffff
jne 0x724e89
movzx eax, byte [esi + 0x2c]
xor ecx, ecx
jmp 0x724cf1
lock inc dword [esi + 0x9c]
cmp byte [esi + 0x78], 0
jne 0x724f7c
and cl, 1
mov dword [esp], ecx
jmp 0x724dc8
test al, al
jne 0x724f79
mov eax, 0x3e8
mul dword [esi + 0x14]
mov edi, eax
mov eax, 0x3e8
seto bl
mul dword [esi + 0x10]
mov ebp, edx
mov ecx, eax
add ebp, edi
setb al
or al, bl
jne 0x724e30
mov edi, dword [esi + 0x18]
mov edx, 0x431bde83
mov eax, edi
mul edx
shr edx, 0x12
add ecx, edx
adc ebp, 0
jb 0x724e30
imul eax, edx, 0xf4240
xor edx, edx
sub edi, eax
mov eax, 0
setne dl
add ecx, edx
adc ebp, 0
setb dl
neg ebp
sbb eax, eax
test dl, dl
je 0x724e6f
nop word cs:[eax + eax]
nop dword [eax]
mov eax, 0xffffffff
push 0
push eax
push dword [esp + 0xc]
push dword [esp + 0x4c]
call dword [sym.imp.kernel32.dll_SleepConditionVariableSRW]
movzx ecx, byte [esi + 0x2c]
test cl, cl
jne 0x7252f3
mov ecx, dword [esi + 0x60]
test ecx, ecx
jne 0x724e73
test eax, eax
movzx eax, byte [esi + 0x78]
jne 0x724dc0
test al, al
jne 0x724dc0
jmp 0x724eb2
or eax, ecx
jmp 0x724e35
dec ecx
mov dword [esi + 0x60], ecx
mov ecx, dword [esp]
cmp byte [esi + 0x78], 0
je 0x724cf1
jmp 0x724f7c
call fcn.007d1b30
mov ecx, eax
movzx eax, byte [esi + 0x2c]
xor cl, 1
jmp 0x724cf1
call fcn.007d1b30
test al, al
jne 0x724d3f
mov byte [esi + 0x2c], 1
jmp 0x724d3f
mov edx, dword [esi + 0x54]
mov ecx, dword [esi + 0x50]
push dword [esp + 0x3c]
push dword [esi + 0x5c]
push dword [esi + 0x58]
call fcn.007247b0
add esp, 0xc
mov ecx, eax
mov edx, dword [esi + 0x40]
mov edi, dword [esi + 0x44]
pcmpeqd xmm1, xmm1
mov dword [esp + 0x34], 0
shr ecx, 0x19
movd xmm0, ecx
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
lea ecx, [edx - 0x10]
mov dword [esp + 0x38], edx
mov dword [esp + 0xc], edi
pshufd xmm0, xmm0, 0
mov dword [esp + 0x50], ecx
and eax, edi
movdqu xmm2, xmmword [edx + eax]
movdqa xmm3, xmm2
pcmpeqb xmm3, xmm0
pmovmskb ebx, xmm3
nop word cs:[eax + eax]
nop
test bx, bx
je 0x724f50
tzcnt edx, ebx
lea edi, [ebx - 1]
mov ecx, dword [esp + 0x3c]
add edx, eax
and edi, ebx
mov ebx, dword [esp + 0x50]
and edx, dword [esp + 0xc]
mov ebp, edx
shl ebp, 4
sub ebx, ebp
cmp dword [ebx], ecx
mov ebx, edi
jne 0x724f20
jmp 0x72509b
pcmpeqb xmm2, xmm1
pmovmskb edx, xmm2
test edx, edx
jne 0x725116
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
mov edi, dword [esp + 0xc]
lea eax, [eax + ecx + 0x10]
add ecx, 0x10
mov dword [esp + 0x34], ecx
jmp 0x724f02
mov ecx, dword [esp]
mov eax, dword [esi + 0x3c]
mov dword [esp], ecx
test eax, eax
je 0x72508f
xor edi, edi
nop dword [eax]
mov ecx, dword [esi + 0x38]
mov ebx, dword [esi + 0x30]
lea edx, [ecx + 1]
cmp edx, ebx
mov edx, dword [esi + 0x34]
cmovb ebx, edi
dec eax
neg ebx
lea ebx, [ecx + ebx + 1]
mov dword [esi + 0x38], ebx
mov dword [esi + 0x3c], eax
movzx ebx, byte [edx + ecx*8 + 4]
mov ebp, dword [edx + ecx*8]
lock dec dword [esi + 0xa0]
cmp byte [esp], 0
jne 0x724fd3
mov eax, dword [0x94bfbc]
test eax, 0x7fffffff
jne 0x725079
push dword [esp + 4]
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
test bl, bl
je 0x725000
lock sub dword [ebp], 0x40
jb 0x72534d
mov eax, dword [ebp + 8]
add eax, 0x18
jmp 0x72502a
mov eax, dword [ebp + 8]
push ebp
call dword [eax]
add esp, 4
mov eax, 0xffffffc0
lock xadd dword [ebp], eax
cmp eax, 0x3f
jbe 0x72534d
and eax, 0xffffffc0
cmp eax, 0x40
jne 0x725030
mov eax, dword [ebp + 8]
add eax, 8
push ebp
call dword [eax]
add esp, 4
push dword [esp + 4]
call dword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
mov eax, dword [0x94bfbc]
test eax, 0x7fffffff
jne 0x72505e
mov dword [esp], 0
movzx eax, byte [esi + 0x2c]
mov eax, dword [esi + 0x3c]
test eax, eax
jne 0x724f90
jmp 0x72508f
call fcn.007d1b30
xor al, 1
mov dword [esp], eax
movzx eax, byte [esi + 0x2c]
mov eax, dword [esi + 0x3c]
test eax, eax
jne 0x724f90
jmp 0x72508f
call fcn.007d1b30
test al, al
jne 0x724fd3
mov byte [esi + 0x2c], 1
jmp 0x724fd3
lock inc dword [esi + 0x9c]
jmp 0x725179
sar ebp, 4
mov ebx, dword [esp + 0x38]
pcmpeqd xmm1, xmm1
neg edx
lea eax, [ebp - 0x10]
shl edx, 4
and eax, dword [esp + 0xc]
movdqu xmm2, xmmword [ebx + ebp]
movdqu xmm0, xmmword [ebx + eax]
pcmpeqb xmm2, xmm1
pmovmskb ecx, xmm2
pcmpeqb xmm0, xmm1
psllw xmm0, 7
pmovmskb edi, xmm0
test edi, edi
je 0x7250de
bsr di, di
xor edi, 0xf
jmp 0x7250e2
mov di, 0x10
or ecx, 0x10000
add edx, ebx
tzcnt ecx, ecx
add edi, ecx
mov cl, 0x80
cmp di, 0xf
ja 0x7250fd
inc dword [esi + 0x48]
mov cl, 0xff
mov byte [ebx + ebp], cl
mov byte [eax + ebx + 0x10], cl
dec dword [esi + 0x4c]
mov eax, dword [edx - 0xc]
test eax, eax
je 0x725116
mov ecx, dword [edx - 8]
mov edx, dword [edx - 4]
jmp 0x725118
xor eax, eax
mov edi, dword [esi + 0x70]
mov dword [esp + 0x24], edi
movsd xmm0, qword [esi + 0x68]
movsd qword [esp + 0x1c], xmm0
mov dword [esi + 0x68], eax
mov dword [esi + 0x6c], ecx
mov dword [esi + 0x70], edx
mov edi, dword [esp + 0x10]
test edi, edi
je 0x725165
push dword [esp + 0x18]
call dword [sym.imp.kernel32.dll_CloseHandle]
lock dec dword [edi]
jne 0x725153
mov ecx, dword [esp + 0x10]
call fcn.004c23a0
mov eax, dword [esp + 0x14]
lock dec dword [eax]
jne 0x725165
lea ecx, [esp + 0x14]
call fcn.004a8f70
mov eax, dword [esp + 0x24]
movsd xmm0, qword [esp + 0x1c]
mov dword [esp + 0x18], eax
movsd qword [esp + 0x10], xmm0
lock dec dword [esi + 0x98]
mov eax, 0xffffffff
lock xadd dword [esi + 0x9c], eax
mov ecx, dword [esi + 0x9c]
cmp eax, ecx
jb 0x725361
cmp byte [esi + 0x78], 0
mov ecx, dword [esp]
je 0x7251b2
mov eax, dword [esi + 0x98]
test eax, eax
je 0x725276
test cl, 1
jne 0x7251c7
mov eax, dword [0x94bfbc]
test eax, 0x7fffffff
jne 0x7252dd
push dword [esp + 4]
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
mov eax, dword [esi + 0x88]
test eax, eax
je 0x7251f3
mov ecx, dword [esi + 0x8c]
mov edx, dword [ecx + 8]
dec edx
and edx, 0xfffffff8
lea eax, [edx + eax + 8]
push eax
call dword [ecx + 0x14]
add esp, 4
cmp dword [esp + 0x10], 0
mov esi, dword [esp + 0x4c]
je 0x725233
lea ecx, [esp + 0x10]
call fcn.00725450
test eax, eax
je 0x725233
mov ebx, eax
mov edi, edx
push eax
call dword [edx]
add esp, 4
cmp dword [edi + 4], 0
je 0x725233
cmp dword [edi + 8], 9
jb 0x725224
mov ebx, dword [ebx - 4]
push ebx
push 0
push dword [0x94bf18]
call dword [sym.imp.kernel32.dll_HeapFree]
mov eax, dword [esp + 8]
mov eax, dword [eax + 8]
mov dword [esp + 0x1c], eax
lock dec dword [eax]
jne 0x72524c
lea ecx, [esp + 0x1c]
call fcn.00723410
lea ecx, [esp + 0x54]
call fcn.007255b0
mov eax, dword [esp + 0x54]
cmp eax, 2
je 0x72529f
test eax, eax
lea ecx, [esp + 0x58]
je 0x725291
mov eax, dword [esp + 0x58]
lock dec dword [eax]
jne 0x72529f
call fcn.00722e30
jmp 0x72529f
push dword [esp + 0x40]
call dword [sym.imp.kernel32.dll_WakeConditionVariable]
mov ecx, dword [esp]
test cl, 1
je 0x7251b7
jmp 0x7251c7
mov eax, dword [esp + 0x58]
lock dec dword [eax]
jne 0x72529f
call fcn.00722da0
mov eax, dword [esp + 8]
cmp dword [eax], 0
je 0x7252b8
mov eax, dword [esi]
lock dec dword [eax]
jne 0x7252c6
mov ecx, esi
call fcn.00722e30
jmp 0x7252c6
mov eax, dword [esi]
lock dec dword [eax]
jne 0x7252c6
mov ecx, esi
call fcn.00722da0
add esp, 0x60
pop esi
pop edi
pop ebx
pop ebp
ret
call fcn.007d1b30
mov ecx, eax
xor cl, 1
jmp 0x724cd0
call fcn.007d1b30
test al, al
jne 0x7251c7
mov byte [esi + 0x2c], 1
jmp 0x7251c7
test eax, eax
mov eax, dword [esp + 4]
mov ecx, 0x93b384
mov edx, 0x2b
mov dword [esp + 0x1c], eax
mov eax, dword [esp]
mov byte [esp + 0x20], al
movzx eax, word [esp + 0x49]
mov word [esp + 0x21], ax
movzx eax, byte [esp + 0x4b]
mov byte [esp + 0x23], al
movzx eax, word [esp + 0x46]
sete byte [esp + 0x24]
mov word [esp + 0x25], ax
movzx eax, byte [esp + 0x48]
mov byte [esp + 0x27], al
lea eax, [esp + 0x1c]
push 0x9383f0
push 0x936154
push eax
call fcn.007c1f60
mov ecx, str.assertion_failed:_prev.ref_count_____1
mov edx, 0x27
push 0x938244
call fcn.007c1ca0
lea ecx, [esp + 0x1c]
mov edx, 0x938434
mov dword [esp + 0x1c], 0x93842c
mov dword [esp + 0x20], 1
mov dword [esp + 0x2c], 0
mov dword [esp + 0x24], 0x93d1f8
mov dword [esp + 0x28], 0
call fcn.007c1b50
int3