class java.net.SocksSocketImpl extends java.net.PlainSocketImpl implements java.net.SocksConsts
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: java.net.SocksSocketImpl
  super_class: java.net.PlainSocketImpl
{
  private java.lang.String server;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private int serverPort;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private java.net.InetSocketAddress external_address;
    descriptor: Ljava/net/InetSocketAddress;
    flags: (0x0002) ACC_PRIVATE

  private boolean useV4;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private java.net.Socket cmdsock;
    descriptor: Ljava/net/Socket;
    flags: (0x0002) ACC_PRIVATE

  private java.io.InputStream cmdIn;
    descriptor: Ljava/io/InputStream;
    flags: (0x0002) ACC_PRIVATE

  private java.io.OutputStream cmdOut;
    descriptor: Ljava/io/OutputStream;
    flags: (0x0002) ACC_PRIVATE

  private boolean applicationSetProxy;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 46
            ldc Ljava/net/SocksSocketImpl;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic java.net.SocksSocketImpl.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.net.SocksSocketImpl this
         0: .line 58
            aload 0 /* this */
            invokespecial java.net.PlainSocketImpl.<init>:()V
         1: .line 47
            aload 0 /* this */
            aconst_null
            putfield java.net.SocksSocketImpl.server:Ljava/lang/String;
         2: .line 48
            aload 0 /* this */
            sipush 1080
            putfield java.net.SocksSocketImpl.serverPort:I
         3: .line 50
            aload 0 /* this */
            iconst_0
            putfield java.net.SocksSocketImpl.useV4:Z
         4: .line 51
            aload 0 /* this */
            aconst_null
            putfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
         5: .line 52
            aload 0 /* this */
            aconst_null
            putfield java.net.SocksSocketImpl.cmdIn:Ljava/io/InputStream;
         6: .line 53
            aload 0 /* this */
            aconst_null
            putfield java.net.SocksSocketImpl.cmdOut:Ljava/io/OutputStream;
         7: .line 60
            return
        end local 0 // java.net.SocksSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Ljava/net/SocksSocketImpl;

  void <init>(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // java.net.SocksSocketImpl this
        start local 1 // java.lang.String server
        start local 2 // int port
         0: .line 62
            aload 0 /* this */
            invokespecial java.net.PlainSocketImpl.<init>:()V
         1: .line 47
            aload 0 /* this */
            aconst_null
            putfield java.net.SocksSocketImpl.server:Ljava/lang/String;
         2: .line 48
            aload 0 /* this */
            sipush 1080
            putfield java.net.SocksSocketImpl.serverPort:I
         3: .line 50
            aload 0 /* this */
            iconst_0
            putfield java.net.SocksSocketImpl.useV4:Z
         4: .line 51
            aload 0 /* this */
            aconst_null
            putfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
         5: .line 52
            aload 0 /* this */
            aconst_null
            putfield java.net.SocksSocketImpl.cmdIn:Ljava/io/InputStream;
         6: .line 53
            aload 0 /* this */
            aconst_null
            putfield java.net.SocksSocketImpl.cmdOut:Ljava/io/OutputStream;
         7: .line 63
            aload 0 /* this */
            aload 1 /* server */
            putfield java.net.SocksSocketImpl.server:Ljava/lang/String;
         8: .line 64
            aload 0 /* this */
            iload 2 /* port */
            iconst_m1
            if_icmpne 9
            sipush 1080
            goto 10
      StackMap locals: java.net.SocksSocketImpl java.lang.String int
      StackMap stack: java.net.SocksSocketImpl
         9: iload 2 /* port */
      StackMap locals: java.net.SocksSocketImpl java.lang.String int
      StackMap stack: java.net.SocksSocketImpl int
        10: putfield java.net.SocksSocketImpl.serverPort:I
        11: .line 65
            return
        end local 2 // int port
        end local 1 // java.lang.String server
        end local 0 // java.net.SocksSocketImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   12     0    this  Ljava/net/SocksSocketImpl;
            0   12     1  server  Ljava/lang/String;
            0   12     2    port  I
    MethodParameters:
        Name  Flags
      server  
      port    

  void <init>(java.net.Proxy);
    descriptor: (Ljava/net/Proxy;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // java.net.SocksSocketImpl this
        start local 1 // java.net.Proxy proxy
         0: .line 67
            aload 0 /* this */
            invokespecial java.net.PlainSocketImpl.<init>:()V
         1: .line 47
            aload 0 /* this */
            aconst_null
            putfield java.net.SocksSocketImpl.server:Ljava/lang/String;
         2: .line 48
            aload 0 /* this */
            sipush 1080
            putfield java.net.SocksSocketImpl.serverPort:I
         3: .line 50
            aload 0 /* this */
            iconst_0
            putfield java.net.SocksSocketImpl.useV4:Z
         4: .line 51
            aload 0 /* this */
            aconst_null
            putfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
         5: .line 52
            aload 0 /* this */
            aconst_null
            putfield java.net.SocksSocketImpl.cmdIn:Ljava/io/InputStream;
         6: .line 53
            aload 0 /* this */
            aconst_null
            putfield java.net.SocksSocketImpl.cmdOut:Ljava/io/OutputStream;
         7: .line 68
            aload 1 /* proxy */
            invokevirtual java.net.Proxy.address:()Ljava/net/SocketAddress;
            astore 2 /* a */
        start local 2 // java.net.SocketAddress a
         8: .line 69
            aload 2 /* a */
            instanceof java.net.InetSocketAddress
            ifeq 12
         9: .line 70
            aload 2 /* a */
            checkcast java.net.InetSocketAddress
            astore 3 /* ad */
        start local 3 // java.net.InetSocketAddress ad
        10: .line 72
            aload 0 /* this */
            aload 3 /* ad */
            invokevirtual java.net.InetSocketAddress.getHostString:()Ljava/lang/String;
            putfield java.net.SocksSocketImpl.server:Ljava/lang/String;
        11: .line 73
            aload 0 /* this */
            aload 3 /* ad */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            putfield java.net.SocksSocketImpl.serverPort:I
        end local 3 // java.net.InetSocketAddress ad
        12: .line 75
      StackMap locals: java.net.SocksSocketImpl java.net.Proxy java.net.SocketAddress
      StackMap stack:
            aload 0 /* this */
            aload 1 /* proxy */
            invokestatic java.net.SocksSocketImpl.useV4:(Ljava/net/Proxy;)Z
            putfield java.net.SocksSocketImpl.useV4:Z
        13: .line 76
            return
        end local 2 // java.net.SocketAddress a
        end local 1 // java.net.Proxy proxy
        end local 0 // java.net.SocksSocketImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   14     0   this  Ljava/net/SocksSocketImpl;
            0   14     1  proxy  Ljava/net/Proxy;
            8   14     2      a  Ljava/net/SocketAddress;
           10   12     3     ad  Ljava/net/InetSocketAddress;
    MethodParameters:
       Name  Flags
      proxy  

  void setV4();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.net.SocksSocketImpl this
         0: .line 79
            aload 0 /* this */
            iconst_1
            putfield java.net.SocksSocketImpl.useV4:Z
         1: .line 80
            return
        end local 0 // java.net.SocksSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljava/net/SocksSocketImpl;

  private static boolean useV4(java.net.Proxy);
    descriptor: (Ljava/net/Proxy;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.net.Proxy proxy
         0: .line 83
            aload 0 /* proxy */
            instanceof sun.net.SocksProxy
            ifeq 3
         1: .line 84
            aload 0 /* proxy */
            checkcast sun.net.SocksProxy
            invokevirtual sun.net.SocksProxy.protocolVersion:()I
            iconst_4
            if_icmpne 3
         2: .line 85
            iconst_1
            ireturn
         3: .line 87
      StackMap locals:
      StackMap stack:
            invokestatic sun.net.spi.DefaultProxySelector.socksProxyVersion:()I
            iconst_4
            if_icmpne 4
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         4: iconst_0
            ireturn
        end local 0 // java.net.Proxy proxy
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0  proxy  Ljava/net/Proxy;
    MethodParameters:
       Name  Flags
      proxy  

  private synchronized void privilegedConnect(java.lang.String, int, int);
    descriptor: (Ljava/lang/String;II)V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=6, locals=5, args_size=4
        start local 0 // java.net.SocksSocketImpl this
        start local 1 // java.lang.String host
        start local 2 // int port
        start local 3 // int timeout
         0: .line 97
            new java.net.SocksSocketImpl$1
            dup
            aload 0 /* this */
            aload 1 /* host */
            iload 2 /* port */
            iload 3 /* timeout */
            invokespecial java.net.SocksSocketImpl$1.<init>:(Ljava/net/SocksSocketImpl;Ljava/lang/String;II)V
         1: .line 96
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
            pop
         2: .line 105
            goto 5
      StackMap locals:
      StackMap stack: java.security.PrivilegedActionException
         3: astore 4 /* pae */
        start local 4 // java.security.PrivilegedActionException pae
         4: .line 106
            aload 4 /* pae */
            invokevirtual java.security.PrivilegedActionException.getException:()Ljava/lang/Exception;
            checkcast java.io.IOException
            athrow
        end local 4 // java.security.PrivilegedActionException pae
         5: .line 108
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int timeout
        end local 2 // int port
        end local 1 // java.lang.String host
        end local 0 // java.net.SocksSocketImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Ljava/net/SocksSocketImpl;
            0    6     1     host  Ljava/lang/String;
            0    6     2     port  I
            0    6     3  timeout  I
            4    5     4      pae  Ljava/security/PrivilegedActionException;
      Exception table:
        from    to  target  type
           0     2       3  Class java.security.PrivilegedActionException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      host     final
      port     final
      timeout  final

  private void superConnectServer(java.lang.String, int, int);
    descriptor: (Ljava/lang/String;II)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // java.net.SocksSocketImpl this
        start local 1 // java.lang.String host
        start local 2 // int port
        start local 3 // int timeout
         0: .line 112
            aload 0 /* this */
            new java.net.InetSocketAddress
            dup
            aload 1 /* host */
            iload 2 /* port */
            invokespecial java.net.InetSocketAddress.<init>:(Ljava/lang/String;I)V
            iload 3 /* timeout */
            invokespecial java.net.PlainSocketImpl.connect:(Ljava/net/SocketAddress;I)V
         1: .line 113
            return
        end local 3 // int timeout
        end local 2 // int port
        end local 1 // java.lang.String host
        end local 0 // java.net.SocksSocketImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Ljava/net/SocksSocketImpl;
            0    2     1     host  Ljava/lang/String;
            0    2     2     port  I
            0    2     3  timeout  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      host     
      port     
      timeout  

  private static int remainingMillis(long);
    descriptor: (J)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // long deadlineMillis
         0: .line 116
            lload 0 /* deadlineMillis */
            lconst_0
            lcmp
            ifne 2
         1: .line 117
            iconst_0
            ireturn
         2: .line 119
      StackMap locals:
      StackMap stack:
            lload 0 /* deadlineMillis */
            invokestatic java.lang.System.currentTimeMillis:()J
            lsub
            lstore 2 /* remaining */
        start local 2 // long remaining
         3: .line 120
            lload 2 /* remaining */
            lconst_0
            lcmp
            ifle 5
         4: .line 121
            lload 2 /* remaining */
            l2i
            ireturn
         5: .line 123
      StackMap locals: long
      StackMap stack:
            new java.net.SocketTimeoutException
            dup
            invokespecial java.net.SocketTimeoutException.<init>:()V
            athrow
        end local 2 // long remaining
        end local 0 // long deadlineMillis
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    6     0  deadlineMillis  J
            3    6     2       remaining  J
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                Name  Flags
      deadlineMillis  

  private int readSocksReply(java.io.InputStream, byte[]);
    descriptor: (Ljava/io/InputStream;[B)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // java.net.SocksSocketImpl this
        start local 1 // java.io.InputStream in
        start local 2 // byte[] data
         0: .line 127
            aload 0 /* this */
            aload 1 /* in */
            aload 2 /* data */
            lconst_0
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[BJ)I
            ireturn
        end local 2 // byte[] data
        end local 1 // java.io.InputStream in
        end local 0 // java.net.SocksSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/net/SocksSocketImpl;
            0    1     1    in  Ljava/io/InputStream;
            0    1     2  data  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      in    
      data  

  private int readSocksReply(java.io.InputStream, byte[], long);
    descriptor: (Ljava/io/InputStream;[BJ)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=8, args_size=4
        start local 0 // java.net.SocksSocketImpl this
        start local 1 // java.io.InputStream in
        start local 2 // byte[] data
        start local 3 // long deadlineMillis
         0: .line 131
            aload 2 /* data */
            arraylength
            istore 5 /* len */
        start local 5 // int len
         1: .line 132
            iconst_0
            istore 6 /* received */
        start local 6 // int received
         2: .line 133
            goto 10
         3: .line 136
      StackMap locals: int int
      StackMap stack:
            aload 1 /* in */
            checkcast java.net.SocketInputStream
            aload 2 /* data */
            iload 6 /* received */
            iload 5 /* len */
            iload 6 /* received */
            isub
            lload 3 /* deadlineMillis */
            invokestatic java.net.SocksSocketImpl.remainingMillis:(J)I
            invokevirtual java.net.SocketInputStream.read:([BIII)I
            istore 7 /* count */
        start local 7 // int count
         4: .line 137
            goto 7
        end local 7 // int count
      StackMap locals:
      StackMap stack: java.net.SocketTimeoutException
         5: pop
         6: .line 138
            new java.net.SocketTimeoutException
            dup
            ldc "Connect timed out"
            invokespecial java.net.SocketTimeoutException.<init>:(Ljava/lang/String;)V
            athrow
        start local 7 // int count
         7: .line 140
      StackMap locals: int
      StackMap stack:
            iload 7 /* count */
            ifge 9
         8: .line 141
            new java.net.SocketException
            dup
            ldc "Malformed reply from SOCKS server"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 142
      StackMap locals:
      StackMap stack:
            iload 6 /* received */
            iload 7 /* count */
            iadd
            istore 6 /* received */
        end local 7 // int count
        10: .line 133
      StackMap locals:
      StackMap stack:
            iload 6 /* received */
            iload 5 /* len */
            if_icmplt 3
        11: .line 144
            iload 6 /* received */
            ireturn
        end local 6 // int received
        end local 5 // int len
        end local 3 // long deadlineMillis
        end local 2 // byte[] data
        end local 1 // java.io.InputStream in
        end local 0 // java.net.SocksSocketImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   12     0            this  Ljava/net/SocksSocketImpl;
            0   12     1              in  Ljava/io/InputStream;
            0   12     2            data  [B
            0   12     3  deadlineMillis  J
            1   12     5             len  I
            2   12     6        received  I
            4    5     7           count  I
            7   10     7           count  I
      Exception table:
        from    to  target  type
           3     4       5  Class java.net.SocketTimeoutException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                Name  Flags
      in              
      data            
      deadlineMillis  

  private boolean authenticate(byte, java.io.InputStream, java.io.BufferedOutputStream);
    descriptor: (BLjava/io/InputStream;Ljava/io/BufferedOutputStream;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=4
        start local 0 // java.net.SocksSocketImpl this
        start local 1 // byte method
        start local 2 // java.io.InputStream in
        start local 3 // java.io.BufferedOutputStream out
         0: .line 152
            aload 0 /* this */
            iload 1 /* method */
            aload 2 /* in */
            aload 3 /* out */
            lconst_0
            invokevirtual java.net.SocksSocketImpl.authenticate:(BLjava/io/InputStream;Ljava/io/BufferedOutputStream;J)Z
            ireturn
        end local 3 // java.io.BufferedOutputStream out
        end local 2 // java.io.InputStream in
        end local 1 // byte method
        end local 0 // java.net.SocksSocketImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Ljava/net/SocksSocketImpl;
            0    1     1  method  B
            0    1     2      in  Ljava/io/InputStream;
            0    1     3     out  Ljava/io/BufferedOutputStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      method  
      in      
      out     

  private boolean authenticate(byte, java.io.InputStream, java.io.BufferedOutputStream, long);
    descriptor: (BLjava/io/InputStream;Ljava/io/BufferedOutputStream;J)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=12, args_size=5
        start local 0 // java.net.SocksSocketImpl this
        start local 1 // byte method
        start local 2 // java.io.InputStream in
        start local 3 // java.io.BufferedOutputStream out
        start local 4 // long deadlineMillis
         0: .line 159
            iload 1 /* method */
            ifne 2
         1: .line 160
            iconst_1
            ireturn
         2: .line 166
      StackMap locals:
      StackMap stack:
            iload 1 /* method */
            iconst_2
            if_icmpne 36
         3: .line 168
            aconst_null
            astore 7 /* password */
        start local 7 // java.lang.String password
         4: .line 169
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.server:Ljava/lang/String;
            invokestatic java.net.InetAddress.getByName:(Ljava/lang/String;)Ljava/net/InetAddress;
            astore 8 /* addr */
        start local 8 // java.net.InetAddress addr
         5: .line 172
            new java.net.SocksSocketImpl$2
            dup
            aload 0 /* this */
            aload 8 /* addr */
            invokespecial java.net.SocksSocketImpl$2.<init>:(Ljava/net/SocksSocketImpl;Ljava/net/InetAddress;)V
         6: .line 171
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.net.PasswordAuthentication
         7: .line 170
            astore 9 /* pw */
        start local 9 // java.net.PasswordAuthentication pw
         8: .line 178
            aload 9 /* pw */
            ifnull 12
         9: .line 179
            aload 9 /* pw */
            invokevirtual java.net.PasswordAuthentication.getUserName:()Ljava/lang/String;
            astore 6 /* userName */
        start local 6 // java.lang.String userName
        10: .line 180
            new java.lang.String
            dup
            aload 9 /* pw */
            invokevirtual java.net.PasswordAuthentication.getPassword:()[C
            invokespecial java.lang.String.<init>:([C)V
            astore 7 /* password */
        11: .line 181
            goto 13
        end local 6 // java.lang.String userName
        12: .line 182
      StackMap locals: java.net.SocksSocketImpl int java.io.InputStream java.io.BufferedOutputStream long top java.lang.String java.net.InetAddress java.net.PasswordAuthentication
      StackMap stack:
            invokestatic jdk.internal.util.StaticProperty.userName:()Ljava/lang/String;
            astore 6 /* userName */
        start local 6 // java.lang.String userName
        13: .line 184
      StackMap locals: java.net.SocksSocketImpl int java.io.InputStream java.io.BufferedOutputStream long java.lang.String java.lang.String java.net.InetAddress java.net.PasswordAuthentication
      StackMap stack:
            aload 6 /* userName */
            ifnonnull 15
        14: .line 185
            iconst_0
            ireturn
        15: .line 186
      StackMap locals:
      StackMap stack:
            aload 3 /* out */
            iconst_1
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        16: .line 187
            aload 3 /* out */
            aload 6 /* userName */
            invokevirtual java.lang.String.length:()I
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        17: .line 189
            aload 3 /* out */
            aload 6 /* userName */
            ldc "ISO-8859-1"
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
            invokevirtual java.io.BufferedOutputStream.write:([B)V
        18: .line 190
            goto 21
      StackMap locals:
      StackMap stack: java.io.UnsupportedEncodingException
        19: pop
        20: .line 191
            getstatic java.net.SocksSocketImpl.$assertionsDisabled:Z
            ifne 21
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        21: .line 193
      StackMap locals:
      StackMap stack:
            aload 7 /* password */
            ifnull 27
        22: .line 194
            aload 3 /* out */
            aload 7 /* password */
            invokevirtual java.lang.String.length:()I
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        23: .line 196
            aload 3 /* out */
            aload 7 /* password */
            ldc "ISO-8859-1"
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
            invokevirtual java.io.BufferedOutputStream.write:([B)V
        24: .line 197
            goto 28
      StackMap locals:
      StackMap stack: java.io.UnsupportedEncodingException
        25: pop
        26: .line 198
            getstatic java.net.SocksSocketImpl.$assertionsDisabled:Z
            ifne 28
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        27: .line 201
      StackMap locals:
      StackMap stack:
            aload 3 /* out */
            iconst_0
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        28: .line 202
      StackMap locals:
      StackMap stack:
            aload 3 /* out */
            invokevirtual java.io.BufferedOutputStream.flush:()V
        29: .line 203
            iconst_2
            newarray 8
            astore 10 /* data */
        start local 10 // byte[] data
        30: .line 204
            aload 0 /* this */
            aload 2 /* in */
            aload 10 /* data */
            lload 4 /* deadlineMillis */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[BJ)I
            istore 11 /* i */
        start local 11 // int i
        31: .line 205
            iload 11 /* i */
            iconst_2
            if_icmpne 32
            aload 10 /* data */
            iconst_1
            baload
            ifeq 35
        32: .line 208
      StackMap locals: byte[] int
      StackMap stack:
            aload 3 /* out */
            invokevirtual java.io.BufferedOutputStream.close:()V
        33: .line 209
            aload 2 /* in */
            invokevirtual java.io.InputStream.close:()V
        34: .line 210
            iconst_0
            ireturn
        35: .line 213
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 11 // int i
        end local 10 // byte[] data
        end local 9 // java.net.PasswordAuthentication pw
        end local 8 // java.net.InetAddress addr
        end local 7 // java.lang.String password
        end local 6 // java.lang.String userName
        36: .line 269
      StackMap locals: java.net.SocksSocketImpl int java.io.InputStream java.io.BufferedOutputStream long
      StackMap stack:
            iconst_0
            ireturn
        end local 4 // long deadlineMillis
        end local 3 // java.io.BufferedOutputStream out
        end local 2 // java.io.InputStream in
        end local 1 // byte method
        end local 0 // java.net.SocksSocketImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   37     0            this  Ljava/net/SocksSocketImpl;
            0   37     1          method  B
            0   37     2              in  Ljava/io/InputStream;
            0   37     3             out  Ljava/io/BufferedOutputStream;
            0   37     4  deadlineMillis  J
           10   12     6        userName  Ljava/lang/String;
           13   36     6        userName  Ljava/lang/String;
            4   36     7        password  Ljava/lang/String;
            5   36     8            addr  Ljava/net/InetAddress;
            8   36     9              pw  Ljava/net/PasswordAuthentication;
           30   36    10            data  [B
           31   36    11               i  I
      Exception table:
        from    to  target  type
          17    18      19  Class java.io.UnsupportedEncodingException
          23    24      25  Class java.io.UnsupportedEncodingException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                Name  Flags
      method          
      in              
      out             
      deadlineMillis  

  private void connectV4(java.io.InputStream, java.io.OutputStream, java.net.InetSocketAddress, long);
    descriptor: (Ljava/io/InputStream;Ljava/io/OutputStream;Ljava/net/InetSocketAddress;J)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=10, args_size=5
        start local 0 // java.net.SocksSocketImpl this
        start local 1 // java.io.InputStream in
        start local 2 // java.io.OutputStream out
        start local 3 // java.net.InetSocketAddress endpoint
        start local 4 // long deadlineMillis
         0: .line 275
            aload 3 /* endpoint */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            instanceof java.net.Inet4Address
            ifne 2
         1: .line 276
            new java.net.SocketException
            dup
            ldc "SOCKS V4 requires IPv4 only addresses"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 278
      StackMap locals:
      StackMap stack:
            aload 2 /* out */
            iconst_4
            invokevirtual java.io.OutputStream.write:(I)V
         3: .line 279
            aload 2 /* out */
            iconst_1
            invokevirtual java.io.OutputStream.write:(I)V
         4: .line 280
            aload 2 /* out */
            aload 3 /* endpoint */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            bipush 8
            ishr
            sipush 255
            iand
            invokevirtual java.io.OutputStream.write:(I)V
         5: .line 281
            aload 2 /* out */
            aload 3 /* endpoint */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            iconst_0
            ishr
            sipush 255
            iand
            invokevirtual java.io.OutputStream.write:(I)V
         6: .line 282
            aload 2 /* out */
            aload 3 /* endpoint */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.getAddress:()[B
            invokevirtual java.io.OutputStream.write:([B)V
         7: .line 283
            aload 0 /* this */
            invokevirtual java.net.SocksSocketImpl.getUserName:()Ljava/lang/String;
            astore 6 /* userName */
        start local 6 // java.lang.String userName
         8: .line 285
            aload 2 /* out */
            aload 6 /* userName */
            ldc "ISO-8859-1"
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
            invokevirtual java.io.OutputStream.write:([B)V
         9: .line 286
            goto 12
      StackMap locals: java.net.SocksSocketImpl java.io.InputStream java.io.OutputStream java.net.InetSocketAddress long java.lang.String
      StackMap stack: java.io.UnsupportedEncodingException
        10: pop
        11: .line 287
            getstatic java.net.SocksSocketImpl.$assertionsDisabled:Z
            ifne 12
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        12: .line 289
      StackMap locals:
      StackMap stack:
            aload 2 /* out */
            iconst_0
            invokevirtual java.io.OutputStream.write:(I)V
        13: .line 290
            aload 2 /* out */
            invokevirtual java.io.OutputStream.flush:()V
        14: .line 291
            bipush 8
            newarray 8
            astore 7 /* data */
        start local 7 // byte[] data
        15: .line 292
            aload 0 /* this */
            aload 1 /* in */
            aload 7 /* data */
            lload 4 /* deadlineMillis */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[BJ)I
            istore 8 /* n */
        start local 8 // int n
        16: .line 293
            iload 8 /* n */
            bipush 8
            if_icmpeq 18
        17: .line 294
            new java.net.SocketException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Reply from SOCKS server has bad length: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 8 /* n */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        18: .line 295
      StackMap locals: byte[] int
      StackMap stack:
            aload 7 /* data */
            iconst_0
            baload
            ifeq 20
            aload 7 /* data */
            iconst_0
            baload
            iconst_4
            if_icmpeq 20
        19: .line 296
            new java.net.SocketException
            dup
            ldc "Reply from SOCKS server has bad version"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        20: .line 297
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 9 /* ex */
        start local 9 // java.net.SocketException ex
        21: .line 298
            aload 7 /* data */
            iconst_1
            baload
            tableswitch { // 90 - 93
                   90: 22
                   91: 24
                   92: 26
                   93: 28
              default: 30
          }
        22: .line 301
      StackMap locals: java.net.SocketException
      StackMap stack:
            aload 0 /* this */
            aload 3 /* endpoint */
            putfield java.net.SocksSocketImpl.external_address:Ljava/net/InetSocketAddress;
        23: .line 302
            goto 31
        24: .line 304
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS request rejected"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 9 /* ex */
        25: .line 305
            goto 31
        26: .line 307
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS server couldn't reach destination"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 9 /* ex */
        27: .line 308
            goto 31
        28: .line 310
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS authentication failed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 9 /* ex */
        29: .line 311
            goto 31
        30: .line 313
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "Reply from SOCKS server contains bad status"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 9 /* ex */
        31: .line 316
      StackMap locals:
      StackMap stack:
            aload 9 /* ex */
            ifnull 35
        32: .line 317
            aload 1 /* in */
            invokevirtual java.io.InputStream.close:()V
        33: .line 318
            aload 2 /* out */
            invokevirtual java.io.OutputStream.close:()V
        34: .line 319
            aload 9 /* ex */
            athrow
        35: .line 321
      StackMap locals:
      StackMap stack:
            return
        end local 9 // java.net.SocketException ex
        end local 8 // int n
        end local 7 // byte[] data
        end local 6 // java.lang.String userName
        end local 4 // long deadlineMillis
        end local 3 // java.net.InetSocketAddress endpoint
        end local 2 // java.io.OutputStream out
        end local 1 // java.io.InputStream in
        end local 0 // java.net.SocksSocketImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   36     0            this  Ljava/net/SocksSocketImpl;
            0   36     1              in  Ljava/io/InputStream;
            0   36     2             out  Ljava/io/OutputStream;
            0   36     3        endpoint  Ljava/net/InetSocketAddress;
            0   36     4  deadlineMillis  J
            8   36     6        userName  Ljava/lang/String;
           15   36     7            data  [B
           16   36     8               n  I
           21   36     9              ex  Ljava/net/SocketException;
      Exception table:
        from    to  target  type
           8     9      10  Class java.io.UnsupportedEncodingException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                Name  Flags
      in              
      out             
      endpoint        
      deadlineMillis  

  protected void connect(java.net.SocketAddress, int);
    descriptor: (Ljava/net/SocketAddress;I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=16, args_size=3
        start local 0 // java.net.SocksSocketImpl this
        start local 1 // java.net.SocketAddress endpoint
        start local 2 // int timeout
         0: .line 341
            iload 2 /* timeout */
            ifne 3
         1: .line 342
            lconst_0
            lstore 3 /* deadlineMillis */
        start local 3 // long deadlineMillis
         2: .line 343
            goto 7
        end local 3 // long deadlineMillis
         3: .line 344
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.currentTimeMillis:()J
            iload 2 /* timeout */
            i2l
            ladd
            lstore 5 /* finish */
        start local 5 // long finish
         4: .line 345
            lload 5 /* finish */
            lconst_0
            lcmp
            ifge 5
            ldc 9223372036854775807
            goto 6
      StackMap locals: java.net.SocksSocketImpl java.net.SocketAddress int top top long
      StackMap stack:
         5: lload 5 /* finish */
      StackMap locals:
      StackMap stack: long
         6: lstore 3 /* deadlineMillis */
        end local 5 // long finish
        start local 3 // long deadlineMillis
         7: .line 348
      StackMap locals: java.net.SocksSocketImpl java.net.SocketAddress int long
      StackMap stack:
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 5 /* security */
        start local 5 // java.lang.SecurityManager security
         8: .line 349
            aload 1 /* endpoint */
            ifnull 9
            aload 1 /* endpoint */
            instanceof java.net.InetSocketAddress
            ifne 10
         9: .line 350
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "Unsupported address type"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 351
      StackMap locals:
      StackMap stack:
            aload 1 /* endpoint */
            checkcast java.net.InetSocketAddress
            astore 6 /* epoint */
        start local 6 // java.net.InetSocketAddress epoint
        11: .line 352
            aload 5 /* security */
            ifnull 20
        12: .line 353
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.isUnresolved:()Z
            ifeq 17
        13: .line 354
            aload 5 /* security */
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.getHostName:()Ljava/lang/String;
        14: .line 355
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.getPort:()I
        15: .line 354
            invokevirtual java.lang.SecurityManager.checkConnect:(Ljava/lang/String;I)V
        16: .line 355
            goto 20
        17: .line 357
      StackMap locals: java.net.InetSocketAddress
      StackMap stack:
            aload 5 /* security */
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.getHostAddress:()Ljava/lang/String;
        18: .line 358
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.getPort:()I
        19: .line 357
            invokevirtual java.lang.SecurityManager.checkConnect:(Ljava/lang/String;I)V
        20: .line 360
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.server:Ljava/lang/String;
            ifnonnull 63
        21: .line 365
            new java.net.SocksSocketImpl$3
            dup
            aload 0 /* this */
            invokespecial java.net.SocksSocketImpl$3.<init>:(Ljava/net/SocksSocketImpl;)V
        22: .line 364
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.net.ProxySelector
            astore 7 /* sel */
        start local 7 // java.net.ProxySelector sel
        23: .line 370
            aload 7 /* sel */
            ifnonnull 26
        24: .line 374
            aload 0 /* this */
            aload 6 /* epoint */
            lload 3 /* deadlineMillis */
            invokestatic java.net.SocksSocketImpl.remainingMillis:(J)I
            invokespecial java.net.PlainSocketImpl.connect:(Ljava/net/SocketAddress;I)V
        25: .line 375
            return
        26: .line 379
      StackMap locals: java.net.ProxySelector
      StackMap stack:
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.getHostString:()Ljava/lang/String;
            astore 9 /* host */
        start local 9 // java.lang.String host
        27: .line 381
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            instanceof java.net.Inet6Address
            ifeq 30
        28: .line 382
            aload 9 /* host */
            ldc "["
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 30
            aload 9 /* host */
            bipush 58
            invokevirtual java.lang.String.indexOf:(I)I
            iflt 30
        29: .line 383
            new java.lang.StringBuilder
            dup
            ldc "["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 9 /* host */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 9 /* host */
        30: .line 386
      StackMap locals: java.net.SocksSocketImpl java.net.SocketAddress int long java.lang.SecurityManager java.net.InetSocketAddress java.net.ProxySelector top java.lang.String
      StackMap stack:
            new java.net.URI
            dup
            new java.lang.StringBuilder
            dup
            ldc "socket://"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 9 /* host */
            invokestatic sun.net.www.ParseUtil.encodePath:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.net.URI.<init>:(Ljava/lang/String;)V
            astore 8 /* uri */
        start local 8 // java.net.URI uri
        31: .line 387
            goto 35
        end local 8 // java.net.URI uri
      StackMap locals:
      StackMap stack: java.net.URISyntaxException
        32: astore 10 /* e */
        start local 10 // java.net.URISyntaxException e
        33: .line 389
            getstatic java.net.SocksSocketImpl.$assertionsDisabled:Z
            ifne 34
            new java.lang.AssertionError
            dup
            aload 10 /* e */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        34: .line 390
      StackMap locals: java.net.URISyntaxException
      StackMap stack:
            aconst_null
            astore 8 /* uri */
        end local 10 // java.net.URISyntaxException e
        start local 8 // java.net.URI uri
        35: .line 392
      StackMap locals: java.net.SocksSocketImpl java.net.SocketAddress int long java.lang.SecurityManager java.net.InetSocketAddress java.net.ProxySelector java.net.URI java.lang.String
      StackMap stack:
            aconst_null
            astore 10 /* p */
        start local 10 // java.net.Proxy p
        36: .line 393
            aconst_null
            astore 11 /* savedExc */
        start local 11 // java.io.IOException savedExc
        37: .line 394
            aconst_null
            astore 12 /* iProxy */
        start local 12 // java.util.Iterator iProxy
        38: .line 395
            aload 7 /* sel */
            aload 8 /* uri */
            invokevirtual java.net.ProxySelector.select:(Ljava/net/URI;)Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 12 /* iProxy */
        39: .line 396
            aload 12 /* iProxy */
            ifnull 40
            aload 12 /* iProxy */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 58
        40: .line 397
      StackMap locals: java.net.Proxy java.io.IOException java.util.Iterator
      StackMap stack:
            aload 0 /* this */
            aload 6 /* epoint */
            lload 3 /* deadlineMillis */
            invokestatic java.net.SocksSocketImpl.remainingMillis:(J)I
            invokespecial java.net.PlainSocketImpl.connect:(Ljava/net/SocketAddress;I)V
        41: .line 398
            return
        42: .line 401
      StackMap locals:
      StackMap stack:
            aload 12 /* iProxy */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.net.Proxy
            astore 10 /* p */
        43: .line 402
            aload 10 /* p */
            ifnull 44
            aload 10 /* p */
            invokevirtual java.net.Proxy.type:()Ljava/net/Proxy$Type;
            getstatic java.net.Proxy$Type.SOCKS:Ljava/net/Proxy$Type;
            if_acmpeq 46
        44: .line 403
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 6 /* epoint */
            lload 3 /* deadlineMillis */
            invokestatic java.net.SocksSocketImpl.remainingMillis:(J)I
            invokespecial java.net.PlainSocketImpl.connect:(Ljava/net/SocketAddress;I)V
        45: .line 404
            return
        46: .line 407
      StackMap locals:
      StackMap stack:
            aload 10 /* p */
            invokevirtual java.net.Proxy.address:()Ljava/net/SocketAddress;
            instanceof java.net.InetSocketAddress
            ifne 48
        47: .line 408
            new java.net.SocketException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unknown address type for proxy: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 10 /* p */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        48: .line 410
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 10 /* p */
            invokevirtual java.net.Proxy.address:()Ljava/net/SocketAddress;
            checkcast java.net.InetSocketAddress
            invokevirtual java.net.InetSocketAddress.getHostString:()Ljava/lang/String;
            putfield java.net.SocksSocketImpl.server:Ljava/lang/String;
        49: .line 411
            aload 0 /* this */
            aload 10 /* p */
            invokevirtual java.net.Proxy.address:()Ljava/net/SocketAddress;
            checkcast java.net.InetSocketAddress
            invokevirtual java.net.InetSocketAddress.getPort:()I
            putfield java.net.SocksSocketImpl.serverPort:I
        50: .line 412
            aload 0 /* this */
            aload 10 /* p */
            invokestatic java.net.SocksSocketImpl.useV4:(Ljava/net/Proxy;)Z
            putfield java.net.SocksSocketImpl.useV4:Z
        51: .line 416
            aload 0 /* this */
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.server:Ljava/lang/String;
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.serverPort:I
            lload 3 /* deadlineMillis */
            invokestatic java.net.SocksSocketImpl.remainingMillis:(J)I
            invokevirtual java.net.SocksSocketImpl.privilegedConnect:(Ljava/lang/String;II)V
        52: .line 418
            goto 59
        53: .line 419
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 13 /* e */
        start local 13 // java.io.IOException e
        54: .line 421
            aload 7 /* sel */
            aload 8 /* uri */
            aload 10 /* p */
            invokevirtual java.net.Proxy.address:()Ljava/net/SocketAddress;
            aload 13 /* e */
            invokevirtual java.net.ProxySelector.connectFailed:(Ljava/net/URI;Ljava/net/SocketAddress;Ljava/io/IOException;)V
        55: .line 422
            aload 0 /* this */
            aconst_null
            putfield java.net.SocksSocketImpl.server:Ljava/lang/String;
        56: .line 423
            aload 0 /* this */
            iconst_m1
            putfield java.net.SocksSocketImpl.serverPort:I
        57: .line 424
            aload 13 /* e */
            astore 11 /* savedExc */
        end local 13 // java.io.IOException e
        58: .line 400
      StackMap locals:
      StackMap stack:
            aload 12 /* iProxy */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 42
        59: .line 433
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.server:Ljava/lang/String;
            ifnonnull 67
        60: .line 434
            new java.net.SocketException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Can't connect to SOCKS proxy:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        61: .line 435
            aload 11 /* savedExc */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        62: .line 434
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        end local 12 // java.util.Iterator iProxy
        end local 11 // java.io.IOException savedExc
        end local 10 // java.net.Proxy p
        end local 9 // java.lang.String host
        end local 8 // java.net.URI uri
        end local 7 // java.net.ProxySelector sel
        63: .line 440
      StackMap locals: java.net.SocksSocketImpl java.net.SocketAddress int long java.lang.SecurityManager java.net.InetSocketAddress
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.server:Ljava/lang/String;
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.serverPort:I
            lload 3 /* deadlineMillis */
            invokestatic java.net.SocksSocketImpl.remainingMillis:(J)I
            invokevirtual java.net.SocksSocketImpl.privilegedConnect:(Ljava/lang/String;II)V
        64: .line 441
            goto 67
      StackMap locals:
      StackMap stack: java.io.IOException
        65: astore 7 /* e */
        start local 7 // java.io.IOException e
        66: .line 442
            new java.net.SocketException
            dup
            aload 7 /* e */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        end local 7 // java.io.IOException e
        67: .line 447
      StackMap locals:
      StackMap stack:
            new java.io.BufferedOutputStream
            dup
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdOut:Ljava/io/OutputStream;
            sipush 512
            invokespecial java.io.BufferedOutputStream.<init>:(Ljava/io/OutputStream;I)V
            astore 7 /* out */
        start local 7 // java.io.BufferedOutputStream out
        68: .line 448
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdIn:Ljava/io/InputStream;
            astore 8 /* in */
        start local 8 // java.io.InputStream in
        69: .line 450
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.useV4:Z
            ifeq 74
        70: .line 453
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.isUnresolved:()Z
            ifeq 72
        71: .line 454
            new java.net.UnknownHostException
            dup
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.toString:()Ljava/lang/String;
            invokespecial java.net.UnknownHostException.<init>:(Ljava/lang/String;)V
            athrow
        72: .line 455
      StackMap locals: java.io.BufferedOutputStream java.io.InputStream
      StackMap stack:
            aload 0 /* this */
            aload 8 /* in */
            aload 7 /* out */
            aload 6 /* epoint */
            lload 3 /* deadlineMillis */
            invokevirtual java.net.SocksSocketImpl.connectV4:(Ljava/io/InputStream;Ljava/io/OutputStream;Ljava/net/InetSocketAddress;J)V
        73: .line 456
            return
        74: .line 460
      StackMap locals:
      StackMap stack:
            aload 7 /* out */
            iconst_5
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        75: .line 461
            aload 7 /* out */
            iconst_2
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        76: .line 462
            aload 7 /* out */
            iconst_0
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        77: .line 463
            aload 7 /* out */
            iconst_2
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        78: .line 464
            aload 7 /* out */
            invokevirtual java.io.BufferedOutputStream.flush:()V
        79: .line 465
            iconst_2
            newarray 8
            astore 9 /* data */
        start local 9 // byte[] data
        80: .line 466
            aload 0 /* this */
            aload 8 /* in */
            aload 9 /* data */
            lload 3 /* deadlineMillis */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[BJ)I
            istore 10 /* i */
        start local 10 // int i
        81: .line 467
            iload 10 /* i */
            iconst_2
            if_icmpne 82
            aload 9 /* data */
            iconst_0
            baload
            iconst_5
            if_icmpeq 86
        82: .line 472
      StackMap locals: byte[] int
      StackMap stack:
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.isUnresolved:()Z
            ifeq 84
        83: .line 473
            new java.net.UnknownHostException
            dup
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.toString:()Ljava/lang/String;
            invokespecial java.net.UnknownHostException.<init>:(Ljava/lang/String;)V
            athrow
        84: .line 474
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 8 /* in */
            aload 7 /* out */
            aload 6 /* epoint */
            lload 3 /* deadlineMillis */
            invokevirtual java.net.SocksSocketImpl.connectV4:(Ljava/io/InputStream;Ljava/io/OutputStream;Ljava/net/InetSocketAddress;J)V
        85: .line 475
            return
        86: .line 477
      StackMap locals:
      StackMap stack:
            aload 9 /* data */
            iconst_1
            baload
            iconst_m1
            if_icmpne 88
        87: .line 478
            new java.net.SocketException
            dup
            ldc "SOCKS : No acceptable methods"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        88: .line 479
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 9 /* data */
            iconst_1
            baload
            aload 8 /* in */
            aload 7 /* out */
            lload 3 /* deadlineMillis */
            invokevirtual java.net.SocksSocketImpl.authenticate:(BLjava/io/InputStream;Ljava/io/BufferedOutputStream;J)Z
            ifne 90
        89: .line 480
            new java.net.SocketException
            dup
            ldc "SOCKS : authentication failed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        90: .line 482
      StackMap locals:
      StackMap stack:
            aload 7 /* out */
            iconst_5
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        91: .line 483
            aload 7 /* out */
            iconst_1
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        92: .line 484
            aload 7 /* out */
            iconst_0
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        93: .line 486
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.isUnresolved:()Z
            ifeq 103
        94: .line 487
            aload 7 /* out */
            iconst_3
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        95: .line 488
            aload 7 /* out */
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.getHostName:()Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        96: .line 490
            aload 7 /* out */
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.getHostName:()Ljava/lang/String;
            ldc "ISO-8859-1"
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
            invokevirtual java.io.BufferedOutputStream.write:([B)V
        97: .line 491
            goto 100
      StackMap locals:
      StackMap stack: java.io.UnsupportedEncodingException
        98: pop
        99: .line 492
            getstatic java.net.SocksSocketImpl.$assertionsDisabled:Z
            ifne 100
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
       100: .line 494
      StackMap locals:
      StackMap stack:
            aload 7 /* out */
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            bipush 8
            ishr
            sipush 255
            iand
            invokevirtual java.io.BufferedOutputStream.write:(I)V
       101: .line 495
            aload 7 /* out */
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            iconst_0
            ishr
            sipush 255
            iand
            invokevirtual java.io.BufferedOutputStream.write:(I)V
       102: .line 496
            goto 113
      StackMap locals:
      StackMap stack:
       103: aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            instanceof java.net.Inet6Address
            ifeq 109
       104: .line 497
            aload 7 /* out */
            iconst_4
            invokevirtual java.io.BufferedOutputStream.write:(I)V
       105: .line 498
            aload 7 /* out */
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.getAddress:()[B
            invokevirtual java.io.BufferedOutputStream.write:([B)V
       106: .line 499
            aload 7 /* out */
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            bipush 8
            ishr
            sipush 255
            iand
            invokevirtual java.io.BufferedOutputStream.write:(I)V
       107: .line 500
            aload 7 /* out */
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            iconst_0
            ishr
            sipush 255
            iand
            invokevirtual java.io.BufferedOutputStream.write:(I)V
       108: .line 501
            goto 113
       109: .line 502
      StackMap locals:
      StackMap stack:
            aload 7 /* out */
            iconst_1
            invokevirtual java.io.BufferedOutputStream.write:(I)V
       110: .line 503
            aload 7 /* out */
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.getAddress:()[B
            invokevirtual java.io.BufferedOutputStream.write:([B)V
       111: .line 504
            aload 7 /* out */
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            bipush 8
            ishr
            sipush 255
            iand
            invokevirtual java.io.BufferedOutputStream.write:(I)V
       112: .line 505
            aload 7 /* out */
            aload 6 /* epoint */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            iconst_0
            ishr
            sipush 255
            iand
            invokevirtual java.io.BufferedOutputStream.write:(I)V
       113: .line 507
      StackMap locals:
      StackMap stack:
            aload 7 /* out */
            invokevirtual java.io.BufferedOutputStream.flush:()V
       114: .line 508
            iconst_4
            newarray 8
            astore 9 /* data */
       115: .line 509
            aload 0 /* this */
            aload 8 /* in */
            aload 9 /* data */
            lload 3 /* deadlineMillis */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[BJ)I
            istore 10 /* i */
       116: .line 510
            iload 10 /* i */
            iconst_4
            if_icmpeq 118
       117: .line 511
            new java.net.SocketException
            dup
            ldc "Reply from SOCKS server has bad length"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
       118: .line 512
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 11 /* ex */
        start local 11 // java.net.SocketException ex
       119: .line 515
            aload 9 /* data */
            iconst_1
            baload
            tableswitch { // 0 - 8
                    0: 120
                    1: 153
                    2: 155
                    3: 157
                    4: 159
                    5: 161
                    6: 163
                    7: 165
                    8: 167
              default: 168
          }
       120: .line 518
      StackMap locals: java.net.SocketException
      StackMap stack:
            aload 9 /* data */
            iconst_3
            baload
            tableswitch { // 1 - 4
                    1: 121
                    2: 151
                    3: 129
                    4: 142
              default: 151
          }
       121: .line 520
      StackMap locals:
      StackMap stack:
            iconst_4
            newarray 8
            astore 13 /* addr */
        start local 13 // byte[] addr
       122: .line 521
            aload 0 /* this */
            aload 8 /* in */
            aload 13 /* addr */
            lload 3 /* deadlineMillis */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[BJ)I
            istore 10 /* i */
       123: .line 522
            iload 10 /* i */
            iconst_4
            if_icmpeq 125
       124: .line 523
            new java.net.SocketException
            dup
            ldc "Reply from SOCKS server badly formatted"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
       125: .line 524
      StackMap locals: java.net.SocksSocketImpl java.net.SocketAddress int long java.lang.SecurityManager java.net.InetSocketAddress java.io.BufferedOutputStream java.io.InputStream byte[] int java.net.SocketException top byte[]
      StackMap stack:
            iconst_2
            newarray 8
            astore 9 /* data */
       126: .line 525
            aload 0 /* this */
            aload 8 /* in */
            aload 9 /* data */
            lload 3 /* deadlineMillis */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[BJ)I
            istore 10 /* i */
       127: .line 526
            iload 10 /* i */
            iconst_2
            if_icmpeq 168
       128: .line 527
            new java.net.SocketException
            dup
            ldc "Reply from SOCKS server badly formatted"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        end local 13 // byte[] addr
       129: .line 530
      StackMap locals: java.net.SocksSocketImpl java.net.SocketAddress int long java.lang.SecurityManager java.net.InetSocketAddress java.io.BufferedOutputStream java.io.InputStream byte[] int java.net.SocketException
      StackMap stack:
            iconst_1
            newarray 8
            astore 14 /* lenByte */
        start local 14 // byte[] lenByte
       130: .line 531
            aload 0 /* this */
            aload 8 /* in */
            aload 14 /* lenByte */
            lload 3 /* deadlineMillis */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[BJ)I
            istore 10 /* i */
       131: .line 532
            iload 10 /* i */
            iconst_1
            if_icmpeq 133
       132: .line 533
            new java.net.SocketException
            dup
            ldc "Reply from SOCKS server badly formatted"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
       133: .line 534
      StackMap locals: java.net.SocksSocketImpl java.net.SocketAddress int long java.lang.SecurityManager java.net.InetSocketAddress java.io.BufferedOutputStream java.io.InputStream byte[] int java.net.SocketException top top byte[]
      StackMap stack:
            aload 14 /* lenByte */
            iconst_0
            baload
            sipush 255
            iand
            istore 12 /* len */
        start local 12 // int len
       134: .line 535
            iload 12 /* len */
            newarray 8
            astore 15 /* host */
        start local 15 // byte[] host
       135: .line 536
            aload 0 /* this */
            aload 8 /* in */
            aload 15 /* host */
            lload 3 /* deadlineMillis */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[BJ)I
            istore 10 /* i */
       136: .line 537
            iload 10 /* i */
            iload 12 /* len */
            if_icmpeq 138
       137: .line 538
            new java.net.SocketException
            dup
            ldc "Reply from SOCKS server badly formatted"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
       138: .line 539
      StackMap locals: java.net.SocksSocketImpl java.net.SocketAddress int long java.lang.SecurityManager java.net.InetSocketAddress java.io.BufferedOutputStream java.io.InputStream byte[] int java.net.SocketException int top byte[] byte[]
      StackMap stack:
            iconst_2
            newarray 8
            astore 9 /* data */
       139: .line 540
            aload 0 /* this */
            aload 8 /* in */
            aload 9 /* data */
            lload 3 /* deadlineMillis */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[BJ)I
            istore 10 /* i */
       140: .line 541
            iload 10 /* i */
            iconst_2
            if_icmpeq 168
       141: .line 542
            new java.net.SocketException
            dup
            ldc "Reply from SOCKS server badly formatted"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        end local 15 // byte[] host
        end local 14 // byte[] lenByte
        end local 12 // int len
       142: .line 545
      StackMap locals: java.net.SocksSocketImpl java.net.SocketAddress int long java.lang.SecurityManager java.net.InetSocketAddress java.io.BufferedOutputStream java.io.InputStream byte[] int java.net.SocketException
      StackMap stack:
            bipush 16
            istore 12 /* len */
        start local 12 // int len
       143: .line 546
            iload 12 /* len */
            newarray 8
            astore 13 /* addr */
        start local 13 // byte[] addr
       144: .line 547
            aload 0 /* this */
            aload 8 /* in */
            aload 13 /* addr */
            lload 3 /* deadlineMillis */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[BJ)I
            istore 10 /* i */
       145: .line 548
            iload 10 /* i */
            iload 12 /* len */
            if_icmpeq 147
       146: .line 549
            new java.net.SocketException
            dup
            ldc "Reply from SOCKS server badly formatted"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
       147: .line 550
      StackMap locals: int byte[]
      StackMap stack:
            iconst_2
            newarray 8
            astore 9 /* data */
       148: .line 551
            aload 0 /* this */
            aload 8 /* in */
            aload 9 /* data */
            lload 3 /* deadlineMillis */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[BJ)I
            istore 10 /* i */
       149: .line 552
            iload 10 /* i */
            iconst_2
            if_icmpeq 168
       150: .line 553
            new java.net.SocketException
            dup
            ldc "Reply from SOCKS server badly formatted"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        end local 13 // byte[] addr
        end local 12 // int len
       151: .line 556
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "Reply from SOCKS server contains wrong code"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 11 /* ex */
       152: .line 559
            goto 168
       153: .line 561
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS server general failure"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 11 /* ex */
       154: .line 562
            goto 168
       155: .line 564
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: Connection not allowed by ruleset"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 11 /* ex */
       156: .line 565
            goto 168
       157: .line 567
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: Network unreachable"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 11 /* ex */
       158: .line 568
            goto 168
       159: .line 570
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: Host unreachable"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 11 /* ex */
       160: .line 571
            goto 168
       161: .line 573
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: Connection refused"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 11 /* ex */
       162: .line 574
            goto 168
       163: .line 576
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: TTL expired"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 11 /* ex */
       164: .line 577
            goto 168
       165: .line 579
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: Command not supported"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 11 /* ex */
       166: .line 580
            goto 168
       167: .line 582
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: address type not supported"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 11 /* ex */
       168: .line 585
      StackMap locals:
      StackMap stack:
            aload 11 /* ex */
            ifnull 172
       169: .line 586
            aload 8 /* in */
            invokevirtual java.io.InputStream.close:()V
       170: .line 587
            aload 7 /* out */
            invokevirtual java.io.BufferedOutputStream.close:()V
       171: .line 588
            aload 11 /* ex */
            athrow
       172: .line 590
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 6 /* epoint */
            putfield java.net.SocksSocketImpl.external_address:Ljava/net/InetSocketAddress;
       173: .line 591
            return
        end local 11 // java.net.SocketException ex
        end local 10 // int i
        end local 9 // byte[] data
        end local 8 // java.io.InputStream in
        end local 7 // java.io.BufferedOutputStream out
        end local 6 // java.net.InetSocketAddress epoint
        end local 5 // java.lang.SecurityManager security
        end local 3 // long deadlineMillis
        end local 2 // int timeout
        end local 1 // java.net.SocketAddress endpoint
        end local 0 // java.net.SocksSocketImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0  174     0            this  Ljava/net/SocksSocketImpl;
            0  174     1        endpoint  Ljava/net/SocketAddress;
            0  174     2         timeout  I
            2    3     3  deadlineMillis  J
            7  174     3  deadlineMillis  J
            4    7     5          finish  J
            8  174     5        security  Ljava/lang/SecurityManager;
           11  174     6          epoint  Ljava/net/InetSocketAddress;
           23   63     7             sel  Ljava/net/ProxySelector;
           31   32     8             uri  Ljava/net/URI;
           35   63     8             uri  Ljava/net/URI;
           27   63     9            host  Ljava/lang/String;
           33   35    10               e  Ljava/net/URISyntaxException;
           36   63    10               p  Ljava/net/Proxy;
           37   63    11        savedExc  Ljava/io/IOException;
           38   63    12          iProxy  Ljava/util/Iterator<Ljava/net/Proxy;>;
           54   58    13               e  Ljava/io/IOException;
           66   67     7               e  Ljava/io/IOException;
           68  174     7             out  Ljava/io/BufferedOutputStream;
           69  174     8              in  Ljava/io/InputStream;
           80  174     9            data  [B
           81  174    10               i  I
          119  174    11              ex  Ljava/net/SocketException;
          134  142    12             len  I
          143  151    12             len  I
          122  129    13            addr  [B
          144  151    13            addr  [B
          130  142    14         lenByte  [B
          135  142    15            host  [B
      Exception table:
        from    to  target  type
          30    31      32  Class java.net.URISyntaxException
          51    52      53  Class java.io.IOException
          63    64      65  Class java.io.IOException
          96    97      98  Class java.io.UnsupportedEncodingException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      endpoint  
      timeout   

  private void bindV4(java.io.InputStream, java.io.OutputStream, java.net.InetAddress, int);
    descriptor: (Ljava/io/InputStream;Ljava/io/OutputStream;Ljava/net/InetAddress;I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=11, args_size=5
        start local 0 // java.net.SocksSocketImpl this
        start local 1 // java.io.InputStream in
        start local 2 // java.io.OutputStream out
        start local 3 // java.net.InetAddress baddr
        start local 4 // int lport
         0: .line 596
            aload 3 /* baddr */
            instanceof java.net.Inet4Address
            ifne 2
         1: .line 597
            new java.net.SocketException
            dup
            ldc "SOCKS V4 requires IPv4 only addresses"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 599
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* baddr */
            iload 4 /* lport */
            invokespecial java.net.PlainSocketImpl.bind:(Ljava/net/InetAddress;I)V
         3: .line 600
            aload 3 /* baddr */
            invokevirtual java.net.InetAddress.getAddress:()[B
            astore 5 /* addr1 */
        start local 5 // byte[] addr1
         4: .line 602
            aload 3 /* baddr */
            astore 6 /* naddr */
        start local 6 // java.net.InetAddress naddr
         5: .line 603
            aload 6 /* naddr */
            invokevirtual java.net.InetAddress.isAnyLocalAddress:()Z
            ifeq 9
         6: .line 605
            new java.net.SocksSocketImpl$4
            dup
            aload 0 /* this */
            invokespecial java.net.SocksSocketImpl$4.<init>:(Ljava/net/SocksSocketImpl;)V
         7: .line 604
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.net.InetAddress
            astore 6 /* naddr */
         8: .line 611
            aload 6 /* naddr */
            invokevirtual java.net.InetAddress.getAddress:()[B
            astore 5 /* addr1 */
         9: .line 613
      StackMap locals: byte[] java.net.InetAddress
      StackMap stack:
            aload 2 /* out */
            iconst_4
            invokevirtual java.io.OutputStream.write:(I)V
        10: .line 614
            aload 2 /* out */
            iconst_2
            invokevirtual java.io.OutputStream.write:(I)V
        11: .line 615
            aload 2 /* out */
            aload 0 /* this */
            invokespecial java.net.PlainSocketImpl.getLocalPort:()I
            bipush 8
            ishr
            sipush 255
            iand
            invokevirtual java.io.OutputStream.write:(I)V
        12: .line 616
            aload 2 /* out */
            aload 0 /* this */
            invokespecial java.net.PlainSocketImpl.getLocalPort:()I
            iconst_0
            ishr
            sipush 255
            iand
            invokevirtual java.io.OutputStream.write:(I)V
        13: .line 617
            aload 2 /* out */
            aload 5 /* addr1 */
            invokevirtual java.io.OutputStream.write:([B)V
        14: .line 618
            aload 0 /* this */
            invokevirtual java.net.SocksSocketImpl.getUserName:()Ljava/lang/String;
            astore 7 /* userName */
        start local 7 // java.lang.String userName
        15: .line 620
            aload 2 /* out */
            aload 7 /* userName */
            ldc "ISO-8859-1"
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
            invokevirtual java.io.OutputStream.write:([B)V
        16: .line 621
            goto 19
      StackMap locals: java.net.SocksSocketImpl java.io.InputStream java.io.OutputStream java.net.InetAddress int byte[] java.net.InetAddress java.lang.String
      StackMap stack: java.io.UnsupportedEncodingException
        17: pop
        18: .line 622
            getstatic java.net.SocksSocketImpl.$assertionsDisabled:Z
            ifne 19
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        19: .line 624
      StackMap locals:
      StackMap stack:
            aload 2 /* out */
            iconst_0
            invokevirtual java.io.OutputStream.write:(I)V
        20: .line 625
            aload 2 /* out */
            invokevirtual java.io.OutputStream.flush:()V
        21: .line 626
            bipush 8
            newarray 8
            astore 8 /* data */
        start local 8 // byte[] data
        22: .line 627
            aload 0 /* this */
            aload 1 /* in */
            aload 8 /* data */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[B)I
            istore 9 /* n */
        start local 9 // int n
        23: .line 628
            iload 9 /* n */
            bipush 8
            if_icmpeq 25
        24: .line 629
            new java.net.SocketException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Reply from SOCKS server has bad length: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 9 /* n */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        25: .line 630
      StackMap locals: byte[] int
      StackMap stack:
            aload 8 /* data */
            iconst_0
            baload
            ifeq 27
            aload 8 /* data */
            iconst_0
            baload
            iconst_4
            if_icmpeq 27
        26: .line 631
            new java.net.SocketException
            dup
            ldc "Reply from SOCKS server has bad version"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        27: .line 632
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 10 /* ex */
        start local 10 // java.net.SocketException ex
        28: .line 633
            aload 8 /* data */
            iconst_1
            baload
            tableswitch { // 90 - 93
                   90: 29
                   91: 31
                   92: 33
                   93: 35
              default: 37
          }
        29: .line 636
      StackMap locals: java.net.SocketException
      StackMap stack:
            aload 0 /* this */
            new java.net.InetSocketAddress
            dup
            aload 3 /* baddr */
            iload 4 /* lport */
            invokespecial java.net.InetSocketAddress.<init>:(Ljava/net/InetAddress;I)V
            putfield java.net.SocksSocketImpl.external_address:Ljava/net/InetSocketAddress;
        30: .line 637
            goto 38
        31: .line 639
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS request rejected"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 10 /* ex */
        32: .line 640
            goto 38
        33: .line 642
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS server couldn't reach destination"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 10 /* ex */
        34: .line 643
            goto 38
        35: .line 645
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS authentication failed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 10 /* ex */
        36: .line 646
            goto 38
        37: .line 648
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "Reply from SOCKS server contains bad status"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 10 /* ex */
        38: .line 651
      StackMap locals:
      StackMap stack:
            aload 10 /* ex */
            ifnull 42
        39: .line 652
            aload 1 /* in */
            invokevirtual java.io.InputStream.close:()V
        40: .line 653
            aload 2 /* out */
            invokevirtual java.io.OutputStream.close:()V
        41: .line 654
            aload 10 /* ex */
            athrow
        42: .line 657
      StackMap locals:
      StackMap stack:
            return
        end local 10 // java.net.SocketException ex
        end local 9 // int n
        end local 8 // byte[] data
        end local 7 // java.lang.String userName
        end local 6 // java.net.InetAddress naddr
        end local 5 // byte[] addr1
        end local 4 // int lport
        end local 3 // java.net.InetAddress baddr
        end local 2 // java.io.OutputStream out
        end local 1 // java.io.InputStream in
        end local 0 // java.net.SocksSocketImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   43     0      this  Ljava/net/SocksSocketImpl;
            0   43     1        in  Ljava/io/InputStream;
            0   43     2       out  Ljava/io/OutputStream;
            0   43     3     baddr  Ljava/net/InetAddress;
            0   43     4     lport  I
            4   43     5     addr1  [B
            5   43     6     naddr  Ljava/net/InetAddress;
           15   43     7  userName  Ljava/lang/String;
           22   43     8      data  [B
           23   43     9         n  I
           28   43    10        ex  Ljava/net/SocketException;
      Exception table:
        from    to  target  type
          15    16      17  Class java.io.UnsupportedEncodingException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      in     
      out    
      baddr  
      lport  

  protected synchronized void socksBind(java.net.InetSocketAddress);
    descriptor: (Ljava/net/InetSocketAddress;)V
    flags: (0x0024) ACC_PROTECTED, ACC_SYNCHRONIZED
    Code:
      stack=7, locals=12, args_size=2
        start local 0 // java.net.SocksSocketImpl this
        start local 1 // java.net.InetSocketAddress saddr
         0: .line 668
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.socket:Ljava/net/Socket;
            ifnull 2
         1: .line 671
            return
         2: .line 676
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.server:Ljava/lang/String;
            ifnonnull 44
         3: .line 681
            new java.net.SocksSocketImpl$5
            dup
            aload 0 /* this */
            invokespecial java.net.SocksSocketImpl$5.<init>:(Ljava/net/SocksSocketImpl;)V
         4: .line 680
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.net.ProxySelector
            astore 2 /* sel */
        start local 2 // java.net.ProxySelector sel
         5: .line 686
            aload 2 /* sel */
            ifnonnull 7
         6: .line 690
            return
         7: .line 694
      StackMap locals: java.net.ProxySelector
      StackMap stack:
            aload 1 /* saddr */
            invokevirtual java.net.InetSocketAddress.getHostString:()Ljava/lang/String;
            astore 4 /* host */
        start local 4 // java.lang.String host
         8: .line 696
            aload 1 /* saddr */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            instanceof java.net.Inet6Address
            ifeq 11
         9: .line 697
            aload 4 /* host */
            ldc "["
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 11
            aload 4 /* host */
            bipush 58
            invokevirtual java.lang.String.indexOf:(I)I
            iflt 11
        10: .line 698
            new java.lang.StringBuilder
            dup
            ldc "["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* host */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 4 /* host */
        11: .line 701
      StackMap locals: java.net.SocksSocketImpl java.net.InetSocketAddress java.net.ProxySelector top java.lang.String
      StackMap stack:
            new java.net.URI
            dup
            new java.lang.StringBuilder
            dup
            ldc "serversocket://"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* host */
            invokestatic sun.net.www.ParseUtil.encodePath:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* saddr */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.net.URI.<init>:(Ljava/lang/String;)V
            astore 3 /* uri */
        start local 3 // java.net.URI uri
        12: .line 702
            goto 16
        end local 3 // java.net.URI uri
      StackMap locals:
      StackMap stack: java.net.URISyntaxException
        13: astore 5 /* e */
        start local 5 // java.net.URISyntaxException e
        14: .line 704
            getstatic java.net.SocksSocketImpl.$assertionsDisabled:Z
            ifne 15
            new java.lang.AssertionError
            dup
            aload 5 /* e */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        15: .line 705
      StackMap locals: java.net.URISyntaxException
      StackMap stack:
            aconst_null
            astore 3 /* uri */
        end local 5 // java.net.URISyntaxException e
        start local 3 // java.net.URI uri
        16: .line 707
      StackMap locals: java.net.SocksSocketImpl java.net.InetSocketAddress java.net.ProxySelector java.net.URI java.lang.String
      StackMap stack:
            aconst_null
            astore 5 /* p */
        start local 5 // java.net.Proxy p
        17: .line 708
            aconst_null
            astore 6 /* savedExc */
        start local 6 // java.lang.Exception savedExc
        18: .line 709
            aconst_null
            astore 7 /* iProxy */
        start local 7 // java.util.Iterator iProxy
        19: .line 710
            aload 2 /* sel */
            aload 3 /* uri */
            invokevirtual java.net.ProxySelector.select:(Ljava/net/URI;)Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7 /* iProxy */
        20: .line 711
            aload 7 /* iProxy */
            ifnull 21
            aload 7 /* iProxy */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 39
        21: .line 712
      StackMap locals: java.net.Proxy java.lang.Exception java.util.Iterator
      StackMap stack:
            return
        22: .line 715
      StackMap locals:
      StackMap stack:
            aload 7 /* iProxy */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.net.Proxy
            astore 5 /* p */
        23: .line 716
            aload 5 /* p */
            ifnull 24
            aload 5 /* p */
            invokevirtual java.net.Proxy.type:()Ljava/net/Proxy$Type;
            getstatic java.net.Proxy$Type.SOCKS:Ljava/net/Proxy$Type;
            if_acmpeq 25
        24: .line 717
      StackMap locals:
      StackMap stack:
            return
        25: .line 720
      StackMap locals:
      StackMap stack:
            aload 5 /* p */
            invokevirtual java.net.Proxy.address:()Ljava/net/SocketAddress;
            instanceof java.net.InetSocketAddress
            ifne 27
        26: .line 721
            new java.net.SocketException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unknown address type for proxy: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* p */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        27: .line 723
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 5 /* p */
            invokevirtual java.net.Proxy.address:()Ljava/net/SocketAddress;
            checkcast java.net.InetSocketAddress
            invokevirtual java.net.InetSocketAddress.getHostString:()Ljava/lang/String;
            putfield java.net.SocksSocketImpl.server:Ljava/lang/String;
        28: .line 724
            aload 0 /* this */
            aload 5 /* p */
            invokevirtual java.net.Proxy.address:()Ljava/net/SocketAddress;
            checkcast java.net.InetSocketAddress
            invokevirtual java.net.InetSocketAddress.getPort:()I
            putfield java.net.SocksSocketImpl.serverPort:I
        29: .line 725
            aload 0 /* this */
            aload 5 /* p */
            invokestatic java.net.SocksSocketImpl.useV4:(Ljava/net/Proxy;)Z
            putfield java.net.SocksSocketImpl.useV4:Z
        30: .line 730
            new java.net.SocksSocketImpl$6
            dup
            aload 0 /* this */
            invokespecial java.net.SocksSocketImpl$6.<init>:(Ljava/net/SocksSocketImpl;)V
        31: .line 729
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
            pop
        32: .line 739
            goto 39
      StackMap locals:
      StackMap stack: java.lang.Exception
        33: astore 8 /* e */
        start local 8 // java.lang.Exception e
        34: .line 741
            aload 2 /* sel */
            aload 3 /* uri */
            aload 5 /* p */
            invokevirtual java.net.Proxy.address:()Ljava/net/SocketAddress;
            new java.net.SocketException
            dup
            aload 8 /* e */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            invokevirtual java.net.ProxySelector.connectFailed:(Ljava/net/URI;Ljava/net/SocketAddress;Ljava/io/IOException;)V
        35: .line 742
            aload 0 /* this */
            aconst_null
            putfield java.net.SocksSocketImpl.server:Ljava/lang/String;
        36: .line 743
            aload 0 /* this */
            iconst_m1
            putfield java.net.SocksSocketImpl.serverPort:I
        37: .line 744
            aload 0 /* this */
            aconst_null
            putfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
        38: .line 745
            aload 8 /* e */
            astore 6 /* savedExc */
        end local 8 // java.lang.Exception e
        39: .line 714
      StackMap locals:
      StackMap stack:
            aload 7 /* iProxy */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 22
        40: .line 754
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.server:Ljava/lang/String;
            ifnull 41
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
            ifnonnull 49
        41: .line 755
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Can't connect to SOCKS proxy:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        42: .line 756
            aload 6 /* savedExc */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        43: .line 755
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        end local 7 // java.util.Iterator iProxy
        end local 6 // java.lang.Exception savedExc
        end local 5 // java.net.Proxy p
        end local 4 // java.lang.String host
        end local 3 // java.net.URI uri
        end local 2 // java.net.ProxySelector sel
        44: .line 761
      StackMap locals: java.net.SocksSocketImpl java.net.InetSocketAddress
      StackMap stack:
            new java.net.SocksSocketImpl$7
            dup
            aload 0 /* this */
            invokespecial java.net.SocksSocketImpl$7.<init>:(Ljava/net/SocksSocketImpl;)V
        45: .line 760
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
            pop
        46: .line 770
            goto 49
      StackMap locals:
      StackMap stack: java.lang.Exception
        47: astore 2 /* e */
        start local 2 // java.lang.Exception e
        48: .line 771
            new java.net.SocketException
            dup
            aload 2 /* e */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.lang.Exception e
        49: .line 774
      StackMap locals:
      StackMap stack:
            new java.io.BufferedOutputStream
            dup
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdOut:Ljava/io/OutputStream;
            sipush 512
            invokespecial java.io.BufferedOutputStream.<init>:(Ljava/io/OutputStream;I)V
            astore 2 /* out */
        start local 2 // java.io.BufferedOutputStream out
        50: .line 775
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdIn:Ljava/io/InputStream;
            astore 3 /* in */
        start local 3 // java.io.InputStream in
        51: .line 776
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.useV4:Z
            ifeq 54
        52: .line 777
            aload 0 /* this */
            aload 3 /* in */
            aload 2 /* out */
            aload 1 /* saddr */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            aload 1 /* saddr */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokevirtual java.net.SocksSocketImpl.bindV4:(Ljava/io/InputStream;Ljava/io/OutputStream;Ljava/net/InetAddress;I)V
        53: .line 778
            return
        54: .line 780
      StackMap locals: java.io.BufferedOutputStream java.io.InputStream
      StackMap stack:
            aload 2 /* out */
            iconst_5
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        55: .line 781
            aload 2 /* out */
            iconst_2
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        56: .line 782
            aload 2 /* out */
            iconst_0
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        57: .line 783
            aload 2 /* out */
            iconst_2
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        58: .line 784
            aload 2 /* out */
            invokevirtual java.io.BufferedOutputStream.flush:()V
        59: .line 785
            iconst_2
            newarray 8
            astore 4 /* data */
        start local 4 // byte[] data
        60: .line 786
            aload 0 /* this */
            aload 3 /* in */
            aload 4 /* data */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[B)I
            istore 5 /* i */
        start local 5 // int i
        61: .line 787
            iload 5 /* i */
            iconst_2
            if_icmpne 62
            aload 4 /* data */
            iconst_0
            baload
            iconst_5
            if_icmpeq 64
        62: .line 790
      StackMap locals: byte[] int
      StackMap stack:
            aload 0 /* this */
            aload 3 /* in */
            aload 2 /* out */
            aload 1 /* saddr */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            aload 1 /* saddr */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokevirtual java.net.SocksSocketImpl.bindV4:(Ljava/io/InputStream;Ljava/io/OutputStream;Ljava/net/InetAddress;I)V
        63: .line 791
            return
        64: .line 793
      StackMap locals:
      StackMap stack:
            aload 4 /* data */
            iconst_1
            baload
            iconst_m1
            if_icmpne 66
        65: .line 794
            new java.net.SocketException
            dup
            ldc "SOCKS : No acceptable methods"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        66: .line 795
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* data */
            iconst_1
            baload
            aload 3 /* in */
            aload 2 /* out */
            invokevirtual java.net.SocksSocketImpl.authenticate:(BLjava/io/InputStream;Ljava/io/BufferedOutputStream;)Z
            ifne 68
        67: .line 796
            new java.net.SocketException
            dup
            ldc "SOCKS : authentication failed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        68: .line 799
      StackMap locals:
      StackMap stack:
            aload 2 /* out */
            iconst_5
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        69: .line 800
            aload 2 /* out */
            iconst_2
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        70: .line 801
            aload 2 /* out */
            iconst_0
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        71: .line 802
            aload 1 /* saddr */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            istore 6 /* lport */
        start local 6 // int lport
        72: .line 803
            aload 1 /* saddr */
            invokevirtual java.net.InetSocketAddress.isUnresolved:()Z
            ifeq 82
        73: .line 804
            aload 2 /* out */
            iconst_3
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        74: .line 805
            aload 2 /* out */
            aload 1 /* saddr */
            invokevirtual java.net.InetSocketAddress.getHostName:()Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        75: .line 807
            aload 2 /* out */
            aload 1 /* saddr */
            invokevirtual java.net.InetSocketAddress.getHostName:()Ljava/lang/String;
            ldc "ISO-8859-1"
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
            invokevirtual java.io.BufferedOutputStream.write:([B)V
        76: .line 808
            goto 79
      StackMap locals: java.net.SocksSocketImpl java.net.InetSocketAddress java.io.BufferedOutputStream java.io.InputStream byte[] int int
      StackMap stack: java.io.UnsupportedEncodingException
        77: pop
        78: .line 809
            getstatic java.net.SocksSocketImpl.$assertionsDisabled:Z
            ifne 79
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        79: .line 811
      StackMap locals:
      StackMap stack:
            aload 2 /* out */
            iload 6 /* lport */
            bipush 8
            ishr
            sipush 255
            iand
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        80: .line 812
            aload 2 /* out */
            iload 6 /* lport */
            iconst_0
            ishr
            sipush 255
            iand
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        81: .line 813
            goto 100
      StackMap locals:
      StackMap stack:
        82: aload 1 /* saddr */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            instanceof java.net.Inet4Address
            ifeq 90
        83: .line 814
            aload 1 /* saddr */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.getAddress:()[B
            astore 7 /* addr1 */
        start local 7 // byte[] addr1
        84: .line 815
            aload 2 /* out */
            iconst_1
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        85: .line 816
            aload 2 /* out */
            aload 7 /* addr1 */
            invokevirtual java.io.BufferedOutputStream.write:([B)V
        86: .line 817
            aload 2 /* out */
            iload 6 /* lport */
            bipush 8
            ishr
            sipush 255
            iand
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        87: .line 818
            aload 2 /* out */
            iload 6 /* lport */
            iconst_0
            ishr
            sipush 255
            iand
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        88: .line 819
            aload 2 /* out */
            invokevirtual java.io.BufferedOutputStream.flush:()V
        end local 7 // byte[] addr1
        89: .line 820
            goto 100
      StackMap locals:
      StackMap stack:
        90: aload 1 /* saddr */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            instanceof java.net.Inet6Address
            ifeq 98
        91: .line 821
            aload 1 /* saddr */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.getAddress:()[B
            astore 7 /* addr1 */
        start local 7 // byte[] addr1
        92: .line 822
            aload 2 /* out */
            iconst_4
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        93: .line 823
            aload 2 /* out */
            aload 7 /* addr1 */
            invokevirtual java.io.BufferedOutputStream.write:([B)V
        94: .line 824
            aload 2 /* out */
            iload 6 /* lport */
            bipush 8
            ishr
            sipush 255
            iand
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        95: .line 825
            aload 2 /* out */
            iload 6 /* lport */
            iconst_0
            ishr
            sipush 255
            iand
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        96: .line 826
            aload 2 /* out */
            invokevirtual java.io.BufferedOutputStream.flush:()V
        end local 7 // byte[] addr1
        97: .line 827
            goto 100
        98: .line 828
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
            invokevirtual java.net.Socket.close:()V
        99: .line 829
            new java.net.SocketException
            dup
            new java.lang.StringBuilder
            dup
            ldc "unsupported address type : "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* saddr */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
       100: .line 831
      StackMap locals:
      StackMap stack:
            iconst_4
            newarray 8
            astore 4 /* data */
       101: .line 832
            aload 0 /* this */
            aload 3 /* in */
            aload 4 /* data */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[B)I
            istore 5 /* i */
       102: .line 833
            aconst_null
            astore 7 /* ex */
        start local 7 // java.net.SocketException ex
       103: .line 836
            aload 4 /* data */
            iconst_1
            baload
            tableswitch { // 0 - 8
                    0: 104
                    1: 147
                    2: 149
                    3: 151
                    4: 153
                    5: 155
                    6: 157
                    7: 159
                    8: 161
              default: 162
          }
       104: .line 839
      StackMap locals: java.net.SocketException
      StackMap stack:
            aload 4 /* data */
            iconst_3
            baload
            tableswitch { // 1 - 4
                    1: 105
                    2: 146
                    3: 119
                    4: 132
              default: 146
          }
       105: .line 841
      StackMap locals:
      StackMap stack:
            iconst_4
            newarray 8
            astore 10 /* addr */
        start local 10 // byte[] addr
       106: .line 842
            aload 0 /* this */
            aload 3 /* in */
            aload 10 /* addr */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[B)I
            istore 5 /* i */
       107: .line 843
            iload 5 /* i */
            iconst_4
            if_icmpeq 109
       108: .line 844
            new java.net.SocketException
            dup
            ldc "Reply from SOCKS server badly formatted"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
       109: .line 845
      StackMap locals: java.net.SocksSocketImpl java.net.InetSocketAddress java.io.BufferedOutputStream java.io.InputStream byte[] int int java.net.SocketException top top byte[]
      StackMap stack:
            iconst_2
            newarray 8
            astore 4 /* data */
       110: .line 846
            aload 0 /* this */
            aload 3 /* in */
            aload 4 /* data */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[B)I
            istore 5 /* i */
       111: .line 847
            iload 5 /* i */
            iconst_2
            if_icmpeq 113
       112: .line 848
            new java.net.SocketException
            dup
            ldc "Reply from SOCKS server badly formatted"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
       113: .line 849
      StackMap locals:
      StackMap stack:
            aload 4 /* data */
            iconst_0
            baload
            sipush 255
            iand
            bipush 8
            ishl
            istore 9 /* nport */
        start local 9 // int nport
       114: .line 850
            iload 9 /* nport */
            aload 4 /* data */
            iconst_1
            baload
            sipush 255
            iand
            iadd
            istore 9 /* nport */
       115: .line 851
            aload 0 /* this */
       116: .line 852
            new java.net.InetSocketAddress
            dup
            new java.net.Inet4Address
            dup
            ldc ""
            aload 10 /* addr */
            invokespecial java.net.Inet4Address.<init>:(Ljava/lang/String;[B)V
            iload 9 /* nport */
            invokespecial java.net.InetSocketAddress.<init>:(Ljava/net/InetAddress;I)V
       117: .line 851
            putfield java.net.SocksSocketImpl.external_address:Ljava/net/InetSocketAddress;
       118: .line 853
            goto 162
        end local 10 // byte[] addr
        end local 9 // int nport
       119: .line 855
      StackMap locals: java.net.SocksSocketImpl java.net.InetSocketAddress java.io.BufferedOutputStream java.io.InputStream byte[] int int java.net.SocketException
      StackMap stack:
            aload 4 /* data */
            iconst_1
            baload
            istore 8 /* len */
        start local 8 // int len
       120: .line 856
            iload 8 /* len */
            newarray 8
            astore 11 /* host */
        start local 11 // byte[] host
       121: .line 857
            aload 0 /* this */
            aload 3 /* in */
            aload 11 /* host */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[B)I
            istore 5 /* i */
       122: .line 858
            iload 5 /* i */
            iload 8 /* len */
            if_icmpeq 124
       123: .line 859
            new java.net.SocketException
            dup
            ldc "Reply from SOCKS server badly formatted"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
       124: .line 860
      StackMap locals: java.net.SocksSocketImpl java.net.InetSocketAddress java.io.BufferedOutputStream java.io.InputStream byte[] int int java.net.SocketException int top top byte[]
      StackMap stack:
            iconst_2
            newarray 8
            astore 4 /* data */
       125: .line 861
            aload 0 /* this */
            aload 3 /* in */
            aload 4 /* data */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[B)I
            istore 5 /* i */
       126: .line 862
            iload 5 /* i */
            iconst_2
            if_icmpeq 128
       127: .line 863
            new java.net.SocketException
            dup
            ldc "Reply from SOCKS server badly formatted"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
       128: .line 864
      StackMap locals:
      StackMap stack:
            aload 4 /* data */
            iconst_0
            baload
            sipush 255
            iand
            bipush 8
            ishl
            istore 9 /* nport */
        start local 9 // int nport
       129: .line 865
            iload 9 /* nport */
            aload 4 /* data */
            iconst_1
            baload
            sipush 255
            iand
            iadd
            istore 9 /* nport */
       130: .line 866
            aload 0 /* this */
            new java.net.InetSocketAddress
            dup
            new java.lang.String
            dup
            aload 11 /* host */
            invokespecial java.lang.String.<init>:([B)V
            iload 9 /* nport */
            invokespecial java.net.InetSocketAddress.<init>:(Ljava/lang/String;I)V
            putfield java.net.SocksSocketImpl.external_address:Ljava/net/InetSocketAddress;
       131: .line 867
            goto 162
        end local 11 // byte[] host
        end local 9 // int nport
        end local 8 // int len
       132: .line 869
      StackMap locals: java.net.SocksSocketImpl java.net.InetSocketAddress java.io.BufferedOutputStream java.io.InputStream byte[] int int java.net.SocketException
      StackMap stack:
            aload 4 /* data */
            iconst_1
            baload
            istore 8 /* len */
        start local 8 // int len
       133: .line 870
            iload 8 /* len */
            newarray 8
            astore 10 /* addr */
        start local 10 // byte[] addr
       134: .line 871
            aload 0 /* this */
            aload 3 /* in */
            aload 10 /* addr */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[B)I
            istore 5 /* i */
       135: .line 872
            iload 5 /* i */
            iload 8 /* len */
            if_icmpeq 137
       136: .line 873
            new java.net.SocketException
            dup
            ldc "Reply from SOCKS server badly formatted"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
       137: .line 874
      StackMap locals: java.net.SocksSocketImpl java.net.InetSocketAddress java.io.BufferedOutputStream java.io.InputStream byte[] int int java.net.SocketException int top byte[]
      StackMap stack:
            iconst_2
            newarray 8
            astore 4 /* data */
       138: .line 875
            aload 0 /* this */
            aload 3 /* in */
            aload 4 /* data */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[B)I
            istore 5 /* i */
       139: .line 876
            iload 5 /* i */
            iconst_2
            if_icmpeq 141
       140: .line 877
            new java.net.SocketException
            dup
            ldc "Reply from SOCKS server badly formatted"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
       141: .line 878
      StackMap locals:
      StackMap stack:
            aload 4 /* data */
            iconst_0
            baload
            sipush 255
            iand
            bipush 8
            ishl
            istore 9 /* nport */
        start local 9 // int nport
       142: .line 879
            iload 9 /* nport */
            aload 4 /* data */
            iconst_1
            baload
            sipush 255
            iand
            iadd
            istore 9 /* nport */
       143: .line 880
            aload 0 /* this */
       144: .line 881
            new java.net.InetSocketAddress
            dup
            new java.net.Inet6Address
            dup
            ldc ""
            aload 10 /* addr */
            invokespecial java.net.Inet6Address.<init>:(Ljava/lang/String;[B)V
            iload 9 /* nport */
            invokespecial java.net.InetSocketAddress.<init>:(Ljava/net/InetAddress;I)V
       145: .line 880
            putfield java.net.SocksSocketImpl.external_address:Ljava/net/InetSocketAddress;
        end local 10 // byte[] addr
        end local 9 // int nport
        end local 8 // int len
       146: .line 884
      StackMap locals: java.net.SocksSocketImpl java.net.InetSocketAddress java.io.BufferedOutputStream java.io.InputStream byte[] int int java.net.SocketException
      StackMap stack:
            goto 162
       147: .line 886
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS server general failure"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 7 /* ex */
       148: .line 887
            goto 162
       149: .line 889
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: Bind not allowed by ruleset"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 7 /* ex */
       150: .line 890
            goto 162
       151: .line 892
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: Network unreachable"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 7 /* ex */
       152: .line 893
            goto 162
       153: .line 895
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: Host unreachable"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 7 /* ex */
       154: .line 896
            goto 162
       155: .line 898
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: Connection refused"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 7 /* ex */
       156: .line 899
            goto 162
       157: .line 901
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: TTL expired"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 7 /* ex */
       158: .line 902
            goto 162
       159: .line 904
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: Command not supported"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 7 /* ex */
       160: .line 905
            goto 162
       161: .line 907
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: address type not supported"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 7 /* ex */
       162: .line 910
      StackMap locals:
      StackMap stack:
            aload 7 /* ex */
            ifnull 168
       163: .line 911
            aload 3 /* in */
            invokevirtual java.io.InputStream.close:()V
       164: .line 912
            aload 2 /* out */
            invokevirtual java.io.BufferedOutputStream.close:()V
       165: .line 913
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
            invokevirtual java.net.Socket.close:()V
       166: .line 914
            aload 0 /* this */
            aconst_null
            putfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
       167: .line 915
            aload 7 /* ex */
            athrow
       168: .line 917
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* in */
            putfield java.net.SocksSocketImpl.cmdIn:Ljava/io/InputStream;
       169: .line 918
            aload 0 /* this */
            aload 2 /* out */
            putfield java.net.SocksSocketImpl.cmdOut:Ljava/io/OutputStream;
       170: .line 919
            return
        end local 7 // java.net.SocketException ex
        end local 6 // int lport
        end local 5 // int i
        end local 4 // byte[] data
        end local 3 // java.io.InputStream in
        end local 2 // java.io.BufferedOutputStream out
        end local 1 // java.net.InetSocketAddress saddr
        end local 0 // java.net.SocksSocketImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0  171     0      this  Ljava/net/SocksSocketImpl;
            0  171     1     saddr  Ljava/net/InetSocketAddress;
            5   44     2       sel  Ljava/net/ProxySelector;
           12   13     3       uri  Ljava/net/URI;
           16   44     3       uri  Ljava/net/URI;
            8   44     4      host  Ljava/lang/String;
           14   16     5         e  Ljava/net/URISyntaxException;
           17   44     5         p  Ljava/net/Proxy;
           18   44     6  savedExc  Ljava/lang/Exception;
           19   44     7    iProxy  Ljava/util/Iterator<Ljava/net/Proxy;>;
           34   39     8         e  Ljava/lang/Exception;
           48   49     2         e  Ljava/lang/Exception;
           50  171     2       out  Ljava/io/BufferedOutputStream;
           51  171     3        in  Ljava/io/InputStream;
           60  171     4      data  [B
           61  171     5         i  I
           72  171     6     lport  I
           84   89     7     addr1  [B
           92   97     7     addr1  [B
          103  171     7        ex  Ljava/net/SocketException;
          120  132     8       len  I
          133  146     8       len  I
          114  119     9     nport  I
          129  132     9     nport  I
          142  146     9     nport  I
          106  119    10      addr  [B
          134  146    10      addr  [B
          121  132    11      host  [B
      Exception table:
        from    to  target  type
          11    12      13  Class java.net.URISyntaxException
          30    32      33  Class java.lang.Exception
          44    46      47  Class java.lang.Exception
          75    76      77  Class java.io.UnsupportedEncodingException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      saddr  

  protected void acceptFrom(java.net.SocketImpl, java.net.InetSocketAddress);
    descriptor: (Ljava/net/SocketImpl;Ljava/net/InetSocketAddress;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=10, args_size=3
        start local 0 // java.net.SocksSocketImpl this
        start local 1 // java.net.SocketImpl s
        start local 2 // java.net.InetSocketAddress saddr
         0: .line 931
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
            ifnonnull 2
         1: .line 933
            return
         2: .line 935
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdIn:Ljava/io/InputStream;
            astore 3 /* in */
        start local 3 // java.io.InputStream in
         3: .line 937
            aload 0 /* this */
            aload 2 /* saddr */
            invokevirtual java.net.SocksSocketImpl.socksBind:(Ljava/net/InetSocketAddress;)V
         4: .line 938
            aload 3 /* in */
            invokevirtual java.io.InputStream.read:()I
            pop
         5: .line 939
            aload 3 /* in */
            invokevirtual java.io.InputStream.read:()I
            istore 4 /* i */
        start local 4 // int i
         6: .line 940
            aload 3 /* in */
            invokevirtual java.io.InputStream.read:()I
            pop
         7: .line 941
            aconst_null
            astore 5 /* ex */
        start local 5 // java.net.SocketException ex
         8: .line 944
            aconst_null
            astore 8 /* real_end */
        start local 8 // java.net.InetSocketAddress real_end
         9: .line 945
            iload 4 /* i */
            tableswitch { // 0 - 8
                    0: 10
                    1: 33
                    2: 35
                    3: 37
                    4: 39
                    5: 41
                    6: 43
                    7: 45
                    8: 47
              default: 48
          }
        10: .line 948
      StackMap locals: java.net.SocksSocketImpl java.net.SocketImpl java.net.InetSocketAddress java.io.InputStream int java.net.SocketException top top java.net.InetSocketAddress
      StackMap stack:
            aload 3 /* in */
            invokevirtual java.io.InputStream.read:()I
            istore 4 /* i */
        11: .line 949
            iload 4 /* i */
            tableswitch { // 1 - 4
                    1: 12
                    2: 32
                    3: 19
                    4: 26
              default: 32
          }
        12: .line 951
      StackMap locals:
      StackMap stack:
            iconst_4
            newarray 8
            astore 7 /* addr */
        start local 7 // byte[] addr
        13: .line 952
            aload 0 /* this */
            aload 3 /* in */
            aload 7 /* addr */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[B)I
            pop
        14: .line 953
            aload 3 /* in */
            invokevirtual java.io.InputStream.read:()I
            bipush 8
            ishl
            istore 6 /* nport */
        start local 6 // int nport
        15: .line 954
            iload 6 /* nport */
            aload 3 /* in */
            invokevirtual java.io.InputStream.read:()I
            iadd
            istore 6 /* nport */
        16: .line 956
            new java.net.InetSocketAddress
            dup
            new java.net.Inet4Address
            dup
            ldc ""
            aload 7 /* addr */
            invokespecial java.net.Inet4Address.<init>:(Ljava/lang/String;[B)V
            iload 6 /* nport */
            invokespecial java.net.InetSocketAddress.<init>:(Ljava/net/InetAddress;I)V
        17: .line 955
            astore 8 /* real_end */
        18: .line 957
            goto 48
        end local 7 // byte[] addr
        end local 6 // int nport
        19: .line 959
      StackMap locals:
      StackMap stack:
            aload 3 /* in */
            invokevirtual java.io.InputStream.read:()I
            istore 9 /* len */
        start local 9 // int len
        20: .line 960
            iload 9 /* len */
            newarray 8
            astore 7 /* addr */
        start local 7 // byte[] addr
        21: .line 961
            aload 0 /* this */
            aload 3 /* in */
            aload 7 /* addr */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[B)I
            pop
        22: .line 962
            aload 3 /* in */
            invokevirtual java.io.InputStream.read:()I
            bipush 8
            ishl
            istore 6 /* nport */
        start local 6 // int nport
        23: .line 963
            iload 6 /* nport */
            aload 3 /* in */
            invokevirtual java.io.InputStream.read:()I
            iadd
            istore 6 /* nport */
        24: .line 964
            new java.net.InetSocketAddress
            dup
            new java.lang.String
            dup
            aload 7 /* addr */
            invokespecial java.lang.String.<init>:([B)V
            iload 6 /* nport */
            invokespecial java.net.InetSocketAddress.<init>:(Ljava/lang/String;I)V
            astore 8 /* real_end */
        25: .line 965
            goto 48
        end local 9 // int len
        end local 7 // byte[] addr
        end local 6 // int nport
        26: .line 967
      StackMap locals:
      StackMap stack:
            bipush 16
            newarray 8
            astore 7 /* addr */
        start local 7 // byte[] addr
        27: .line 968
            aload 0 /* this */
            aload 3 /* in */
            aload 7 /* addr */
            invokevirtual java.net.SocksSocketImpl.readSocksReply:(Ljava/io/InputStream;[B)I
            pop
        28: .line 969
            aload 3 /* in */
            invokevirtual java.io.InputStream.read:()I
            bipush 8
            ishl
            istore 6 /* nport */
        start local 6 // int nport
        29: .line 970
            iload 6 /* nport */
            aload 3 /* in */
            invokevirtual java.io.InputStream.read:()I
            iadd
            istore 6 /* nport */
        30: .line 972
            new java.net.InetSocketAddress
            dup
            new java.net.Inet6Address
            dup
            ldc ""
            aload 7 /* addr */
            invokespecial java.net.Inet6Address.<init>:(Ljava/lang/String;[B)V
            iload 6 /* nport */
            invokespecial java.net.InetSocketAddress.<init>:(Ljava/net/InetAddress;I)V
        31: .line 971
            astore 8 /* real_end */
        end local 7 // byte[] addr
        end local 6 // int nport
        32: .line 975
      StackMap locals:
      StackMap stack:
            goto 48
        33: .line 977
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS server general failure"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 5 /* ex */
        34: .line 978
            goto 48
        35: .line 980
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: Accept not allowed by ruleset"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 5 /* ex */
        36: .line 981
            goto 48
        37: .line 983
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: Network unreachable"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 5 /* ex */
        38: .line 984
            goto 48
        39: .line 986
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: Host unreachable"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 5 /* ex */
        40: .line 987
            goto 48
        41: .line 989
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: Connection refused"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 5 /* ex */
        42: .line 990
            goto 48
        43: .line 992
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: TTL expired"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 5 /* ex */
        44: .line 993
            goto 48
        45: .line 995
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: Command not supported"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 5 /* ex */
        46: .line 996
            goto 48
        47: .line 998
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "SOCKS: address type not supported"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            astore 5 /* ex */
        48: .line 1001
      StackMap locals:
      StackMap stack:
            aload 5 /* ex */
            ifnull 54
        49: .line 1002
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdIn:Ljava/io/InputStream;
            invokevirtual java.io.InputStream.close:()V
        50: .line 1003
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdOut:Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.close:()V
        51: .line 1004
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
            invokevirtual java.net.Socket.close:()V
        52: .line 1005
            aload 0 /* this */
            aconst_null
            putfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
        53: .line 1006
            aload 5 /* ex */
            athrow
        54: .line 1014
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            instanceof java.net.SocksSocketImpl
            ifeq 56
        55: .line 1015
            aload 1 /* s */
            checkcast java.net.SocksSocketImpl
            aload 8 /* real_end */
            putfield java.net.SocksSocketImpl.external_address:Ljava/net/InetSocketAddress;
        56: .line 1017
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            instanceof java.net.PlainSocketImpl
            ifeq 64
        57: .line 1018
            aload 1 /* s */
            checkcast java.net.PlainSocketImpl
            astore 9 /* psi */
        start local 9 // java.net.PlainSocketImpl psi
        58: .line 1019
            aload 9 /* psi */
            aload 3 /* in */
            checkcast java.net.SocketInputStream
            invokevirtual java.net.PlainSocketImpl.setInputStream:(Ljava/net/SocketInputStream;)V
        59: .line 1020
            aload 9 /* psi */
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
            invokevirtual java.net.Socket.getImpl:()Ljava/net/SocketImpl;
            invokevirtual java.net.SocketImpl.getFileDescriptor:()Ljava/io/FileDescriptor;
            invokevirtual java.net.PlainSocketImpl.setFileDescriptor:(Ljava/io/FileDescriptor;)V
        60: .line 1021
            aload 9 /* psi */
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
            invokevirtual java.net.Socket.getImpl:()Ljava/net/SocketImpl;
            invokevirtual java.net.SocketImpl.getInetAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.PlainSocketImpl.setAddress:(Ljava/net/InetAddress;)V
        61: .line 1022
            aload 9 /* psi */
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
            invokevirtual java.net.Socket.getImpl:()Ljava/net/SocketImpl;
            invokevirtual java.net.SocketImpl.getPort:()I
            invokevirtual java.net.PlainSocketImpl.setPort:(I)V
        62: .line 1023
            aload 9 /* psi */
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
            invokevirtual java.net.Socket.getImpl:()Ljava/net/SocketImpl;
            invokevirtual java.net.SocketImpl.getLocalPort:()I
            invokevirtual java.net.PlainSocketImpl.setLocalPort:(I)V
        end local 9 // java.net.PlainSocketImpl psi
        63: .line 1024
            goto 68
        64: .line 1025
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
            invokevirtual java.net.Socket.getImpl:()Ljava/net/SocketImpl;
            getfield java.net.SocketImpl.fd:Ljava/io/FileDescriptor;
            putfield java.net.SocketImpl.fd:Ljava/io/FileDescriptor;
        65: .line 1026
            aload 1 /* s */
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
            invokevirtual java.net.Socket.getImpl:()Ljava/net/SocketImpl;
            getfield java.net.SocketImpl.address:Ljava/net/InetAddress;
            putfield java.net.SocketImpl.address:Ljava/net/InetAddress;
        66: .line 1027
            aload 1 /* s */
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
            invokevirtual java.net.Socket.getImpl:()Ljava/net/SocketImpl;
            getfield java.net.SocketImpl.port:I
            putfield java.net.SocketImpl.port:I
        67: .line 1028
            aload 1 /* s */
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
            invokevirtual java.net.Socket.getImpl:()Ljava/net/SocketImpl;
            getfield java.net.SocketImpl.localport:I
            putfield java.net.SocketImpl.localport:I
        68: .line 1035
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
        69: .line 1036
            return
        end local 8 // java.net.InetSocketAddress real_end
        end local 5 // java.net.SocketException ex
        end local 4 // int i
        end local 3 // java.io.InputStream in
        end local 2 // java.net.InetSocketAddress saddr
        end local 1 // java.net.SocketImpl s
        end local 0 // java.net.SocksSocketImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   70     0      this  Ljava/net/SocksSocketImpl;
            0   70     1         s  Ljava/net/SocketImpl;
            0   70     2     saddr  Ljava/net/InetSocketAddress;
            3   70     3        in  Ljava/io/InputStream;
            6   70     4         i  I
            8   70     5        ex  Ljava/net/SocketException;
           15   19     6     nport  I
           23   26     6     nport  I
           29   32     6     nport  I
           13   19     7      addr  [B
           21   26     7      addr  [B
           27   32     7      addr  [B
            9   70     8  real_end  Ljava/net/InetSocketAddress;
           20   26     9       len  I
           58   63     9       psi  Ljava/net/PlainSocketImpl;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      s      
      saddr  

  protected java.net.InetAddress getInetAddress();
    descriptor: ()Ljava/net/InetAddress;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.net.SocksSocketImpl this
         0: .line 1047
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.external_address:Ljava/net/InetSocketAddress;
            ifnull 2
         1: .line 1048
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.external_address:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            areturn
         2: .line 1050
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokespecial java.net.PlainSocketImpl.getInetAddress:()Ljava/net/InetAddress;
            areturn
        end local 0 // java.net.SocksSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljava/net/SocksSocketImpl;

  protected int getPort();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.net.SocksSocketImpl this
         0: .line 1061
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.external_address:Ljava/net/InetSocketAddress;
            ifnull 2
         1: .line 1062
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.external_address:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getPort:()I
            ireturn
         2: .line 1064
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokespecial java.net.PlainSocketImpl.getPort:()I
            ireturn
        end local 0 // java.net.SocksSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljava/net/SocksSocketImpl;

  protected int getLocalPort();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.net.SocksSocketImpl this
         0: .line 1069
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.socket:Ljava/net/Socket;
            ifnull 2
         1: .line 1070
            aload 0 /* this */
            invokespecial java.net.PlainSocketImpl.getLocalPort:()I
            ireturn
         2: .line 1071
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.external_address:Ljava/net/InetSocketAddress;
            ifnull 4
         3: .line 1072
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.external_address:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getPort:()I
            ireturn
         4: .line 1074
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokespecial java.net.PlainSocketImpl.getLocalPort:()I
            ireturn
        end local 0 // java.net.SocksSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Ljava/net/SocksSocketImpl;

  protected void close();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.net.SocksSocketImpl this
         0: .line 1079
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
            ifnull 2
         1: .line 1080
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
            invokevirtual java.net.Socket.close:()V
         2: .line 1081
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield java.net.SocksSocketImpl.cmdsock:Ljava/net/Socket;
         3: .line 1082
            aload 0 /* this */
            invokespecial java.net.PlainSocketImpl.close:()V
         4: .line 1083
            return
        end local 0 // java.net.SocksSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Ljava/net/SocksSocketImpl;
    Exceptions:
      throws java.io.IOException

  private java.lang.String getUserName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // java.net.SocksSocketImpl this
         0: .line 1086
            ldc ""
            astore 1 /* userName */
        start local 1 // java.lang.String userName
         1: .line 1087
            aload 0 /* this */
            getfield java.net.SocksSocketImpl.applicationSetProxy:Z
            ifeq 6
         2: .line 1089
            ldc "user.name"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* userName */
         3: .line 1090
            goto 7
      StackMap locals: java.net.SocksSocketImpl java.lang.String
      StackMap stack: java.lang.SecurityException
         4: pop
         5: .line 1091
            goto 7
         6: .line 1092
      StackMap locals:
      StackMap stack:
            invokestatic jdk.internal.util.StaticProperty.userName:()Ljava/lang/String;
            astore 1 /* userName */
         7: .line 1094
      StackMap locals:
      StackMap stack:
            aload 1 /* userName */
            areturn
        end local 1 // java.lang.String userName
        end local 0 // java.net.SocksSocketImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Ljava/net/SocksSocketImpl;
            1    8     1  userName  Ljava/lang/String;
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.SecurityException
}
SourceFile: "SocksSocketImpl.java"
NestMembers:
  java.net.SocksSocketImpl$1  java.net.SocksSocketImpl$2  java.net.SocksSocketImpl$3  java.net.SocksSocketImpl$4  java.net.SocksSocketImpl$5  java.net.SocksSocketImpl$6  java.net.SocksSocketImpl$7
InnerClasses:
  public final Type = java.net.Proxy$Type of java.net.Proxy
  java.net.SocksSocketImpl$1
  java.net.SocksSocketImpl$2
  java.net.SocksSocketImpl$3
  java.net.SocksSocketImpl$4
  java.net.SocksSocketImpl$5
  java.net.SocksSocketImpl$6
  java.net.SocksSocketImpl$7