// Token: 0x06000231 RID: 561 RVA: 0x0000FC54 File Offset: 0x0000DE54 private void RemoteRead(IAsyncResult ar) { bool flag = (bool)ar.AsyncState; PacketBuffer packetBuffer = flag ? this._clientBuffer : this._serverBuffer; NetworkStream networkStream = flag ? this._clientStream : this._serverStream; bool flag2; RC4Cipher rc4Cipher = (flag2 = (networkStream == this._clientStream)) ? this._clientReceiveState : this._serverReceiveState; try { if (networkStream.CanRead) { int num = networkStream.EndRead(ar); packetBuffer.Advance(num); if (num == 0) { this.Dispose(null); } else if (packetBuffer.Index == 4) { packetBuffer.Resize(IPAddress.NetworkToHostOrder(BitConverter.ToInt32(packetBuffer.Bytes, 0))); this.BeginRead(packetBuffer.Index, packetBuffer.BytesRemaining(), flag2); } else if (packetBuffer.BytesRemaining() > 0) { this.BeginRead(packetBuffer.Index, packetBuffer.BytesRemaining(), flag2); } else { rc4Cipher.Cipher(packetBuffer.Bytes); Packet packet = Packet.Create(packetBuffer.Bytes); object handleLock = this._handleLock; lock (handleLock) { this.HandlePacket(packet); } if (packet.Send) { this.Send(packet, !flag2); } packetBuffer.Reset(); this.BeginRead(0, 4, flag2); } } } catch (Exception reason) { this.Dispose(reason); } }