Function at 0x14003c230
Capabilities:
Get disk information
Get disk information via ioctl

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0xa8]
sub rsp, 0x1a8
mov qword [rbp - 0x70], 0xfffffffffffffffe
mov rax, qword [0x14017c430]
xor rax, rsp
mov qword [rbp + 0x90], rax
mov qword [rbp - 0x78], r9
mov qword [rbp - 0x80], r8
mov qword [rsp + 0x78], rdx
mov rdi, rcx
xor r12b, r12b
lea rcx, [0x14017bd30]
mov rax, qword [0x14017bd30]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x58], rax
mov r8, rdi
lea rdx, str.._s
lea rcx, [rsp + 0x58]
call fcn.140016060
xor r14d, r14d
mov qword [rsp + 0x50], r14
mov qword [rsp + 0x30], r14
mov dword [rsp + 0x28], r14d
mov dword [rsp + 0x20], 3
xor r9d, r9d
xor edx, edx
lea r8d, [r14 + 3]
mov rbx, qword [rsp + 0x58]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov r13, rax
mov qword [rsp + 0x50], rax
cmp rax, 0xffffffffffffffff
jne 0x14003c2fb
or rdi, rax
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rsp + 0x50], r14
jmp 0x14003ca01
xor eax, eax
mov qword [rbp - 0x68], rax
mov dword [rbp - 0x60], eax
mov dword [rsp + 0x68], r14d
mov qword [rsp + 0x38], r14
lea rax, [rsp + 0x68]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], send
lea rax, [rbp - 0x68]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
mov edx, 0x2d1080
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x14003c9ea
mov eax, dword [rbp - 0x64]
mov dword [rsp + 0x44], eax
cmp eax, 0xffffffff
je 0x14003c9ea
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_GetDriveTypeW]
mov esi, eax
lea rcx, [0x14017bd30]
mov rdx, qword [0x14017bd30]
call qword [rdx + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x70], rbx
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, 0x104
or eax, ecx
jge 0x14003c3a2
mov edx, 0x104
lea rcx, [rsp + 0x70]
call fcn.1400020c0
mov rbx, qword [rsp + 0x70]
cmp dword [rbx - 0xc], 0x104
jge 0x14003c3b6
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov dword [rbx - 0x10], 0x104
mov word [rbx + 0x208], r14w
mov r8d, 0x104
mov rdx, rbx
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
test eax, eax
jne 0x14003c41b
lea rdx, [rbx - 0x18]
or rdi, 0xffffffffffffffff
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14003c3fa
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + VariantCopy]
nop
test r13, r13
je 0x14003c40d
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rsp + 0x50], r14
mov rax, qword [rsp + 0x58]
lea rdx, [rax - 0x18]
jmp 0x14003ca05
movsxd rdx, dword [rbx - 0xc]
mov rcx, rbx
call fcn.1400d4f10
test eax, eax
js 0x14003c9df
cmp eax, dword [rbx - 0xc]
jg 0x14003c9df
mov dword [rbx - 0x10], eax
cdqe
mov word [rbx + rax*2], r14w
or rdi, 0xffffffffffffffff
sub esi, 2
je 0x14003c4a5
dec esi
je 0x14003c49c
cmp esi, 2
je 0x14003c493
lea rdx, [rbx - 0x18]
or rdi, rdi
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14003c472
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + VariantCopy]
nop
test r13, r13
je 0x14003c485
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rsp + 0x50], r14
mov rax, qword [rsp + 0x58]
lea rdx, [rax - 0x18]
jmp 0x14003ca05
lea r14, [0x140129b00]
jmp 0x14003c4e2
lea r14, [0x140129af0]
jmp 0x14003c4e2
cmp dword [rbx - 0x10], 0
jge 0x14003c4af
mov eax, edi
jmp 0x14003c4cd
lea rdx, str.Floppy
mov rcx, rbx
call fcn.1400d8384
test rax, rax
jne 0x14003c4c7
mov eax, edi
jmp 0x14003c4cd
sub rax, rbx
sar rax, 1
lea rcx, [0x140129b10]
lea r14, [0x140129af0]
cmp eax, 0xffffffff
cmovne r14, rcx
mov r9d, reloc.WS2_32.dll_select
xor r8d, r8d
xor edx, edx
mov rcx, r14
call qword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsW]
mov r15, rax
xor esi, esi
mov ecx, esi
test rax, rax
setne cl
test ecx, ecx
jne 0x14003c543
lea rdx, [rbx - 0x18]
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14003c522
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + VariantCopy]
nop
test r13, r13
je 0x14003c535
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rsp + 0x50], rsi
mov rax, qword [rsp + 0x58]
lea rdx, [rax - 0x18]
jmp 0x14003ca05
xor eax, eax
mov qword [rbp - 0x28], rax
mov qword [rbp - 0x20], rax
mov qword [rbp - 0x18], rax
mov qword [rbp - 0x10], rax
mov dword [rbp - 0x28], 0x20
mov qword [rbp - 0x48], rax
mov qword [rbp - 0x40], rax
mov qword [rbp - 0x38], rax
mov qword [rbp - 0x30], rax
mov dword [rbp - 0x48], 0x20
mov dword [rsp + 0x48], esi
lea rax, [rbp - 0x28]
mov qword [rsp + 0x20], rax
xor r9d, r9d
mov r8, r14
xor edx, edx
mov rcx, r15
call qword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInterfaces]
test eax, eax
je 0x14003c982
nop dword [rax]
mov qword [rbp], rsi
mov edx, 0x212
lea rcx, [rbp]
call fcn.14001c170
nop
mov r12, qword [rbp]
mov dword [r12], 8
lea rax, [rbp - 0x48]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rsi
mov r9d, 0x210
mov r8, r12
lea rdx, [rbp - 0x28]
mov rcx, r15
call qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInterfaceDetailW]
test eax, eax
jne 0x14003c5ec
jmp 0x14003c6a7
mov qword [rsp + 0x60], rsi
lea rcx, [r12 + 4]
mov qword [rsp + 0x30], rsi
mov dword [rsp + 0x28], esi
mov dword [rsp + 0x20], 3
xor r9d, r9d
xor edx, edx
lea r8d, [r9 + 3]
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rsi, rax
mov qword [rsp + 0x60], rax
cmp rax, 0xffffffffffffffff
je 0x14003c692
xor eax, eax
mov qword [rbp - 0x58], rax
mov dword [rbp - 0x50], eax
xor edx, edx
mov dword [rsp + 0x6c], edx
mov qword [rsp + 0x38], rdx
lea rax, [rsp + 0x6c]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], send
lea rax, [rbp - 0x58]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
mov edx, 0x2d1080
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x14003c67b
mov eax, dword [rbp - 0x54]
cmp eax, 0xffffffff
je 0x14003c67b
cmp dword [rsp + 0x44], eax
je 0x14003c6eb
jmp 0x14003c692
test rsi, rsi
je 0x14003c690
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
xor esi, esi
mov qword [rsp + 0x60], rsi
jmp 0x14003c6a7
test rsi, rsi
je 0x14003c6a7
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
xor esi, esi
mov qword [rsp + 0x60], rsi
lea rax, [rbp + 8]
cmp qword [rbp], rax
je 0x14003c6ba
lea rcx, [rbp]
call fcn.140043680
mov eax, dword [rsp + 0x48]
inc eax
mov dword [rsp + 0x48], eax
lea rcx, [rbp - 0x28]
mov qword [rsp + 0x20], rcx
mov r9d, eax
mov r8, r14
xor edx, edx
mov rcx, r15
call qword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInterfaces]
test eax, eax
je 0x14003c97f
jmp 0x14003c5a0
lea rcx, [r12 + 4]
xor r8d, r8d
mov rdx, qword [rbp - 0x78]
call fcn.14003ca40
mov byte [rsp + 0x40], al
xor r12d, r12d
mov dword [rsp + 0x44], r12d
lea rax, [rsp + 0x44]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], r12d
mov qword [rsp + 0x20], r12
xor r9d, r9d
lea r8d, [r12 + 0xc]
lea rdx, [rbp - 0x48]
mov rcx, r15
call qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyW]
test eax, eax
jne 0x14003c892
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x14003c892
mov edx, dword [rsp + 0x44]
mov r14, qword [rsp + 0x78]
mov rcx, r14
call fcn.140001ec0
lea rcx, [rsp + 0x44]
mov qword [rsp + 0x30], rcx
mov ecx, dword [rsp + 0x44]
mov dword [rsp + 0x28], ecx
mov qword [rsp + 0x20], rax
xor r9d, r9d
lea r8d, [r12 + 0xc]
lea rdx, [rbp - 0x48]
mov rcx, r15
call qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyW]
mov r12d, eax
mov rcx, qword [r14]
test rcx, rcx
jne 0x14003c796
xor edx, edx
mov eax, edx
jmp 0x14003c7a9
movsxd rdx, dword [rcx - 0xc]
call fcn.1400d4f10
test eax, eax
js 0x14003c884
xor edx, edx
mov rcx, qword [r14]
cmp eax, dword [rcx - 0xc]
jg 0x14003c884
mov dword [rcx - 0x10], eax
movsxd rcx, eax
mov rax, qword [r14]
mov word [rax + rcx*2], dx
test r12d, r12d
jne 0x14003c88f
xor r12d, r12d
mov dword [rsp + 0x48], r12d
lea rax, [rsp + 0x48]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], r12d
mov qword [rsp + 0x20], r12
xor r9d, r9d
xor r8d, r8d
lea rdx, [rbp - 0x48]
mov rcx, r15
call qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyW]
test eax, eax
jne 0x14003c892
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x14003c892
mov edx, dword [rsp + 0x48]
mov rcx, r14
call fcn.140001ec0
lea rcx, [rsp + 0x48]
mov qword [rsp + 0x30], rcx
mov ecx, dword [rsp + 0x48]
mov dword [rsp + 0x28], ecx
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
lea rdx, [rbp - 0x48]
mov rcx, r15
call qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyW]
mov rcx, qword [r14]
test rcx, rcx
jne 0x14003c854
mov eax, r12d
jmp 0x14003c861
movsxd rdx, dword [rcx - 0xc]
call fcn.1400d4f10
test eax, eax
js 0x14003c879
mov rcx, qword [r14]
cmp eax, dword [rcx - 0xc]
jg 0x14003c879
mov dword [rcx - 0x10], eax
movsxd rcx, eax
mov rax, qword [r14]
mov word [rax + rcx*2], r12w
jmp 0x14003c892
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
int3
xor r12d, r12d
mov dword [rsp + 0x44], r12d
lea rax, [rsp + 0x44]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], r12d
mov qword [rsp + 0x20], r12
xor r9d, r9d
lea r8d, [r9 + 0xb]
lea rdx, [rbp - 0x48]
mov rcx, r15
call qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyW]
test eax, eax
jne 0x14003c951
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x14003c951
mov edx, dword [rsp + 0x44]
mov r12, qword [rbp - 0x80]
mov rcx, r12
call fcn.140001ec0
lea rcx, [rsp + 0x44]
mov qword [rsp + 0x30], rcx
mov ecx, dword [rsp + 0x44]
mov dword [rsp + 0x28], ecx
mov qword [rsp + 0x20], rax
xor r9d, r9d
lea r8d, [r9 + 0xb]
lea rdx, [rbp - 0x48]
mov rcx, r15
call qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyW]
mov rcx, qword [r12]
test rcx, rcx
jne 0x14003c91c
xor edx, edx
mov eax, edx
jmp 0x14003c929
movsxd rdx, dword [rcx - 0xc]
call fcn.1400d4f10
test eax, eax
js 0x14003c946
mov rcx, qword [r12]
cmp eax, dword [rcx - 0xc]
jg 0x14003c946
mov dword [rcx - 0x10], eax
movsxd rcx, eax
mov rax, qword [r12]
xor r12d, r12d
mov word [rax + rcx*2], r12w
jmp 0x14003c951
mov ecx, 0x80070057
call fcn.1400022b0
nop
test rsi, rsi
je 0x14003c964
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rsp + 0x60], r12
lea rax, [rbp + 8]
cmp qword [rbp], rax
je 0x14003c977
lea rcx, [rbp]
call fcn.140043680
movzx r12d, byte [rsp + 0x40]
jmp 0x14003c982
xor r12b, r12b
mov rcx, r15
call qword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
nop
lea rdx, [rbx - 0x18]
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14003c9a7
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + VariantCopy]
nop
test r13, r13
je 0x14003c9bc
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_CloseHandle]
xor edx, edx
mov qword [rsp + 0x50], rdx
mov rax, qword [rsp + 0x58]
lea rdx, [rax - 0x18]
lock xadd dword [rdx + 0x10], edi
dec edi
test edi, edi
jg 0x14003c9d9
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + VariantCopy]
movzx eax, r12b
jmp 0x14003ca1b
mov ecx, 0x80070057
call fcn.1400022b0
nop
test r13, r13
je 0x14003c9fd
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rsp + 0x50], r14
or rdi, 0xffffffffffffffff
lea rdx, [rbx - 0x18]
lock xadd dword [rdx + 0x10], edi
dec edi
test edi, edi
jg 0x14003ca19
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + VariantCopy]
xor al, al
mov rcx, qword [rbp + 0x90]
xor rcx, rsp
call fcn.1400d4d90
add rsp, 0x1a8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret