Function at 0x140036850
Capabilities:
Get storage device properties

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
push rsi
push rdi
lea rbp, [rsp - 0x2c50]
mov eax, 0x2d50
call fcn.140019b50
sub rsp, rax
lea rdx, str..PhysicalDrive_d
lea rcx, [rbp + 0x340]
xor ebx, ebx
xor r8d, r8d
mov edi, ebx
call fcn.140016ce4
mov qword [rsp + 0x30], rbx
lea r8d, [rbx + 3]
lea rcx, [rbp + 0x340]
xor r9d, r9d
xor edx, edx
mov dword [rsp + 0x28], ebx
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rsi, rax
cmp rax, 0xffffffffffffffff
je 0x140036b42
xor eax, eax
lea rcx, [rbp + 0x540]
xor edx, edx
mov qword [rsp + 0x40], rax
mov r8d, 0x2710
mov qword [rsp + 0x2d78], r12
mov qword [rsp + 0x40], rbx
mov dword [rbp + 0x2c70], ebx
mov dword [rsp + 0x48], eax
call fcn.140018210
mov qword [rsp + 0x38], rbx
lea rax, [rbp + 0x2c70]
mov qword [rsp + 0x30], rax
lea rax, [rbp + 0x540]
lea r9d, [rbx + 0xc]
lea r8, [rsp + 0x40]
mov edx, 0x2d1400
mov rcx, rsi
mov dword [rsp + 0x28], 0x2710
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
lea r12, [0x140000000]
test eax, eax
je 0x140036a55
lea rcx, [rsp + 0x51]
xor edx, edx
mov r8d, 0x3e7
mov qword [rsp + 0x2d80], r13
call fcn.140018210
mov edx, dword [rbp + 0x54c]
mov byte [0x140070960], bl
test edx, edx
jle 0x140036978
lea r9, [0x140070960]
lea rcx, [rbp + 0x540]
xor r8d, r8d
call fcn.140035e80
mov edx, dword [rbp + 0x550]
mov byte [0x140070d60], bl
lea r13, [0x140070d60]
test edx, edx
jle 0x1400369a1
lea rcx, [rbp + 0x540]
mov r9, r13
xor r8d, r8d
call fcn.140035e80
mov edx, dword [rbp + 0x558]
xor r8b, r8b
mov byte [rsp + 0x50], r8b
test edx, edx
jle 0x1400369d0
lea r9, [rsp + 0x50]
lea rcx, [rbp + 0x540]
mov r8d, 1
call fcn.140035e80
movzx r8d, byte [rsp + 0x50]
mov rcx, rbx
nop word [rax + rax]
movzx eax, byte [rcx + r13]
inc rcx
mov byte [rcx + r12 + 0x7055f], al
test al, al
jne 0x1400369e0
cmp byte [0x140070160], bl
mov r13, qword [rsp + 0x2d80]
jne 0x140036a46
movzx ecx, r8b
call fcn.14001975c
test eax, eax
jne 0x140036a1f
movzx ecx, byte [rsp + 0x63]
call fcn.14001975c
test eax, eax
je 0x140036a46
mov rcx, rbx
nop word [rax + rax]
movzx eax, byte [rsp + rcx + 0x50]
inc rcx
mov byte [rcx + r12 + 0x7015f], al
test al, al
jne 0x140036a30
jmp 0x140036a5b
cmp byte [0x140070560], bl
je 0x140036a5b
mov edi, 1
jmp 0x140036a5b
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, [rbp + 0x540]
xor edx, edx
mov r8d, 0x2710
call fcn.140018210
mov qword [rsp + 0x38], rbx
lea rax, [rbp + 0x2c70]
mov qword [rsp + 0x30], rax
lea rax, [rbp + 0x540]
xor r9d, r9d
xor r8d, r8d
mov edx, 0x2d0c10
mov rcx, rsi
mov dword [rsp + 0x28], 0x2710
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x140036b2b
lea rcx, [rsp + 0x52]
xor edx, edx
mov r8d, 0x3e6
mov word [rsp + 0x50], bx
call fcn.140018210
mov r11, rbx
nop word [rax + rax]
movzx eax, byte [rbp + r11 + 0x550]
inc r11
mov byte [rsp + r11 + 0x4f], al
test al, al
jne 0x140036ad0
cmp byte [0x140070160], bl
jne 0x140036b31
movsx ecx, byte [rsp + 0x50]
call fcn.14001975c
test eax, eax
jne 0x140036b10
movsx ecx, byte [rsp + 0x63]
call fcn.14001975c
test eax, eax
je 0x140036b31
nop dword [rax]
movzx eax, byte [rsp + rbx + 0x50]
inc rbx
mov byte [rbx + r12 + 0x7015f], al
test al, al
jne 0x140036b10
mov edi, 1
jmp 0x140036b31
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov r12, qword [rsp + 0x2d78]
mov eax, edi
mov rbx, qword [rsp + 0x2d88]
add rsp, 0x2d50
pop rdi
pop rsi
pop rbp
ret