public bool Valid(int index, out int length, out int extra, out bool patched)
{
if (index < 0 || index >= Index.Length)
{
length = extra = 0;
patched = false;
return false;
}
Entry3D e = Index[index];
if (e.lookup < 0)
{
length = extra = 0;
patched = false;
return false;
}
length = e.length & 0x7FFFFFFF;
extra = e.extra;
if ((e.length & (1 << 31)) != 0)
{
patched = true;
return true;
}
if (e.length < 0)
{
length = extra = 0;
patched = false;
return false;
}
if ((MulPath == null) || !File.Exists(MulPath))
{
length = extra = 0;
patched = false;
return false;
}
if ((Stream == null) || (!Stream.CanRead) || (!Stream.CanSeek))
{
Stream = new FileStream(MulPath, FileMode.Open, FileAccess.Read, FileShare.Read);
}
if (Stream.Length < e.lookup)
{
length = extra = 0;
patched = false;
return false;
}
patched = false;
return true;
}