Function at 0x493b30
Capabilities:
Allocate thread local storage
Check if file exists
Get common file path
Get file attributes
Get thread local storage value
Set thread local storage value

Disassembly:
mov r11, rsp
sub rsp, 0x88
mov qword [rsp + 0x38], 0xfffffffffffffffe
mov qword [r11 + 0x20], rbx
mov qword [r11 - 8], rbp
mov qword [r11 - 0x10], rsi
mov qword [r11 - 0x18], rdi
mov qword [r11 - 0x20], r12
mov qword [r11 - 0x28], r13
mov rax, qword [0x00522be8]
xor rax, rsp
mov qword [rsp + 0x50], rax
mov rsi, r8
mov rbp, rdx
mov rdi, rcx
mov qword [r11 - 0x58], rcx
mov qword [rcx + 0x30], 7
xor r13d, r13d
mov qword [rcx + 0x28], r13
mov word [rcx + 0x18], r13w
lea rbx, [rcx + 0x440]
mov qword [rbx], r13
mov eax, dword [0x00526114]
test al, 1
jne 0x493bb6
or eax, 1
mov dword [0x00526114], eax
call qword [sym.imp.KERNEL32.dll_TlsAlloc]
mov dword [0x00526110], eax
jmp 0x493bbc
mov eax, dword [0x00526110]
mov ecx, eax
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
jne 0x493be2
xor ecx, ecx
call qword [sym.imp.ole32.dll_CoInitialize]
mov edx, 1
mov ecx, dword [0x00526110]
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
lea rdx, [rsp + 0x40]
lea rcx, str.SynCom.PointingDevice
call qword [sym.imp.ole32.dll_CLSIDFromProgID]
mov qword [rsp + 0x20], rbx
lea r9, [0x004eae00]
xor edx, edx
lea r8d, [rdx + 0x15]
lea rcx, [rsp + 0x40]
call qword [sym.imp.ole32.dll_CoCreateInstance]
lea r11, method.h.virtual_0
mov qword [rdi + 0x438], r11
mov dword [rdi + 0x448], 0xffffffff
lea rcx, [rdi + 0x470]
call fcn.004a2ed0
nop
mov qword [rdi], rbp
mov qword [rdi + 8], rsi
mov dword [rdi + 0x458], 0x800
mov qword [rdi + 0x450], r13
mov dword [rdi + 0x464], r13d
mov dword [rdi + 0x468], r13d
mov dword [rdi + 0x45c], r13d
mov dword [rdi + 0x460], r13d
lea rsi, [rdi + 0x490]
mov qword [rsp + 0x28], rsi
mov dword [rsp + 0x20], r13d
xor r9d, r9d
xor edx, edx
lea r8d, [r9 + 0x26]
lea rcx, [rdi + 0x470]
call fcn.004a2f70
test eax, eax
jns 0x493d00
lea rcx, [0x004f5a78]
call fcn.004afdc0
test rax, rax
je 0x493cd6
lea rcx, [0x004f5a78]
call fcn.004afdc0
mov r11, rax
mov rcx, rsi
nop
nop
nop
movzx eax, word [r11]
mov word [rcx], ax
add r11, 2
add rcx, 2
test ax, ax
jne 0x493cc0
jmp 0x493d00
lea rcx, str.C:Program_Files
mov rdx, rsi
sub rdx, rcx
nop
nop
nop
nop
movzx eax, word [rcx]
mov word [rdx + rcx], ax
add rcx, 2
test ax, ax
jne 0x493cf0
lea rbx, [rdi + 0x698]
mov r8, rsi
lea rdx, str._sSynapticsSynTP
mov rcx, rbx
call fcn.004aa720
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x493d35
mov rdx, rbx
mov ecx, 0x104
call qword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
call fcn.0049de50
cmp eax, 9
jl 0x493d6e
lea rdx, [rdi + 0x8a0]
mov qword [rsp + 0x28], rdx
mov dword [rsp + 0x20], r13d
xor r9d, r9d
xor edx, edx
lea r8d, [r9 + 5]
lea rcx, [rdi + 0x470]
call fcn.004a2f70
test eax, eax
js 0x493d6e
mov rax, rdi
jmp 0x493d93
lea rcx, [rdi + 0x8a0]
sub rcx, rbx
nop
nop
movzx eax, word [rbx]
mov word [rcx + rbx], ax
add rbx, 2
test ax, ax
jne 0x493d80
mov rax, rdi
mov rcx, qword [rsp + 0x50]
xor rcx, rsp
call fcn.004a7100
mov rbx, qword [rsp + 0xa8]
mov rbp, qword [rsp + 0x80]
mov rsi, qword [rsp + 0x78]
mov rdi, qword [rsp + 0x70]
mov r12, qword [rsp + 0x68]
mov r13, qword [rsp + 0x60]
add rsp, 0x88
ret