Function at 0x14000ef00
Capabilities:
Get storage device properties

Disassembly:
mov r11, rsp
push rbp
push r13
lea rbp, [r11 - 0x58]
sub rsp, 0x148
mov rax, qword [0x14005b0e8]
xor rax, rsp
mov qword [rbp + 0x18], rax
mov qword [r11 + 0x20], rbx
mov ebx, ecx
mov qword [r11 - 0x18], rsi
mov rsi, rdx
mov qword [rsp + 0x50], rdx
lea rdx, [rsp + 0x60]
mov qword [r11 - 0x20], rdi
mov rdi, r8
mov qword [rsp + 0x40], r8
mov dword [rsp + 0x48], ecx
mov qword [rsp + 0x60], 0
call fcn.14000d8f0
mov r13, qword [rsp + 0x60]
mov dword [rsp + 0x4c], eax
test eax, eax
je 0x14000f62d
mov qword [rsp + 0x130], r12
xor r12d, r12d
test eax, eax
je 0x14000f625
mov qword [rsp + 0x128], r14
lea rcx, str..CdRom_u
test ebx, ebx
mov qword [rsp + 0x120], r15
lea rax, str..PhysicalDrive_u
cmovne rax, rcx
lea r14, [r13 + 0x18]
mov qword [rsp + 0x58], rax
nop word [rax + rax]
mov r9d, r12d
lea rcx, [rbp - 0x60]
mov r8, rax
mov edx, 0x40
call fcn.1400022d0
mov rax, qword [0x1417bba30]
mov rcx, qword [rax + 0x60]
test rcx, rcx
je 0x14000efe6
lea rdx, [rbp - 0x60]
call qword [sym.imp.msvcrt.dll__stricmp]
test eax, eax
jne 0x14000f5fb
mov r8d, 4
lea rdx, str.Disk
mov rcx, rsi
call fcn.1400117b0
xor r9d, r9d
lea r8, [rbp - 0x60]
lea rdx, str.Path
mov rcx, rax
mov rsi, rax
call fcn.1400118b0
mov rcx, qword [r14]
test rcx, rcx
je 0x14000f106
call fcn.140004890
mov r8, rax
lea rdx, str.HWID
xor r9d, r9d
mov rcx, rsi
call fcn.1400118b0
mov rdi, qword [r14]
lea rax, [rsp + 0x60]
mov r9d, 1
mov qword [rsp + 0x20], rax
xor r8d, r8d
mov qword [rsp + 0x60], 0
lea rdx, str.SYSTEMCurrentControlSetEnum
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x14000f0f8
mov rcx, qword [rsp + 0x60]
lea rax, [rsp + 0x78]
xor r9d, r9d
mov qword [rsp + 0x20], rax
lea r8, str.FriendlyName
mov rdx, rdi
call fcn.14000c220
mov rbx, rax
test rax, rax
jne 0x14000f0c2
mov rcx, qword [rsp + 0x60]
lea rax, [rsp + 0x78]
xor r9d, r9d
mov qword [rsp + 0x20], rax
lea r8, str.DeviceDesc
mov rdx, rdi
call fcn.14000c220
mov rbx, rax
mov rcx, qword [rsp + 0x60]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
test rbx, rbx
je 0x14000f0f8
mov rcx, rbx
call fcn.140004890
mov r8, rax
lea rdx, str.HW_Name
xor r9d, r9d
mov rcx, rsi
call fcn.1400118b0
mov rcx, rbx
call qword [sym.imp.msvcrt.dll_free]
mov rcx, qword [r14]
call qword [sym.imp.msvcrt.dll_free]
mov rdi, qword [rsp + 0x40]
cmp byte [r14 + 8], 0
mov ebx, r12d
je 0x14000f130
imul r8, rbx, 0x4560
xor r9d, r9d
lea rdx, str.Vendor_ID
add r8, 0x20
mov rcx, rsi
add r8, r13
call fcn.1400118b0
imul r15, rbx, 0x4560
cmp byte [r14 + 0x10c], 0
je 0x14000f15d
lea r8, [r13 + 0x124]
xor r9d, r9d
add r8, r15
lea rdx, str.Product_ID
mov rcx, rsi
call fcn.1400118b0
cmp byte [r14 + 0x210], 0
je 0x14000f183
lea r8, [r13 + 0x228]
xor r9d, r9d
add r8, r15
lea rdx, str.Product_Rev
mov rcx, rsi
call fcn.1400118b0
cmp byte [r14 + 0x314], 0
je 0x14000f1c9
lea rbx, [r15 + r13]
mov r9d, 0x1000
lea r8, [rbx + 0x32c]
mov rcx, rsi
lea rdx, str.Serial_Number
call fcn.1400118b0
mov r9d, 0x1000
lea r8, [rbx + 0x32c]
lea rdx, str.Serial_Number__Raw_
mov rcx, rsi
call fcn.1400118b0
movsxd rax, dword [r14 + 0x418]
cmp eax, 0x13
ja case.0x14000f1ea.0
lea rdx, [0x140000000]
mov ecx, dword [rdx + rax*4 + 0xf66c]
add rcx, rdx
jmp rcx
lea r8, str.SCSI
jmp 0x14000f2ad
lea r8, str.Atapi
jmp 0x14000f2ad
lea r8, [0x14003a9e0]
jmp 0x14000f2ad
lea r8, str.1394
jmp 0x14000f2ad
lea r8, [0x14003a9ec]
jmp 0x14000f2ad
lea r8, str.Fibre
jmp 0x14000f2ad
lea r8, [0x14003a9f8]
jmp 0x14000f2ad
lea r8, str.RAID
jmp 0x14000f2ad
lea r8, str.iSCSI
jmp 0x14000f2ad
lea r8, [0x14003aa0c]
jmp 0x14000f2ad
lea r8, str.SATA
jmp 0x14000f2ad
lea r8, [0x14003aa18]
jmp 0x14000f2ad
lea r8, [0x14003aa1c]
jmp 0x14000f2ad
lea r8, str.Virtual
jmp 0x14000f2ad
lea r8, str.File
jmp 0x14000f2ad
lea r8, str.Spaces
jmp 0x14000f2ad
lea r8, str.NVMe
jmp 0x14000f2ad
lea r8, [0x14003aa40]
jmp 0x14000f2ad
lea r8, [0x14003aa44]
jmp 0x14000f2ad
lea r8, str.unknown
xor r9d, r9d
lea rdx, str.Type
mov rcx, rsi
call fcn.1400118b0
cmp dword [r14 - 4], 0
lea r8, [0x14003a8dc]
lea rbx, [0x14003a8d8]
mov r9d, 0x100
cmovne r8, rbx
lea rdx, str.Removable
mov rcx, rsi
call fcn.1400118b0
mov rdx, qword [0x1417bba30]
mov r8d, 0x400
mov rcx, qword [r14 - 0x10]
mov rdx, qword [rdx + 0x238]
call fcn.140003da0
mov r8, rax
lea rdx, str.Size
mov r9d, 0x800
mov rcx, rsi
call fcn.1400118b0
mov ecx, dword [r14 - 0x18]
test ecx, ecx
je 0x14000f37c
cmp ecx, 1
jne 0x14000f3df
xor r9d, r9d
lea r8, [0x14003f1e8]
lea rdx, str.Partition_Table
mov rcx, rsi
call fcn.1400118b0
lea rcx, [r13 + 0x448]
add rcx, r15
call fcn.140004600
lea r9, [0x14003f1ec]
mov qword [rsp + 0x20], rax
mov r8d, 0x400
lea rdx, str.GPT_GUID
mov rcx, rsi
call fcn.140011be0
jmp 0x14000f3df
xor r9d, r9d
lea r8, [0x14003ecb8]
lea rdx, str.Partition_Table
mov rcx, rsi
call fcn.1400118b0
movzx ecx, byte [r14 + 0x41e]
lea r9, str._02X__02X__02X__02X
movzx edx, byte [r14 + 0x41d]
movzx r8d, byte [r14 + 0x41c]
movzx eax, byte [r14 + 0x41f]
mov dword [rsp + 0x38], eax
mov dword [rsp + 0x30], ecx
mov rcx, rsi
mov dword [rsp + 0x28], edx
lea rdx, str.MBR_Signature
mov dword [rsp + 0x20], r8d
xor r8d, r8d
call fcn.140011be0
cmp dword [rsp + 0x48], 0
jne 0x14000f573
mov rax, qword [0x1417bba30]
cmp dword [rax + 0x7c], 6
jb 0x14000f4ec
xor eax, eax
mov qword [rbp - 0x80], 7
xor ebx, ebx
mov dword [rbp - 0x78], eax
mov r9d, r12d
mov qword [rsp + 0x68], rax
lea r8, [0x14003a9a0]
mov dword [rsp + 0x70], eax
lea rcx, [rbp - 0x20]
lea edx, [rbx + 0x1c]
call fcn.140003ca0
mov qword [rsp + 0x30], rbx
lea r8d, [rbx + 3]
mov dword [rsp + 0x28], 4
lea rcx, [rbp - 0x20]
xor r9d, r9d
mov dword [rsp + 0x20], 3
mov edx, 0x80000000
call qword [sym.imp.KERNEL32.DLL_CreateFileW]
mov rbx, rax
lea rcx, [rax - 1]
cmp rcx, 0xfffffffffffffffd
ja 0x14000f4e5
mov qword [rsp + 0x38], 0
lea rax, [rbp - 0x70]
mov qword [rsp + 0x30], rax
lea r8, [rbp - 0x80]
lea rax, [rsp + 0x68]
mov dword [rsp + 0x28], 0xc
mov r9d, 0xc
mov qword [rsp + 0x20], rax
mov edx, 0x2d1400
mov rcx, rbx
call qword [sym.imp.KERNEL32.DLL_DeviceIoControl]
test eax, eax
je 0x14000f4dc
cmp byte [rsp + 0x70], 0
lea rcx, [0x14003a8d8]
lea r8, [0x14003a8dc]
mov r9d, 0x100
cmove r8, rcx
lea rdx, [0x14003f034]
mov rcx, rsi
call fcn.1400118b0
mov rcx, rbx
call qword [sym.imp.KERNEL32.DLL_CloseHandle]
jmp 0x14000f50e
mov rcx, rbx
call qword [sym.imp.KERNEL32.DLL_CloseHandle]
lea rbx, [0x14003a8d8]
cmp dword [r14 + 0x418], 0x11
jne 0x14000f50e
mov r9d, 0x100
lea rdx, [0x14003f034]
mov r8, rbx
mov rcx, rsi
call fcn.1400118b0
mov rax, qword [0x1417bba30]
cmp dword [rax + 0x68], 0
jne 0x14000f573
test rdi, rdi
je 0x14000f573
mov rcx, rdi
call qword [0x1417fbda8]
xor ebx, ebx
mov edi, eax
test eax, eax
jle 0x14000f55b
nop dword [rax]
nop word [rax + rax]
mov rcx, qword [rsp + 0x40]
xor r8d, r8d
mov edx, ebx
call qword [0x1417fbdb8]
cmp eax, r12d
je 0x14000f560
inc ebx
cmp ebx, edi
jl 0x14000f540
mov ebx, 0xffffffff
mov rdi, qword [rsp + 0x40]
mov r8d, ebx
mov rdx, rdi
mov rcx, rsi
call fcn.14000e1a0
cmp dword [r14 + 0x440], 0
je 0x14000f5f6
mov r8d, 2
lea rdx, str.Volumes
mov rcx, rsi
call fcn.1400117b0
xor ebx, ebx
mov rsi, rax
cmp dword [r14 + 0x440], ebx
jbe 0x14000f5f6
lea rdi, [r15 + r13]
nop dword [rax]
nop dword [rax + rax]
mov r8d, 4
lea rdx, str.Volume
mov rcx, rsi
call fcn.1400117b0
mov ecx, ebx
mov r8, rdi
imul rdx, rcx, 0x208
mov rcx, rax
add rdx, 0x45c
add rdx, r15
add rdx, r13
call fcn.14000d410
inc ebx
cmp ebx, dword [r14 + 0x440]
jb 0x14000f5b0
mov rdi, qword [rsp + 0x40]
mov rsi, qword [rsp + 0x50]
mov rax, qword [rsp + 0x58]
inc r12d
add r14, 0x4560
cmp r12d, dword [rsp + 0x4c]
jb 0x14000efb0
mov r15, qword [rsp + 0x120]
mov r14, qword [rsp + 0x128]
mov r12, qword [rsp + 0x130]
mov rdi, qword [rsp + 0x138]
mov rsi, qword [rsp + 0x140]
mov rbx, qword [rsp + 0x178]
test r13, r13
je 0x14000f653
mov rcx, r13
call qword [sym.imp.msvcrt.dll_free]
mov rcx, qword [rbp + 0x18]
xor rcx, rsp
call fcn.140029990
add rsp, 0x148
pop r13
pop rbp
ret