Function at 0x40e770
Capabilities:
Get storage device properties

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x42c4f1
mov eax, dword fs:[0]
push eax
sub esp, 0xd64
mov eax, dword [0x435080]
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 dword [ebp - 0xd60], eax
xor al, al
xor ebx, ebx
xor edi, edi
mov dword [ebp - 0xd68], ecx
mov dword [ebp - 0xd70], edx
mov byte [ebp - 0xd55], al
mov dword [ebp - 0xd5c], edi
cmp al, bl
jne 0x40eaf3
push 0x200
lea eax, [ebp - 0x510]
push ebx
push eax
call fcn.00411510
push edi
push str..PhysicalDrive_d
push 0xffffffffffffffff
lea ecx, [ebp - 0x510]
push 0xff
push ecx
call fcn.004203cc
add esp, 0x20
push ebx
push ebx
push 3
push ebx
push 3
push ebx
lea edx, [ebp - 0x510]
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
mov dword [ebp - 0xd64], esi
cmp esi, 0xffffffff
je 0x40eadd
xor eax, eax
mov dword [ebp - 0xd1c], eax
mov dword [ebp - 0xd18], eax
push 0x800
mov dword [ebp - 0xd14], eax
lea eax, [ebp - 0xd10]
push ebx
push eax
mov dword [ebp - 0xd6c], ebx
mov dword [ebp - 0xd1c], ebx
mov dword [ebp - 0xd18], ebx
call fcn.00411510
add esp, 0xc
push ebx
lea ecx, [ebp - 0xd6c]
push ecx
push 0x800
lea edx, [ebp - 0xd10]
push edx
push 0xc
lea eax, [ebp - 0xd1c]
push eax
push 0x2d1400
push esi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x40eaca
push 0xff
lea ecx, [ebp - 0x10f]
push ebx
push ecx
mov byte [ebp - 0x110], bl
call fcn.00411510
push 0xff
lea edx, [ebp - 0x20f]
push ebx
push edx
mov byte [ebp - 0x210], bl
call fcn.00411510
push 0xff
lea eax, [ebp - 0x30f]
push ebx
push eax
mov byte [ebp - 0x310], bl
call fcn.00411510
mov eax, dword [ebp - 0xd00]
push ebx
lea edi, [ebp - 0x210]
lea ecx, [ebp - 0xd10]
call fcn.0040e000
mov eax, dword [ebp - 0xcfc]
push ebx
lea edi, [ebp - 0x310]
lea ecx, [ebp - 0xd10]
call fcn.0040e000
mov eax, dword [ebp - 0xcf8]
push 1
lea edi, [ebp - 0x110]
lea ecx, [ebp - 0xd10]
call fcn.0040e000
movsx ecx, byte [ebp - 0x110]
push ecx
call fcn.00420316
add esp, 0x34
test eax, eax
jne 0x40e94a
movsx edx, byte [ebp - 0xfd]
push edx
call fcn.00420316
add esp, 4
test eax, eax
je 0x40ead0
lea eax, [ebp - 0x110]
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 0x40e970
sub eax, edx
push eax
lea eax, [ebp - 0x110]
push eax
lea ecx, [ebp - 0xd38]
call fcn.00404010
mov esi, dword [ebp - 0xd60]
lea edi, [ebp - 0xd38]
mov dword [ebp - 4], ebx
call fcn.00403e00
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0xd24], 0x10
jb 0x40e9bf
mov ecx, dword [ebp - 0xd38]
push ecx
call fcn.00410f3b
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]
mov edi, edi
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x40e9e0
sub eax, edx
push eax
lea edx, [ebp - 0x210]
push edx
lea ecx, [ebp - 0xd38]
call fcn.00404010
mov esi, dword [ebp - 0xd68]
lea edi, [ebp - 0xd38]
mov dword [ebp - 4], 1
call fcn.00403e00
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0xd24], 0x10
jb 0x40ea33
mov eax, dword [ebp - 0xd38]
push eax
call fcn.00410f3b
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]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x40ea52
sub eax, edx
push eax
lea ecx, [ebp - 0x310]
push ecx
lea ecx, [ebp - 0xd54]
call fcn.00404010
mov esi, dword [ebp - 0xd70]
lea edi, [ebp - 0xd54]
mov dword [ebp - 4], 2
call fcn.00403e00
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0xd40], 0x10
jb 0x40eaa5
mov edx, dword [ebp - 0xd54]
push edx
call fcn.00410f3b
add esp, 4
mov esi, dword [ebp - 0xd64]
mov dword [ebp - 0xd40], 0xf
mov dword [ebp - 0xd44], ebx
mov byte [ebp - 0xd54], bl
mov byte [ebp - 0xd55], 1
jmp 0x40ead0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edi, dword [ebp - 0xd5c]
mov al, byte [ebp - 0xd55]
inc edi
mov dword [ebp - 0xd5c], edi
cmp edi, 0x10
jl 0x40e7c5
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.00410f46
mov esp, ebp
pop ebp
ret