Function at 0x47997a
Capabilities:
Create thread

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xb8
mov r13, r9
mov ebp, r8d
mov rbx, rdx
mov rdi, rcx
lea rsi, [rcx + 0x40]
mov cl, 1
xor eax, eax
lock cmpxchg byte [rdi + 0x40], cl
jne 0x479af1
cmp byte [rdi + 0xc4], 0
je 0x4799f9
lock sub qword [rbx], 0x40
jb 0x47a097
mov rax, qword [rbx + 0x10]
mov rcx, rbx
call qword [rax + 0x30]
xor ebx, ebx
xor ecx, ecx
mov al, 1
lock cmpxchg byte [rsi], cl
mov edi, 1
jne 0x47a012
mov rax, rdi
mov rdx, rbx
add rsp, 0xb8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, qword [rdi + 0x48]
mov rax, qword [rdi + 0x60]
cmp rax, rcx
jne 0x479a17
lea rcx, [rdi + 0x48]
call fcn.0047900b
mov rcx, qword [rdi + 0x48]
mov rax, qword [rdi + 0x60]
mov rdx, qword [rdi + 0x58]
add rdx, rax
xor r8d, r8d
cmp rdx, rcx
cmovae r8, rcx
sub rdx, r8
mov rcx, qword [rdi + 0x50]
shl rdx, 4
mov qword [rcx + rdx], rbx
mov byte [rcx + rdx + 8], bpl
inc rax
mov qword [rdi + 0x60], rax
lock inc qword [rdi + 0x108]
mov rax, qword [rdi + 0x100]
test rax, rax
je 0x479a89
lock dec qword [rdi + 0x100]
inc dword [rdi + 0xc0]
mov rdx, qword [rdi + 0xc8]
test rdx, rdx
je 0x47a003
add rdi, 0xc8
mov rcx, rdi
call fcn.0043db8d
jmp 0x47a003
mov rax, qword [rdi + 0xf8]
cmp rax, qword [rdi + 0xf0]
je 0x47a003
mov r14, qword [rdi + 0x98]
test r14, r14
je 0x47a0af
lock inc qword [r14]
jle 0x47a0f4
mov rbx, qword [rdi + 0xb8]
mov rax, qword [rdi + 0x30]
mov r8, qword [rdi + 0x38]
mov rcx, qword [r8 + 0x10]
dec rcx
and rcx, 0xfffffffffffffff0
lea rdx, [rcx + rax]
add rdx, 0x10
lea rcx, [rsp + 0x60]
call qword [r8 + 0x28]
mov rax, qword [rdi + 0x10]
test rax, rax
je 0x479afe
mov rdx, qword [rdi + 0x18]
jmp 0x479afe
mov rcx, rsi
call fcn.0043ebd0
jmp 0x4799ac
mov rbp, qword [rsp + 0x60]
mov r12, qword [rsp + 0x68]
mov r15, qword [rsp + 0x70]
cmp qword [r13], 0
mov qword [rsp + 0xb0], r14
je 0x479b3a
mov rcx, qword [r13 + 8]
mov qword [rsp + 0x58], rcx
lock inc qword [rcx]
mov ecx, 1
mov qword [rsp + 0x50], rcx
jg 0x479b54
jmp 0x47a0f4
mov rcx, qword [r13 + 8]
mov qword [rsp + 0x58], rcx
lock inc qword [rcx]
jle 0x47a0f4
xor ecx, ecx
mov qword [rsp + 0x50], rcx
movabs r14, 0x8000000000000001
test rax, rax
jne 0x479c40
mov rdx, qword [0x004a30b8]
test rdx, rdx
je 0x479b7b
dec rdx
jmp 0x479c40
lea rdx, str.RUST_MIN_STACKfatal_runtime_error:_assertion_failed:_thread_info.stack_guard.get__.is_none____thread_info.thread.get__.is_none___n
lea r13, [rsp + 0x60]
mov r8d, 0xe
mov rcx, r13
call fcn.004695b0
mov r13, qword [r13]
lea rax, [r14 - 1]
cmp r13, rax
je 0x479c30
mov rdx, qword [rsp + 0x68]
mov r8, qword [rsp + 0x70]
lea rcx, [rsp + 0x90]
mov qword [rsp + 0xa8], rdx
call fcn.0042c5f0
lea rax, [rsp + 0x90]
cmp qword [rax], 0
je 0x479bd7
xor eax, eax
jmp 0x479c00
lea rcx, [rsp + 0x90]
mov rdx, qword [rcx + 8]
mov r8, qword [rcx + 0x10]
call fcn.0042ff00
xor eax, eax
lea rcx, [rsp + 0x90]
cmp byte [rcx], 0
sete al
mov rdx, qword [rcx + 8]
test r13, r13
je 0x479c2b
mov rcx, qword [0x004a30e8]
mov qword [rsp + 0x30], rdx
xor edx, edx
mov r8, qword [rsp + 0xa8]
mov r13, rax
call sub.KERNEL32.dll_HeapFree
mov rax, r13
mov rdx, qword [rsp + 0x30]
test rax, rax
jne 0x479c35
mov edx, 0x200000
lea rax, [rdx + 1]
mov qword [0x004a30b8], rax
dec r14
cmp rbp, r14
mov qword [rsp + 0x30], rdx
jne 0x479c51
xor ecx, ecx
jmp 0x479caf
cmp r15, 0x10
jae 0x479c74
test r15, r15
je 0x479c83
xor eax, eax
xor edx, edx
cmp byte [r12 + rdx], 0
je 0x479c89
inc rdx
cmp r15, rdx
jne 0x479c60
mov rdx, r15
jmp 0x479c8e
xor ecx, ecx
mov rdx, r12
mov r8, r15
call fcn.0042eaf0
jmp 0x479c8e
xor edx, edx
xor eax, eax
jmp 0x479c8e
mov eax, 1
test rax, rax
jne 0x47a138
lea rcx, [rsp + 0x60]
mov qword [rcx], rbp
mov qword [rcx + 8], r12
mov qword [rcx + 0x10], r15
call fcn.00428b90
mov rcx, rax
call fcn.0044a270
lock inc qword [rax]
jle 0x47a0f4
mov r15, rax
mov al, byte [0x004a3120]
mov edx, 0x30
xor ecx, ecx
call fcn.0046e140
test rax, rax
je 0x47a0c7
mov r12, rax
mov eax, 1
mov qword [r12], rax
mov qword [r12 + 8], rax
pxor xmm0, xmm0
movdqu xmmword [r12 + 0x10], xmm0
mov qword [rsp + 0x90], r12
lock inc qword [r12]
jle 0x47a0f4
xor ecx, ecx
call fcn.0046ca10
mov r13, rax
test rax, rax
je 0x479d2a
lock inc qword [r13]
jle 0x47a0f4
mov rcx, r13
jmp 0x479d2c
xor ecx, ecx
call fcn.0046ca10
test rax, rax
je 0x479d44
lock dec qword [rax]
jne 0x479d44
mov rcx, rax
call fcn.00478aa9
mov r14, qword [rsp + 0x90]
mov rcx, qword [r14 + 0x10]
test rcx, rcx
je 0x479d60
lock inc qword [rcx + 0x18]
jle 0x47a0f6
mov al, byte [0x004a3120]
mov edx, 0x38
xor ecx, ecx
call fcn.0046e140
test rax, rax
je 0x47a0d6
mov rbp, rax
mov qword [rax], r15
mov qword [rax + 8], r12
mov qword [rax + 0x10], r13
mov rax, qword [rsp + 0x50]
mov qword [rbp + 0x18], rax
mov rax, qword [rsp + 0x58]
mov qword [rbp + 0x20], rax
mov rax, qword [rsp + 0xb0]
mov qword [rbp + 0x28], rax
mov qword [rbp + 0x30], rbx
mov al, byte [0x004a3120]
mov edx, 0x10
xor ecx, ecx
call fcn.0046e140
test rax, rax
je 0x47a0e5
mov r12, rax
mov qword [rax], rbp
lea rax, [0x00495818]
mov qword [r12 + 8], rax
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0x10000
lea r8, [0x0046db30]
xor ecx, ecx
mov rdx, qword [rsp + 0x30]
mov r9, r12
call sub.KERNEL32.dll_CreateThread
test rax, rax
je 0x479f57
mov qword [rsp + 0x40], r14
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x38], r15
lock inc qword [rdi + 0xf8]
inc qword [rdi + 0xb8]
mov r15, qword [rdi + 0x88]
mov r12, qword [rdi + 0x90]
mov rcx, r15
mov rdx, r12
mov r8, rbx
call fcn.0047497d
mov r14, rax
cmp qword [rdi + 0x78], 0
je 0x47a01f
mov rax, qword [rdi + 0x68]
mov rcx, qword [rdi + 0x70]
mov r8, rcx
and r8, r14
shr r14, 0x39
movd xmm0, r14d
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
lea r9, [rax - 0x20]
xor r10d, r10d
pcmpeqd xmm1, xmm1
xor r11d, r11d
movdqu xmm2, xmmword [rax + r8]
movdqa xmm3, xmm2
pcmpeqb xmm3, xmm0
pmovmskb r12d, xmm3
test r12w, r12w
je 0x479ec6
bsf r15d, r12d
lea ebp, [r12 - 1]
and ebp, r12d
add r15, r8
and r15, rcx
mov r12, r15
shl r12, 5
mov r13, r9
sub r13, r12
mov r12d, ebp
cmp qword [r13], rbx
jne 0x479e96
jmp 0x479f0b
cmp r11, 1
mov r11d, 1
je 0x479ee8
pmovmskb edx, xmm2
xor r11d, r11d
test edx, edx
setne r11b
bsf edx, edx
add rdx, r8
and rdx, rcx
pcmpeqb xmm2, xmm1
pmovmskb ebp, xmm2
test ebp, ebp
jne 0x47a033
add r8, r10
add r8, 0x10
add r10, 0x10
and r8, rcx
jmp 0x479e83
neg r15
shl r15, 5
mov rcx, qword [rax + r15 - 8]
mov qword [rsp + 0x70], rcx
movups xmm0, xmmword [rax + r15 - 0x18]
movaps xmmword [rsp + 0x60], xmm0
mov rcx, qword [rsp + 0x48]
mov qword [rax + r15 - 8], rcx
movups xmm0, xmmword [rsp + 0x38]
movups xmmword [rax + r15 - 0x18], xmm0
cmp qword [rsp + 0x60], 0
je 0x47a003
lea rcx, [rsp + 0x60]
call fcn.00472f7a
jmp 0x47a003
mov rbx, qword [r12]
mov r13, qword [r12 + 8]
mov rcx, rbx
call qword [r13]
cmp qword [r13 + 8], 0
je 0x479f8a
cmp qword [r13 + 0x10], 0x11
jb 0x479f79
mov rbx, qword [rbx - 8]
mov rcx, qword [0x004a30e8]
xor edx, edx
mov r8, rbx
call sub.KERNEL32.dll_HeapFree
mov rcx, qword [0x004a30e8]
xor edx, edx
mov r8, r12
call sub.KERNEL32.dll_HeapFree
call sub.KERNEL32.dll_GetLastError
mov ebx, eax
shl rbx, 0x20
lock dec qword [r14]
jne 0x479fb9
lea rcx, [rsp + 0x90]
call fcn.00473153
or rbx, 2
lock dec qword [r15]
jne 0x479fcb
mov rcx, r15
call fcn.004730ff
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x38], 0
mov rcx, rbx
call fcn.00473bb1
cmp al, 0xd
jne 0x4799cc
mov rax, qword [rdi + 0xf8]
test rax, rax
je 0x4799cc
lea rcx, [rsp + 0x40]
call fcn.00405604
xor edi, edi
mov al, 1
lock cmpxchg byte [rsi], dil
je 0x4799df
mov rcx, rsi
call fcn.0043e8fc
jmp 0x4799df
lea rcx, [rdi + 0x68]
mov rdx, r15
mov r8, r12
call fcn.00479320
jmp 0x479e50
mov r8b, byte [rax + rdx]
test r8b, r8b
js 0x47a04b
movdqa xmm0, xmmword [rax]
pmovmskb edx, xmm0
bsf edx, edx
mov r8b, byte [rax + rdx]
and r8b, 1
movzx r8d, r8b
sub qword [rdi + 0x78], r8
lea r8, [rdx - 0x10]
and r8, rcx
mov byte [rax + rdx], r14b
mov byte [r8 + rax + 0x10], r14b
inc qword [rdi + 0x80]
shl rdx, 5
mov rcx, rax
sub rcx, rdx
mov qword [rcx - 0x20], rbx
neg rdx
movups xmm0, xmmword [rsp + 0x38]
movups xmmword [rax + rdx - 0x18], xmm0
mov rax, qword [rsp + 0x48]
mov qword [rcx - 8], rax
jmp 0x47a003
lea rcx, str.assertion_failed:_prev.ref_count_____1
lea r8, [0x004980c8]
mov edx, 0x27
call fcn.0042b9e0
lea rcx, str.assertion_failed:_shared.shutdown_tx.is_some___cargo_registry_src_index.crates.io_6f17d22bba15001f_tokio_1.35.1_src_runtime_blocking_pool.rs
lea r8, [0x00498288]
mov edx, 0x2e
call fcn.0042b9e0
mov ecx, 8
mov edx, 0x30
call fcn.004289f0
mov ecx, 8
mov edx, 0x38
call fcn.004289f0
mov ecx, 8
mov edx, 0x10
call fcn.004289f0
ud2
add rcx, 0x10
xor edx, edx
call fcn.0044d050
lea rax, str.too_many_running_threads_in_thread_scope_0I
lea rcx, [rsp + 0x60]
mov qword [rcx], rax
mov qword [rcx + 8], 1
lea rax, str.Index_out_of_bounds
mov qword [rcx + 0x10], rax
pxor xmm0, xmm0
movdqu xmmword [rcx + 0x18], xmm0
lea rdx, str.library_std_src_thread_scoped.rsX0I
call fcn.0042ab70
lea r8, [rsp + 0x60]
mov qword [r8], rbp
mov qword [r8 + 8], r12
mov qword [r8 + 0x10], r15
mov qword [r8 + 0x18], rdx
lea rax, str._rustc_aedd173a2c086e558c2b66d3743b344f977621a7library_std_src_threadmod.rs
mov qword [rsp + 0x20], rax
lea rcx, str.thread_name_may_not_contain_interior_null_bytes
lea r9, [0x00495a78]
mov edx, 0x2f
call fcn.0042cc80
mov rsi, rax
cmp qword [r13 + 8], 0
je 0x47a196
cmp qword [r13 + 0x10], 0x11
jb 0x47a185
mov rbx, qword [rbx - 8]
mov rcx, qword [0x004a30e8]
xor edx, edx
mov r8, rbx
call sub.KERNEL32.dll_HeapFree
mov rcx, qword [0x004a30e8]
xor edx, edx
mov r8, r12
call sub.KERNEL32.dll_HeapFree
jmp 0x47a1bb
mov rcx, rsi
call fcn.00482610
call fcn.0042d350
int3