Function at 0x528680
Capabilities:
Create thread
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xf8
lea eax, [ecx + 0x28]
mov esi, ecx
mov cl, 1
mov ebx, edx
mov dword [esp + 0x14], eax
xor eax, eax
lock cmpxchg byte [esi + 0x28], cl
je 0x5286ae
mov ecx, dword [esp + 0x14]
call sym.parking_lot::raw_mutex::RawMutex::lock_slow::h06df723492a6430d
cmp byte [esi + 0x80], 0
je 0x5286e6
lock sub dword [ebx], 0x40
jb 0x5292fb
mov eax, dword [ebx + 0x10]
mov eax, dword [eax + 0x14]
push ebx
mov ebx, dword [esp + 0x18]
call eax
add esp, 4
xor ecx, ecx
mov al, 1
lock cmpxchg byte [ebx], cl
je 0x529052
mov ecx, ebx
jmp 0x529148
mov ecx, dword [esi + 0x34]
mov eax, dword [esi + 0x3c]
cmp eax, ecx
jne 0x5286fe
lea ecx, [esi + 0x30]
call sym.alloc::collections::vec_deque::VecDeque_LT_T_C_A_GT_::grow::h2ddaf9af0c5df0ea
mov ecx, dword [esi + 0x34]
mov eax, dword [esi + 0x3c]
mov edx, dword [esi + 0x38]
xor edi, edi
mov dword [esp + 0x1c], esi
add edx, eax
cmp edx, ecx
cmovb ecx, edi
inc eax
sub edx, ecx
mov ecx, dword [esi + 0x30]
mov dword [ecx + edx*4], ebx
mov dword [esi + 0x3c], eax
mov eax, dword [esi + 0x64]
test eax, eax
je 0x528743
dec eax
mov dword [esi + 0x64], eax
inc dword [esi + 0x68]
mov edx, dword [esi + 0x98]
mov ebx, dword [esp + 0x14]
test edx, edx
je 0x52876e
lea ecx, [esi + 0x98]
call sym.parking_lot::condvar::Condvar::notify_one_slow::hecf1e50c0bf94f41
jmp 0x52876e
mov eax, dword [esi + 0x60]
mov ebx, dword [esp + 0x14]
cmp eax, dword [esi + 0x9c]
je 0x52876e
mov ecx, dword [esp + 0x1c]
inc eax
mov dword [ecx + 0x60], eax
mov edi, dword [ecx + 0x6c]
test edi, edi
je 0x529464
lock inc dword [edi]
jle 0x5292b4
xor ecx, ecx
mov al, 1
lock cmpxchg byte [ebx], cl
jne 0x5290c6
test edi, edi
je 0x529052
mov dword [esp + 0x6c], edi
mov cl, 1
xor eax, eax
lock cmpxchg byte [ebx], cl
je 0x528799
mov ecx, ebx
call sym.parking_lot::raw_mutex::RawMutex::lock_slow::h06df723492a6430d
mov esi, dword [esp + 0x1c]
mov eax, dword [esi + 0x7c]
mov dword [esp + 8], eax
inc eax
mov dword [esi + 0x7c], eax
mov edi, dword [esp + 0x6c]
mov dword [esp + 0x7c], edi
mov ecx, dword [esi + 0x24]
mov eax, dword [esi + 0x20]
mov edx, dword [ecx + 8]
mov ecx, dword [ecx + 0x14]
dec edx
and edx, 0xfffffff8
lea eax, [edx + eax + 8]
lea edx, [esp + 0x28]
push eax
push edx
call ecx
add esp, 8
mov eax, dword [esi + 8]
mov ecx, dword [ebp + 8]
mov dword [esp + 0x10], edi
test eax, eax
mov dword [esp + 0x18], eax
je 0x5287ea
mov eax, dword [esi + 0xc]
mov dword [esp + 4], eax
jmp 0x5287ea
mov eax, dword [esp + 0x30]
mov edx, dword [ecx + 4]
mov esi, dword [ecx]
mov edi, dword [esp + 0x28]
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0xc], eax
mov eax, 1
lock xadd dword [edx], eax
test esi, esi
mov esi, 1
jne 0x528813
xor esi, esi
test eax, eax
js 0x5292b4
mov eax, dword [ecx + 0x24]
mov dword [esp], edi
mov dword [esp + 0x20], ebx
cmp eax, 0xffffffff
je 0x528849
xor edi, edi
test eax, eax
je 0x52883c
lock inc dword [eax + 4]
mov edi, eax
jle 0x5292b4
mov ebx, dword [ecx + 0x10]
cmp ebx, 0x3b9aca00
jne 0x528859
jmp 0x528873
mov edi, 0xffffffff
mov ebx, dword [ecx + 0x10]
cmp ebx, 0x3b9aca00
je 0x528847
mov eax, dword [ecx + 8]
mov dword [esp + 0x78], eax
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x74], eax
mov eax, dword [ecx + 0x18]
lock inc dword [eax]
jle 0x5292b4
mov ecx, dword [ecx + 0x20]
lock inc dword [ecx]
jle 0x5292b4
mov dword [esp + 0x80], esi
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0x78]
mov esi, dword [esp + 0x74]
cmp dword [esp + 0x18], 0
mov dword [esp + 0x88], edx
mov dword [esp + 0x8c], esi
mov dword [esp + 0x90], ebx
mov dword [esp + 0x98], eax
mov eax, dword [esp + 8]
mov dword [esp + 0xa0], ecx
mov dword [esp + 0xa4], edi
mov ebx, dword [esp]
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 4]
je 0x528914
test ebx, ebx
mov dword [esp + 4], eax
je 0x52892a
mov ecx, dword [esp + 0xc]
cmp ecx, 8
jae 0x528931
test ecx, ecx
mov eax, ecx
je 0x5289df
xor ecx, ecx
cmp byte [ebx + ecx], 0
je 0x5292ba
inc ecx
cmp eax, ecx
jne 0x528900
jmp 0x5289df
mov eax, dword [0x5c60e4]
test eax, eax
je 0x52905a
dec eax
test ebx, ebx
mov dword [esp + 4], eax
jne 0x5288eb
xor ecx, ecx
jmp 0x5289fc
lea edi, [ebx + 3]
and edi, 0xfffffffc
sub edi, ebx
je 0x52896c
mov ecx, dword [esp + 0xc]
cmp edi, ecx
cmovae edi, ecx
test edi, edi
je 0x52896c
xor ecx, ecx
nop word [eax + eax]
cmp byte [ebx + ecx], 0
je 0x5292ba
inc ecx
cmp edi, ecx
jne 0x528950
mov eax, dword [esp + 0xc]
lea ecx, [eax - 8]
cmp edi, ecx
jbe 0x528975
jmp 0x5289bd
mov eax, dword [esp + 0xc]
xor edi, edi
lea ecx, [eax - 8]
movdqa xmm0, xmmword [0x54bd60]
movdqa xmm1, xmmword [0x54bd70]
nop word cs:[eax + eax]
nop
movq xmm2, qword [ebx + edi]
movdqa xmm3, xmm2
paddd xmm3, xmm0
pandn xmm2, xmm3
pand xmm2, xmm1
movd edx, xmm2
pshufd xmm2, xmm2, 0x55
movd esi, xmm2
or esi, edx
jne 0x5289bd
add edi, 8
cmp edi, ecx
jbe 0x528990
mov edx, eax
sub edx, edi
je 0x5289df
lea esi, [ebx + edi]
xor ecx, ecx
nop dword [eax + eax]
cmp byte [esi + ecx], 0
je 0x5292b8
inc ecx
cmp edx, ecx
jne 0x5289d0
mov ecx, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], eax
lea ecx, [esp + 0x28]
call dbg._from_vec_unchecked
mov ecx, eax
call sym.std::thread::Thread::new::h58b72483cca6f6fd
lock inc dword [eax]
mov ebx, eax
jle 0x5292b4
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x28], 1
mov dword [esp + 0x2c], 1
movzx eax, byte [0x5c6170]
mov eax, dword [0x5c6108]
mov dword [esp], ebx
test eax, eax
jne 0x528a51
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x52931b
mov dword [0x5c6108], eax
push 0x18
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x52931b
movsd xmm0, qword [esp + 0x38]
movsd qword [eax + 0x10], xmm0
movq xmm0, qword [esp + 0x28]
movq xmm1, qword [esp + 0x30]
movq qword [eax + 8], xmm1
movq qword [eax], xmm0
mov dword [esp + 0x24], eax
lock inc dword [eax]
jle 0x5292b4
mov dword [esp + 0x70], eax
xor esi, esi
movzx eax, byte [0x5c6084]
test al, al
je 0x528acc
mov byte [0x5c6084], 1
call sym.std::io::stdio::OUTPUT_CAPTURE::__getit::hc4604384c9a60da8
test eax, eax
je 0x5293f9
mov ecx, dword [eax]
mov dword [eax], 0
test ecx, ecx
je 0x528acc
lock inc dword [ecx]
mov esi, ecx
jle 0x5292b4
mov ecx, esi
call sym.std::io::stdio::set_output_capture::h3a4d83bb1ff44bb6
test eax, eax
je 0x528ae3
lock dec dword [eax]
jne 0x528ae3
mov ecx, eax
call sym.alloc::sync::Arc_LT_T_C_A_GT_::drop_slow::he24a831682061750
movsd xmm1, qword [esp + 0xa0]
movsd xmm2, qword [esp + 0x98]
movq xmm0, qword [esp + 0xa8]
mov eax, dword [esp + 0x70]
mov edi, dword [esp + 0x24]
movsd qword [esp + 0xd0], xmm1
movsd xmm1, qword [esp + 0x90]
movsd qword [esp + 0xc8], xmm2
movq xmm2, qword [esp + 0x80]
movq qword [esp + 0xd8], xmm0
movsd qword [esp + 0xc0], xmm1
movq xmm1, qword [esp + 0x88]
movq qword [esp + 0xb0], xmm2
movq qword [esp + 0xb8], xmm1
mov dword [esp + 0xe4], ebx
mov dword [esp + 0xe0], esi
mov dword [esp + 0xe8], eax
mov ecx, dword [edi + 8]
test ecx, ecx
je 0x528b7d
lock inc dword [ecx + 0xc]
jle 0x52941f
movsd xmm1, qword [esp + 0xe0]
movsd xmm2, qword [esp + 0xd8]
movq xmm0, qword [esp + 0xe8]
movsd qword [esp + 0x58], xmm1
movsd xmm1, qword [esp + 0xd0]
movsd qword [esp + 0x50], xmm2
movsd xmm2, qword [esp + 0xc8]
movq qword [esp + 0x60], xmm0
movsd qword [esp + 0x48], xmm1
movsd xmm1, qword [esp + 0xc0]
movsd qword [esp + 0x40], xmm2
movq xmm2, qword [esp + 0xb0]
movsd qword [esp + 0x38], xmm1
movq xmm1, qword [esp + 0xb8]
movq qword [esp + 0x28], xmm2
movq qword [esp + 0x30], xmm1
movzx eax, byte [0x5c6170]
mov eax, dword [0x5c6108]
test eax, eax
jne 0x528c17
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x529333
mov dword [0x5c6108], eax
push 0x40
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x529333
movsd xmm0, qword [esp + 0x60]
mov ebx, eax
movsd qword [eax + 0x38], xmm0
movsd xmm0, qword [esp + 0x58]
movsd qword [eax + 0x30], xmm0
movsd xmm0, qword [esp + 0x50]
movsd qword [eax + 0x28], xmm0
movsd xmm0, qword [esp + 0x48]
movsd qword [eax + 0x20], xmm0
movsd xmm0, qword [esp + 0x40]
movsd qword [eax + 0x18], xmm0
movsd xmm0, qword [esp + 0x38]
movsd qword [eax + 0x10], xmm0
movq xmm0, qword [esp + 0x28]
movq xmm1, qword [esp + 0x30]
movq qword [eax + 8], xmm1
movq qword [eax], xmm0
movzx eax, byte [0x5c6170]
mov eax, dword [0x5c6108]
test eax, eax
jne 0x528ca4
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x529347
mov dword [0x5c6108], eax
push 8
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x529347
mov esi, eax
mov dword [eax], ebx
mov dword [eax + 4], 0x5a5848
push 0
push 0x10000
push eax
push dbg.thread_start
push dword [esp + 0x14]
push 0
call sub.KERNEL32.dll_CreateThread
test eax, eax
je 0x52935b
mov ecx, dword [esp]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], edi
mov ecx, dword [edx + 0x54]
mov esi, dword [edx + 0x50]
mov eax, dword [edx + 0x5c]
mov edi, ecx
mov dword [esp + 4], esi
xor esi, 0x70736575
xor ecx, 0x6c796765
xor dword [esp + 4], 0x6e657261
xor edi, 0x736f6d65
mov dword [esp + 0xc], esi
mov esi, eax
xor eax, 0x70656462
mov dword [esp], edi
mov edi, dword [edx + 0x58]
xor esi, 0x646f7261
mov ebx, edi
xor edi, dword [esp + 8]
xor ebx, 0x6e646f6d
mov edx, ebx
xor edi, 0x79746573
add dword [esp + 0xc], ebx
adc dword [esp], esi
shld edx, esi, 0xd
shrd ebx, esi, 0x13
mov esi, edi
xor ebx, dword [esp]
xor edx, dword [esp + 0xc]
add dword [esp + 4], edi
adc ecx, eax
shld esi, eax, 0x10
shld eax, edi, 0x10
xor esi, dword [esp + 4]
xor eax, ecx
add dword [esp], esi
mov edi, esi
adc dword [esp + 0xc], eax
shld edi, eax, 0x15
shrd esi, eax, 0xb
mov eax, edx
xor esi, dword [esp + 0xc]
xor edi, dword [esp]
add dword [esp + 4], edx
adc ecx, ebx
shld eax, ebx, 0x11
shrd edx, ebx, 0xf
mov ebx, dword [esp]
xor dword [esp + 0xc], 0x4000000
xor eax, dword [esp + 4]
xor edx, ecx
xor ecx, 0xff
xor ebx, dword [esp + 8]
add ebx, eax
mov dword [esp], ebx
mov ebx, eax
adc dword [esp + 0xc], edx
shrd eax, edx, 0x13
shld ebx, edx, 0xd
xor eax, dword [esp + 0xc]
mov edx, edi
xor ebx, dword [esp]
add ecx, edi
adc dword [esp + 4], esi
shld edx, esi, 0x10
shrd edi, esi, 0x10
xor edx, ecx
xor edi, dword [esp + 4]
add dword [esp + 0xc], edx
mov esi, edx
adc dword [esp], edi
shld esi, edi, 0x15
shrd edx, edi, 0xb
mov edi, ebx
xor edx, dword [esp]
xor esi, dword [esp + 0xc]
add ecx, ebx
adc dword [esp + 4], eax
shld edi, eax, 0x11
shrd ebx, eax, 0xf
mov eax, ecx
xor edi, ecx
xor ebx, dword [esp + 4]
add dword [esp + 0xc], edi
mov ecx, edi
adc dword [esp], ebx
shld ecx, ebx, 0xd
shrd edi, ebx, 0x13
mov ebx, dword [esp + 4]
xor edi, dword [esp]
xor ecx, dword [esp + 0xc]
add ebx, esi
adc eax, edx
mov dword [esp + 4], ebx
mov dword [esp + 0x10], eax
mov eax, esi
shrd esi, edx, 0x10
shld eax, edx, 0x10
mov edx, dword [esp]
xor esi, dword [esp + 0x10]
xor eax, ebx
mov ebx, dword [esp + 0xc]
mov dword [esp + 0x18], eax
add edx, eax
adc ebx, esi
shrd eax, esi, 0xb
shld dword [esp + 0x18], esi, 0x15
mov esi, dword [esp + 4]
mov dword [esp], edx
xor dword [esp + 0x18], edx
mov edx, dword [esp + 0x10]
xor eax, ebx
mov dword [esp + 0xc], ebx
mov ebx, ecx
add esi, ecx
adc edx, edi
shld ebx, edi, 0x11
shrd ecx, edi, 0xf
mov dword [esp + 4], esi
xor ebx, esi
xor ecx, edx
mov esi, dword [esp + 0xc]
add dword [esp], ebx
mov edi, ebx
adc esi, ecx
shld edi, ecx, 0xd
shrd ebx, ecx, 0x13
mov ecx, dword [esp + 4]
xor edi, dword [esp]
xor ebx, esi
add edx, dword [esp + 0x18]
mov dword [esp], eax
mov esi, edi
adc ecx, eax
mov dword [esp + 0x10], edx
add esi, edx
mov dword [esp + 4], ecx
mov dword [esp + 0xc], esi
mov esi, ebx
adc esi, ecx
mov ecx, dword [esp + 0x1c]
cmp dword [ecx + 0x48], 0
jne 0x528ee9
mov eax, dword [esp + 0x1c]
lea ecx, [eax + 0x40]
mov eax, dword [esp + 0x1c]
lea edx, [eax + 0x50]
call sym.hashbrown::raw::RawTable_LT_T_C_A_GT_::reserve_rehash::h875196273feb8daa
mov edx, dword [esp]
mov ecx, dword [esp + 0x18]
shld edi, ebx, 0x11
pcmpeqd xmm1, xmm1
mov dword [esp], 0
xor edi, esi
mov eax, edx
shld eax, ecx, 0x10
shld ecx, edx, 0x10
xor ecx, dword [esp + 0x10]
xor eax, dword [esp + 4]
mov dword [esp + 0x10], 0
shrd eax, ecx, 0xb
mov ecx, dword [esp + 0x1c]
xor edi, eax
xor edi, dword [esp + 0xc]
mov esi, dword [ecx + 0x40]
mov ebx, dword [ecx + 0x44]
mov eax, edi
shr eax, 0x19
movd xmm0, eax
mov dword [esp + 0x18], eax
lea eax, [esi - 0x10]
mov dword [esp + 0xc], esi
punpcklbw xmm0, xmm0
mov dword [esp + 4], eax
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
and edi, ebx
mov ecx, ebx
movdqu xmm2, xmmword [esi + edi]
movdqa xmm3, xmm2
pcmpeqb xmm3, xmm0
pmovmskb edx, xmm3
nop word [eax + eax]
test dx, dx
je 0x528fa0
tzcnt esi, edx
mov ebx, dword [esp + 4]
lea eax, [edx - 1]
add esi, edi
and eax, edx
and esi, ecx
mov edx, esi
shl edx, 4
sub ebx, edx
mov edx, dword [esp + 8]
cmp dword [ebx], edx
mov edx, eax
jne 0x528f70
jmp 0x528ff3
cmp dword [esp], 1
mov edx, 1
mov ebx, ecx
je 0x528fc4
pmovmskb eax, xmm2
xor edx, edx
test eax, eax
setne dl
tzcnt eax, eax
add eax, edi
and eax, ebx
mov dword [esp + 0x20], eax
mov dword [esp], edx
mov edx, dword [esp + 0x1c]
mov esi, dword [esp + 0xc]
pcmpeqb xmm2, xmm1
pmovmskb eax, xmm2
test eax, eax
jne 0x5290da
mov eax, dword [esp + 0x10]
lea edi, [edi + eax + 0x10]
add eax, 0x10
mov dword [esp + 0x10], eax
jmp 0x528f55
mov ecx, dword [esp + 0xc]
neg esi
movq xmm1, qword [esp + 0x28]
shl esi, 4
mov eax, dword [ecx + esi - 4]
mov dword [esp + 0xb8], eax
movsd xmm0, qword [ecx + esi - 0xc]
movsd qword [esp + 0xb0], xmm0
movq qword [ecx + esi - 0xc], xmm1
mov eax, dword [esp + 0x30]
mov dword [ecx + esi - 4], eax
mov esi, dword [esp + 0x14]
cmp dword [esp + 0xb0], 0
je 0x529044
lea ecx, [esp + 0xb0]
call sym.core::ptr::drop_in_place_LT_std..thread..JoinHandle_LT__LP__RP__GT__GT_::h75c1477cd505416c
xor ecx, ecx
mov al, 1
lock cmpxchg byte [esi], cl
jne 0x529146
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, str.RUST_MIN_STACKfatal_runtime_error:_assertion_failed:_thread_info.stack_guard.get__.is_none____thread_info.thread.get__.is_none___n
lea ecx, [esp + 0x28]
push 0xe
call dbg._var_os
add esp, 4
movzx eax, byte [esp + 0x34]
cmp al, 2
je 0x529264
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x28]
test al, al
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x30]
je 0x529152
test esi, esi
je 0x529264
test ecx, ecx
je 0x529242
movzx eax, byte [esi]
cmp eax, 0x2d
je 0x5291db
cmp eax, 0x2b
jne 0x5291e4
dec ecx
je 0x529242
lea edi, [esi + 1]
jmp 0x5291e6
mov ecx, ebx
call sym.parking_lot::raw_mutex::RawMutex::unlock_slow::h7a3bc9387d667bed
test edi, edi
jne 0x528784
jmp 0x529052
mov edi, dword [esp + 0x20]
movzx eax, byte [esi + edi]
test al, al
js 0x5290f6
movdqa xmm0, xmmword [esi]
pmovmskb eax, xmm0
tzcnt edi, eax
movzx eax, byte [esi + edi]
and al, 1
mov ecx, dword [esp + 8]
movzx eax, al
sub dword [edx + 0x48], eax
lea eax, [edi - 0x10]
and ebx, eax
mov eax, dword [esp + 0x18]
mov byte [esi + edi], al
mov byte [ebx + esi + 0x10], al
inc dword [edx + 0x4c]
shl edi, 4
mov edx, esi
sub edx, edi
neg edi
mov dword [edx - 0x10], ecx
movsd xmm0, qword [esp + 0x28]
movsd qword [esi + edi - 0xc], xmm0
mov esi, dword [esp + 0x14]
mov ecx, dword [esp + 0x30]
mov dword [edx - 4], ecx
xor ecx, ecx
mov al, 1
lock cmpxchg byte [esi], cl
je 0x529052
mov ecx, esi
call sym.parking_lot::raw_mutex::RawMutex::unlock_slow::h7a3bc9387d667bed
jmp 0x529052
test ecx, ecx
je 0x529242
lea eax, [esi + ecx]
mov edi, esi
jmp 0x529176
add edi, 2
cmp edx, eax
cmovne edx, edi
mov ebx, dword [esp]
cmp edx, eax
mov edi, edx
je 0x529092
movzx ebx, byte [edi]
lea edx, [edi + 1]
test bl, bl
jns 0x529169
cmp bl, 0xe0
jb 0x529161
cmp bl, 0xed
jne 0x5291ba
mov ebx, dword [esp]
cmp edx, eax
je 0x529092
lea edx, [edi + 2]
cmp edx, eax
je 0x529092
cmp byte [edi + 1], 0x9f
ja 0x52929d
add edi, 3
mov edx, edi
cmp edx, eax
mov edi, edx
jne 0x529176
jmp 0x529092
add edi, 2
cmp edx, eax
cmove edi, edx
xor edx, edx
cmp edi, eax
setne dl
add edx, edi
cmp bl, 0xf0
jb 0x529169
xor ebx, ebx
cmp edx, eax
setne bl
add edx, ebx
jmp 0x529169
cmp ecx, 1
mov edi, esi
jne 0x5291e6
jmp 0x529242
mov edi, esi
cmp ecx, 9
mov dword [esp + 0x10], esi
jae 0x529219
xor eax, eax
movzx esi, byte [edi]
add esi, 0xffffffd0
cmp esi, 9
ja 0x529283
lea edx, [eax + eax*4]
inc edi
dec ecx
lea eax, [esi + edx*2]
jne 0x5291f1
mov bl, 1
mov esi, dword [esp + 0x10]
cmp dword [esp + 4], 0
jne 0x52924b
jmp 0x52925d
xor eax, eax
mov ebx, 0xa
test ecx, ecx
je 0x529292
movzx esi, byte [edi]
mul ebx
seto dl
add esi, 0xffffffd0
cmp esi, 9
ja 0x529283
test dl, dl
jne 0x529283
inc edi
dec ecx
add eax, esi
mov esi, dword [esp + 0x10]
jae 0x529220
xor ebx, ebx
cmp dword [esp + 4], 0
je 0x52925d
push esi
push 0
push dword [0x5c6108]
mov esi, eax
call sub.KERNEL32.dll_HeapFree
mov eax, esi
test bl, bl
mov ebx, dword [esp]
jne 0x529269
mov eax, 0x200000
lea ecx, [eax + 1]
mov dword [0x5c60e4], ecx
test ebx, ebx
mov dword [esp + 4], eax
jne 0x5288eb
jmp 0x52892a
xor ebx, ebx
mov esi, dword [esp + 0x10]
cmp dword [esp + 4], 0
jne 0x52924b
jmp 0x52925d
mov bl, 1
cmp dword [esp + 4], 0
jne 0x52924b
jmp 0x52925d
cmp dword [esp + 4], 0
je 0x529264
push esi
push 0
push dword [0x5c6108]
call sub.KERNEL32.dll_HeapFree
jmp 0x529264
ud2
add ecx, edi
mov eax, dword [esp]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], ecx
mov edx, 0x2f
mov ecx, str.thread_name_may_not_contain_interior_null_bytes
push 0x5a5838
push 0x5a5858
lea eax, [esp + 0x30]
push eax
call dbg.unwrap_failed
add esp, 0xc
jmp 0x52978b
mov edi, dword [esp + 0x14]
mov edx, 0x27
mov ecx, str.assertion_failed:_prev.ref_count_____1
push 0x5a3e9c
call dbg.panic
add esp, 4
jmp 0x52978b
lea esi, [esp + 0x30]
mov ecx, 4
mov edx, 0x18
call dbg.handle_alloc_error
jmp 0x52978b
mov ecx, 8
mov edx, 0x40
call dbg.handle_alloc_error
jmp 0x52978b
mov ecx, 4
mov edx, 8
call dbg.handle_alloc_error
jmp 0x52978b
mov ebx, dword [esi + 4]
mov ecx, dword [esi]
mov eax, dword [ebx]
mov dword [esp + 4], ecx
push ecx
call eax
add esp, 4
cmp dword [ebx + 4], 0
je 0x529394
cmp dword [ebx + 8], 9
jb 0x529383
mov eax, dword [esp + 4]
mov eax, dword [eax - 4]
mov dword [esp + 4], eax
push dword [esp + 4]
push 0
push dword [0x5c6108]
call sub.KERNEL32.dll_HeapFree
push esi
push 0
push dword [0x5c6108]
call sub.KERNEL32.dll_HeapFree
call sub.KERNEL32.dll_GetLastError
lock dec dword [edi]
mov esi, eax
jne 0x5293b7
lea ecx, [esp + 0x24]
call sym.alloc::sync::Arc_LT_T_C_A_GT_::drop_slow::hf45fcc6ec92ce690
mov eax, dword [esp]
lock dec dword [eax]
jne 0x5293c7
mov ecx, dword [esp]
call dbg.drop_slow<std::thread::Inner, alloc::alloc::Global>
mov dword [esp + 0x2c], esi
mov dword [esp + 0x28], 0
mov edx, 0x2b
mov ecx, 0x5a4df6
push 0x5a40c0
push 0x5a3fbc
lea eax, [esp + 0x30]
push eax
call dbg.unwrap_failed
add esp, 0xc
jmp 0x52978b
mov edx, 0x46
mov ecx, str.cannot_access_a_Thread_Local_Storage_value_during_or_after_destruction_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_threadlocal.rs
push 0x5a0b78
push 0x59fe60
lea eax, [esp + 0x30]
push eax
call dbg.unwrap_failed
add esp, 0xc
jmp 0x52978b
add ecx, 8
xor edx, edx
call dbg.decrement_num_running_threads
mov dword [esp + 0x28], 0x5a0420
mov dword [esp + 0x2c], 1
mov dword [esp + 0x38], 0
mov dword [esp + 0x30], str.called__Option::unwrap____on_a__None__value_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_threadmod.rs
mov dword [esp + 0x34], 0
lea ecx, [esp + 0x28]
mov edx, 0x5a0448
call dbg.panic_fmt
jmp 0x52978b
mov edx, 0x2e
mov ecx, str.assertion_failed:_shared.shutdown_tx.is_some__
push 0x5a40b0
call dbg.panic
add esp, 4
jmp 0x52978b
ud2