Function at 0x10008af0
Capabilities:
Get storage device properties

Disassembly:
push ebp
mov ebp, esp
push 0xfffffffffffffffe
push 0x10184b00
push 0x10132540
mov eax, dword fs:[0]
push eax
sub esp, 8
mov eax, 0x253c
call fcn.10140530
mov eax, dword [0x10189710]
xor dword [ebp - 8], eax
xor eax, ebp
mov dword [ebp - 0x20], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0x10]
mov dword fs:[0], eax
mov dword [ebp - 0x18], esp
mov eax, dword [ebp + 8]
mov dword [ebp - 0x254c], eax
mov ebx, ecx
mov edi, edx
mov dword [ebp - 0x2544], edi
mov esi, dword [ebp + 0x10]
mov dword [ebp - 0x2540], esi
mov dword [ebp - 4], 0
xor eax, eax
mov dword [ebp - 0x2538], eax
mov dword [ebp - 0x2534], eax
mov byte [ebp - 0x252c], al
mov dword [ebp - 0x2550], eax
push 0x2000
push eax
lea ecx, [ebp - 0x252c]
push ecx
call fcn.1012e060
add esp, 0xc
push 0
lea edx, [ebp - 0x2550]
push edx
push 0x2000
lea eax, [ebp - 0x252c]
push eax
push 0xc
lea ecx, [ebp - 0x2538]
push ecx
push 0x2d1400
mov edx, dword [ebp - 0x254c]
push edx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x100093c7
xor ecx, ecx
mov dword [ebp - 0x253c], ecx
mov dword [ebp - 0x2548], ecx
mov eax, dword [ebp - 0x251c]
cmp eax, ecx
je 0x10008cce
cmp ebx, ecx
je 0x10008cfd
cmp byte [ebp - 0x2522], cl
jne 0x10008cfd
cmp dword [ebp - 0x2510], 7
je 0x10008cfd
lea eax, [ebp + eax - 0x252c]
push eax
push 0x1014d8cc
push ebx
call fcn.10127dc0
add esp, 0xc
push ebx
call fcn.10061df0
add esp, 4
test edi, edi
je 0x10008cfd
cmp byte [edi], 0
je 0x10008cfd
test esi, esi
je 0x10008cfd
cmp dword [esi], 0
jne 0x10008cfd
push 0
push str.MegaSR
push ebx
call fcn.10063340
add esp, 0xc
cmp eax, 0xffffffff
jne 0x10008cf3
push 0
push str.Virtual
push ebx
call fcn.10063340
add esp, 0xc
cmp eax, 0xffffffff
jne 0x10008cf3
push 0
push str.Raid
push ebx
call fcn.10063340
add esp, 0xc
cmp eax, 0xffffffff
jne 0x10008cf3
push 0
push str.Logical
push ebx
call fcn.10063340
add esp, 0xc
cmp eax, 0xffffffff
jne 0x10008cf3
push 0
push str.VBox
push ebx
call fcn.10063340
add esp, 0xc
cmp eax, 0xffffffff
jne 0x10008cf3
mov eax, 0x1015693c
mov ecx, ebx
call fcn.1005a140
test eax, eax
je 0x10008cf3
mov eax, str.PERC
mov ecx, ebx
call fcn.1005a140
test eax, eax
je 0x10008cf3
cmp byte [ebx], 0
jmp 0x10008cf1
cmp ebx, ecx
je 0x10008cfd
cmp byte [ebp - 0x2522], cl
jne 0x10008cfd
cmp dword [ebp - 0x2510], 7
je 0x10008cfd
cmp edi, ecx
je 0x10008cfd
cmp byte [edi], cl
je 0x10008cfd
cmp esi, ecx
je 0x10008cfd
cmp dword [esi], ecx
jne 0x10008cfd
mov dword [ebp - 0x2548], 1
mov eax, dword [ebp - 0x2518]
test eax, eax
je 0x10008dc3
test ebx, ebx
je 0x10008e7c
cmp byte [ebp - 0x2522], 0
jne 0x10008dc3
cmp dword [ebp - 0x2510], 7
je 0x10008dc3
lea ecx, [ebp + eax - 0x252c]
push ecx
push 0x1014d8cc
lea edx, [ebp - 0x52c]
push edx
call fcn.10127dc0
add esp, 0xc
cmp byte [ebp - 0x52c], 0
je 0x10008dc3
lea eax, [ebp - 0x52c]
push eax
call fcn.10061df0
add esp, 4
cmp byte [ebx], 0
je 0x10008d8b
mov eax, ebx
dec eax
lea esp, [esp]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x10008d70
mov cx, word [0x10156948]
mov word [eax], cx
mov dl, byte [0x1015694a]
mov byte [eax + 2], dl
lea eax, [ebp - 0x52c]
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x10008d93
sub eax, ecx
mov esi, ecx
mov edi, ebx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x10008da1
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 - 0x2540]
mov edi, dword [ebp - 0x2544]
test ebx, ebx
je 0x10008e7c
cmp byte [ebp - 0x2522], 0
jne 0x10008e7c
cmp dword [ebp - 0x2510], 7
je 0x10008e7c
cmp dword [ebp - 0x2548], 0
je 0x10008e7c
mov dword [esi], 1
cmp byte [ebx], 0
je 0x10008e1b
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x10008e00
mov cx, word [0x10156948]
mov word [eax], cx
mov dl, byte [0x1015694a]
mov byte [eax + 2], dl
mov eax, ebx
dec eax
mov edi, edi
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x10008e20
mov ecx, dword [str.UUID.]
mov dword [eax], ecx
mov dx, word [0x10156950]
mov word [eax + 4], dx
mov eax, edi
mov ecx, edi
nop
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x10008e40
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 0x10008e50
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 - 0x253c], 1
mov esi, dword [ebp - 0x2540]
mov edi, dword [ebp - 0x2544]
mov eax, dword [ebp - 0x2514]
test eax, eax
je 0x10008f53
test ebx, ebx
je 0x10008f53
cmp byte [ebp - 0x2522], 0
jne 0x100090b7
cmp dword [ebp - 0x2510], 7
je 0x10008f53
lea eax, [ebp + eax - 0x252c]
push eax
push 0x1014d8cc
lea ecx, [ebp - 0x52c]
push ecx
call fcn.10127dc0
add esp, 0xc
cmp byte [ebp - 0x52c], 0
je 0x10008f53
lea edx, [ebp - 0x52c]
push edx
call fcn.10061df0
add esp, 4
cmp dword [ebp - 0x253c], 0
jne 0x10008f53
mov dword [ebp - 0x253c], 1
cmp byte [ebx], 0
je 0x10008f1b
mov eax, ebx
dec eax
nop
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x10008f00
mov cx, word [0x10156948]
mov word [eax], cx
mov dl, byte [0x1015694a]
mov byte [eax + 2], dl
lea eax, [ebp - 0x52c]
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x10008f23
sub eax, ecx
mov esi, ecx
mov edi, ebx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x10008f31
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 - 0x2540]
mov edi, dword [ebp - 0x2544]
cmp byte [ebp - 0x2522], 0
jne 0x100090b7
cmp dword [ebp - 0x2510], 7
je 0x100090b7
cmp dword [ebp - 0x253c], 0
jne 0x10009181
mov byte [ebp - 0x52c], 0
push 0x3ff
push 0
lea eax, [ebp - 0x52b]
push eax
call fcn.1012e060
add esp, 0xc
mov byte [ebp - 0x52c], 0
mov ecx, dword [ebp + 0xc]
push ecx
lea edx, [ebp - 0x52c]
mov ecx, dword [ebp - 0x254c]
call fcn.100087c0
add esp, 4
cmp byte [ebp - 0x52c], 0
je 0x10009024
mov dword [ebp - 0x253c], 1
cmp byte [ebx], 0
je 0x10008fec
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x10008fd1
mov dx, word [0x10156948]
mov word [eax], dx
mov cl, byte [0x1015694a]
mov byte [eax + 2], cl
lea eax, [ebp - 0x52c]
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x10008ff4
sub eax, ecx
mov esi, ecx
mov edi, ebx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x10009002
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 - 0x2540]
mov edi, dword [ebp - 0x2544]
mov byte [ebp - 0x52c], 0
lea ecx, [ebp - 0x52c]
mov edx, dword [ebp - 0x254c]
call fcn.10008980
cmp byte [ebp - 0x52c], 0
je 0x100090b7
cmp dword [ebp - 0x253c], 0
jne 0x10009181
mov dword [ebp - 0x253c], 1
cmp byte [ebx], 0
je 0x1000907f
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x10009064
mov dx, word [0x10156948]
mov word [eax], dx
mov cl, byte [0x1015694a]
mov byte [eax + 2], cl
lea eax, [ebp - 0x52c]
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x10009087
sub eax, ecx
mov esi, ecx
mov edi, ebx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x10009095
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 - 0x2540]
mov edi, dword [ebp - 0x2544]
cmp dword [ebp - 0x253c], 0
jne 0x10009181
test ebx, ebx
je 0x10009181
cmp byte [ebp - 0x2522], 0
jne 0x10009181
cmp dword [ebp - 0x2510], 7
je 0x10009181
test edi, edi
je 0x10009181
cmp byte [edi], 0
je 0x10009181
test esi, esi
je 0x10009181
cmp dword [esi], 0
jne 0x10009181
mov dword [esi], 1
cmp byte [ebx], 0
je 0x10009131
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x10009116
mov dx, word [0x10156948]
mov word [eax], dx
mov cl, byte [0x1015694a]
mov byte [eax + 2], cl
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x10009134
mov edx, dword [str.UUID.]
mov dword [eax], edx
mov cx, word [0x10156950]
mov word [eax + 4], cx
mov eax, edi
mov ecx, edi
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x10009153
sub eax, ecx
mov esi, ecx
dec ebx
mov edi, ebx
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x10009161
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 - 0x253c], 1
mov byte [ebp - 0x12c], 0
push 0x103
push 0
lea edx, [ebp - 0x12b]
push edx
call fcn.1012e060
add esp, 0xc
mov eax, dword [ebp - 0x2510]
cmp eax, 0x7f
ja case.0x100091b4.17
movzx ecx, byte [eax + 0x10009438]
jmp dword [ecx*4 + 0x100093ec]
push 0
push str.BusTypeUnknown___u_
lea edx, [ebp - 0x12c]
push edx
call fcn.10127dc0
add esp, 0xc
jmp 0x100093c7
push 1
push str.BusTypeScsi___u_
lea eax, [ebp - 0x12c]
push eax
call fcn.10127dc0
add esp, 0xc
jmp 0x100093c7
push 2
push str.BusTypeAtapi___u_
lea ecx, [ebp - 0x12c]
push ecx
call fcn.10127dc0
add esp, 0xc
jmp 0x100093c7
push 3
push str.BusTypeAta___u_
lea edx, [ebp - 0x12c]
push edx
call fcn.10127dc0
add esp, 0xc
jmp 0x100093c7
push 4
push str.BusType1394___u_
lea eax, [ebp - 0x12c]
push eax
call fcn.10127dc0
add esp, 0xc
jmp 0x100093c7
push 5
push str.BusTypeSsa___u_
lea ecx, [ebp - 0x12c]
push ecx
call fcn.10127dc0
add esp, 0xc
jmp 0x100093c7
push 6
push str.BusTypeFibre___u_
lea edx, [ebp - 0x12c]
push edx
call fcn.10127dc0
add esp, 0xc
jmp 0x100093c7
push 7
push str.BusTypeUsb___u_
lea eax, [ebp - 0x12c]
push eax
call fcn.10127dc0
add esp, 0xc
jmp 0x100093c7
push 8
push str.BusTypeRAID___u_
lea ecx, [ebp - 0x12c]
push ecx
call fcn.10127dc0
add esp, 0xc
jmp 0x100093c7
push 9
push str.BusTypeiScsi___u_
lea edx, [ebp - 0x12c]
push edx
call fcn.10127dc0
add esp, 0xc
jmp 0x100093c7
push 0xa
push str.BusTypeSas___u_
lea eax, [ebp - 0x12c]
push eax
call fcn.10127dc0
add esp, 0xc
jmp 0x100093c7
push 0xb
push str.BusTypeSata___u_
lea ecx, [ebp - 0x12c]
push ecx
call fcn.10127dc0
add esp, 0xc
jmp 0x100093c7
push 0xc
push str.BusTypeSd___u_
lea edx, [ebp - 0x12c]
push edx
call fcn.10127dc0
add esp, 0xc
jmp 0x100093c7
push 0xd
push str.BusTypeMmc___u_
lea eax, [ebp - 0x12c]
push eax
call fcn.10127dc0
add esp, 0xc
jmp 0x100093c7
push 0xe
push str.BusTypeVirtual___u_
lea ecx, [ebp - 0x12c]
push ecx
call fcn.10127dc0
add esp, 0xc
jmp 0x100093c7
push 0xf
push str.BusTypeFileBackedVirtual___u_
lea edx, [ebp - 0x12c]
push edx
call fcn.10127dc0
add esp, 0xc
jmp 0x100093c7
push 0x10
push str.BusTypeMax___u_
lea eax, [ebp - 0x12c]
push eax
call fcn.10127dc0
add esp, 0xc
jmp 0x100093c7
push 0x7f
push str.BusTypeMaxReserved___u_
lea ecx, [ebp - 0x12c]
push ecx
call fcn.10127dc0
add esp, 0xc
jmp 0x100093c7
push eax
push str.Unknown___u_
lea edx, [ebp - 0x12c]
push edx
call fcn.10127dc0
add esp, 0xc
jmp 0x100093c7
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 - 0x20]
xor ecx, ebp
call fcn.10127db1
mov esp, ebp
pop ebp
ret