public void DoNetworkMessageData(NetLink.Network.Packet packet, MessageType message)
 {
     if (ProtectLoader.Debug)
     {
         UnityEngine.Debug.Log(string.Concat(new object[] { Class3.smethod_10(0x418), network_0.RemoteEndPoint, Class3.smethod_10(0x456), message }));
     }
     if (message == MessageType.Checksum)
     {
         int num2 = packet_0.Read <int>();
         verifyFile_0 = new VerifyFile[num2];
         for (int i = 0; i < num2; i++)
         {
             verifyFile_0[i] = new VerifyFile {
                 Filename = packet_0.Read <string>(), Filesize = packet_0.Read <long>()
             };
         }
         thread_1 = new Thread(new ThreadStart(Protection.smethod_6));
         thread_1.Start();
     }
     else if (message == MessageType.Screenshot)
     {
         RustProtect.Snapshot.Singleton.CaptureSnapshot();
         base.InvokeRepeating(Class3.smethod_10(0x4a4), 0f, 0.1f);
     }
     else if (message == MessageType.OverrideItems)
     {
         int num4 = packet.Read <int>();
         for (int j = 0; j < num4; j++)
         {
             try
             {
                 BlueprintDataBlock block2;
                 ItemDataBlock      byName = DatablockDictionary.GetByName(packet.Read <string>());
                 if (byName == null)
                 {
                     throw new Exception();
                 }
                 byName.itemDescriptionOverride = packet.Read <string>();
                 byName.isResearchable          = packet.Read <bool>();
                 byName.isRecycleable           = packet.Read <bool>();
                 byName.isRepairable            = packet.Read <bool>();
                 byName._splittable             = packet.Read <bool>();
                 byName.doesLoseCondition       = packet.Read <bool>();
                 byName._maxCondition           = packet.Read <float>();
                 byName._minUsesForDisplay      = packet.Read <int>();
                 byName._spawnUsesMin           = packet.Read <int>();
                 byName._spawnUsesMax           = packet.Read <int>();
                 if (packet.Read <bool>() && smethod_9(byName, out block2))
                 {
                     block2.numResultItem    = packet.Read <int>();
                     block2.craftingDuration = packet.Read <float>();
                     block2.RequireWorkbench = packet.Read <bool>();
                     int num5 = packet.Read <int>();
                     System.Collections.Generic.List <BlueprintDataBlock.IngredientEntry> list = new System.Collections.Generic.List <BlueprintDataBlock.IngredientEntry>();
                     for (int k = 0; k < num5; k++)
                     {
                         BlueprintDataBlock.IngredientEntry item = new BlueprintDataBlock.IngredientEntry {
                             amount     = packet.Read <int>(),
                             Ingredient = DatablockDictionary.GetByName(packet.Read <string>())
                         };
                         if ((item.amount > 0) && (item.Ingredient != null))
                         {
                             list.Add(item);
                         }
                     }
                     block2.ingredients = list.ToArray();
                 }
             }
             catch (Exception)
             {
                 UnityEngine.Debug.Log(Class3.smethod_10(0x460));
                 return;
             }
         }
     }
 }
 public static void Initialize(string url, int port, byte[] assembly_bytes)
 {
     string_1 = url;
     int_0    = port;
     if (!Process32.IsRunAsAdministrator)
     {
         UnityEngine.Debug.LogError(Class3.smethod_10(0x11cc));
         UnityEngine.Debug.LogError(Class3.smethod_10(0x1288));
         UnityEngine.Debug.LogError(Class3.smethod_10(0x1316));
         UnityEngine.Debug.LogError(Class3.smethod_10(0x11cc));
     }
     else
     {
         if (ProtectLoader.Debug)
         {
             UnityEngine.Debug.Log(string.Concat(new object[] { Class3.smethod_10(0x13a6), url, Class3.smethod_10(840), port }));
         }
         Steam_ID = ClientConnect.Steam_GetSteamID();
         Username = Marshal.PtrToStringAnsi(ClientConnect.Steam_GetDisplayname());
         string_3 = hardware_0.String_0;
         string_4 = Application.systemLanguage.ToString();
         if (ProtectLoader.Debug)
         {
             UnityEngine.Debug.Log(string.Concat(new object[] { Class3.smethod_10(0x13fe), Steam_ID, Class3.smethod_10(0x1416), Username, Class3.smethod_10(0x1430), string_4, Class3.smethod_10(0x144a), string_3 }));
         }
         EncryptionKey = new SHA512CryptoServiceProvider().ComputeHash(assembly_bytes);
         network_0     = new NetLink.Network(string_1, int_0);
         if (ProtectLoader.Debug)
         {
             UnityEngine.Debug.Log(Class3.smethod_10(0x1468) + network_0.Connected.ToString());
         }
         if ((network_0.Connected && (string_3 != null)) && (string_3.Length == 0x20))
         {
             Assembly[]             assemblies = Assemblies;
             NetLink.Network.Packet packet     = new NetLink.Network.Packet(NetLink.Network.PacketType.Firstpass, NetLink.Network.PacketFlag.Compressed, null);
             packet.Write <ushort>(MessageType.Connect);
             packet.Write <ulong>(Steam_ID);
             packet.Write <string>(Username);
             packet.Write <string>(string_3);
             packet.Write <int>(assemblies.Length);
             foreach (Assembly assembly in assemblies)
             {
                 packet.Write <string>(assembly.GetName().Name);
             }
             network_0.Send(packet);
             packet_0 = network_0.Receive(0x7d0L);
             if (ProtectLoader.Debug)
             {
                 UnityEngine.Debug.Log(Class3.smethod_10(0x1496) + packet_0.Received.ToString());
             }
             if ((packet_0.Received && (packet_0.Type == NetLink.Network.PacketType.Response)) && packet_0.Flags.Has <NetLink.Network.PacketFlag>(NetLink.Network.PacketFlag.Compressed))
             {
                 bool_0 = packet_0.Read <bool>();
                 int num2 = packet_0.Read <int>();
                 verifyFile_0 = new VerifyFile[num2];
                 for (int i = 0; i < num2; i++)
                 {
                     verifyFile_0[i] = new VerifyFile {
                         Filename = packet_0.Read <string>(), Filesize = packet_0.Read <long>()
                     };
                 }
                 if (ProtectLoader.Debug)
                 {
                     UnityEngine.Debug.Log(Class3.smethod_10(0x14c2) + num2);
                 }
                 gameObject_0 = new GameObject(typeof(Protection).FullName);
                 gameObject_0.AddComponent <Protection>();
                 gameObject_0.AddComponent <RustProtect.Snapshot>();
                 return;
             }
         }
         network_0.Dispose();
     }
 }