private void method_17(Class504 section, Class889 byteStream) { byteStream.vmethod_15(section.DataSize); byteStream.vmethod_15(section.MaxDecompressedPageSize); byteStream.vmethod_15(section.Encrypted); byteStream.vmethod_15(section.HashCode); ulong num = (ulong)section.Name.Length; if (num > 0UL) { num = (ulong)((long)num + 1L << 1); } byteStream.vmethod_15(num); byteStream.vmethod_15(section.Unknown); byteStream.vmethod_15(section.Encoding); byteStream.vmethod_15(section.PageCount); if (num > 0UL) { byte[] bytes = Encoding.Unicode.GetBytes(section.Name); byteStream.Stream.Write(bytes, 0, bytes.Length); byteStream.vmethod_1((byte)0); byteStream.vmethod_1((byte)0); } foreach (Class443 page in section.Pages) { byteStream.vmethod_15(page.DataOffset); byteStream.vmethod_15(page.PageSize); byteStream.vmethod_13(page.Id); byteStream.vmethod_15(page.DecompressedSize); byteStream.vmethod_15(page.CompressedSize); byteStream.vmethod_15(page.CheckSum); byteStream.vmethod_15(page.Crc); } }
private void method_25(Stream pageHeaderStream, Class617 section, Class616 page, int pageType) { Class889 class889 = Class889.Create(pageHeaderStream, this.dxfVersion_0, this.encoding_0); class889.vmethod_9(pageType); class889.vmethod_9(section.SectionId); class889.vmethod_9(page.CompressedSize); class889.vmethod_9(page.PageSize); class889.vmethod_13((long)page.StartOffset); class889.vmethod_11(page.HeaderChecksum); class889.vmethod_11(page.DataChecksum); }
private void method_18() { this.class442_0.StreamOffset = 0UL; ulong pageSize = this.method_19(this.list_1.Count); long num1 = (long)(this.list_1.Count + 1 + 2); if (pageSize <= 1024UL) { Class441 class441 = this.list_1[0]; long num2 = num1; long num3 = num2 + 1L; class441.Id = num2; this.list_1[1].Id = num3; this.class954_0.PagesMapId = (ulong)this.list_1[0].Id; this.class954_0.PagesMapOffset = this.list_1[0].StreamOffset; this.class954_0.PagesMap2Id = (ulong)this.list_1[1].Id; this.class954_0.PagesMap2Offset = this.list_1[1].StreamOffset; } else { Class441 class441_1 = this.list_1[0]; long num2 = num1; long num3 = num2 + 1L; long num4 = -num2; class441_1.Id = num4; Class441 class441_2 = this.list_1[1]; long num5 = num3; long num6 = num5 + 1L; long num7 = -num5; class441_2.Id = num7; uint num8 = (uint)(this.stream_0.Position - 1152L); Class442 class442_1 = new Class442(); Class442 class442_2 = class442_1; long num9 = num6; long num10 = num9 + 1L; class442_2.Id = num9; class442_1.StreamOffset = (ulong)(num8 - 1152U); this.list_1.Add((Class441)class442_1); Class442 class442_3 = new Class442(); class442_3.Id = num10; class442_3.StreamOffset = (ulong)((long)num8 + (long)pageSize - 1152L); this.list_1.Add((Class441)class442_3); } this.class954_0.PagesMaxId = 0UL; this.class954_0.PageCount = (ulong)(uint)this.list_1.Count; this.class954_0.PagesMapOffset = this.class442_0.StreamOffset; MemoryStream sectionStream = new MemoryStream(); Class889 class889 = Class889.Create((Stream)sectionStream, this.dxfVersion_0, this.encoding_0); foreach (Class441 class441 in this.list_1) { if (class441 != null) { class889.vmethod_13(class441.Length); class889.vmethod_13(class441.Id); if (class441.Id > (long)this.class954_0.PagesMaxId) { this.class954_0.PagesMaxId = (ulong)class441.Id; } } } byte[] pageData; this.method_20(this.class442_0, sectionStream, this.class954_0.PagesMapCrcSeed, pageSize, out pageData); this.class442_0.Length = (long)pageData.Length; long id = this.class442_1.Id; this.class442_1.CopyFrom(this.class442_0); this.class442_1.Id = id; this.class442_1.StreamOffset = 1024UL; this.stream_0.Position = (long)this.class954_0.PagesMapOffset + 1152L; this.stream_0.Write(pageData, 0, pageData.Length); this.stream_0.Position = (long)this.class954_0.PagesMap2Offset + 1152L; this.stream_0.Write(pageData, 0, pageData.Length); this.class954_0.PagesMapDataRepeatCount = this.class442_0.DataRepeatCount; this.class954_0.PagesMapSizeCompressed = this.class442_0.CompressedSize; this.class954_0.PagesMapSizeDecompressed = this.class442_0.DecompressedSize; this.class954_0.PagesMapCrcCompressed = this.class442_0.CompressedCrc; this.class954_0.PagesMapCrcDecompressed = this.class442_0.DecompressedCrc; }
private unsafe void method_1() { this.stream_0.Position = this.stream_0.Length; this.class954_0.FileSize = (ulong)(this.stream_0.Length + 1024L); this.class954_0.Header2Offset = (ulong)(this.stream_0.Position - 1152L); this.class954_0.SectionsMapCrcSeed = this.class995_0.method_2((uint)this.class954_0.SectionsMapCrcSeed); this.class954_0.PagesMapCrcSeed = this.class995_0.method_2((uint)this.class954_0.PagesMapCrcSeed); Class888 class888 = new Class888(); class888.method_0(this.class954_0.CrcSeed, this.class995_0); this.class954_0.CrcSeedEncoded = this.class995_0.method_2((uint)(this.class954_0.CrcSeed & (ulong)ushort.MaxValue)); MemoryStream memoryStream1 = new MemoryStream(); Class889 byteStream = Class889.Create((Stream)memoryStream1, this.dxfVersion_0, this.encoding_0); this.method_3(byteStream); ulong num1 = Class656.class656_0.method_0(memoryStream1.GetBuffer(), 0U, (uint)memoryStream1.Length, Class656.smethod_1(0UL, (uint)memoryStream1.Length)); memoryStream1.Position = 264L; byteStream.vmethod_15(num1); Class955 class955 = new Class955(); MemoryStream memoryStream2 = new MemoryStream(); class955.method_1(memoryStream1.GetBuffer(), 0, (int)memoryStream1.Length, (Stream)memoryStream2); if (memoryStream2.Length >= memoryStream1.Length) { memoryStream2 = memoryStream1; } ulong num2 = Class656.class656_0.method_0(memoryStream2.GetBuffer(), 0U, (uint)memoryStream2.Length, Class656.smethod_1(0UL, (uint)memoryStream2.Length)); MemoryStream memoryStream3 = new MemoryStream(12); Class889 class889_1 = Class889.Create((Stream)memoryStream3, this.dxfVersion_0, this.encoding_0); ulong control = this.class995_0.method_1(); class889_1.vmethod_15(control); class889_1.vmethod_15(Class888.smethod_0(control, control)); ulong num3 = Class656.class656_0.method_0(memoryStream3.GetBuffer(), 0U, (uint)memoryStream3.Length, Class656.smethod_0(0UL, (uint)memoryStream3.Length)); MemoryStream memoryStream4 = new MemoryStream(1024); Class889 class889_2 = Class889.Create((Stream)memoryStream4, this.dxfVersion_0, this.encoding_0); class889_2.vmethod_15(num3); class889_2.vmethod_15(control); class889_2.vmethod_15(num2); if (memoryStream2.Length < 272L) { class889_2.vmethod_13(memoryStream2.Length); } else { if (memoryStream2.Length != 272L) { throw new Exception(); } class889_2.vmethod_13(-272L); } memoryStream4.Write(memoryStream2.GetBuffer(), 0, (int)memoryStream2.Length); uint num4 = Class746.class746_0.K * 3U; uint length = (uint)class889_2.Stream.Length; uint num5 = (uint)((ulong)(uint)((int)length + 8 - 1) & 18446744073709551608UL); uint paddingSize1 = num5 - length; this.method_25((Stream)memoryStream4, paddingSize1); uint num6 = num4 / num5; for (int index = 1; (long)index < (long)num6; ++index) { memoryStream4.Write(memoryStream4.GetBuffer(), 0, (int)num5); } uint paddingSize2 = num4 - (uint)memoryStream4.Length; this.method_25((Stream)memoryStream4, paddingSize2); byte[] buffer = new byte[1024]; fixed(byte *source = memoryStream4.GetBuffer()) fixed(byte *destination = buffer) { this.method_28(destination, source, (int)num4, Class746.class746_0); this.method_24(destination + 765, 259U); } MemoryStream memoryStream5 = new MemoryStream(buffer, true); memoryStream5.Position = memoryStream5.Length - 40L; class888.Write((Stream)memoryStream5); if (memoryStream5.Length != 1024L) { throw new Exception(); } this.stream_0.Write(buffer, 0, buffer.Length); this.stream_0.Position = 128L; this.stream_0.Write(buffer, 0, buffer.Length); }