Function at 0x15c6920
Capabilities:
Get thread local storage value

Disassembly:
mov rax, rsp
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x120
mov qword [rsp + 0x110], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov r12, rdx
mov esi, ecx
xor r15d, r15d
mov qword [rax - 0x58], r15
mov rax, qword [0x039f1180]
mov ecx, dword [rax + 8]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x15c696c
lea rdi, [rax + 0x20]
jmp 0x15c696f
mov rdi, r15
mov qword [rsp + 0x100], rdi
mov rcx, qword [rdi + 0x30]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VarBstrFromCy]
mov rbp, rax
mov qword [rsp + 0x108], rax
test esi, esi
js 0x15c69a5
mov rcx, qword [rdi + 0x30]
mov r8, qword [rcx]
mov rdx, rax
call qword [r8 + 0x78]
xor eax, eax
jmp 0x15c73a4
lea rcx, [rsp + 0x30]
call fcn.0116d180
nop
lea rax, [0x01165c20]
mov qword [rsp + 0x48], rax
lea rbx, [0x01000000]
lea rax, [rbx + 0x4f0d0]
mov qword [rsp + 0x30], rax
lea rax, [0x0109b930]
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x50], r15
mov qword [rsp + 0x58], r15
mov qword [rsp + 0x60], r15
mov qword [rsp + 0x68], r15
lea r13, [0x0104ef20]
mov qword [rsp + 0x30], r13
lea r14, [0x0109b930]
mov qword [rsp + 0x48], r14
xor edx, edx
lea rcx, [rsp + 0x30]
call fcn.0116cfa0
xor edx, edx
lea rcx, [rsp + 0x30]
mov rax, qword [rsp + 0x30]
call qword [rax + 0x180]
nop
mov edx, dword [reloc.OLEAUT32.dll_VariantInit]
and edx, 7
lea rax, [rdx + rdx*2]
movzx ecx, byte [rbx + rax*2 + 0x173e9d]
movzx eax, byte [rbx + rax*2 + 0x173e9c]
add eax, ecx
cdqe
movabs r8, 0x7fffffffffffffff
mov rcx, r8
sub rcx, rax
shr rcx, 1
sub rcx, 1
cmp rcx, 0x104
jge 0x15c6a9a
lea r8, [0x015c73c0]
mov edx, 0x745
lea rcx, [0x0156dfe0]
call fcn.017eea00
mov ebx, eax
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x48], r14
lea rcx, [rsp + 0x30]
call fcn.0116d120
jmp 0x15c7395
lea rax, [rdx + rdx*2]
movzx ecx, byte [rbx + rax*2 + 0x173e9d]
movzx eax, byte [rbx + rax*2 + 0x173e9c]
add ecx, eax
movsxd rbx, ecx
add rbx, 0x20a
mov rcx, qword [rdi + 0x30]
cmp rbx, r8
jae 0x15c7362
mov rax, qword [rcx]
mov rdx, rbx
call qword [rax + SafeArrayCopy]
test rax, rax
je 0x15c7362
mov rcx, qword [rdi + 0x28]
mov qword [rsp + 0x50], rcx
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x60], r15
mov qword [rsp + 0x68], rbx
lea rcx, [rsp + 0x170]
call fcn.0116a950
nop
mov r9, qword [rdi + 0x40]
xor r8d, r8d
lea rdx, [rsp + 0x48]
lea rcx, [rsp + 0x170]
call fcn.0118a2d0
mov ebx, eax
test eax, eax
jns 0x15c6b45
lea rcx, [rsp + 0x170]
call fcn.0116a920
nop
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x48], r14
lea rcx, [rsp + 0x30]
call fcn.0116d120
jmp 0x15c7395
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0x80]
call fcn.0118c100
nop
mov edx, dword [reloc.OLEAUT32.dll_VariantInit]
and edx, 7
lea rax, [rdx + rdx*2]
lea r8, [0x01000000]
movzx ecx, byte [r8 + rax*2 + 0x173e9d]
movzx eax, byte [r8 + rax*2 + 0x173e9c]
add eax, ecx
cdqe
movabs r9, 0x7fffffffffffffff
mov rcx, r9
sub rcx, rax
shr rcx, 1
sub rcx, 1
cmp rcx, 0x100
jge 0x15c6c01
lea r8, [0x015c73c0]
mov edx, 0x748
lea rcx, [0x0156dfe0]
call fcn.017eea00
mov ebx, eax
mov qword [rsp + 0x80], r13
mov qword [rsp + 0x98], r14
lea rcx, [rsp + 0x80]
call fcn.0116d120
nop
lea rcx, [rsp + 0x170]
call fcn.0116a920
nop
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x48], r14
lea rcx, [rsp + 0x30]
call fcn.0116d120
jmp 0x15c7395
lea rax, [rdx + rdx*2]
movzx ecx, byte [r8 + rax*2 + 0x173e9d]
movzx eax, byte [r8 + rax*2 + 0x173e9c]
add ecx, eax
movsxd rbx, ecx
add rbx, 0x202
mov rcx, qword [rdi + 0x30]
cmp rbx, r9
jae 0x15c7302
mov rax, qword [rcx]
mov rdx, rbx
call qword [rax + SafeArrayCopy]
test rax, rax
je 0x15c7302
mov rcx, qword [rdi + 0x28]
mov qword [rsp + 0xa0], rcx
mov qword [rsp + 0xa8], rax
mov qword [rsp + 0xb0], r15
mov qword [rsp + 0xb8], rbx
lea rcx, [rsp + 0x178]
call fcn.0116a950
nop
mov r9, qword [rdi + 0x40]
xor r8d, r8d
lea rdx, [rsp + 0x98]
lea rcx, [rsp + 0x178]
call fcn.0118a2d0
mov ebx, eax
test eax, eax
jns 0x15c6ce9
lea rcx, [rsp + 0x178]
call fcn.0116a920
nop
mov qword [rsp + 0x80], r13
mov qword [rsp + 0x98], r14
lea rcx, [rsp + 0x80]
call fcn.0116d120
nop
lea rcx, [rsp + 0x170]
call fcn.0116a920
nop
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x48], r14
lea rcx, [rsp + 0x30]
call fcn.0116d120
jmp 0x15c7395
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0xc0]
call fcn.0118c100
nop
mov edx, dword [reloc.OLEAUT32.dll_VariantInit]
and edx, 7
lea rax, [rdx + rdx*2]
lea r8, [0x01000000]
movzx ecx, byte [r8 + rax*2 + 0x173e9d]
movzx eax, byte [r8 + rax*2 + 0x173e9c]
add eax, ecx
cdqe
movabs r9, 0x7fffffffffffffff
mov rcx, r9
sub rcx, rax
shr rcx, 1
sub rcx, 1
cmp rcx, 0x100
jge 0x15c6dd5
lea r8, [0x015c73c0]
mov edx, 0x749
lea rcx, [0x0156dfe0]
call fcn.017eea00
mov ebx, eax
mov qword [rsp + 0xc0], r13
mov qword [rsp + 0xd8], r14
lea rcx, [rsp + 0xc0]
call fcn.0116d120
nop
lea rcx, [rsp + 0x178]
call fcn.0116a920
nop
mov qword [rsp + 0x80], r13
mov qword [rsp + 0x98], r14
lea rcx, [rsp + 0x80]
call fcn.0116d120
nop
lea rcx, [rsp + 0x170]
call fcn.0116a920
nop
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x48], r14
lea rcx, [rsp + 0x30]
call fcn.0116d120
jmp 0x15c7395
lea rax, [rdx + rdx*2]
movzx ecx, byte [r8 + rax*2 + 0x173e9d]
movzx eax, byte [r8 + rax*2 + 0x173e9c]
add ecx, eax
movsxd rbx, ecx
add rbx, 0x202
mov rcx, qword [rdi + 0x30]
cmp rbx, r9
jae 0x15c7273
mov rax, qword [rcx]
mov rdx, rbx
call qword [rax + SafeArrayCopy]
test rax, rax
je 0x15c7273
mov rcx, qword [rdi + 0x28]
mov qword [rsp + 0xe0], rcx
mov qword [rsp + 0xe8], rax
mov qword [rsp + 0xf0], r15
mov qword [rsp + 0xf8], rbx
lea rcx, [rsp + 0x70]
call fcn.0116a950
nop
mov r9, qword [rdi + 0x40]
xor r8d, r8d
lea rdx, [rsp + 0xd8]
lea rcx, [rsp + 0x70]
call fcn.0118a2d0
mov ebx, eax
test eax, eax
jns 0x15c6ee0
lea rcx, [rsp + 0x70]
call fcn.0116a920
nop
mov qword [rsp + 0xc0], r13
mov qword [rsp + 0xd8], r14
lea rcx, [rsp + 0xc0]
call fcn.0116d120
nop
lea rcx, [rsp + 0x178]
call fcn.0116a920
nop
mov qword [rsp + 0x80], r13
mov qword [rsp + 0x98], r14
lea rcx, [rsp + 0x80]
call fcn.0116d120
nop
lea rcx, [rsp + 0x170]
call fcn.0116a920
nop
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x48], r14
lea rcx, [rsp + 0x30]
call fcn.0116d120
jmp 0x15c7395
mov rcx, r12
call fcn.011740c0
mov rcx, rax
lea rax, [rsp + 0x70]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x178]
xor r8d, r8d
xor edx, edx
call fcn.0122c660
mov ebx, eax
test eax, eax
jns 0x15c6f89
lea rcx, [rsp + 0x70]
call fcn.0116a920
nop
mov qword [rsp + 0xc0], r13
mov qword [rsp + 0xd8], r14
lea rcx, [rsp + 0xc0]
call fcn.0116d120
nop
lea rcx, [rsp + 0x178]
call fcn.0116a920
nop
mov qword [rsp + 0x80], r13
mov qword [rsp + 0x98], r14
lea rcx, [rsp + 0x80]
call fcn.0116d120
nop
lea rcx, [rsp + 0x170]
call fcn.0116a920
nop
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x48], r14
lea rcx, [rsp + 0x30]
call fcn.0116d120
jmp 0x15c7395
mov rax, qword [rsp + 0x70]
test rax, rax
je 0x15c6fa6
movzx ecx, byte [rax - 5]
test cl, 0x40
jne 0x15c6fa1
test cl, 0x20
je 0x15c6fa9
mov rax, qword [rax]
jmp 0x15c6fa9
mov rax, r15
mov r9, qword [rsp + 0x178]
test r9, r9
je 0x15c6fca
movzx ecx, byte [r9 - 5]
test cl, 0x40
jne 0x15c6fc5
test cl, 0x20
je 0x15c6fcd
mov r9, qword [r9]
jmp 0x15c6fcd
mov r9, r15
mov qword [rsp + 0x20], rax
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0x170]
call fcn.0122c810
mov ebx, eax
test eax, eax
jns 0x15c7066
lea rcx, [rsp + 0x70]
call fcn.0116a920
nop
mov qword [rsp + 0xc0], r13
mov qword [rsp + 0xd8], r14
lea rcx, [rsp + 0xc0]
call fcn.0116d120
nop
lea rcx, [rsp + 0x178]
call fcn.0116a920
nop
mov qword [rsp + 0x80], r13
mov qword [rsp + 0x98], r14
lea rcx, [rsp + 0x80]
call fcn.0116d120
nop
lea rcx, [rsp + 0x170]
call fcn.0116a920
nop
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x48], r14
lea rcx, [rsp + 0x30]
call fcn.0116d120
jmp 0x15c7395
lea rcx, [rsp + 0x70]
call fcn.0116a920
nop
mov qword [rsp + 0xc0], r13
mov qword [rsp + 0xd8], r14
lea rcx, [rsp + 0xc0]
call fcn.0116d120
nop
lea rcx, [rsp + 0x178]
call fcn.0116a920
nop
mov qword [rsp + 0x80], r13
mov qword [rsp + 0x98], r14
lea rcx, [rsp + 0x80]
call fcn.0116d120
cmp esi, 0x80950000
je 0x15c7214
cmp esi, 0x80950001
je 0x15c71b5
cmp esi, 0x80950002
je 0x15c7170
cmp esi, 0x80950003
je 0x15c712b
mov qword [rsp + 0x20], 0x1000000f
xor r9d, r9d
xor r8d, r8d
mov edx, r15d
mov ecx, 0xc1370005
call fcn.0124e580
mov ebx, eax
lea rcx, [rsp + 0x170]
call fcn.0116a920
nop
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x48], r14
lea rcx, [rsp + 0x30]
call fcn.0116d120
jmp 0x15c7395
mov qword [rsp + 0x20], 0x1000000f
xor r9d, r9d
xor r8d, r8d
mov edx, r15d
mov ecx, 0xc1370004
call fcn.0124e580
mov ebx, eax
lea rcx, [rsp + 0x170]
call fcn.0116a920
nop
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x48], r14
lea rcx, [rsp + 0x30]
call fcn.0116d120
jmp 0x15c7395
mov qword [rsp + 0x20], 0x1000000f
xor r9d, r9d
xor r8d, r8d
mov edx, r15d
mov ecx, 0xc1370003
call fcn.0124e580
mov ebx, eax
lea rcx, [rsp + 0x170]
call fcn.0116a920
nop
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x48], r14
lea rcx, [rsp + 0x30]
call fcn.0116d120
jmp 0x15c7395
mov r8, qword [rsp + 0x170]
test r8, r8
je 0x15c71d4
movzx eax, byte [r8 - 5]
test al, 0x40
jne 0x15c71cf
test al, 0x20
je 0x15c71d7
mov r8, qword [r8]
jmp 0x15c71d7
mov r8, r15
xor r9d, r9d
lea rdx, [0x0156e068]
mov ecx, 0xc1370002
call fcn.017ee830
mov ebx, eax
lea rcx, [rsp + 0x170]
call fcn.0116a920
nop
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x48], r14
lea rcx, [rsp + 0x30]
call fcn.0116d120
jmp 0x15c7395
mov r8, qword [rsp + 0x170]
test r8, r8
je 0x15c7233
movzx eax, byte [r8 - 5]
test al, 0x40
jne 0x15c722e
test al, 0x20
je 0x15c7236
mov r8, qword [r8]
jmp 0x15c7236
mov r8, r15
xor r9d, r9d
lea rdx, [0x0156e068]
mov ecx, 0xc1370001
call fcn.017ee830
mov ebx, eax
lea rcx, [rsp + 0x170]
call fcn.0116a920
nop
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x48], r14
lea rcx, [rsp + 0x30]
call fcn.0116d120
jmp 0x15c7395
mov qword [rsp + 0x20], 0x1000000f
xor r9d, r9d
xor r8d, r8d
mov edx, r15d
mov ecx, 0xc1030001
call fcn.0124e580
mov ebx, eax
mov qword [rsp + 0xc0], r13
mov qword [rsp + 0xd8], r14
lea rcx, [rsp + 0xc0]
call fcn.0116d120
nop
lea rcx, [rsp + 0x178]
call fcn.0116a920
nop
mov qword [rsp + 0x80], r13
mov qword [rsp + 0x98], r14
lea rcx, [rsp + 0x80]
call fcn.0116d120
nop
lea rcx, [rsp + 0x170]
call fcn.0116a920
nop
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x48], r14
lea rcx, [rsp + 0x30]
call fcn.0116d120
jmp 0x15c7395
mov qword [rsp + 0x20], 0x1000000f
xor r9d, r9d
xor r8d, r8d
mov edx, r15d
mov ecx, 0xc1030001
call fcn.0124e580
mov ebx, eax
mov qword [rsp + 0x80], r13
mov qword [rsp + 0x98], r14
lea rcx, [rsp + 0x80]
call fcn.0116d120
nop
lea rcx, [rsp + 0x170]
call fcn.0116a920
nop
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x48], r14
lea rcx, [rsp + 0x30]
call fcn.0116d120
jmp 0x15c7395
mov qword [rsp + 0x20], 0x1000000f
xor r9d, r9d
xor r8d, r8d
mov edx, r15d
mov ecx, 0xc1030001
call fcn.0124e580
mov ebx, eax
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x48], r14
lea rcx, [rsp + 0x30]
call fcn.0116d120
nop
mov rcx, qword [rdi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
mov eax, ebx
mov rbx, qword [rsp + 0x160]
add rsp, 0x120
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret