Function at 0x140012650
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xc8
movaps xmmword [rsp + 0xb0], xmm6
mov qword [rsp + 0x98], r9
mov qword [rsp + 0x90], r8
mov byte [rsp + 0x2f], dl
mov rsi, rcx
mov rax, qword [rcx]
lea r13, [rsp + 0x42]
lea r12, [0x140036070]
xorps xmm6, xmm6
xor r15d, r15d
lea rbp, [0x14007cedb]
jmp 0x1400126be
cmp byte [rsp + 0x2f], 0
je 0x140012bdf
mov rax, r14
mov ecx, 2
lock cmpxchg qword [rsi], rcx
je 0x140012ab8
mov r14, rax
test rax, rax
je 0x1400126ab
cmp r14, 1
je 0x1400126a0
cmp r14, 3
je 0x140012aef
mov eax, r14d
and eax, 3
cmp eax, 2
je 0x1400126ff
jmp 0x140012bc4
mov eax, r14d
and eax, 3
cmp eax, 2
jne 0x140012ab0
mov ecx, dword [0x140036088]
test ecx, ecx
je 0x140012850
dec ecx
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
jbe 0x140012730
mov rbx, rax
cmp qword [rax], 0
je 0x140012730
add rbx, 8
jmp 0x1400127d0
mov ecx, dword [0x140036088]
test ecx, ecx
je 0x14001285f
dec ecx
call sub.KERNEL32.dll_TlsGetValue
test rax, rax
je 0x140012760
mov rdi, rax
cmp rax, 1
jne 0x14001279e
jmp 0x140012b79
mov ecx, 0x20
mov edx, 8
call fcn.14000aa00
test rax, rax
je 0x140012b68
mov rdi, rax
mov qword [rax], 0
mov qword [rax + 0x18], r12
mov ecx, dword [0x140036088]
test ecx, ecx
je 0x14001286e
dec ecx
mov rdx, rdi
call sub.KERNEL32.dll_TlsSetValue
lea rbx, [rdi + 8]
mov rcx, qword [rdi + 0x10]
cmp qword [rdi], 0
mov qword [rdi], 1
movups xmmword [rdi + 8], xmm6
je 0x1400127d0
test rcx, rcx
je 0x1400127d0
lock dec qword [rcx]
jne 0x1400127d0
call fcn.140012e70
nop word [rax + rax]
cmp qword [rbx], 0
jne 0x140012b0f
mov qword [rbx], 0xffffffffffffffff
mov rax, qword [rbx + 8]
test rax, rax
jne 0x1400127f5
xor ecx, ecx
call fcn.140012330
mov qword [rbx + 8], rax
lock inc qword [rax]
jle 0x140012b0b
inc qword [rbx]
mov rcx, r14
and rcx, 0xfffffffffffffffc
mov qword [rsp + 0x40], rax
mov byte [rsp + 0x50], 0
mov qword [rsp + 0x48], rcx
mov rax, r14
lock cmpxchg qword [rsi], r13
je 0x140012a75
mov r14, rax
mov rax, qword [rsp + 0x40]
test rax, rax
je 0x1400126f0
lock dec qword [rax]
jne 0x1400126f0
mov rcx, qword [rsp + 0x40]
call fcn.140012e70
jmp 0x1400126f0
mov rcx, r12
call fcn.140012cf0
mov ecx, eax
jmp 0x14001270f
mov rcx, r12
call fcn.140012cf0
mov ecx, eax
jmp 0x140012740
mov rcx, r12
call fcn.140012cf0
mov ecx, eax
jmp 0x140012796
mov eax, dword [0x140036088]
test eax, eax
je 0x140012890
dec eax
jmp 0x140012898
mov rcx, r12
call fcn.140012cf0
mov ecx, eax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
jbe 0x1400128c0
mov rdi, rax
cmp qword [rax], 0
je 0x1400128c0
add rdi, 8
jmp 0x140012970
mov eax, dword [0x140036088]
test eax, eax
je 0x1400128d0
dec eax
jmp 0x1400128d8
mov rcx, r12
call fcn.140012cf0
mov ecx, eax
call sub.KERNEL32.dll_TlsGetValue
test rax, rax
je 0x140012900
mov rbx, rax
cmp rax, 1
jne 0x140012946
jmp 0x140012b93
mov ecx, 0x20
mov edx, 8
call fcn.14000aa00
test rax, rax
je 0x140012bb0
mov rbx, rax
mov qword [rax], 0
mov qword [rax + 0x18], r12
mov eax, dword [0x140036088]
test eax, eax
je 0x140012934
dec eax
jmp 0x14001293c
mov rcx, r12
call fcn.140012cf0
mov ecx, eax
mov rdx, rbx
call sub.KERNEL32.dll_TlsSetValue
lea rdi, [rbx + 8]
mov rcx, qword [rbx + 0x10]
cmp qword [rbx], 0
mov qword [rbx], 1
movups xmmword [rbx + 8], xmm6
je 0x140012970
test rcx, rcx
je 0x140012970
lock dec qword [rcx]
jne 0x140012970
call fcn.140012e70
nop
cmp qword [rdi], 0
jne 0x140012b3a
mov qword [rdi], 0xffffffffffffffff
mov rbx, qword [rdi + 8]
test rbx, rbx
jne 0x140012998
xor ecx, ecx
call fcn.140012330
mov rbx, rax
mov qword [rdi + 8], rax
lock inc qword [rbx]
jle 0x140012b0b
inc qword [rdi]
mov qword [rsp + 0x30], rbx
lock dec byte [rbx + 0x28]
je 0x140012a60
add rbx, 0x28
mov rdi, qword [0x1400840f8]
test rdi, rdi
je 0x1400129ef
nop word cs:[rax + rax]
mov r8d, 1
mov rcx, rbx
mov rdx, rbp
mov r9d, 0xffffffff
call rdi
mov al, 1
lock cmpxchg byte [rbx], r15b
jne 0x1400129d0
jmp 0x140012a60
mov rcx, qword [0x140036018]
cmp rcx, 0xffffffffffffffff
jne 0x140012a48
mov qword [rsp + 0x58], 0xffffffffffffffff
mov rax, qword [0x140036038]
lea rcx, [rsp + 0x58]
mov edx, 0xc0000000
xor r8d, r8d
xor r9d, r9d
call rax
test eax, eax
jne 0x140012c2c
mov rcx, qword [rsp + 0x58]
mov rax, 0xffffffffffffffff
lock cmpxchg qword [0x140036018], rcx
je 0x140012a48
mov rdi, rax
call sub.KERNEL32.dll_CloseHandle
mov rcx, rdi
mov rax, qword [0x140036048]
mov rdx, rbx
xor r8d, r8d
xor r9d, r9d
call rax
xor eax, eax
xchg byte [rbx], al
nop
mov rax, qword [rsp + 0x30]
lock dec qword [rax]
jne 0x140012a75
mov rcx, qword [rsp + 0x30]
call fcn.140012e70
movzx eax, byte [rsp + 0x50]
test al, al
je 0x140012880
mov rax, qword [rsp + 0x40]
test rax, rax
je 0x140012ab0
lock dec qword [rax]
jne 0x140012ab0
mov rcx, qword [rsp + 0x40]
call fcn.140012e70
mov rax, qword [rsi]
jmp 0x1400126be
mov rax, qword [rsi]
jmp 0x1400126be
cmp r14, 1
mov qword [rsp + 0x60], 3
sete byte [rsp + 0x68]
lea rdx, [rsp + 0x60]
mov rcx, qword [rsp + 0x90]
mov rax, qword [rsp + 0x98]
call qword [rax + 0x20]
mov rcx, qword [rsp + 0x60]
mov rdx, rsi
call fcn.140012fc0
movaps xmm6, xmmword [rsp + 0xb0]
add rsp, 0xc8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
ud2
lea rax, str.library_std_src_sys_common_thread_info.rs
mov qword [rsp + 0x20], rax
lea rcx, str.already_borrowedlibrary_std_srcio_stdio.rs
lea r9, [0x14007d040]
lea r8, [rsp + 0x60]
mov edx, 0x10
call fcn.140005a90
ud2
lea rax, str.library_std_src_sys_common_thread_info.rs
mov qword [rsp + 0x20], rax
lea rcx, str.already_borrowedlibrary_std_srcio_stdio.rs
lea r9, [0x14007d040]
lea r8, [rsp + 0x60]
mov edx, 0x10
call fcn.140005a90
jmp 0x140012ce4
mov ecx, 0x20
mov edx, 8
call fcn.140002f40
ud2
lea rcx, [0x14007d95d]
lea r8, str.library_std_src_threadmod.rsuse_of_std::thread::current___is_not_possible_after_the_threads_local_data_has_been_destroyed
mov edx, 0x5e
call fcn.140005660
ud2
lea rcx, [0x14007d95d]
lea r8, str.library_std_src_threadmod.rsuse_of_std::thread::current___is_not_possible_after_the_threads_local_data_has_been_destroyed
mov edx, 0x5e
call fcn.140005660
jmp 0x140012ce4
mov ecx, 0x20
mov edx, 8
call fcn.140002f40
jmp 0x140012ce4
lea rcx, str.assertion_failed:_state_and_queue.addr____STATE_MASK__RUNNINGOnce_instance_has_previously_been_poisoned
mov edx, 0x40
mov r8, qword [rsp + 0x130]
call fcn.140004ac0
ud2
lea rax, [0x14007f3b8]
mov qword [rsp + 0x70], rax
mov qword [rsp + 0x78], 1
mov qword [rsp + 0x60], 0
lea rax, [0x14007cd10]
mov qword [rsp + 0x80], rax
mov qword [rsp + 0x88], 0
lea rcx, [rsp + 0x60]
mov rdx, qword [rsp + 0x130]
call fcn.1400038b0
ud2
mov dword [rsp + 0x3c], eax
lea rax, [rsp + 0x3c]
mov qword [rsp + 0xa0], rax
lea rax, [0x140008140]
mov qword [rsp + 0xa8], rax
lea rax, str.Unable_to_create_keyed_event_handle:_error
mov qword [rsp + 0x70], rax
mov qword [rsp + 0x78], 1
mov qword [rsp + 0x60], 0
lea rax, [rsp + 0xa0]
mov qword [rsp + 0x80], rax
mov qword [rsp + 0x88], 1
lea rdx, str.library_std_src_syswindows_thread_parker.rs
lea rcx, [rsp + 0x60]
call fcn.1400038b0
jmp 0x140012ce4
ud2