Function at 0x1607bd0
Capabilities:
Get thread local storage value

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xc8
mov qword [rsp + 0x48], 0xfffffffffffffffe
mov rax, qword [0x039f1190]
xor rax, rsp
mov qword [rsp + 0xb0], rax
mov r12, r9
mov rbx, r8
mov r14, rdx
mov r13, rcx
cmp dword [rcx + 0x10], 0
jne 0x1607c2e
lea r8, [0x016081e0]
mov edx, 0x220e
lea rcx, [0x0156e210]
call fcn.017eea00
jmp 0x16081b1
xor edi, edi
mov qword [rsp + 0x38], rdi
mov rax, qword [0x039f1180]
mov ecx, dword [rax + 8]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x1607c50
lea rsi, [rax + 0x20]
jmp 0x1607c53
mov rsi, rdi
mov qword [rsp + 0x38], rsi
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VarBstrFromCy]
mov rbp, rax
mov qword [rsp + 0x40], rax
lea rcx, [rsp + 0x50]
call fcn.01187da0
nop
lea r15, [0x0104f280]
mov qword [rsp + 0x50], r15
mov dword [rsp + 0x68], reloc.OLEAUT32.dll_VarAdd
mov byte [rsp + 0x6c], 0
mov byte [rsp + 0x6d], 0
mov word [rsp + 0x6e], 0xabcd
mov byte [rsp + 0x70], 0
mov dword [rsp + 0x74], 6
mov byte [rsp + 0x78], 0
lea rcx, [rsp + 0x7c]
mov eax, dword [0x01189340]
mov dword [rcx], eax
mov eax, dword [0x01189344]
mov dword [rcx + 4], eax
mov eax, dword [0x01189348]
mov dword [rcx + 8], eax
mov eax, dword [0x0118934c]
mov dword [rcx + 0xc], eax
call fcn.01863000
mov dword [rsp + 0x8c], eax
mov qword [rsp + 0x90], 0xffffffffffffffff
mov qword [rsp + 0x98], 0xffffffffffffffff
mov qword [rsp + 0xa0], 0xffffffffffffffff
mov eax, dword [r13 + 0x10]
cmp eax, 1
jne 0x1607d44
lea rcx, [r13 + 0x18]
lea rdx, [rsp + 0x50]
call fcn.01859590
mov edi, eax
test eax, eax
jns 0x1607d83
mov qword [rsp + 0x50], r15
lea rcx, [rsp + 0x50]
call fcn.01187d80
nop
mov rcx, qword [rsi + 0x30]
mov r8, qword [rcx]
mov rdx, rbp
call qword [r8 + 0x78]
jmp 0x16081af
cmp eax, 2
jne 0x1607d85
lea rdx, [rsp + 0x50]
mov rcx, qword [r13 + 0x20]
call fcn.01852340
mov edi, eax
test eax, eax
jns 0x1607d7f
mov qword [rsp + 0x50], r15
lea rcx, [rsp + 0x50]
call fcn.01187d80
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x16081af
xor edi, edi
jmp 0x1607d85
xor edi, edi
cmp byte [rsp + 0x70], 0
je 0x1607f76
test rbx, rbx
jne 0x1607e3c
mov eax, dword [r13 + 0x10]
cmp eax, 1
jne 0x1607df8
mov r8, qword [r13 + 0x18]
test r8, r8
je 0x1607dbd
movzx eax, byte [r8 - 5]
test al, 0x40
jne 0x1607db8
test al, 0x20
je 0x1607dc0
mov r8, qword [r8]
jmp 0x1607dc0
mov r8, rdi
xor r9d, r9d
lea rdx, [0x0156ea20]
mov ecx, 0xc1260002
call fcn.017ee830
mov edi, eax
mov qword [rsp + 0x50], r15
lea rcx, [rsp + 0x50]
call fcn.01187d80
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x16081af
cmp eax, 2
jne 0x1607e3c
xor r9d, r9d
lea r8, [0x0156ea30]
lea rdx, [0x0156ea20]
mov ecx, 0xc1260002
call fcn.017ee830
mov edi, eax
mov qword [rsp + 0x50], r15
lea rcx, [rsp + 0x50]
call fcn.01187d80
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x16081af
mov qword [rsp + 0x30], rdi
call fcn.01171470
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rdi
xor r9d, r9d
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0x30]
call fcn.015dee50
mov edi, eax
test eax, eax
jns 0x1607e9b
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x1607e79
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov qword [rsp + 0x50], r15
lea rcx, [rsp + 0x50]
call fcn.01187d80
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x16081af
cmp dword [rsp + 0x68], 0x8c
jb 0x1607f0c
mov rax, qword [rsp + 0x90]
mov qword [rsp + 0x20], rax
xor r9d, r9d
mov r8, r14
mov rdx, rbx
mov rbx, qword [rsp + 0x30]
mov rcx, rbx
call fcn.01862710
mov edi, eax
test eax, eax
jns 0x1607eff
test rbx, rbx
je 0x1607edd
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov qword [rsp + 0x50], r15
lea rcx, [rsp + 0x50]
call fcn.01187d80
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x16081af
mov rdx, rbx
mov rcx, r12
call fcn.0125cf40
jmp 0x1607f62
mov r8, r14
mov rdx, rbx
mov rbx, qword [rsp + 0x30]
mov rcx, rbx
call fcn.01862390
mov edi, eax
test eax, eax
jns 0x1607f56
test rbx, rbx
je 0x1607f34
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov qword [rsp + 0x50], r15
lea rcx, [rsp + 0x50]
call fcn.01187d80
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x16081af
mov rdx, rbx
mov rcx, r12
call fcn.0125cf40
nop
test rbx, rbx
je 0x1607ff1
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
jmp 0x1607ff1
call fcn.01171470
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rdi
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, r12
call fcn.015deb80
mov edi, eax
test eax, eax
jns 0x1607fbd
mov qword [rsp + 0x50], r15
lea rcx, [rsp + 0x50]
call fcn.01187d80
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x16081af
mov rdx, r14
mov rcx, qword [r12]
call fcn.01859e20
mov edi, eax
test eax, eax
jns 0x1607ff1
mov qword [rsp + 0x50], r15
lea rcx, [rsp + 0x50]
call fcn.01187d80
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x16081af
mov eax, dword [r13 + 0x10]
cmp eax, 1
jne 0x16080ca
mov qword [rsp + 0x30], 0
mov rcx, qword [r12]
test rcx, rcx
je 0x160801b
mov rax, qword [rcx]
call qword [rax + 0xc0]
jmp 0x160801d
xor eax, eax
lea rcx, [r13 + 0x18]
lea r9, [rsp + 0x30]
mov r8, rax
mov rdx, r14
call fcn.01858c40
mov edi, eax
test eax, eax
jns 0x160806a
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x1608048
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov qword [rsp + 0x50], r15
lea rcx, [rsp + 0x50]
call fcn.01187d80
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x16081af
mov rdx, qword [rsp + 0x30]
mov rcx, qword [r12]
call fcn.01859070
mov edi, eax
test eax, eax
jns 0x16080b1
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x160808f
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov qword [rsp + 0x50], r15
lea rcx, [rsp + 0x50]
call fcn.01187d80
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x16081af
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x1608190
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
jmp 0x1608190
cmp eax, 2
jne 0x1608190
mov qword [rsp + 0x30], 0
mov rcx, qword [r12]
test rcx, rcx
je 0x16080f0
mov rax, qword [rcx]
call qword [rax + 0xc0]
jmp 0x16080f2
xor eax, eax
lea r9, [rsp + 0x30]
mov r8, rax
mov rdx, r14
mov rcx, qword [r13 + 0x20]
call fcn.01845380
mov edi, eax
test eax, eax
jns 0x160813c
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x160811d
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov qword [rsp + 0x50], r15
lea rcx, [rsp + 0x50]
call fcn.01187d80
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x16081af
mov rdx, qword [rsp + 0x30]
mov rcx, qword [r12]
call fcn.01859070
mov edi, eax
test eax, eax
jns 0x1608180
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x1608161
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov qword [rsp + 0x50], r15
lea rcx, [rsp + 0x50]
call fcn.01187d80
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x16081af
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x1608190
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
xor edi, edi
mov qword [rsp + 0x50], r15
lea rcx, [rsp + 0x50]
call fcn.01187d80
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
mov eax, edi
mov rcx, qword [rsp + 0xb0]
xor rcx, rsp
call fcn.01003340
add rsp, 0xc8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret