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

Disassembly:
push ebp
mov ebp, esp
push edi
push ebx
mov eax, 0x1670
call fcn.0040f760
movzx eax, byte [0x413411]
mov byte [ebp - 0x148], al
lea edx, [ebp - 0x147]
mov eax, 0x7f
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov dword [esp], edx
call sym._memset
movzx eax, word [0x413491]
mov word [ebp - 0x99a], ax
lea ecx, [ebp - 0x15b8]
mov edx, str.Unknown
mov eax, 0xc00
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], ecx
call sym._memcpy
lea edi, [ebp - 0x1608]
cld
mov edx, 0
mov eax, 0xa
mov ecx, eax
mov eax, edx
rep stosd dword es:[edi], eax
mov dword [ebp - 0x15d8], 0
mov dword [ebp - 0x15d4], 0
mov dword [esp + 4], str.MaxReserved
lea eax, [ebp - 0x15b8]
add eax, 0xbe8
mov dword [esp], eax
call sym._sprintf
mov eax, dword [ebp + 8]
mov dword [esp + 8], eax
mov dword [esp + 4], str..PHYSICALDRIVE_d
lea eax, [ebp - 0x38]
mov dword [esp], eax
call sym._wsprintfA
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 3
mov dword [esp + 4], 0xc0000000
lea eax, [ebp - 0x38]
mov dword [esp], eax
call sym._CreateFileA_28
sub esp, 0x1c
mov dword [ebp - 0x9a8], eax
cmp dword [ebp - 0x9a8], 0xffffffff
jne 0x4030ed
mov dword [ebp - 0x164c], 1
jmp 0x4037b9
mov dword [esp + 0x1c], 0
lea eax, [ebp - 0x160c]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], 0x28
lea eax, [ebp - 0x1608]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0xc
lea eax, [ebp - 0x15d8]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x2d1400
mov eax, dword [ebp - 0x9a8]
mov dword [esp], eax
call sym._DeviceIoControl_32
sub esp, 0x20
mov dword [ebp - 0x9ac], eax
cmp dword [ebp - 0x9ac], 0
je 0x40332b
lea eax, [ebp - 0x988]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym._ReadPhysicalDriveInNTWithZeroRights
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym._devs_ud
cmp eax, 1
jne 0x40318a
mov dword [esp + 4], 0x4134b4
lea eax, [ebp - 0x99a]
mov dword [esp], eax
call sym._sprintf
cmp dword [ebp + 0xc], 2
jle 0x4031ee
mov dword [esp + 4], str.__ALL
mov eax, dword [ebp + 0x10]
add eax, 8
mov eax, dword [eax]
mov dword [esp], eax
call sym._stricmp
test eax, eax
je 0x4031ee
lea ecx, [ebp - 0x15b8]
mov edx, dword [ebp - 0x15ec]
mov eax, edx
add eax, eax
add eax, edx
shl eax, 3
lea eax, [ecx + eax]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x10]
add eax, 8
mov eax, dword [eax]
add eax, 2
mov dword [esp], eax
call sym._stricmp
test eax, eax
je 0x4031ee
mov dword [ebp - 0x164c], 1
jmp 0x4037b9
cmp dword [ebp + 0xc], 3
jle 0x403228
mov dword [esp + 4], str.__REMOVABLE
mov eax, dword [ebp + 0x10]
add eax, 0xc
mov eax, dword [eax]
mov dword [esp], eax
call sym._stricmp
test eax, eax
jne 0x403228
cmp byte [ebp - 0x15fe], 0
jne 0x403228
mov dword [ebp - 0x164c], 1
jmp 0x4037b9
cmp dword [ebp + 0xc], 3
jle 0x403262
mov dword [esp + 4], str.__FIXED
mov eax, dword [ebp + 0x10]
add eax, 0xc
mov eax, dword [eax]
mov dword [esp], eax
call sym._stricmp
test eax, eax
jne 0x403262
cmp byte [ebp - 0x15fe], 0
je 0x403262
mov dword [ebp - 0x164c], 1
jmp 0x4037b9
cmp dword [ebp + 0xc], 4
jle 0x4032ad
mov dword [esp + 4], str.__UD
mov eax, dword [ebp + 0x10]
add eax, 0x10
mov eax, dword [eax]
mov dword [esp], eax
call sym._stricmp
test eax, eax
jne 0x4032ad
mov dword [esp + 4], 0x4134b4
lea eax, [ebp - 0x99a]
mov dword [esp], eax
call sym._stricmp
test eax, eax
je 0x4032ad
mov dword [ebp - 0x164c], 1
jmp 0x4037b9
mov eax, dword [ebp + 8]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x4134d5
lea eax, [ebp - 0xc0]
mov dword [esp], eax
call sym._sprintf
lea ecx, [ebp - 0x15b8]
mov edx, dword [ebp - 0x15ec]
mov eax, edx
add eax, eax
add eax, edx
shl eax, 3
lea eax, [ecx + eax]
mov dword [esp + 4], eax
lea eax, [ebp - 0x168]
mov dword [esp], eax
call sym._sprintf
cmp byte [ebp - 0x15fe], 0
je 0x403309
mov dword [ebp - 0x1650], str.REMOVABLE
jmp 0x403313
mov dword [ebp - 0x1650], str.FIXED
mov eax, dword [ebp - 0x1650]
mov dword [esp + 4], eax
lea eax, [ebp - 0x188]
mov dword [esp], eax
call sym._sprintf
mov dword [esp + 0x1c], 0
lea eax, [ebp - 0x160c]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], 0x28
lea eax, [ebp - 0x1648]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x700a0
mov eax, dword [ebp - 0x9a8]
mov dword [esp], eax
call sym._DeviceIoControl_32
sub esp, 0x20
mov dword [ebp - 0x9ac], eax
mov eax, dword [ebp - 0x9a8]
mov dword [esp], eax
call sym._CloseHandle_4
sub esp, 4
lea eax, [ebp - 0xb8]
mov dword [esp + 4], eax
mov dword [esp], pe_nt_image_headers32
call sym._GetLogicalDriveStringsA_8
sub esp, 8
lea eax, [ebp - 0xb8]
mov dword [ebp - 0xbc], eax
mov eax, dword [ebp - 0xbc]
cmp byte [eax], 0
je 0x40353c
mov eax, dword [ebp - 0xbc]
mov dword [esp], eax
call sym._GetDriveTypeA_4
sub esp, 4
cmp eax, 3
setne al
movzx ebx, al
mov eax, dword [ebp - 0xbc]
mov dword [esp], eax
call sym._GetDriveTypeA_4
sub esp, 4
cmp eax, 2
setne al
movzx eax, al
and eax, ebx
test eax, eax
je 0x403402
jmp 0x40351c
mov eax, dword [ebp - 0xbc]
movsx eax, byte [eax]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x4134e8
lea eax, [ebp - 0x38]
mov dword [esp], eax
call sym._wsprintfA
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 3
mov dword [esp + 4], 0xc0000000
lea eax, [ebp - 0x38]
mov dword [esp], eax
call sym._CreateFileA_28
sub esp, 0x1c
mov dword [ebp - 0x9a8], eax
mov dword [esp + 0x1c], 0
lea eax, [ebp - 0x9a4]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], 0xc
lea eax, [ebp - 0x15c8]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x2d1080
mov eax, dword [ebp - 0x9a8]
mov dword [esp], eax
call sym._DeviceIoControl_32
sub esp, 0x20
test eax, eax
jne 0x4034ca
mov eax, dword [ebp - 0x9a8]
mov dword [esp], eax
call sym._CloseHandle_4
sub esp, 4
jmp 0x40351c
mov eax, dword [ebp - 0x15c4]
cmp eax, dword [ebp + 8]
jne 0x40350b
mov dword [esp + 8], 0x4133b6
mov dword [esp + 4], 0x4130dc
mov eax, dword [ebp - 0xbc]
mov dword [esp], eax
call sym._StrReplace
mov eax, dword [ebp - 0xbc]
mov dword [esp + 4], eax
lea eax, [ebp - 0x148]
mov dword [esp], eax
call sym._strcat
mov eax, dword [ebp - 0x9a8]
mov dword [esp], eax
call sym._CloseHandle_4
sub esp, 4
mov eax, dword [ebp - 0xbc]
mov dword [esp], eax
call sym._strlen
add eax, dword [ebp - 0xbc]
inc eax
mov dword [ebp - 0xbc], eax
jmp 0x4033b4
cmp dword [ebp - 0x9ac], 0
je 0x4037af
cmp dword [ebp - 0x162c], 0xffffffff
jl 0x4035a2
cmp dword [ebp - 0x162c], 0xffffffff
jg 0x403567
cmp dword [ebp - 0x1630], 0x80000000
jb 0x4035a2
mov eax, dword [ebp - 0x1630]
mov edx, dword [ebp - 0x162c]
add eax, 0x20000000
adc edx, 0
shrd eax, edx, 0x1e
sar edx, 0x1e
mov dword [esp + 8], eax
mov dword [esp + 0xc], edx
mov dword [esp + 4], str._I64d
lea eax, [ebp - 0x998]
mov dword [esp], eax
call sym._sprintf
jmp 0x4035b8
mov dword [esp + 4], 0x4134f7
lea eax, [ebp - 0x998]
mov dword [esp], eax
call sym._sprintf
cmp dword [ebp + 0xc], 1
jle 0x403757
mov dword [esp + 4], 0x4130b8
mov eax, dword [ebp + 0x10]
add eax, 4
mov eax, dword [eax]
mov dword [esp], eax
call sym._stricmp
test eax, eax
jne 0x403635
lea eax, [ebp - 0x99a]
mov dword [esp + 0x1c], eax
lea eax, [ebp - 0x998]
mov dword [esp + 0x18], eax
lea eax, [ebp - 0x148]
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x988]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x188]
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x168]
mov dword [esp + 8], eax
lea eax, [ebp - 0xc0]
mov dword [esp + 4], eax
mov dword [esp], str._hd_s_:__s__s__s___s___sg__s_n
call sym._printf
jmp 0x403757
lea eax, [ebp - 0xc0]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x413517
mov eax, dword [ebp + 0x10]
add eax, 4
mov eax, dword [eax]
mov dword [esp], eax
call sym._replace
mov dword [ebp - 0x9a0], eax
lea eax, [ebp - 0x168]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x41351a
mov eax, dword [ebp - 0x9a0]
mov dword [esp], eax
call sym._replace
mov dword [ebp - 0x9a0], eax
lea eax, [ebp - 0x188]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x41351d
mov eax, dword [ebp - 0x9a0]
mov dword [esp], eax
call sym._replace
mov dword [ebp - 0x9a0], eax
lea eax, [ebp - 0x988]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x413520
mov eax, dword [ebp - 0x9a0]
mov dword [esp], eax
call sym._replace
mov dword [ebp - 0x9a0], eax
lea eax, [ebp - 0x148]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x413523
mov eax, dword [ebp - 0x9a0]
mov dword [esp], eax
call sym._replace
mov dword [ebp - 0x9a0], eax
lea eax, [ebp - 0x998]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x413526
mov eax, dword [ebp - 0x9a0]
mov dword [esp], eax
call sym._replace
mov dword [ebp - 0x9a0], eax
lea eax, [ebp - 0x99a]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x413529
mov eax, dword [ebp - 0x9a0]
mov dword [esp], eax
call sym._replace
mov dword [ebp - 0x9a0], eax
mov eax, dword [ebp - 0x9a0]
mov dword [esp + 4], eax
mov dword [esp], 0x41352c
call sym._printf
cmp dword [ebp + 0xc], 1
jne 0x4037af
lea eax, [ebp - 0x99a]
mov dword [esp + 0x1c], eax
lea eax, [ebp - 0x998]
mov dword [esp + 0x18], eax
lea eax, [ebp - 0x148]
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x988]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x188]
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x168]
mov dword [esp + 8], eax
lea eax, [ebp - 0xc0]
mov dword [esp + 4], eax
mov dword [esp], str._hd_s_:__s__s__s___s___sg__s_n
call sym._printf
mov dword [ebp - 0x164c], 0
mov eax, dword [ebp - 0x164c]
lea esp, [ebp - 8]
pop ebx
pop edi
pop ebp
ret