Function at 0x1400c5e60
Capabilities:
Get thread local storage value

Disassembly:
push rbx
sub rsp, 0x20
mov eax, 0xffff
mov rbx, r8
add word [rcx + 0x70], ax
mov r11, rdx
mov r10, rcx
jne 0x1400c5ea8
cmp qword [rcx + 0x10], 0
jne 0x1400c5ea8
movzx ecx, word [rcx + 0x72]
call fcn.1400c6540
mov r8d, eax
mov rdx, r11
inc r8
lea rax, [r8 + r8*2]
mov r8, r10
lea rcx, [rbx + rax*8]
add rsp, 0x20
pop rbx
jmp 0x1400c6f30
movzx eax, word [rcx + 0x72]
mov ecx, 0x400
cmp ax, cx
jbe 0x1400c5ee9
test r9b, 0x7f
jne 0x1400c5ee9
movzx ecx, ax
mov edx, 0x4000
movzx eax, r10w
sub ax, r9w
add ax, dx
movzx eax, ax
cdq
idiv ecx
test dx, dx
je 0x1400c5ee1
movzx eax, dx
sub ecx, eax
jmp 0x1400c5ee3
xor ecx, ecx
movsxd rax, ecx
sub r9, rax
mov rax, qword [r10 + 0x58]
mov qword [r9], rax
cmp byte [r10 + 0x74], 0
mov qword [r10 + 0x58], r9
je 0x1400c5f59
cmp qword [r10 + 0x50], 0
je 0x1400c5f09
mov byte [r10 + 0x74], 0
jmp 0x1400c5f34
movzx eax, word [r10 + 0x70]
movzx ecx, word [r10 + 0x72]
imul ecx, eax
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
comiss xmm0, dword [0x1402c9f8c]
seta al
test al, al
mov byte [r10 + 0x74], al
sete al
test al, al
je 0x1400c5f59
movzx ecx, word [r10 + 0x72]
call fcn.1400c6540
mov r8d, eax
mov rdx, r10
inc r8
lea rax, [r8 + r8*2]
lea rcx, [rbx + rax*8]
add rsp, 0x20
pop rbx
jmp fcn.1400c6d00
add rsp, 0x20
pop rbx
ret
push rsi
sub rsp, 0x20
mov rax, qword [rcx + 0x10]
mov rsi, rcx
nop dword [rax]
mov qword [rdx], rax
mov r8, rax
lock cmpxchg qword [rcx + 0x10], rdx
cmp rax, r8
jne 0x1400c5f70
test r8, r8
jne 0x1400c5ffa
mov qword [rsp + 0x40], rdi
mov rdi, qword [rcx + 0x18]
cmp rdi, 1
je 0x1400c5ff5
mov qword [rsp + 0x30], rbx
xor eax, eax
mov qword [rsp + 0x38], rbp
mov ebp, 1
mov ebx, ebp
lock cmpxchg byte [rdi + 0x10], bpl
je 0x1400c5fdb
cmp ebx, 0x10
jg 0x1400c5fcb
movsxd rax, ebx
test ebx, ebx
je 0x1400c5fc7
nop dword [rax]
pause
sub rax, rbp
jne 0x1400c5fc0
add ebx, ebx
jmp 0x1400c5fd1
call qword [sym.imp.KERNEL32.dll_SwitchToThread]
xor eax, eax
lock cmpxchg byte [rdi + 0x10], bpl
jne 0x1400c5fb0
mov rax, qword [rdi + 8]
mov qword [rsi + 0x18], rax
mov qword [rdi + 8], rsi
mov rbp, qword [rsp + 0x38]
mov rbx, qword [rsp + 0x30]
mov byte [rdi + 0x10], 0
mov rdi, qword [rsp + 0x40]
add rsp, 0x20
pop rsi
ret
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
push rdi
sub rsp, 0x20
mov rdi, rdx
mov rbx, rdx
and rdi, 0xffffffffffffc000
mov rsi, rcx
cmp qword [rdi + 0x60], 0
je 0x1400c6062
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp eax, dword [rdi + 0x68]
jne 0x1400c6062
mov rax, qword [rdi + 0x60]
mov byte [rax + 0x344], 0
mov r8, qword [rdi + 0x60]
test r8, r8
je 0x1400c6062
mov r9, rbx
mov rdx, rsi
mov rcx, rdi
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
jmp 0x1400c5e60
movzx eax, word [rdi + 0x72]
mov ecx, 0x400
cmp ax, cx
jbe 0x1400c60a0
test bl, 0x7f
jne 0x1400c60a0
movzx ecx, ax
mov edx, 0x4000
movzx eax, di
sub ax, bx
add ax, dx
movzx eax, ax
cdq
idiv ecx
test dx, dx
je 0x1400c6098
movzx eax, dx
sub ecx, eax
jmp 0x1400c609a
xor ecx, ecx
movsxd rax, ecx
sub rbx, rax
mov rdx, rbx
mov rcx, rdi
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
jmp 0x1400c5f60
push rbx
sub rsp, 0x20
mov rbx, r8
cmp r8, qword [rcx]
je 0x1400c6fad
mov rcx, qword [r8 + 0x48]
test rcx, rcx
je 0x1400c6f4f
mov rax, qword [r8 + 0x40]
mov qword [rcx + 0x40], rax
mov rcx, qword [r8 + 0x40]
test rcx, rcx
je 0x1400c6f60
mov rax, qword [r8 + 0x48]
mov qword [rcx + 0x48], rax
xor eax, eax
mov qword [r8 + 0x40], rax
mov qword [r8 + 0x48], rax
mov qword [r8 + 0x58], rax
mov dword [r8 + 0x70], eax
mov byte [r8 + 0x74], al
mov qword [r8 + 0x60], rax
mov qword [r8 + 0x10], rax
mov qword [r8 + 0x18], rax
lea rax, [r8 + 0x4000]
mov qword [r8 + 0x50], rax
mov ecx, dword [rdx + 0x2152c]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rdx, rbx
lea rcx, [rax + 0x300]
add rsp, 0x20
pop rbx
jmp fcn.1400c7380
movzx eax, word [r8 + 0x72]
mov rcx, rbx
sub rcx, rax
add rcx, 0x4000
xor eax, eax
mov qword [r8 + 0x50], rcx
mov qword [r8 + 0x58], rax
mov byte [r8 + 0x74], al
add rsp, 0x20
pop rbx
ret