Function at 0x140077ea0
Capabilities:
Get disk information via ioctl

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x370
mov qword [rsp + 0xa0], 0xfffffffffffffffe
mov qword [rsp + 0x3c0], rbx
mov rax, qword [0x140197b10]
xor rax, rsp
mov qword [rsp + 0x360], rax
mov r13d, edx
mov r15, rcx
lea rdi, [0x14019cf50]
mov qword [rsp + 0xa8], rdi
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop
mov eax, r13d
and eax, 0x10000
mov dword [rsp + 0x74], eax
mov ebx, r13d
and ebx, 0x20000
mov dword [rsp + 0x78], ebx
mov eax, r13d
and eax, 0x200000
mov dword [rsp + 0x70], eax
mov rax, qword [r15]
xor ebp, ebp
mov word [rax], bp
mov r14d, ebp
mov dword [rsp + 0x88], ebp
mov r12d, ebp
mov edx, 0x100000
lea rcx, [rsp + 0x98]
call fcn.1400632b0
nop
mov edx, 0x800
lea rcx, [rsp + 0x80]
call fcn.140063580
nop
mov rsi, qword [rsp + 0x80]
lea rax, [rsi + 0x800]
mov qword [rsp + 0x90], rax
mov ecx, 0x20
mov word [rsi], cx
mov word [rsi + 2], bp
mov word [rax], cx
mov word [rax + 2], bp
and r13d, 0xc000ffff
js 0x140077f90
mov ebp, r13d
jmp 0x140077f9c
cmp ebp, 0x3e80
jge 0x14007835c
mov r8d, ebp
lea rdx, str..PhysicalDrive_d
lea rcx, [rsp + 0x210]
call qword [sym.imp.USER32.dll_wsprintfW]
cmp dword [rsp + 0x74], 0
je 0x140077fd7
test r13d, r13d
js 0x140077fd7
lea rdx, [rsi + 2]
mov r8d, 0x13
lea rcx, [rsp + 0x210]
call fcn.140068400
test ebx, ebx
je 0x140077fe7
test r13d, r13d
js 0x140077fe7
mov ebx, 1
jmp 0x140077fe9
xor ebx, ebx
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0x20000000
mov dword [rsp + 0x20], 3
xor r9d, r9d
mov edx, 0x80000000
lea r8d, [r9 + 3]
lea rcx, [rsp + 0x210]
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rsi, rax
cmp rax, 0xffffffffffffffff
mov eax, 0
cmove rsi, rax
test ebx, ebx
je 0x140078048
mov r8, qword [rsp + 0x90]
add r8, 2
mov edx, ebp
mov rcx, rsi
call fcn.14005f0f0
xor eax, eax
test r13d, r13d
jns 0x1400780b1
test rsi, rsi
je 0x140078091
mov r12d, eax
mov r8d, ebp
lea rdx, [0x140148e60]
lea rcx, [rsp + 0x210]
call qword [sym.imp.USER32.dll_wsprintfW]
lea rdx, [rsp + 0x210]
mov rcx, r15
call fcn.140063600
inc r14d
cmp rsi, 0xffffffffffffffff
je 0x14007809e
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x14007809e
inc r12d
cmp r12d, 0x20
jge 0x14007835c
inc ebp
mov ebx, dword [rsp + 0x78]
mov rsi, qword [rsp + 0x80]
jmp 0x140077f90
test rsi, rsi
je 0x14007835c
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_SetLastError]
xor edx, edx
mov r8d, 0xc0
mov rbx, qword [rsp + 0x98]
mov rcx, rbx
call fcn.14010c6c0
xor r13d, r13d
mov qword [rsp + 0x38], r13
lea rax, [rsp + 0x88]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], 0x100000
mov qword [rsp + 0x20], rbx
xor r9d, r9d
xor r8d, r8d
mov edx, 0x70050
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
mov r12d, dword [rbx]
lea rcx, [0x140150018]
lea rax, [0x140150010]
test r12d, r12d
cmovne rax, rcx
lea r14, [0x140150008]
cmp r12d, 1
cmovne r14, rax
lea rcx, [rsp + 0x160]
mov eax, dword [0x14014fffc]
mov dword [rcx], eax
movzx eax, word [0x140150000]
mov word [rcx + 4], ax
xor edx, edx
mov r8d, 0x9e
lea rcx, [rsp + 0x166]
call fcn.14010c6c0
test r12d, r12d
jne 0x140078187
mov r8d, dword [rbx + 8]
lea rdx, str._08lX
lea rcx, [rsp + 0x160]
call qword [sym.imp.USER32.dll_wsprintfW]
jmp 0x14007819e
cmp r12d, 1
jne 0x14007819e
lea rdx, [rbx + 8]
lea rcx, [rsp + 0x160]
call fcn.14005ef10
mov dword [rsp + 0xb0], r13d
xor eax, eax
mov dword [rsp + 0xb4], eax
mov dword [rsp + 0xb8], eax
mov dword [rsp + 0xbc], eax
mov dword [rsp + 0xc0], eax
mov dword [rsp + 0xc4], eax
mov dword [rsp + 0xc8], eax
mov dword [rsp + 0xcc], eax
mov dword [rsp + 0xd0], eax
mov dword [rsp + 0xd4], eax
lea rdx, [rsp + 0xb0]
mov rcx, rsi
call fcn.14005ee50
mov r12, rax
mov rdx, rsi
xor ecx, ecx
call fcn.1400653c0
mov r13d, eax
mov edx, 0xc8
mov rcx, r15
call fcn.1400635c0
mov r8b, 1
xor edx, edx
mov rcx, rsi
call fcn.140068eb0
mov cl, 0x3f
cmp eax, 0xc
jne 0x14007822c
mov bl, 0x46
jmp 0x14007823a
movzx ebx, cl
mov ecx, 0x52
cmp eax, 0xb
cmove ebx, ecx
xor eax, eax
mov word [rsp + 0x2e0], ax
cmp dword [rsp + 0x70], eax
je 0x140078278
mov dword [rsp + 0x70], eax
lea rdx, [rsp + 0x70]
mov rcx, rsi
call fcn.140069340
mov r9d, dword [rsp + 0x70]
mov r8, rax
lea rdx, str.__I64d__u
lea rcx, [rsp + 0x2e0]
call qword [sym.imp.USER32.dll_wsprintfW]
mov rdx, r12
lea rcx, [rsp + 0xe0]
call fcn.140062c70
mov rdx, qword [rsp + 0xb0]
lea rcx, [rsp + 0x120]
call fcn.140062c70
movsx eax, bl
lea rcx, [rsp + 0x2e0]
mov qword [rsp + 0x68], rcx
mov dword [rsp + 0x60], eax
mov qword [rsp + 0x58], r14
mov dword [rsp + 0x50], r13d
lea rax, [rsp + 0x160]
mov qword [rsp + 0x48], rax
mov eax, dword [rsp + 0xb8]
mov dword [rsp + 0x40], eax
mov eax, dword [rsp + 0xc4]
mov dword [rsp + 0x38], eax
mov eax, dword [rsp + 0xc0]
mov dword [rsp + 0x30], eax
mov eax, dword [rsp + 0xbc]
mov dword [rsp + 0x28], eax
lea rax, [rsp + 0x120]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0xe0]
mov r8d, ebp
lea rdx, str._2d__14s__14s__6lu__4lu__4lu__4lu__s__2d__s__c_s
mov rcx, qword [r15]
call qword [sym.imp.USER32.dll_wsprintfW]
mov r14d, eax
cmp dword [rsp + 0x74], 0
je 0x140078336
mov rdx, qword [rsp + 0x80]
mov rcx, r15
call fcn.140063600
cmp dword [rsp + 0x78], 0
je 0x14007834d
mov rdx, qword [rsp + 0x90]
mov rcx, r15
call fcn.140063600
cmp rsi, 0xffffffffffffffff
je 0x14007835c
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [r15]
call fcn.14002b47c
nop
lea rcx, [rsp + 0x80]
call fcn.14005b520
nop
lea rcx, [rsp + 0x98]
call fcn.14005b520
nop
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, r14d
mov rcx, qword [rsp + 0x360]
xor rcx, rsp
call fcn.14010bcc0
mov rbx, qword [rsp + 0x3c0]
add rsp, 0x370
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret