private void Parse()
        {
            int num = 0;

            if (this.entryBlob != null && this.entryBlob.Length > 1)
            {
                for (;;)
                {
                    ushort num2 = Ex12ExRenEntryParser.ParseUInt16(this.entryBlob, num);
                    if (num2 == 0)
                    {
                        break;
                    }
                    Ex12ExRenEntryParser.ExFolderEntry exFolderEntry = this.GetExFolderEntry(num2);
                    num += 2;
                    ushort num3 = Ex12ExRenEntryParser.ParseUInt16(this.entryBlob, num);
                    num += 2;
                    int num4 = num;
                    while (num - num4 < (int)num3)
                    {
                        Ex12ExRenEntryParser.ParseEntryBlock(this.entryBlob, ref num, num3, ref exFolderEntry);
                    }
                    if (num + 2 >= this.entryBlob.Length)
                    {
                        return;
                    }
                }
                return;
            }
        }
 private static void ParseEntryBlock(byte[] additionalRenEntryIdsEx, ref int index, ushort blockSize, ref Ex12ExRenEntryParser.ExFolderEntry entry)
 {
     for (;;)
     {
         int  start = index;
         uint num   = (uint)Ex12ExRenEntryParser.ParseUInt16(additionalRenEntryIdsEx, index);
         index += 2;
         ushort num2 = Ex12ExRenEntryParser.ParseUInt16(additionalRenEntryIdsEx, index);
         index     += 2;
         blockSize -= 4;
         if (num2 > blockSize)
         {
             break;
         }
         try
         {
             if (num == 1U)
             {
                 entry.EntryId = new byte[(int)num2];
                 Array.Copy(additionalRenEntryIdsEx, index, entry.EntryId, 0, (int)num2);
             }
             else if (num == 2U)
             {
                 entry.ElementId = Ex12ExRenEntryParser.ParseUInt16(additionalRenEntryIdsEx, index);
             }
             else
             {
                 entry.Unknown = new byte[(int)num2];
                 Array.Copy(additionalRenEntryIdsEx, index, entry.Unknown, 0, (int)num2);
             }
         }
         catch (ArgumentException innerException)
         {
             throw new FormatException("ParseEntryBlock", innerException);
         }
         index      += (int)num2;
         blockSize  -= num2;
         entry.Start = start;
         entry.End   = index;
         if (blockSize <= 0)
         {
             return;
         }
     }
 }