Function at 0x413940
Capabilities:
Get disk information via ioctl

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x878
mov eax, dword [0x5a0fe0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
xor esi, esi
push 0x12
push esi
xorps xmm0, xmm0
mov dword [ebp - 0x854], edi
push esi
push 0x56e8cc
mov dword [ebp - 0x820], 0x1c
movups xmmword [ebp - 0x81c], xmm0
movq qword [ebp - 0x80c], xmm0
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsW]
mov ebx, eax
mov dword [ebp - 0x84c], ebx
cmp ebx, 0xffffffff
jne 0x4139b2
call dword [sym.imp.KERNEL32.dll_GetLastError]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00402315
mov esp, ebp
pop ebp
ret 4
lea eax, [ebp - 0x820]
mov dword [ebp - 0x850], esi
push eax
push 0
push ebx
mov dword [ebp - 0x85c], esi
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
test eax, eax
je 0x413c77
nop word [eax + eax]
push 0x7fe
lea eax, [ebp - 0x804]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov dword [ebp - 0x860], 0x7fe
lea eax, [ebp - 0x860]
push eax
push 0x7fe
lea eax, [ebp - 0x804]
push eax
lea eax, [ebp - 0x878]
push eax
push 0xc
lea eax, [ebp - 0x820]
push eax
push ebx
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyA]
test eax, eax
je 0x413c53
lea eax, [ebp - 0x804]
push 0x4bdff4
push eax
call sub.VCRUNTIME140.dll_strstr
add esp, 8
test eax, eax
je 0x413c53
xorps xmm0, xmm0
mov dword [ebp - 0x83c], 0x1c
xor esi, esi
movq qword [ebp - 0x828], xmm0
movups xmmword [ebp - 0x838], xmm0
nop dword [eax]
lea eax, [ebp - 0x83c]
push eax
push esi
push 0x56e8cc
lea eax, [ebp - 0x820]
push eax
push ebx
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInterfaces]
inc esi
mov dword [ebp - 0x874], esi
test eax, eax
jne 0x413ab6
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
cmp esi, 0x4e0
je 0x413c53
cmp esi, 0x103
je 0x413c53
xor ebx, ebx
lea eax, [ebp - 0x850]
push ebx
push eax
push ebx
push ebx
lea eax, [ebp - 0x83c]
mov dword [ebp - 0x858], ebx
push eax
push dword [ebp - 0x84c]
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInterfaceDetailW]
test eax, eax
jne 0x413b0c
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
cmp esi, 0x7a
jne 0x413c4d
push dword [ebp - 0x850]
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov ebx, eax
mov dword [ebp - 0x858], ebx
mov dword [ebx], 6
push 0
push 0
push dword [ebp - 0x850]
lea eax, [ebp - 0x83c]
push ebx
push eax
push dword [ebp - 0x84c]
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInterfaceDetailW]
test eax, eax
je 0x413c3e
push 0
push 0
push 3
push 0
push 3
push 0
lea eax, [ebx + 4]
mov dword [ebp - 0x864], 0
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
push 0
lea ecx, [ebp - 0x864]
mov dword [ebp - 0x870], eax
push ecx
push 0xc
lea ecx, [ebp - 0x848]
push ecx
push 0
push 0
push 0x2d1080
push eax
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x413c1a
mov edx, dword [edi + 4]
mov eax, 0x2aaaaaab
mov ecx, dword [edi]
sub edx, ecx
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x413c1a
xor esi, esi
mov ebx, esi
nop
mov eax, dword [ebp - 0x844]
mov edi, ecx
cmp eax, dword [esi + ecx + 4]
jne 0x413be9
push 0xffffffffffffffff
lea eax, [ebp - 0x804]
push eax
lea eax, [ebp - 0x86c]
push eax
call dword [sym.imp.Qt5Core.dll_public:_static_class_QString___cdecl_QString::fromLocal8Bit_char_const___int_]
mov edi, dword [ebp - 0x854]
add esp, 0xc
mov ecx, dword [edi]
add ecx, 8
push eax
add ecx, esi
call dword [sym.imp.Qt5Core.dll_public:_class_QString____thiscall_QString::operator_class_QString__]
lea ecx, [ebp - 0x86c]
call dword [sym.imp.Qt5Core.dll_public:_void___thiscall_QString::destructor_void_]
mov edi, dword [edi]
mov eax, dword [ebp - 0x854]
inc ebx
add esi, 0xc
mov ecx, edi
mov edx, dword [eax + 4]
mov eax, 0x2aaaaaab
sub edx, edi
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jb 0x413ba0
mov ebx, dword [ebp - 0x858]
mov edi, dword [ebp - 0x854]
push dword [ebp - 0x870]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push ebx
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov ebx, dword [ebp - 0x84c]
mov esi, dword [ebp - 0x874]
jmp 0x413a70
call dword [sym.imp.KERNEL32.dll_GetLastError]
push ebx
mov esi, eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov ebx, dword [ebp - 0x84c]
mov eax, dword [ebp - 0x85c]
lea ecx, [ebp - 0x820]
inc eax
push ecx
push eax
push ebx
mov dword [ebp - 0x85c], eax
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
test eax, eax
jne 0x4139e0
push ebx
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
mov ecx, dword [ebp - 4]
mov eax, esi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00402315
mov esp, ebp
pop ebp
ret 4