public static void OverwriteSequenceNumbers(TagLib.Ogg.File file, long position, IDictionary<uint, int> shiftTable) { if (file == null) { throw new ArgumentNullException("file"); } if (shiftTable == null) { throw new ArgumentNullException("shiftTable"); } bool flag = true; IEnumerator<KeyValuePair<uint, int>> enumerator = shiftTable.GetEnumerator(); try { while (enumerator.MoveNext()) { KeyValuePair<uint, int> current = enumerator.Current; if (current.Value != 0) { flag = false; goto Label_0065; } } } finally { if (enumerator == null) { } enumerator.Dispose(); } Label_0065: if (flag) { return; } while (position < (file.Length - 0x1bL)) { PageHeader header = new PageHeader(file, position); int length = (int) (header.Size + header.DataSize); if (shiftTable.ContainsKey(header.StreamSerialNumber) && (shiftTable[header.StreamSerialNumber] != 0)) { file.Seek(position); ByteVector vector = file.ReadBlock(length); ByteVector data = ByteVector.FromUInt(header.PageSequenceNumber + ((uint) ((long) shiftTable[header.StreamSerialNumber])), false); for (int i = 0x12; i < 0x16; i++) { vector[i] = data[i - 0x12]; } for (int j = 0x16; j < 0x1a; j++) { vector[j] = 0; } data.Add(ByteVector.FromUInt(vector.Checksum, false)); file.Seek(position + 0x12L); file.WriteBlock(data); } position += length; } }