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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xc0
mov eax, dword [ecx + 4]
mov edx, dword [ecx]
mov esi, 1
mov edi, 1
lock xadd dword [eax], esi
test edx, edx
jne 0x527818
xor edi, edi
test esi, esi
js 0x5280ff
mov esi, dword [ecx + 0x24]
cmp esi, 0xffffffff
je 0x52783b
xor edx, edx
test esi, esi
je 0x527840
lock inc dword [esi + 4]
mov edx, esi
jg 0x527840
jmp 0x5280ff
mov edx, 0xffffffff
mov esi, dword [ecx + 0x10]
mov dword [esp + 0xc], edx
mov edx, eax
mov eax, edi
mov edi, ecx
cmp esi, 0x3b9aca00
jne 0x527857
jmp 0x52786d
mov ecx, dword [edi + 8]
mov ebx, dword [edi + 0x18]
mov dword [esp + 8], ecx
mov ecx, dword [edi + 0xc]
lock inc dword [ebx]
jle 0x5280ff
mov dword [esp + 0x1c], edi
mov edi, dword [edi + 0x20]
lock inc dword [edi]
jle 0x5280ff
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x54], edx
mov dword [esp + 0x74], eax
mov eax, dword [esp + 8]
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x58], eax
mov al, 1
mov dword [esp + 0x60], esi
mov dword [esp + 0x68], ebx
mov dword [esp + 0x70], edi
mov dword [esp + 8], eax
mov esi, dword [esp + 0x1c]
lea ecx, [esp + 0x88]
lea edx, [esp + 0x50]
call sym.tokio::runtime::context::try_enter::ha0a230723d0075f0
cmp dword [esp + 0x88], 3
je 0x52811f
movsd xmm2, qword [esp + 0xa0]
movsd xmm1, qword [esp + 0x98]
movq xmm0, qword [esp + 0xa8]
mov eax, dword [esi + 0x2c]
mov ebx, edi
movsd qword [esp + 0x40], xmm2
movsd qword [esp + 0x38], xmm1
movq xmm2, qword [esp + 0x88]
movq xmm1, qword [esp + 0x90]
movq qword [esp + 0x48], xmm0
mov dword [esp + 0x10], eax
movq qword [esp + 0x30], xmm1
movq qword [esp + 0x28], xmm2
mov eax, dword [edi + 0x88]
test eax, eax
je 0x52794b
mov ecx, dword [ebx + 0x8c]
mov edx, dword [ecx + 8]
mov ecx, dword [ecx + 0x14]
dec edx
and edx, 0xfffffff8
lea eax, [edx + eax + 8]
mov dl, 1
mov dword [esp + 8], edx
push eax
call ecx
add esp, 4
lea eax, [ebx + 0x28]
mov cl, 1
mov dl, 1
mov dword [esp + 0xc], eax
xor eax, eax
mov dword [esp + 8], ecx
lock cmpxchg byte [ebx + 0x28], dl
je 0x52796c
mov ecx, dword [esp + 0xc]
call sym.parking_lot::raw_mutex::RawMutex::lock_slow::h06df723492a6430d
lea eax, [ebx + 0x98]
mov dword [esp + 0x50], 0
mov dword [esp + 0x24], ebx
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x3c]
test eax, eax
je 0x527a20
mov ecx, dword [ebx + 0x38]
mov edx, dword [ebx + 0x34]
mov edi, 0
lea esi, [ecx + 1]
cmp esi, edx
mov esi, dword [ebx + 0x30]
cmovb edx, edi
dec eax
neg edx
lea edx, [ecx + edx + 1]
mov dword [ebx + 0x38], edx
mov dword [ebx + 0x3c], eax
mov al, 1
mov esi, dword [esi + ecx*4]
xor ecx, ecx
lock cmpxchg byte [ebx + 0x28], cl
je 0x5279c7
mov ecx, dword [esp + 0xc]
call sym.parking_lot::raw_mutex::RawMutex::unlock_slow::h7a3bc9387d667bed
mov eax, dword [esi + 0x10]
mov eax, dword [eax]
push esi
call eax
add esp, 4
mov eax, 0xffffffc0
lock xadd dword [esi], eax
cmp eax, 0x3f
jbe 0x528103
and eax, 0xffffffc0
cmp eax, 0x40
jne 0x5279f8
mov eax, dword [esi + 0x10]
mov eax, dword [eax + 4]
push esi
call eax
add esp, 4
mov ecx, dword [esp + 0xc]
xor eax, eax
mov dl, 1
lock cmpxchg byte [ecx], dl
je 0x527982
mov ecx, dword [esp + 0xc]
call sym.parking_lot::raw_mutex::RawMutex::lock_slow::h06df723492a6430d
jmp 0x527982
inc dword [ebx + 0x64]
movzx ecx, byte [ebx + 0x80]
nop word [eax + eax]
test cl, cl
jne 0x527b52
mov eax, ebx
mov ebx, dword [ebx + 0x10]
mov esi, dword [eax + 0x14]
mov edi, dword [eax + 0x18]
call dbg.now
add eax, ebx
adc edx, esi
mov esi, 0x3b9aca00
jae 0x527a60
jmp 0x527a9b
add ecx, edi
mov ebx, eax
cmp ecx, 0x3b9aca00
jb 0x527a80
add ebx, 1
adc edx, 0
mov edi, edx
jb 0x527a9b
add ecx, 0xc4653600
jmp 0x527a82
mov edi, edx
mov eax, ecx
mov edx, 0x44b83
shr eax, 9
mul edx
shr edx, 7
imul eax, edx, 0x3b9aca00
sub ecx, eax
mov esi, ecx
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 8]
push esi
push edi
push ebx
call sym.parking_lot::condvar::Condvar::wait_until_internal::h4ce8b711d1fd1e5c
add esp, 0xc
mov ebx, dword [esp + 0x24]
mov ecx, dword [ebx + 0x68]
test ecx, ecx
jne 0x527ad4
movzx ecx, byte [ebx + 0x80]
test cl, cl
setne dl
xor al, 1
or al, dl
jne 0x527a30
jmp 0x527b65
dec ecx
mov dword [ebx + 0x68], ecx
cmp byte [ebx + 0x80], 0
je 0x527982
jmp 0x527b52
mov ecx, dword [ebx + 0x38]
mov esi, dword [ebx + 0x34]
xor edx, edx
lea edi, [ecx + 1]
cmp edi, esi
mov edi, dword [ebx + 0x30]
cmovb esi, edx
dec eax
neg esi
lea esi, [ecx + esi + 1]
mov dword [ebx + 0x38], esi
mov dword [ebx + 0x3c], eax
mov al, 1
mov esi, dword [edi + ecx*4]
lock cmpxchg byte [ebx + 0x28], dl
je 0x527b25
mov ecx, dword [esp + 0xc]
call sym.parking_lot::raw_mutex::RawMutex::unlock_slow::h7a3bc9387d667bed
lock sub dword [esi], 0x40
jb 0x5280e3
mov eax, dword [esi + 0x10]
mov eax, dword [eax + 0x14]
push esi
call eax
add esp, 4
mov edx, dword [esp + 0xc]
mov cl, 1
xor eax, eax
lock cmpxchg byte [edx], cl
je 0x527b52
mov ecx, dword [esp + 0xc]
call sym.parking_lot::raw_mutex::RawMutex::lock_slow::h06df723492a6430d
mov eax, dword [ebx + 0x3c]
test eax, eax
jne 0x527af0
mov eax, dword [ebx + 0x64]
inc eax
mov dword [ebx + 0x64], eax
jmp 0x527faf
mov eax, dword [ebx + 0x54]
mov esi, dword [ebx + 0x58]
mov edi, dword [ebx + 0x50]
mov ecx, dword [ebx + 0x5c]
mov edx, eax
mov dword [esp + 4], eax
mov eax, edi
xor dword [esp + 4], 0x6c796765
xor edi, 0x6e657261
xor edx, 0x736f6d65
xor eax, 0x70736575
mov dword [esp + 0x20], edx
mov edx, esi
xor esi, dword [esp + 0x10]
mov dword [esp + 0x18], eax
mov eax, ecx
xor ecx, 0x70656462
xor edx, 0x6e646f6d
xor eax, 0x646f7261
mov ebx, edx
xor esi, 0x79746573
add dword [esp + 0x18], edx
adc dword [esp + 0x20], eax
shld ebx, eax, 0xd
shrd edx, eax, 0x13
mov eax, dword [esp + 4]
add edi, esi
mov dword [esp + 0x14], edi
mov edi, esi
adc eax, ecx
shld edi, ecx, 0x10
shld ecx, esi, 0x10
mov esi, dword [esp + 0x18]
xor edi, dword [esp + 0x14]
mov dword [esp + 4], eax
xor ecx, eax
mov eax, edi
add eax, dword [esp + 0x20]
mov dword [esp + 0x84], eax
mov eax, ecx
adc eax, esi
xor edx, dword [esp + 0x20]
xor ebx, esi
mov dword [esp + 0x80], eax
mov eax, edi
shrd edi, ecx, 0xb
movd xmm2, ebx
shld eax, ecx, 0x15
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x14], 0
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 4]
movd xmm0, edx
punpckldq xmm2, xmm0
add ecx, ebx
movdqa xmm0, xmm2
movdqa xmm4, xmm2
psllq xmm2, 0x11
adc eax, edx
movd xmm1, ecx
psrlq xmm4, 0x2f
movd xmm3, eax
mov eax, 0x4000000
punpckldq xmm1, xmm3
punpcklqdq xmm0, xmm1
punpcklqdq xmm1, xmmword [0x54bd50]
movdqa xmm3, xmm0
psllq xmm0, 0x20
psrlq xmm3, 0x20
shufps xmm2, xmm0, 0xe4
movd xmm0, edi
shufps xmm4, xmm3, 0xe4
movd xmm3, dword [esp + 0x7c]
orps xmm2, xmm4
movd xmm4, dword [esp + 0x10]
pxor xmm1, xmm2
movdqa xmm2, xmm1
punpckldq xmm3, xmm0
movd xmm0, eax
punpckldq xmm4, xmm0
movd xmm0, dword [esp + 0x80]
punpcklqdq xmm4, xmm3
movd xmm3, dword [esp + 0x84]
punpckldq xmm3, xmm0
pshufd xmm0, xmm3, 0x44
movdqa xmm3, xmm1
psllq xmm1, 0xd
pxor xmm0, xmm4
psrlq xmm3, 0x33
movdqa xmm4, xmm0
paddq xmm2, xmm0
psllq xmm0, 0x10
psrlq xmm4, 0x30
movsd xmm0, xmm1
pshufd xmm1, xmm2, 0x1e
movsd xmm4, xmm3
orpd xmm0, xmm4
xorpd xmm0, xmm2
movapd xmm2, xmm0
movapd xmm3, xmm0
paddq xmm1, xmm0
psrlq xmm2, 0x2f
psrlq xmm3, 0x2b
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0x15
psllq xmm2, 0x11
movsd xmm0, xmm2
orpd xmm0, xmm3
xorpd xmm0, xmm1
pshufd xmm1, xmm1, 0x1e
movapd xmm2, xmm0
movapd xmm3, xmm0
paddq xmm1, xmm0
psrlq xmm2, 0x33
psrlq xmm3, 0x30
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0x10
psllq xmm2, 0xd
movsd xmm0, xmm2
orpd xmm0, xmm3
xorpd xmm0, xmm1
pshufd xmm1, xmm1, 0x1e
movapd xmm2, xmm0
movapd xmm3, xmm0
paddq xmm1, xmm0
psrlq xmm2, 0x2f
psrlq xmm3, 0x2b
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0x15
psllq xmm2, 0x11
movsd xmm0, xmm2
orpd xmm0, xmm3
xorpd xmm0, xmm1
pshufd xmm1, xmm1, 0x1e
movapd xmm2, xmm0
movapd xmm3, xmm0
paddq xmm1, xmm0
psrlq xmm2, 0x33
psrlq xmm3, 0x30
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0x10
psllq xmm2, 0xd
movsd xmm0, xmm2
orpd xmm0, xmm3
xorpd xmm0, xmm1
movapd xmm2, xmm0
movapd xmm3, xmm0
pshufd xmm4, xmm0, 0x44
psrlq xmm2, 0x2f
psrlq xmm3, 0x2b
paddq xmm4, xmm1
pcmpeqd xmm1, xmm1
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0x15
psllq xmm2, 0x11
movsd xmm0, xmm2
orpd xmm0, xmm3
pshufd xmm2, xmm0, 0xee
pxor xmm2, xmm0
pshufd xmm0, xmm4, 0xee
movd eax, xmm0
pshufd xmm0, xmm4, 0xff
movd ebx, xmm2
movd ecx, xmm0
xor ecx, eax
mov eax, dword [esp + 0x24]
xor ebx, ecx
mov ecx, dword [eax + 0x40]
mov edx, dword [eax + 0x44]
mov eax, ebx
shr eax, 0x19
movd xmm0, eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
lea eax, [ecx - 0x10]
mov dword [esp + 0x18], ecx
mov dword [esp + 4], edx
pshufd xmm0, xmm0, 0
mov dword [esp + 0x20], eax
and ebx, edx
movdqu xmm2, xmmword [ecx + ebx]
movdqa xmm3, xmm2
pcmpeqb xmm3, xmm0
pmovmskb edi, xmm3
nop dword [eax]
test di, di
je 0x527eb0
tzcnt ecx, edi
lea edx, [edi - 1]
mov eax, dword [esp + 0x10]
add ecx, ebx
and edx, edi
mov edi, dword [esp + 0x20]
and ecx, dword [esp + 4]
mov esi, ecx
shl esi, 4
sub edi, esi
cmp dword [edi], eax
mov edi, edx
jne 0x527e80
jmp 0x527ed9
pcmpeqb xmm2, xmm1
pmovmskb ecx, xmm2
test ecx, ecx
jne 0x527f5b
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 4]
lea ebx, [ebx + eax + 0x10]
add eax, 0x10
mov dword [esp + 0x14], eax
jmp 0x527e6a
sar esi, 4
mov edi, dword [esp + 0x18]
pcmpeqd xmm1, xmm1
neg ecx
lea ebx, [esi - 0x10]
shl ecx, 4
and ebx, dword [esp + 4]
movdqu xmm2, xmmword [edi + esi]
movdqu xmm0, xmmword [edi + ebx]
pcmpeqb xmm2, xmm1
pmovmskb eax, xmm2
pcmpeqb xmm0, xmm1
psllw xmm0, 7
pmovmskb edx, xmm0
test edx, edx
je 0x527f1c
bsr dx, dx
xor edx, 0xf
jmp 0x527f20
mov dx, 0x10
or eax, 0x10000
add ecx, edi
tzcnt eax, eax
add edx, eax
mov al, pe_nt_image_headers32
cmp dx, 0xf
ja 0x527f3e
mov eax, dword [esp + 0x24]
inc dword [eax + 0x48]
mov al, 0xff
mov byte [edi + esi], al
mov byte [ebx + edi + 0x10], al
mov ebx, dword [esp + 0x24]
dec dword [ebx + 0x4c]
mov eax, dword [ecx - 0xc]
test eax, eax
je 0x527f5f
mov edx, dword [ecx - 8]
mov ecx, dword [ecx - 4]
jmp 0x527f61
mov ebx, dword [esp + 0x24]
xor eax, eax
mov esi, dword [ebx + 0x78]
mov dword [esp + 0x90], esi
movsd xmm0, qword [ebx + 0x70]
movsd qword [esp + 0x88], xmm0
mov dword [ebx + 0x70], eax
mov dword [ebx + 0x74], edx
mov dword [ebx + 0x78], ecx
cmp dword [esp + 0x50], 0
je 0x527f92
lea ecx, [esp + 0x50]
call sym.core::ptr::drop_in_place_LT_std..thread..JoinHandle_LT__LP__RP__GT__GT_::h75c1477cd505416c
mov eax, dword [esp + 0x90]
movq xmm0, qword [esp + 0x88]
mov dword [esp + 0x58], eax
movq qword [esp + 0x50], xmm0
mov eax, dword [ebx + 0x64]
mov ecx, dword [ebx + 0x60]
dec ecx
test eax, eax
mov dword [ebx + 0x60], ecx
je 0x528173
dec eax
test ecx, ecx
mov dword [ebx + 0x64], eax
jne 0x527fee
cmp byte [ebx + 0x80], 0
je 0x527fee
mov eax, dword [esp + 8]
mov edx, dword [eax]
test edx, edx
je 0x527fee
mov al, 1
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 8]
mov al, 1
mov dword [esp + 4], eax
call sym.parking_lot::condvar::Condvar::notify_one_slow::hecf1e50c0bf94f41
mov edx, dword [esp + 0xc]
mov al, 1
xor ecx, ecx
mov dword [esp + 4], eax
mov al, 1
lock cmpxchg byte [edx], cl
je 0x528013
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0xc]
call sym.parking_lot::raw_mutex::RawMutex::unlock_slow::h7a3bc9387d667bed
mov ecx, dword [ebx + 0x90]
test ecx, ecx
je 0x52803f
mov eax, dword [ebx + 0x94]
mov dword [esp + 0x10], 0
mov edx, dword [eax + 8]
mov eax, dword [eax + 0x14]
dec edx
and edx, 0xfffffff8
lea ecx, [edx + ecx + 8]
push ecx
call eax
add esp, 4
cmp dword [esp + 0x50], 0
je 0x52808c
mov dword [esp + 0x10], 0
lea ecx, [esp + 0x50]
mov dword [esp + 4], 0
call sym.std::thread::JoinInner_LT_T_GT_::join::h4f827feb8a509f65
mov esi, eax
test eax, eax
je 0x52808c
mov eax, dword [edx]
mov ebx, edx
push esi
call eax
add esp, 4
cmp dword [ebx + 4], 0
je 0x52808c
cmp dword [ebx + 8], 9
jb 0x52807e
mov esi, dword [esi - 4]
push esi
push 0
push dword [0x5c6108]
call sub.KERNEL32.dll_HeapFree
mov esi, dword [esp + 0x1c]
mov eax, dword [esi + 0x28]
mov dword [esp + 0x88], eax
lock dec dword [eax]
jne 0x5280b3
mov dword [esp + 8], 0
lea ecx, [esp + 0x88]
call sym.alloc::sync::Arc_LT_T_C_A_GT_::drop_slow::h9bc6e55654bdf4d3
lea ecx, [esp + 0x28]
call sym.__LT_tokio..runtime..context..EnterGuard_u20_as_u20_core..ops..drop..Drop_GT_::drop::h3ebe6d127f0cedec
cmp dword [esp + 0x28], 2
je 0x5280d4
mov dword [esp + 8], 0
lea ecx, [esp + 0x28]
call sym.core::ptr::drop_in_place_LT_tokio..runtime..handle..Handle_GT_::h7a03b6d44f71414b
mov ecx, esi
call sym.core::ptr::drop_in_place_LT_tokio..runtime..handle..Handle_GT_::h7a03b6d44f71414b
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, 0x27
mov ecx, str.assertion_failed:_prev.ref_count_____1
push 0x5a3e9c
call dbg.panic
add esp, 4
jmp 0x5282ce
ud2
mov edx, 0x27
mov ecx, str.assertion_failed:_prev.ref_count_____1
push 0x5a3e9c
call dbg.panic
add esp, 4
jmp 0x5282ce
lea eax, [esp + 0xb4]
mov dword [esp + 0xb4], 0x5a474c
mov dword [esp + 0x28], 0x5a4ddc
mov dword [esp + 0x2c], 1
mov dword [esp + 0x38], 0
mov dword [esp + 0xb8], sym.__LT__RF_T_u20_as_u20_core..fmt..Display_GT_::fmt::h09d8bcc9c7492b64
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], 1
lea ecx, [esp + 0x28]
mov edx, 0x5a4754
call dbg.panic_fmt
jmp 0x5282ce
mov al, 1
mov dword [esp + 0x10], eax
mov edx, 0x23
mov ecx, str.num_idle_underflowed_on_thread_exit
push 0x5a40f4
mov al, 1
mov dword [esp + 8], eax
call dbg.expect_failed
add esp, 4
jmp 0x5282ce
ud2