Function at 0x14009543c
Capabilities:
Get common file path

Disassembly:
mov rax, rsp
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x348]
sub rsp, 0x420
mov qword [rbp - 0x28], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov rax, qword [0x14016b400]
xor rax, rsp
mov qword [rbp + 0x310], rax
mov r14, rcx
lea r12, str.base_stor_vssmodulescoord_srchwwrpdb.cxx
mov qword [rsp + 0x30], r12
lea r13, str.CVssHardwareProviderWrapper::GetBootDrive
mov qword [rsp + 0x38], r13
lea rsi, str.CORHWDBC
mov qword [rsp + 0x40], rsi
mov dword [rsp + 0x48], 0x49
mov dword [rsp + 0x4c], 1
mov dword [rsp + 0x50], 0xff
xor r15d, r15d
mov dword [rbp - 0x30], 0x1000000
xor edx, edx
lea r8d, [r15 + 0x78]
lea rcx, [rsp + 0x58]
call sub.msvcrt.dll_memset
xor r8d, r8d
lea rdx, [rsp + 0x30]
lea rcx, [rbp - 0x20]
call fcn.14001cce0
nop
mov edx, 0x104
lea rcx, [rbp + 0x100]
call qword [sym.imp.api_ms_win_core_sysinfo_l1_1_0.dll_GetSystemDirectoryW]
lea edi, [r15 + 0xf]
test eax, eax
jne 0x1400955c2
call qword [sym.imp.api_ms_win_core_errorhandling_l1_1_0.dll_GetLastError]
mov ebx, eax
test eax, eax
jle 0x140095519
movzx ebx, ax
or ebx, 0x80070000
mov dword [rbp - 0x18], ebx
mov qword [rsp + 0x30], r12
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x40], rsi
mov dword [rsp + 0x48], 0x50
mov dword [rsp + 0x4c], 1
mov dword [rsp + 0x50], 0xff
mov dword [rbp - 0x30], 0x1000000
xor edx, edx
lea r8d, [rdx + 0x78]
lea rcx, [rsp + 0x58]
call sub.msvcrt.dll_memset
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
mov eax, ebx
shr eax, 0x1f
test al, al
je 0x140095592
lea rdx, [rsp + 0x30]
lea rcx, [rbp + 0x50]
call fcn.14000aeb0
lea r9, str.GetSystemDirectory
mov r8d, ebx
mov rdx, rax
lea rcx, [rbp - 0x20]
call fcn.1400dc9fc
nop
cmp byte [rbp - 0x2d], 0
je 0x1400955c2
lea rbx, [rsp + 0x58]
mov rsi, rdi
mov rcx, qword [rbx]
test rcx, rcx
je 0x1400955b1
call qword [sym.imp.api_ms_win_core_com_l1_1_0.dll_CoTaskMemFree]
mov qword [rbx], r15
add rbx, 8
sub rsi, 1
jne 0x1400955a0
lea rsi, str.CORHWDBC
mov r8d, 0x104
mov rdx, r14
lea rcx, [rbp + 0x100]
call qword [sym.imp.api_ms_win_core_file_l1_1_0.dll_GetVolumePathNameW]
test eax, eax
jne 0x140095694
call qword [sym.imp.api_ms_win_core_errorhandling_l1_1_0.dll_GetLastError]
mov ebx, eax
test eax, eax
jle 0x1400955f5
movzx ebx, ax
or ebx, 0x80070000
mov dword [rbp - 0x18], ebx
mov qword [rsp + 0x30], r12
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x40], rsi
mov dword [rsp + 0x48], 0x56
mov dword [rsp + 0x4c], 1
mov dword [rsp + 0x50], 0xff
mov dword [rbp - 0x30], 0x1000000
xor edx, edx
lea r8d, [rdx + 0x78]
lea rcx, [rsp + 0x58]
call sub.msvcrt.dll_memset
lea rax, [rsp + 0x30]
mov qword [rsp + 0x28], rax
mov eax, ebx
shr eax, 0x1f
test al, al
je 0x14009566e
lea rdx, [rsp + 0x30]
lea rcx, [rbp + 0x50]
call fcn.14000aeb0
lea r9, str.GetVolumePathName
mov r8d, ebx
mov rdx, rax
lea rcx, [rbp - 0x20]
call fcn.1400dc9fc
nop
cmp byte [rbp - 0x2d], 0
je 0x140095694
lea rbx, [rsp + 0x58]
mov rcx, qword [rbx]
test rcx, rcx
je 0x14009568a
call qword [sym.imp.api_ms_win_core_com_l1_1_0.dll_CoTaskMemFree]
mov qword [rbx], r15
add rbx, 8
sub rdi, 1
jne 0x140095679
lea rcx, [rbp - 0x20]
call fcn.14001ce00
mov rcx, qword [rbp + 0x310]
xor rcx, rsp
call fcn.1400321c0
lea r11, [rsp + 0x420]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret