Function at 0x100196c00
Capabilities:
Get thread local storage value

Disassembly:
mov rax, rsp
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x5f]
sub rsp, 0xc0
mov qword [rbp + 7], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov r12, r8
mov r13d, edx
mov rsi, rcx
xor r15d, r15d
mov ebx, r15d
nop word [rax + rax]
mov rax, qword [rsi + 0x20]
mov qword [rbp - 0x11], rax
mov rax, qword [rsi + 0x28]
mov qword [rbp - 9], rax
mov rax, qword [rsi + 0x30]
mov qword [rbp - 1], rax
mov dword [rbp + 0xf], 0x40015f
mov dword [rbp - 0x69], 0x400000
mov qword [rbp - 0x61], r15
mov qword [rbp - 0x51], r15
mov qword [rbp - 0x59], r15
mov qword [rbp - 0x49], r15
call fcn.100068a00
mov r14, rax
mov rcx, qword gs:[0x30]
lea rdi, [rcx + rax]
mov rcx, rax
call fcn.10006c530
test eax, eax
jne 0x100196ca3
mov ecx, r14d
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rdi, rax
test rdi, rdi
je 0x100196cb4
mov rcx, qword [rdi + 0xd8]
test rcx, rcx
jne 0x100196cec
call fcn.100063d30
call fcn.100068a00
mov rdi, rax
mov rcx, qword gs:[0x30]
lea r14, [rax + rcx]
mov rcx, rax
call fcn.10006c530
test eax, eax
jne 0x100196ce5
mov ecx, edi
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov r14, rax
mov rcx, qword [r14 + 0xd8]
mov rcx, qword [rcx + 0x210]
mov rax, qword [rbp + 0xf]
mov qword [rbp - 0x69], rax
mov qword [rbp - 0x61], r15
mov qword [rbp - 0x59], r15
mov qword [rbp - 0x51], r15
mov qword [rbp - 0x49], r15
lea rdx, [rbp - 0x69]
call fcn.1000d0160
mov ecx, r15d
test eax, eax
sete cl
mov dword [rbp - 0x39], ecx
mov r9d, r13d
xor r8d, r8d
lea rdx, [rbp - 0x11]
lea ecx, [r8 + 3]
call qword [sym.imp.KERNEL32.dll_WaitForMultipleObjects]
mov edi, eax
cmp dword [rbp - 0x39], 0
je 0x100196dc5
call fcn.100068a00
mov r15, rax
mov rcx, qword gs:[0x30]
lea r14, [rcx + rax]
mov rcx, rax
call fcn.10006c530
test eax, eax
jne 0x100196d6c
mov ecx, r15d
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov r14, rax
test r14, r14
je 0x100196d7d
mov rcx, qword [r14 + 0xd8]
test rcx, rcx
jne 0x100196db6
call fcn.100063d30
call fcn.100068a00
mov r14, rax
mov rcx, qword gs:[0x30]
lea r15, [rcx + rax]
mov rcx, rax
call fcn.10006c530
test eax, eax
jne 0x100196daf
mov ecx, r14d
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov r15, rax
mov rcx, qword [r15 + 0xd8]
mov rcx, qword [rcx + 0x210]
call fcn.1000d02c0
xor r15d, r15d
test edi, edi
je 0x100196e93
dec edi
je 0x100196e11
dec edi
jne 0x100196e86
call fcn.1000669d0
mov rcx, qword [rax + 0x1030]
mov qword [rbp - 0x21], rcx
mov rax, qword [rax + 0x1038]
mov qword [rbp - 0x19], rax
lea rcx, [rsi + 0x38]
lea rdx, [rbp - 0x21]
call fcn.1000f2ff0
neg rax
sbb edi, edi
and edi, 2
jne 0x100196e98
jmp 0x100196e14
mov edi, r15d
mov qword [rbp - 0x31], rsi
mov dword [rbp - 0x29], r15d
call fcn.100064800
mov edx, eax
xor eax, eax
lock cmpxchg dword [rsi], edx
mov ecx, r15d
sete cl
test ecx, ecx
jne 0x100196e3b
mov rcx, rsi
call fcn.1001968e0
mov dword [rbp - 0x29], 1
lea rax, [rsi + 8]
mov rbx, qword [rax + 8]
cmp rbx, rax
je 0x100196e76
test rbx, rbx
je 0x100196e76
add rbx, 0xfffffffffffffff8
je 0x100196e79
dec dword [rax + 0x10]
mov rcx, qword [rbx + 0x10]
mov rax, qword [rbx + 8]
mov qword [rax + 8], rcx
mov qword [rcx], rax
mov qword [rbx + 0x10], r15
mov qword [rbx + 8], r15
jmp 0x100196e79
mov rbx, r15
mov dword [rsi], r15d
test rbx, rbx
jne 0x100196e9d
jmp 0x100196c40
cmp edi, 0x100
mov edi, 0x102
je 0x100196e98
mov edi, 2
test rbx, rbx
je 0x100196ea1
mov qword [r12], rbx
mov eax, edi
lea r11, [rsp + 0xc0]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret