Function at 0x14005cf40
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, 0x48
mov rbx, r8
mov r14, rdx
mov rdi, rcx
mov rax, qword [0x14033f038]
xor rax, rsp
mov qword [rsp + 0x40], rax
lea rsi, [rcx + 0x18]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x14005d2e5
mov r13, qword [rdi + 0x50]
mov rax, qword [rdi + 0x58]
mov r8, rax
mov r9, rax
mov rdx, rax
sub r8, r13
je 0x14005cfdf
sar r8, 4
mov rcx, r13
mov rdx, r8
shr rdx, 1
mov r9, rdx
shl r9, 4
cmp qword [rcx + r9], r14
jae 0x14005cfba
not rdx
add rdx, r8
add rcx, r9
add rcx, 0x10
mov r8, rdx
test rdx, rdx
jne 0x14005cf9d
mov r9, rax
mov rdx, rax
cmp rcx, rax
je 0x14005cfdf
xor edx, edx
cmp qword [rcx], r14
setbe dl
shl rdx, 4
add rdx, rcx
mov r9, rcx
mov r15, rax
cmp r9, rdx
je 0x14005cfea
mov r15, r9
cmp r15, rax
je 0x14005d45d
sub r15, r13
sar r15, 4
shl r15, 4
mov r12, qword [r13 + r15 + 8]
movzx ebp, byte [rdi + 0x20]
mov r14, qword [0x140351380]
cmp r14, 1
jbe 0x14005d38a
mov ecx, dword [0x1403411e0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x14005d383
mov rcx, qword [r14]
shl rcx, 4
mov edx, dword [rax + rcx + 8]
cmp edx, dword [r14 + 8]
jne 0x14005d383
mov rcx, qword [rax + rcx]
add r15, r13
add r15, 8
mov eax, dword [r12 + 0x20]
mov edx, dword [r12 + 0x24]
mov r8d, dword [rbx]
and r8d, eax
je 0x14005d10e
cmp edx, 1
jne 0x14005d10e
xor eax, eax
test bpl, bpl
je 0x14005d3de
cmp dword [r12 + 0x28], 0
je 0x14005d3de
xor r13d, r13d
test r12, r12
je 0x14005d091
lock inc dword [r12]
mov qword [rsp + 0x28], r12
mov dword [rsp + 0x30], r13d
mov rax, qword [rbx]
mov qword [rsp + 0x34], rax
mov rax, qword [rcx + 0xe0]
cmp rax, qword [rcx + 0xe8]
jae 0x14005d280
test rax, rax
je 0x14005d3d3
lea rdx, [rsp + 0x30]
mov qword [rax], r12
test r12, r12
je 0x14005d0d2
lock inc dword [r12]
mov r8d, dword [rdx + 8]
mov dword [rax + 0x10], r8d
mov rdx, qword [rdx]
mov qword [rax + 8], rdx
add rax, 0x18
mov qword [rcx + 0xe0], rax
mov r14, qword [rsp + 0x28]
test r14, r14
je 0x14005d14c
lock dec dword [r14]
jne 0x14005d14c
mov rcx, r14
call fcn.14015d880
mov rcx, r14
call fcn.14016eccc
jmp 0x14005d14c
test edx, edx
sete r9b
cmp r8d, eax
je 0x14005d375
test r9b, r9b
jne 0x14005d06d
cmp edx, 1
jne 0x14005d347
xor edx, edx
and eax, dword [rbx + 4]
setne dl
lea r13d, [rdx*8 + 9]
test bpl, bpl
je 0x14005d14c
test eax, eax
je 0x14005d250
mov rax, qword [rbx]
mov qword [r12 + 0x2c], rax
mov dword [r12 + 0x28], r13d
lea rbx, [rdi + 0x68]
mov r15, qword [r15]
lea r14, [rdi + 0x70]
mov rax, qword [rdi + 0x70]
test r13d, r13d
je 0x14005d3fa
cmp r13d, 9
je 0x14005d3fa
test rax, rax
je 0x14005d45d
mov rdx, rax
mov rcx, r14
cmp qword [rdx + 0x20], r15
jb 0x14005d267
mov rcx, rdx
mov rdx, qword [rdx]
test rdx, rdx
jne 0x14005d18a
cmp rcx, r14
je 0x14005d45d
cmp r15, qword [rcx + 0x20]
jb 0x14005d45d
test rcx, rcx
je 0x14005d3d6
mov r8, qword [rcx + 8]
test r8, r8
jne 0x14005d2b2
mov r8, rcx
mov rdx, qword [r8 + 0x10]
cmp qword [rdx], r8
mov r8, rdx
jne 0x14005d1cb
cmp qword [rbx], rcx
jne 0x14005d1df
mov qword [rbx], rdx
dec qword [rdi + 0x78]
mov r8, qword [rcx]
mov r9, rcx
test r8, r8
jne 0x14005d296
mov r8, qword [r9 + 8]
test r8, r8
jne 0x14005d2a2
mov r10b, 1
xor r8d, r8d
mov rdx, qword [r9 + 0x10]
cmp qword [rdx], r9
jne 0x14005d2db
mov qword [rdx], r8
cmp r9, rax
jne 0x14005d2cb
xor edx, edx
mov rax, r8
movzx r11d, byte [r9 + 0x18]
cmp r9, rcx
jne 0x14005d303
test rax, rax
setne r9b
test r11b, r11b
je 0x14005d2c3
test r9b, r9b
jne 0x14005d270
call fcn.14016eccc
jmp 0x14005d45d
cmp dword [r12 + 0x28], 9
je 0x14005d3d9
mov r13d, 9
jmp 0x14005d087
add rdx, 8
jmp 0x14005d197
test r10b, r10b
jne 0x14005d6ab
mov byte [r8 + 0x18], 1
jmp 0x14005d246
add rcx, 0xd8
lea rdx, [rsp + 0x28]
call fcn.1400ae020
jmp 0x14005d0ec
mov rdx, qword [rcx + 8]
mov r9, rcx
test rdx, rdx
jne 0x14005d2f2
mov rdx, qword [r9 + 0x10]
mov qword [r8 + 0x10], rdx
xor r10d, r10d
jmp 0x14005d205
mov rdx, r8
mov r8, qword [r8]
test r8, r8
je 0x14005d1d7
jmp 0x14005d2b2
xor r9d, r9d
jmp 0x14005d241
mov rdx, qword [r9 + 0x10]
add rdx, 8
mov rdx, qword [rdx]
jmp 0x14005d223
mov qword [rdx + 8], r8
mov rdx, qword [r9 + 0x10]
jmp 0x14005d2d3
mov rcx, rsi
call fcn.140047ff0
jmp 0x14005cf7d
mov r9, rdx
mov rdx, qword [rdx]
test rdx, rdx
je 0x14005d1f2
jmp 0x14005d2f2
mov rdi, qword [rcx + 0x10]
mov qword [r9 + 0x10], rdi
mov rbx, qword [rcx + 0x10]
xor r14d, r14d
cmp qword [rbx], rcx
setne r14b
mov qword [rdi + r14*8], r9
mov rdi, qword [rcx]
mov qword [r9], rdi
mov qword [rdi + 0x10], r9
mov rdi, qword [rcx + 8]
mov qword [r9 + 8], rdi
test rdi, rdi
jne 0x14005d37d
mov bl, byte [rcx + 0x18]
mov byte [r9 + 0x18], bl
cmp rax, rcx
cmove rax, r9
jmp 0x14005d231
mov rax, qword [rbx]
mov qword [r12 + 0x2c], rax
mov dword [r12 + 0x28], 0x11
mov rax, qword [rdi + 0x70]
test rax, rax
je 0x14005d45d
lea r14, [rdi + 0x70]
mov r15, qword [r15]
lea rbx, [rdi + 0x68]
jmp 0x14005d184
xor r9d, r9d
jmp 0x14005d11d
mov qword [rdi + 0x10], r9
jmp 0x14005d334
xor ecx, ecx
jmp 0x14005d047
lea rcx, [0x140351380]
call fcn.14006d330
test al, al
je 0x14005d666
xorps xmm0, xmm0
movups xmmword [0x140351388], xmm0
lea r14, [0x140351388]
mov rcx, r14
xor edx, edx
call fcn.140041af0
lea rcx, [0x140351380]
mov rdx, r14
xor r8d, r8d
mov r9, rcx
call fcn.14006d410
jmp 0x14005d018
int3
int3
mov eax, 9
mov rcx, qword [rbx]
mov qword [r12 + 0x2c], rcx
mov dword [r12 + 0x28], eax
lea rbx, [rdi + 0x68]
mov r15, qword [r15]
lea r14, [rdi + 0x70]
mov rax, qword [rdi + 0x70]
mov r13, r14
mov r12, r14
test rax, rax
jne 0x14005d67a
mov ecx, 0x28
call fcn.14016ecd4
mov qword [rax + 0x20], r15
xorps xmm0, xmm0
movups xmmword [rax], xmm0
mov qword [rax + 0x10], r12
mov qword [r13], rax
mov rcx, qword [rbx]
mov rcx, qword [rcx]
test rcx, rcx
je 0x14005d437
mov qword [rbx], rcx
mov rax, qword [r13]
mov r8, qword [r14]
test r8, r8
je 0x14005d648
test rax, rax
je 0x14005d64b
cmp rax, r8
sete byte [rax + 0x18]
jne 0x14005d484
inc qword [rdi + 0x78]
mov byte [rdi + 0x20], 0
mov rcx, qword [rsp + 0x40]
xor rcx, rsp
call fcn.140171860
mov rcx, rsi
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov r9b, 1
mov rdx, qword [rax + 0x10]
cmp byte [rdx + 0x18], 0
jne 0x14005d455
mov rcx, qword [rdx + 0x10]
mov r10, qword [rcx]
cmp r10, rdx
je 0x14005d506
test r10, r10
jne 0x14005d56f
cmp qword [rdx], rax
je 0x14005d59a
mov rax, rdx
mov byte [rax + 0x18], 1
mov byte [rcx + 0x18], 0
test rcx, rcx
je 0x14005d64e
mov rax, qword [rcx + 8]
test rax, rax
je 0x14005d651
mov rdx, qword [rax]
mov qword [rcx + 8], rdx
test rdx, rdx
jne 0x14005d628
mov rdx, qword [rcx + 0x10]
mov qword [rax + 0x10], rdx
mov rdx, qword [rcx + 0x10]
xor r8d, r8d
cmp qword [rdx], rcx
setne r8b
mov qword [rdx + r8*8], rax
mov qword [rax], rcx
mov qword [rcx + 0x10], rax
jmp 0x14005d455
mov r10, qword [rcx + 8]
test r10, r10
je 0x14005d516
cmp byte [r10 + 0x18], 0
je 0x14005d57a
cmp qword [rdx], rax
jne 0x14005d5df
mov rax, rdx
mov byte [rax + 0x18], 1
mov byte [rcx + 0x18], 0
test rcx, rcx
je 0x14005d654
mov rax, qword [rcx]
test rax, rax
je 0x14005d657
mov rdx, qword [rax + 8]
mov qword [rcx], rdx
test rdx, rdx
jne 0x14005d61f
mov rdx, qword [rcx + 0x10]
mov qword [rax + 0x10], rdx
mov rdx, qword [rcx + 0x10]
xor r8d, r8d
cmp qword [rdx], rcx
setne r8b
mov qword [rdx + r8*8], rax
mov qword [rax + 8], rcx
jmp 0x14005d4fd
cmp byte [r10 + 0x18], 0
jne 0x14005d4a6
add r10, 0x18
mov byte [rdx + 0x18], r9b
mov rax, rcx
cmp rcx, r8
sete byte [rcx + 0x18]
mov byte [r10], r9b
jne 0x14005d487
jmp 0x14005d455
test rdx, rdx
je 0x14005d65a
test rax, rax
je 0x14005d65d
mov r8, qword [rax + 8]
mov qword [rdx], r8
test r8, r8
jne 0x14005d631
mov qword [rax + 0x10], rcx
mov rcx, qword [rdx + 0x10]
xor r8d, r8d
cmp qword [rcx], rdx
setne r8b
mov qword [rcx + r8*8], rax
mov qword [rax + 8], rdx
mov qword [rdx + 0x10], rax
mov rcx, qword [rax + 0x10]
jmp 0x14005d4b2
test rdx, rdx
je 0x14005d660
mov rax, qword [rdx + 8]
test rax, rax
je 0x14005d663
mov r8, qword [rax]
mov qword [rdx + 8], r8
test r8, r8
jne 0x14005d63e
mov qword [rax + 0x10], rcx
mov rcx, qword [rdx + 0x10]
xor r8d, r8d
cmp qword [rcx], rdx
setne r8b
mov qword [rcx + r8*8], rax
mov qword [rax], rdx
mov qword [rdx + 0x10], rax
mov rcx, qword [rax + 0x10]
jmp 0x14005d522
mov qword [rdx + 0x10], rcx
jmp 0x14005d54f
mov qword [rdx + 0x10], rcx
jmp 0x14005d4e0
mov qword [r8 + 0x10], rdx
mov rcx, qword [rdx + 0x10]
jmp 0x14005d5b8
mov qword [r8 + 0x10], rdx
mov rcx, qword [rdx + 0x10]
jmp 0x14005d5f9
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
mov r14, qword [0x140351380]
jmp 0x14005d018
jbe 0x14005d459
jmp 0x14005d697
mov r12, rax
mov rax, qword [rax + 0x20]
cmp r15, rax
jae 0x14005d672
mov rax, qword [r12]
test rax, rax
jne 0x14005d67a
mov r13, r12
jmp 0x14005d409
mov rax, qword [r12 + 8]
test rax, rax
jne 0x14005d67a
lea r13, [r12 + 8]
jmp 0x14005d409
mov r8, qword [rdx + 0x10]
mov r9b, byte [rdx + 0x18]
cmp qword [r8], rdx
je 0x14005d7aa
test r9b, r9b
je 0x14005d7ea
mov r8, qword [rdx]
test r8, r8
jne 0x14005d6f5
mov r8, qword [rdx + 8]
test r8, r8
jne 0x14005d6ec
mov byte [rdx + 0x18], 0
mov rdx, qword [rdx + 0x10]
cmp rdx, rax
je 0x14005d781
jmp 0x14005d78d
cmp byte [r8 + 0x18], 0
je 0x14005d713
jmp 0x14005d6d6
cmp byte [r8 + 0x18], 0
jne 0x14005d6cd
mov rax, qword [rdx + 8]
test rax, rax
je 0x14005d851
cmp byte [rax + 0x18], 0
jne 0x14005d851
mov rax, rdx
mov rdx, qword [rax + 0x10]
mov r8b, byte [rdx + 0x18]
mov byte [rax + 0x18], r8b
mov r8b, 1
mov byte [rdx + 0x18], r8b
mov rdx, qword [rax + 8]
mov byte [rdx + 0x18], r8b
mov rax, qword [rax + 0x10]
test rax, rax
je 0x14005d992
mov rdx, qword [rax + 8]
test rdx, rdx
je 0x14005d995
mov r8, qword [rdx]
mov qword [rax + 8], r8
test r8, r8
jne 0x14005d7e1
mov r8, qword [rax + 0x10]
mov qword [rdx + 0x10], r8
mov r8, qword [rax + 0x10]
xor r9d, r9d
cmp qword [r8], rax
setne r9b
mov qword [r8 + r9*8], rdx
mov qword [rdx], rax
mov qword [rax + 0x10], rdx
jmp 0x14005d246
mov rdx, rax
mov byte [rdx + 0x18], 1
jmp 0x14005d246
cmp byte [rdx + 0x18], 0
je 0x14005d784
mov r8, qword [rdx + 0x10]
xor r9d, r9d
cmp qword [r8], rdx
sete r9b
mov rdx, qword [r8 + r9*8]
jmp 0x14005d6ab
test r9b, r9b
je 0x14005d998
mov r8, qword [rdx]
test r8, r8
jne 0x14005d8a6
mov r9, qword [rdx + 8]
test r9, r9
jne 0x14005d91a
mov byte [rdx + 0x18], 0
mov rdx, qword [rdx + 0x10]
cmp byte [rdx + 0x18], 0
je 0x14005d784
cmp rdx, rax
je 0x14005d784
jmp 0x14005d793
mov qword [r8 + 0x10], rax
jmp 0x14005d75b
mov byte [rdx + 0x18], 1
mov byte [r8 + 0x18], 0
mov r8, qword [rdx + 0x10]
test r8, r8
je 0x14005d98c
mov r9, qword [r8 + 8]
test r9, r9
je 0x14005d98f
mov r10, qword [r9]
mov qword [r8 + 8], r10
test r10, r10
je 0x14005d81d
mov qword [r10 + 0x10], r8
mov r10, qword [r8 + 0x10]
mov qword [r9 + 0x10], r10
mov r10, qword [r8 + 0x10]
xor r11d, r11d
cmp qword [r10], r8
setne r11b
mov qword [r10 + r11*8], r9
mov qword [r9], r8
mov qword [r8 + 0x10], r9
mov r8, qword [rdx]
cmp rax, r8
cmove rax, rdx
mov rdx, qword [r8 + 8]
jmp 0x14005d6c5
mov byte [r8 + 0x18], 1
mov byte [rdx + 0x18], 0
test rdx, rdx
je 0x14005d9ff
mov rax, qword [rdx]
test rax, rax
je 0x14005da02
mov r8, qword [rax + 8]
mov qword [rdx], r8
test r8, r8
jne 0x14005da05
mov r8, qword [rdx + 0x10]
mov qword [rax + 0x10], r8
mov r8, qword [rdx + 0x10]
xor r9d, r9d
cmp qword [r8], rdx
setne r9b
mov qword [r8 + r9*8], rax
mov qword [rax + 8], rdx
mov qword [rdx + 0x10], rax
jmp 0x14005d716
cmp byte [r8 + 0x18], 0
jne 0x14005d7bf
mov rax, rdx
mov rdx, qword [rax + 0x10]
mov r8b, byte [rdx + 0x18]
mov byte [rax + 0x18], r8b
mov r8b, 1
mov byte [rdx + 0x18], r8b
mov rdx, qword [rax]
mov byte [rdx + 0x18], r8b
mov rax, qword [rax + 0x10]
test rax, rax
je 0x14005d9f9
mov rdx, qword [rax]
test rdx, rdx
je 0x14005d9fc
mov r8, qword [rdx + 8]
mov qword [rax], r8
test r8, r8
jne 0x14005d983
mov r8, qword [rax + 0x10]
mov qword [rdx + 0x10], r8
mov r8, qword [rax + 0x10]
xor r9d, r9d
cmp qword [r8], rax
setne r9b
mov qword [r8 + r9*8], rdx
mov qword [rdx + 8], rax
jmp 0x14005d778
cmp byte [r9 + 0x18], 0
jne 0x14005d7cc
test r8, r8
jne 0x14005da1a
mov byte [r9 + 0x18], 1
mov byte [rdx + 0x18], 0
test rdx, rdx
je 0x14005da14
mov rax, qword [rdx + 8]
test rax, rax
je 0x14005da17
mov r8, qword [rax]
mov qword [rdx + 8], r8
test r8, r8
jne 0x14005da2a
mov r8, qword [rdx + 0x10]
mov qword [rax + 0x10], r8
mov r8, qword [rdx + 0x10]
xor r9d, r9d
cmp qword [r8], rdx
setne r9b
mov qword [r8 + r9*8], rax
mov qword [rax], rdx
mov qword [rdx + 0x10], rax
jmp 0x14005d8b4
mov qword [r8 + 0x10], rax
jmp 0x14005d8f7
int3
int3
int3
int3
mov byte [rdx + 0x18], 1
mov byte [r8 + 0x18], 0
mov r8, qword [rdx + 0x10]
test r8, r8
je 0x14005d9f3
mov r9, qword [r8]
test r9, r9
je 0x14005d9f6
mov r10, qword [r9 + 8]
mov qword [r8], r10
test r10, r10
jne 0x14005da0e
mov r10, qword [r8 + 0x10]
mov qword [r9 + 0x10], r10
mov r10, qword [r8 + 0x10]
xor r11d, r11d
cmp qword [r10], r8
setne r11b
mov qword [r10 + r11*8], r9
mov qword [r9 + 8], r8
mov qword [r8 + 0x10], r9
mov r8, qword [rdx + 8]
cmp rax, r8
cmove rax, rdx
mov rdx, qword [r8]
jmp 0x14005d7b3
int3
int3
int3
int3
int3
int3
mov qword [r8 + 0x10], rdx
jmp 0x14005d87f
mov qword [r10 + 0x10], r8
jmp 0x14005d9be
int3
int3
cmp byte [r8 + 0x18], 0
jne 0x14005d92e
jmp 0x14005d8b1
mov qword [r8 + 0x10], rdx
jmp 0x14005d95d