Function at 0x100119820
Capabilities:
Get thread local storage value

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x70
mov qword [rsp + 0x28], 0xfffffffffffffffe
mov qword [rsp + 0xb0], rbx
mov rdi, rcx
xor r14d, r14d
test r8d, r8d
je 0x10011985a
mov rax, qword [rcx]
test rax, rax
cmovne rax, r14
mov qword [rcx + 0x30], rax
cmp edx, 0x40
jae 0x100119870
mov r8d, edx
or rdx, 0xffffffffffffffff
call fcn.1001194f0
jmp 0x100119b68
lea rax, [rcx + 0x38]
lea r12, [rcx + 0x90]
mov qword [rsp + 0x20], 0x40
mov esi, 1
nop dword [rax]
mov rbx, r14
mov r15, r14
or rbp, 0xffffffffffffffff
mov qword [rsp + 0xc8], rbp
mov dword [rsp + 0x40], 0x80116
mov qword [rsp + 0x48], r14
mov qword [rsp + 0x58], r14
mov qword [rsp + 0x50], r14
mov qword [rsp + 0x60], r14
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x38], r14d
lea r8, [rsp + 0x40]
or edx, 0xffffffff
mov rcx, rax
call fcn.10005b250
mov ecx, r14d
test eax, eax
cmove ecx, esi
mov dword [rsp + 0x38], ecx
call fcn.100064800
mov edx, eax
xor eax, eax
lock cmpxchg dword [rdi + 0x20], edx
mov ecx, r14d
sete cl
test ecx, ecx
jne 0x100119905
lea rcx, [rdi + 0x20]
call fcn.100115710
mov rax, qword [rdi + 8]
mov rcx, qword [rdi + 0x30]
cmp rax, rcx
ja 0x100119917
mov rsi, r14
jmp 0x100119938
sub rax, rcx
cmp rbp, rax
cmovb rax, rbp
mov esi, 0x64
cmp rax, rsi
cmovb rsi, rax
sub rbp, rsi
mov qword [rsp + 0xc8], rbp
mov rdx, r14
test rsi, rsi
je 0x10011996b
mov rax, qword [r12]
test rax, rax
je 0x100119960
mov rcx, qword [rax]
mov qword [r12], rcx
mov qword [rax], rbx
mov rbx, rax
dec qword [rdi + 8]
inc qword [rdi + 0x10]
jmp 0x100119963
mov rsi, r14
inc rdx
cmp rdx, rsi
jb 0x100119940
mov dword [rdi + 0x20], r14d
test rbx, rbx
je 0x100119988
mov rcx, rbx
mov rbx, qword [rbx]
mov qword [rcx], r14
call qword [rdi + 0x28]
inc r15
test rbx, rbx
jne 0x100119974
call fcn.100068a00
mov r14, rax
mov rcx, qword gs:[0x30]
lea rbp, [rcx + rax]
mov rcx, rax
call fcn.10006c530
test eax, eax
jne 0x1001199b5
mov ecx, r14d
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rbp, rax
test rbp, rbp
je 0x1001199c6
mov rcx, qword [rbp + 0xd8]
test rcx, rcx
jne 0x1001199fe
call fcn.100063d30
call fcn.100068a00
mov rbp, rax
mov rcx, qword gs:[0x30]
lea r14, [rcx + rax]
mov rcx, rax
call fcn.10006c530
test eax, eax
jne 0x1001199f7
mov ecx, ebp
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov r14, rax
mov rcx, qword [r14 + 0xd8]
rdtsc
shl rdx, 0x20
or rax, rdx
mov r9, qword [rcx + 0x2f8]
cmp rax, r9
ja 0x100119a3b
mov rdx, qword [rcx + 0x218]
mov r8, qword [rdx + 0xab0]
mov rdx, r9
sub rdx, rax
cmp rdx, r8
jbe 0x100119a40
movabs rax, 0x7fffffffffffffff
cmp r9, rax
je 0x100119a40
call fcn.1000655c0
test rsi, rsi
mov rbp, qword [rsp + 0xc8]
mov r14d, 0
jne 0x1001198e4
cmp r15, 0xffffffffffffffff
jae 0x100119b31
cmp qword [rdi + 0x88], r14
jbe 0x100119b31
mov rax, qword [rdi + 0x30]
cmp qword [rdi + 8], rax
jbe 0x100119b31
call fcn.100064800
mov edx, eax
xor eax, eax
lock cmpxchg dword [rdi + 0x20], edx
mov ecx, r14d
sete cl
test ecx, ecx
jne 0x100119a9d
lea rcx, [rdi + 0x20]
call fcn.100115710
mov rcx, qword [rdi + 8]
mov rdx, qword [rdi + 0x30]
cmp rcx, rdx
jbe 0x100119b0c
or r9, 0xffffffffffffffff
sub r9, r15
mov rax, qword [rdi + 0x88]
cmp rax, r9
cmovb r9, rax
sub rcx, rdx
cmp r9, rcx
cmovae r9, rcx
test r9, r9
je 0x100119afd
lea rcx, [rdi + 0x78]
mov r8, r9
nop word [rax + rax]
mov rdx, qword [rcx]
mov rax, qword [rdx]
mov qword [rcx], rax
test rax, rax
jne 0x100119af2
mov qword [rcx + 8], rcx
mov qword [rdx], rbx
mov rbx, rdx
dec r8
jne 0x100119ae0
sub qword [rdi + 8], r9
add qword [rdi + 0x10], r9
sub qword [rdi + 0x88], r9
mov dword [rdi + 0x20], r14d
test rbx, rbx
je 0x100119b31
nop word [rax + rax]
mov rcx, rbx
mov rbx, qword [rbx]
mov qword [rcx], r14
call qword [rdi + 0x28]
test rbx, rbx
jne 0x100119b20
mov ebx, dword [rsp + 0x38]
test ebx, ebx
je 0x100119b50
mov rsi, qword [rsp + 0x30]
nop
mov rcx, rsi
call fcn.10005b360
dec ebx
mov dword [rsp + 0x38], ebx
jne 0x100119b40
add r12, 8
dec qword [rsp + 0x20]
lea rax, [rdi + 0x38]
mov esi, 1
jne 0x100119890
mov rbx, qword [rsp + 0xb0]
add rsp, 0x70
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret