Function at 0x140031500
Capabilities:
Get thread local storage value

Disassembly:
push rbp
push r14
push rsi
push rdi
push rbx
sub rsp, 0x20
lea rbp, [rsp + 0x20]
mov rbx, r8
mov rdi, rdx
mov rax, qword [rcx]
mov rsi, qword [rax]
mov ecx, dword [0x1400d5180]
test ecx, ecx
je 0x14003154f
dec ecx
call fcn.14009c0fc
mov r14, rax
test rax, rax
je 0x14003156a
mov rax, qword [rsi]
cmp r14, rax
jne 0x14003157a
mov eax, dword [rsi + 8]
cmp eax, 0xffffffff
je 0x1400316eb
inc eax
mov dword [rsi + 8], eax
jmp 0x140031593
lea rcx, [0x1400d5168]
call sym.std::sys::thread_local::key::windows::LazyKey::init::h3b25bd09068d2560
mov ecx, eax
call fcn.14009c0fc
mov r14, rax
test rax, rax
jne 0x140031534
call sym.std::thread::current::id::get_or_init::__u7b__u7b_closure_u7d__u7d_::hedc11dbc19db473f
mov r14, rax
mov rax, qword [rsi]
cmp r14, rax
je 0x14003153c
mov cl, 1
xor eax, eax
lock cmpxchg byte [rsi + 0xc], cl
jne 0x1400316cf
mov qword [rsi], r14
mov dword [rsi + 8], 1
cmp qword [rsi + 0x10], 0
jne 0x1400316dd
mov qword [rsi + 0x10], 0xffffffffffffffff
lea r9, [rsi + 0x18]
mov rax, rbx
shl rax, 4
xor ecx, ecx
nop word cs:[rax + rax]
cmp rax, rcx
je 0x1400315d9
mov r8d, dword [rdi + rcx]
add rcx, 0x10
test r8, r8
je 0x1400315c0
mov rdx, qword [rdi + rcx - 8]
jmp 0x1400315e1
mov edx, 1
xor r8d, r8d
mov ecx, 0xfffffff4
call sym.std::sys::pal::windows::stdio::write::h56dc1c44324702c0
test al, 1
je 0x140031690
movabs rcx, 0xffffffff00000003
mov r8, rdx
and r8, rcx
movabs rcx, 0x600000002
cmp r8, rcx
jne 0x140031692
test rbx, rbx
je 0x14003162c
mov eax, ebx
and eax, 3
cmp rbx, 4
jae 0x140031630
xor edx, edx
xor ecx, ecx
jmp 0x140031668
xor edx, edx
jmp 0x140031690
and rbx, 0xfffffffffffffffc
lea r8, [rdi + 0x30]
xor edx, edx
xor ecx, ecx
nop dword [rax]
mov r9d, dword [r8 - 0x30]
mov r10d, dword [r8 - 0x20]
add r9, rdx
mov r11d, dword [r8 - 0x10]
add r11, r10
add r11, r9
mov edx, dword [r8]
add rdx, r11
add rcx, 4
add r8, 0x40
cmp rbx, rcx
jne 0x140031640
test rax, rax
je 0x140031690
shl rcx, 4
add rdi, rcx
shl eax, 4
xor ecx, ecx
nop dword [rax]
mov r8d, dword [rdi + rcx]
add rdx, r8
add rcx, 0x10
cmp rax, rcx
jne 0x140031680
xor eax, eax
inc qword [rsi + 0x10]
dec dword [rsi + 8]
jne 0x1400316c4
mov qword [rsi], 0
xor ecx, ecx
xchg byte [rsi + 0xc], cl
cmp cl, 2
jne 0x1400316c4
add rsi, 0xc
mov rcx, rsi
mov rsi, rdx
mov rdi, rax
call fcn.14005aafc
mov rax, rdi
mov rdx, rsi
add rsp, 0x20
pop rbx
pop rdi
pop rsi
pop r14
pop rbp
ret
lea rcx, [rsi + 0xc]
call sym.std::sys::sync::mutex::futex::Mutex::lock_contended::hbe5cde1fd81d392d
jmp 0x140031589
lea rcx, [0x1400a3918]
call sym.core::cell::panic_already_borrowed::h439a15d5ce72f317
ud2
lea rcx, [0x1400a45e0]
lea r8, [0x1400a4628]
mov edx, 0x26
call sym.core::option::expect_failed::h0dca3ca7a19f43d9
mov rdi, rax
inc qword [rsi + 0x10]
mov rcx, rsi
call sym._ZN4core3ptr175drop_in_place_LT_std..sync..reentrant_lock..ReentrantLockGuard_LT_core..cell..RefCell_LT_std..io..buffered..lin
mov rcx, rdi
call sym._Unwind_Resume
mov rdi, rax
mov rcx, rsi
call sym._ZN4core3ptr175drop_in_place_LT_std..sync..reentrant_lock..ReentrantLockGuard_LT_core..cell..RefCell_LT_std..io..buffered..lin
mov rcx, rdi
call sym._Unwind_Resume
int3