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

Disassembly:
mov rax, rsp
mov qword [rax + 0x20], r9
mov qword [rax + 0x18], r8
mov qword [rax + 0x10], rdx
mov qword [rax + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x98
lea rcx, [rax - 0x68]
mov edx, 0x4654
mov r14, r9
mov rsi, r8
call fcn.140059ed8
mov r13, qword [rsp + 0x70]
xor ebx, ebx
lea r12, [r13 + 0x708]
lea rdi, [r13 + 0x398]
lea rax, [r12 + 0x3cc]
mov qword [rsp + 0x58], rbx
lea ecx, [rbx - 2]
mov dword [rax + 4], ecx
mov dword [rax], ecx
cmp r14, rbx
mov qword [rsp + 0x80], rax
mov rax, rsi
mov word [rdi], bx
cmovne rdi, r14
shr rax, 0x10
mov qword [rsp + 0x68], rbx
lea rbp, [r12 + 0x320]
lea r15, [r12 + 0x334]
mov dword [rsp + 0x50], 2
mov qword [rsp + 0x78], rax
mov qword [rsp + 0x60], rbx
cmp r14, rbx
jne 0x140006642
mov edx, 0x103
mov rcx, rdi
call qword [sym.imp.KERNEL32.DLL_FindFirstVolumeW]
mov qword [rsp + 0x60], rax
cmp rax, 0xffffffffffffffff
je 0x140006972
mov rcx, rdi
mov esi, 0x80000000
call qword [sym.imp.KERNEL32.DLL_lstrlenW]
sub eax, 1
js 0x140006667
movsxd rcx, eax
mov eax, 0x5c
cmp ax, word [rdi + rcx*2]
jne 0x140006667
mov word [rdi + rcx*2], bx
xor ecx, ecx
call qword [sym.imp.KERNEL32.DLL_SetLastError]
cmp r14, rbx
je 0x140006693
mov rcx, rdi
call fcn.140006528
cmp eax, ebx
je 0x140006693
mov r8d, 7
mov rdx, rsi
mov rcx, rdi
call fcn.14001b82c
jmp 0x1400066ba
xor r9d, r9d
mov qword [rsp + 0x30], rbx
mov edx, esi
lea r8d, [r9 + 7]
mov rcx, rdi
mov dword [rsp + 0x28], 0x2000080
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.DLL_CreateFileW]
mov rsi, rax
cmp rax, 0xffffffffffffffff
je 0x14000693d
cmp rax, rbx
je 0x14000693d
xor edx, edx
mov rcx, rbp
lea r8d, [rdx + 0xc]
call fcn.1400dd9e0
xor ecx, ecx
call qword [sym.imp.KERNEL32.DLL_SetLastError]
mov eax, 0xffffffaa
mov qword [rsp + 0x38], rbx
mov qword [rsp + 0x30], r12
xor r9d, r9d
xor r8d, r8d
mov edx, 0x2d1080
mov rcx, rsi
mov dword [rsp + 0x28], 0xc
mov dword [rbp + 8], eax
mov dword [rbp + 4], eax
mov qword [rsp + 0x20], rbp
call qword [sym.imp.KERNEL32.DLL_DeviceIoControl]
cmp dword [rbp + 4], ebx
jge 0x140006728
mov dword [rbp + 4], 0xffffffaa
xor edx, edx
mov r8d, 0x90
mov rcx, r15
call fcn.1400dd9e0
mov qword [rsp + 0x38], rbx
mov qword [rsp + 0x30], r12
xor r9d, r9d
xor r8d, r8d
mov edx, 0x70048
mov rcx, rsi
mov dword [rsp + 0x28], 0x90
mov dword [r15 + 0x18], 0xffffffaa
mov qword [rsp + 0x20], r15
call qword [sym.imp.KERNEL32.DLL_DeviceIoControl]
mov rcx, rsi
call qword [sym.imp.KERNEL32.DLL_CloseHandle]
mov rax, qword [rsp + 0xf0]
cmp ax, bx
jl 0x14000678b
cwde
cmp eax, dword [rbp + 8]
jne 0x14000693d
mov rcx, qword [rsp + 0xe8]
cmp rcx, rbx
jl 0x1400067a5
movsxd rax, dword [rbp + 4]
cmp rcx, rax
jne 0x14000693d
mov rdx, qword [r15 + 8]
lea rsi, [r13 + 0x5a0]
mov rcx, rsi
call fcn.1400c90d4
mov rdx, qword [r15 + 0x10]
lea r12, [r13 + 0x618]
mov rcx, r12
call fcn.1400c90d4
cmp dword [r15], 1
lea rcx, [r13 + 0x690]
jne 0x1400067e6
lea rdx, [r15 + 0x20]
xor r8d, r8d
call fcn.140056b34
jmp 0x1400067f8
movzx r8d, byte [r15 + 0x20]
lea rdx, [0x1400f9d2c]
call qword [sym.imp.USER32.DLL_wsprintfW]
or edx, 0xffffffff
cmp dword [rbp + 8], ebx
mov qword [rsp + 0x48], r12
cmovge edx, dword [rbp + 8]
or ecx, 0xffffffff
cmp dword [rbp + 4], ebx
cmovge ecx, dword [rbp + 4]
mov qword [rsp + 0x40], rsi
lea rax, [r13 + 0x690]
mov qword [rsp + 0x38], rax
mov eax, dword [rbp]
lea r9, [0x1400f9548]
mov dword [rsp + 0x30], eax
mov dword [rsp + 0x28], edx
mov dword [rsp + 0x20], ecx
lea rdx, [0x1400f9cf8]
mov rcx, r13
mov r8, rdi
call qword [sym.imp.USER32.DLL_wsprintfW]
mov rcx, qword [rsp + 0xe0]
or r12d, 0xffffffff
mov rcx, qword [rcx]
call qword [sym.imp.KERNEL32.DLL_lstrlenW]
lea r9, [rsp + 0x58]
xor r8d, r8d
mov esi, eax
movsxd rax, dword [rbp + 4]
xor edx, edx
mov rcx, rdi
mov r14, rdi
mov qword [rsp + 0x88], rax
call fcn.14001b8e4
cmp rax, rbx
je 0x140006899
mov rcx, qword [rsp + 0x58]
cmp rcx, rbx
je 0x140006899
cmp word [rcx], bx
cmovne r14, rcx
test byte [rsp + 0x78], 8
je 0x1400068f1
mov rcx, r13
call qword [sym.imp.KERNEL32.DLL_lstrlenW]
mov r9, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
movsxd rcx, eax
mov eax, 0x20
mov qword [rsp + 0x30], r14
lea rcx, [r13 + rcx*2]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbx
mov word [rcx], ax
add rcx, 2
mov word [rcx], bx
movsxd r8, dword [rbp + 8]
mov r12, rcx
sub r12, r13
sar r12, 1
call fcn.14006ad40
movsxd r14, dword [rsp + 0x50]
mov rcx, qword [rsp + 0xe0]
lea rdx, [r13 + r14*2]
call fcn.14005a28c
cmp r12d, ebx
jl 0x14000692a
mov rax, qword [rsp + 0xe0]
sub esi, r14d
mov rax, qword [rax]
add esi, r12d
movsxd rcx, esi
lea rax, [rax + rcx*2]
mov qword [rsp + 0x68], rax
mov r14, qword [rsp + 0xf8]
mov dword [rsp + 0x50], ebx
lea r12, [r13 + 0x708]
mov rsi, qword [rsp + 0x60]
cmp rsi, rbx
je 0x14000696d
mov r8d, 0x103
mov rdx, rdi
mov rcx, rsi
mov word [rdi], bx
call qword [sym.imp.KERNEL32.DLL_FindNextVolumeW]
cmp eax, ebx
jne 0x140006642
mov rcx, rsi
call qword [sym.imp.KERNEL32.DLL_FindVolumeClose]
mov rbx, qword [rsp + 0x68]
lea rcx, [rsp + 0x58]
call fcn.140052160
lea rcx, [rsp + 0x70]
call fcn.140052160
mov rax, rbx
add rsp, 0x98
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret