public void GetED2KHash(string Filename, ref string plaintext, ref string binaryvalue) { long num5; long num7 = FileSystem.FileLen(Filename); long num3 = 0L; long num6 = (long) Math.Round((double) (((double) num7) / 9728000.0)); if ((num6 * 0x947000L) < num7) { num6 += 1L; } long num4 = num6 * 0x10L; byte[] buffer = new byte[((int) num4) + 1]; long num2 = 0L; StringBuilder builder = new StringBuilder(); this.HashProgress.Value = 0; this.FileHandling = File.Open(Filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); if (num7 > 0x947000L) { do { byte[] array = new byte[0x947001]; this.HashProgress.Value = (int) Math.Round((double) ((((double) num3) / ((double) num7)) * 100.0)); Application.DoEvents(); num5 = this.FileHandling.Read(array, 0, 0x947000); byte[] buffer5 = new byte[((int) (num5 - 1L)) + 1]; long num13 = num5 - 1L; for (long j = 0L; j <= num13; j += 1L) { buffer5[(int) j] = array[(int) j]; } array = null; byte[] bytes = this.md4.ComputeHash(buffer5); buffer5 = null; string str2 = ""; int index = 0; foreach (byte num10 in bytes) { str2 = str2 + Encoding.Default.GetString(bytes, index, 1); buffer[(int) num2] = num10; num2 += 1L; index++; } bytes = null; num3 += num5; } while (num3 < num7); this.HashProgress.Value = 100; byte[] buffer3 = new byte[(buffer.GetUpperBound(0) - 1) + 1]; int num15 = buffer.GetUpperBound(0) - 1; for (int i = 0; i <= num15; i++) { buffer3[i] = buffer[i]; } byte[] buffer2 = this.md4.ComputeHash(buffer3); HashChanger changer = new HashChanger { bytehash = buffer2 }; binaryvalue = changer.rawhash; plaintext = changer.hexhash; GC.Collect(); } else { byte[] buffer9 = new byte[0x947001]; num5 = this.FileHandling.Read(buffer9, 0, 0x947000); byte[] buffer7 = new byte[((int) (num5 - 1L)) + 1]; long num16 = num5 - 1L; for (long k = 0L; k <= num16; k += 1L) { buffer7[(int) k] = buffer9[(int) k]; } buffer9 = null; byte[] buffer8 = this.md4.ComputeHash(buffer7); HashChanger changer2 = new HashChanger { bytehash = buffer8 }; binaryvalue = changer2.rawhash; plaintext = changer2.hexhash; buffer7 = null; this.HashProgress.Value = 100; GC.Collect(); } this.FileHandling.Close(); }
public void MakeOneTorrentFromFolder() { long num = 0; long num6 = 0; long num8 = 0; long num9 = 0; long num12 = 0; string[] strArray = Directory.GetFiles(this.FileNameToMake.Text, "*", SearchOption.AllDirectories); if (Strings.Right(this.FileNameToMake.Text, 1) != @"\") { this.FileNameToMake.Text = this.FileNameToMake.Text + @"\"; } TorrentDictionary dictionary2 = new TorrentDictionary(); TorrentList list = new TorrentList(); ArrayList list2 = new ArrayList(); this.OptionalHashProgress.Maximum = strArray.GetLength(0) * CountMultiplier; foreach (string str10 in strArray) { if (this.IsFileCleared(str10)) { FileStream stream; byte[] hash; IEnumerator enumerator = null; TorrentDictionary dictionary3 = new TorrentDictionary(); TorrentNumber number2 = new TorrentNumber(); TorrentList list3 = new TorrentList(); ArrayList list4 = new ArrayList(); TorrentString str11 = new TorrentString(); number2.Value = FileSystem.FileLen(str10); num12 += FileSystem.FileLen(str10); if (this.AutomaticPieceSize.Checked) { num += number2.Value; } Array array = Strings.Right(str10, Strings.Len(str10) - Strings.Len(this.FileNameToMake.Text)).Split(new char[] { '\\' }); try { enumerator = array.GetEnumerator(); while (enumerator.MoveNext()) { string str13 = Conversions.ToString(enumerator.Current); if (str13 != "") { TorrentString str14 = new TorrentString { Value = str13 }; list4.Add(str14); } } } finally { if (enumerator is IDisposable) { (enumerator as IDisposable).Dispose(); } } list3.Value = list4; dictionary3.Add("length", number2); dictionary3.Add("path", list3); StringBuilder builder = new StringBuilder(); HashChanger changer = new HashChanger(); if (number2.Value < 0x100000000L) { if (this.IncludeTiger.Checked) { string str16 = ""; this.TigerHash = new ThexThreaded(); TorrentString str15 = new TorrentString(); hash = this.TigerHash.GetTTH_Value(str10); Application.DoEvents(); int index = 0; foreach (byte num13 in hash) { str16 = str16 + Encoding.Default.GetString(hash, index, 1); index++; } str15.Value = str16; str16 = ""; hash = null; this.OptionalHashProgress.Value++; dictionary3.Add("tiger", str15); } GC.Collect(); } else { this.OptionalHashProgress.Value++; } if (this.IncludeSHA1.Checked) { TorrentString str17 = new TorrentString(); stream = new FileStream(str10, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); this.sha1.ComputeHash(stream); stream.Close(); Application.DoEvents(); hash = this.sha1.Hash; changer.bytehash = this.sha1.Hash; str17.Value = changer.rawhash; builder.Remove(0, builder.Length); hash = null; this.OptionalHashProgress.Value++; dictionary3.Add("sha1", str17); GC.Collect(); } if (this.IncludeMD5.Checked) { TorrentString str19 = new TorrentString(); stream = new FileStream(str10, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); builder = new StringBuilder(); this.md5.ComputeHash(stream); Application.DoEvents(); stream.Close(); foreach (byte num13 in this.md5.Hash) { builder.AppendFormat("{0:x2}", num13); } str19.Value = builder.ToString(); builder.Remove(0, builder.Length); hash = null; this.OptionalHashProgress.Value++; dictionary3.Add("md5sum", str19); GC.Collect(); } if (this.IncludeCRC32.Checked) { TorrentString str20 = new TorrentString(); CRC32 crc = new CRC32(); int num15 = 0; stream = new FileStream(str10, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); Stream stream2 = stream; stream = (FileStream) stream2; num15 = crc.GetCrc32(ref stream2); stream.Close(); Application.DoEvents(); str20.Value = string.Format("{0:X8}", num15); this.OptionalHashProgress.Value++; dictionary3.Add("crc32", str20); GC.Collect(); } if (this.IncludeED2K.Checked) { string str21 = ""; string str22 = ""; TorrentString str23 = new TorrentString(); this.GetED2KHash(str10, ref str22, ref str21); this.OptionalHashProgress.Value++; str23.Value = str21; dictionary3.Add("ed2k", str23); GC.Collect(); } list2.Add(dictionary3); } else { this.OptionalHashProgress.Maximum -= CountMultiplier; } } if (this.AutomaticPieceSize.Checked) { num9 = this.getautopiecesize(num); } else { num9 = Conversions.ToInteger(this.PieceSize.Text); } list.Value = list2; TorrentNumber number = new TorrentNumber { Value = num9 }; dictionary2.Add("files", list); dictionary2.Add("piece length", number); long upperBound = strArray.GetUpperBound(0); long num2 = 0L; long num3 = 0L; byte[] buffer = new byte[((int) num9) + 1]; byte[] bytes = new byte[0x15]; while (true) { if (this.IsFileCleared(strArray[(int) num2])) { this.FileHandling = File.Open(strArray[(int) num2], FileMode.Open, FileAccess.Read, FileShare.ReadWrite); if (GenerateVerbose) { Interaction.MsgBox("Current File: " + strArray[(int) num2] + "\n File offset for Piece 0 of this file: " + Conversions.ToString(num3), MsgBoxStyle.OkOnly, null); } break; } num2 += 1L; } Label_062B: Thread.Sleep(10); Application.DoEvents(); this.TorrentProgress.Value = (int) Math.Round((double) ((((double) num3) / ((double) num12)) * 100.0)); byte[] buffer4 = new byte[((int) (num9 - 1L)) + 1]; Label_0668: num6 = this.FileHandling.Read(buffer4, (int) num8, (int) (num9 - num8)); num8 += num6; if (!((num2 <= upperBound) & (num8 < num9))) { string str3 = ""; byte[] buffer5 = new byte[((int) (num8 - 1L)) + 1]; long num27 = num8 - 1L; for (long i = 0L; i <= num27; i += 1L) { buffer5[(int) i] = buffer4[(int) i]; } buffer4 = null; bytes = this.sha1.ComputeHash(buffer5); int num17 = 0; do { str3 = str3 + Encoding.Default.GetString(bytes, num17, 1); num17++; } while (num17 <= 0x13); bytes = null; num3 += num8; num8 = 0L; GC.Collect(); if (num3 >= num12) { this.FileHandling.Close(); if (GenerateVerbose) { Interaction.MsgBox("Size of files hashed: " + Conversions.ToString(num3) + " Size of files compared: " + Conversions.ToString(num12) + "\nNow Generating .torrent file", MsgBoxStyle.OkOnly, null); } this.TorrentProgress.Value = 100; string path = Strings.Left(this.FileNameToMake.Text, Strings.Len(this.FileNameToMake.Text) - 1) + ".torrent"; TorrentString str9 = new TorrentString { Value = str3 }; dictionary2.Add("pieces", str9); int num5 = Strings.Left(this.FileNameToMake.Text, Strings.Len(this.FileNameToMake.Text) - 1).LastIndexOf(@"\"); int num4 = Strings.Len(this.FileNameToMake.Text) - num5; string str8 = Strings.Right(Strings.Left(this.FileNameToMake.Text, Strings.Len(this.FileNameToMake.Text) - 1), num4 - 2); TorrentString str7 = new TorrentString { Value = str8 }; TorrentDictionary dictionary = new TorrentDictionary(); TorrentString str4 = new TorrentString(); dictionary2.Add("name", str7); str4.Value = this.AnnounceURL.Text; if (UseWSAConfig) { ArrayList returnarray = new ArrayList(); TorrentList list6 = new TorrentList(); int webSeedData = TorrentGenFamily.GetWebSeedData(returnarray); list6.Value = returnarray; if (webSeedData >= 1) { dictionary.Add("httpseeds", list6); } } TorrentString str2 = new TorrentString { Value = "Torrent Generated by VB.Net TorrentGen - Written by DWKnight" }; dictionary.Add("created by", str2); TorrentString str = new TorrentString(); if (Strings.Trim(this.TorrentComment.Text) != "") { str.Value = Strings.Trim(this.TorrentComment.Text); dictionary.Add("comment", str); } if (this.AnnounceURL.Text != "") { dictionary.Add("announce", str4); } if (this.PrivateTorrent.Checked) { TorrentNumber number3 = new TorrentNumber { Value = 1L }; dictionary2["private"] = number3; } dictionary.Add("info", dictionary2); TorrentString str5 = new TorrentString { Value = "UTF8" }; dictionary.Add("encoding", str5); if (this.MultiTrackerEnabled.Checked) { this.CheckMultitTrackerTiers(); dictionary.Add("announce-list", MultiTrackerGenerator.MultiTrackerTiers); } if (File.Exists(path)) { FileSystem.Kill(path); } int fileNumber = FileSystem.FreeFile(); FileSystem.FileOpen(fileNumber, path, OpenMode.Binary, OpenAccess.ReadWrite, OpenShare.LockReadWrite, -1); FileSystem.FilePut(fileNumber, dictionary.BEncoded, -1L, false); FileSystem.FileClose(new int[] { fileNumber }); GC.Collect(); if (this.MakeExternals.Checked) { string str26 = ""; string str28 = ""; string str29 = ""; string str30 = ""; string str32 = ""; string str34 = ""; IEnumerator enumerator2 = null; string expression = Strings.Left(this.FileNameToMake.Text, Strings.Len(this.FileNameToMake.Text) - 1); string str27 = expression + ".md5"; string str31 = expression + ".sha1"; string str25 = expression + ".ed2k"; string str33 = expression + ".tiger"; string[] strArray2 = Strings.Split(expression, @"\", -1, CompareMethod.Binary); strArray2[strArray2.GetUpperBound(0)] = Strings.Replace(strArray2[strArray2.GetUpperBound(0)], " ", ".", 1, -1, CompareMethod.Binary); strArray2[strArray2.GetUpperBound(0)] = Strings.Replace(strArray2[strArray2.GetUpperBound(0)], "_", ".", 1, -1, CompareMethod.Binary); foreach (string str35 in strArray2) { str29 = str29 + @"\" + str35; } str29 = Strings.Mid(str29, 2, Strings.Len(str29) - 1) + ".sfv"; LinkGeneration generation = new LinkGeneration(); HashChanger changer2 = new HashChanger(); try { enumerator2 = list2.GetEnumerator(); while (enumerator2.MoveNext()) { IEnumerator enumerator3 = null; TorrentDictionary current = (TorrentDictionary) enumerator2.Current; generation = new LinkGeneration(); TorrentString str36 = new TorrentString(); try { enumerator3 = ((IEnumerable) NewLateBinding.LateGet(current["path"], null, "value", new object[0], null, null, null)).GetEnumerator(); while (enumerator3.MoveNext()) { TorrentString str37 = (TorrentString) enumerator3.Current; str36 = str37; } } finally { if (enumerator3 is IDisposable) { (enumerator3 as IDisposable).Dispose(); } } if (this.IncludeMD5.Checked) { TorrentString str38 = new TorrentString(); str38 = (TorrentString) current["md5sum"]; str28 = str28 + str36.Value + " " + str38.Value + "\r\n"; } if (this.IncludeSHA1.Checked) { changer2 = new HashChanger { rawhash = Conversions.ToString(NewLateBinding.LateGet(current["sha1"], null, "value", new object[0], null, null, null)) }; str32 = str32 + str36.Value + " " + changer2.hexhash + "\r\n"; } if (this.IncludeTiger.Checked && current.Contains("tiger")) { changer2 = new HashChanger { rawhash = Conversions.ToString(NewLateBinding.LateGet(current["tiger"], null, "value", new object[0], null, null, null)) }; str34 = str34 + str36.Value + " " + changer2.base32 + "\r\n"; } if (this.IncludeCRC32.Checked) { str30 = Conversions.ToString(Operators.AddObject(Operators.AddObject(Operators.AddObject(str30 + str36.Value + " ", NewLateBinding.LateGet(current["crc32"], null, "value", new object[0], null, null, null)), '\r'), '\n')); } if (this.IncludeED2K.Checked) { generation.ED2KRaw = Conversions.ToString(NewLateBinding.LateGet(current["ed2k"], null, "Value", new object[0], null, null, null)); generation.FileSize = Conversions.ToLong(NewLateBinding.LateGet(current["length"], null, "Value", new object[0], null, null, null)); generation.FileName = str36.Value; str26 = str26 + generation.ClassicED2KLink + "\r\n"; str26 = str26 + str36.Value + " " + generation.ED2KHex + "\r\n"; } GC.Collect(); } } finally { if (enumerator2 is IDisposable) { (enumerator2 as IDisposable).Dispose(); } } if (this.IncludeMD5.Checked) { if (File.Exists(str27)) { FileSystem.Kill(str27); } int num19 = FileSystem.FreeFile(); FileSystem.FileOpen(num19, str27, OpenMode.Output, OpenAccess.Default, OpenShare.Default, -1); FileSystem.Print(num19, new object[] { str28 }); FileSystem.FileClose(new int[] { num19 }); } if (this.IncludeTiger.Checked) { if (File.Exists(str33)) { FileSystem.Kill(str33); } int num20 = FileSystem.FreeFile(); FileSystem.FileOpen(num20, str33, OpenMode.Output, OpenAccess.Default, OpenShare.Default, -1); FileSystem.Print(num20, new object[] { str34 }); FileSystem.FileClose(new int[] { num20 }); } if (this.IncludeSHA1.Checked) { if (File.Exists(str31)) { FileSystem.Kill(str31); } int num21 = FileSystem.FreeFile(); FileSystem.FileOpen(num21, str31, OpenMode.Output, OpenAccess.Default, OpenShare.Default, -1); FileSystem.Print(num21, new object[] { str32 }); FileSystem.FileClose(new int[] { num21 }); } if (this.IncludeED2K.Checked) { if (File.Exists(str25)) { FileSystem.Kill(str25); } int num22 = FileSystem.FreeFile(); FileSystem.FileOpen(num22, str25, OpenMode.Output, OpenAccess.Default, OpenShare.Default, -1); FileSystem.Print(num22, new object[] { str26 }); FileSystem.FileClose(new int[] { num22 }); } if (this.IncludeCRC32.Checked) { if (File.Exists(str29)) { FileSystem.Kill(str29); } int num23 = FileSystem.FreeFile(); FileSystem.FileOpen(num23, str29, OpenMode.Output, OpenAccess.Default, OpenShare.Default, -1); FileSystem.Print(num23, new object[] { str30 }); FileSystem.FileClose(new int[] { num23 }); } } GC.Collect(); return; } goto Label_062B; } num2 += 1L; while (true) { if (num2 > strArray.GetUpperBound(0)) { goto Label_0668; } if (this.IsFileCleared(strArray[(int) num2])) { break; } num2 += 1L; } this.FileHandling.Close(); this.FileHandling = File.Open(strArray[(int) num2], FileMode.Open, FileAccess.Read, FileShare.ReadWrite); if (GenerateVerbose) { Interaction.MsgBox("Current File: " + strArray[(int) num2] + "\n File offset for Piece 0 of this file: " + Conversions.ToString(num3), MsgBoxStyle.OkOnly, null); } goto Label_0668; }
public void MakeTorrentFromFile(string NameOfFile) { FileStream stream; string str6 = ""; string hexhash = ""; string str13 = ""; string str14 = ""; long filesize = FileSystem.FileLen(NameOfFile); TorrentString str10 = new TorrentString(); TorrentString str7 = new TorrentString(); TorrentString str5 = new TorrentString(); TorrentString str4 = new TorrentString(); TorrentString str12 = new TorrentString(); StringBuilder builder = new StringBuilder(); HashChanger changer = new HashChanger(); this.OptionalHashProgress.Maximum = CountMultiplier; this.OptionalHashProgress.Value = 0; if (filesize < 0x100000000L) { if (this.IncludeTiger.Checked) { this.TigerHash = new ThexThreaded(); changer = new HashChanger { bytehash = this.TigerHash.GetTTH_Value(NameOfFile) }; Application.DoEvents(); str12.Value = changer.rawhash; str13 = changer.base32; this.OptionalHashProgress.Value++; } } else { this.OptionalHashProgress.Value++; } if (this.IncludeSHA1.Checked) { changer = new HashChanger(); stream = new FileStream(NameOfFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); this.sha1.ComputeHash(stream); stream.Close(); Application.DoEvents(); changer.bytehash = this.sha1.Hash; str10.Value = changer.rawhash; hexhash = changer.hexhash; this.OptionalHashProgress.Value++; } if (this.IncludeMD5.Checked) { changer = new HashChanger(); stream = new FileStream(NameOfFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); this.md5.ComputeHash(stream); stream.Close(); changer.bytehash = this.md5.Hash; Application.DoEvents(); str7.Value = changer.hexhash; this.OptionalHashProgress.Value++; } if (this.IncludeCRC32.Checked) { CRC32 crc = new CRC32(); int num7 = 0; stream = new FileStream(NameOfFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); Stream stream2 = stream; stream = (FileStream) stream2; num7 = crc.GetCrc32(ref stream2); stream.Close(); str4.Value = string.Format("{0:X8}", num7); Application.DoEvents(); this.OptionalHashProgress.Value++; } if (this.IncludeED2K.Checked) { string str3 = ""; this.GetED2KHash(NameOfFile, ref str6, ref str3); this.OptionalHashProgress.Value++; str5.Value = str3; } this.FileHandling = File.Open(NameOfFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); byte[] bytes = new byte[0x15]; if (this.AutomaticPieceSize.Checked) { this.piecesizetouse = this.getautopiecesize(filesize); } else { this.piecesizetouse = Conversions.ToInteger(this.PieceSize.Text); } long num3 = 0L; this.FileHandling.Seek(0L, SeekOrigin.Begin); while (num3 < filesize) { this.TorrentProgress.Value = (int) Math.Round((double) ((((double) num3) / ((double) filesize)) * 100.0)); Application.DoEvents(); byte[] array = new byte[((int) this.piecesizetouse) + 1]; long num5 = this.FileHandling.Read(array, 0, (int) this.piecesizetouse); byte[] buffer = new byte[((int) (num5 - 1L)) + 1]; long num16 = num5 - 1L; for (long i = 0L; i <= num16; i += 1L) { buffer[(int) i] = array[(int) i]; } bytes = this.sha1.ComputeHash(buffer); int index = 0; do { str14 = str14 + Encoding.Default.GetString(bytes, index, 1); index++; } while (index <= 0x13); num3 += this.piecesizetouse; buffer = null; array = null; Thread.Sleep(10); GC.Collect(); } this.TorrentProgress.Value = 100; this.FileHandling.Close(); TorrentString str20 = new TorrentString(); int length = NameOfFile.LastIndexOf(@"\"); int num = Strings.Len(NameOfFile) - length; string str8 = Strings.Right(NameOfFile, num - 1); string str9 = Strings.Left(NameOfFile, length); TorrentString str19 = new TorrentString { Value = str8 }; TorrentString str17 = new TorrentString(); TorrentNumber number = new TorrentNumber { Value = filesize }; TorrentNumber number2 = new TorrentNumber { Value = this.piecesizetouse }; str20.Value = str14; str17.Value = "UTF8"; TorrentDictionary dictionary2 = new TorrentDictionary(); TorrentDictionary dictionary = new TorrentDictionary(); TorrentString str16 = new TorrentString { Value = this.AnnounceURL.Text }; dictionary.Add("length", number); dictionary.Add("name", str19); dictionary.Add("pieces", str20); dictionary.Add("piece length", number2); if (this.MultiTrackerEnabled.Checked) { this.CheckMultitTrackerTiers(); dictionary2.Add("announce-list", MultiTrackerGenerator.MultiTrackerTiers); } if (this.IncludeSHA1.Checked) { dictionary.Add("sha1", str10); } if (this.IncludeMD5.Checked) { dictionary.Add("md5sum", str7); } if (this.IncludeCRC32.Checked) { dictionary.Add("crc32", str4); } if (this.IncludeED2K.Checked) { dictionary.Add("ed2k", str5); } if (this.IncludeTiger.Checked) { dictionary.Add("tiger", str12); } if (UseWSAConfig) { ArrayList returnarray = new ArrayList(); TorrentList list2 = new TorrentList(); int webSeedData = TorrentGenFamily.GetWebSeedData(returnarray); list2.Value = returnarray; if (webSeedData >= 1) { dictionary2.Add("httpseeds", list2); } } TorrentString str2 = new TorrentString { Value = "Torrent Generated by VB.Net TorrentGen - Written by DWKnight" }; dictionary2.Add("created by", str2); TorrentString str = new TorrentString(); if (Strings.Trim(this.TorrentComment.Text) != "") { str.Value = Strings.Trim(this.TorrentComment.Text); dictionary2.Add("comment", str); } if (this.PrivateTorrent.Checked) { TorrentNumber number3 = new TorrentNumber { Value = 1L }; dictionary["private"] = number3; } dictionary2.Add("info", dictionary); if (this.AnnounceURL.Text != "") { dictionary2.Add("announce", str16); } dictionary2.Add("encoding", str17); int fileNumber = FileSystem.FreeFile(); string fileName = NameOfFile + ".torrent"; FileSystem.FileOpen(fileNumber, fileName, OpenMode.Binary, OpenAccess.ReadWrite, OpenShare.LockReadWrite, -1); FileSystem.FilePut(fileNumber, dictionary2.BEncoded, -1L, false); FileSystem.FileClose(new int[] { fileNumber }); bytes = null; if (this.MakeExternals.Checked) { if (this.IncludeSHA1.Checked) { int num11 = FileSystem.FreeFile(); FileSystem.FileOpen(num11, NameOfFile + ".sha1", OpenMode.Output, OpenAccess.Default, OpenShare.Default, -1); FileSystem.PrintLine(num11, new object[] { str19.Value + " " + hexhash }); FileSystem.FileClose(new int[] { num11 }); } if ((filesize <= 0x118940000L) && this.IncludeTiger.Checked) { int num12 = FileSystem.FreeFile(); FileSystem.FileOpen(num12, NameOfFile + ".tiger", OpenMode.Output, OpenAccess.Default, OpenShare.Default, -1); FileSystem.PrintLine(num12, new object[] { str19.Value + " " + str13 }); FileSystem.FileClose(new int[] { num12 }); } if (this.IncludeMD5.Checked) { int num13 = FileSystem.FreeFile(); FileSystem.FileOpen(num13, NameOfFile + ".md5", OpenMode.Output, OpenAccess.Default, OpenShare.Default, -1); FileSystem.PrintLine(num13, new object[] { str19.Value + " " + str7.Value }); FileSystem.FileClose(new int[] { num13 }); } if (this.IncludeCRC32.Checked) { int num14 = FileSystem.FreeFile(); FileSystem.FileOpen(num14, NameOfFile + ".sfv", OpenMode.Output, OpenAccess.Default, OpenShare.Default, -1); FileSystem.PrintLine(num14, new object[] { str19.Value + " " + str4.Value }); FileSystem.FileClose(new int[] { num14 }); } if (this.IncludeED2K.Checked) { LinkGeneration generation = new LinkGeneration { FileName = str19.Value, FileSize = number.Value, ED2KHex = str6 }; int num15 = FileSystem.FreeFile(); FileSystem.FileOpen(num15, NameOfFile + ".ed2k", OpenMode.Output, OpenAccess.Default, OpenShare.Default, -1); FileSystem.PrintLine(num15, new object[] { generation.ClassicED2KLink }); FileSystem.PrintLine(num15, new object[] { str19.Value + " " + generation.ED2KHex + "\r\n" }); FileSystem.FileClose(new int[] { num15 }); } } GC.Collect(); }