Function at 0x1400a5f2c
Capabilities:
Get disk information via ioctl
Get storage device properties
Link many functions at runtime

Disassembly:
mov qword [rsp + 8], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x320
mov rax, qword [0x14028b7c8]
xor rax, rsp
mov qword [rsp + 0x310], rax
lea rcx, str.setupapi.dll
mov qword [rsp + 0x88], r9
mov qword [rsp + 0x90], r8
mov dword [rsp + 0x68], edx
xor ebp, ebp
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
lea rcx, str.cfgmgr32.dll
mov rdi, rax
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov rbx, rax
test rdi, rdi
je 0x1400a640d
test rax, rax
je 0x1400a640d
lea rdx, str.SetupDiGetClassDevsA
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.SetupDiDestroyDeviceInfoList
mov rcx, rdi
mov rsi, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.SetupDiEnumDeviceInterfaces
mov rcx, rdi
mov r15, rax
mov qword [rsp + 0x80], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.SetupDiGetDeviceInterfaceDetailA
mov rcx, rdi
mov r14, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.SetupDiGetDeviceInstanceIdA
mov rcx, rdi
mov r12, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.CM_Locate_DevNodeA
mov rcx, rbx
mov qword [rsp + 0x60], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.CM_Get_Parent
mov rcx, rbx
mov rdi, rax
mov qword [rsp + 0x78], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.CM_Get_Device_ID_Size
mov rcx, rbx
mov r13, rax
mov qword [rsp + 0xa0], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.CM_Get_Device_IDA
mov rcx, rbx
mov qword [rsp + 0x70], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsp + 0x98], rax
test rsi, rsi
je 0x1400a640d
test r15, r15
je 0x1400a640d
test r14, r14
je 0x1400a640d
test r12, r12
je 0x1400a640d
mov rbx, qword [rsp + 0x60]
test rbx, rbx
je 0x1400a640d
test rdi, rdi
je 0x1400a640d
test r13, r13
je 0x1400a640d
cmp qword [rsp + 0x70], rbp
je 0x1400a640d
test rax, rax
je 0x1400a640d
lea r9d, [rbp + 0x12]
lea rcx, [0x1401d4210]
xor r8d, r8d
xor edx, edx
call rsi
mov rdi, rax
cmp rax, 0xffffffffffffffff
je 0x1400a640d
lea eax, [rbp + 0x20]
lea r8, [0x1401d4210]
xor r9d, r9d
mov dword [rsp + 0xc8], eax
mov dword [rsp + 0xe8], eax
lea rax, [rsp + 0xc8]
xor edx, edx
mov rcx, rdi
xor r13d, r13d
mov qword [rsp + 0x20], rax
call r14
test eax, eax
je 0x1400a6407
mov r15, r12
and qword [rsp + 0x28], 0
lea rax, [rsp + 0x48]
lea rdx, [rsp + 0xc8]
xor r9d, r9d
xor r8d, r8d
mov rcx, rdi
mov qword [rsp + 0x20], rax
call r15
mov ecx, dword [rsp + 0x48]
call fcn.140158508
lea rdx, [rsp + 0xc8]
mov rcx, rdi
mov dword [rax], 8
mov r9d, dword [rsp + 0x48]
mov r12, rax
lea rax, [rsp + 0xe8]
mov r8, r12
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x48]
mov qword [rsp + 0x20], rax
call r15
test eax, eax
je 0x1400a63cd
and qword [rsp + 0x30], 0
and dword [rsp + 0x28], 0
xor r9d, r9d
lea r8d, [r9 + 3]
lea rcx, [r12 + 4]
mov edx, 0xc0000000
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.dll_CreateFileA]
mov rsi, rax
cmp rax, 0xffffffffffffffff
je 0x1400a63cd
xor eax, eax
lea r8, [rsp + 0xb8]
mov r9d, reloc.OLEAUT32.dll_VariantTimeToDosDateTime
mov qword [rsp + 0x38], rax
mov dword [rsp + 0x40], eax
mov dword [rsp + 0xb8], eax
mov dword [rsp + 0xbc], eax
lea rax, [rsp + 0x50]
mov edx, 0x2d1400
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x110]
mov rcx, rsi
mov dword [rsp + 0x28], 0x200
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x1400a63c4
cmp dword [rsp + 0x12c], 7
jne 0x1400a63c4
and qword [rsp + 0x38], 0
lea rax, [rsp + 0x50]
xor r9d, r9d
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0xa8]
xor r8d, r8d
mov edx, 0x2d1080
mov rcx, rsi
mov dword [rsp + 0x28], reloc.OLEAUT32.dll_VariantTimeToDosDateTime
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x1400a63c4
mov eax, dword [rsp + 0x68]
cmp dword [rsp + 0xac], eax
jne 0x1400a63c4
and dword [rsp + 0x44], 0
lea rax, [rsp + 0x44]
lea rdx, [rsp + 0xe8]
xor r9d, r9d
xor r8d, r8d
mov rcx, rdi
mov qword [rsp + 0x20], rax
call rbx
mov ecx, dword [rsp + 0x44]
call fcn.140158508
mov r9d, dword [rsp + 0x44]
lea rdx, [rsp + 0xe8]
mov rbx, rax
lea rax, [rsp + 0x44]
mov rcx, rdi
mov r8, rbx
mov qword [rsp + 0x20], rax
call qword [rsp + 0x60]
test eax, eax
je 0x1400a63b7
lea rcx, [rsp + 0x58]
xor r8d, r8d
mov rdx, rbx
call qword [rsp + 0x78]
test eax, eax
jne 0x1400a63b7
mov edx, dword [rsp + 0x58]
lea rcx, [rsp + 0x4c]
xor r8d, r8d
call qword [rsp + 0xa0]
test eax, eax
jne 0x1400a63b7
mov edx, dword [rsp + 0x4c]
lea rcx, [rsp + 0x40]
xor r8d, r8d
call qword [rsp + 0x70]
test eax, eax
jne 0x1400a63b7
mov r8d, dword [rsp + 0x40]
inc r8d
mov dword [rsp + 0x40], r8d
cmp r8d, dword [rsp + 0x44]
jbe 0x1400a6347
mov rcx, rbx
call fcn.140158604
mov ecx, dword [rsp + 0x40]
call fcn.140158508
mov r8d, dword [rsp + 0x40]
mov rbx, rax
mov ecx, dword [rsp + 0x4c]
xor r9d, r9d
mov rdx, rbx
call qword [rsp + 0x98]
test eax, eax
jne 0x1400a63b7
lea rdx, str.VID_
mov rcx, rbx
call fcn.140158078
test rax, rax
je 0x1400a6387
mov r8, qword [rsp + 0x90]
lea rdx, str.VID__X
mov rcx, rax
call fcn.1401581b0
lea rdx, str.PID_
mov rcx, rbx
call fcn.140158078
test rax, rax
je 0x1400a63b2
mov r8, qword [rsp + 0x88]
lea rdx, str.PID__X
mov rcx, rax
call fcn.1401581b0
mov ebp, 1
mov rcx, rbx
call fcn.140158604
mov rbx, qword [rsp + 0x60]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, r12
call fcn.140158604
lea rax, [rsp + 0xc8]
inc r13d
lea r8, [0x1401d4210]
mov r9d, r13d
xor edx, edx
mov rcx, rdi
mov qword [rsp + 0x20], rax
call r14
test eax, eax
jne 0x1400a611b
mov r15, qword [rsp + 0x80]
mov rcx, rdi
call r15
mov eax, ebp
mov rcx, qword [rsp + 0x310]
xor rcx, rsp
call fcn.140156fd0
mov rbx, qword [rsp + 0x360]
add rsp, 0x320
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret