Function at 0x14000d410
Capabilities:
Get disk information
Get disk size

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r14
push r15
sub rsp, 0x6a0
mov rax, qword [0x14005b0e8]
xor rax, rsp
mov qword [rsp + 0x690], rax
xor edi, edi
mov r14, r8
mov rsi, rdx
mov dword [rsp + 0x40], edi
mov r15, rcx
mov qword [rsp + 0x50], rdi
mov r9, rdx
mov qword [rsp + 0x48], rdi
lea r8, [0x14003ed48]
mov edx, 0x104
lea rcx, [rsp + 0x60]
call fcn.140003ca0
mov qword [rsp + 0x30], rdi
lea r8d, [rdi + 3]
mov dword [rsp + 0x28], edi
xor r9d, r9d
xor edx, edx
mov dword [rsp + 0x20], 3
mov rcx, rsi
call qword [sym.imp.KERNEL32.DLL_CreateFileW]
mov rbp, rax
lea rcx, [rax - 1]
cmp rcx, 0xfffffffffffffffd
ja 0x14000d4af
mov rcx, rax
call fcn.14000c340
mov rcx, rbp
mov rbx, rax
call qword [sym.imp.KERNEL32.DLL_CloseHandle]
test rbx, rbx
jne 0x14000d4ba
mov rcx, rsi
call fcn.140004890
mov rbx, rax
lea r12, str.Path
xor r9d, r9d
mov rdx, r12
mov r8, rbx
mov rcx, r15
call fcn.1400118b0
mov rcx, rsi
call fcn.140004890
mov r8, rax
lea rdx, str.Volume_GUID
xor r9d, r9d
mov rcx, r15
call fcn.1400118b0
mov dword [rsp + 0x38], 0x104
lea rax, [rsp + 0x480]
mov qword [rsp + 0x30], rax
lea rdx, [rsp + 0x270]
mov qword [rsp + 0x28], rdi
lea rcx, [rsp + 0x60]
xor r9d, r9d
mov qword [rsp + 0x20], rdi
mov r8d, 0x104
call qword [sym.imp.KERNEL32.DLL_GetVolumeInformationW]
test eax, eax
je 0x14000d67f
mov r8, r14
mov rdx, rsi
mov rcx, r15
call fcn.14000cec0
lea r14, [0x1417cbce0]
xor edx, edx
mov rcx, r14
mov r8d, 0x10000
mov rbx, r14
call sub.msvcrt.dll_memset
mov rdx, rdi
mov esi, 0x7ff
mov ebp, 0x2800
nop word [rax + rax]
movzx ecx, word [rsp + rdx*2 + 0x270]
test cx, cx
je 0x14000d5d9
cmp cx, 0x7f
jbe 0x14000d5c3
cmp cx, si
ja 0x14000d598
movzx eax, cx
shr ax, 6
or al, 0xc0
mov byte [rbx], al
inc rbx
jmp 0x14000d5bd
lea eax, [rcx + rbp]
cmp ax, si
jbe 0x14000d5d6
movzx eax, cx
shr ax, 0xc
or al, 0xe0
mov byte [rbx], al
movzx eax, cx
shr ax, 6
and al, 0x3f
or al, 0x80
mov byte [rbx + 1], al
add rbx, 2
and cl, 0x3f
or cl, 0x80
mov byte [rbx], cl
inc rdx
inc rbx
cmp rdx, 0x5555
jb 0x14000d570
jmp 0x14000d5d9
mov byte [rbx], dil
xor r9d, r9d
lea rdx, str.Label
mov r8, r14
mov rcx, r15
call fcn.1400118b0
xor edx, edx
mov r8d, 0x10000
mov rcx, r14
mov rbx, r14
call sub.msvcrt.dll_memset
movzx ecx, word [rsp + rdi*2 + 0x480]
test cx, cx
je 0x14000d66a
cmp cx, 0x7f
jbe 0x14000d654
cmp cx, si
ja 0x14000d629
movzx eax, cx
shr ax, 6
or al, 0xc0
mov byte [rbx], al
inc rbx
jmp 0x14000d64e
lea eax, [rcx + rbp]
cmp ax, si
jbe 0x14000d667
movzx eax, cx
shr ax, 0xc
or al, 0xe0
mov byte [rbx], al
movzx eax, cx
shr ax, 6
and al, 0x3f
or al, 0x80
mov byte [rbx + 1], al
add rbx, 2
and cl, 0x3f
or cl, 0x80
mov byte [rbx], cl
inc rdi
inc rbx
cmp rdi, 0x5555
jb 0x14000d601
jmp 0x14000d66a
mov byte [rbx], 0
xor r9d, r9d
lea rdx, str.Filesystem
mov r8, r14
mov rcx, r15
call fcn.1400118b0
lea r9, [rsp + 0x50]
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0x60]
call qword [sym.imp.KERNEL32.DLL_GetDiskFreeSpaceExW]
test eax, eax
je 0x14000d6ce
mov rdx, qword [0x1417bba30]
mov r8d, 0x400
mov rcx, qword [rsp + 0x50]
mov rdx, qword [rdx + 0x238]
call fcn.140003da0
mov r8, rax
lea rdx, str.Free_Space
mov r9d, 0x800
mov rcx, r15
call fcn.1400118b0
xor r9d, r9d
lea r8, [rsp + 0x48]
xor edx, edx
lea rcx, [rsp + 0x60]
call qword [sym.imp.KERNEL32.DLL_GetDiskFreeSpaceExW]
test eax, eax
je 0x14000d71d
mov rdx, qword [0x1417bba30]
mov r8d, 0x400
mov rcx, qword [rsp + 0x48]
mov rdx, qword [rdx + 0x238]
call fcn.140003da0
mov r8, rax
lea rdx, str.Total_Space
mov r9d, 0x800
mov rcx, r15
call fcn.1400118b0
mov rax, qword [rsp + 0x48]
test rax, rax
je 0x14000d7ab
mov rdx, qword [rsp + 0x50]
xorps xmm0, xmm0
test rdx, rdx
js 0x14000d73f
cvtsi2sd xmm0, rdx
jmp 0x14000d754
mov rcx, rdx
and edx, 1
shr rcx, 1
or rcx, rdx
cvtsi2sd xmm0, rcx
addsd xmm0, xmm0
movsd xmm2, qword [0x140055f18]
xorps xmm1, xmm1
mulsd xmm0, xmm2
test rax, rax
js 0x14000d76f
cvtsi2sd xmm1, rax
jmp 0x14000d784
mov rcx, rax
and eax, 1
shr rcx, 1
or rcx, rax
cvtsi2sd xmm1, rcx
addsd xmm1, xmm1
divsd xmm0, xmm1
lea r9, str._.2f__
xor r8d, r8d
lea rdx, str.Usage
mov rcx, r15
subsd xmm2, xmm0
movsd qword [rsp + 0x20], xmm2
call fcn.140011be0
lea r9, [rsp + 0x40]
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0x60]
call qword [sym.imp.KERNEL32.DLL_GetVolumePathNamesForVolumeNameW]
call qword [sym.imp.KERNEL32.DLL_GetLastError]
cmp eax, 0xea
jne 0x14000d8c3
mov eax, dword [rsp + 0x40]
test eax, eax
je 0x14000d8c3
mov ecx, eax
mov edx, 2
call qword [sym.imp.msvcrt.dll_calloc]
mov rsi, rax
test rax, rax
je 0x14000d8c3
mov r8d, dword [rsp + 0x40]
lea r9, [rsp + 0x40]
mov rdx, rax
lea rcx, [rsp + 0x60]
call qword [sym.imp.KERNEL32.DLL_GetVolumePathNamesForVolumeNameW]
test eax, eax
je 0x14000d8ba
mov r8d, 2
lea rdx, str.Volume_Path_Names
mov rcx, r15
call fcn.1400117b0
cmp word [rsi], 0
mov rbp, rax
mov rbx, rsi
je 0x14000d8ba
nop dword [rax + rax]
mov r8d, 4
lea rdx, str.Mount_Point
mov rcx, rbp
call fcn.1400117b0
mov rcx, rbx
mov rdi, rax
call fcn.140004890
mov rcx, 0xffffffffffffffff
nop word [rax + rax]
inc rcx
cmp word [rbx + rcx*2], 0
jne 0x14000d870
cmp rcx, 3
lea rdx, str.Drive_Letter
mov r8, rax
mov rcx, rdi
cmova rdx, r12
xor r9d, r9d
call fcn.1400118b0
mov rax, 0xffffffffffffffff
nop
cmp word [rbx + rax*2 + 2], 0
lea rax, [rax + 1]
jne 0x14000d8a0
lea rbx, [rbx + rax*2]
add rbx, 2
cmp word [rbx], 0
jne 0x14000d840
mov rcx, rsi
call qword [sym.imp.msvcrt.dll_free]
mov rcx, qword [rsp + 0x690]
xor rcx, rsp
call fcn.140029990
add rsp, 0x6a0
pop r15
pop r14
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret