Alexandria.Platforms.Wii.NintendoOpticalDiscPartition.LoadHeaders C# (CSharp) Method

LoadHeaders() private method

private LoadHeaders ( AssetLoader loader ) : void
loader Glare.Assets.AssetLoader
return void
        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();
        }