internal void LoadHeaders(AssetLoader loader)
{
BinaryReader reader = loader.Reader;
reader.BaseStream.Position = HeaderOffset;
Unknowns.ReadBytes(reader, 447);
byte[] encryptedTitleKey = reader.ReadBytes(16);
Unknowns.ReadBytes(reader, 13);
byte[] titleId = reader.ReadBytes(16);
Unknowns.ReadBytes(reader, 204);
DataOffset = reader.ReadUInt32() * 4L + HeaderOffset;
DataLength = reader.ReadUInt32() * 4L;
byte[] keyIv = new byte[16];
titleId.CopyTo(0, 8, keyIv, 0);
ICryptoTransform keyDecryptor = Cypher.CreateDecryptor(MasterKey, keyIv);
Key = keyDecryptor.TransformFinalBlock(encryptedTitleKey, 0, encryptedTitleKey.Length);
LoadFileTable(this, OpenReader(), NintendoOpticalDiscSystem.Wii);
SortChildrenRecursively();
}