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

Disassembly:
push rbx
push rsi
push r13
sub rsp, 0x30
mov qword [rsp + 0x58], rdi
mov rdi, rcx
mov ecx, dword [rcx]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
xor r13d, r13d
mov rbx, rax
test rax, rax
jne 0x14001e81b
lea ecx, [rax + 0xc]
call fcn.140013490
mov rbx, rax
test rax, rax
je 0x14001e80d
mov qword [rax], r13
mov dword [rax + 8], r13d
jmp 0x14001e810
mov rbx, r13
mov ecx, dword [rdi]
mov rdx, rbx
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
mov eax, dword [rbx + 4]
lea rsi, [0x140167060]
test eax, eax
jne 0x14001ed5f
mov eax, dword [rbx]
test eax, eax
je 0x14001e83e
mov dword [rbx + 4], eax
mov dword [rbx], r13d
jmp 0x14001ed55
lea rcx, [rdi + 8]
call fcn.14001e690
mov dword [rbx + 4], eax
test eax, eax
jne 0x14001ed55
mov qword [rsp + 0x50], rbp
mov qword [rsp + 0x60], r12
mov qword [rsp + 0x28], r14
mov r14d, 0x40
lock xadd dword [0x1401670a0], r14d
lea r12d, [r14 + 0x40]
cmp r12d, 0x4000000
jbe 0x14001e89e
mov r9d, 0x4000000
lea r8, str.Consumed__d_lock_free_links__there_are_no_more.
lea edx, [rax + 0x30]
lea rcx, [0x14011ba70]
call fcn.14007be10
call fcn.14007bec0
mov ebp, r14d
cmp r14d, r12d
jae 0x14001e937
mov qword [rsp + 0x20], r15
lea r13, [0x140167060]
mov r15d, r14d
nop dword [rax]
mov rax, r15
mov esi, ebp
shr rax, 0xe
and esi, 0x3fff
lea rdi, [rax*8]
add rdi, r13
cmp qword [rdi + 0x88], 0
jne 0x14001e905
xor edx, edx
mov ecx, 0x60000
call fcn.140046110
mov rcx, rax
xor eax, eax
lock cmpxchg qword [rdi + 0x88], rcx
je 0x14001e905
call fcn.140044390
mov rax, qword [rdi + 0x88]
lea rcx, [rsi + rsi*2]
xor edx, edx
xorps xmm0, xmm0
inc ebp
inc r15
movups xmmword [rax + rcx*8], xmm0
mov qword [rax + rcx*8 + 0x10], rdx
cmp ebp, r12d
jb 0x14001e8c0
mov r15, qword [rsp + 0x20]
lea rsi, [0x140167060]
xor r13d, r13d
mov r12, qword [rsp + 0x60]
lea edx, [r14 + 2]
mov r14, qword [rsp + 0x28]
mov r9d, 4
mov rbp, qword [rsp + 0x50]
lea r8d, [rdx - 2]
test r8d, r8d
jne 0x14001e95e
mov rcx, r13
jmp 0x14001e97e
mov ecx, r8d
mov eax, r8d
shr rax, 0xe
and ecx, 0x3fff
mov rax, qword [rsi + rax*8 + 0x88]
lea rcx, [rcx + rcx*2]
lea rcx, [rax + rcx*8]
mov qword [rcx], r13
mov dword [rcx + 0x10], r13d
mov eax, dword [rbx + 4]
mov qword [rcx + 8], rax
mov dword [rbx + 4], r8d
lea r8d, [rdx - 1]
test r8d, r8d
jne 0x14001e99e
mov rcx, r13
jmp 0x14001e9be
mov ecx, r8d
mov eax, r8d
shr rax, 0xe
and ecx, 0x3fff
mov rax, qword [rsi + rax*8 + 0x88]
lea rcx, [rcx + rcx*2]
lea rcx, [rax + rcx*8]
mov qword [rcx], r13
mov dword [rcx + 0x10], r13d
mov eax, dword [rbx + 4]
mov qword [rcx + 8], rax
mov dword [rbx + 4], r8d
test edx, edx
jne 0x14001e9d9
mov rcx, r13
jmp 0x14001e9f7
mov ecx, edx
mov eax, edx
shr rax, 0xe
and ecx, 0x3fff
mov rax, qword [rsi + rax*8 + 0x88]
lea rcx, [rcx + rcx*2]
lea rcx, [rax + rcx*8]
mov qword [rcx], r13
lea r8d, [rdx + 1]
mov dword [rcx + 0x10], r13d
mov eax, dword [rbx + 4]
mov qword [rcx + 8], rax
mov dword [rbx + 4], edx
test r8d, r8d
jne 0x14001ea16
mov rcx, r13
jmp 0x14001ea36
mov ecx, r8d
mov eax, r8d
shr rax, 0xe
and ecx, 0x3fff
mov rax, qword [rsi + rax*8 + 0x88]
lea rcx, [rcx + rcx*2]
lea rcx, [rax + rcx*8]
mov qword [rcx], r13
mov dword [rcx + 0x10], r13d
mov eax, dword [rbx + 4]
mov qword [rcx + 8], rax
mov dword [rbx + 4], r8d
lea r8d, [rdx + 2]
test r8d, r8d
jne 0x14001ea56
mov rcx, r13
jmp 0x14001ea76
mov ecx, r8d
mov eax, r8d
shr rax, 0xe
and ecx, 0x3fff
mov rax, qword [rsi + rax*8 + 0x88]
lea rcx, [rcx + rcx*2]
lea rcx, [rax + rcx*8]
mov qword [rcx], r13
mov dword [rcx + 0x10], r13d
mov eax, dword [rbx + 4]
mov qword [rcx + 8], rax
mov dword [rbx + 4], r8d
lea r8d, [rdx + 3]
test r8d, r8d
jne 0x14001ea96
mov rcx, r13
jmp 0x14001eab6
mov ecx, r8d
mov eax, r8d
shr rax, 0xe
and ecx, 0x3fff
mov rax, qword [rsi + rax*8 + 0x88]
lea rcx, [rcx + rcx*2]
lea rcx, [rax + rcx*8]
mov qword [rcx], r13
mov dword [rcx + 0x10], r13d
mov eax, dword [rbx + 4]
mov qword [rcx + 8], rax
mov dword [rbx + 4], r8d
lea r8d, [rdx + 4]
test r8d, r8d
jne 0x14001ead6
mov rcx, r13
jmp 0x14001eaf6
mov ecx, r8d
mov eax, r8d
shr rax, 0xe
and ecx, 0x3fff
mov rax, qword [rsi + rax*8 + 0x88]
lea rcx, [rcx + rcx*2]
lea rcx, [rax + rcx*8]
mov qword [rcx], r13
mov dword [rcx + 0x10], r13d
mov eax, dword [rbx + 4]
mov qword [rcx + 8], rax
mov dword [rbx + 4], r8d
lea r8d, [rdx + 5]
test r8d, r8d
jne 0x14001eb16
mov rcx, r13
jmp 0x14001eb36
mov ecx, r8d
mov eax, r8d
shr rax, 0xe
and ecx, 0x3fff
mov rax, qword [rsi + rax*8 + 0x88]
lea rcx, [rcx + rcx*2]
lea rcx, [rax + rcx*8]
mov qword [rcx], r13
mov dword [rcx + 0x10], r13d
mov eax, dword [rbx + 4]
mov qword [rcx + 8], rax
mov dword [rbx + 4], r8d
lea r8d, [rdx + 6]
test r8d, r8d
jne 0x14001eb56
mov rcx, r13
jmp 0x14001eb76
mov ecx, r8d
mov eax, r8d
shr rax, 0xe
and ecx, 0x3fff
mov rax, qword [rsi + rax*8 + 0x88]
lea rcx, [rcx + rcx*2]
lea rcx, [rax + rcx*8]
mov qword [rcx], r13
mov dword [rcx + 0x10], r13d
mov eax, dword [rbx + 4]
mov qword [rcx + 8], rax
mov dword [rbx + 4], r8d
lea r8d, [rdx + 7]
test r8d, r8d
jne 0x14001eb96
mov rcx, r13
jmp 0x14001ebb6
mov ecx, r8d
mov eax, r8d
shr rax, 0xe
and ecx, 0x3fff
mov rax, qword [rsi + rax*8 + 0x88]
lea rcx, [rcx + rcx*2]
lea rcx, [rax + rcx*8]
mov qword [rcx], r13
mov dword [rcx + 0x10], r13d
mov eax, dword [rbx + 4]
mov qword [rcx + 8], rax
mov dword [rbx + 4], r8d
lea r8d, [rdx + 8]
test r8d, r8d
jne 0x14001ebd6
mov rcx, r13
jmp 0x14001ebf6
mov ecx, r8d
mov eax, r8d
shr rax, 0xe
and ecx, 0x3fff
mov rax, qword [rsi + rax*8 + 0x88]
lea rcx, [rcx + rcx*2]
lea rcx, [rax + rcx*8]
mov qword [rcx], r13
mov dword [rcx + 0x10], r13d
mov eax, dword [rbx + 4]
mov qword [rcx + 8], rax
mov dword [rbx + 4], r8d
lea r8d, [rdx + 9]
test r8d, r8d
jne 0x14001ec16
mov rcx, r13
jmp 0x14001ec36
mov ecx, r8d
mov eax, r8d
shr rax, 0xe
and ecx, 0x3fff
mov rax, qword [rsi + rax*8 + 0x88]
lea rcx, [rcx + rcx*2]
lea rcx, [rax + rcx*8]
mov qword [rcx], r13
mov dword [rcx + 0x10], r13d
mov eax, dword [rbx + 4]
mov qword [rcx + 8], rax
mov dword [rbx + 4], r8d
lea r8d, [rdx + 0xa]
test r8d, r8d
jne 0x14001ec56
mov rcx, r13
jmp 0x14001ec76
mov ecx, r8d
mov eax, r8d
shr rax, 0xe
and ecx, 0x3fff
mov rax, qword [rsi + rax*8 + 0x88]
lea rcx, [rcx + rcx*2]
lea rcx, [rax + rcx*8]
mov qword [rcx], r13
mov dword [rcx + 0x10], r13d
mov eax, dword [rbx + 4]
mov qword [rcx + 8], rax
mov dword [rbx + 4], r8d
lea r8d, [rdx + 0xb]
test r8d, r8d
jne 0x14001ec96
mov rcx, r13
jmp 0x14001ecb6
mov ecx, r8d
mov eax, r8d
shr rax, 0xe
and ecx, 0x3fff
mov rax, qword [rsi + rax*8 + 0x88]
lea rcx, [rcx + rcx*2]
lea rcx, [rax + rcx*8]
mov qword [rcx], r13
mov dword [rcx + 0x10], r13d
mov eax, dword [rbx + 4]
mov qword [rcx + 8], rax
mov dword [rbx + 4], r8d
lea r8d, [rdx + 0xc]
test r8d, r8d
jne 0x14001ecd6
mov rcx, r13
jmp 0x14001ecf6
mov ecx, r8d
mov eax, r8d
shr rax, 0xe
and ecx, 0x3fff
mov rax, qword [rsi + rax*8 + 0x88]
lea rcx, [rcx + rcx*2]
lea rcx, [rax + rcx*8]
mov qword [rcx], r13
mov dword [rcx + 0x10], r13d
mov eax, dword [rbx + 4]
mov qword [rcx + 8], rax
mov dword [rbx + 4], r8d
lea r8d, [rdx + 0xd]
test r8d, r8d
jne 0x14001ed16
mov rcx, r13
jmp 0x14001ed36
mov ecx, r8d
mov eax, r8d
shr rax, 0xe
and ecx, 0x3fff
mov rax, qword [rsi + rax*8 + 0x88]
lea rcx, [rcx + rcx*2]
lea rcx, [rax + rcx*8]
mov qword [rcx], r13
add edx, 0x10
mov dword [rcx + 0x10], r13d
mov eax, dword [rbx + 4]
mov qword [rcx + 8], rax
mov dword [rbx + 4], r8d
sub r9, 1
jne 0x14001e950
mov eax, dword [rbx + 4]
mov dword [rbx + 8], 0x40
mov rdi, qword [rsp + 0x58]
test eax, eax
jne 0x14001ed6d
mov rdx, r13
jmp 0x14001ed8b
mov edx, eax
mov ecx, eax
shr rcx, 0xe
and edx, 0x3fff
mov rcx, qword [rsi + rcx*8 + 0x88]
lea rdx, [rdx + rdx*2]
lea rdx, [rcx + rdx*8]
mov ecx, dword [rdx + 8]
dec dword [rbx + 8]
mov dword [rbx + 4], ecx
mov qword [rdx + 8], r13
add rsp, 0x30
pop r13
pop rsi
pop rbx
ret