Function at 0x1000fd790
Capabilities:
Get thread local storage value

Disassembly:
mov rax, rsp
push rsi
push rdi
push r12
push r14
push r15
sub rsp, 0x60
mov qword [rax - 0x68], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov ebp, r8d
mov rbx, rcx
cmp r9d, 1
lea rsi, [rdx + 0x150]
je 0x1000fd7c9
lea rsi, [rdx + 0x1a8]
mov qword [rcx + 0x28], rsi
mov dword [rcx + 0x30], r8d
cmp r9d, 1
lea r15, [rdx + 0x128]
je 0x1000fd7e5
lea r15, [rdx + 0x180]
mov rcx, qword [rcx]
or edi, 0xffffffff
xor r12d, r12d
test rcx, rcx
je 0x1000fd81b
add rcx, 8
mov eax, edi
lock xadd dword [rcx + 0x10], eax
dec eax
jne 0x1000fd818
cmp qword [rcx + 8], r12
je 0x1000fd80f
call fcn.1000c8220
jmp 0x1000fd818
add rcx, 0xfffffffffffffff8
call fcn.1000d8230
mov qword [rbx], r12
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x1000fd84b
add rcx, 8
lock xadd dword [rcx + 0x10], edi
dec edi
jne 0x1000fd847
cmp qword [rcx + 8], r12
je 0x1000fd83e
call fcn.1000c8220
jmp 0x1000fd847
add rcx, 0xfffffffffffffff8
call fcn.1000d8230
mov qword [rbx + 8], r12
mov rcx, qword [rbx + 0x18]
test rcx, rcx
je 0x1000fd864
mov edx, dword [rbx + 0x20]
call fcn.1001047d0
mov qword [rbx + 0x18], r12
mov dword [rbx + 0x20], r12d
mov qword [rbx + 0x10], r12
cmp qword [rbx + 0x18], r12
jne 0x1000fd9e5
test rsi, rsi
je 0x1000fd9e5
test ebp, ebp
je 0x1000fd9e5
mov qword [rbx + 0x18], rsi
mov dword [rbx + 0x20], ebp
mov dword [rsp + 0x38], 0x40006f
mov qword [rsp + 0x40], r12
mov qword [rsp + 0x50], r12
mov qword [rsp + 0x48], r12
mov qword [rsp + 0x58], r12
mov edx, 1
lea rcx, [rsp + 0x28]
call fcn.100057f20
nop
mov ebp, dword [rbx + 0x20]
mov rdi, qword [rbx + 0x18]
call fcn.100068a00
mov r14, rax
mov rcx, qword gs:[0x30]
lea rsi, [rcx + rax]
mov rcx, rax
call fcn.10006c530
test eax, eax
jne 0x1000fd8ea
mov ecx, r14d
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rsi, rax
test rsi, rsi
je 0x1000fd8fb
mov rsi, qword [rsi + 0xd8]
test rsi, rsi
jne 0x1000fd933
call fcn.100063d30
call fcn.100068a00
mov rsi, rax
mov rcx, qword gs:[0x30]
lea r14, [rcx + rax]
mov rcx, rax
call fcn.10006c530
test eax, eax
jne 0x1000fd92c
mov ecx, esi
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov r14, rax
mov rsi, qword [r14 + 0xd8]
mov rcx, qword [rsi + 0x210]
test rcx, rcx
je 0x1000fd969
mov eax, dword [rcx + 0xb4]
test al, 4
je 0x1000fd969
mov rax, qword [rcx + 0x98]
test byte [rax + 0x220], 1
jne 0x1000fd969
mov eax, dword [rax + 0x2d8]
test al, al
js 0x1000fd969
bt eax, 8
jae 0x1000fd9d4
call fcn.100064800
mov edx, eax
xor eax, eax
lock cmpxchg dword [rdi], edx
mov ecx, r12d
sete cl
test ecx, ecx
jne 0x1000fd988
mov rcx, rdi
call fcn.100076600
cmp ebp, 1
jne 0x1000fd9a1
cmp dword [rdi + 0x20], 2
je 0x1000fd9b4
cmp dword [rdi + 0x1c], 0
jne 0x1000fd9b4
inc dword [rdi + 0x18]
mov dword [rdi + 0x20], ebp
jmp 0x1000fd9af
cmp ebp, 2
jne 0x1000fd9b4
cmp dword [rdi + 0x20], 0
jne 0x1000fd9b4
mov dword [rdi + 0x20], ebp
mov dword [rdi], r12d
jmp 0x1000fd9cb
lea r9, [rsp + 0x38]
or r8d, 0xffffffff
mov edx, ebp
mov rcx, rdi
call fcn.1001049c0
test eax, eax
jne 0x1000fd9d4
cmp ebp, 2
jne 0x1000fd9d4
mov qword [rdi + 0x28], rsi
mov rdx, qword [rsp + 0x30]
mov eax, dword [rsp + 0x28]
not eax
and dword [rdx + 0x220], eax
mov qword [rbx + 0x10], r15
mov rcx, r15
call fcn.1000c68d0
mov qword [rbx], rax
mov rcx, r15
call fcn.1000c6980
mov qword [rbx + 8], rax
lea r11, [rsp + 0x60]
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x38]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rsi
ret