// Token: 0x0600243F RID: 9279 RVA: 0x0007AE64 File Offset: 0x00079064 private static void smethod_1(Class321 pd, BinaryWriter write_stream, uint offset_orig, uint offset_new, string filename, Stream stream_orig, uint orig_start, uint orig_end, Stream stream_new, uint new_start, uint new_end) { uint num = new_end - new_start; uint num2 = orig_end - orig_start; using (Stream3 stream = new Stream3(stream_orig, (long)((ulong)orig_start), (long)((ulong)orig_end))) { using (Stream3 stream2 = new Stream3(stream_new, (long)((ulong)new_start), (long)((ulong)new_end))) { if (num == num2 && Struct43.smethod_5(stream.smethod_2(), stream2.smethod_2())) { Class292.smethod_4(pd, write_stream, 0U, null, 0U, num2, offset_orig + orig_start); } else { Class292.smethod_12(pd, Class292.smethod_15(filename), write_stream, offset_orig + orig_start, offset_new + new_start, stream, stream2); } } } }
// Token: 0x060020AB RID: 8363 RVA: 0x0006E398 File Offset: 0x0006C598 public void method_8(string filename, Struct43?passwordHash = null) { using (Stream stream = File.Open(filename, FileMode.Create, FileAccess.ReadWrite, FileShare.None)) { using (BinaryWriter binaryWriter = new BinaryWriter(stream)) { binaryWriter.Write(Class132.byte_0); binaryWriter.Write(Class132.int_0); binaryWriter.smethod_28(this.ID); long position = stream.Position; binaryWriter.smethod_25(Struct43.struct43_0); binaryWriter.smethod_33(this.UpdateUri); binaryWriter.Write(this.Name); binaryWriter.Write(this.Author); binaryWriter.Write(this.Description); binaryWriter.smethod_26(this.Version); binaryWriter.smethod_26(this.MinimumVersion); if (passwordHash != null) { binaryWriter.smethod_25(passwordHash.Value); } else if (string.IsNullOrEmpty(this.Password)) { binaryWriter.smethod_25(Struct43.struct43_0); } else { binaryWriter.smethod_25(Encoding.Unicode.GetBytes(this.Password).smethod_0()); } long position2 = stream.Position; binaryWriter.Write(0); if (this.Icon != null) { Class157.smethod_11(this.Icon, stream, Color.Black, 100); long position3 = stream.Position; stream.Position = position2; binaryWriter.Write((int)(position3 - position2 - 4L)); stream.Position = position3; } if (!this.LoaderPack) { binaryWriter.Write(this.Data.MultiFileData.Count); foreach (KeyValuePair <string, Class338> keyValuePair in ((IEnumerable <KeyValuePair <string, Class338> >) this.Data.MultiFileData)) { binaryWriter.Write(keyValuePair.Key); binaryWriter.smethod_25(keyValuePair.Value.Data.smethod_0()); } position2 = stream.Position; binaryWriter.Write(0); using (Stream3 stream2 = new Stream3(stream, stream.Position)) { using (BinaryWriter binaryWriter2 = new BinaryWriter(stream2)) { this.Data.method_17(stream2, binaryWriter2); this.DataHash = stream2.smethod_2(); } } long position3 = stream.Position; stream.Position = position2; binaryWriter.Write((int)(position3 - position2 - 4L)); stream.Position = position3; position3 = stream.Position; stream.Position = position; binaryWriter.smethod_25(this.DataHash); stream.Position = position3; } } } }
// Token: 0x06001E4A RID: 7754 RVA: 0x000624D8 File Offset: 0x000606D8 public void method_1(Stream stream_orig, Stream stream_patch, Stream stream_dest, uint?overrideExpectedStartingFileLength, Struct43 overrideExpectedStartingHash, uint?overrideExpectedResultingFileLength, Struct43 overrideExpectedResultingHash, bool validate_expected, bool validate_result) { using (Stream3 stream = new Stream3(stream_orig)) { using (Stream3 stream2 = new Stream3(stream_patch)) { using (Stream3 stream3 = new Stream3(stream_dest)) { using (BinaryReader binaryReader = new BinaryReader(stream)) { using (BinaryReader binaryReader2 = new BinaryReader(stream2)) { using (BinaryWriter binaryWriter = new BinaryWriter(stream3)) { binaryReader2.ReadUInt32(); ushort num = binaryReader2.ReadUInt16(); uint num2 = binaryReader2.ReadUInt32(); Struct43 @struct = binaryReader2.BaseStream.smethod_22(); uint num3 = binaryReader2.ReadUInt32(); Struct43 struct2 = binaryReader2.BaseStream.smethod_22(); uint num4 = 0U; if (validate_expected) { if (stream.Length != (long)((ulong)num2) && (overrideExpectedStartingFileLength == null || overrideExpectedStartingFileLength.Value != num2)) { throw new InvalidDataException(string.Format("The starting file size: '{0}' does not match the expected file size: '{1}'.", stream.Length, num2)); } Struct43 struct3 = stream_orig.smethod_2(); if (Struct43.smethod_6(struct3, @struct) && (Struct43.smethod_5(overrideExpectedStartingHash, Struct43.struct43_0) || Struct43.smethod_6(overrideExpectedStartingHash, struct3))) { throw new InvalidDataException(string.Format("The actual starting hash: '{0}' does not match the expected hash: '{1}'.", struct3, @struct)); } } byte[] buffer = new byte[4096]; int num5 = 0; uint num7; uint num10; do { ushort num6 = (ushort)(num7 = (uint)binaryReader2.ReadUInt16()); while (num6 > 0 && !binaryReader2.smethod_3()) { int num8 = binaryReader2.Read(buffer, 0, (int)((num6 > 4096) ? 4096 : num6)); binaryWriter.Write(buffer, 0, num8); num6 -= (ushort)num8; num4 += (uint)((ushort)num8); if (this.eventHandler_0 != null) { int num9 = EventArgs9.smethod_0((long)((ulong)num4), (long)((ulong)num3)); if (num5 != num9) { num5 = num9; this.eventHandler_0(this, new EventArgs9((long)((ulong)num4), (long)((ulong)num3))); } } } num6 = (ushort)(num10 = (uint)binaryReader2.ReadUInt16()); if (num6 > 0) { int num11 = binaryReader2.ReadInt32(); if (num < 2) { binaryReader.BaseStream.Seek((long)num11, SeekOrigin.Begin); } else { binaryReader.BaseStream.Seek((long)num11, SeekOrigin.Current); } while (num6 > 0 && !binaryReader2.smethod_3()) { int num8 = binaryReader.Read(buffer, 0, (int)((num6 > 4096) ? 4096 : num6)); binaryWriter.Write(buffer, 0, num8); num6 -= (ushort)num8; num4 += (uint)((ushort)num8); if (this.eventHandler_0 != null) { int num9 = EventArgs9.smethod_0((long)((ulong)num4), (long)((ulong)num3)); if (num5 != num9) { num5 = num9; this.eventHandler_0(this, new EventArgs9((long)((ulong)num4), (long)((ulong)num3))); } } } } }while (num10 != 0U || num7 != 0U); if (validate_result) { if (stream3.Length != (long)((ulong)num3)) { if (overrideExpectedResultingFileLength != null) { uint?num12 = overrideExpectedResultingFileLength; long length = stream3.Length; if ((ulong)num12.GetValueOrDefault() == (ulong)length && num12 != null) { goto IL_2D7; } } throw new InvalidDataException(string.Format("The resulting file length: '{0}' does not match the expected data length: '{1}'.", stream3.Length, num3)); } IL_2D7: Struct43 struct4 = stream3.smethod_2(); if (Struct43.smethod_6(struct4, struct2) && (Struct43.smethod_5(overrideExpectedResultingHash, Struct43.struct43_0) || Struct43.smethod_6(overrideExpectedResultingHash, struct4))) { throw new InvalidDataException(string.Format("The resulting hash: '{0}' does not match the expected hash: '{1}'.", struct4, struct2)); } } } } } } } } }