public void method_13(Client.GDelegate5 gdelegate5_1)
 {
     this.gdelegate5_0 = (Client.GDelegate5)Delegate.Remove(this.gdelegate5_0, gdelegate5_1);
 }
    // Token: 0x0600018D RID: 397 RVA: 0x00008F50 File Offset: 0x00007150
    private void method_52(object sender, SocketAsyncEventArgs e)
    {
        try
        {
            if (this.socket_0 != null)
            {
                if (this.socket_0 == sender)
                {
                    if (e.SocketError == SocketError.Success)
                    {
                        switch (e.LastOperation)
                        {
                        case SocketAsyncOperation.Connect:
                            this.method_50(this.socket_0);
                            break;

                        case SocketAsyncOperation.Receive:
                            if (e.BytesTransferred == 0)
                            {
                                this.method_56();
                            }
                            else
                            {
                                if (this.bool_1)
                                {
                                    Client.GDelegate8 gdelegate = this.gdelegate8_0;
                                    if (gdelegate != null)
                                    {
                                        gdelegate(this, e.BytesTransferred);
                                    }
                                }
                                this.method_53(e.Buffer, 0, e.BytesTransferred);
                                if (!this.socket_0.ReceiveAsync(e))
                                {
                                    this.method_52(this.socket_0, e);
                                }
                            }
                            break;

                        case SocketAsyncOperation.Send:
                        {
                            if (this.bool_0 && this.int_6 == 0)
                            {
                                this.int_6 = -4;
                            }
                            this.int_6 += e.BytesTransferred;
                            if (this.bool_1)
                            {
                                Client.GDelegate5 gdelegate2 = this.gdelegate5_0;
                                if (gdelegate2 != null)
                                {
                                    gdelegate2(this, e.BytesTransferred);
                                }
                            }
                            bool flag;
                            if (this.int_6 == this.byte_1.Length)
                            {
                                flag = true;
                                Client.GDelegate3 gdelegate3 = this.gdelegate3_0;
                                if (gdelegate3 != null)
                                {
                                    gdelegate3(this, this.byte_1.Length);
                                }
                            }
                            object obj = this.object_0;
                            ObjectFlowControl.CheckForSyncLockOnValueType(obj);
                            lock (obj)
                            {
                                if (this.queue_0.Count == 0 && flag)
                                {
                                    this.bool_7 = false;
                                    Array.Resize <byte>(ref this.byte_1, 0);
                                    if (this.int_6 >= this.int_2)
                                    {
                                        GC.Collect();
                                    }
                                    this.int_6 = 0;
                                }
                                else
                                {
                                    this.method_55();
                                }
                            }
                            break;
                        }
                        }
                    }
                    else
                    {
                        Client.GDelegate9 gdelegate4 = this.gdelegate9_0;
                        if (gdelegate4 != null)
                        {
                            gdelegate4(this, new SocketException((int)e.SocketError));
                        }
                        this.method_56();
                    }
                }
            }
        }
        catch (Exception exception_)
        {
            Client.GDelegate9 gdelegate4 = this.gdelegate9_0;
            if (gdelegate4 != null)
            {
                gdelegate4(this, exception_);
            }
            this.method_56();
        }
    }
 public void method_12(Client.GDelegate5 gdelegate5_1)
 {
     this.gdelegate5_0 = (Client.GDelegate5)Delegate.Combine(this.gdelegate5_0, gdelegate5_1);
 }