public void DoNetwork()
        {
            if (((network_0 != null) && network_0.Connected) && (packet_0 = network_0.Receive(0L)).Received)
            {
                if (ProtectLoader.Debug)
                {
                    UnityEngine.Debug.Log(string.Concat(new object[] { Class3.smethod_10(0x36a), packet_0.Type, Class3.smethod_10(0x37e), packet_0.Received.ToString(), Class3.smethod_10(920), packet_0.Length, Class3.smethod_10(0x3ae), packet_0.RemainingBytes, Class3.smethod_10(970), packet_0.Flags, Class3.smethod_10(0x3dc) }));
                }
                if (((verifyFile_0.Length != 0) || (packet_0.Type == NetLink.Network.PacketType.Response)) && ((packet_0.Type != NetLink.Network.PacketType.Response) || packet_0.Flags.Has <NetLink.Network.PacketFlag>(NetLink.Network.PacketFlag.Compressed)))
                {
                    NetLink.Network.PacketType type = packet_0.Type;
                    switch (type)
                    {
                    case NetLink.Network.PacketType.Pingpong:
                        network_0.SendPacket(NetLink.Network.PacketType.Pingpong, NetLink.Network.PacketFlag.None, null);
                        return;

                    case NetLink.Network.PacketType.Disconnect:
                        smethod_8(Class3.smethod_10(0x3e2));
                        network_0.Dispose();
                        UnityEngine.Object.DestroyImmediate(base.gameObject);
                        return;
                    }
                    if ((type == NetLink.Network.PacketType.DataStream) && packet_0.Flags.Has <NetLink.Network.PacketFlag>(NetLink.Network.PacketFlag.Compressed))
                    {
                        MessageType message = (MessageType)((short)packet_0.Read <ushort>());
                        this.DoNetworkMessageData(packet_0, message);
                    }
                }
            }
        }
 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();
     }
 }