Function at 0x140140b54
Capabilities:
Get storage device properties

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r14
push r15
lea rbp, [rsp - 0x37]
sub rsp, 0xb0
mov rax, qword [0x14017b608]
xor rax, rsp
mov qword [rbp + 0x27], rax
mov r14, rdx
mov rsi, rcx
mov rcx, qword [0x14017b048]
lea rax, [0x14017b048]
mov edx, 4
cmp rcx, rax
je 0x140140bb8
test byte [rcx + 0x1c], 1
je 0x140140bb8
cmp byte [rcx + 0x19], dl
jb 0x140140bb8
mov rcx, qword [rcx + 0x10]
lea r8, str.1F
mov edx, 0xa
call fcn.140004c10
xor ebx, ebx
xorps xmm0, xmm0
and qword [rsp + 0x30], rbx
xorps xmm1, xmm1
and dword [rsp + 0x28], ebx
xor r9d, r9d
and dword [r14], ebx
mov edx, 0xc0000000
lea r8d, [rbx + 1]
mov dword [rsp + 0x20], 3
mov rcx, rsi
movups xmmword [rbp + 7], xmm0
movups xmmword [rbp + 0x17], xmm0
movups xmmword [rbp - 0x19], xmm1
movups xmmword [rbp - 9], xmm1
call qword [sym.imp.KERNEL32.dll_CreateFileW]
nop dword [rax + rax]
mov r15, rax
cmp rax, 0xffffffffffffffff
jne 0x140140c70
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
mov r14d, eax
mov rcx, qword [0x14017b048]
lea r15, [0x14017b048]
lea edi, [rbx + 2]
cmp rcx, r15
je 0x140140c5a
test byte [rcx + 0x1c], 1
je 0x140140c5a
cmp byte [rcx + 0x19], dil
jb 0x140140c5a
mov rcx, qword [rcx + 0x10]
lea edx, [rbx + 0xb]
mov r9, rsi
mov dword [rsp + 0x20], eax
lea r8, str.1F
call fcn.140005d40
mov rcx, qword [0x14017b048]
movzx ebx, r14w
or ebx, 0x80070000
test r14d, r14d
cmovle ebx, r14d
jmp 0x140140f1d
and qword [rsp + 0x38], rbx
lea rax, [rbp - 0x39]
and dword [rbp - 0x21], ebx
lea r8, [rbp - 0x29]
and dword [rbp - 0x25], ebx
mov r9d, 0xc
mov qword [rsp + 0x30], rax
mov edx, 0x2d1400
lea rax, [rbp + 7]
mov dword [rsp + 0x28], 0x20
mov rcx, r15
mov qword [rsp + 0x20], rax
mov dword [rbp - 0x29], 1
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
nop dword [rax + rax]
test eax, eax
jne 0x140140d22
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
mov r14d, eax
mov rcx, qword [0x14017b048]
lea rax, [0x14017b048]
mov edi, 2
cmp rcx, rax
je 0x140140d0c
test byte [rcx + 0x1c], 1
je 0x140140d0c
cmp byte [rcx + 0x19], dil
jb 0x140140d0c
lea edx, [rdi + 0xa]
mov rcx, qword [rcx + 0x10]
lea r8, str.1F
mov r9, rsi
mov dword [rsp + 0x20], r14d
call fcn.140005d40
movzx ebx, r14w
or ebx, 0x80070000
test r14d, r14d
cmovle ebx, r14d
jmp 0x140140f00
cmp dword [rbp - 0x39], 0x20
je 0x140140d40
lea r8, str.cbRet__sizeof_sadAdapterDesc_
mov edx, 0x52
lea rcx, str.base_stor_blbwsbutilwsbdeviceutils.cpp
call fcn.140087b08
and qword [rsp + 0x38], rbx
lea rax, [rbp - 0x39]
and qword [rbp - 0x31], rbx
mov edi, 8
mov qword [rsp + 0x30], rax
xor r9d, r9d
lea rax, [rbp - 0x31]
mov dword [rsp + 0x28], edi
xor r8d, r8d
mov qword [rsp + 0x20], rax
mov edx, 0x2d0c14
mov dword [rbp - 0x31], edi
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
nop dword [rax + rax]
test eax, eax
jne 0x140140dcc
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
mov r14d, eax
mov rcx, qword [0x14017b048]
lea rax, [0x14017b048]
mov edi, 2
cmp rcx, rax
je 0x140140d0c
test byte [rcx + 0x1c], 1
je 0x140140d0c
cmp byte [rcx + 0x19], dil
jb 0x140140d0c
lea edx, [rdi + 0xb]
jmp 0x140140cf4
cmp dword [rbp - 0x39], edi
je 0x140140de9
lea r8, str.cbRet__sizeof_hotPlugInfo_
mov edx, 0x66
lea rcx, str.base_stor_blbwsbutilwsbdeviceutils.cpp
call fcn.140087b08
and qword [rsp + 0x38], rbx
lea rax, [rbp - 0x39]
mov qword [rsp + 0x30], rax
xor r9d, r9d
lea rax, [rbp - 0x19]
mov dword [rsp + 0x28], 0x20
xor r8d, r8d
mov qword [rsp + 0x20], rax
mov edx, 0x70214
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
nop dword [rax + rax]
test eax, eax
jne 0x140140e6d
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
mov r14d, eax
mov rcx, qword [0x14017b048]
lea rax, [0x14017b048]
mov edi, 2
cmp rcx, rax
je 0x140140d0c
test byte [rcx + 0x1c], 1
je 0x140140d0c
cmp byte [rcx + 0x19], dil
jb 0x140140d0c
lea edx, [rdi + 0xc]
jmp 0x140140cf4
mov r10b, byte [rbp + 0x1f]
xor eax, eax
mov r9, qword [rbp - 0x11]
movzx r11d, byte [rbp - 0x2b]
shl r9, 5
and r9d, 0x40
lea edi, [rax + 2]
cmp r10b, 7
lea edx, [rdi + 2]
cmove eax, edi
or r9d, eax
xor eax, eax
cmp r10b, dl
cmove eax, edx
or r9d, eax
xor eax, eax
test r11b, r11b
setne al
or r9d, eax
or r9d, dword [r14]
mov dword [r14], r9d
mov rcx, qword [0x14017b048]
lea rax, [0x14017b048]
cmp rcx, rax
je 0x140140f00
test byte [rcx + 0x1c], 1
je 0x140140f00
cmp byte [rcx + 0x19], dl
jb 0x140140f00
mov rcx, qword [rcx + 0x10]
xor r8d, r8d
cmp r10b, dl
mov dword [rsp + 0x38], r9d
mov r9, rsi
sete r8b
xor edx, edx
mov dword [rsp + 0x30], r8d
cmp r10b, 7
sete dl
mov dword [rsp + 0x28], edx
mov dword [rsp + 0x20], r11d
call fcn.140140a8c
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_CloseHandle]
nop dword [rax + rax]
mov rcx, qword [0x14017b048]
lea r15, [0x14017b048]
test ebx, ebx
jns 0x140140f55
cmp rcx, r15
je 0x140140f7b
test byte [rcx + 0x1c], 1
je 0x140140f55
cmp byte [rcx + 0x19], dil
jb 0x140140f55
mov rcx, qword [rcx + 0x10]
lea r8, str.1F
mov edx, 0x10
mov dword [rsp + 0x20], ebx
mov r9, rsi
call fcn.140005d40
mov rcx, qword [0x14017b048]
cmp rcx, r15
je 0x140140f7b
test byte [rcx + 0x1c], 1
je 0x140140f7b
cmp byte [rcx + 0x19], 4
jb 0x140140f7b
mov rcx, qword [rcx + 0x10]
lea r8, str.1F
mov edx, 0x11
call fcn.140004c10
mov eax, ebx
mov rcx, qword [rbp + 0x27]
xor rcx, rsp
call fcn.14014bb60
mov rbx, qword [rsp + 0xf0]
add rsp, 0xb0
pop r15
pop r14
pop rdi
pop rsi
pop rbp
ret