Function at 0x18000c040
Capabilities:
Get disk information

Disassembly:
push rbp
push rbx
push rsi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x3e0]
sub rsp, 0x4e0
mov rax, qword [0x18002c008]
xor rax, rsp
mov qword [rbp + 0x3d0], rax
mov rbx, rcx
mov rsi, r9
lea rcx, [rsp + 0x60]
mov r14, r8
mov r12, rdx
call sym.ulib.dll_public:_void___cdecl_PATH::constructor_void____ptr64
lea rax, sym.ulib.dll_const_FSTRING::vftable
xor r13d, r13d
mov qword [rsp + 0x30], rax
mov rcx, rbx
mov rax, qword [0x18002c858]
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x40], r13
mov dword [rsp + 0x48], r13d
call sym.ulib.dll_public:_unsigned_char___cdecl_PATH::IsGuidVolName_void____ptr64
test al, al
jne 0x18000c2b1
mov rcx, rbx
call sym.ulib.dll_public:_unsigned_char___cdecl_PATH::EndsWithDelimiter_void_const___ptr64
mov rcx, rbx
mov r15b, al
call sym.ulib.dll_public:_class_WSTRING____ptr64___cdecl_PATH::QueryFullPathString_void_const___ptr64
mov rbx, rax
test rax, rax
je 0x18000c2b1
xor r8d, r8d
lea rcx, [rsp + 0x60]
mov rdx, rax
call sym.ulib.dll_public:_unsigned_char___cdecl_PATH::Initialize_class_WSTRING_const____ptr64__unsigned_char____ptr64
test al, al
je 0x1800108be
or r8d, 0xffffffff
lea rdx, [0x1800221c0]
lea rcx, [rsp + 0x30]
call sym.ulib.dll_public:_class_WSTRING____ptr64___cdecl_FSTRING::Initialize_unsigned_short_int____ptr64__unsigned_long_int____ptr64
test rax, rax
je 0x1800108be
or r9d, 0xffffffff
lea rdx, [rsp + 0x30]
xor r8d, r8d
mov rcx, rsi
call sym.ulib.dll_public:_unsigned_char___cdecl_WSTRING::Initialize_class_WSTRING_const____ptr64__unsigned_long_int__unsigned_long_int____ptr64
test al, al
je 0x1800108be
mov rax, qword [rbx]
movabs r10, 0xfd980fd51c5c1870
mov rax, qword [rax]
lea edx, [r13 + 1]
mov rcx, rbx
call qword [0x1800214b0]
lea rcx, [rsp + 0x60]
call sym.ulib.dll_public:_unsigned_char___cdecl_PATH::EndsWithDelimiter_void_const___ptr64
test al, al
je 0x1800107e6
mov byte [r14], r13b
lea rcx, [rsp + 0x60]
call sym.ulib.dll_public:_unsigned_char___cdecl_PATH::IsDrive_void_const___ptr64
test al, al
jne 0x18000c2b1
mov rcx, qword [rbp + 0x188]
lea rdx, [rbp + 0x1c0]
mov r8d, 0x104
call qword [sym.imp.KERNELBASE.dll_GetVolumeNameForVolumeMountPointW]
nop dword [rax + rax]
lea rcx, [rsp + 0x60]
test eax, eax
je 0x1800107fd
call sym.ulib.dll_public:_void___cdecl_PATH::TruncateDelimiter_void____ptr64
lea rcx, [rsp + 0x60]
call sym.ulib.dll_public:_unsigned_char___cdecl_PATH::IsDrive_void_const___ptr64
test al, al
je 0x18000c1b0
mov byte [r14], 1
or r14d, 0xffffffff
lea rdx, [rbp + 0x178]
mov r9d, r14d
xor r8d, r8d
mov rcx, r12
call sym.ulib.dll_public:_unsigned_char___cdecl_WSTRING::Initialize_class_WSTRING_const____ptr64__unsigned_long_int__unsigned_long_int____ptr64
test al, al
je 0x18000c2b1
test r15b, r15b
je 0x18000c1ed
mov rdx, qword [0x18002c7d0]
mov rcx, rsi
call sym.ulib.dll_public:_unsigned_char___cdecl_WSTRING::Strcat_class_WSTRING_const____ptr64____ptr64
test al, al
je 0x18000c2b1
lea rcx, [rbp + 0x1c0]
or rax, 0xffffffffffffffff
inc rax
cmp word [rcx + rax*2], r13w
jne 0x18000c1f8
lea rax, [rax*2 - 2]
cmp rax, 0x208
jae 0x18000c2ab
mov word [rbp + rax + 0x1c0], r13w
xor edx, edx
mov rcx, qword gs:[0x60]
lea r8d, [rdx + 0x30]
mov rcx, qword [rcx + 0x30]
call qword [sym.imp.ntdll.dll_RtlAllocateHeap]
nop dword [rax + rax]
mov rbx, rax
test rax, rax
je 0x18000c2b1
mov rcx, qword [0x18002c868]
lea rdx, [rbp + 0x1c0]
mov qword [rax + 0x10], r13
mov r8d, r14d
mov dword [rax + 0x18], r13d
lea rax, sym.ulib.dll_const_DSTRING::vftable
mov qword [rbx + 8], rcx
mov rcx, rbx
mov qword [rbx], rax
mov qword [rbx + 0x20], r13
mov dword [rbx + 0x28], r13d
call sym.ulib.dll_public:_unsigned_char___cdecl_WSTRING::Initialize_unsigned_short_int_const____ptr64__unsigned_long_int____ptr64
test al, al
je 0x18001089a
mov rax, rbx
mov rcx, qword [rbp + 0x3d0]
xor rcx, rsp
call fcn.18000d460
add rsp, 0x4e0
pop r15
pop r14
pop r13
pop r12
pop rsi
pop rbx
pop rbp
ret
call fcn.18000d638
int3
xor eax, eax
jmp 0x18000c288
lea rcx, [rsp + 0x60]
call sym.ulib.dll_public:_unsigned_char___cdecl_PATH::AppendDelimiter_void____ptr64
test al, al
je 0x18000c2b1
jmp 0x18000c157
call sym.ulib.dll_public:_void___cdecl_PATH::TruncateDelimiter_void____ptr64
lea rcx, [rsp + 0x60]
call sym.ulib.dll_public:_unsigned_char___cdecl_PATH::IsDrive_void_const___ptr64
test al, al
jne 0x18000c2b1
lea rcx, [rsp + 0x60]
call fcn.18000122c
mov rbx, rax
test rax, rax
je 0x18000c2b1
or dword [rsp + 0x20], 0xffffffff
xor r9d, r9d
mov r8, rax
xor edx, edx
mov rcx, rsi
call sym.ulib.dll_public:_unsigned_char___cdecl_WSTRING::InsertString_unsigned_long_int__class_WSTRING_const____ptr64__unsigned_long_int__unsigned_long_int____ptr64
test al, al
je 0x18001089a
mov r8, qword [0x18002c7d0]
xor r9d, r9d
or dword [rsp + 0x20], 0xffffffff
xor edx, edx
mov rcx, rsi
call sym.ulib.dll_public:_unsigned_char___cdecl_WSTRING::InsertString_unsigned_long_int__class_WSTRING_const____ptr64__unsigned_long_int__unsigned_long_int____ptr64
test al, al
je 0x18001089a
mov rax, qword [rbx]
movabs r10, 0xfd980fd51c5c1870
mov rax, qword [rax]
mov edx, 1
mov rcx, rbx
call qword [0x1800214b0]
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x60]
call sym.ulib.dll_public:_unsigned_char___cdecl_PATH::SetName_class_WSTRING_const____ptr64____ptr64
test al, al
jne 0x18000c15a
jmp 0x18000c2b1
mov rax, qword [rbx]
movabs r10, 0xfd980fd51c5c1870
mov rax, qword [rax]
mov edx, 1
mov rcx, rbx
call qword [0x1800214b0]
nop
jmp 0x18000c2b1
mov rax, qword [rbx]
movabs r10, 0xfd980fd51c5c1870
mov rax, qword [rax]
mov edx, 1
mov rcx, rbx
call qword [0x1800214b0]
nop
jmp 0x18000c2b1