Function at 0x45d020
Capabilities:
Get disk information via ioctl

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x284
mov eax, dword [0x48794c]
xor eax, ebp
mov dword [ebp - 4], eax
mov dword [ebp - 0x284], ecx
cmp dword [0x499ec0], 0
jne 0x45d047
jmp 0x45d42d
push 0x12
push 0
push 0
push 0x4781f4
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsW]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], 0x1c
mov dword [ebp - 0x28], 1
mov dword [ebp - 0x2c], 0
jmp 0x45d07b
mov eax, dword [ebp - 0x2c]
add eax, 1
mov dword [ebp - 0x2c], eax
lea ecx, [ebp - 0x20]
push ecx
mov edx, dword [ebp - 0x2c]
push edx
push 0x4781f4
push 0
mov eax, dword [ebp - 0x24]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInterfaces]
test eax, eax
je 0x45d423
cmp dword [ebp - 0x28], 0
je 0x45d423
mov dword [ebp - 0x1d0], 0
push 0
lea ecx, [ebp - 0x1d0]
push ecx
push 0
push 0
lea edx, [ebp - 0x20]
push edx
mov eax, dword [ebp - 0x24]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInterfaceDetailW]
mov ecx, dword [ebp - 0x1d0]
push ecx
call fcn.0040e234
add esp, 4
mov dword [ebp - 0x278], eax
mov edx, dword [ebp - 0x278]
mov dword [ebp - 0x1cc], edx
mov eax, dword [ebp - 0x1cc]
mov dword [ebp - 0x204], eax
mov ecx, dword [ebp - 0x204]
mov dword [ecx], 6
mov dword [ebp - 0x1f8], 0x1c
lea edx, [ebp - 0x1f8]
push edx
lea eax, [ebp - 0x1d0]
push eax
mov ecx, dword [ebp - 0x1d0]
push ecx
mov edx, dword [ebp - 0x204]
push edx
lea eax, [ebp - 0x20]
push eax
mov ecx, dword [ebp - 0x24]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInterfaceDetailW]
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
jne 0x45d161
mov edx, dword [ebp - 0x1cc]
mov dword [ebp - 0x27c], edx
mov eax, dword [ebp - 0x27c]
push eax
call fcn.0040e26e
add esp, 4
jmp 0x45d423
mov ecx, dword [ebp - 0x1e4]
mov dword [ebp - 0x1c8], ecx
mov edx, dword [ebp - 0x1e4]
mov dword [ebp - 0x20c], edx
mov dword [ebp - 0x200], 0
push 0
mov eax, dword [ebp - 0x20c]
push eax
lea ecx, [ebp - 0x20c]
push ecx
call dword [sym.imp.SETUPAPI.dll_CM_Get_Parent]
test eax, eax
jne 0x45d263
cmp dword [ebp - 0x200], 0
jne 0x45d263
mov dword [ebp - 0x26c], 0x58
push 0
lea edx, [ebp - 0x26c]
push edx
lea eax, [ebp - 0x268]
push eax
push 0
push 0xa
mov ecx, dword [ebp - 0x20c]
push ecx
call dword [sym.imp.SETUPAPI.dll_CM_Get_DevNode_Registry_PropertyW]
mov edx, dword [0x499eb8]
mov dword [ebp - 0x200], edx
cmp dword [ebp - 0x200], 0
je 0x45d25e
mov eax, dword [ebp - 0x200]
add eax, 0x12
push eax
lea ecx, [ebp - 0x268]
push ecx
call fcn.00440f5c
add esp, 8
test eax, eax
jne 0x45d24a
mov edx, dword [ebp - 0x204]
add edx, 4
push edx
mov eax, dword [ebp - 0x200]
add eax, 0x190
push eax
call fcn.0045e190
add esp, 8
mov ecx, dword [ebp - 0x200]
mov edx, dword [ebp - 0x1e4]
mov dword [ecx + 0x3a8], edx
mov eax, dword [ebp - 0x200]
mov byte [eax + 0x818], 1
jmp 0x45d25e
mov ecx, dword [ebp - 0x200]
mov edx, dword [ecx + 0x81c]
mov dword [ebp - 0x200], edx
jmp 0x45d1e5
jmp 0x45d183
mov eax, dword [ebp - 0x1cc]
mov dword [ebp - 0x280], eax
mov ecx, dword [ebp - 0x280]
push ecx
call fcn.0040e26e
add esp, 4
cmp dword [ebp - 0x200], 0
jne 0x45d28c
jmp 0x45d072
mov dword [ebp - 0x1c4], 0xffffffff
push 0
push 0xc8
lea edx, [ebp - 0x1c0]
push edx
mov eax, dword [ebp - 0x1c8]
push eax
call dword [sym.imp.SETUPAPI.dll_CM_Get_Device_IDW]
test eax, eax
jne 0x45d2f9
lea ecx, [ebp - 0x1c0]
push ecx
call fcn.00440a2e
add esp, 4
mov dword [ebp - 0x270], eax
mov edx, dword [ebp - 0x270]
movzx eax, word [ebp + edx*2 - 0x1c4]
cmp eax, 0x26
jne 0x45d2f9
mov ecx, dword [ebp - 0x270]
lea edx, [ebp + ecx*2 - 0x1c2]
push edx
call fcn.004446f2
add esp, 4
mov dword [ebp - 0x1c4], eax
push 0
push 0
push 3
push 0
push 2
push 0
mov eax, dword [ebp - 0x200]
add eax, 0x190
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x208], eax
cmp dword [ebp - 0x208], 0xffffffff
jne 0x45d32b
jmp 0x45d072
push 0
lea ecx, [ebp - 0x1d0]
push ecx
push 0xc
lea edx, [ebp - 0x1dc]
push edx
push 0
push 0
push 0x2d1080
mov eax, dword [ebp - 0x208]
push eax
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
mov dword [ebp - 0x28], eax
mov ecx, dword [ebp - 0x208]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0x28], 0
jne 0x45d36e
jmp 0x45d423
mov edx, dword [ebp - 0x1d8]
mov dword [ebp - 0x1fc], edx
cmp dword [ebp - 0x1c4], 0xffffffff
je 0x45d3be
cmp dword [ebp - 0x1c4], 4
jge 0x45d3be
mov eax, dword [ebp - 0x1c4]
mov ecx, dword [ebp - 0x200]
mov edx, dword [ecx + eax*4 + 0x398]
mov dword [ebp - 0x1fc], edx
mov eax, dword [ebp - 0x1c4]
mov ecx, dword [ebp - 0x200]
mov edx, dword [ebp - 0x1d8]
mov dword [ecx + eax*4 + 0x398], edx
mov dword [ebp - 0x274], 0
jmp 0x45d3d9
mov eax, dword [ebp - 0x274]
add eax, 1
mov dword [ebp - 0x274], eax
cmp dword [ebp - 0x274], 4
jge 0x45d41e
cmp dword [ebp - 0x1fc], 0xffffffff
je 0x45d41e
mov ecx, dword [ebp - 0x274]
mov edx, dword [ebp - 0x200]
cmp dword [edx + ecx*4 + 0x398], 0xffffffff
jne 0x45d41c
mov eax, dword [ebp - 0x274]
mov ecx, dword [ebp - 0x200]
mov edx, dword [ebp - 0x1fc]
mov dword [ecx + eax*4 + 0x398], edx
jmp 0x45d41e
jmp 0x45d3ca
jmp 0x45d072
mov eax, dword [ebp - 0x24]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0043ea11
mov esp, ebp
pop ebp
ret