Function at 0x14013d13c
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 [0x140178010]
xor rax, rsp
mov qword [rbp + 0x27], rax
mov rsi, rdx
mov r14, rcx
mov rcx, qword [0x1401782b0]
lea rax, [0x1401782b0]
mov edx, 4
cmp rcx, rax
je 0x14013d1a0
test byte [rcx + 0x1c], 1
je 0x14013d1a0
cmp byte [rcx + 0x19], dl
jb 0x14013d1a0
mov rcx, qword [rcx + 0x10]
lea r8, [0x140161f58]
mov edx, 0xa
call fcn.140004c6c
xor eax, eax
xor ebx, ebx
and qword [rsp + 0x30], rax
xor r9d, r9d
and dword [rsp + 0x28], eax
mov edx, 0xc0000000
and dword [rbp - 0x19], ebx
mov rcx, r14
and dword [rbp + 7], eax
lea r8d, [rbx + 1]
and dword [rsi], eax
mov qword [rbp - 0x15], rax
mov qword [rbp - 0xd], rax
mov qword [rbp - 5], rax
mov dword [rbp + 3], eax
mov qword [rbp + 0xf], rax
mov qword [rbp + 0x17], rax
mov qword [rbp + 0x1f], rax
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov r15, rax
cmp rax, 0xffffffffffffffff
jne 0x14013d254
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov rcx, qword [0x1401782b0]
lea r15, [0x1401782b0]
lea edi, [rbx + 2]
cmp rcx, r15
je 0x14013d241
test byte [rcx + 0x1c], 1
je 0x14013d241
cmp byte [rcx + 0x19], dil
jb 0x14013d241
mov rcx, qword [rcx + 0x10]
lea edx, [rbx + 0xb]
mov r9, r14
mov dword [rsp + 0x20], eax
lea r8, [0x140161f58]
call fcn.140005ce8
mov rcx, qword [0x1401782b0]
movzx ebx, si
or ebx, 0x80070000
test esi, esi
cmovle ebx, esi
jmp 0x14013d4d3
xor eax, eax
lea r8, [rbp - 0x29]
and qword [rsp + 0x38], rax
mov r9d, 0xc
mov qword [rbp - 0x29], rax
mov edx, 0x2d1400
and dword [rbp - 0x25], eax
mov rcx, r15
mov dword [rbp - 0x21], eax
lea rax, [rbp - 0x39]
mov qword [rsp + 0x30], rax
lea rax, [rbp - 0x19]
mov dword [rsp + 0x28], 0x20
mov qword [rsp + 0x20], rax
mov dword [rbp - 0x29], 1
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
jne 0x14013d2e2
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov rcx, qword [0x1401782b0]
lea rax, [0x1401782b0]
mov edi, 2
cmp rcx, rax
je 0x14013d419
test byte [rcx + 0x1c], 1
je 0x14013d419
cmp byte [rcx + 0x19], dil
jb 0x14013d419
lea edx, [rdi + 0xa]
jmp 0x14013d402
cmp dword [rbp - 0x39], 0x20
je 0x14013d300
lea r8, str.cbRet__sizeof_sadAdapterDesc_
mov edx, 0x52
lea rcx, str.base_stor_blbwsbutilwsbdeviceutils.cpp
call fcn.14008624c
xor eax, eax
xor r9d, r9d
and qword [rsp + 0x38], rax
xor r8d, r8d
mov qword [rbp - 0x31], rax
mov edx, 0x2d0c14
mov rcx, r15
lea edi, [rax + 8]
lea rax, [rbp - 0x39]
mov dword [rbp - 0x31], edi
mov qword [rsp + 0x30], rax
lea rax, [rbp - 0x31]
mov dword [rsp + 0x28], edi
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
jne 0x14013d37f
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov rcx, qword [0x1401782b0]
lea rax, [0x1401782b0]
mov edi, 2
cmp rcx, rax
je 0x14013d419
test byte [rcx + 0x1c], 1
je 0x14013d419
cmp byte [rcx + 0x19], dil
jb 0x14013d419
lea edx, [rdi + 0xb]
jmp 0x14013d402
cmp dword [rbp - 0x39], edi
je 0x14013d39c
lea r8, str.cbRet__sizeof_hotPlugInfo_
mov edx, 0x66
lea rcx, str.base_stor_blbwsbutilwsbdeviceutils.cpp
call fcn.14008624c
and qword [rsp + 0x38], rbx
lea rax, [rbp - 0x39]
mov qword [rsp + 0x30], rax
xor r9d, r9d
lea rax, [rbp + 7]
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]
test eax, eax
jne 0x14013d42c
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov rcx, qword [0x1401782b0]
lea rax, [0x1401782b0]
mov edi, 2
cmp rcx, rax
je 0x14013d419
test byte [rcx + 0x1c], 1
je 0x14013d419
cmp byte [rcx + 0x19], dil
jb 0x14013d419
lea edx, [rdi + 0xc]
mov rcx, qword [rcx + 0x10]
lea r8, [0x140161f58]
mov r9, r14
mov dword [rsp + 0x20], esi
call fcn.140005ce8
movzx ebx, si
or ebx, 0x80070000
test esi, esi
cmovle ebx, esi
jmp 0x14013d4bc
mov r9b, byte [rbp - 1]
xor eax, eax
mov rcx, qword [rbp + 0xf]
mov r10b, byte [rbp - 0x2b]
shl rcx, 5
and ecx, 0x40
lea edi, [rax + 2]
cmp r9b, 7
lea edx, [rdi + 2]
cmove eax, edi
or ecx, eax
xor eax, eax
cmp r9b, dl
cmove eax, edx
or ecx, eax
xor eax, eax
test r10b, r10b
setne al
or ecx, eax
or dword [rsi], ecx
mov r11d, dword [rsi]
mov rcx, qword [0x1401782b0]
lea rax, [0x1401782b0]
cmp rcx, rax
je 0x14013d4bc
test byte [rcx + 0x1c], 1
je 0x14013d4bc
cmp byte [rcx + 0x19], dl
jb 0x14013d4bc
mov rcx, qword [rcx + 0x10]
xor r8d, r8d
cmp r9b, dl
mov dword [rsp + 0x38], r11d
movzx eax, r10b
sete r8b
xor edx, edx
cmp r9b, 7
mov dword [rsp + 0x30], r8d
mov r9, r14
sete dl
mov dword [rsp + 0x28], edx
mov dword [rsp + 0x20], eax
call fcn.14013d060
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [0x1401782b0]
lea r15, [0x1401782b0]
test ebx, ebx
jns 0x14013d50b
cmp rcx, r15
je 0x14013d531
test byte [rcx + 0x1c], 1
je 0x14013d50b
cmp byte [rcx + 0x19], dil
jb 0x14013d50b
mov rcx, qword [rcx + 0x10]
lea r8, [0x140161f58]
mov edx, 0x10
mov dword [rsp + 0x20], ebx
mov r9, r14
call fcn.140005ce8
mov rcx, qword [0x1401782b0]
cmp rcx, r15
je 0x14013d531
test byte [rcx + 0x1c], 1
je 0x14013d531
cmp byte [rcx + 0x19], 4
jb 0x14013d531
mov rcx, qword [rcx + 0x10]
lea r8, [0x140161f58]
mov edx, 0x11
call fcn.140004c6c
mov eax, ebx
mov rcx, qword [rbp + 0x27]
xor rcx, rsp
call fcn.1401474d0
mov rbx, qword [rsp + 0xf0]
add rsp, 0xb0
pop r15
pop r14
pop rdi
pop rsi
pop rbp
ret