Function at 0x1800159c0
Capabilities:
Get storage device properties

Disassembly:
mov qword [rsp + 0x18], rsi
mov dword [rsp + 8], ecx
push rbp
push rdi
push r14
lea rbp, [rsp - 0x2c10]
mov eax, 0x2d10
call fcn.18006c280
sub rsp, rax
mov rsi, rdx
lea rcx, [rbp + 0x300]
lea rdx, str..PhysicalDrive_d
xor r8d, r8d
xor edi, edi
call qword [sym.imp.USER32.dll_wsprintfW]
mov qword [rsp + 0x30], rdi
lea r8d, [rdi + 3]
mov dword [rsp + 0x28], edi
lea rcx, [rbp + 0x300]
xor r9d, r9d
mov dword [rsp + 0x20], 3
xor edx, edx
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov r14, rax
cmp rax, 0xffffffffffffffff
je 0x180015d4f
xor eax, eax
mov dword [rbp + 0x2c30], edi
mov qword [rsp + 0x40], rax
lea rcx, [rbp + 0x500]
xor edx, edx
mov qword [rsp + 0x44], rax
mov r8d, 0x2710
mov dword [rsp + 0x40], edi
call fcn.180071390
mov qword [rsp + 0x38], rdi
lea rax, [rbp + 0x2c30]
mov qword [rsp + 0x30], rax
lea r9d, [rdi + 0xc]
lea rax, [rbp + 0x500]
mov dword [rsp + 0x28], 0x2710
lea r8, [rsp + 0x40]
mov qword [rsp + 0x20], rax
mov edx, 0x2d1400
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x180015d46
xor edx, edx
mov qword [rsp + 0x2d38], rbx
lea r8d, [rdi + 0x7f]
lea rcx, [rbp + 0x281]
call fcn.180071390
xor edx, edx
lea r8d, [rdi + 0x7f]
lea rcx, [rbp - 0x2f]
call fcn.180071390
xor edx, edx
lea r8d, [rdi + 0x7f]
lea rcx, [rsp + 0x51]
call fcn.180071390
xor edx, edx
lea r8d, [rdi + 0x7f]
lea rcx, [rbp + 0x201]
call fcn.180071390
mov rax, qword [rbp + 0x50c]
mov byte [rsp + 0x50], dil
test eax, eax
jle 0x180015b0e
lea r8, [rsp + 0x50]
mov edx, eax
lea rcx, [rbp + 0x500]
call fcn.180015750
mov rax, qword [rbp + 0x510]
mov byte [rbp - 0x30], dil
test eax, eax
jle 0x180015b2f
lea r8, [rbp - 0x30]
mov edx, eax
lea rcx, [rbp + 0x500]
call fcn.180015750
mov rax, qword [rbp + 0x514]
mov byte [rbp + 0x200], dil
test eax, eax
jle 0x180015b56
lea r8, [rbp + 0x200]
mov edx, eax
lea rcx, [rbp + 0x500]
call fcn.180015750
mov rax, qword [rbp + 0x518]
mov byte [rbp + 0x280], dil
test eax, eax
jle 0x180015b7d
lea r8, [rbp + 0x280]
mov edx, eax
lea rcx, [rbp + 0x500]
call fcn.180015750
xor edx, edx
mov qword [rbp + 0x50], rdi
mov r8d, 0x1a0
mov dword [rbp + 0x1f8], edi
lea rcx, [rbp + 0x58]
call fcn.180071390
or rbx, 0xffffffffffffffff
lea rcx, [rsp + 0x50]
mov rax, rbx
inc rax
cmp byte [rcx + rax], dil
jne 0x180015ba4
test rax, rax
je 0x180015bd1
mov rcx, rdi
nop word [rax + rax]
movzx eax, byte [rsp + rcx + 0x50]
mov byte [rbp + rcx + 0x78], al
lea rcx, [rcx + 1]
test al, al
jne 0x180015bc0
lea rcx, [rbp - 0x30]
mov rax, rbx
nop dword [rax + rax]
inc rax
cmp byte [rcx + rax], dil
jne 0x180015be0
test rax, rax
je 0x180015c20
lea rcx, [rbp + 0x78]
dec rcx
cmp byte [rcx + 1], dil
lea rcx, [rcx + 1]
jne 0x180015bf5
lea r8, [rbp - 0x30]
xor edx, edx
nop word [rax + rax]
movzx eax, byte [r8 + rdx]
mov byte [rcx + rdx], al
lea rdx, [rdx + 1]
test al, al
jne 0x180015c10
mov rcx, rdi
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [rbp + rcx + 0x200]
mov byte [rbp + rcx + 0x178], al
lea rcx, [rcx + 1]
test al, al
jne 0x180015c30
mov rcx, rdi
nop word [rax + rax]
movzx eax, byte [rbp + rcx + 0x280]
mov byte [rbp + rcx + 0xf8], al
lea rcx, [rcx + 1]
test al, al
jne 0x180015c50
lea rcx, [rbp + 0xf8]
call fcn.1800158e0
lea rcx, [rbp + 0x78]
call fcn.1800158e0
lea rcx, [rbp + 0x178]
call fcn.1800158e0
xor edx, edx
lea rcx, [rbp + 0x500]
mov r8d, 0x2710
call fcn.180071390
mov qword [rsp + 0x38], rdi
lea rax, [rbp + 0x2c30]
mov qword [rsp + 0x30], rax
xor r9d, r9d
lea rax, [rbp + 0x500]
mov dword [rsp + 0x28], 0x2710
xor r8d, r8d
mov qword [rsp + 0x20], rax
mov edx, 0x700a0
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x180015d3e
cmp dword [rbp + 0x508], 0xc
mov rax, qword [rbp + 0x518]
mov qword [rbp + 0x50], rax
jne 0x180015d3e
mov dword [rbp + 0x1f8], 2
lea rax, [rbp + 0xf8]
nop
inc rbx
cmp byte [rax + rbx], dil
jne 0x180015d00
movsxd r8, ebx
mov rdx, rdi
test ebx, ebx
jle 0x180015d34
nop dword [rax]
nop word [rax + rax]
movsx ecx, byte [rbp + rdx + 0xf8]
mov word [rsi + rdx*2], cx
inc rdx
cmp rdx, r8
jl 0x180015d20
mov word [rsi + r8*2], di
mov edi, 1
mov rbx, qword [rsp + 0x2d38]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, edi
mov rsi, qword [rsp + 0x2d40]
add rsp, 0x2d10
pop r14
pop rdi
pop rbp
ret