Function at 0x18019e2e0
Capabilities:
Get thread local storage value

Disassembly:
mov qword [rsp + 0x10], rdx
push rbx
push rbp
push rsi
push r12
push r15
sub rsp, 0x50
xor r12d, r12d
movabs rbp, 0x1fffffffffffffff
mov rsi, rdx
mov dword [rcx + 8], r12d
mov eax, dword [rdx + 8]
mov r15, rcx
mov dword [rcx + 0xce40], eax
mov rbx, rax
cmp rax, rbp
jbe 0x18019e31d
mov rax, r12
jmp 0x18019e345
mov ecx, dword [0x18025e63c]
test ecx, ecx
jns 0x18019e32c
mov rax, r12
jmp 0x18019e332
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rcx, qword [rax]
lea r8, [rbx*8]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov qword [r15 + 0xce48], rax
test rax, rax
jne 0x18019e362
mov eax, 0x8007000e
add rsp, 0x50
pop r15
pop r12
pop rsi
pop rbp
pop rbx
ret
mov qword [rsp + 0x98], rdi
mov edi, r12d
cmp dword [rsi + 8], r12d
jbe 0x18019e3d5
mov rbx, r12
nop word [rax + rax]
mov rdx, qword [rsi + 0xce48]
lea r8, [rsp + 0x80]
mov rcx, r15
mov rdx, qword [rbx + rdx]
call fcn.18019f5f0
test eax, eax
js 0x18019e9e6
mov rax, qword [rsi + 0xce48]
mov rdx, qword [rsp + 0x80]
inc edi
mov rcx, qword [rbx + rax]
add rbx, 8
mov qword [rcx + 0x40], rdx
mov rax, qword [rsi + 0xce48]
mov rcx, qword [rbx + rax - 8]
mov qword [rdx + 0x40], rcx
cmp edi, dword [rsi + 8]
jb 0x18019e380
mov dword [r15 + 0xc], r12d
mov eax, dword [rsi + 0xc]
mov dword [r15 + 0xce50], eax
mov rbx, rax
cmp rax, rbp
jbe 0x18019e3f0
mov rax, r12
jmp 0x18019e418
mov ecx, dword [0x18025e63c]
test ecx, ecx
jns 0x18019e3ff
mov rax, r12
jmp 0x18019e405
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rcx, qword [rax]
lea r8, [rbx*8]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov qword [r15 + 0xce58], rax
test rax, rax
jne 0x18019e42e
mov eax, 0x8007000e
jmp 0x18019e9e6
mov edi, r12d
cmp dword [rsi + 0xc], r12d
jbe 0x18019e4a7
mov rbx, r12
nop word [rax + rax]
mov rdx, qword [rsi + 0xce58]
lea r8, [rsp + 0x80]
mov rcx, r15
mov rdx, qword [rbx + rdx]
call fcn.18019f710
test eax, eax
js 0x18019e9e6
mov rax, qword [rsi + 0xce58]
mov rdx, qword [rsp + 0x80]
mov rcx, qword [rbx + rax]
mov qword [rcx + 0x40], rdx
mov rax, qword [rsi + 0xce58]
mov rcx, qword [rbx + rax]
mov qword [rdx + 0x40], rcx
cmp qword [rdx + 0x20], 0xffffffffffffffff
je 0x18019e49c
mov rax, qword [rdx + 0x20]
mov rcx, qword [rax + 0x40]
mov qword [rdx + 0x20], rcx
inc edi
add rbx, 8
cmp edi, dword [rsi + 0xc]
jb 0x18019e440
mov qword [rsp + 0x48], r13
mov edx, r12d
mov qword [rsp + 0x40], r14
mov dword [r15 + 0x10], r12d
or r13d, 0xffffffff
movaps xmmword [rsp + 0x30], xmm6
movaps xmmword [rsp + 0x20], xmm7
mov dword [rsp + 0x80], edx
cmp dword [rsi + 0xc], edx
jbe 0x18019e7eb
movsd xmm6, qword [0x1800685a0]
movsd xmm7, qword [0x1800685d8]
mov rbp, qword [rsp + 0x88]
mov rcx, r12
movabs r8, 0xfefefefefefefefe
mov qword [rsp + 0x90], rcx
nop word [rax + rax]
mov rax, qword [rsi + 0xce58]
mov rcx, qword [rcx + rax]
mov r14, qword [rcx + 0x30]
test r14, r14
jne 0x18019e529
mov rbx, r12
jmp 0x18019e52c
mov rbx, qword [r14]
test r14, r14
je 0x18019e7c5
mov ecx, dword [0x18025e63c]
test ecx, ecx
jns 0x18019e544
mov rcx, r12
jmp 0x18019e557
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
movabs r8, 0xfefefefefefefefe
mov rcx, rax
cmp qword [rcx + 0x18], 0
je 0x18019e581
mov rdi, qword [rcx + 0x18]
test rdi, rdi
jne 0x18019e56c
mov rdi, r12
jmp 0x18019e598
mov rax, qword [rdi]
mov qword [rcx + 0x18], rax
test rax, rax
jne 0x18019e57c
mov qword [rcx + 0x20], r12
mov qword [rdi], r8
jmp 0x18019e598
mov rcx, qword [rcx + 0x10]
mov edx, 0x188
mov r8d, 0x10
call fcn.180243b70
mov rdi, rax
test rdi, rdi
je 0x18019e6ed
mov rdx, r14
mov rcx, rdi
mov qword [rdi], r12
mov qword [rdi + 8], r12
mov qword [rdi + 0x78], r12
mov qword [rdi + 0x80], r12
mov qword [rdi + 0x88], r12
mov qword [rdi + 0x90], r12
mov dword [rdi + 0xa0], r13d
mov qword [rdi + 0xa8], 0xffffffffffffffff
mov qword [rdi + 0x40], r12
call fcn.1801994e0
mov r12d, eax
test eax, eax
js 0x18019e69b
mov rdx, qword [rdi + 0xa8]
mov eax, dword [rdx + 0x10]
bt rax, 8
jae 0x18019e652
cmp qword [rdi + 0xc0], 0xffffffffffffffff
jne 0x18019e652
cmp qword [rdi + 0xb8], 0xffffffffffffffff
jne 0x18019e652
movsd xmm1, qword [rdi + 0x140]
or qword [rdi + 0x98], 0x1000010
mov rcx, qword [rdi + 0x98]
cvttsd2si eax, xmm1
movd xmm0, eax
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
andpd xmm1, xmm6
comisd xmm7, xmm1
jbe 0x18019e652
bts rcx, 0x15
mov qword [rdi + 0x98], rcx
mov rcx, rdi
call fcn.18019c4f0
test al, al
je 0x18019e669
or qword [rdi + 0x98], 0x20000
mov rax, qword [rdx + 0x10]
test al, 0x10
je 0x18019e680
bt rax, 0x15
jae 0x18019e680
or qword [rdi + 0x98], 0x10
mov eax, dword [r15 + 0x10]
mov rbp, rdi
mov dword [rdi + 0xa0], eax
inc dword [r15 + 0x10]
or dword [r15 + 0x28], 4
xor r12d, r12d
jmp 0x18019e6f3
call fcn.1801991c0
mov ecx, dword [0x18025e63c]
test ecx, ecx
jns 0x18019e6ae
xor esi, esi
jmp 0x18019e6b7
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rsi, rax
mov edx, 0xfe
mov r8d, 0x188
mov rcx, rdi
call fcn.18024adb8
mov qword [rdi], 0
mov rax, qword [rsi + 0x20]
test rax, rax
je 0x18019e6e3
mov qword [rax], rdi
mov qword [rsi + 0x20], rdi
jmp 0x18019e6f3
mov qword [rsi + 0x18], rdi
mov qword [rsi + 0x20], rdi
jmp 0x18019e6f3
mov r12d, 0x8007000e
test r12d, r12d
js 0x18019e9cf
mov qword [r14 + 0x48], rbp
mov rdx, qword [rbp + 0xa8]
mov qword [rbp + 0x48], r14
mov rcx, qword [rdx + 0x40]
cmp rdx, rcx
je 0x18019e78c
test rdx, rdx
je 0x18019e754
cmp rdx, 0xffffffffffffffff
je 0x18019e754
mov r8, qword [rbp + 8]
test r8, r8
je 0x18019e731
mov rax, qword [rbp]
mov qword [r8], rax
jmp 0x18019e739
mov rax, qword [rbp]
mov qword [rdx + 0x30], rax
mov r8, qword [rbp]
test r8, r8
je 0x18019e74c
mov rax, qword [rbp + 8]
mov qword [r8 + 8], rax
jmp 0x18019e754
mov rax, qword [rbp + 8]
mov qword [rdx + 0x38], rax
test rcx, rcx
je 0x18019e785
cmp rcx, 0xffffffffffffffff
je 0x18019e785
mov rax, qword [rcx + 0x38]
mov qword [rbp + 8], rax
mov rax, qword [rcx + 0x38]
test rax, rax
je 0x18019e775
mov qword [rax], rbp
jmp 0x18019e779
mov qword [rcx + 0x30], rbp
mov qword [rbp], 0
mov qword [rcx + 0x38], rbp
mov qword [rbp + 0xa8], rcx
mov r14, rbx
test rbx, rbx
je 0x18019e7a9
mov rbx, qword [rbx]
xor r12d, r12d
movabs r8, 0xfefefefefefefefe
jmp 0x18019e535
mov rsi, qword [rsp + 0x88]
mov edx, dword [rsp + 0x80]
xor r12d, r12d
movabs r8, 0xfefefefefefefefe
mov rcx, qword [rsp + 0x90]
inc edx
add rcx, 8
mov dword [rsp + 0x80], edx
mov qword [rsp + 0x90], rcx
cmp edx, dword [rsi + 0xc]
jb 0x18019e510
mov edx, dword [r15 + 0xc]
nop
inc r13d
cmp r13d, edx
jae 0x18019e8eb
mov rax, qword [r15 + 0xce58]
mov rcx, qword [rax + r13*8]
cmp qword [rcx + 0x30], 0
je 0x18019e7f0
mov rcx, qword [rcx + 0x30]
mov rdx, qword [rcx]
nop word [rax + rax]
mov rax, qword [rcx + 0xb8]
cmp rax, 0xffffffffffffffff
je 0x18019e838
mov rax, qword [rax + 0x48]
mov qword [rcx + 0xb8], rax
mov rax, qword [rcx + 0xc0]
cmp rax, 0xffffffffffffffff
je 0x18019e850
mov rax, qword [rax + 0x48]
mov qword [rcx + 0xc0], rax
mov rax, qword [rcx + 0xd0]
cmp rax, 0xffffffffffffffff
je 0x18019e868
mov rax, qword [rax + 0x48]
mov qword [rcx + 0xd0], rax
mov rax, qword [rcx + 0xe0]
cmp rax, 0xffffffffffffffff
je 0x18019e880
mov rax, qword [rax + 0x48]
mov qword [rcx + 0xe0], rax
mov rax, qword [rcx + 0xe8]
cmp rax, 0xffffffffffffffff
je 0x18019e898
mov rax, qword [rax + 0x48]
mov qword [rcx + 0xe8], rax
mov rax, qword [rcx + 0xf0]
cmp rax, 0xffffffffffffffff
je 0x18019e8b0
mov rax, qword [rax + 0x48]
mov qword [rcx + 0xf0], rax
test rdx, rdx
je 0x18019e8bd
mov rcx, rdx
mov rdx, qword [rdx]
jmp 0x18019e8e2
mov edx, dword [r15 + 0xc]
inc r13d
cmp r13d, edx
jae 0x18019e8eb
mov rax, qword [r15 + 0xce58]
mov rcx, qword [rax + r13*8]
cmp qword [rcx + 0x30], 0
je 0x18019e8c1
mov rcx, qword [rcx + 0x30]
mov rdx, qword [rcx]
test rcx, rcx
jne 0x18019e820
mov dword [r15 + 0x14], r12d
mov rbx, qword [rsi + 0x18]
test rbx, rbx
je 0x18019e98b
nop dword [rax]
lea r8, [rsp + 0x88]
mov rdx, rbx
mov rcx, r15
call fcn.18019f8f0
test eax, eax
js 0x18019e9d2
mov r8, qword [rsp + 0x88]
mov r10d, r12d
cmp dword [r8 + 0x10], 0
jbe 0x18019e94f
mov r9, r12
mov rdx, qword [r8 + 0x18]
inc r10d
add r9, 8
mov rax, qword [r9 + rdx - 8]
mov rcx, qword [rax + 0x48]
mov qword [r9 + rdx - 8], rcx
cmp r10d, dword [r8 + 0x10]
jb 0x18019e930
cmp dword [r8 + 0x20], 0
mov r10d, r12d
jbe 0x18019e97f
mov r9, r12
nop dword [rax]
mov rdx, qword [r8 + 0x28]
inc r10d
add r9, 8
mov rax, qword [r9 + rdx - 8]
mov rcx, qword [rax + 0x48]
mov qword [r9 + rdx - 8], rcx
cmp r10d, dword [r8 + 0x20]
jb 0x18019e960
mov rbx, qword [rbx]
test rbx, rbx
jne 0x18019e900
cmp dword [r15 + 0xc], 0
mov edx, r12d
jbe 0x18019e9cf
mov r8, r12
nop dword [rax + rax]
mov rax, qword [r15 + 0xce58]
mov r9, qword [r8 + rax]
mov rcx, qword [r9 + 0xa0]
cmp rcx, 0xffffffffffffffff
je 0x18019e9c3
mov rcx, qword [rcx + 0x48]
mov qword [r9 + 0xa0], rcx
inc edx
add r8, 8
cmp edx, dword [r15 + 0xc]
jb 0x18019e9a0
mov eax, r12d
movaps xmm6, xmmword [rsp + 0x30]
mov r14, qword [rsp + 0x40]
mov r13, qword [rsp + 0x48]
movaps xmm7, xmmword [rsp + 0x20]
mov rdi, qword [rsp + 0x98]
add rsp, 0x50
pop r15
pop r12
pop rsi
pop rbp
pop rbx
ret