Function at 0x14005c471
Capabilities:
Manipulate console buffer

Disassembly:
push r14
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x50
mov rsi, rcx
test dl, dl
je 0x14005c4e1
cmp qword [rsi + 0x10], 0
je 0x14005c563
lea rdi, [rsi + 0x18]
mov rcx, rdi
call sub.KERNEL32.dll_AcquireSRWLockExclusive
mov rax, qword [0x1401d01d8]
shl rax, 1
test rax, rax
jne 0x14005c7bd
xor ebx, ebx
mov al, byte [rsi + 0x20]
test al, al
jne 0x14005c7cc
add rsi, 0x28
lea rdx, str._re_2J_re_Hmsys_cygwin__pty
mov r8d, 9
mov rcx, rsi
call sym.alloc::vec::Vec_T_A_::extend_from_slice::h075114fb45e82953
mov rcx, rdi
mov edx, ebx
call sym.core::ptr::drop_in_place_std::sync::mutex::MutexGuard_alloc::vec::Vec_u8___::h0f5f256c21a6aab4
jmp 0x14005c7ad
mov rcx, rsi
call sym.__console::term::Term_as_std::os::windows::io::raw::AsRawHandle_::as_raw_handle::h71390f981c2ad8b0
mov rdi, rax
xorps xmm0, xmm0
lea rbx, [rsp + 0x30]
movaps xmmword [rbx], xmm0
and qword [rbx + 0xe], 0
mov rcx, rax
mov rdx, rbx
call sub.KERNEL32.dll_GetConsoleScreenBufferInfo
test eax, eax
je 0x14005c7ad
movsx eax, word [rsp + 0x30]
movsx ebp, word [rsp + 0x32]
imul ebp, eax
movzx r14d, word [rsp + 0x38]
and dword [rsp + 0x30], 0
mov qword [rsp + 0x20], rbx
xor esi, esi
mov rcx, rdi
mov dl, 0x20
mov r8d, ebp
xor r9d, r9d
call sub.KERNEL32.dll_FillConsoleOutputCharacterA
mov qword [rsp + 0x20], rbx
mov rcx, rdi
mov edx, r14d
mov r8d, ebp
xor r9d, r9d
call sub.KERNEL32.dll_FillConsoleOutputAttribute
mov rcx, rdi
xor edx, edx
call sub.KERNEL32.dll_SetConsoleCursorPosition
jmp 0x14005c7af
cmp byte [rsi + 0x78], 0
je 0x14005c595
call sym.std::sync::remutex::current_thread_unique_ptr::X::__getit::hd5fc83030eb2ad02
test rax, rax
je 0x14005c7fc
mov rsi, rax
mov rax, qword [0x1401d01f8]
cmp rax, rsi
jne 0x14005c5ce
mov eax, dword [0x1401d0200]
inc eax
jne 0x14005c5e6
jmp 0x14005c833
call sym.std::io::stdio::stdout::he55ed5919cde0f48
call sym.std::sync::remutex::current_thread_unique_ptr::X::__getit::hd5fc83030eb2ad02
test rax, rax
je 0x14005c7fc
mov rsi, rax
mov rax, qword [0x1401d0108]
cmp rax, rsi
jne 0x14005c6dd
mov eax, dword [0x1401d0138]
inc eax
jne 0x14005c6f5
jmp 0x14005c833
lea rcx, [0x1401d01f0]
call sub.KERNEL32.dll_AcquireSRWLockExclusive
mov qword [0x1401d01f8], rsi
mov eax, 1
mov dword [0x1401d0200], eax
cmp qword [0x1401d01e0], 0
jne 0x14005c825
or qword [0x1401d01e0], 0xffffffffffffffff
lea rcx, [0x1401d01e8]
lea rdx, str._re_2J_re_Hmsys_cygwin__pty
mov r8d, 9
call dbg.write_all<std::sys::windows::stdio::Stderr>
mov rsi, rax
mov qword [rsp + 0x30], rax
test rax, rax
je 0x14005c64e
mov eax, esi
and eax, 3
cmp rax, 2
jb 0x14005c650
cmp eax, 2
jne 0x14005c650
mov rax, rsi
shr rax, 0x20
cmp eax, 6
jne 0x14005c650
lea rcx, [rsp + 0x30]
call dbg.drop_in_place<std::io::error::Error>
xor esi, esi
inc qword [0x1401d01e0]
dec dword [0x1401d0200]
jne 0x14005c676
mov qword [0x1401d01f8], 0
lea rcx, [0x1401d01f0]
call fcn.140134d34
test rsi, rsi
jne 0x14005c7af
call sym.std::sync::remutex::current_thread_unique_ptr::X::__getit::hd5fc83030eb2ad02
test rax, rax
je 0x14005c7fc
mov rsi, rax
mov rax, qword [0x1401d01f8]
cmp rax, rsi
jne 0x14005c75c
mov eax, dword [0x1401d0200]
inc eax
je 0x14005c833
mov dword [0x1401d0200], eax
cmp qword [0x1401d01e0], 0
jne 0x14005c84b
and qword [0x1401d01e0], 0
dec eax
mov dword [0x1401d0200], eax
jne 0x14005c7ad
jmp 0x14005c796
lea rcx, [0x1401d0100]
call sub.KERNEL32.dll_AcquireSRWLockExclusive
mov qword [0x1401d0108], rsi
mov eax, 1
mov dword [0x1401d0138], eax
lea rdi, [0x1401d0100]
lea rdx, str._re_2J_re_Hmsys_cygwin__pty
mov r8d, 9
mov rcx, rdi
call dbg.write_all
mov rsi, rax
dec dword [0x1401d0138]
jne 0x14005c739
mov qword [0x1401d0108], 0
lea rcx, [0x1401d0100]
call fcn.140134d34
test rsi, rsi
jne 0x14005c7af
call sym.std::io::stdio::stdout::he55ed5919cde0f48
lea rax, [0x1401d0100]
lea rcx, [rsp + 0x30]
mov qword [rcx], rax
call sym.__std::io::stdio::Stdout_as_std::io::Write_::flush::h86cf86a8b19f7693
mov rsi, rax
jmp 0x14005c7af
lea rcx, [0x1401d01f0]
call sub.KERNEL32.dll_AcquireSRWLockExclusive
mov qword [0x1401d01f8], rsi
mov dword [0x1401d0200], 1
cmp qword [0x1401d01e0], 0
jne 0x14005c84b
and qword [0x1401d01e0], 0
and dword [0x1401d0200], 0
mov qword [0x1401d01f8], 0
lea rcx, [0x1401d01f0]
call fcn.140134d34
xor esi, esi
mov rax, rsi
add rsp, 0x50
pop rbx
pop rbp
pop rdi
pop rsi
pop r14
ret
call dbg.is_zero_slow_path
mov ebx, eax
xor bl, 1
jmp 0x14005c4ae
lea r8, [rsp + 0x30]
mov qword [r8], rdi
mov byte [r8 + 8], bl
lea rax, str._home_thor_.cargo_registry_src_index.crates.io_6f17d22bba15001f_console_0.15.8_src_term.rs
mov qword [rsp + 0x20], rax
lea rcx, str.called__Result::unwrap____on_an__Err__value
lea r9, sym._ZN4core3ptr120drop_in_place_LT_std..sync..poison..PoisonError_LT_std..sync..mutex..MutexGuard_LT_alloc..vec..Vec_LT_u8_GT__GT
mov edx, 0x2b
call dbg.unwrap_failed
lea rax, str.phe_
mov qword [rsp + 0x20], rax
lea rcx, str.cannot_access_a_Thread_Local_Storage_value_during_or_after_destruction_rustc_07dca489ac2d933c78d3c5158e3f43beefeb02celibrary_std_src_threadlocal.rs
lea r9, dbg.drop_in_place____
lea r8, [rsp + 0x30]
mov edx, 0x46
call dbg.unwrap_failed
lea rcx, str.library_std_srcio_stdio.rs
call dbg.panic_already_borrowed
jmp 0x14005c857
lea rcx, str.lock_count_overflow_in_reentrant_mutexlibrary_std_src_sync_remutex.rs
lea r8, [0x1401b6e08]
mov edx, 0x26
call dbg.expect_failed
lea rcx, str.library_std_srcio_stdio.rs
call dbg.panic_already_borrowed
ud2