internal static byte[] smethod_3(long long_0, Stream stream_0) { try { return(Class5.smethod_2(stream_0)); } catch (HostProtectionException ex) { return(Class5.smethod_4(97L, stream_0)); } }
public static bool smethod_2(ref NotifyIconData notifyIconData_0, NotifyCommand notifyCommand_0, IconDataMembers iconDataMembers_0) { if (Boolean_0) { return(true); } notifyIconData_0.ValidMembers = iconDataMembers_0; object obj2 = object_0; lock (obj2) { return(Class5.Shell_NotifyIcon(notifyCommand_0, ref notifyIconData_0)); } }
static Class5() { Class5.class5_0 = new Class5(); }
internal static byte[] smethod_4(long long_0, Stream stream_0) { Stream stream = stream_0; MemoryStream memoryStream = (MemoryStream)null; for (int index = 1; index < 4; ++index) { stream_0.ReadByte(); } ushort num1 = ~(ushort)stream_0.ReadByte(); if (((int)num1 & 2) != 0) { DESCryptoServiceProvider cryptoServiceProvider = new DESCryptoServiceProvider(); byte[] buffer1 = new byte[8]; stream_0.Read(buffer1, 0, 8); cryptoServiceProvider.IV = buffer1; byte[] buffer2 = new byte[8]; stream_0.Read(buffer2, 0, 8); bool flag = true; foreach (byte num2 in buffer2) { if (num2 != (byte)0) { flag = false; break; } } if (flag) { buffer2 = Class5.smethod_1(Assembly.GetExecutingAssembly()); } cryptoServiceProvider.Key = buffer2; if (Class5.memoryStream_0 == null) { Class5.memoryStream_0.Capacity = Class5.int_0 != int.MaxValue ? Class5.int_0 : (int)stream_0.Length; } Class5.memoryStream_0.Position = 0L; ICryptoTransform decryptor = cryptoServiceProvider.CreateDecryptor(); int inputBlockSize = decryptor.InputBlockSize; int outputBlockSize = decryptor.OutputBlockSize; byte[] numArray1 = new byte[decryptor.OutputBlockSize]; byte[] numArray2 = new byte[decryptor.InputBlockSize]; int position = (int)stream_0.Position; while ((long)(position + inputBlockSize) < stream_0.Length) { stream_0.Read(numArray2, 0, inputBlockSize); int count = decryptor.TransformBlock(numArray2, 0, inputBlockSize, numArray1, 0); Class5.memoryStream_0.Write(numArray1, 0, count); position += inputBlockSize; } stream_0.Read(numArray2, 0, (int)(stream_0.Length - (long)position)); byte[] buffer3 = decryptor.TransformFinalBlock(numArray2, 0, (int)(stream_0.Length - (long)position)); Class5.memoryStream_0.Write(buffer3, 0, buffer3.Length); stream = (Stream)Class5.memoryStream_0; stream.Position = 0L; memoryStream = Class5.memoryStream_0; } if (((int)num1 & 8) != 0) { if (Class5.memoryStream_1 == null) { Class5.memoryStream_1.Capacity = Class5.int_1 != int.MinValue ? Class5.int_1 : (int)stream.Length * 2; } Class5.memoryStream_1.Position = 0L; DeflateStream deflateStream = new DeflateStream(stream, CompressionMode.Decompress); int count1 = 1000; byte[] buffer = new byte[1000]; int count2; do { count2 = deflateStream.Read(buffer, 0, count1); if (count2 > 0) { goto label_22; } label_21: continue; label_22: Class5.memoryStream_1.Write(buffer, 0, count2); goto label_21; }while (count2 >= count1); memoryStream = Class5.memoryStream_1; } if (memoryStream != null) { return(memoryStream.ToArray()); } byte[] buffer4 = new byte[stream_0.Length - stream_0.Position]; stream_0.Read(buffer4, 0, buffer4.Length); return(buffer4); }
internal static byte[] smethod_2(Stream stream_0) { lock (Class5.object_0) return(Class5.smethod_4(97L, stream_0)); }