//------------------------------------------------
//--- 010 Editor v10.0.1 Binary Template
//
//      File: 
//   Authors: 
//   Version: 
//   Purpose: 
//  Category: 
// File Mask: 
//  ID Bytes: 
//   History: 
//------------------------------------------------
typedef struct 
{
  char magic[8];            // Always "BOMStore"
  uint version;         // Always 1
  uint numberOfBlocks;  // Number of non-null entries in BOMBlockTable
  uint indexOffset;     // Offset to index table
  uint indexLength;     // Length of index table, indexOffset + indexLength = file_length
  uint varsOffset;
  uint varsLength;
} BOMHeader;

typedef struct 
{
  uint address;
  uint length;
} BOMPointer;

typedef struct
{
  uint numberOfBlockTablePointers;  // Not all of them will be occupied. See header for number of non-null blocks
  BOMPointer blockPointers[numberOfBlockTablePointers]; // First entry must always be a null entry
} BOMBlockTable;

BigEndian();

BOMHeader header;
FSeek(header.indexOffset);
BOMBlockTable indexHeader;