Function at 0x15ca7e0
Capabilities:
Get thread local storage value

Disassembly:
mov r11, rsp
push r12
push r13
push r14
sub rsp, 0xd0
mov qword [rsp + 0xa0], 0xfffffffffffffffe
mov qword [r11 + 8], rbx
mov qword [r11 + 0x10], rbp
mov qword [r11 + 0x18], rsi
mov qword [r11 + 0x20], rdi
mov rax, qword [0x039f1190]
xor rax, rsp
mov qword [rsp + 0xc0], rax
movzx ebx, cl
xor r13d, r13d
mov qword [r11 - 0x58], r13
mov rax, qword [0x039f1180]
mov ecx, dword [rax + 8]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x15ca843
lea rsi, [rax + 0x20]
jmp 0x15ca846
mov rsi, r13
mov qword [rsp + 0x90], rsi
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VarBstrFromCy]
mov rbp, rax
mov qword [rsp + 0x98], rax
mov rcx, qword [0x039f11b0]
cmp qword [rcx + 0x200], 0
je 0x15ca889
mov rcx, qword [rsi + 0x30]
mov r8, qword [rcx]
mov rdx, rax
call qword [r8 + 0x78]
xor eax, eax
jmp 0x15caf92
lea rdx, [rsp + 0xa8]
lea rdi, [0x01000000]
mov rax, qword [rdi + 0x5cb008]
mov qword [rdx], rax
mov rax, qword [rdi + 0x5cb010]
mov qword [rdx + 8], rax
mov eax, dword [rdi + 0x5cb018]
mov dword [rdx + 0x10], eax
mov qword [rsp + 0x40], r13
test bl, bl
jne 0x15ca920
lea r8, [rsp + 0x40]
lea rdx, [rsp + 0xa8]
mov rcx, qword [rcx + 0x1e8]
call fcn.017980f0
test eax, eax
js 0x15ca8ea
mov rcx, qword [rsp + 0x40]
test rcx, rcx
jne 0x15cacc8
mov qword [rsp + 0x20], 0x1000000f
xor r9d, r9d
lea r8, [rsp + 0xa8]
mov edx, r13d
mov ecx, 0xc1010001
call fcn.0124e580
mov edi, eax
mov rcx, qword [rsi + 0x30]
mov r8, qword [rcx]
mov rdx, rbp
call qword [r8 + 0x78]
jmp 0x15caf90
lea rcx, [rsp + 0x50]
call fcn.0116d180
nop
lea rax, [0x01165c20]
mov qword [rsp + 0x68], rax
lea rax, [rdi + 0x4f0d0]
mov qword [rsp + 0x50], rax
lea rax, [0x0109b930]
mov qword [rsp + 0x68], rax
mov qword [rsp + 0x70], r13
mov qword [rsp + 0x78], r13
mov qword [rsp + 0x80], r13
mov qword [rsp + 0x88], r13
lea r12, [0x0104ef20]
mov qword [rsp + 0x50], r12
lea r14, [0x0109b930]
mov qword [rsp + 0x68], r14
xor edx, edx
lea rcx, [rsp + 0x50]
call fcn.0116cfa0
xor edx, edx
lea rcx, [rsp + 0x50]
mov rax, qword [rsp + 0x50]
call qword [rax + 0x180]
nop
mov edx, dword [reloc.OLEAUT32.dll_VariantInit]
and edx, 7
lea rax, [rdx + rdx*2]
movzx ecx, byte [rdi + rax*2 + 0x173e9d]
movzx eax, byte [rdi + rax*2 + 0x173e9c]
add eax, ecx
cdqe
movabs r8, 0x7fffffffffffffff
mov rcx, r8
sub rcx, rax
shr rcx, 1
sub rcx, 1
cmp rcx, 0x400
jge 0x15caa22
lea r8, [0x015cafd8]
mov edx, 0xe80
lea rcx, [0x0156dfe0]
call fcn.017eea00
mov edi, eax
mov qword [rsp + 0x50], r12
mov qword [rsp + 0x68], r14
lea rcx, [rsp + 0x50]
call fcn.0116d120
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x15caf90
lea rax, [rdx + rdx*2]
movzx ecx, byte [rdi + rax*2 + 0x173e9d]
movzx eax, byte [rdi + rax*2 + 0x173e9c]
add ecx, eax
movsxd rbx, ecx
add rbx, 0x802
mov rcx, qword [rsi + 0x30]
cmp rbx, r8
jae 0x15caf50
mov rax, qword [rcx]
mov rdx, rbx
call qword [rax + SafeArrayCopy]
test rax, rax
je 0x15caf50
mov rcx, qword [rsi + 0x28]
mov qword [rsp + 0x70], rcx
mov qword [rsp + 0x78], rax
mov qword [rsp + 0x80], r13
mov qword [rsp + 0x88], rbx
lea rcx, [rsp + 0x30]
call fcn.0116a950
nop
mov r9, qword [rsi + 0x40]
xor r8d, r8d
lea rdx, [rsp + 0x68]
lea rcx, [rsp + 0x30]
call fcn.0118a2d0
mov edi, eax
test eax, eax
jns 0x15caad8
lea rcx, [rsp + 0x30]
call fcn.0116a920
nop
mov qword [rsp + 0x50], r12
mov qword [rsp + 0x68], r14
lea rcx, [rsp + 0x50]
call fcn.0116d120
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x15caf90
lea rdx, [rsp + 0x30]
mov rcx, qword [0x039f11b0]
call fcn.017d4290
mov edi, eax
test eax, eax
jns 0x15cab21
lea rcx, [rsp + 0x30]
call fcn.0116a920
nop
mov qword [rsp + 0x50], r12
mov qword [rsp + 0x68], r14
lea rcx, [rsp + 0x50]
call fcn.0116d120
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x15caf90
mov rax, qword [rsp + 0x30]
test rax, rax
je 0x15cab66
movzx edx, byte [rax - 5]
movzx ecx, dl
shr cl, 6
and cl, 1
jne 0x15cab44
test dl, 0x20
jne 0x15cab44
mov rbx, rax
jmp 0x15cab47
mov rbx, qword [rax]
test cl, cl
jne 0x15cab51
movsxd rcx, dword [rax - 4]
jmp 0x15cab61
mov rcx, qword [rax]
call qword [sym.imp.OLEAUT32.dll_SysAllocStringByteLen]
mov ecx, eax
mov rax, qword [rsp + 0x30]
shr rcx, 1
jmp 0x15cab6c
mov rbx, r13
mov rcx, r13
cmp word [rbx + rcx*2 - 2], 0x5c
je 0x15cac0d
test rax, rax
je 0x15cabb3
movzx edx, byte [rax - 5]
movzx ecx, dl
shr cl, 6
and cl, 1
jne 0x15cab96
test dl, 0x20
jne 0x15cab96
mov rbx, rax
jmp 0x15cab99
mov rbx, qword [rax]
test cl, cl
jne 0x15caba3
movsxd rcx, dword [rax - 4]
jmp 0x15cabae
mov rcx, qword [rax]
call qword [sym.imp.OLEAUT32.dll_SysAllocStringByteLen]
mov ecx, eax
shr rcx, 1
jmp 0x15cabb9
mov rbx, r13
mov rcx, r13
cmp word [rbx + rcx*2 - 2], 0x2f
je 0x15cac0d
xor r8d, r8d
lea rdx, [0x01329f88]
lea rcx, [rsp + 0x30]
call fcn.012d1c90
mov edi, eax
test eax, eax
jns 0x15cac0d
lea rcx, [rsp + 0x30]
call fcn.0116a920
nop
mov qword [rsp + 0x50], r12
mov qword [rsp + 0x68], r14
lea rcx, [rsp + 0x50]
call fcn.0116d120
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x15caf90
xor r8d, r8d
lea rdx, [rsp + 0xa8]
lea rcx, [rsp + 0x30]
call fcn.012d1c90
mov edi, eax
test eax, eax
jns 0x15cac5a
lea rcx, [rsp + 0x30]
call fcn.0116a920
nop
mov qword [rsp + 0x50], r12
mov qword [rsp + 0x68], r14
lea rcx, [rsp + 0x50]
call fcn.0116d120
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x15caf90
mov rdx, qword [rsp + 0x30]
test rdx, rdx
je 0x15cac75
movzx eax, byte [rdx - 5]
test al, 0x40
jne 0x15cac70
test al, 0x20
je 0x15cac78
mov rdx, qword [rdx]
jmp 0x15cac78
mov rdx, r13
mov rax, qword [0x039f11b0]
lea r8, [rsp + 0x40]
mov rcx, qword [rax + 0x1e8]
call fcn.017980f0
test eax, eax
js 0x15caefe
cmp qword [rsp + 0x40], 0
je 0x15caefe
lea rcx, [rsp + 0x30]
call fcn.0116a920
nop
mov qword [rsp + 0x50], r12
mov qword [rsp + 0x68], r14
lea rcx, [rsp + 0x50]
call fcn.0116d120
mov rcx, qword [rsp + 0x40]
mov rax, qword [0x039f11b0]
mov qword [rax + 0x200], rcx
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], r13
xor r9d, r9d
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0x30]
call fcn.015c5db0
mov edi, eax
test eax, eax
jns 0x15cad20
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x15cad0e
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x15caf90
xor edx, edx
mov rbx, qword [rsp + 0x30]
mov rcx, rbx
call fcn.017851e0
mov edi, eax
test eax, eax
jns 0x15cad56
test rbx, rbx
je 0x15cad44
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x15caf90
test rbx, rbx
je 0x15cad61
lea rdx, [rbx + 0x18]
jmp 0x15cad64
mov rdx, r13
mov rcx, qword [0x039f11b0]
call fcn.015c6580
mov r11, qword [0x039f11b0]
lea rdx, [0x015cafc8]
mov rcx, qword [r11 + 0x200]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov r12, rax
test rax, rax
jne 0x15cadb3
mov qword [rsp + 0x20], 0x1000000f
xor r9d, r9d
xor r8d, r8d
mov edx, r13d
mov ecx, 0xc1010000
call fcn.0124e580
mov edi, eax
jmp 0x15cadb6
mov edi, r13d
test edi, edi
jns 0x15caddb
test rbx, rbx
je 0x15cadc9
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x15caf90
test r12, r12
jne 0x15cae1f
mov qword [rsp + 0x20], 0x1000000f
xor r9d, r9d
xor r8d, r8d
mov edx, r13d
mov ecx, 0xc1000000
call fcn.0124e580
mov edi, eax
test rbx, rbx
je 0x15cae0d
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x15caf90
mov qword [rsp + 0x38], r13
mov rax, qword [0x039f11b0]
lea rdx, [rsp + 0x38]
mov rcx, qword [rax + 0x1a8]
call r12
mov edi, eax
test eax, eax
jns 0x15cae72
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x15cae51
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
test rbx, rbx
je 0x15cae60
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x15caf90
mov rdx, qword [rsp + 0x38]
mov rcx, qword [0x039f11b0]
call fcn.015c65d0
xor edx, edx
mov rcx, qword [0x039f11b0]
call fcn.017cbb30
mov edi, eax
test eax, eax
jns 0x15caec9
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x15caea8
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
test rbx, rbx
je 0x15caeb7
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x15caf90
mov edi, r13d
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x15caedd
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
test rbx, rbx
je 0x15caeec
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x15caf90
mov qword [rsp + 0x20], 0x1000000f
xor r9d, r9d
lea r8, [rsp + 0xa8]
mov edx, r13d
mov ecx, 0xc1010001
call fcn.0124e580
mov edi, eax
lea rcx, [rsp + 0x30]
call fcn.0116a920
nop
mov qword [rsp + 0x50], r12
mov qword [rsp + 0x68], r14
lea rcx, [rsp + 0x50]
call fcn.0116d120
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
jmp 0x15caf90
mov qword [rsp + 0x20], 0x1000000f
xor r9d, r9d
xor r8d, r8d
mov edx, r13d
mov ecx, 0xc1030001
call fcn.0124e580
mov edi, eax
mov qword [rsp + 0x50], r12
mov qword [rsp + 0x68], r14
lea rcx, [rsp + 0x50]
call fcn.0116d120
nop
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + 0x78]
mov eax, edi
mov rcx, qword [rsp + 0xc0]
xor rcx, rsp
call fcn.01003340
lea r11, [rsp + 0xd0]
mov rbx, qword [r11 + 0x20]
mov rbp, qword [r11 + 0x28]
mov rsi, qword [r11 + 0x30]
mov rdi, qword [r11 + 0x38]
mov rsp, r11
pop r14
pop r13
pop r12
ret