Function at 0x409a60
Capabilities:
Get storage device properties

Disassembly:
push ebp
lea ebp, [esp - 0x2514]
mov eax, 0x2514
call fcn.005e00d0
push 0xfffffffffffffffe
push 0x66f018
push 0x5dfbd0
mov eax, dword fs:[0]
push eax
sub esp, 0x24
mov eax, dword [0x6aae14]
xor dword [ebp - 8], eax
xor eax, ebp
mov dword [ebp + 0x2510], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0x10]
mov dword fs:[0], eax
mov dword [ebp - 0x18], esp
mov esi, dword [ebp + 0x251c]
mov edi, dword [ebp + 0x2520]
mov dword [ebp - 0x30], edi
mov ebx, dword [ebp + 0x2528]
mov dword [ebp - 0x20], ebx
mov eax, dword [ebp + 0x2530]
mov dword [ebp - 0x28], eax
mov ecx, dword [ebp + 0x2534]
mov dword [ebp - 0x24], ecx
mov dword [ebp - 4], 0
xor eax, eax
mov dword [ebp], eax
mov dword [ebp + 4], eax
mov byte [ebp + 0xc], al
mov dword [ebp - 0x34], eax
push 0x2000
push eax
lea edx, [ebp + 0xc]
push edx
call fcn.005dfd60
add esp, 0xc
push 0
lea eax, [ebp - 0x34]
push eax
push 0x2000
lea ecx, [ebp + 0xc]
push ecx
push 0xc
lea edx, [ebp]
push edx
push 0x2d1400
push edi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
jne 0x409b44
cmp dword [ebp + 0x2524], eax
je 0x40a31a
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push esi
push str._nERROR:_Cannot_request_Page_80_information_for_device__s._n__DeviceIoControl___error:__d__n
call fcn.005e1b3a
add esp, 0xc
jmp 0x40a31a
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x2c], 0
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x409b74
cmp dword [ebp + 0x2524], 0
je 0x409b74
lea eax, [ebp + eax + 0xc]
push eax
push str.__Page80.VendorId:__hs_n
call fcn.005e1b3a
add esp, 8
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x409c95
test ebx, ebx
je 0x409c75
cmp byte [ebp + 0x16], 0
jne 0x409c75
cmp dword [ebp + 0x28], 7
je 0x409c75
lea ecx, [ebp + eax + 0xc]
push ecx
push 0x60c800
push ebx
call fcn.005dfb23
push ebx
call fcn.004e1290
add esp, 0x10
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x409c75
cmp byte [eax], 0
je 0x409c75
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x409c75
cmp dword [eax], 0
jne 0x409c75
push 0
push str.MegaSR
push ebx
call fcn.004f5880
add esp, 0xc
cmp eax, 0xffffffff
jne 0x409c6e
push 0
push str.Virtual
push ebx
call fcn.004f5880
add esp, 0xc
cmp eax, 0xffffffff
jne 0x409c6e
push 0
push str.Raid
push ebx
call fcn.004f5880
add esp, 0xc
cmp eax, 0xffffffff
jne 0x409c6e
push 0
push str.Logical
push ebx
call fcn.004f5880
add esp, 0xc
cmp eax, 0xffffffff
jne 0x409c6e
push 0
push str.VBox
push ebx
call fcn.004f5880
add esp, 0xc
cmp eax, 0xffffffff
jne 0x409c6e
push 0x60f3c0
push ebx
call fcn.004dd6e0
add esp, 8
test eax, eax
je 0x409c6e
push str.PERC
push ebx
call fcn.004dd6e0
add esp, 8
test eax, eax
je 0x409c6e
cmp byte [ebx], 0
jne 0x409c75
mov dword [ebp - 0x2c], 1
cmp dword [ebp + 0x2524], 0
je 0x409cc4
mov edx, dword [ebp + 0x1c]
lea eax, [ebp + edx + 0xc]
push eax
push str.__Page80.ProductId:__hs_n
call fcn.005e1b3a
add esp, 8
jmp 0x409cc4
test ebx, ebx
je 0x409cc4
cmp byte [ebp + 0x16], 0
jne 0x409cc4
cmp dword [ebp + 0x28], 7
je 0x409cc4
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x409cc4
cmp byte [eax], 0
je 0x409cc4
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x409cc4
cmp dword [eax], 0
jne 0x409cc4
mov dword [ebp - 0x2c], 1
mov eax, dword [ebp + 0x20]
test eax, eax
je 0x409d89
test ebx, ebx
je 0x409d6b
cmp byte [ebp + 0x16], 0
jne 0x409d6b
cmp dword [ebp + 0x28], 7
je 0x409d6b
lea ecx, [ebp + eax + 0xc]
push ecx
push 0x60c800
lea edx, [ebp + 0x200c]
push edx
call fcn.005dfb23
add esp, 0xc
cmp byte [ebp + 0x200c], 0
je 0x409d6b
lea eax, [ebp + 0x200c]
push eax
call fcn.004e1290
add esp, 4
cmp byte [ebx], 0
je 0x409d3f
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x409d24
mov cx, word [0x60f380]
mov word [eax], cx
mov dl, byte [0x60f382]
mov byte [eax + 2], dl
lea eax, [ebp + 0x200c]
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x409d47
sub eax, ecx
mov esi, ecx
mov edi, ebx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x409d55
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp dword [ebp + 0x2524], 0
je 0x409d89
mov eax, dword [ebp + 0x20]
lea ecx, [ebp + eax + 0xc]
push ecx
push str.__Page80.ProductRevision:__hs_n
call fcn.005e1b3a
add esp, 8
test ebx, ebx
je 0x409e2d
cmp byte [ebp + 0x16], 0
jne 0x409e2d
cmp dword [ebp + 0x28], 7
je 0x409e2d
cmp dword [ebp - 0x2c], 0
je 0x409e2d
mov edx, dword [ebp - 0x24]
mov dword [edx], 1
cmp byte [ebx], 0
je 0x409ddb
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x409dc0
mov cx, word [0x60f380]
mov word [eax], cx
mov dl, byte [0x60f382]
mov byte [eax + 2], dl
mov eax, ebx
dec eax
mov edi, edi
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x409de0
mov ecx, dword [str.UUID.]
mov dword [eax], ecx
mov dx, word [0x60f33c]
mov word [eax + 4], dx
mov eax, dword [ebp - 0x28]
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x409e00
sub eax, ecx
mov esi, ecx
mov edi, ebx
dec edi
mov edi, edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x409e10
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov dword [ebp - 0x1c], 1
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x409f05
test ebx, ebx
je 0x409ee7
cmp byte [ebp + 0x16], 0
jne 0x409ee7
cmp dword [ebp + 0x28], 7
je 0x409ee7
lea eax, [ebp + eax + 0xc]
push eax
push 0x60c800
lea ecx, [ebp + 0x200c]
push ecx
call fcn.005dfb23
add esp, 0xc
cmp byte [ebp + 0x200c], 0
je 0x409ee7
lea edx, [ebp + 0x200c]
push edx
call fcn.004e1290
add esp, 4
cmp dword [ebp - 0x1c], 0
jne 0x409ee7
mov dword [ebp - 0x1c], 1
cmp byte [ebx], 0
je 0x409ebb
mov eax, ebx
dec eax
lea ebx, [ebx]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x409ea0
mov cx, word [0x60f380]
mov word [eax], cx
mov dl, byte [0x60f382]
mov byte [eax + 2], dl
lea eax, [ebp + 0x200c]
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x409ec3
sub eax, ecx
mov esi, ecx
mov edi, ebx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x409ed1
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp dword [ebp + 0x2524], 0
je 0x409f05
mov eax, dword [ebp + 0x24]
lea ecx, [ebp + eax + 0xc]
push ecx
push str.__Page80.SerialNumber_:__hs_n
call fcn.005e1b3a
add esp, 8
cmp byte [ebp + 0x16], 0
jne 0x40a0a4
cmp dword [ebp + 0x28], 7
je 0x40a0a4
cmp dword [ebp + 0x2524], 0
jne 0x409f2c
cmp dword [ebp - 0x1c], 0
jne 0x40a16f
mov byte [ebp + 0x200c], 0
push 0x3ff
push 0
lea edx, [ebp + 0x200d]
push edx
call fcn.005dfd60
mov byte [ebp + 0x200c], 0
mov esi, dword [ebp + 0x2524]
push esi
lea eax, [ebp + 0x200c]
push eax
mov ebx, dword [ebp + 0x252c]
push ebx
mov ecx, dword [ebp - 0x30]
push ecx
call fcn.00409640
add esp, 0x1c
cmp byte [ebp + 0x200c], 0
je 0x409ff7
cmp dword [ebp - 0x1c], 0
jne 0x409fdf
mov dword [ebp - 0x1c], 1
mov eax, dword [ebp - 0x20]
cmp byte [eax], 0
je 0x409fac
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x409f91
mov dx, word [0x60f380]
mov word [eax], dx
mov cl, byte [0x60f382]
mov byte [eax + 2], cl
lea eax, [ebp + 0x200c]
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x409fb4
sub eax, ecx
mov esi, ecx
mov edi, dword [ebp - 0x20]
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x409fc3
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [ebp + 0x2524]
test esi, esi
je 0x409ff7
lea edx, [ebp + 0x200c]
push edx
push str.__Physical_Drv.SrNo_0_:__S_n
call fcn.005e1b3a
add esp, 8
mov byte [ebp + 0x200c], 0
push esi
lea eax, [ebp + 0x200c]
push eax
push ebx
mov ecx, dword [ebp - 0x30]
push ecx
call fcn.00409860
add esp, 0x10
cmp byte [ebp + 0x200c], 0
je 0x40a0a4
cmp dword [ebp - 0x1c], 0
jne 0x40a08c
mov dword [ebp - 0x1c], 1
mov eax, dword [ebp - 0x20]
cmp byte [eax], 0
je 0x40a051
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x40a036
mov dx, word [0x60f380]
mov word [eax], dx
mov cl, byte [0x60f382]
mov byte [eax + 2], cl
lea eax, [ebp + 0x200c]
mov ecx, eax
lea esp, [esp]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x40a060
sub eax, ecx
mov esi, ecx
mov edi, dword [ebp - 0x20]
dec edi
nop
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40a070
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [ebp + 0x2524]
test esi, esi
je 0x40a0a4
lea edx, [ebp + 0x200c]
push edx
push str.__Physical_Drv.SrNo_1_:__S_n
call fcn.005e1b3a
add esp, 8
cmp dword [ebp - 0x1c], 0
jne 0x40a16f
mov edx, dword [ebp - 0x20]
test edx, edx
je 0x40a16f
cmp byte [ebp + 0x16], 0
jne 0x40a16f
mov ebx, dword [ebp + 0x28]
cmp ebx, 7
je 0x40a172
mov esi, dword [ebp - 0x28]
test esi, esi
je 0x40a172
cmp byte [esi], 0
je 0x40a172
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x40a172
cmp dword [eax], 0
jne 0x40a172
mov dword [eax], 1
cmp byte [edx], 0
je 0x40a120
mov eax, edx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x40a105
mov cx, word [0x60f380]
mov word [eax], cx
mov cl, byte [0x60f382]
mov byte [eax + 2], cl
mov eax, edx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x40a123
mov edx, dword [str.UUID.]
mov dword [eax], edx
mov cx, word [0x60f33c]
mov word [eax + 4], cx
mov eax, esi
mov ecx, esi
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x40a142
sub eax, ecx
mov edi, dword [ebp - 0x20]
dec edi
nop
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40a150
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov dword [ebp - 0x1c], 1
jmp 0x40a172
mov ebx, dword [ebp + 0x28]
mov byte [ebp + 0x240c], 0
push 0x103
push 0
lea edx, [ebp + 0x240d]
push edx
call fcn.005dfd60
add esp, 0xc
cmp ebx, 0x7f
ja case.0x40a19f.17
movzx eax, byte [ebx + 0x40a394]
jmp dword [eax*4 + 0x40a348]
push 0
push str.BusTypeUnknown___u_
jmp 0x40a2c0
push 1
push str.BusTypeScsi___u_
lea edx, [ebp + 0x240c]
push edx
jmp 0x40a2c7
push 2
push str.BusTypeAtapi___u_
lea eax, [ebp + 0x240c]
push eax
jmp 0x40a2c7
push 3
push str.BusTypeAta___u_
jmp 0x40a2c0
push 4
push str.BusType1394___u_
lea edx, [ebp + 0x240c]
push edx
jmp 0x40a2c7
push 5
push str.BusTypeSsa___u_
lea eax, [ebp + 0x240c]
push eax
jmp 0x40a2c7
push 6
push str.BusTypeFibre___u_
jmp 0x40a2c0
push 7
push str.BusTypeUsb___u_
lea edx, [ebp + 0x240c]
push edx
jmp 0x40a2c7
push 8
push str.BusTypeRAID___u_
lea eax, [ebp + 0x240c]
push eax
jmp 0x40a2c7
push 9
push str.BusTypeiScsi___u_
jmp 0x40a2c0
push 0xa
push str.BusTypeSas___u_
lea edx, [ebp + 0x240c]
push edx
jmp 0x40a2c7
push 0xb
push str.BusTypeSata___u_
lea eax, [ebp + 0x240c]
push eax
jmp 0x40a2c7
push 0xc
push str.BusTypeSd___u_
jmp 0x40a2c0
push 0xd
push str.BusTypeMmc___u_
lea edx, [ebp + 0x240c]
push edx
jmp 0x40a2c7
push 0xe
push str.BusTypeVirtual___u_
lea eax, [ebp + 0x240c]
push eax
jmp 0x40a2c7
push 0xf
push str.BusTypeFileBackedVirtual___u_
jmp 0x40a2c0
push 0x10
push str.BusTypeMax___u_
lea edx, [ebp + 0x240c]
push edx
jmp 0x40a2c7
push 0x7f
push str.BusTypeMaxReserved___u_
lea eax, [ebp + 0x240c]
push eax
jmp 0x40a2c7
push ebx
push str.Unknown___u_
lea ecx, [ebp + 0x240c]
push ecx
call fcn.005dfb23
add esp, 0xc
mov esi, dword [ebp + 0x2524]
test esi, esi
je 0x40a31a
lea edx, [ebp + 0x240c]
push edx
push str.__Page80.BusType:__S_n
call fcn.005e1b3a
add esp, 8
test esi, esi
je 0x40a31a
movzx eax, byte [ebp + 0x16]
push eax
push str.__Page80.RemovableMedia:__d_n
call fcn.005e1b3a
jmp 0x40a317
add esp, 8
mov dword [ebp - 4], 0xfffffffe
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x2510]
xor ecx, ebp
call fcn.005dfbbe
add ebp, 0x2514
mov esp, ebp
pop ebp
ret