Function at 0x14000d8f0
Capabilities:
Enumerate disk volumes
Get disk information via ioctl
Get disk size
Get storage device properties
Query or enumerate registry value

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
push rsi
push rdi
push r12
push r13
lea rbp, [rsp - 0x200]
sub rsp, 0x300
mov rax, qword [0x14005b0e8]
xor rax, rsp
mov qword [rbp + 0x1f0], rax
mov esi, ecx
mov dword [rsp + 0x40], ecx
xor ebx, ebx
lea rcx, str.SYSTEMCurrentControlSetServicesdiskEnum
mov rdi, rdx
mov dword [rsp + 0x70], ebx
test esi, esi
lea rax, str.SYSTEMCurrentControlSetServicescdromEnum
cmove rax, rcx
lea r9d, [rbx + 1]
lea rcx, [rsp + 0x60]
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x20], rcx
xor r8d, r8d
mov rcx, 0xffffffff80000002
mov rdx, rax
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x14000d9b1
mov rcx, qword [rsp + 0x60]
lea rax, [rsp + 0x68]
mov qword [rsp + 0x28], rax
lea r9, [rbp - 0x78]
lea rax, [rsp + 0x70]
mov dword [rsp + 0x68], 4
xor r8d, r8d
mov qword [rsp + 0x20], rax
lea rdx, str.Count
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov rcx, qword [rsp + 0x60]
mov ebx, dword [rsp + 0x70]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor eax, eax
jmp 0x14000d9b6
mov eax, 1
xor r12d, r12d
mov edx, 0x4560
test eax, eax
cmove r12d, ebx
mov ecx, r12d
call qword [sym.imp.msvcrt.dll_calloc]
mov qword [rdi], rax
mov r13, rax
test rax, rax
je 0x14000e137
xor ebx, ebx
mov qword [rsp + 0x330], r14
mov qword [rsp + 0x340], r15
mov r15d, ebx
test r12d, r12d
je 0x14000df7b
test esi, esi
lea rcx, [0x14003a9a0]
lea rax, [0x14003a988]
cmove rax, rcx
lea rdi, [r13 + 0x228]
mov qword [rsp + 0x50], rax
nop word [rax + rax]
xor ecx, ecx
mov qword [rsp + 0x60], rbx
mov qword [rsp + 0x78], rcx
mov r9d, r15d
mov dword [rbp - 0x80], ecx
mov r8, rax
lea edx, [rcx + 0x1c]
lea rcx, [rbp - 0x58]
call fcn.140003ca0
xor r9d, r9d
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x28], 4
lea rcx, [rbp - 0x58]
mov edx, 0x80000000
mov dword [rsp + 0x20], 3
lea r8d, [r9 + 3]
call qword [sym.imp.KERNEL32.DLL_CreateFileW]
mov r14, rax
lea rcx, [rax - 1]
cmp rcx, 0xfffffffffffffffd
ja 0x14000df5f
mov qword [rsp + 0x38], rbx
lea rax, [rsp + 0x58]
mov qword [rsp + 0x30], rax
lea r8, [rsp + 0x78]
lea rax, [rsp + 0x60]
mov dword [rsp + 0x28], 8
mov r9d, 0xc
mov qword [rsp + 0x20], rax
mov edx, 0x2d1400
mov qword [rsp + 0x78], 0
mov rcx, r14
call qword [sym.imp.KERNEL32.DLL_DeviceIoControl]
test eax, eax
je 0x14000df56
mov eax, dword [rsp + 0x64]
cmp eax, 0x28
jb 0x14000df56
mov ecx, eax
call qword [sym.imp.msvcrt.dll_malloc]
mov rsi, rax
test rax, rax
je 0x14000df56
mov ecx, dword [rsp + 0x64]
lea rax, [rsp + 0x58]
mov qword [rsp + 0x38], rbx
lea r8, [rsp + 0x78]
mov qword [rsp + 0x30], rax
mov r9d, 0xc
mov dword [rsp + 0x28], ecx
mov edx, 0x2d1400
mov rcx, r14
mov qword [rsp + 0x20], rsi
call qword [sym.imp.KERNEL32.DLL_DeviceIoControl]
test eax, eax
je 0x14000df4d
mov qword [rsp + 0x38], rbx
lea rax, [rbp - 0x78]
mov qword [rsp + 0x30], rax
xor r9d, r9d
lea rax, [rsp + 0x70]
mov dword [rsp + 0x28], 8
xor r8d, r8d
mov qword [rsp + 0x20], rax
mov edx, 0x7405c
mov qword [rsp + 0x70], rbx
mov rcx, r14
call qword [sym.imp.KERNEL32.DLL_DeviceIoControl]
mov rcx, rbx
lea r8, [0x14003eebc]
test eax, eax
mov r9d, r15d
mov edx, 0xb
cmovne rcx, qword [rsp + 0x70]
mov qword [rdi - 0x220], rcx
lea rcx, [rbp - 0x70]
movzx eax, byte [rsi + 8]
mov byte [rdi - 0x218], al
movzx eax, byte [rsi + 0xa]
mov dword [rdi - 0x214], eax
mov eax, dword [rsi + 0x1c]
mov dword [rdi + 0x208], eax
call fcn.140003ca0
mov rdx, qword [rsp + 0x48]
lea rax, [rsp + 0x68]
xor r9d, r9d
mov qword [rsp + 0x20], rax
lea r8, [rbp - 0x70]
mov rcx, 0xffffffff80000002
call fcn.14000c220
mov qword [rdi - 0x210], rax
mov eax, dword [rsi + 0xc]
mov ebx, r15d
test eax, eax
je 0x14000dc81
imul rcx, rbx, 0x4560
lea r8, [rsi + rax]
mov edx, 0x104
add rcx, 0x20
add rcx, r13
call fcn.140031cc0
lea rcx, [rdi - 0x208]
mov rax, 0xffffffffffffffff
mov r8, rcx
nop word [rax + rax]
inc rax
cmp byte [rcx + rax], 0
jne 0x14000dc10
test rax, rax
je 0x14000dc50
lea rdx, [rax - 1]
mov r9d, 1
add rdx, rcx
sub r9, rcx
nop
movzx eax, byte [rdx]
cmp al, 0x20
je 0x14000dc3b
cmp al, 9
jne 0x14000dc50
mov byte [rdx], 0
dec rdx
lea rax, [rdx + r9]
test rax, rax
jne 0x14000dc30
nop word [rax + rax]
movzx eax, byte [r8]
cmp al, 0x20
je 0x14000dc5c
cmp al, 9
jne 0x14000dc61
inc r8
jmp 0x14000dc50
test al, al
je 0x14000dc7e
sub r8, rcx
nop dword [rax + rax]
mov byte [rcx], al
inc rcx
movzx eax, byte [r8 + rcx]
test al, al
jne 0x14000dc70
mov byte [rcx], 0
mov eax, dword [rsi + 0x10]
imul rbx, rbx, 0x4560
test eax, eax
je 0x14000dd31
lea rcx, [r13 + 0x124]
mov edx, 0x104
add rcx, rbx
lea r8, [rsi + rax]
call fcn.140031cc0
lea rcx, [rdi - 0x104]
mov rax, 0xffffffffffffffff
mov r8, rcx
nop dword [rax]
inc rax
cmp byte [rcx + rax], 0
jne 0x14000dcc0
test rax, rax
je 0x14000dd00
lea rdx, [rax - 1]
mov r9d, 1
add rdx, rcx
sub r9, rcx
nop
movzx eax, byte [rdx]
cmp al, 0x20
je 0x14000dceb
cmp al, 9
jne 0x14000dd00
mov byte [rdx], 0
dec rdx
lea rax, [r9 + rdx]
test rax, rax
jne 0x14000dce0
nop word [rax + rax]
movzx eax, byte [r8]
cmp al, 0x20
je 0x14000dd0c
cmp al, 9
jne 0x14000dd11
inc r8
jmp 0x14000dd00
test al, al
je 0x14000dd2e
sub r8, rcx
nop dword [rax + rax]
mov byte [rcx], al
inc rcx
movzx eax, byte [r8 + rcx]
test al, al
jne 0x14000dd20
mov byte [rcx], 0
mov eax, dword [rsi + 0x14]
test eax, eax
je 0x14000ddd3
lea rcx, [r13 + 0x228]
mov edx, 0x104
add rcx, rbx
lea r8, [rsi + rax]
call fcn.140031cc0
mov rdx, rdi
mov r8, rdi
mov rax, 0xffffffffffffffff
inc rax
cmp byte [rdi + rax], 0
jne 0x14000dd61
test rax, rax
je 0x14000dda0
lea rcx, [rax - 1]
mov r9d, 1
add rcx, rdi
sub r9, rdi
nop
movzx eax, byte [rcx]
cmp al, 0x20
je 0x14000dd8b
cmp al, 9
jne 0x14000dda0
mov byte [rcx], 0
dec rcx
lea rax, [r9 + rcx]
test rax, rax
jne 0x14000dd80
nop word [rax + rax]
movzx eax, byte [rdx]
cmp al, 0x20
je 0x14000ddab
cmp al, 9
jne 0x14000ddb0
inc rdx
jmp 0x14000dda0
test al, al
je 0x14000ddcf
sub rdx, rdi
nop word [rax + rax]
mov byte [r8], al
inc r8
movzx eax, byte [rdx + r8]
test al, al
jne 0x14000ddc0
mov byte [r8], 0
mov eax, dword [rsi + 0x18]
test eax, eax
je 0x14000de71
lea rcx, [r13 + 0x32c]
mov edx, 0x104
add rcx, rbx
lea r8, [rsi + rax]
call fcn.140031cc0
lea rcx, [rdi + 0x104]
mov rax, 0xffffffffffffffff
mov r8, rcx
inc rax
cmp byte [rcx + rax], 0
jne 0x14000de07
test rax, rax
je 0x14000de40
lea rdx, [rax - 1]
mov r9d, 1
add rdx, rcx
sub r9, rcx
movzx eax, byte [rdx]
cmp al, 0x20
je 0x14000de30
cmp al, 9
jne 0x14000de40
mov byte [rdx], 0
dec rdx
lea rax, [r9 + rdx]
test rax, rax
jne 0x14000de25
nop
movzx eax, byte [r8]
cmp al, 0x20
je 0x14000de4c
cmp al, 9
jne 0x14000de51
inc r8
jmp 0x14000de40
test al, al
je 0x14000de6e
sub r8, rcx
nop dword [rax + rax]
mov byte [rcx], al
inc rcx
movzx eax, byte [r8 + rcx]
test al, al
jne 0x14000de60
mov byte [rcx], 0
mov rbx, qword [0x1417bba30]
add rbx, 0x250
mov dword [rsp + 0x70], 0xffff
cmp dword [rsp + 0x40], 0
jne 0x14000df41
mov qword [rsp + 0x38], 0
lea rax, [rsp + 0x70]
mov qword [rsp + 0x30], rax
xor r9d, r9d
mov dword [rsp + 0x28], 0xffff
xor r8d, r8d
mov edx, 0x70050
mov qword [rsp + 0x20], rbx
mov rcx, r14
call qword [sym.imp.KERNEL32.DLL_DeviceIoControl]
test eax, eax
je 0x14000df41
cmp dword [rsp + 0x70], 0x30
jb 0x14000df41
mov eax, dword [rbx]
mov dword [rdi - 0x228], eax
test eax, eax
je 0x14000deef
cmp eax, 1
jne 0x14000df41
movups xmm0, xmmword [rbx + 8]
movups xmmword [rdi + 0x220], xmm0
jmp 0x14000df4b
cmp dword [rbx + 4], 4
jb 0x14000df36
mov rax, qword [rbx + 0x38]
sar rax, 9
mov dword [rdi + 0x210], eax
mov rax, qword [rbx + 0xc8]
sar rax, 9
mov dword [rdi + 0x214], eax
mov rax, qword [rbx + 0x158]
sar rax, 9
mov dword [rdi + 0x218], eax
mov rax, qword [rbx + 0x1e8]
sar rax, 9
mov dword [rdi + 0x21c], eax
mov eax, dword [rbx + 8]
mov dword [rdi + 0x20c], eax
jmp 0x14000df4b
mov dword [rdi - 0x228], 2
xor ebx, ebx
mov rcx, rsi
call qword [sym.imp.msvcrt.dll_free]
mov rcx, r14
call qword [sym.imp.KERNEL32.DLL_CloseHandle]
mov rax, qword [rsp + 0x50]
inc r15d
add rdi, 0x4560
cmp r15d, r12d
jb 0x14000da20
mov esi, dword [rsp + 0x40]
mov edx, 0x104
lea rcx, [rbp - 0x20]
call qword [sym.imp.KERNEL32.DLL_FindFirstVolumeW]
mov rdi, rax
cmp rax, 0xffffffffffffffff
je 0x14000e124
lea r14, [0x140000000]
nop
lea rax, [rbp - 0x20]
mov rcx, 0xffffffffffffffff
nop dword [rax + rax]
inc rcx
cmp word [rax + rcx*2], 0
jne 0x14000dfb0
cmp rcx, 1
jb 0x14000dfcd
cmp word [rbp + rcx*2 - 0x22], 0x5c
jne 0x14000dfcd
mov word [rbp + rcx*2 - 0x22], bx
xor r9d, r9d
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x28], ebx
lea rcx, [rbp - 0x20]
xor edx, edx
mov dword [rsp + 0x20], 3
lea r8d, [r9 + 3]
call qword [sym.imp.KERNEL32.DLL_CreateFileW]
mov rbx, rax
lea rcx, [rax - 1]
cmp rcx, 0xfffffffffffffffd
ja 0x14000e0fb
xor eax, eax
xor r15d, r15d
mov qword [rsp + 0x78], rax
xor r9d, r9d
mov dword [rbp - 0x80], eax
xor r8d, r8d
mov qword [rsp + 0x38], r15
lea rax, [rsp + 0x68]
mov qword [rsp + 0x30], rax
mov edx, 0x2d1080
lea rax, [rsp + 0x78]
mov dword [rsp + 0x28], 0xc
mov rcx, rbx
mov qword [rsp + 0x20], rax
mov dword [rsp + 0x68], r15d
call qword [sym.imp.KERNEL32.DLL_DeviceIoControl]
test eax, eax
je case.0x14000e07d.4
mov eax, dword [rsp + 0x7c]
mov dword [rsp + 0x58], eax
mov eax, dword [rsp + 0x78]
add eax, 0xfffffffe
cmp eax, 0x31
ja case.0x14000e07d.4
movzx eax, byte [r14 + rax + 0xe16c]
mov ecx, dword [r14 + rax*4 + 0xe160]
add rcx, r14
jmp rcx
test esi, esi
mov eax, r15d
setne al
jmp 0x14000e091
test esi, esi
mov eax, r15d
sete al
test eax, eax
je case.0x14000e07d.4
mov rcx, rbx
call qword [sym.imp.KERNEL32.DLL_CloseHandle]
mov eax, dword [rsp + 0x58]
cmp eax, r12d
jae 0x14000e0fb
imul rdx, rax, 0x4560
mov eax, dword [rdx + r13 + 0x458]
cmp eax, 0x20
jae 0x14000e0fb
add rdx, 0x45c
lea r8, [rbp - 0x20]
imul rcx, rax, 0x208
add rcx, rdx
mov edx, 0x104
add rcx, r13
call fcn.140031c30
mov eax, dword [rsp + 0x58]
imul rcx, rax, 0x4560
inc dword [rcx + r13 + 0x458]
jmp 0x14000e0fb
mov rcx, rbx
call qword [sym.imp.KERNEL32.DLL_CloseHandle]
mov r8d, 0x104
lea rdx, [rbp - 0x20]
mov rcx, rdi
call qword [sym.imp.KERNEL32.DLL_FindNextVolumeW]
mov ebx, 0
test eax, eax
jne 0x14000dfa0
mov rcx, rdi
call qword [sym.imp.KERNEL32.DLL_FindVolumeClose]
mov r15, qword [rsp + 0x340]
mov eax, r12d
mov r14, qword [rsp + 0x330]
mov rcx, qword [rbp + 0x1f0]
xor rcx, rsp
call fcn.140029990
mov rbx, qword [rsp + 0x348]
add rsp, 0x300
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret