Function at 0x40f250
Capabilities:
Get storage device properties

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x2c14
call fcn.00422b60
push ebx
push esi
push edi
push 0xef6fffff
mov ebx, ecx
push 0xa709ffff
call fcn.0040e910
xor edi, edi
push 0x5117ffff
push 0xcdabffff
mov word [0x42ca64], ax
mov dword [ebp - 4], edi
call fcn.0040e7a0
add word [0x42ca54], ax
mov ecx, dword [0x42ca80]
movsx eax, word [0x42ca64]
or eax, ecx
mov ecx, dword [0x42ca68]
push ecx
push 0xbb97ffff
mov dword [0x42ca8c], eax
call fcn.0040ea40
mov cl, byte [0x42ca4e]
add esp, 0x18
add cl, al
mov dword [ebp - 8], edi
mov byte [0x42ca4e], cl
movsx edx, word [0x42ca58]
movsx eax, byte [0x42ca4b]
mov ecx, dword [0x42ca74]
sub edx, eax
mov al, byte [0x42bd20]
sub al, 0xb
lea edx, [edx + ecx - 0x6445ffff]
and eax, 0xff
mov dword [0x42ca68], edx
add eax, 3
and al, 0xfc
call fcn.00422b60
mov eax, esp
push edi
push 0x42bd20
push eax
call fcn.00420bc0
add esp, 8
push eax
lea eax, [ebp - 0x11c]
push eax
call dword [sym.imp.MSVCRT.dll_sprintf]
mov ecx, dword [0x42ca84]
push 0x285bffff
push ecx
call fcn.0040e9b0
add esp, 0x14
lea edx, [ebp - 0x11c]
mov byte [0x42ca50], al
push 0
push 0
push 3
push 0
push 3
push 0
push edx
call dword [0x42d064]
mov ecx, dword [0x42ca70]
mov esi, eax
movsx edx, byte [0x42ca4f]
mov eax, 0x438fffff
mov dword [ebp - 0xc], esi
sub eax, ecx
movsx ecx, byte [0x42ca51]
push ecx
push edx
mov dword [0x42ca88], eax
call fcn.0040e960
mov edx, dword [0x42ca8c]
mov cl, byte [0x42ca4d]
add esp, 8
add edx, eax
dec cl
cmp esi, 0xffffffff
mov dword [0x42ca8c], edx
mov byte [0x42ca4d], cl
je 0x40f882
mov al, byte [0x42ca74]
mov cl, byte [0x42ca50]
mov dl, byte [0x42ca51]
or al, cl
movsx ecx, word [0x42ca62]
xor edi, edi
add dl, al
push 0x43c7ffff
push ecx
mov dword [ebp - 0x10], edi
mov byte [0x42ca51], dl
call fcn.0040e7e0
mov ecx, dword [0x42ca88]
xor edx, edx
add ecx, eax
mov eax, dword [0x42ca80]
mov dword [ebp - 0x1c], edx
mov dword [0x42ca88], ecx
mov ecx, dword [0x42ca78]
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x14], edx
mov edx, dword [0x42ca84]
add ecx, eax
push 0xa933ffff
add edx, ecx
mov dword [ebp - 0x1c], edi
mov dword [0x42ca84], edx
mov dword [ebp - 0x18], edi
movsx edx, word [0x42ca58]
push edx
call fcn.0040e840
mov dl, byte [0x42ca4b]
mov ecx, 0x9c4
add dl, al
xor eax, eax
lea edi, [ebp - 0x2c14]
push 0x6197ffff
rep stosd dword es:[edi], eax
mov ecx, dword [0x42ca80]
mov eax, 0xe205ffff
sub eax, ecx
push 0xde15ffff
mov byte [0x42ca4b], dl
mov dword [0x42ca6c], eax
call fcn.0040e910
add esp, 0x18
lea ecx, [ebp - 0x10]
inc word [0x42ca54]
lea edx, [ebp - 0x2c14]
push 0
push ecx
mov byte [0x42ca4f], al
push 0x2710
push edx
lea eax, [ebp - 0x1c]
push 0xc
push eax
push 0x2d1400
push esi
call dword [0x42d07c]
test eax, eax
je 0x40f7fb
movsx ecx, word [0x42ca5a]
inc word [0x42ca64]
push ecx
push 0x2975ffff
call fcn.0040e910
movsx edx, word [0x42ca62]
push 0x871ffff
push edx
mov byte [0x42ca4a], al
call fcn.0040e960
mov cl, byte [0x42ca4b]
add esp, 0x10
add cl, al
mov eax, dword [ebp - 0x2bfc]
mov byte [0x42ca4b], cl
lea ecx, [ebp + eax - 0x2c14]
push ecx
mov ecx, ebx
call fcn.0040ee70
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebp - 0x504]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x4b61ffff
mov eax, ecx
mov esi, edi
mov edi, edx
push 0x9817ffff
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.0040e840
mov ecx, dword [ebp - 0x2c04]
push 0x3055ffff
push 0x397ffff
mov dword [0x42ca8c], eax
mov byte [0x42ca51], 0xff
lea esi, [ebp + ecx - 0x2c14]
call fcn.0040e9b0
mov cx, word [0x42ca54]
mov edx, dword [ebp - 0x2c00]
add cx, ax
push 0x7f2fffff
movsx ax, byte [0x42ca4a]
mov word [0x42ca54], cx
lea edi, [ebp + edx - 0x2c14]
mov dl, byte [0x42ca51]
push 0x53ffffff
neg eax
inc cl
mov word [0x42ca64], ax
add dl, cl
mov byte [0x42ca51], dl
call fcn.0040e8d0
mov ecx, dword [0x42ca6c]
mov dword [0x42ca68], eax
push ecx
push 0x7eedffff
call fcn.0040e7e0
movsx edx, byte [0x42ca50]
mov ecx, dword [0x42ca68]
add word [0x42ca58], ax
and edx, 0x7f29ffff
add esp, 0x20
add ecx, edx
mov dword [0x42ca68], ecx
mov al, byte [ebx]
test al, al
jne 0x40f637
cmp byte [esi], 0
je 0x40f637
push 0x400
push esi
mov esi, dword [sym.imp.MSVCRT.dll_strncpy]
push ebx
call esi
mov cl, byte [0x42ca4e]
xor eax, eax
test cl, cl
mov cl, byte [0x42ca49]
setne al
add cl, al
movsx eax, cl
push eax
push 0x49ffff
mov byte [0x42ca49], cl
call fcn.0040e8d0
mov ecx, dword [0x42ca74]
add esp, 0x14
add ecx, eax
mov dword [0x42ca74], ecx
mov byte [ebx + 0x3ff], 0
jmp 0x40f63d
mov esi, dword [sym.imp.MSVCRT.dll_strncpy]
mov word [0x42ca54], 1
mov al, byte [ebx + 0x400]
test al, al
jne 0x40f720
cmp byte [edi], 0
je 0x40f720
movsx cx, byte [0x42ca4d]
movsx edx, byte [0x42ca4a]
mov eax, dword [0x42ca8c]
dec ecx
add word [0x42ca56], cx
mov ecx, dword [0x42ca68]
add edx, eax
push 0x4afdffff
movsx eax, word [0x42ca52]
add ecx, edx
push eax
mov dword [0x42ca68], ecx
call fcn.0040e7a0
add word [0x42ca62], ax
push 0x400
lea eax, [ebx + 0x400]
push edi
push eax
call esi
mov edi, dword [0x42ca88]
xor eax, eax
add esp, 0x14
cmp word [0x42ca5c], ax
setne al
add edi, eax
mov dword [0x42ca88], edi
mov byte [ebx + 0x7ff], 0
movsx ecx, word [0x42ca58]
mov eax, dword [0x42ca80]
and ecx, 0xfcdffff
movsx edx, byte [0x42ca51]
add eax, ecx
mov edi, dword [0x42ca8c]
mov dword [0x42ca80], eax
mov al, byte [0x42ca4b]
movsx ecx, al
and edx, ecx
mov ecx, dword [0x42ca78]
add edi, edx
movsx dx, al
or edx, ecx
mov dword [0x42ca8c], edi
add word [0x42ca5c], dx
push 0x4e21ffff
push 0x7ac9ffff
call fcn.0040e960
mov dword [0x42ca70], eax
mov cl, byte [ebx + 0x800]
lea eax, [ebx + 0x800]
add esp, 8
test cl, cl
jne 0x40f7ef
mov cl, byte [ebp - 0x504]
test cl, cl
je 0x40f7ef
movsx ecx, byte [0x42ca4c]
movsx edx, byte [0x42ca4a]
sub ecx, edx
push 0x400
mov dword [0x42ca84], ecx
lea ecx, [ebp - 0x504]
push ecx
push eax
call esi
movsx edx, word [0x42ca5a]
push 0x4e4dffff
push edx
call fcn.0040e9b0
mov cl, byte [0x42ca4b]
mov dword [0x42ca8c], 0x87c80000
add cl, al
movsx eax, word [0x42ca5c]
push eax
push 0x2399ffff
mov byte [0x42ca4b], cl
call fcn.0040e840
mov ecx, dword [0x42ca8c]
push 0x1b37ffff
add ecx, eax
push 0xb76dffff
mov dword [0x42ca8c], ecx
mov byte [ebx + 0xbff], 0
call fcn.0040e7a0
mov cl, byte [0x42ca4c]
add esp, 0x24
add cl, al
mov byte [0x42ca4c], cl
mov esi, dword [ebp - 0xc]
mov dword [ebp - 4], 1
jmp 0x40f851
movsx cx, byte [0x42ca4e]
movsx eax, word [0x42ca5e]
or edx, 0xffffffff
push eax
sub edx, ecx
movsx ecx, word [0x42ca60]
add word [0x42ca64], dx
push ecx
call fcn.0040e9f0
mov dl, byte [0x42ca50]
add esp, 8
add dl, al
movsx eax, word [0x42ca54]
mov byte [0x42ca50], dl
movsx edx, byte [0x42ca4a]
sub edx, eax
mov eax, dword [0x42ca78]
add eax, edx
mov dword [0x42ca78], eax
push 0x7acbffff
push 0x5325ffff
call fcn.0040e7e0
mov edx, dword [0x42ca7c]
add esp, 8
add edx, eax
push esi
mov dword [0x42ca7c], edx
call dword [0x42d088]
mov eax, dword [ebp - 4]
test eax, eax
jne 0x40f88f
mov edi, dword [ebp - 8]
inc edi
cmp edi, 0x10
mov dword [ebp - 8], edi
jl 0x40f2cb
mov ecx, dword [0x42ca6c]
push 0x7ae3ffff
push ecx
call fcn.0040e9b0
mov byte [0x42ca48], al
mov al, byte [0x42ca5a]
add esp, 8
imul byte [0x42ca70]
lea esp, [ebp - 0x2c20]
mov byte [0x42ca4d], al
mov eax, dword [ebp - 4]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret