Function at 0x54ee94
Capabilities:
Get disk information via ioctl
Get storage device properties

Disassembly:
push ebp
push ebx
push edi
mov edx, 0x1d07
sub esp, 4
mov dword [esp], 0
dec edx
jne 0x54ee9c
call fcn.00417e10
mov ebx, dword [esp + 0x742c]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
lea eax, [ebp + 0x18c]
mov edx, 0x4d302e
push edx
push 4
push eax
call fcn.00417db0
mov ebx, dword [esp + 0x742c]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
mov dword [ebp + 0x1b0], 0xffffffff
mov ebx, dword [esp + 0x742c]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
lea eax, [ebp + 0x304]
mov edx, 0x4d302e
push edx
push 0x104
push eax
call fcn.00417db0
mov ebx, dword [esp + 0x742c]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
mov dword [ebp + 0x1b4], 0xffffffff
mov ebx, dword [esp + 0x742c]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
lea eax, [ebp + 0x1a4]
mov edx, 0x4d302e
push edx
push 4
push eax
call fcn.00417db0
push edx
call fcn.00417fa0
pop edx
push eax
push 0
push 0
push 3
push 0
push 3
push 0
push edx
call fcn.00417fa0
pop edx
push eax
mov edx, str.._
push edx
call fcn.00417eb0
push edx
call fcn.00417fa0
pop edx
push eax
push edx
call fcn.00417fa0
pop edx
push eax
mov ebx, dword [esp + 0x7454]
add ebx, 0x40
push ebx
call fcn.004159c0
pop eax
mov edx, 0x4d36fc
push edx
call fcn.00417eb0
call fcn.004011f2
add dword [esp], edx
call sub.KERNEL32.dll_CreateFileW
call fcn.00401220
cdq
push edx
push eax
pop dword [esp + 8]
pop dword [esp + 8]
push dword [esp + 8]
push dword [esp + 8]
pop ebx
pop edi
cmp ebx, 0xffffffff
jne 0x54f00a
cmp edi, 0xffffffff
jne 0x54f00a
xor eax, eax
jmp 0x54f00f
mov eax, 1
or eax, eax
je 0x54f638
push 0
lea eax, [esp + 0x458]
push eax
push 0xc
lea eax, [esp + 0x454]
push eax
push 0
push 0
push 0x2d1080
mov eax, dword [esp + 0x20]
push eax
call sub.KERNEL32.dll_DeviceIoControl
and eax, eax
je 0x54f25f
lea ebp, [esp + 0x448]
push dword [ebp + 4]
mov ebx, dword [esp + 0x7430]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
pop eax
mov dword [ebp + 0x1b0], eax
lea ebp, [esp + 0x448]
push dword [ebp + 8]
mov ebx, dword [esp + 0x7430]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
pop eax
mov dword [ebp + 0x1b4], eax
mov ebx, dword [esp + 0x742c]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
mov ebx, dword [ebp + 0x1b0]
and ebx, ebx
jl 0x54f233
push edx
call fcn.00417fa0
pop edx
push eax
push edx
call fcn.00417fa0
pop edx
push eax
mov ebx, dword [esp + 0x7434]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
mov eax, dword [ebp + 0x1b0]
cdq
push edx
push eax
call fcn.00416b50
mov ebx, dword [esp + 0x7430]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
lea eax, [ebp + 0x1a4]
push 4
push eax
call fcn.00417d70
mov ebx, dword [esp + 0x742c]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
mov ebx, dword [ebp + 0x1b4]
and ebx, ebx
jl 0x54f1d2
mov ebx, dword [esp + 0x742c]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
lea edx, [ebp + 0x1a4]
push edx
call fcn.00417fa0
pop edx
push eax
push 4
push edx
call fcn.00417e50
mov edx, 0x4d36fc
push edx
call fcn.00417eb0
push edx
call fcn.00417fa0
pop edx
push eax
push edx
call fcn.00417fa0
pop edx
push eax
mov ebx, dword [esp + 0x7438]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
mov eax, dword [ebp + 0x1b4]
cdq
push edx
push eax
call fcn.00416b50
pop eax
mov ebx, dword [esp + 0x7430]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
lea eax, [ebp + 0x1a4]
push 4
push eax
call fcn.00417d70
jmp 0x54f231
mov ebx, dword [esp + 0x742c]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
lea edx, [ebp + 0x1a4]
push edx
call fcn.00417fa0
pop edx
push eax
push 4
push edx
call fcn.00417e50
mov edx, 0x4d74ba
push edx
call fcn.00417eb0
mov ebx, dword [esp + 0x7430]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
lea eax, [ebp + 0x1a4]
push 4
push eax
call fcn.00417d70
jmp 0x54f25f
mov ebx, dword [esp + 0x742c]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
lea eax, [ebp + 0x1a4]
mov edx, 0x4d302e
push edx
push 4
push eax
call fcn.00417db0
mov dword [esp + 0x14], 0
jmp 0x54f269
mov eax, 0x3ff
cmp eax, dword [esp + 0x14]
jl 0x54f28a
lea ebp, [esp + 0x24]
push ebp
mov eax, dword [esp + 0x18]
pop ebp
add ebp, eax
mov byte [ebp + 0x23], 0
inc dword [esp + 0x14]
jno 0x54f269
push 0
lea eax, [esp + 4]
push eax
push 0x423
lea eax, [esp + 0x30]
push eax
push 0xc
lea eax, [esp + 0x2c]
push eax
push 0x2d1400
mov eax, dword [esp + 0x20]
push eax
call sub.KERNEL32.dll_DeviceIoControl
and eax, eax
je 0x54f462
lea ebp, [esp + 0x24]
cmp dword [ebp + 0xc], 0
je 0x54f344
push edx
call fcn.00417fa0
pop edx
push eax
push edx
call fcn.00417fa0
pop edx
push eax
push edx
call fcn.00417fa0
pop edx
push eax
push edx
call fcn.00417fa0
pop edx
push eax
push 0x18
push 0xffffffff
lea eax, [esp + 0x3c]
mov ebx, eax
lea ebp, [esp + 0x3c]
add ebx, dword [ebp + 0xc]
push ebx
call fcn.00417850
call fcn.004011f2
add dword [esp], edx
call fcn.00417440
mov edx, 0x4d3342
push edx
call fcn.00417eb0
mov ebx, dword [esp + 0x7430]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
lea eax, [ebp + 0x304]
push 0x104
push eax
call fcn.00417d70
lea ebp, [esp + 0x24]
cmp dword [ebp + 0x10], 0
je 0x54f3f1
mov ebx, dword [esp + 0x742c]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
lea edx, [ebp + 0x304]
push edx
call fcn.00417fa0
pop edx
push eax
push 0x104
push edx
call fcn.00417e50
push edx
call fcn.00417fa0
pop edx
push eax
push edx
call fcn.00417fa0
pop edx
push eax
push edx
call fcn.00417fa0
pop edx
push eax
push edx
call fcn.00417fa0
pop edx
push eax
push 0x18
push 0xffffffff
lea eax, [esp + 0x40]
mov ebx, eax
lea ebp, [esp + 0x40]
add ebx, dword [ebp + 0x10]
push ebx
call fcn.00417850
call fcn.004011f2
add dword [esp], edx
call fcn.00417440
pop eax
mov ebx, dword [esp + 0x7430]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
lea eax, [ebp + 0x304]
push 0x104
push eax
call fcn.00417d70
push edx
call fcn.00417fa0
pop edx
push eax
push edx
call fcn.00417fa0
pop edx
push eax
mov ebx, dword [esp + 0x7434]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
lea edx, [ebp + 0x304]
push edx
call fcn.00417fa0
pop edx
push eax
push 0x104
push edx
call fcn.00417e50
call fcn.004011f2
add dword [esp], edx
call fcn.00417440
mov ebx, dword [esp + 0x7430]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
lea eax, [ebp + 0x304]
push 0x104
push eax
call fcn.00417d70
mov ebx, dword [esp + 0x742c]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
mov ebx, dword [ebp + 0x1b0]
and ebx, ebx
jl 0x54f627
push edx
call fcn.00417fa0
pop edx
push eax
push 0
push 0
push 3
push 0
push 3
push 0
push edx
call fcn.00417fa0
pop edx
push eax
mov edx, str..PhysicalDrive
push edx
call fcn.00417eb0
mov ebx, dword [esp + 0x744c]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
push edx
call fcn.00417fa0
pop edx
push eax
push edx
call fcn.00417fa0
pop edx
push eax
mov eax, dword [ebp + 0x1b0]
cdq
push edx
push eax
call fcn.00416b50
pop eax
call fcn.004011f2
add dword [esp], edx
call sub.KERNEL32.dll_CreateFileW
call fcn.00401220
cdq
push edx
push eax
pop dword [esp + 0x10]
pop dword [esp + 0x10]
push dword [esp + 0x10]
push dword [esp + 0x10]
pop ebx
pop edi
cmp ebx, 0xffffffff
jne 0x54f527
cmp edi, 0xffffffff
jne 0x54f527
xor eax, eax
jmp 0x54f52c
mov eax, 1
or eax, eax
je 0x54f61d
push 0
lea eax, [esp + 0x741c]
push eax
push 0x6fc0
lea eax, [esp + 0x464]
push eax
push 0
push 0
push 0x70050
mov eax, dword [esp + 0x28]
push eax
call sub.KERNEL32.dll_DeviceIoControl
and eax, eax
je 0x54f61d
lea ebp, [esp + 0x458]
push dword [ebp]
xor ebx, ebx
cmp ebx, dword [esp]
jne 0x54f5ae
mov ebx, dword [esp + 0x7430]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
lea eax, [ebp + 0x18c]
mov edx, 0x4d7632
push edx
push 4
push eax
call fcn.00417db0
jmp 0x54f61c
mov ebx, 1
cmp ebx, dword [esp]
jne 0x54f5e6
mov ebx, dword [esp + 0x7430]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
lea eax, [ebp + 0x18c]
mov edx, 0x4d4b40
push edx
push 4
push eax
call fcn.00417db0
jmp 0x54f61c
mov ebx, 2
cmp ebx, dword [esp]
jne 0x54f61c
mov ebx, dword [esp + 0x7430]
mov ebp, dword [0x51ecbc]
imul ebx, ebx, 0x510
add ebp, ebx
lea eax, [ebp + 0x18c]
mov edx, 0x4d99d6
push edx
push 4
push eax
call fcn.00417db0
pop eax
mov eax, dword [esp + 0xc]
push eax
call sub.KERNEL32.dll_CloseHandle
mov eax, dword [esp + 4]
push eax
call sub.KERNEL32.dll_CloseHandle
mov eax, 1
jmp 0x54f63e
xor eax, eax
jmp 0x54f63e
add esp, 0x741c
pop edi
pop ebx
pop ebp
ret 4