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

Disassembly:
jmp 0x100188d0
push 0xffffffffffffffff
push 0x101e916c
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x6ac
push ebx
push esi
push edi
mov ecx, 0x188
xor eax, eax
lea edi, [esp + 0x98]
rep stosd dword es:[edi], eax
mov eax, dword [str..C:]
mov ecx, dword [0x102678b4]
mov edx, dword [0x102678b8]
mov dword [esp + 0x20], eax
mov ax, word [0x102678bc]
xor esi, esi
mov word [esp + 0x2c], ax
mov eax, dword [esp + 0x6c8]
xor ebx, ebx
cmp ax, 0x41
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], edx
mov word [esp + 0x2e], si
jb 0x1001894c
cmp ax, 0x5a
ja 0x1001894c
and eax, 0xffff
sub eax, 0x41
jmp 0x10018968
cmp ax, 0x61
jb 0x10018eb6
cmp ax, 0x7a
ja 0x10018eb6
and eax, 0xffff
sub eax, 0x61
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_CreateFileW]
push esi
push 0x80
push 3
push esi
push 7
lea ecx, [esp + 0x38]
add eax, 0x41
push SysReAllocString
push ecx
mov word [esp + 0x48], ax
call ebp
mov edi, eax
cmp edi, 0xffffffff
je 0x10018dfe
lea eax, [esp + 0x18]
push esi
push eax
lea ecx, [esp + 0x3c]
push 0xc
push ecx
xor edx, edx
push esi
push esi
mov dword [esp + 0x50], edx
push 0x2d1080
push edi
mov dword [esp + 0x54], esi
mov dword [esp + 0x5c], edx
mov dword [esp + 0x38], esi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
push edi
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push ebx
push str.GetVolDiskDeviceInfo_2___d_
push 0x102672d8
push 0xffffffffffffffff
push 0x1077ee5c
call fcn.1005bc20
add esp, 0x14
cmp ebx, esi
je 0x10018e97
mov edx, dword [esp + 0x34]
lea eax, [esp + 0x24]
push edx
push eax
push str.GetVolDiskDeviceInfo_3___s___0x_lx_
push 0x102672d8
push 0xffffffffffffffff
push 0x1077ee5c
call fcn.1005bc20
mov eax, dword [esp + 0x50]
mov cx, word [esp + 0x44]
add esp, 0x18
lea edx, [esp + 0x24]
mov word [esp + 0x9c], cx
mov dword [esp + 0xa0], eax
push eax
push edx
push str.GetVolDiskDeviceInfo_4___s___0x_lx_
push 0x102672d8
push 0xffffffffffffffff
push 0x1077ee5c
call fcn.1005bc20
mov ecx, 0x13
xor eax, eax
lea edi, [esp + 0x66]
mov word [esp + 0x64], si
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov eax, dword [esp + 0x4c]
add esp, 0x18
cmp eax, 7
jne 0x10018a86
mov eax, dword [esp + 0xa0]
lea ecx, [esp + 0x4c]
push eax
push str..PhysicalDrive_d
push ecx
call fcn.10034430
mov eax, dword [esp + 0x40]
add esp, 0xc
cmp eax, 5
je 0x10018a90
cmp eax, 2
jne 0x10018aaa
mov edx, dword [esp + 0xa0]
lea eax, [esp + 0x4c]
push edx
push str..CdRom_d
push eax
call fcn.10034430
add esp, 0xc
push esi
push 0x80
push 3
push esi
push 7
lea ecx, [esp + 0x60]
push SysReAllocString
push ecx
call ebp
mov ebp, eax
cmp ebp, 0xffffffff
je 0x10018e1e
xor edx, edx
lea eax, [esp + 0x18]
mov dword [esp + 0x40], edx
push esi
mov dword [esp + 0x48], edx
push eax
lea ecx, [esp + 0x24]
mov dword [esp + 0x50], edx
push 8
push ecx
lea edx, [esp + 0x50]
push 0xc
push edx
push 0x2d1400
push ebp
mov dword [esp + 0x60], esi
mov dword [esp + 0x64], esi
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], esi
mov dword [esp + 0x38], esi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
mov ebx, eax
cmp ebx, esi
je 0x10018e3e
lea ecx, [esp + 0x14]
call fcn.100d0ee0
mov eax, dword [esp + 0x20]
push 0xffffffffffffffff
push eax
lea ecx, [esp + 0x1c]
mov dword [esp + 0x6cc], esi
call fcn.100d10c0
lea ecx, [esp + 0x14]
call fcn.100d17f0
mov ecx, dword [esp + 0x20]
mov esi, eax
mov edx, ecx
xor eax, eax
mov edi, esi
push 0
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
lea edx, [esp + 0x44]
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [esp + 0x24]
lea eax, [esp + 0x1c]
push eax
push ecx
push esi
push 0xc
push edx
push 0x2d1400
push ebp
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
push ebp
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test ebx, ebx
je 0x10018e65
mov eax, dword [esi + 0x1c]
lea ecx, [esp + 0x4c]
push eax
push ecx
push str.GetVolDiskDeviceInfo_9___s___0x_lx_
push 0x102672d8
push 0xffffffffffffffff
push 0x1077ee5c
call fcn.1005bc20
mov eax, dword [esi + 0x1c]
add esp, 0x18
cmp eax, 7
je 0x10018bcc
cmp eax, 3
je 0x10018bcc
cmp eax, 2
je 0x10018bcc
cmp eax, 1
je 0x10018bcc
cmp eax, 0xb
jne 0x10018e83
mov eax, dword [esi + 0xc]
xor ebx, ebx
xor edi, edi
xor ebp, ebp
test eax, eax
je 0x10018c1b
lea ebx, [eax + esi]
lea ecx, [esp + 0x10]
push ebx
call fcn.1004b5e0
mov edx, dword [eax]
mov byte [esp + 0x6c4], 1
push edx
push str.GetVolDiskDeviceInfo_10___s_
push str.UDiskIDDLL
push 0xffffffffffffffff
push 0x1077ee5c
call fcn.1005bc20
add esp, 0x14
lea ecx, [esp + 0x10]
mov byte [esp + 0x6c4], 0
call fcn.1004bf60
mov eax, dword [esi + 0x10]
test eax, eax
je 0x10018c64
lea edi, [eax + esi]
lea ecx, [esp + 0x10]
push edi
call fcn.1004b5e0
mov eax, dword [eax]
mov byte [esp + 0x6c4], 2
push eax
push str.GetVolDiskDeviceInfo_11___s_
push str.UDiskIDDLL
push 0xffffffffffffffff
push 0x1077ee5c
call fcn.1005bc20
add esp, 0x14
lea ecx, [esp + 0x10]
mov byte [esp + 0x6c4], 0
call fcn.1004bf60
mov eax, dword [esi + 0x14]
test eax, eax
je 0x10018cad
lea ebp, [eax + esi]
lea ecx, [esp + 0x10]
push ebp
call fcn.1004b5e0
mov ecx, dword [eax]
mov byte [esp + 0x6c4], 3
push ecx
push str.GetVolDiskDeviceInfo_12___s_
push str.UDiskIDDLL
push 0xffffffffffffffff
push 0x1077ee5c
call fcn.1005bc20
add esp, 0x14
lea ecx, [esp + 0x10]
mov byte [esp + 0x6c4], 0
call fcn.1004bf60
test edi, edi
je 0x10018cde
push edi
lea ecx, [esp + 0x14]
call fcn.1004b5e0
mov edx, dword [esp + 0x10]
push 0x103
lea eax, [esp + 0xa8]
push edx
push eax
call fcn.10033deb
add esp, 0xc
lea ecx, [esp + 0x10]
call fcn.1004bf60
test ebx, ebx
je 0x10018d0f
push ebx
lea ecx, [esp + 0x14]
call fcn.1004b5e0
mov ecx, dword [esp + 0x10]
push 0x103
lea edx, [esp + 0x2b0]
push ecx
push edx
call fcn.10033deb
add esp, 0xc
lea ecx, [esp + 0x10]
call fcn.1004bf60
test ebp, ebp
je 0x10018d40
push ebp
lea ecx, [esp + 0x14]
call fcn.1004b5e0
mov eax, dword [esp + 0x10]
push 0x103
lea ecx, [esp + 0x4b8]
push eax
push ecx
call fcn.10033deb
add esp, 0xc
lea ecx, [esp + 0x10]
call fcn.1004bf60
lea edx, [esp + 0x4b4]
lea eax, [esp + 0x2ac]
push edx
mov edx, dword [esp + 0xa4]
push eax
mov eax, dword [esp + 0xa4]
lea ecx, [esp + 0xac]
and eax, 0xffff
push ecx
push edx
push eax
push 0x102675ac
push str.UDiskIDDLL
push 0xffffffffffffffff
push 0x1077ee5c
call fcn.1005bc20
mov esi, dword [esp + 0x6f4]
add esp, 0x24
mov ecx, esi
push 0x10294030
call fcn.1004c240
lea ecx, [esp + 0x2ac]
push ecx
mov ecx, esi
call fcn.1004cba0
mov ecx, esi
call fcn.1004fe30
mov ecx, esi
call fcn.1004fb30
push 0x102675a8
mov ecx, esi
call fcn.1004cba0
lea edx, [esp + 0xa4]
mov ecx, esi
push edx
call fcn.1004cba0
mov ecx, esi
call fcn.1004fb30
mov eax, dword [esi]
push eax
push str.GetVolDiskDeviceInfo_14___s_
push str.UDiskIDDLL
push 0xffffffffffffffff
push 0x1077ee5c
call fcn.1005bc20
add esp, 0x14
mov ebx, 1
jmp 0x10018e83
lea ecx, [esp + 0x24]
push ecx
push str.GetVolDiskDeviceInfo_1___s_
push 0x102672d8
push 0xffffffffffffffff
push 0x1077ee5c
call fcn.1005bc20
add esp, 0x14
jmp 0x10018e97
lea edx, [esp + 0x4c]
push edx
push str.GetVolDiskDeviceInfo_6___s_
push 0x102672d8
push 0xffffffffffffffff
push 0x1077ee5c
call fcn.1005bc20
add esp, 0x14
jmp 0x10018e97
lea eax, [esp + 0x4c]
push eax
push str.GetVolDiskDeviceInfo_7___s_
push 0x102672d8
push 0xffffffffffffffff
push 0x1077ee5c
call fcn.1005bc20
add esp, 0x14
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x10018e97
lea ecx, [esp + 0x4c]
push ecx
push str.GetVolDiskDeviceInfo_8___s_
push 0x102672d8
push 0xffffffffffffffff
push 0x1077ee5c
call fcn.1005bc20
add esp, 0x14
lea ecx, [esp + 0x14]
mov dword [esp + 0x6c4], 0xffffffff
call fcn.100d1010
push ebx
push str.GetVolDiskDeviceInfo_15___d_
push str.UDiskIDDLL
push 0xffffffffffffffff
push 0x1077ee5c
call fcn.1005bc20
add esp, 0x14
mov eax, ebx
pop ebp
jmp 0x10018eb8
xor eax, eax
mov ecx, dword [esp + 0x6b8]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x6b8
ret