private void ParseIndex(Stream stream, int i)
{
using (var br = new BinaryReader(stream))
{
stream.Seek(-12, SeekOrigin.End);
int count = br.ReadInt32();
stream.Seek(0, SeekOrigin.Begin);
if (count * (16 + 4 + 4) > stream.Length)
throw new Exception("ParseIndex failed");
for (int j = 0; j < count; ++j)
{
MD5Hash key = br.Read<MD5Hash>();
if (key.IsZeroed()) // wtf?
key = br.Read<MD5Hash>();
if (key.IsZeroed()) // wtf?
throw new Exception("key.IsZeroed()");
IndexEntry entry = new IndexEntry();
entry.Index = i;
entry.Size = br.ReadInt32BE();
entry.Offset = br.ReadInt32BE();
CDNIndexData.Add(key, entry);
}
}
}