Function at 0x14001eefc
Capabilities:
Get disk information

Disassembly:
mov qword [rsp + 0x10], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x190]
sub rsp, 0x290
mov rax, qword [0x140035078]
xor rax, rsp
mov qword [rbp + 0x180], rax
xor esi, esi
mov qword [rsp + 0x68], r8
mov dword [rsp + 0x38], edx
mov ebx, esi
mov qword [rsp + 0x58], rbx
mov r14, r8
mov qword [rsp + 0x50], rsi
mov r12d, edx
mov dword [rsp + 0x3c], esi
test rcx, rcx
je 0x14001f54e
test edx, edx
je 0x14001f54e
test r8, r8
je 0x14001f54e
lea rdx, [rsp + 0x50]
mov edi, esi
call fcn.14001d700
test eax, eax
jns 0x14001ef7d
mov edi, eax
bts edi, 0x1c
mov r15, qword [rsp + 0x50]
test edi, edi
js 0x14001f517
cmp r12d, 2
jne 0x14001efec
mov rcx, r15
call fcn.140008fbc
mov qword [r14], rax
test rax, rax
jne 0x14001efdf
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
movzx ecx, ax
mov r13d, 0x80070000
or ecx, r13d
test eax, eax
cmovle ecx, eax
test ecx, ecx
jns 0x14001efda
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
movzx edi, ax
or edi, r13d
test eax, eax
cmovle edi, eax
jmp 0x14001efdf
mov edi, 0x80004005
test edi, edi
js 0x14001f517
jmp 0x14001f50f
xor eax, eax
mov qword [rsp + 0x60], rsi
mov qword [rsp + 0x48], rsi
mov r13d, eax
mov qword [rsp + 0x40], rax
mov edi, eax
mov dword [rsp + 0x30], eax
test r15, r15
je 0x14001f40d
lea rdx, [rsp + 0x60]
mov rcx, r15
call fcn.14001d700
xor r8d, r8d
test eax, eax
jns 0x14001f029
mov ebx, eax
bts ebx, 0x1c
test ebx, ebx
js 0x14001f041
lea rcx, [rsp + 0x48]
call fcn.14001f624
mov rsi, qword [rsp + 0x48]
mov ebx, eax
xor r8d, r8d
mov r15, rsi
test ebx, ebx
js 0x14001f3c6
mov r14d, dword [rsp + 0x30]
mov edi, 0x80004005
mov r13d, 0x80070000
movzx esi, word [r15]
cmp r8w, si
je 0x14001f393
xor edx, edx
lea rcx, [rsp + 0x70]
mov r8d, 0x208
call sub.msvcrt.dll_memset
xor r8d, r8d
mov qword [rsp + 0x30], r8
cmp r12d, 1
je 0x14001f0cf
lea eax, [r12 - 3]
cmp eax, 1
ja 0x14001f0c5
lea eax, [rsi - 0x61]
cmp ax, 0x19
jbe 0x14001f0ab
sub si, 0x41
cmp si, 0x19
ja 0x14001f14e
mov eax, 0x3a
cmp ax, word [r15 + 2]
jne 0x14001f14e
cmp r8w, word [r15 + 4]
jmp 0x14001f147
mov ebx, 0x80070057
jmp 0x14001f375
or rax, 0xffffffffffffffff
inc rax
cmp word [r15 + rax*2], r8w
jne 0x14001f0d3
cmp rax, 7
mov ecx, r8d
setae cl
jb 0x14001f110
mov r8d, 7
lea rdx, str.Volume
mov rcx, r15
call qword [sym.imp.msvcrt.dll__wcsnicmp]
nop dword [rax + rax]
xor r8d, r8d
test eax, eax
mov ecx, r8d
sete cl
test ecx, ecx
je 0x14001f14e
or rax, 0xffffffffffffffff
inc rax
cmp word [r15 + rax*2], r8w
jne 0x14001f118
cmp rax, 1
jb 0x14001f14e
dec rax
lea rdx, [0x14002f8f8]
lea rcx, [r15 + rax*2]
call qword [sym.imp.msvcrt.dll__wcsicmp]
nop dword [rax + rax]
xor r8d, r8d
test eax, eax
mov eax, 1
je 0x14001f151
mov eax, r8d
test ebx, ebx
js 0x14001f375
test eax, eax
je 0x14001f375
mov r8d, 0x104
lea rdx, [rsp + 0x70]
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
nop dword [rax + rax]
xor r8d, r8d
test eax, eax
je 0x14001f375
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x70]
call fcn.14001d700
mov r12, qword [rsp + 0x30]
xor r8d, r8d
test eax, eax
jns 0x14001f1ac
or eax, 0x10000000
jl 0x14001f348
or dword [rsp + 0x28], 0xffffffff
or r9d, 0xffffffff
mov r8, qword [rsp + 0x60]
mov ecx, 0x409
mov qword [rsp + 0x20], r12
lea edx, [r9 + 2]
call qword [sym.imp.KERNEL32.dll_CompareStringW]
nop dword [rax + rax]
cmp eax, 2
jne 0x14001f345
test r14d, r14d
jne 0x14001f25b
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
nop dword [rax + rax]
mov rcx, rax
lea eax, [r14 + 8]
mov r8d, eax
mov edx, eax
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
nop dword [rax + rax]
mov qword [rsp + 0x40], rax
mov rsi, rax
test rax, rax
jne 0x14001f2e4
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
xor r8d, r8d
movzx ecx, ax
or ecx, r13d
test eax, eax
cmovle ecx, eax
test ecx, ecx
jns 0x14001f254
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
movzx ebx, ax
xor r8d, r8d
or ebx, r13d
test eax, eax
cmovle ebx, eax
jmp 0x14001f2e0
mov ebx, edi
jmp 0x14001f2e0
lea ebx, [r14 + 1]
shl rbx, 3
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
nop dword [rax + rax]
mov r8, qword [rsp + 0x40]
mov r9, rbx
mov rcx, rax
mov edx, 8
call qword [sym.imp.KERNEL32.dll_HeapReAlloc]
nop dword [rax + rax]
xor r8d, r8d
mov rsi, rax
test rax, rax
je 0x14001f29b
mov ebx, r8d
jmp 0x14001f2db
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
xor r8d, r8d
movzx ecx, ax
or ecx, r13d
test eax, eax
cmovle ecx, eax
test ecx, ecx
jns 0x14001f2d5
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
movzx ebx, ax
xor r8d, r8d
or ebx, r13d
test eax, eax
cmovle ebx, eax
jmp 0x14001f2d7
mov ebx, edi
test ebx, ebx
js 0x14001f348
mov qword [rsp + 0x40], rsi
test ebx, ebx
js 0x14001f348
mov rcx, r15
call fcn.140008fbc
mov ecx, r14d
xor r8d, r8d
mov qword [rsi + rcx*8], rax
test rax, rax
je 0x14001f300
mov ebx, r8d
jmp 0x14001f340
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
xor r8d, r8d
movzx ecx, ax
or ecx, r13d
test eax, eax
cmovle ecx, eax
test ecx, ecx
jns 0x14001f33a
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
movzx ebx, ax
xor r8d, r8d
or ebx, r13d
test eax, eax
cmovle ebx, eax
jmp 0x14001f33c
mov ebx, edi
test ebx, ebx
js 0x14001f348
inc r14d
jmp 0x14001f348
xor r8d, r8d
test r12, r12
je 0x14001f370
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
nop dword [rax + rax]
mov r8, r12
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
nop dword [rax + rax]
xor r8d, r8d
mov r12d, dword [rsp + 0x38]
or rax, 0xffffffffffffffff
inc rax
cmp word [r15 + rax*2], r8w
jne 0x14001f379
lea r15, [r15 + rax*2]
add r15, 2
test ebx, ebx
jns 0x14001f05c
mov rsi, qword [rsp + 0x48]
mov r13, qword [rsp + 0x40]
mov dword [rsp + 0x30], r14d
mov r14, qword [rsp + 0x68]
mov edi, dword [rsp + 0x30]
test ebx, ebx
js 0x14001f3c6
test edi, edi
mov eax, 0x80070490
cmove ebx, eax
test ebx, ebx
js 0x14001f3c6
mov qword [rsp + 0x58], r13
mov dword [rsp + 0x3c], edi
test ebx, ebx
mov edx, r8d
mov rcx, r8
cmovs edx, edi
cmovs rcx, r13
call fcn.14001f584
test rsi, rsi
je 0x14001f3ff
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
nop dword [rax + rax]
mov r8, rsi
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
nop dword [rax + rax]
mov r15, qword [rsp + 0x50]
mov edi, ebx
mov rbx, qword [rsp + 0x58]
jmp 0x14001f412
mov edi, 0x80070057
test edi, edi
js 0x14001f517
mov rbx, qword [rbx]
mov ecx, r12d
sub ecx, 1
je 0x14001f4ea
sub ecx, 2
je 0x14001f494
cmp ecx, 1
je 0x14001f43d
mov edi, 0x80070057
jmp 0x14001f517
mov rcx, rbx
call fcn.14000622c
mov word [r14], ax
cmp ax, 0x61
jb 0x14001f465
mov rcx, rbx
call fcn.14000622c
mov word [r14], ax
cmp ax, 0x7a
jbe 0x14001f50f
mov rcx, rbx
call fcn.14000622c
mov word [r14], ax
cmp ax, 0x41
jb 0x14001f48d
mov rcx, rbx
call fcn.14000622c
mov word [r14], ax
cmp ax, 0x5a
jbe 0x14001f50f
mov edi, 0x8007000d
jmp 0x14001f50f
mov rcx, rbx
call fcn.14000622c
cmp ax, 0x61
jb 0x14001f4b0
mov rcx, rbx
call fcn.14000622c
cmp ax, 0x7a
jbe 0x14001f4d1
mov rcx, rbx
call fcn.14000622c
cmp ax, 0x41
jb 0x14001f4cc
mov rcx, rbx
call fcn.14000622c
cmp ax, 0x5a
jbe 0x14001f4d1
mov edi, 0x8007000d
test edi, edi
js 0x14001f517
movzx r8d, ax
lea rdx, str._c:_
mov rcx, r14
call fcn.1400092a0
jmp 0x14001f50d
lea rax, [0x1400291ac]
mov r9, rbx
lea r8, [0x140029988]
mov qword [rsp + 0x20], rax
mov edx, 3
mov rcx, r14
call fcn.140005ba0
mov edi, eax
test edi, edi
js 0x14001f517
mov dword [r14 + 8], r12d
mov edx, dword [rsp + 0x3c]
mov rcx, qword [rsp + 0x58]
call fcn.14001f584
test r15, r15
je 0x14001f54a
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
nop dword [rax + rax]
mov r8, r15
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
nop dword [rax + rax]
mov eax, edi
jmp 0x14001f553
mov eax, 0x80070057
mov rcx, qword [rbp + 0x180]
xor rcx, rsp
call fcn.140023d70
mov rbx, qword [rsp + 0x2d8]
add rsp, 0x290
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret