| Line 14: | 
Line 14: | 
|   |  |   |  | 
|   | ===Header version 3===  |   | ===Header version 3===  | 
| − | * byte magic[8]: "NadeoPak"
  | + |  byte magic[8];  // "NadeoPak"  | 
| − | * uint32 version (3)
  | + |  uint32 version; // 3  | 
| − | * uint64 headerIV
  | + |  uint64 headerIV;  | 
| − | * Blowfish encrypted:
  | + |  Blowfish encrypted:  | 
| − | ** uint128 headerMD5
  | + |  {  | 
| − | ** uint32 metaDataOffset
  | + |      uint128 headerMD5;  | 
| − | ** uint32 dataOffset
  | + |      uint32 metaDataOffset;  | 
| − | ** if version >= 2
  | + |      uint32 dataOffset;  | 
| − | *** uint32 metaDataUncompressedSize
  | + |      if version >= 2:  | 
| − | *** uint32 metaDataCompressedSize
  | + |      {  | 
| − | ** if version >= 3
  | + |          uint32 metaDataUncompressedSize;  | 
| − | *** uint128
  | + |          uint32 metaDataCompressedSize;  | 
| − | ** uint32 flags
  | + |      }  | 
| − | ** uint32 numFolders
  | + |      if version >= 3:  | 
| − | ** FolderEntry folders[numFolders]
  | + |          uint128 unused;  | 
| − | *** uint32 parentFolderIndex (index into folders; -1 if this is a root folder)
  | + |      uint32 flags;  | 
| − | *** string name
  | + |      uint32 numFolders;  | 
| − | ** Set up ivXor
  | + |      FolderDesc folders[numFolders]  | 
| − | ** uint32 numFiles
  | + |      {  | 
| − | ** FileEntry files[numFiles]
  | + |          uint32 parentFolderIndex; // index into folders; -1 if this is a root folder  | 
| − | *** uint32 folderIndex (index into folders)
  | + |          string name;  | 
| − | *** string name
  | + |      }  | 
| − | *** uint32
  | + |      Set up ivXor;  | 
| − | *** uint32 uncompressedSize
  | + |      uint32 numFiles;  | 
| − | *** uint32 compressedSize
  | + |      FileDesc files[numFiles]  | 
| − | *** uint32 offset
  | + |      {  | 
| − | *** uint32 [[Class IDs|classID]] (indicates the type of the file)
  | + |          uint32 folderIndex; // index into folders  | 
| − | *** uint64 flags
  | + |          string name;  | 
|   | + |          uint32 unknown;  | 
|   | + |          uint32 uncompressedSize;  | 
|   | + |          uint32 compressedSize;  | 
|   | + |          uint32 offset;  | 
|   | + |          uint32[[Class IDs | classID]]; // indicates the type of the file  | 
|   | + |          uint64 flags;  | 
|   | + |      }  | 
|   | + |  }  | 
|   |  |   |  | 
|   | ====Header MD5====  |   | ====Header MD5====  |