Function at 0x10048fb0
Capabilities:
Get storage device properties

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10051f21
mov eax, dword fs:[0]
push eax
sub esp, 0xd60
mov eax, dword [0x1006f184]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0xd60], eax
xor ebx, ebx
xor al, al
mov dword [ebp - 0xd64], ecx
mov dword [ebp - 0xd6c], edx
mov byte [ebp - 0xd55], al
mov dword [ebp - 0xd5c], ebx
or edi, 0xffffffff
lea esp, [esp]
cmp al, bl
jne 0x10049338
push 0x200
lea eax, [ebp - 0x510]
push ebx
push eax
call sub.MSVCR100.dll_memset
mov ecx, dword [ebp - 0xd5c]
push ecx
push str..PhysicalDrive_d
push edi
lea edx, [ebp - 0x510]
push 0xff
push edx
call dword [sym.imp.MSVCR100.dll__snwprintf_s]
add esp, 0x20
push ebx
push ebx
push 3
push ebx
push 3
push ebx
lea eax, [ebp - 0x510]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, edi
je 0x1004931c
xor eax, eax
push 0x800
lea ecx, [ebp - 0xd10]
push ebx
mov dword [ebp - 0xd1c], eax
mov dword [ebp - 0xd18], eax
push ecx
mov dword [ebp - 0xd68], ebx
mov dword [ebp - 0xd14], eax
mov dword [ebp - 0xd1c], ebx
mov dword [ebp - 0xd18], ebx
call sub.MSVCR100.dll_memset
add esp, 0xc
push ebx
lea edx, [ebp - 0xd68]
push edx
push 0x800
lea eax, [ebp - 0xd10]
push eax
push 0xc
lea ecx, [ebp - 0xd1c]
push ecx
push 0x2d1400
push esi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x1004930f
push 0xff
lea edx, [ebp - 0x10f]
push ebx
push edx
mov byte [ebp - 0x110], bl
call sub.MSVCR100.dll_memset
push 0xff
lea eax, [ebp - 0x20f]
push ebx
push eax
mov byte [ebp - 0x210], bl
call sub.MSVCR100.dll_memset
push 0xff
lea ecx, [ebp - 0x30f]
push ebx
push ecx
mov byte [ebp - 0x310], bl
call sub.MSVCR100.dll_memset
mov eax, dword [ebp - 0xd00]
lea edx, [ebp - 0x210]
push edx
push ebx
push eax
lea ecx, [ebp - 0xd10]
push ecx
call fcn.100487a0
mov eax, dword [ebp - 0xcfc]
lea edx, [ebp - 0x310]
push edx
push ebx
push eax
lea ecx, [ebp - 0xd10]
push ecx
call fcn.100487a0
mov eax, dword [ebp - 0xcf8]
add esp, 0x44
lea edx, [ebp - 0x110]
push edx
push 1
push eax
lea ecx, [ebp - 0xd10]
push ecx
call fcn.100487a0
movsx edx, byte [ebp - 0x110]
push edx
call dword [sym.imp.MSVCR100.dll_isalnum]
add esp, 0x14
test eax, eax
jne 0x100491a2
movsx eax, byte [ebp - 0xfd]
push eax
call dword [sym.imp.MSVCR100.dll_isalnum]
add esp, 4
test eax, eax
je 0x10049315
lea eax, [ebp - 0x110]
mov dword [ebp - 0xd24], 0xf
mov dword [ebp - 0xd28], ebx
mov byte [ebp - 0xd38], bl
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x100491c1
sub eax, edx
push eax
lea ecx, [ebp - 0x110]
push ecx
lea ecx, [ebp - 0xd38]
call fcn.10009ff0
mov ecx, dword [ebp - 0xd60]
lea edx, [ebp - 0xd38]
push edx
mov dword [ebp - 4], ebx
call fcn.10033630
cmp dword [ebp - 0xd24], 0x10
mov dword [ebp - 4], edi
jb 0x1004920d
mov eax, dword [ebp - 0xd38]
push eax
call sub.MSVCR100.dll_void___cdecl_operator_delete_void__
add esp, 4
lea eax, [ebp - 0x210]
mov dword [ebp - 0xd24], 0xf
mov dword [ebp - 0xd28], ebx
mov byte [ebp - 0xd38], bl
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x10049230
sub eax, edx
push eax
lea ecx, [ebp - 0x210]
push ecx
lea ecx, [ebp - 0xd38]
call fcn.10009ff0
mov ecx, dword [ebp - 0xd64]
lea edx, [ebp - 0xd38]
push edx
mov dword [ebp - 4], 1
call fcn.10033630
cmp dword [ebp - 0xd24], 0x10
mov dword [ebp - 4], edi
jb 0x10049280
mov eax, dword [ebp - 0xd38]
push eax
call sub.MSVCR100.dll_void___cdecl_operator_delete_void__
add esp, 4
lea eax, [ebp - 0x310]
mov dword [ebp - 0xd40], 0xf
mov dword [ebp - 0xd44], ebx
mov byte [ebp - 0xd54], bl
lea edx, [eax + 1]
nop
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x100492a0
sub eax, edx
push eax
lea ecx, [ebp - 0x310]
push ecx
lea ecx, [ebp - 0xd54]
call fcn.10009ff0
mov ecx, dword [ebp - 0xd6c]
lea edx, [ebp - 0xd54]
push edx
mov dword [ebp - 4], 2
call fcn.10033630
cmp dword [ebp - 0xd40], 0x10
mov dword [ebp - 4], edi
jb 0x100492f0
mov eax, dword [ebp - 0xd54]
push eax
call sub.MSVCR100.dll_void___cdecl_operator_delete_void__
add esp, 4
mov dword [ebp - 0xd40], 0xf
mov dword [ebp - 0xd44], ebx
mov byte [ebp - 0xd54], bl
mov byte [ebp - 0xd55], 1
jmp 0x10049315
call dword [sym.imp.KERNEL32.dll_GetLastError]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0xd5c]
inc eax
mov dword [ebp - 0xd5c], eax
cmp eax, 0x10
mov al, byte [ebp - 0xd55]
jl 0x10049010
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.1004c4fe
mov esp, ebp
pop ebp
ret