Function at 0x10015a870
Capabilities:
Get thread local storage value

Disassembly:
push rsi
push rdi
push r13
push r14
push r15
sub rsp, 0x6f0
mov qword [rsp + 0xe8], 0xfffffffffffffffe
mov qword [rsp + 0x720], rbx
mov rax, qword [0x10022f440]
xor rax, rsp
mov qword [rsp + 0x6e8], rax
mov edi, r9d
mov r14d, r8d
mov r13, rdx
mov esi, ecx
call fcn.100163fa0
test al, al
je 0x10015a8da
call fcn.100163fc0
mov rcx, rax
xor r15d, r15d
mov qword [rsp + 0x20], r15
mov r9d, edi
xor edx, edx
lea r8d, [r15 + 0x30]
call fcn.1001646e0
jmp 0x10015a8dd
xor r15d, r15d
call fcn.100163fa0
test al, al
je 0x10015a901
call fcn.100163fc0
mov rcx, rax
mov qword [rsp + 0x20], r15
mov r9, rdi
xor edx, edx
lea r8d, [rdx + 0x38]
call fcn.1001646e0
test r13, r13
je 0x10015b086
mov qword [rsp + 0x88], r13
test esi, esi
jne 0x10015b074
xor edx, edx
lea rax, [fcn.100062040]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
lea rcx, [rsp + 0x100]
call fcn.10005b410
nop
mov qword [rsp + 0x30], r15
xor eax, eax
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x50], rax
mov dword [rsp + 0x4c], r14d
mov dword [rsp + 0x48], edi
mov eax, dword [rsp + 0x740]
mov dword [rsp + 0x50], eax
mov eax, dword [rsp + 0x748]
mov dword [rsp + 0x54], eax
cmp qword [r13 + 0x11a0], 0xffffffffffffffff
je 0x10015aa45
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x4a0]
call fcn.10015a360
nop
mov rcx, qword [r13 + 0x11a0]
imul rcx, rcx, 0x118
add rcx, qword [r13 + 0x1180]
lea rdx, [rsp + 0x4a0]
call fcn.1001527f0
nop
mov rdx, qword [rsp + 0x5a0]
test rdx, rdx
je 0x10015aa45
lea rax, [rsp + 0x4a0]
cmp rdx, rax
je 0x10015aa45
mov rax, rdx
and rax, 0xffffffffffffe000
mov qword [rsp + 0x98], rax
mov edi, 0x200
je 0x10015a9fe
cmp word [rax + 4], di
jne 0x10015a9fe
mov rax, qword [rax + 0x28]
mov qword [rsp + 0x98], rax
mov rax, qword [rax + 8]
mov rcx, qword [rax + 0x10]
dec rcx
not rcx
and rcx, rdx
mov qword [rsp + 0xd8], rcx
je 0x10015aa2b
cmp word [rcx + 4], di
jne 0x10015aa2b
mov rcx, qword [rcx + 0x28]
mov qword [rsp + 0xd8], rcx
mov rcx, qword [rcx + 8]
test byte [rcx + 0x28], 8
jne 0x10015aa3b
mov rax, qword [rcx]
call qword [rax + 0x28]
mov qword [rsp + 0x5a0], r15
jmp 0x10015aa4a
mov edi, 0x200
cmp qword [r13 + 0x11a8], 0xffffffffffffffff
je 0x10015ab0c
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x5c0]
call fcn.10015a450
nop
mov rcx, qword [r13 + 0x11a8]
imul rcx, rcx, 0x118
add rcx, qword [r13 + 0x1180]
lea rdx, [rsp + 0x5c0]
call fcn.1001527f0
nop
mov rdx, qword [rsp + 0x6c0]
test rdx, rdx
je 0x10015ab0c
lea rax, [rsp + 0x5c0]
cmp rdx, rax
je 0x10015ab0c
mov rax, rdx
and rax, 0xffffffffffffe000
mov qword [rsp + 0xa0], rax
je 0x10015aacd
cmp word [rax + 4], di
jne 0x10015aacd
mov rax, qword [rax + 0x28]
mov qword [rsp + 0xa0], rax
mov rax, qword [rax + 8]
mov rcx, qword [rax + 0x10]
dec rcx
not rcx
and rcx, rdx
mov qword [rsp + 0x70], rcx
je 0x10015aaf4
cmp word [rcx + 4], di
jne 0x10015aaf4
mov rcx, qword [rcx + 0x28]
mov qword [rsp + 0x70], rcx
mov rcx, qword [rcx + 8]
test byte [rcx + 0x28], 8
jne 0x10015ab04
mov rax, qword [rcx]
call qword [rax + 0x28]
mov qword [rsp + 0x6c0], r15
lea rcx, [rsp + 0x380]
call fcn.100152360
nop
mov rsi, qword [r13 + 0x1180]
mov r14d, 0x80
mov qword [rsp + 0xe0], rsi
mov rax, qword [r13 + 0x1190]
imul rax, rax, 0x118
add rax, qword [r13 + 0x1180]
cmp rsi, rax
je 0x10015ad63
mov rdx, rsi
lea rcx, [rsp + 0x380]
call fcn.100152470
lea rax, [rsp + 0x140]
mov qword [rsp + 0x240], rax
mov qword [rsp + 0x248], r14
mov qword [rsp + 0x250], r15
mov rdx, qword [rsp + 0x240]
test rdx, rdx
je 0x10015ac01
lea rax, [rsp + 0x140]
cmp rdx, rax
je 0x10015ac01
mov rax, rdx
and rax, 0xffffffffffffe000
mov qword [rsp + 0xb0], rax
je 0x10015abbc
cmp word [rax + 4], di
jne 0x10015abbc
mov rax, qword [rax + 0x28]
mov qword [rsp + 0xb0], rax
mov rax, qword [rax + 8]
mov rcx, qword [rax + 0x10]
dec rcx
not rcx
and rcx, rdx
mov qword [rsp + 0x80], rcx
je 0x10015abe9
cmp word [rcx + 4], di
jne 0x10015abe9
mov rcx, qword [rcx + 0x28]
mov qword [rsp + 0x80], rcx
mov rcx, qword [rcx + 8]
test byte [rcx + 0x28], 8
jne 0x10015abf9
mov rax, qword [rcx]
call qword [rax + 0x28]
mov qword [rsp + 0x240], r15
mov rdx, r15
mov qword [rsp + 0x250], rdx
mov rax, r14
mov qword [rsp + 0x248], rax
lea rcx, [rsp + 0x140]
mov qword [rsp + 0x240], rcx
lea rbx, [0x1000425bc]
mov qword [rsp + 0xc0], rbx
cmp word [rbx], 0
je 0x10015ac8e
cmp rax, rdx
jne 0x10015ac56
lea rcx, [rsp + 0x140]
call fcn.1000577e0
mov rdx, qword [rsp + 0x250]
movzx ecx, word [rbx]
mov rax, qword [rsp + 0x240]
mov word [rax + rdx*2], cx
mov rdx, qword [rsp + 0x250]
inc rdx
mov qword [rsp + 0x250], rdx
add rbx, 2
mov qword [rsp + 0xc0], rbx
mov rax, qword [rsp + 0x248]
jmp 0x10015ac36
cmp rax, rdx
jne 0x10015aca8
lea rcx, [rsp + 0x140]
call fcn.1000577e0
mov rdx, qword [rsp + 0x250]
mov rax, qword [rsp + 0x240]
mov word [rax + rdx*2], r15w
inc qword [rsp + 0x250]
lea rdx, [rsp + 0x140]
lea rcx, [rsp + 0x380]
call fcn.100152470
nop
mov rdx, qword [rsp + 0x240]
test rdx, rdx
je 0x10015ad57
lea rax, [rsp + 0x140]
cmp rdx, rax
je 0x10015ad57
mov rax, rdx
and rax, 0xffffffffffffe000
mov qword [rsp + 0x90], rax
je 0x10015ad12
cmp word [rax + 4], di
jne 0x10015ad12
mov rax, qword [rax + 0x28]
mov qword [rsp + 0x90], rax
mov rax, qword [rax + 8]
mov rcx, qword [rax + 0x10]
dec rcx
not rcx
and rcx, rdx
mov qword [rsp + 0xd0], rcx
je 0x10015ad3f
cmp word [rcx + 4], di
jne 0x10015ad3f
mov rcx, qword [rcx + 0x28]
mov qword [rsp + 0xd0], rcx
mov rcx, qword [rcx + 8]
test byte [rcx + 0x28], 8
jne 0x10015ad4f
mov rax, qword [rcx]
call qword [rax + 0x28]
mov qword [rsp + 0x240], r15
add rsi, 0x118
jmp 0x10015ab27
lea rax, [rsp + 0x260]
mov qword [rsp + 0x360], rax
mov qword [rsp + 0x368], r14
mov qword [rsp + 0x370], r15
mov rdx, qword [rsp + 0x360]
test rdx, rdx
je 0x10015ae07
lea rax, [rsp + 0x260]
cmp rdx, rax
je 0x10015ae07
mov rax, rdx
and rax, 0xffffffffffffe000
mov qword [rsp + 0xa8], rax
je 0x10015adc2
cmp word [rax + 4], di
jne 0x10015adc2
mov rax, qword [rax + 0x28]
mov qword [rsp + 0xa8], rax
mov rax, qword [rax + 8]
mov rcx, qword [rax + 0x10]
dec rcx
not rcx
and rcx, rdx
mov qword [rsp + 0xc8], rcx
je 0x10015adef
cmp word [rcx + 4], di
jne 0x10015adef
mov rcx, qword [rcx + 0x28]
mov qword [rsp + 0xc8], rcx
mov rcx, qword [rcx + 8]
test byte [rcx + 0x28], 8
jne 0x10015adff
mov rax, qword [rcx]
call qword [rax + 0x28]
mov qword [rsp + 0x360], r15
mov rdx, r15
mov qword [rsp + 0x370], rdx
mov qword [rsp + 0x368], r14
lea rax, [rsp + 0x260]
mov qword [rsp + 0x360], rax
lea rbx, [0x100042ca4]
mov qword [rsp + 0xb8], rbx
nop dword [rax]
cmp word [rbx], 0
je 0x10015ae98
cmp r14, rdx
jne 0x10015ae60
lea rcx, [rsp + 0x260]
call fcn.1000577e0
mov rdx, qword [rsp + 0x370]
movzx ecx, word [rbx]
mov rax, qword [rsp + 0x360]
mov word [rax + rdx*2], cx
mov rdx, qword [rsp + 0x370]
inc rdx
mov qword [rsp + 0x370], rdx
add rbx, 2
mov qword [rsp + 0xb8], rbx
mov r14, qword [rsp + 0x368]
jmp 0x10015ae40
cmp r14, rdx
jne 0x10015aeb2
lea rcx, [rsp + 0x260]
call fcn.1000577e0
mov rdx, qword [rsp + 0x370]
mov rax, qword [rsp + 0x360]
mov word [rax + rdx*2], r15w
inc qword [rsp + 0x370]
lea rdx, [rsp + 0x260]
lea rcx, [rsp + 0x380]
call fcn.100152470
nop
mov rdx, qword [rsp + 0x360]
test rdx, rdx
je 0x10015af55
lea rax, [rsp + 0x260]
cmp rdx, rax
je 0x10015af55
mov rax, rdx
and rax, 0xffffffffffffe000
mov qword [rsp + 0x58], rax
je 0x10015af16
cmp word [rax + 4], di
jne 0x10015af16
mov rax, qword [rax + 0x28]
mov qword [rsp + 0x58], rax
mov rax, qword [rax + 8]
mov rcx, qword [rax + 0x10]
dec rcx
not rcx
and rcx, rdx
mov qword [rsp + 0x60], rcx
je 0x10015af3d
cmp word [rcx + 4], di
jne 0x10015af3d
mov rcx, qword [rcx + 0x28]
mov qword [rsp + 0x60], rcx
mov rcx, qword [rcx + 8]
test byte [rcx + 0x28], 8
jne 0x10015af4d
mov rax, qword [rcx]
call qword [rax + 0x28]
mov qword [rsp + 0x360], r15
mov rcx, qword [rsp + 0x480]
call fcn.1001573f0
nop
mov rdx, qword [rsp + 0x480]
test rdx, rdx
je 0x10015afdb
lea rax, [rsp + 0x380]
cmp rdx, rax
je 0x10015afdb
mov rax, rdx
and rax, 0xffffffffffffe000
mov qword [rsp + 0x68], rax
je 0x10015af9c
cmp word [rax + 4], di
jne 0x10015af9c
mov rax, qword [rax + 0x28]
mov qword [rsp + 0x68], rax
mov rax, qword [rax + 8]
mov rcx, qword [rax + 0x10]
dec rcx
not rcx
and rcx, rdx
mov qword [rsp + 0x78], rcx
je 0x10015afc3
cmp word [rcx + 4], di
jne 0x10015afc3
mov rcx, qword [rcx + 0x28]
mov qword [rsp + 0x78], rcx
mov rcx, qword [rcx + 8]
test byte [rcx + 0x28], 8
jne 0x10015afd3
mov rax, qword [rcx]
call qword [rax + 0x28]
mov qword [rsp + 0x480], r15
lea rcx, [rsp + 0x100]
call fcn.10005b4f0
nop
jmp 0x10015aff3
call fcn.100068a00
mov rdi, rax
mov rbx, qword gs:[0x30]
add rbx, rax
mov rcx, rax
call fcn.10006c530
test eax, eax
jne 0x10015b01e
mov ecx, edi
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rbx, rax
test rbx, rbx
je 0x10015b02f
mov rax, qword [rbx + 0xd8]
test rax, rax
jne 0x10015b066
call fcn.100063d30
call fcn.100068a00
mov rdi, rax
mov rbx, qword gs:[0x30]
add rbx, rax
mov rcx, rax
call fcn.10006c530
test eax, eax
jne 0x10015b05f
mov ecx, edi
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rbx, rax
mov rax, qword [rbx + 0xd8]
cmp dword [rax + 0x204], 0
je 0x10015b074
call fcn.1000618f0
test r13, r13
je 0x10015b086
mov edx, 1
mov rcx, r13
call fcn.10015a7c0
xor eax, eax
mov rcx, qword [rsp + 0x6e8]
xor rcx, rsp
call fcn.10005f420
mov rbx, qword [rsp + 0x720]
add rsp, 0x6f0
pop r15
pop r14
pop r13
pop rdi
pop rsi
ret