Function at 0x14011e6a0
Capabilities:
Get thread local storage value

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x1c8
mov rsi, rcx
mov rax, qword [0x140287028]
xor rax, rsp
mov qword [rsp + 0x1c0], rax
mov rdi, qword [rcx + 0x168]
mov ecx, dword [0x140288f70]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x14011ee56
mov rcx, qword [rdi]
shl rcx, 4
mov edx, dword [rax + rcx + 8]
cmp edx, dword [rdi + 8]
jne 0x14011ee56
mov rax, qword [rax + rcx]
cmp rax, rsi
jne 0x14011e76f
mov rdi, qword [rsi + 0x168]
mov ecx, dword [0x140288f70]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x14011e738
mov rcx, qword [rdi]
shl rcx, 4
mov qword [rax + rcx], 0
mov ecx, dword [rdi + 8]
mov rdx, qword [rdi]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
xor ebp, ebp
cmp dword [rsi], 0
sete bpl
mov r12, qword [rsi + 0x148]
mov r13, qword [rsi + 0x150]
cmp r12, r13
jne 0x14011ea75
mov r12, qword [rsi + 0xd8]
mov r13, qword [rsi + 0xe0]
cmp r12, r13
jne 0x14011e81d
mov r15, qword [rsi + 0x148]
test r15, r15
je 0x14011e7b2
mov r12, qword [rsi + 0x150]
mov rcx, r15
cmp r12, r15
jne 0x14011ea0e
mov qword [rsi + 0x150], r15
mov rax, qword [rsi + 0x160]
test rax, rax
je 0x14011ee5d
cmp rax, rcx
jne 0x14011ee5d
mov byte [rcx + 0x40], 0
mov rbx, qword [rsi + 0xd8]
test rbx, rbx
je 0x14011e7f8
mov r14, qword [rsi + 0xe0]
mov rcx, rbx
cmp r14, rbx
jne 0x14011eee1
mov qword [rsi + 0xe0], rbx
mov rax, qword [rsi + 0xf0]
test rax, rax
je 0x14011ed52
cmp rax, rcx
jne 0x14011ed52
mov byte [rcx + 0xc0], 0
mov rcx, qword [rsp + 0x1c0]
xor rcx, rsp
call fcn.1401756e0
nop
add rsp, 0x1c8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rbx, [rsp + 0x50]
mov r15, qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov r8d, 0x170
mov rcx, rbx
mov dl, 0xaa
call fcn.140177800
mov eax, dword [rsi]
mov dword [rsp + 0x50], eax
lea rax, [rsp + 0x58]
mov qword [rsp + 0x120], rax
mov qword [rsp + 0x140], rax
mov byte [rsp + 0x118], 1
mov qword [rsp + 0x128], rax
mov qword [rsp + 0x130], rax
lea rax, [rsp + 0x118]
mov qword [rsp + 0x138], rax
lea rax, [rsp + 0x148]
mov qword [rsp + 0x190], rax
mov qword [rsp + 0x1b0], rax
mov byte [rsp + 0x188], 1
mov qword [rsp + 0x198], rax
mov qword [rsp + 0x1a0], rax
lea rax, [rsp + 0x188]
mov qword [rsp + 0x1a8], rax
mov r14, qword [0x1402983b8]
cmp r14, 1
jbe 0x14011ed9d
mov qword [rsp + 0x1b8], r14
mov ecx, dword [0x140288f70]
call r15
and rax, 0xfffffffffffffffc
je 0x14011e8fc
mov rcx, qword [r14]
shl rcx, 4
mov edx, dword [rax + rcx + 8]
cmp edx, dword [r14 + 8]
jne 0x14011e8fc
cmp qword [rax + rcx], 0
jne 0x14011e930
mov rdi, qword [rsp + 0x1b8]
mov ecx, dword [0x140288f70]
call r15
and rax, 0xfffffffffffffffc
je 0x14011ed5c
mov rcx, qword [rdi]
shl rcx, 4
mov qword [rax + rcx], rbx
mov ecx, dword [rdi + 8]
mov rdx, qword [rdi]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
mov r15, qword [r12]
mov ebx, dword [r12 + 8]
lea rdi, [r15 + 0x38]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x14011ed66
cmp byte [r15 + 0x40], 0
jne 0x14011e9df
mov qword [rsp + 0x28], rdi
cmp ebx, 1
jne 0x14011e968
mov byte [r15 + 0x40], 1
mov rdi, qword [r15 + 8]
mov rax, qword [r15 + 0x18]
movabs rcx, 0xaaaaaaaaaaaaaaaa
mov qword [rsp + 0x48], rcx
mov dword [rsp + 0x30], 0x20
mov qword [rsp + 0x38], rax
mov dword [rsp + 0x40], ebx
mov rax, qword [r12 + 0xc]
mov qword [rsp + 0x44], rax
mov dword [rsp + 0x34], ebp
lea r15, [rdi + 0x18]
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x14011ee3c
movzx r14d, byte [rdi + 0x21]
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
cmp ebx, 1
je 0x14011e9cb
test r14b, r14b
jne 0x14011e9da
mov rax, qword [rdi + 0x10]
lea rcx, [rsp + 0x30]
call qword [case.0x1401d7990.0]
mov rdi, qword [rsp + 0x28]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
lea rbx, [rsp + 0x50]
mov rcx, rbx
call fcn.14011e6a0
add r12, 0x18
cmp r12, r13
mov r15, qword [sym.imp.KERNEL32.dll_TlsGetValue]
je 0x14011e76f
jmp 0x14011e829
lea r14, [0x140160e10]
lea r13, [0x14025fee0]
lea rbp, [fcn.14011f090]
mov rdi, qword [r12 - 8]
add r12, 0xfffffffffffffff8
test rdi, rdi
je 0x14011ea64
lock dec dword [rdi]
jne 0x14011ea64
mov rbx, qword [rdi + 0x10]
test rbx, rbx
je 0x14011ea49
lock dec dword [rbx + 8]
je 0x14011ecd7
mov rbx, qword [rdi + 8]
test rbx, rbx
je 0x14011ea5c
lock dec dword [rbx + 8]
je 0x14011ec64
mov rcx, rdi
call fcn.140172a44
cmp r12, r15
jne 0x14011ea23
mov rcx, qword [rsi + 0x148]
jmp 0x14011e78e
lea rdi, [rsp + 0x148]
lea r15, [rsp + 0x50]
mov eax, dword [0x1402983b0]
mov ecx, dword [0x140296f94]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x14011ed1d
mov r8d, 0x170
mov rcx, r15
mov dl, 0xaa
call fcn.140177800
mov dword [rsp + 0x50], 0
lea rax, [rsp + 0x58]
mov qword [rsp + 0x120], rax
mov qword [rsp + 0x140], rax
mov cl, 1
mov byte [rsp + 0x118], cl
mov qword [rsp + 0x128], rax
mov qword [rsp + 0x130], rax
lea rax, [rsp + 0x118]
mov qword [rsp + 0x138], rax
mov qword [rsp + 0x190], rdi
mov qword [rsp + 0x1b0], rdi
mov byte [rsp + 0x188], cl
mov qword [rsp + 0x198], rdi
mov qword [rsp + 0x1a0], rdi
lea rax, [rsp + 0x188]
mov qword [rsp + 0x1a8], rax
mov r14, qword [0x1402983b8]
cmp r14, 1
jbe 0x14011edf0
mov qword [rsp + 0x1b8], r14
mov ecx, dword [0x140288f70]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x14011eb77
mov rcx, qword [r14]
shl rcx, 4
mov edx, dword [rax + rcx + 8]
cmp edx, dword [r14 + 8]
jne 0x14011eb77
cmp qword [rax + rcx], 0
jne 0x14011ebae
mov rbx, qword [rsp + 0x1b8]
mov ecx, dword [0x140288f70]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x14011ed73
mov rcx, qword [rbx]
shl rcx, 4
mov qword [rax + rcx], r15
mov ecx, dword [rbx + 8]
mov rdx, qword [rbx]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
mov r15, qword [r12]
lea r14, [r15 + 0x38]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x14011ed7d
cmp byte [r15 + 0x40], 0
jne 0x14011ec3c
mov byte [r15 + 0x40], 1
mov rbx, qword [r15 + 8]
mov rax, qword [r15 + 0x18]
movabs rcx, 0xaaaaaaaaaaaaaaaa
mov qword [rsp + 0x48], rcx
mov dword [rsp + 0x30], 0x20
mov qword [rsp + 0x38], rax
mov dword [rsp + 0x40], 1
mov rax, qword [0x1402983a8]
mov qword [rsp + 0x44], rax
mov dword [rsp + 0x34], ebp
lea r15, [rbx + 0x18]
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x14011ee49
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov rax, qword [rbx + 0x10]
lea rcx, [rsp + 0x30]
call qword [case.0x1401d7990.0]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
lea r15, [rsp + 0x50]
mov rcx, r15
call fcn.14011e6a0
add r12, 8
cmp r12, r13
je 0x14011e758
jmp 0x14011ea82
mov rax, qword [rbx]
mov rax, qword [rax + 0xe0]
cmp rax, r14
jne 0x14011ee67
mov qword [rbx], r13
lea rcx, [rbx + 0x68]
mov rdx, qword [rbx + 0x70]
call fcn.14010c9e0
mov rbp, qword [rbx + 0x50]
test rbp, rbp
je 0x14011ecaf
mov r13, r14
mov r14, qword [rbx + 0x58]
mov rcx, rbp
cmp r14, rbp
jne 0x14011eeaf
mov qword [rbx + 0x58], rbp
call fcn.140172a44
mov r14, r13
mov rbp, qword [rbx + 0x30]
test rbp, rbp
jne 0x14011ee7a
mov rcx, rbx
call fcn.140172a44
lea r13, [0x14025fee0]
lea rbp, [fcn.14011f090]
jmp 0x14011ea5c
mov rax, qword [rbx]
mov rax, qword [rax + 0xe0]
cmp rax, rbp
jne 0x14011ecf8
mov rcx, rbx
mov edx, 1
call fcn.14011f090
jmp 0x14011ea49
lea rcx, [0x140017f50]
cmp rax, rcx
jne 0x14011ed8a
mov rcx, rbx
call fcn.140017f80
mov rcx, rbx
call fcn.140172a44
jmp 0x14011ea49
lea rcx, [0x1402983b0]
call fcn.140172b08
cmp dword [0x1402983b0], 0xffffffff
jne 0x14011eaa7
mov qword [0x1402983a8], 0
lea rcx, [0x1402983b0]
call fcn.140172aa8
jmp 0x14011eaa7
call fcn.140172a44
jmp 0x14011e7f8
call fcn.14003bc30
jmp 0x14011e917
mov rcx, rdi
call fcn.1400ec2e0
jmp 0x14011e94e
call fcn.14003bc30
jmp 0x14011eb95
mov rcx, r14
call fcn.1400ec2e0
jmp 0x14011ebc7
mov rcx, rbx
mov edx, 1
call qword [case.0x1401d7990.0]
jmp 0x14011ea49
lea rcx, [0x1402983b8]
call fcn.140007880
test al, al
je 0x14011eec9
mov qword [0x1402983c8], 0
lea r14, [0x1402983c0]
mov qword [0x1402983c0], 0xffffffffffffffff
mov rcx, r14
xor edx, edx
call fcn.140002400
mov qword [0x1402983b8], r14
lea rbx, [rsp + 0x50]
mov r15, qword [sym.imp.KERNEL32.dll_TlsGetValue]
jmp 0x14011e8cd
lea rcx, [0x1402983b8]
call fcn.140007880
test al, al
je 0x14011eed5
mov qword [0x1402983c8], 0
lea r14, [0x1402983c0]
mov qword [0x1402983c0], 0xffffffffffffffff
mov rcx, r14
xor edx, edx
call fcn.140002400
mov qword [0x1402983b8], r14
lea r15, [rsp + 0x50]
jmp 0x14011eb45
mov rcx, r15
call fcn.1400ec2e0
jmp 0x14011e9b3
mov rcx, r15
call fcn.1400ec2e0
jmp 0x14011ec24
xor eax, eax
jmp 0x14011e6fd
call fcn.140172a44
jmp 0x14011e7b2
mov rcx, rbx
mov edx, 1
call qword [case.0x1401d7990.0]
jmp 0x14011eccb
mov r13, r14
mov r14, qword [rbx + 0x38]
mov rcx, rbp
cmp r14, rbp
je 0x14011ee9e
add r14, 0xfffffffffffffff0
mov rcx, r14
call fcn.1401b86b0
cmp r14, rbp
jne 0x14011ee89
mov rcx, qword [rbx + 0x30]
mov qword [rbx + 0x38], rbp
call fcn.140172a44
mov r14, r13
jmp 0x14011ecbc
add r14, 0xfffffffffffffff0
mov rcx, r14
call fcn.1401b86b0
cmp r14, rbp
jne 0x14011eeaf
mov rcx, qword [rbx + 0x50]
jmp 0x14011eca3
mov r14, qword [0x1402983b8]
jmp 0x14011eddf
mov r14, qword [0x1402983b8]
jmp 0x14011ee32
mov rdi, qword [r14 - 0x18]
add r14, 0xffffffffffffffe8
test rdi, rdi
je 0x14011eef3
lock dec dword [rdi]
je 0x14011ef04
cmp r14, rbx
jne 0x14011eee1
mov rcx, qword [rsi + 0xd8]
jmp 0x14011e7d1
mov rcx, rdi
call fcn.14011ef20
mov rcx, rdi
call fcn.140172a44
jmp 0x14011eef3