Function at 0x140196090
Capabilities:
Create thread

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x118
mov r14, r8
mov rbx, rdx
mov rdi, rcx
lea rsi, [rcx + 0x40]
mov cl, 1
xor eax, eax
lock cmpxchg byte [rdi + 0x40], cl
je 0x1401960c3
mov rcx, rsi
call fcn.140073440
cmp byte [rdi + 0xc4], 0
je 0x14019610d
lock sub qword [rbx], 0x40
jb 0x1401968dc
mov rax, qword [rbx + 0x10]
mov rcx, rbx
call qword [rax + 0x30]
xor edx, edx
xor ecx, ecx
mov al, 1
lock cmpxchg byte [rsi], cl
mov edi, 1
jne 0x140196845
mov rax, rdi
add rsp, 0x118
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 0x14019612b
lea rcx, [rdi + 0x48]
call fcn.140196dd0
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], 1
inc rax
mov qword [rdi + 0x60], rax
lock inc qword [rdi + 0x108]
mov rax, qword [rdi + 0x100]
test rax, rax
je 0x14019619d
lock dec qword [rdi + 0x100]
inc dword [rdi + 0xc0]
mov rdx, qword [rdi + 0xc8]
test rdx, rdx
je 0x140196836
add rdi, 0xc8
mov rcx, rdi
call fcn.140072090
jmp 0x140196836
mov rax, qword [rdi + 0xf8]
cmp rax, qword [rdi + 0xf0]
je 0x140196836
mov r12, qword [rdi + 0x98]
test r12, r12
je 0x1401968f9
lock inc qword [r12]
jle 0x140196a09
mov rbx, qword [rdi + 0xb8]
mov r13, qword [r14]
mov rbp, qword [r14 + 8]
mov qword [rsp + 0xf0], r12
mov rax, qword [rdi + 0x30]
mov r8, qword [rdi + 0x38]
mov rcx, qword [r8 + 0x10]
dec rcx
and rcx, 0xfffffffffffffff0
lea rdx, [rax + rcx]
add rdx, 0x10
lea rcx, [rsp + 0x90]
call qword [r8 + 0x28]
mov rax, qword [rdi + 0x10]
test rax, rax
je 0x140196218
mov r8, qword [rdi + 0x18]
jmp 0x140196218
mov rcx, qword [rsp + 0x90]
mov qword [rsp + 0x88], rcx
mov r14, qword [rsp + 0x98]
mov r15, qword [rsp + 0xa0]
mov ecx, 1
mov edx, 1
lock xadd qword [rbp], rdx
test r13, r13
je 0x140196257
test rdx, rdx
jns 0x140196262
jmp 0x140196a09
test rdx, rdx
js 0x140196a09
xor ecx, ecx
movabs r13, 0x8000000000000001
mov qword [rsp + 0xf8], rcx
mov qword [rsp + 0x100], rbp
mov qword [rsp + 0x110], rbx
mov qword [rsp + 0x108], r12
mov qword [rsp + 0x68], 0
test rax, rax
mov r12, r8
jne 0x140196374
mov r12, qword [0x1402f31a0]
test r12, r12
je 0x1401962b5
dec r12
jmp 0x140196374
lea rdx, str.RUST_MIN_STACK_rustc_129f3b9964af4d4a709d1383930ade12dfe7c081librarycore_src_slice_sort.rs
lea rcx, [rsp + 0x38]
mov r8d, 0xe
call fcn.14018ade0
mov r12, qword [rsp + 0x38]
lea rax, [r13 - 1]
cmp r12, rax
jne 0x1401962e5
mov r12d, 0x200000
jmp 0x140196368
mov rdx, qword [rsp + 0x40]
mov r8, qword [rsp + 0x48]
lea rcx, [rsp + 0xd0]
mov qword [rsp + 0xe8], rdx
call fcn.140032750
cmp qword [rsp + 0xd0], 0
je 0x140196316
mov ebp, 0x200000
jmp 0x14019634a
mov rdx, qword [rsp + 0xd8]
mov r8, qword [rsp + 0xe0]
lea rcx, [rsp + 0xd0]
call fcn.140037740
cmp byte [rsp + 0xd0], 0
mov ebp, 0x200000
jne 0x14019634a
mov rbp, qword [rsp + 0xd8]
test r12, r12
je 0x140196365
mov rcx, qword [0x1402f3170]
xor edx, edx
mov r8, qword [rsp + 0xe8]
call fcn.1401d7c44
mov r12, rbp
lea rax, [r12 + 1]
mov qword [0x1402f31a0], rax
dec r13
mov rax, qword [rsp + 0x88]
cmp rax, r13
jne 0x140196399
mov qword [rsp + 0x38], 2
lea rcx, [rsp + 0x38]
call fcn.14016ad50
jmp 0x140196418
mov r13, rax
cmp r15, 0x10
jae 0x1401963bf
test r15, r15
je 0x1401963ce
xor eax, eax
xor edx, edx
cmp byte [r14 + rdx], 0
je 0x1401963d4
inc rdx
cmp r15, rdx
jne 0x1401963ab
mov rdx, r15
jmp 0x1401963d9
xor ecx, ecx
mov rdx, r14
mov r8, r15
call fcn.1400363b0
jmp 0x1401963d9
xor edx, edx
xor eax, eax
jmp 0x1401963d9
mov eax, 1
test rax, rax
jne 0x1401969cc
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x40], r14
mov qword [rsp + 0x48], r15
lea rcx, [rsp + 0x38]
call fcn.1400240e0
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x48], rdx
mov qword [rsp + 0x38], 1
lea rcx, [rsp + 0x38]
call fcn.14016ad50
mov r14, rax
lock inc qword [rax]
jle 0x140196a09
mov rax, qword [rsp + 0x68]
mov qword [rsp + 0x38], 1
mov qword [rsp + 0x40], 1
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x50], 0
movzx eax, byte [0x1402f31d1]
mov edx, 0x30
xor ecx, ecx
call fcn.14018e330
test rax, rax
je 0x140196916
mov r15, rax
movdqu xmm0, xmmword [rsp + 0x38]
movdqu xmm1, xmmword [rsp + 0x48]
movdqu xmm2, xmmword [rsp + 0x58]
movdqu xmmword [rax + 0x20], xmm2
movdqu xmmword [rax + 0x10], xmm1
movdqu xmmword [rax], xmm0
lock inc qword [rax]
jle 0x140196a09
movzx eax, byte [0x1402f30f8]
test al, al
je 0x1401964d1
mov byte [0x1402f30f8], 1
call fcn.14018ca50
test rax, rax
je 0x140196996
mov r13, qword [rax]
mov qword [rax], 0
test r13, r13
je 0x1401964d1
lock inc qword [r13]
jle 0x140196a09
xor ebp, ebp
jmp 0x1401964e2
movzx eax, byte [0x1402f30f8]
mov bpl, 1
xor r13d, r13d
test al, al
je 0x14019650d
mov byte [0x1402f30f8], 1
call fcn.14018ca50
test rax, rax
je 0x140196957
mov rcx, qword [rax]
mov qword [rax], r13
test rcx, rcx
je 0x14019650d
lock dec qword [rcx]
jne 0x14019650d
call fcn.140196eb0
mov qword [rsp + 0x90], r14
mov qword [rsp + 0xa0], r13
movdqu xmm0, xmmword [rsp + 0xf8]
movdqu xmm1, xmmword [rsp + 0x108]
movdqu xmmword [rsp + 0xb8], xmm1
movdqu xmmword [rsp + 0xa8], xmm0
mov qword [rsp + 0x98], r15
mov rcx, qword [r15 + 0x10]
test rcx, rcx
je 0x14019655d
lock inc qword [rcx + 0x18]
jle 0x1401969c1
movzx eax, byte [0x1402f31d1]
mov edx, 0x38
xor ecx, ecx
call fcn.14018e330
test rax, rax
je 0x14019692f
mov rbp, rax
mov rax, qword [rsp + 0xc0]
mov qword [rbp + 0x30], rax
movdqu xmm0, xmmword [rsp + 0x90]
movdqu xmm1, xmmword [rsp + 0xa0]
movdqu xmm2, xmmword [rsp + 0xb0]
movdqu xmmword [rbp + 0x20], xmm2
movdqu xmmword [rbp + 0x10], xmm1
movdqu xmmword [rbp], xmm0
movzx eax, byte [0x1402f31d1]
mov edx, 0x10
xor ecx, ecx
call fcn.14018e330
test rax, rax
je 0x140196943
mov r13, rax
mov qword [rax], rbp
lea rax, fcn.140196f00
mov qword [r13 + 8], rax
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0x10000
lea r8, [0x14018e1c0]
xor ecx, ecx
mov rdx, r12
mov r9, r13
call sub.kernel32.dll_CreateThread
test rax, rax
je 0x140196782
mov qword [rsp + 0x70], r14
mov qword [rsp + 0x78], r15
mov qword [rsp + 0x80], rax
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.140197010
mov r14, rax
cmp qword [rdi + 0x78], 0
jne 0x140196663
lea rcx, [rdi + 0x68]
mov rdx, r15
mov r8, r12
call fcn.140197190
mov rax, qword [rdi + 0x68]
mov rdx, qword [rdi + 0x70]
mov rcx, r14
shr rcx, 0x39
movd xmm0, ecx
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
lea r9, [rax - 0x20]
xor r10d, r10d
pcmpeqd xmm1, xmm1
xor r11d, r11d
and r14, rdx
movdqu xmm2, xmmword [rax + r14]
movdqa xmm3, xmm2
pcmpeqb xmm3, xmm0
pmovmskb r12d, xmm3
nop dword [rax + rax]
test r12w, r12w
je 0x1401966e1
tzcnt r15d, r12d
lea ebp, [r12 - 1]
and ebp, r12d
add r15, r14
and r15, rdx
mov r12, r15
shl r12, 5
mov r13, r9
sub r13, r12
mov r12d, ebp
cmp qword [r13], rbx
jne 0x1401966b0
jmp 0x140196727
cmp r11, 1
mov r11d, 1
je 0x140196707
pmovmskb r8d, xmm2
xor r11d, r11d
test r8d, r8d
setne r11b
tzcnt r8d, r8d
add r8, r14
and r8, rdx
pcmpeqb xmm2, xmm1
pmovmskb ebp, xmm2
test ebp, ebp
jne 0x140196860
add r14, r10
add r14, 0x10
add r10, 0x10
jmp 0x140196692
neg r15
shl r15, 5
mov rcx, qword [rax + r15 - 8]
mov qword [rsp + 0xa0], rcx
movups xmm0, xmmword [rax + r15 - 0x18]
movaps xmmword [rsp + 0x90], xmm0
mov rcx, qword [rsp + 0x80]
mov qword [rax + r15 - 8], rcx
movups xmm0, xmmword [rsp + 0x70]
movups xmmword [rax + r15 - 0x18], xmm0
cmp qword [rsp + 0x90], 0
je 0x140196836
lea rcx, [rsp + 0x90]
call fcn.140194610
jmp 0x140196836
mov rbx, qword [r13]
mov r12, qword [r13 + 8]
mov rcx, rbx
call qword [r12]
cmp qword [r12 + 8], 0
je 0x1401967b6
cmp qword [r12 + 0x10], 0x11
jb 0x1401967a5
mov rbx, qword [rbx - 8]
mov rcx, qword [0x1402f3170]
xor edx, edx
mov r8, rbx
call fcn.1401d7c44
mov rcx, qword [0x1402f3170]
xor edx, edx
mov r8, r13
call fcn.1401d7c44
call sub.kernel32.dll_GetLastError
lock dec qword [r15]
jne 0x1401967e0
mov rcx, r15
mov rbx, rax
call fcn.140194770
mov rax, rbx
shl rax, 0x20
or rax, 2
lock dec qword [r14]
jne 0x1401967fc
mov rcx, r14
mov rbx, rax
call fcn.140051f30
mov rax, rbx
mov qword [rsp + 0x78], rax
mov qword [rsp + 0x70], 0
mov rbx, rax
mov rcx, rax
call fcn.1400761f0
cmp al, 0xd
jne 0x140196858
mov rax, qword [rdi + 0xf8]
test rax, rax
mov rdx, rbx
je 0x1401960e3
lea rcx, [rsp + 0x78]
call fcn.140193810
xor edi, edi
mov al, 1
lock cmpxchg byte [rsi], dil
je 0x1401960f6
mov rcx, rsi
mov rsi, rdx
call fcn.140073130
mov rdx, rsi
jmp 0x1401960f6
mov rdx, rbx
jmp 0x1401960e3
movzx r9d, byte [rax + r8]
test r9b, r9b
js 0x14019687d
movdqa xmm0, xmmword [rax]
pmovmskb r8d, xmm0
tzcnt r8d, r8d
movzx r9d, byte [rax + r8]
and r9b, 1
movzx r9d, r9b
sub qword [rdi + 0x78], r9
lea r9, [r8 - 0x10]
and r9, rdx
mov byte [rax + r8], cl
mov byte [rax + r9 + 0x10], cl
inc qword [rdi + 0x80]
shl r8, 5
mov rcx, rax
sub rcx, r8
mov qword [rcx - 0x20], rbx
neg r8
movups xmm0, xmmword [rsp + 0x70]
movups xmmword [rax + r8 - 0x18], xmm0
mov rax, qword [rsp + 0x80]
mov qword [rcx - 8], rax
xor edi, edi
mov al, 1
lock cmpxchg byte [rsi], dil
je 0x1401960f6
jmp 0x140196845
lea rcx, str.assertion_failed:_prev.ref_count_____1
lea r8, [0x140271968]
mov edx, 0x27
call fcn.14002e2c0
jmp 0x140196a09
lea rcx, str.assertion_failed:_shared.shutdown_tx.is_some___home_rifat_.cargo_registry_src_index.crates.io_6f17d22bba15001f_tokio_1.38.0_src_runtime_blocking_pool.rs
lea r8, [0x140271b30]
mov edx, 0x2e
call fcn.14002e2c0
jmp 0x140196a09
lea rbx, [rsp + 0x48]
mov ecx, 8
mov edx, 0x30
call fcn.140023f30
jmp 0x140196a09
mov ecx, 8
mov edx, 0x38
call fcn.140023f30
jmp 0x140196a09
mov ecx, 8
mov edx, 0x10
call fcn.140023f30
jmp 0x140196a09
test bpl, bpl
jne 0x14019696b
lock dec qword [r13]
jne 0x14019696b
mov rcx, r13
call fcn.14018cbc0
lea rax, str.library_std_srcio_stdio.rs
mov qword [rsp + 0x20], rax
lea rcx, str.cannot_access_a_Thread_Local_Storage_value_during_or_after_destruction_rustc_129f3b9964af4d4a709d1383930ade12dfe7c081library_std_src_threadlocal.rs
lea r9, [0x14026bfa8]
lea r8, [rsp + 0x38]
mov edx, 0x46
call fcn.140033850
jmp 0x140196a09
lea rax, str.library_std_srcio_stdio.rs
mov qword [rsp + 0x20], rax
lea rcx, str.cannot_access_a_Thread_Local_Storage_value_during_or_after_destruction_rustc_129f3b9964af4d4a709d1383930ade12dfe7c081library_std_src_threadlocal.rs
lea r9, [0x14026bfa8]
lea r8, [rsp + 0x38]
mov edx, 0x46
call fcn.140033850
jmp 0x140196a09
add rcx, 0x10
call fcn.14016e9b0
jmp 0x140196a09
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x40], r14
mov qword [rsp + 0x48], r15
mov qword [rsp + 0x50], rdx
lea rax, str._rustc_129f3b9964af4d4a709d1383930ade12dfe7c081library_std_src_threadmod.rs
mov qword [rsp + 0x20], rax
lea rcx, str.thread_name_may_not_contain_interior_null_bytes
lea r9, [0x14026f2a8]
lea r8, [rsp + 0x38]
mov edx, 0x2f
call fcn.140033850
ud2