public void Load(string path)
 {
     using (SafeBufferAccessor access = new SafeBufferAccessor(path))
     {
         InternalReadHeader(access);
     }
 }
 private void InternalReadHeader(SafeBufferAccessor accessor)
 {
     accessor.Read(4, out m_header.blockTag);
     accessor.ReadBE(out m_header.blockLength);
     accessor.Position += 16; // unused
     accessor.ReadBE(out m_header.totalSize);
     accessor.ReadBE(out m_header.dateTime);
     accessor.ReadBE(out m_header.field2C);
     accessor.ReadBE(out m_header.flags);
     accessor.Read(4, out m_header.formatTag);
     accessor.Read(64, out m_header.makerTag);
     accessor.ReadBE(out m_header.field78);
     accessor.ReadBE(out m_header.field7C);
     accessor.ReadBE(out m_header.numEntries);
     accessor.ReadBE(out m_header.zoneInfoIndex);
     accessor.ReadBE(out m_header.isoStartIndex);
     accessor.Position += 116; // unused
     accessor.ReadBE((int)m_header.numEntries, out m_header.entryTable);
 }