Function at 0x140032970
Capabilities:
Get common file path
Get program files directory

Disassembly:
push rbp
push rsi
push rdi
sub rsp, 0xd30
mov qword [rsp + 0x38], 0xfffffffffffffffe
mov qword [rsp + 0xd60], rbx
mov rax, qword [0x14012ce40]
xor rax, rsp
mov qword [rsp + 0xd20], rax
mov edi, edx
mov rbx, rcx
xor ebp, ebp
mov rax, qword [0x1401370f0]
test rax, rax
jne 0x1400329d9
mov ecx, 0x310
call fcn.140084d88
mov qword [rsp + 0x30], rax
test rax, rax
je 0x1400329cf
mov rcx, rax
call fcn.140050830
jmp 0x1400329d2
mov rax, rbp
mov qword [0x1401370f0], rax
lea rcx, str.____ROLLBACK___
lea r8, [0x1400efef4]
test edi, edi
cmovne r8, rcx
lea rdx, str.____InitializeStep______s
mov rcx, rax
call fcn.140050c00
test edi, edi
je 0x140032a0a
mov eax, 1
jmp 0x14003308a
mov word [rsp + 0x4b0], 0
xor edx, edx
mov r8d, 0x206
lea rcx, [rsp + 0x4b2]
call fcn.1400b57e0
mov word [rsp + 0x8d0], 0
xor edx, edx
mov r8d, 0x206
lea rcx, [rsp + 0x8d2]
call fcn.1400b57e0
call fcn.14008cdf8
mov rcx, qword [rax + 8]
mov r8d, 0x104
lea rdx, [rsp + 0x8d0]
mov rcx, qword [rcx + 0x88]
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea r9, [rsp + 0x30]
lea r8, [rsp + 0x4b0]
mov edx, 0x104
lea rcx, [rsp + 0x8d0]
call qword [sym.imp.KERNEL32.dll_GetFullPathNameW]
mov rdx, qword [rsp + 0x30]
mov word [rdx], 0
mov word [rbx + 0x208], 0
lea r8, [rsp + 0x4b0]
mov edx, 0x104
lea rcx, [rbx + 0x208]
call fcn.1400b1b70
mov word [rsp + 0x4b0], 0
xor edx, edx
mov r8d, 0x206
lea rcx, [rsp + 0x4b2]
call fcn.1400b57e0
lea rdx, [rsp + 0x4b0]
mov qword [rsp + 0x20], rdx
xor r9d, r9d
xor r8d, r8d
lea edx, [r9 + 0x26]
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
js 0x140032b16
mov word [rbx], 0
lea r8, [rsp + 0x4b0]
mov edx, 0x104
mov rcx, rbx
call fcn.1400b1b70
jmp 0x140032b2f
mov word [rbx], 0
lea r8, str.C:Program_Files
mov edx, 0x104
mov rcx, rbx
call fcn.1400b1b70
mov rdi, qword [0x140136ce8]
test rdi, rdi
jne 0x140032b8a
lea ecx, [rdi + 0x30]
call fcn.140084d88
mov rdi, rax
mov qword [rsp + 0x30], rax
test rax, rax
je 0x140032b80
mov ecx, 0x20
call fcn.140084d88
nop
test rax, rax
je 0x140032b6e
mov qword [rax + 8], rbp
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rbp
jmp 0x140032b71
mov rax, rbp
mov qword [rdi + 0x28], rax
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
jmp 0x140032b83
mov rdi, rbp
mov qword [0x140136ce8], rdi
mov r9d, 0x104
lea r8, [rsp + 0xae0]
lea rdx, str.INSTALL_DIRECTORY
mov rcx, rdi
call fcn.14004a950
lea rdx, [0x1400e93f4]
mov rcx, rbx
call qword [sym.imp.SHLWAPI.dll_PathAppendW]
lea rdx, [rsp + 0xae0]
mov rcx, rbx
call qword [sym.imp.SHLWAPI.dll_PathAppendW]
mov rax, qword [0x1401370f0]
test rax, rax
jne 0x140032bfc
mov ecx, 0x310
call fcn.140084d88
mov qword [rsp + 0x30], rax
test rax, rax
je 0x140032bf2
mov rcx, rax
call fcn.140050830
jmp 0x140032bf5
mov rax, rbp
mov qword [0x1401370f0], rax
mov r8, rbx
lea rdx, str.__programFilesDir:_s
mov rcx, rax
call fcn.140050c00
mov word [rsp + 0x6c0], 0
xor edx, edx
mov r8d, 0x206
lea rcx, [rsp + 0x6c2]
call fcn.1400b57e0
mov rdi, qword [0x140136ce8]
test rdi, rdi
jne 0x140032c88
lea ecx, [rdi + 0x30]
call fcn.140084d88
mov rdi, rax
mov qword [rsp + 0x30], rax
test rax, rax
je 0x140032c7e
mov ecx, 0x20
call fcn.140084d88
nop
test rax, rax
je 0x140032c6c
mov qword [rax + 8], rbp
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rbp
jmp 0x140032c6f
mov rax, rbp
mov qword [rdi + 0x28], rax
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
jmp 0x140032c81
mov rdi, rbp
mov qword [0x140136ce8], rdi
mov r9d, 0x104
lea r8, [rsp + 0x6c0]
lea rdx, str.PRINT_INFNAME
mov rcx, rdi
call fcn.14004a950
test eax, eax
jne 0x140032d1f
lea rax, [rsp + 0x6c0]
mov qword [rsp + 0x20], rax
lea r9, [rbx + 0x208]
lea r8, str._s_s
mov edx, 0x104
lea rcx, [rbx + 0x610]
call fcn.1400b1010
mov rax, qword [0x1401370f0]
test rax, rax
jne 0x140032d09
mov ecx, 0x310
call fcn.140084d88
mov qword [rsp + 0x30], rax
test rax, rax
je 0x140032cff
mov rcx, rax
call fcn.140050830
jmp 0x140032d02
mov rax, rbp
mov qword [0x1401370f0], rax
lea r8, [rbx + 0x610]
lea rdx, str.__print_inf:_s
mov rcx, rax
call fcn.140050c00
mov rdi, qword [0x140136ce8]
test rdi, rdi
jne 0x140032d7a
lea ecx, [rdi + 0x30]
call fcn.140084d88
mov rdi, rax
mov qword [rsp + 0x30], rax
test rax, rax
je 0x140032d70
mov ecx, 0x20
call fcn.140084d88
nop
test rax, rax
je 0x140032d5e
mov qword [rax + 8], rbp
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rbp
jmp 0x140032d61
mov rax, rbp
mov qword [rdi + 0x28], rax
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
jmp 0x140032d73
mov rdi, rbp
mov qword [0x140136ce8], rdi
mov r9d, 0x104
lea r8, [rsp + 0x6c0]
lea rdx, str.FAXPRINTER_INFNAME
mov rcx, rdi
call fcn.14004a950
test eax, eax
jne 0x140032e11
lea rax, [rsp + 0x6c0]
mov qword [rsp + 0x20], rax
lea r9, [rbx + 0x208]
lea r8, str._s_s
mov edx, 0x104
lea rcx, [rbx + 0x818]
call fcn.1400b1010
mov rax, qword [0x1401370f0]
test rax, rax
jne 0x140032dfb
mov ecx, 0x310
call fcn.140084d88
mov qword [rsp + 0x30], rax
test rax, rax
je 0x140032df1
mov rcx, rax
call fcn.140050830
jmp 0x140032df4
mov rax, rbp
mov qword [0x1401370f0], rax
lea r8, [rbx + 0x818]
lea rdx, str.__fax_rint_inf:_s
mov rcx, rax
call fcn.140050c00
mov qword [rsp + 0x40], 0xffffffffffffffff
mov qword [rsp + 0x48], rbp
mov word [rsp + 0x60], 0
mov word [rsp + 0x260], 0
lea rax, str.DataSection
mov qword [rsp + 0x460], rax
lea rax, str.DestinationDirs
mov qword [rsp + 0x468], rax
lea rax, str.CopyFiles
mov qword [rsp + 0x470], rax
lea rax, str.DriverFile
mov qword [rsp + 0x478], rax
lea rax, str.ConfigFile
mov qword [rsp + 0x480], rax
lea rax, str.DataFile
mov qword [rsp + 0x488], rax
lea rax, str.DefaultDataType
mov qword [rsp + 0x490], rax
lea rax, str.HelpFile
mov qword [rsp + 0x498], rax
lea rax, str.LanguageMonitor
mov qword [rsp + 0x4a0], rax
lea rax, str.PrintProcessor
mov qword [rsp + 0x4a8], rax
lea r8, [rbx + 0x1130]
lea rdx, [rbx + 0x610]
lea rcx, [rsp + 0x40]
call fcn.1400518c0
lea rcx, [rbx + 0x1088]
call fcn.14008a174
lea r8, [rbx + 0x1088]
lea rdx, [rbx + 0x610]
lea rcx, [rsp + 0x40]
call fcn.140051b50
lea rdx, [rbx + 0x818]
xor eax, eax
or rcx, 0xffffffffffffffff
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
cmp rcx, 1
je 0x140032f2f
lea r8, [rbx + 0x1088]
lea rcx, [rsp + 0x40]
call fcn.140051b50
mov rdi, qword [0x140136ce8]
test rdi, rdi
jne 0x140032f8a
lea ecx, [rdi + 0x30]
call fcn.140084d88
mov rdi, rax
mov qword [rsp + 0x30], rax
test rax, rax
je 0x140032f80
mov ecx, 0x20
call fcn.140084d88
nop
test rax, rax
je 0x140032f6e
mov qword [rax + 8], rbp
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rbp
jmp 0x140032f71
mov rax, rbp
mov qword [rdi + 0x28], rax
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
jmp 0x140032f83
mov rdi, rbp
mov qword [0x140136ce8], rdi
lea r8, [rbx + 0x10c0]
lea rdx, str.PRODUCT_VIDPID
mov rcx, rdi
call fcn.14004c670
mov rdi, qword [0x140136ce8]
test rdi, rdi
jne 0x140032ffb
lea ecx, [rdi + 0x30]
call fcn.140084d88
mov rdi, rax
mov qword [rsp + 0x30], rax
test rax, rax
je 0x140032ff1
mov ecx, 0x20
call fcn.140084d88
nop
test rax, rax
je 0x140032fdf
mov qword [rax + 8], rbp
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rbp
jmp 0x140032fe2
mov rax, rbp
mov qword [rdi + 0x28], rax
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
jmp 0x140032ff4
mov rdi, rbp
mov qword [0x140136ce8], rdi
lea r8, [rbx + 0x10f8]
lea rdx, str.UNINSTALL64_MSIS
mov rcx, rdi
call fcn.14004c670
mov rdi, qword [0x140136ce8]
test rdi, rdi
jne 0x14003306c
lea ecx, [rdi + 0x30]
call fcn.140084d88
mov rdi, rax
mov qword [rsp + 0x30], rax
test rax, rax
je 0x140033062
mov ecx, 0x20
call fcn.140084d88
nop
test rax, rax
je 0x140033050
mov qword [rax + 8], rbp
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rbp
jmp 0x140033053
mov rax, rbp
mov qword [rdi + 0x28], rax
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
jmp 0x140033065
mov rdi, rbp
mov qword [0x140136ce8], rdi
lea r8, [rbx + 0x410]
mov r9d, 0x100
lea rdx, str.PRINTER_SERIES_NAME
mov rcx, rdi
call fcn.14004a950
xor eax, eax
mov rcx, qword [rsp + 0xd20]
xor rcx, rsp
call fcn.1400b09d0
mov rbx, qword [rsp + 0xd60]
add rsp, 0xd30
pop rdi
pop rsi
pop rbp
ret