Function at 0x14007d460
Capabilities:
Get disk information via ioctl

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x3c8
mov r13, rcx
lea rsi, [0x140118f08]
mov edi, edx
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
xor ebp, ebp
mov eax, edi
and eax, 0x10000
mov ebx, edi
lea rcx, [rsp + 0x88]
mov dword [rsp + 0x410], eax
mov eax, edi
and ebx, 0x20000
and eax, 0x200000
mov edx, 0x100000
mov r15d, ebp
mov dword [rsp + 0x418], eax
mov rax, qword [r13]
mov dword [rsp + 0x420], ebx
mov word [rax], bp
and edi, 0xc000ffff
mov r14d, ebp
mov dword [rsp + 0x428], ebp
call fcn.140059ed8
lea rcx, [rsp + 0x78]
mov edx, 0x800
call fcn.14005a1c4
cmp edi, ebp
mov r12, qword [rsp + 0x78]
lea rax, [r12 + 0x800]
lea ecx, [rbp + 0x20]
mov word [r12 + 2], bp
mov word [r12], cx
mov word [rax], cx
mov word [rax + 2], bp
mov qword [rsp + 0x80], rax
jl 0x14007d523
mov ebp, edi
jmp 0x14007d52f
cmp ebp, 0x3e80
jge 0x14007d90b
lea rdx, str..PhysicalDrive_d
lea rcx, [rsp + 0x170]
mov r8d, ebp
call qword [sym.imp.USER32.dll_wsprintfW]
xor ecx, ecx
cmp dword [rsp + 0x410], ecx
je 0x14007d575
cmp edi, ecx
jl 0x14007d575
lea r8d, [rcx + 0x13]
lea rdx, [r12 + 2]
lea r9, [0x1400fb460]
lea rcx, [rsp + 0x170]
call fcn.14005f85c
xor ecx, ecx
mov qword [rsp + 0x70], rcx
cmp ebx, ecx
je 0x14007d588
cmp edi, ecx
mov r12d, 1
jge 0x14007d58b
mov r12d, ecx
mov qword [rsp + 0x38], rcx
mov eax, r12d
mov dword [rsp + 0x30], 0x20000000
neg eax
mov eax, 3
lea rdx, [rsp + 0x170]
sbb r8d, r8d
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rcx
and r8d, 0x40000000
lea rcx, [rsp + 0x70]
mov r9d, eax
add r8d, 0x80000000
call fcn.1400037e4
mov rbx, qword [rsp + 0x70]
xor eax, eax
cmp r12d, eax
je 0x14007d5f5
mov r8, qword [rsp + 0x80]
mov edx, ebp
mov rcx, rbx
add r8, 2
call fcn.140056cf8
xor eax, eax
cmp edi, eax
jge 0x14007d65d
cmp rbx, rax
je 0x14007d63d
lea rdx, [0x1400fc5b0]
lea rcx, [rsp + 0x170]
mov r8d, ebp
mov r14d, eax
call qword [sym.imp.USER32.dll_wsprintfW]
lea rdx, [rsp + 0x170]
mov rcx, r13
call fcn.14005a28c
inc r15d
cmp rbx, 0xffffffffffffffff
je 0x14007d64a
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x14007d64a
inc r14d
cmp r14d, 0x20
jge 0x14007d90b
mov ebx, dword [rsp + 0x420]
mov r12, qword [rsp + 0x78]
inc ebp
jmp 0x14007d523
cmp rbx, rax
je 0x14007d90b
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov rdi, qword [rsp + 0x88]
xor edx, edx
mov rcx, rdi
mov r8d, 0xc0
call fcn.1400dd9e0
lea rax, [rsp + 0x428]
xor r14d, r14d
mov qword [rsp + 0x38], r14
mov qword [rsp + 0x30], rax
xor r9d, r9d
xor r8d, r8d
mov edx, 0x70050
mov rcx, rbx
mov dword [rsp + 0x28], 0x100000
mov qword [rsp + 0x20], rdi
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
mov r12d, dword [rdi]
lea rcx, [0x140103ac8]
lea rax, [0x140103ac0]
cmp r12d, r14d
lea r15, [0x140103ab8]
mov r8d, 0x9e
cmovne rax, rcx
lea rcx, [rsp + 0xc0]
cmp r12d, 1
cmovne r15, rax
mov eax, dword [0x1401034c4]
xor edx, edx
mov dword [rcx], eax
movzx eax, word [0x1401034c8]
mov word [rcx + 4], ax
lea rcx, [rsp + 0xc6]
call fcn.1400dd9e0
cmp r12d, r14d
jne 0x14007d733
mov r8d, dword [rdi + 8]
lea rdx, str._08lX
lea rcx, [rsp + 0xc0]
call qword [sym.imp.USER32.dll_wsprintfW]
jmp 0x14007d74d
cmp r12d, 1
jne 0x14007d74d
lea rdx, [rdi + 8]
lea rcx, [rsp + 0xc0]
xor r8d, r8d
call fcn.140056b34
xor edx, edx
lea rcx, [rsp + 0x94]
mov dword [rsp + 0x90], r14d
lea r8d, [rdx + 0x24]
call fcn.1400dd9e0
lea rdx, [rsp + 0x90]
mov rcx, rbx
call fcn.140056a78
mov rdx, rbx
xor ecx, ecx
mov r12, rax
call fcn.14005c758
mov edx, 0xc8
mov rcx, r13
mov r14d, eax
call fcn.14005a250
xor edx, edx
mov r9d, 0x800
lea r8d, [rdx + 1]
mov rcx, rbx
call fcn.14006005c
mov cl, 0x3f
cmp eax, 0xc
jne 0x14007d7b5
mov dil, 0x46
jmp 0x14007d7c3
movzx edi, cl
cmp eax, 0xb
mov ecx, 0x52
cmove edi, ecx
xor eax, eax
mov word [rsp + 0x240], ax
cmp dword [rsp + 0x418], eax
je 0x14007d822
or qword [rsp + 0x70], 0xffffffffffffffff
lea r8, [rsp + 0x70]
lea rdx, [rsp + 0x418]
mov rcx, rbx
mov dword [rsp + 0x418], eax
call fcn.14006b780
mov r9d, dword [rsp + 0x418]
lea rdx, str.__I64d__u__I64d
mov r8, rax
mov rax, qword [rsp + 0x70]
lea rcx, [rsp + 0x240]
mov qword [rsp + 0x20], rax
call qword [sym.imp.USER32.dll_wsprintfW]
lea rcx, [rsp + 0x2c0]
mov rdx, r12
call fcn.1400c90d4
mov rdx, qword [rsp + 0x90]
lea rcx, [rsp + 0x340]
call fcn.1400c90d4
lea rcx, [rsp + 0x240]
movsx eax, dil
mov qword [rsp + 0x68], rcx
mov rcx, qword [r13]
mov dword [rsp + 0x60], eax
mov qword [rsp + 0x58], r15
mov dword [rsp + 0x50], r14d
lea rax, [rsp + 0xc0]
mov qword [rsp + 0x48], rax
mov eax, dword [rsp + 0x98]
lea r9, [rsp + 0x2c0]
mov dword [rsp + 0x40], eax
mov eax, dword [rsp + 0xa4]
lea rdx, str._2d__14s__14s__6lu__4lu__4lu__4lu__s__2d__s__c_s
mov dword [rsp + 0x38], eax
mov eax, dword [rsp + 0xa0]
mov r8d, ebp
mov dword [rsp + 0x30], eax
mov eax, dword [rsp + 0x9c]
mov dword [rsp + 0x28], eax
lea rax, [rsp + 0x340]
mov qword [rsp + 0x20], rax
call qword [sym.imp.USER32.dll_wsprintfW]
cmp dword [rsp + 0x410], 0
mov r15d, eax
je 0x14007d8e2
mov rdx, qword [rsp + 0x78]
mov rcx, r13
call fcn.14005a28c
cmp dword [rsp + 0x420], 0
je 0x14007d8fc
mov rdx, qword [rsp + 0x80]
mov rcx, r13
call fcn.14005a28c
cmp rbx, 0xffffffffffffffff
je 0x14007d90b
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [r13]
call fcn.140017094
lea rcx, [rsp + 0x78]
call fcn.140052160
lea rcx, [rsp + 0x88]
call fcn.140052160
test rsi, rsi
je 0x14007d939
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, r15d
add rsp, 0x3c8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret