Function at 0x140006090
Capabilities:
Enumerate disk volumes
Get disk information via ioctl

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x420
mov r14, rdx
lea rcx, [rsp + 0x60]
mov edx, 0x384
mov rbx, r9
mov r13, r8
call fcn.140056040
mov rbp, qword [rsp + 0x60]
xor eax, eax
mov dword [rsp + 0x478], 2
lea rdi, [rbp + 0x398]
cmp rbx, rax
mov rsi, rax
mov word [rdi], ax
cmovne rdi, rbx
lea r15, [rbp + 0x5a0]
lea r12, [rbp + 0x690]
cmp rbx, rax
jne 0x140006118
mov edx, 0x103
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_FindFirstVolumeW]
mov rsi, rax
cmp rax, 0xffffffffffffffff
je 0x14000636f
xor ebx, ebx
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_lstrlenW]
sub eax, 1
js 0x14000613a
movsxd rcx, eax
mov eax, 0x5c
cmp ax, word [rdi + rcx*2]
jne 0x14000613a
mov word [rdi + rcx*2], bx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_SetLastError]
xor r9d, r9d
mov qword [rsp + 0x30], rbx
lea r8d, [r9 + 7]
mov edx, 0x80000000
mov rcx, rdi
mov dword [rsp + 0x28], 0x80
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rbx, rax
cmp rax, 0xffffffffffffffff
je 0x140006340
xor eax, eax
lea rcx, [rsp + 0x104]
xor edx, edx
mov r8d, 0x31c
mov dword [rsp + 0x100], eax
call fcn.1400cc8d0
xor r11d, r11d
xor ecx, ecx
mov dword [rsp + 0x50], r11d
mov dword [rsp + 0x54], r11d
mov dword [rsp + 0x58], r11d
call qword [sym.imp.KERNEL32.dll_SetLastError]
or dword [rsp + 0x54], 0xffffffff
xor eax, eax
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x100]
xor r9d, r9d
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x50]
xor r8d, r8d
mov edx, 0x2d1080
mov rcx, rbx
mov dword [rsp + 0x28], 0xc
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
lea rcx, [rsp + 0x70]
xor edx, edx
mov r8d, 0x90
call fcn.1400cc8d0
lea rcx, [rsp + 0x70]
xor edx, edx
mov r8d, 0x90
call fcn.1400cc8d0
or dword [rsp + 0x88], 0xffffffff
xor eax, eax
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x100]
xor r9d, r9d
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x70]
xor r8d, r8d
mov edx, 0x70048
mov rcx, rbx
mov dword [rsp + 0x28], 0x90
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
xor ecx, ecx
cmp rbx, rcx
je 0x140006268
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
xor ecx, ecx
cmp r13, rcx
jl 0x14000627b
movsxd rax, dword [rsp + 0x58]
cmp r13, rax
jne 0x140006342
cmp r14, rcx
jl 0x14000628e
movsxd rax, dword [rsp + 0x54]
cmp r14, rax
jne 0x140006342
mov rdx, qword [rsp + 0x78]
mov rcx, r15
call fcn.1400bc0f4
mov rdx, qword [rsp + 0x80]
lea rbx, [rbp + 0x618]
mov rcx, rbx
call fcn.1400bc0f4
cmp dword [rsp + 0x70], 1
mov rcx, r12
jne 0x1400062ce
lea rdx, [rsp + 0x90]
xor r8d, r8d
call fcn.140052e5c
jmp 0x1400062e4
movzx r8d, byte [rsp + 0x90]
lea rdx, [0x1400e9b70]
call qword [sym.imp.USER32.dll_wsprintfW]
mov eax, dword [rsp + 0x50]
mov r9d, dword [rsp + 0x54]
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x38], r15
mov qword [rsp + 0x30], r12
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x58]
lea rdx, str._r_n_s__d__d__d__s__s__s
mov r8, rdi
mov rcx, rbp
mov dword [rsp + 0x20], eax
call qword [sym.imp.USER32.dll_wsprintfW]
movsxd r11, dword [rsp + 0x478]
mov rcx, qword [rsp + 0x460]
lea rdx, [rbp + r11*2]
call fcn.140056108
xor ecx, ecx
mov dword [rsp + 0x478], ecx
jmp 0x140006342
xor ecx, ecx
cmp rsi, rcx
je 0x14000636f
mov word [rdi], cx
mov r8d, 0x103
mov rdx, rdi
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_FindNextVolumeW]
xor ebx, ebx
cmp eax, ebx
jne 0x14000611a
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_FindVolumeClose]
lea rcx, [rsp + 0x60]
call fcn.14004ea6c
mov rbx, qword [rsp + 0x468]
add rsp, 0x420
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret