Function at 0x14015f5a0
Capabilities:
Get thread local storage value

Disassembly:
push r15
push r14
push r12
push rsi
push rdi
push rbx
sub rsp, 0x98
movaps xmmword [rsp + 0x80], xmm6
mov rsi, rcx
mov rax, qword [0x14029a038]
xor rax, rsp
mov qword [rsp + 0x78], rax
lea rax, [0x14026bd30]
mov qword [rcx], rax
lea rax, [0x14026be10]
mov qword [rcx + 8], rax
lea rax, [0x14026be48]
mov qword [rcx + 0x10], rax
lea rax, [0x14026dc60]
mov qword [rcx + 0x18], rax
test byte [0x14029ccf0], 0x19
jne 0x14015fd82
mov r12, qword [rsi + 0x3e0]
lea r15, [rsi + 0x3e8]
cmp r12, r15
je 0x14015f68f
lea rdi, [rsi + 0x150]
lea rbx, [rsi + 0x240]
mov r14, qword [r12 + 0x20]
cmp byte [r14 + 0x128], 0
je 0x14015f650
mov rdx, qword [r14 + 0xb0]
mov rcx, rdi
call fcn.1401510b0
mov rdx, qword [r14 + 0xb8]
mov rcx, rbx
call fcn.1401510b0
mov rcx, r14
call fcn.14001b4a0
test r12, r12
je 0x14015fd7f
mov rcx, qword [r12 + 8]
test rcx, rcx
jne 0x14015f682
mov rax, qword [r12 + 0x10]
cmp qword [rax], r12
mov r12, rax
jne 0x14015f66b
mov r12, rax
cmp rax, r15
jne 0x14015f623
jmp 0x14015f68f
mov rax, rcx
mov rcx, qword [rcx]
test rcx, rcx
je 0x14015f678
jmp 0x14015f682
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rax, qword [rax + 0x88]
call qword [case.0x1401e7f70.0]
mov rcx, qword [rsi + 0x3e8]
call fcn.14002cf00
mov qword [rsi + 0x3e0], r15
xorps xmm6, xmm6
movups xmmword [rsi + 0x3e8], xmm6
lea rdi, [rsi + 0x400]
mov rcx, qword [rsi + 0x400]
call fcn.140113930
mov qword [rsi + 0x3f8], rdi
movups xmmword [rsi + 0x400], xmm6
mov qword [rsi + 0x338], 0
cmp byte [rsi + 0x429], 0
je 0x14015f70d
lea rdx, [rsi + 0x18]
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rax, qword [rax + 0x98]
call qword [case.0x1401e7f70.0]
lea rdi, [rsi + 0x468]
mov rax, qword [rsi + 0x468]
cmp rax, qword [rsi + 0x470]
jne 0x14015fb60
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rax, qword [rax + 0x50]
call qword [case.0x1401e7f70.0]
test rax, rax
je 0x14015f79d
mov eax, dword [0x1402a44f8]
mov ecx, dword [0x14029dfe4]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x14015fd31
mov ecx, dword [0x14029bf80]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x14015f79d
mov rcx, qword [0x1402a44e8]
shl rcx, 4
mov qword [rax + rcx], 0
mov ecx, dword [0x1402a44f0]
mov rdx, qword [0x1402a44e8]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
mov qword [rsi + 0x4b8], 0
mov rax, qword [rsi + 0x4b0]
mov byte [rax + 4], 1
mov rcx, qword [rsi + 0x4b0]
test rcx, rcx
je 0x14015f7c9
lock dec dword [rcx]
jne 0x14015f7c9
call fcn.14017b254
mov rcx, qword [rsi + 0x4a0]
test rcx, rcx
jne 0x14015fb48
lea rax, [rsi + 0x480]
mov rcx, qword [rsi + 0x488]
cmp rcx, rax
je 0x14015f822
xorps xmm0, xmm0
cmp qword [rcx + 0x10], 0
je 0x14015f81d
mov qword [rcx + 0x10], 0
mov rdx, qword [rcx]
mov r8, qword [rcx + 8]
mov qword [rdx + 8], r8
mov rdx, qword [rcx]
mov r8, qword [rcx + 8]
mov qword [r8], rdx
movups xmmword [rcx], xmm0
mov rcx, qword [rsi + 0x488]
cmp rcx, rax
jne 0x14015f7ef
mov rcx, qword [rdi]
test rcx, rcx
je 0x14015f836
mov qword [rsi + 0x470], rcx
call fcn.14017b254
mov rbx, qword [rsi + 0x438]
mov r14, qword [rsi + 0x440]
cmp r14, rbx
je 0x14015fdd3
mov rcx, qword [rsi + 0x450]
movabs r9, 0xf0f0f0f0f0f0f0f1
mov rax, rcx
mul r9
mov r8, rdx
shr r8, 4
and rdx, 0xfffffffffffffff0
add rdx, r8
mov rax, rcx
sub rax, rdx
imul rdi, rax, 0xe8
add rdi, qword [rbx + r8*8]
lea r15, [rsi + 0x458]
add rcx, qword [rsi + 0x458]
mov rax, rcx
mul r9
mov rax, rdx
and rax, 0xfffffffffffffff0
shr rdx, 4
add rax, rdx
sub rcx, rax
imul r12, rcx, 0xe8
add r12, qword [rbx + rdx*8]
cmp rdi, r12
jne 0x14015fde2
mov qword [r15], 0
mov rax, r14
sub rax, rbx
cmp rax, 0x11
jae 0x14015fe2c
shr rax, 3
mov ecx, 8
cmp rax, 1
jne 0x14015fe5f
mov qword [rsi + 0x450], rcx
cmp rbx, r14
je 0x14015f92b
mov rcx, qword [rbx]
call fcn.14017b254
add rbx, 8
cmp rbx, r14
jne 0x14015f8f2
mov rax, qword [rsi + 0x438]
mov rcx, qword [rsi + 0x440]
cmp rcx, rax
je 0x14015f92b
sub rax, rcx
add rax, 7
and rax, 0xfffffffffffffff8
add rax, rcx
mov qword [rsi + 0x440], rax
mov rcx, qword [rsi + 0x430]
test rcx, rcx
je 0x14015f93c
call fcn.14017b254
mov rcx, qword [rsi + 0x418]
call fcn.140113930
mov rcx, qword [rsi + 0x400]
call fcn.140113930
mov rcx, qword [rsi + 0x3e8]
call fcn.14002cf00
mov rcx, qword [rsi + 0x3c8]
mov qword [rsi + 0x3c8], 0
test rcx, rcx
je 0x14015f988
mov rax, qword [rcx]
mov rax, qword [rax]
mov edx, 1
call qword [case.0x1401e7f70.0]
mov rcx, qword [rsi + 0x3c0]
mov qword [rsi + 0x3c0], 0
test rcx, rcx
je 0x14015f9b0
mov rax, qword [rcx]
mov rax, qword [rax]
mov edx, 1
call qword [case.0x1401e7f70.0]
lea rax, [rsi + 0x390]
mov rcx, qword [rsi + 0x398]
cmp rcx, rax
je 0x14015f9f9
xorps xmm0, xmm0
cmp qword [rcx + 0x10], 0
je 0x14015f9f4
mov qword [rcx + 0x10], 0
mov rdx, qword [rcx]
mov r8, qword [rcx + 8]
mov qword [rdx + 8], r8
mov rdx, qword [rcx]
mov r8, qword [rcx + 8]
mov qword [r8], rdx
movups xmmword [rcx], xmm0
mov rcx, qword [rsi + 0x398]
cmp rcx, rax
jne 0x14015f9c6
mov rcx, qword [rsi + 0x378]
test rcx, rcx
je 0x14015fa11
mov qword [rsi + 0x380], rcx
call fcn.14017b254
lea rax, [rsi + 0x358]
mov rcx, qword [rsi + 0x360]
cmp rcx, rax
je 0x14015fa5a
xorps xmm0, xmm0
cmp qword [rcx + 0x10], 0
je 0x14015fa55
mov qword [rcx + 0x10], 0
mov rdx, qword [rcx]
mov r8, qword [rcx + 8]
mov qword [rdx + 8], r8
mov rdx, qword [rcx]
mov r8, qword [rcx + 8]
mov qword [r8], rdx
movups xmmword [rcx], xmm0
mov rcx, qword [rsi + 0x360]
cmp rcx, rax
jne 0x14015fa27
mov rcx, qword [rsi + 0x340]
test rcx, rcx
je 0x14015fa72
mov qword [rsi + 0x348], rcx
call fcn.14017b254
lea rax, str.pQ__
mov qword [rsi + 0x118], rax
lea rcx, [rsi + 0x240]
call fcn.14002cf40
lea rcx, [rsi + 0x150]
call fcn.14002cf40
mov rcx, qword [rsi + 0x120]
test rcx, rcx
je 0x14015faae
lock dec dword [rcx]
jne 0x14015faae
call fcn.14017b254
mov rax, qword [rsi + 0x90]
mov rbx, qword [rsi + 0x98]
cmp rbx, rax
jne 0x14015fe73
mov rcx, qword [rsi + 0x80]
call fcn.14017b220
lea rcx, [rsi + 0x68]
xor edx, edx
call fcn.14002d310
mov rcx, qword [rsi + 0x60]
test rcx, rcx
je 0x14015faef
lock dec dword [rcx]
jne 0x14015faef
call fcn.14017b254
mov rdi, qword [rsi + 0x30]
mov qword [rsi + 0x30], 0
test rdi, rdi
je 0x14015fb10
mov rcx, rdi
call fcn.14002cfb0
mov rcx, rdi
call fcn.14017b254
mov rcx, qword [rsi + 0x20]
test rcx, rcx
je 0x14015fb22
lock dec dword [rcx]
je 0x14015fecf
mov rcx, qword [rsp + 0x78]
xor rcx, rsp
call fcn.14017e7b0
movaps xmm6, xmmword [rsp + 0x80]
add rsp, 0x98
pop rbx
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret
lock dec dword [rcx]
jne 0x14015f7d9
mov rax, qword [rcx + 0x10]
call qword [case.0x1401e7f70.0]
jmp 0x14015f7d9
lea rax, [rsp + 0x50]
mov qword [rax + 0x10], rdi
lea rcx, [rsi + 0x480]
mov qword [rax + 8], rcx
mov rcx, qword [rsi + 0x480]
mov qword [rax], rcx
mov qword [rcx + 8], rax
mov qword [rsi + 0x480], rax
mov qword [rax + 0x18], 0
mov rcx, 0xffffffffffffffff
cmp dword [rsi + 0x498], 0
jne 0x14015ff6d
mov qword [rsp + 0x70], rcx
mov rbx, qword [rsp + 0x60]
mov rdx, qword [rbx + 8]
sub rdx, qword [rbx]
sar rdx, 3
cmp rdx, rcx
cmovae rdx, rcx
xor eax, eax
test rdx, rdx
je 0x14015fbea
mov r8, qword [rbx]
mov r9, qword [rbx + 8]
sub r9, r8
sar r9, 3
cmp r9, rax
jbe 0x14015ff84
cmp qword [r8 + rax*8], 0
je 0x14015ff87
test rbx, rbx
je 0x14015f728
mov rdx, qword [rbx]
mov r8, qword [rbx + 8]
sub r8, rdx
sar r8, 3
cmp r8, rcx
cmovb rcx, r8
cmp rax, rcx
je 0x14015fc98
cmp r8, rax
jbe 0x14015ff67
mov rcx, qword [rdx + rax*8]
mov rax, qword [rcx]
mov rax, qword [rax]
call qword [case.0x1401e7f70.0]
mov rbx, qword [rsp + 0x60]
test rbx, rbx
je 0x14015f728
mov rax, qword [rsp + 0x68]
mov rcx, qword [rsp + 0x70]
inc rax
mov qword [rsp + 0x68], rax
mov rdx, qword [rbx + 8]
sub rdx, qword [rbx]
sar rdx, 3
cmp rdx, rcx
cmovae rdx, rcx
cmp rax, rdx
jae 0x14015fbf3
mov r8, qword [rbx]
mov r9, qword [rbx + 8]
sub r9, r8
sar r9, 3
cmp r9, rax
jbe 0x14015ff6a
cmp qword [r8 + rax*8], 0
jne 0x14015fbf3
inc rax
mov qword [rsp + 0x68], rax
cmp rdx, rax
jne 0x14015fc61
mov rax, rdx
jmp 0x14015fbf3
mov rax, qword [rbx + 0x20]
cmp rax, qword [rbx + 0x18]
jne 0x14015fcc0
mov rcx, qword [rbx]
mov rdx, qword [rbx + 8]
cmp rcx, rdx
je 0x14015fcc0
lea rax, [rcx + 8]
cmp qword [rcx], 0
je 0x14015fd03
mov rcx, rax
cmp rax, rdx
jne 0x14015fcae
cmp qword [rsp + 0x60], 0
je 0x14015f728
mov qword [rsp + 0x60], 0
mov rax, qword [rsp + 0x50]
mov rcx, qword [rsp + 0x58]
mov qword [rax + 8], rcx
mov rcx, qword [rsp + 0x58]
mov qword [rcx], rax
jmp 0x14015f728
mov r8, qword [rax]
test r8, r8
je 0x14015fcff
mov qword [rcx], r8
add rcx, 8
add rax, 8
cmp rax, rdx
jne 0x14015fcf0
cmp rdx, rcx
jb 0x14015ffa0
mov r14, rcx
sub r14, rdx
je 0x14015fcc0
mov r15, qword [rbx + 8]
mov r8, r15
sub r8, rdx
call fcn.140180220
add r14, r15
mov qword [rbx + 8], r14
jmp 0x14015fcc0
lea rcx, [0x1402a44f8]
call fcn.14017b2bc
cmp dword [0x1402a44f8], 0xffffffff
jne 0x14015f763
mov qword [0x1402a44f0], 0
lea rcx, [0x1402a44e8]
mov qword [0x1402a44e8], 0xffffffffffffffff
xor edx, edx
call fcn.140002850
lea rcx, [0x1402a44f8]
call fcn.14017b25c
jmp 0x14015f763
int3
lea rdi, [rsp + 0x50]
mov rcx, rdi
call fcn.1401193e0
call sub.KERNEL32.dll_GetCurrentThreadId
xor ecx, ecx
mov qword [rsp + 0x40], rcx
mov qword [rsp + 0x38], rdi
mov dword [rsp + 0x30], eax
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x20], rsi
mov dword [rsp + 0x48], 0x800
lea rdx, [0x14029ccf0]
lea r8, [0x14027cb90]
mov cl, 0x44
xor r9d, r9d
call fcn.140104700
jmp 0x14015f602
lea r15, [rsi + 0x458]
mov r14, rbx
jmp 0x14015f8bc
lea rbx, [rbx + r8*8]
test rdi, rdi
je 0x14015ffa3
mov rcx, rdi
call fcn.140118040
add rdi, 0xe8
mov rax, rdi
sub rax, qword [rbx]
cmp rax, 0xf68
jne 0x14015fe14
mov rdi, qword [rbx + 8]
add rbx, 8
cmp rdi, r12
jne 0x14015fde6
mov rbx, qword [rsi + 0x438]
mov r14, qword [rsi + 0x440]
jmp 0x14015f8bc
mov rcx, qword [rbx]
call fcn.14017b254
mov rbx, qword [rsi + 0x438]
mov r14, qword [rsi + 0x440]
add rbx, 8
mov qword [rsi + 0x438], rbx
mov rax, r14
sub rax, rbx
cmp rax, 0x10
jbe 0x14015f8d3
jmp 0x14015fe2c
cmp rax, 2
jne 0x14015f8ed
mov ecx, 0x11
jmp 0x14015f8e6
mov rcx, qword [rsi + 0x88]
jbe 0x14015fed9
cmp rcx, rbx
jb 0x14015ffa6
cmp rcx, rax
jb 0x14015ffa9
cmp rax, rbx
jg 0x14015ffac
imul rax, rax, 0xb8
mov rdi, qword [rsi + 0x80]
add rdi, rax
imul rbx, rbx, 0xb8
sub rbx, rax
mov rcx, rdi
call fcn.140118040
add rdi, 0xb8
add rbx, 0xffffffffffffff48
jne 0x14015feb2
jmp 0x14015fac5
call fcn.14017b254
jmp 0x14015fb22
cmp rcx, rax
jb 0x14015ffaf
jl 0x14015ffb2
je 0x14015ff24
imul rax, rax, 0xb8
mov rdi, qword [rsi + 0x80]
add rdi, rax
imul r14, rcx, 0xb8
sub r14, rax
mov rcx, rdi
call fcn.140118040
add rdi, 0xb8
add r14, 0xffffffffffffff48
jne 0x14015ff05
mov rax, qword [rsi + 0x88]
cmp rax, rbx
jb 0x14015ffb5
test rbx, rbx
js 0x14015ffb8
je 0x14015fac5
mov rdi, qword [rsi + 0x80]
imul rbx, rbx, 0xb8
mov rcx, rdi
call fcn.140118040
add rdi, 0xb8
add rbx, 0xffffffffffffff48
jne 0x14015ff4a
jmp 0x14015fac5
int3
int3
mov rcx, qword [rsi + 0x470]
sub rcx, qword [rsi + 0x468]
sar rcx, 3
jmp 0x14015fba5
int3
inc rax
mov qword [rsp + 0x68], rax
cmp rdx, rax
jne 0x14015fbc8
mov rax, rdx
jmp 0x14015fbea
int3
int3
int3
int3
int3
int3
int3
int3
int3