public class org.apache.tomcat.util.net.SecureNioChannel extends org.apache.tomcat.util.net.NioChannel
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.tomcat.util.net.SecureNioChannel
  super_class: org.apache.tomcat.util.net.NioChannel
{
  private static final org.apache.juli.logging.Log log;
    descriptor: Lorg/apache/juli/logging/Log;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.apache.tomcat.util.res.StringManager sm;
    descriptor: Lorg/apache/tomcat/util/res/StringManager;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final int DEFAULT_NET_BUFFER_SIZE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 16921

  private final org.apache.tomcat.util.net.NioEndpoint endpoint;
    descriptor: Lorg/apache/tomcat/util/net/NioEndpoint;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  protected java.nio.ByteBuffer netInBuffer;
    descriptor: Ljava/nio/ByteBuffer;
    flags: (0x0004) ACC_PROTECTED

  protected java.nio.ByteBuffer netOutBuffer;
    descriptor: Ljava/nio/ByteBuffer;
    flags: (0x0004) ACC_PROTECTED

  protected javax.net.ssl.SSLEngine sslEngine;
    descriptor: Ljavax/net/ssl/SSLEngine;
    flags: (0x0004) ACC_PROTECTED

  protected boolean sniComplete;
    descriptor: Z
    flags: (0x0004) ACC_PROTECTED

  protected boolean handshakeComplete;
    descriptor: Z
    flags: (0x0004) ACC_PROTECTED

  protected javax.net.ssl.SSLEngineResult$HandshakeStatus handshakeStatus;
    descriptor: Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
    flags: (0x0004) ACC_PROTECTED

  protected boolean closed;
    descriptor: Z
    flags: (0x0004) ACC_PROTECTED

  protected boolean closing;
    descriptor: Z
    flags: (0x0004) ACC_PROTECTED

  private static volatile int[] $SWITCH_TABLE$javax$net$ssl$SSLEngineResult$HandshakeStatus;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  private static volatile int[] $SWITCH_TABLE$org$apache$tomcat$util$net$TLSClientHelloExtractor$ExtractorResult;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 49
            ldc Lorg/apache/tomcat/util/net/SecureNioChannel;
            invokestatic org.apache.juli.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/juli/logging/Log;
            putstatic org.apache.tomcat.util.net.SecureNioChannel.log:Lorg/apache/juli/logging/Log;
         1: .line 50
            ldc Lorg/apache/tomcat/util/net/SecureNioChannel;
            invokestatic org.apache.tomcat.util.res.StringManager.getManager:(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager;
            putstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
         2: .line 54
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.apache.tomcat.util.net.SocketBufferHandler, org.apache.tomcat.util.net.NioEndpoint);
    descriptor: (Lorg/apache/tomcat/util/net/SocketBufferHandler;Lorg/apache/tomcat/util/net/NioEndpoint;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
        start local 1 // org.apache.tomcat.util.net.SocketBufferHandler bufHandler
        start local 2 // org.apache.tomcat.util.net.NioEndpoint endpoint
         0: .line 72
            aload 0 /* this */
            aload 1 /* bufHandler */
            invokespecial org.apache.tomcat.util.net.NioChannel.<init>:(Lorg/apache/tomcat/util/net/SocketBufferHandler;)V
         1: .line 63
            aload 0 /* this */
            iconst_0
            putfield org.apache.tomcat.util.net.SecureNioChannel.sniComplete:Z
         2: .line 65
            aload 0 /* this */
            iconst_0
            putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeComplete:Z
         3: .line 68
            aload 0 /* this */
            iconst_0
            putfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
         4: .line 69
            aload 0 /* this */
            iconst_0
            putfield org.apache.tomcat.util.net.SecureNioChannel.closing:Z
         5: .line 75
            aload 2 /* endpoint */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint.getSocketProperties:()Lorg/apache/tomcat/util/net/SocketProperties;
            invokevirtual org.apache.tomcat.util.net.SocketProperties.getDirectSslBuffer:()Z
            ifeq 9
         6: .line 76
            aload 0 /* this */
            sipush 16921
            invokestatic java.nio.ByteBuffer.allocateDirect:(I)Ljava/nio/ByteBuffer;
            putfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
         7: .line 77
            aload 0 /* this */
            sipush 16921
            invokestatic java.nio.ByteBuffer.allocateDirect:(I)Ljava/nio/ByteBuffer;
            putfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
         8: .line 78
            goto 11
         9: .line 79
      StackMap locals: org.apache.tomcat.util.net.SecureNioChannel org.apache.tomcat.util.net.SocketBufferHandler org.apache.tomcat.util.net.NioEndpoint
      StackMap stack:
            aload 0 /* this */
            sipush 16921
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            putfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
        10: .line 80
            aload 0 /* this */
            sipush 16921
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            putfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
        11: .line 83
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* endpoint */
            putfield org.apache.tomcat.util.net.SecureNioChannel.endpoint:Lorg/apache/tomcat/util/net/NioEndpoint;
        12: .line 84
            return
        end local 2 // org.apache.tomcat.util.net.NioEndpoint endpoint
        end local 1 // org.apache.tomcat.util.net.SocketBufferHandler bufHandler
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   13     0        this  Lorg/apache/tomcat/util/net/SecureNioChannel;
            0   13     1  bufHandler  Lorg/apache/tomcat/util/net/SocketBufferHandler;
            0   13     2    endpoint  Lorg/apache/tomcat/util/net/NioEndpoint;
    MethodParameters:
            Name  Flags
      bufHandler  
      endpoint    

  public void reset(java.nio.channels.SocketChannel, org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper);
    descriptor: (Ljava/nio/channels/SocketChannel;Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
        start local 1 // java.nio.channels.SocketChannel channel
        start local 2 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper socketWrapper
         0: .line 88
            aload 0 /* this */
            aload 1 /* channel */
            aload 2 /* socketWrapper */
            invokespecial org.apache.tomcat.util.net.NioChannel.reset:(Ljava/nio/channels/SocketChannel;Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;)V
         1: .line 89
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
         2: .line 90
            aload 0 /* this */
            iconst_0
            putfield org.apache.tomcat.util.net.SecureNioChannel.sniComplete:Z
         3: .line 91
            aload 0 /* this */
            iconst_0
            putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeComplete:Z
         4: .line 92
            aload 0 /* this */
            iconst_0
            putfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
         5: .line 93
            aload 0 /* this */
            iconst_0
            putfield org.apache.tomcat.util.net.SecureNioChannel.closing:Z
         6: .line 94
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
            pop
         7: .line 95
            return
        end local 2 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper socketWrapper
        end local 1 // java.nio.channels.SocketChannel channel
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0           this  Lorg/apache/tomcat/util/net/SecureNioChannel;
            0    8     1        channel  Ljava/nio/channels/SocketChannel;
            0    8     2  socketWrapper  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
               Name  Flags
      channel        
      socketWrapper  

  public void free();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
         0: .line 99
            aload 0 /* this */
            invokespecial org.apache.tomcat.util.net.NioChannel.free:()V
         1: .line 100
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.endpoint:Lorg/apache/tomcat/util/net/NioEndpoint;
            invokevirtual org.apache.tomcat.util.net.NioEndpoint.getSocketProperties:()Lorg/apache/tomcat/util/net/SocketProperties;
            invokevirtual org.apache.tomcat.util.net.SocketProperties.getDirectSslBuffer:()Z
            ifeq 4
         2: .line 101
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokestatic org.apache.tomcat.util.buf.ByteBufferUtils.cleanDirectBuffer:(Ljava/nio/ByteBuffer;)V
         3: .line 102
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokestatic org.apache.tomcat.util.buf.ByteBufferUtils.cleanDirectBuffer:(Ljava/nio/ByteBuffer;)V
         4: .line 104
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/apache/tomcat/util/net/SecureNioChannel;

  protected boolean flush(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
        start local 1 // java.nio.ByteBuffer buf
         0: .line 117
            aload 1 /* buf */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 2 /* remaining */
        start local 2 // int remaining
         1: .line 118
            iload 2 /* remaining */
            ifle 4
         2: .line 119
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sc:Ljava/nio/channels/SocketChannel;
            aload 1 /* buf */
            invokevirtual java.nio.channels.SocketChannel.write:(Ljava/nio/ByteBuffer;)I
            iload 2 /* remaining */
            if_icmplt 3
            iconst_1
            ireturn
      StackMap locals: int
      StackMap stack:
         3: iconst_0
            ireturn
         4: .line 121
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 2 // int remaining
        end local 1 // java.nio.ByteBuffer buf
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Lorg/apache/tomcat/util/net/SecureNioChannel;
            0    5     1        buf  Ljava/nio/ByteBuffer;
            1    5     2  remaining  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      buf   

  public int handshake(boolean, boolean);
    descriptor: (ZZ)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=5, args_size=3
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
        start local 1 // boolean read
        start local 2 // boolean write
         0: .line 144
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeComplete:Z
            ifeq 2
         1: .line 145
            iconst_0
            ireturn
         2: .line 148
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sniComplete:Z
            ifne 8
         3: .line 149
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.processSNI:()I
            istore 3 /* sniResult */
        start local 3 // int sniResult
         4: .line 150
            iload 3 /* sniResult */
            ifne 7
         5: .line 151
            aload 0 /* this */
            iconst_1
            putfield org.apache.tomcat.util.net.SecureNioChannel.sniComplete:Z
         6: .line 152
            goto 8
         7: .line 153
      StackMap locals: int
      StackMap stack:
            iload 3 /* sniResult */
            ireturn
        end local 3 // int sniResult
         8: .line 157
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
            ifne 10
         9: .line 158
            iconst_4
            ireturn
        10: .line 161
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 3 /* handshake */
        start local 3 // javax.net.ssl.SSLEngineResult handshake
        11: .line 163
            goto 57
        12: .line 164
      StackMap locals: javax.net.ssl.SSLEngineResult
      StackMap stack:
            invokestatic org.apache.tomcat.util.net.SecureNioChannel.$SWITCH_TABLE$javax$net$ssl$SSLEngineResult$HandshakeStatus:()[I
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            invokevirtual javax.net.ssl.SSLEngineResult$HandshakeStatus.ordinal:()I
            iaload
            tableswitch { // 1 - 5
                    1: 13
                    2: 14
                    3: 54
                    4: 30
                    5: 46
              default: 56
          }
        13: .line 167
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.notHandshaking"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 169
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.endpoint:Lorg/apache/tomcat/util/net/NioEndpoint;
            invokevirtual org.apache.tomcat.util.net.NioEndpoint.hasNegotiableProtocols:()Z
            ifeq 24
        15: .line 170
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            instanceof org.apache.tomcat.util.net.SSLUtil$ProtocolInfo
            ifeq 20
        16: .line 171
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.socketWrapper:Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
        17: .line 172
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            checkcast org.apache.tomcat.util.net.SSLUtil$ProtocolInfo
            invokeinterface org.apache.tomcat.util.net.SSLUtil$ProtocolInfo.getNegotiatedProtocol:()Ljava/lang/String;
        18: .line 171
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.setNegotiatedProtocol:(Ljava/lang/String;)V
        19: .line 173
            goto 24
      StackMap locals:
      StackMap stack:
        20: invokestatic org.apache.tomcat.util.compat.JreCompat.isAlpnSupported:()Z
            ifeq 24
        21: .line 174
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.socketWrapper:Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
        22: .line 175
            invokestatic org.apache.tomcat.util.compat.JreCompat.getInstance:()Lorg/apache/tomcat/util/compat/JreCompat;
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            invokevirtual org.apache.tomcat.util.compat.JreCompat.getApplicationProtocol:(Ljavax/net/ssl/SSLEngine;)Ljava/lang/String;
        23: .line 174
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.setNegotiatedProtocol:(Ljava/lang/String;)V
        24: .line 179
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 25
            iconst_0
            goto 26
      StackMap locals:
      StackMap stack: org.apache.tomcat.util.net.SecureNioChannel
        25: iconst_1
      StackMap locals: org.apache.tomcat.util.net.SecureNioChannel int int javax.net.ssl.SSLEngineResult
      StackMap stack: org.apache.tomcat.util.net.SecureNioChannel int
        26: putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeComplete:Z
        27: .line 181
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeComplete:Z
            ifeq 28
            iconst_0
            goto 29
      StackMap locals:
      StackMap stack:
        28: iconst_4
      StackMap locals:
      StackMap stack: int
        29: ireturn
        30: .line 185
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 2 /* write */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.handshakeWrap:(Z)Ljavax/net/ssl/SSLEngineResult;
            astore 3 /* handshake */
        31: .line 186
            goto 36
      StackMap locals:
      StackMap stack: javax.net.ssl.SSLException
        32: astore 4 /* e */
        start local 4 // javax.net.ssl.SSLException e
        33: .line 187
            getstatic org.apache.tomcat.util.net.SecureNioChannel.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 35
        34: .line 188
            getstatic org.apache.tomcat.util.net.SecureNioChannel.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.wrapException"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            aload 4 /* e */
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        35: .line 190
      StackMap locals: javax.net.ssl.SSLException
      StackMap stack:
            aload 0 /* this */
            iload 2 /* write */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.handshakeWrap:(Z)Ljavax/net/ssl/SSLEngineResult;
            astore 3 /* handshake */
        end local 4 // javax.net.ssl.SSLException e
        36: .line 192
      StackMap locals:
      StackMap stack:
            aload 3 /* handshake */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            getstatic javax.net.ssl.SSLEngineResult$Status.OK:Ljavax/net/ssl/SSLEngineResult$Status;
            if_acmpne 40
        37: .line 193
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_TASK:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            if_acmpne 44
        38: .line 194
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.tasks:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
        39: .line 196
            goto 44
      StackMap locals:
      StackMap stack:
        40: aload 3 /* handshake */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            getstatic javax.net.ssl.SSLEngineResult$Status.CLOSED:Ljavax/net/ssl/SSLEngineResult$Status;
            if_acmpne 43
        41: .line 197
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
            pop
        42: .line 198
            iconst_m1
            ireturn
        43: .line 201
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.unexpectedStatusDuringWrap"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* handshake */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        44: .line 203
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_UNWRAP:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            if_acmpne 45
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
            ifne 46
        45: .line 205
      StackMap locals:
      StackMap stack:
            iconst_4
            ireturn
        46: .line 212
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* read */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.handshakeUnwrap:(Z)Ljavax/net/ssl/SSLEngineResult;
            astore 3 /* handshake */
        47: .line 213
            aload 3 /* handshake */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            getstatic javax.net.ssl.SSLEngineResult$Status.OK:Ljavax/net/ssl/SSLEngineResult$Status;
            if_acmpne 51
        48: .line 214
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_TASK:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            if_acmpne 57
        49: .line 215
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.tasks:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
        50: .line 217
            goto 57
      StackMap locals:
      StackMap stack:
        51: aload 3 /* handshake */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            getstatic javax.net.ssl.SSLEngineResult$Status.BUFFER_UNDERFLOW:Ljavax/net/ssl/SSLEngineResult$Status;
            if_acmpne 53
        52: .line 219
            iconst_1
            ireturn
        53: .line 221
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.unexpectedStatusDuringWrap"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* handshake */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        54: .line 225
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.tasks:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
        55: .line 226
            goto 57
        56: .line 228
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.invalidStatus"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        57: .line 163
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeComplete:Z
            ifeq 12
        58: .line 232
            iconst_0
            ireturn
        end local 3 // javax.net.ssl.SSLEngineResult handshake
        end local 2 // boolean write
        end local 1 // boolean read
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   59     0       this  Lorg/apache/tomcat/util/net/SecureNioChannel;
            0   59     1       read  Z
            0   59     2      write  Z
            4    8     3  sniResult  I
           11   59     3  handshake  Ljavax/net/ssl/SSLEngineResult;
           33   36     4          e  Ljavax/net/ssl/SSLException;
      Exception table:
        from    to  target  type
          30    31      32  Class javax.net.ssl.SSLException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      read   
      write  

  private int processSNI();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=6, args_size=1
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
         0: .line 249
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sc:Ljava/nio/channels/SocketChannel;
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.channels.SocketChannel.read:(Ljava/nio/ByteBuffer;)I
            istore 1 /* bytesRead */
        start local 1 // int bytesRead
         1: .line 250
            iload 1 /* bytesRead */
            iconst_m1
            if_icmpne 3
         2: .line 252
            iconst_m1
            ireturn
         3: .line 254
      StackMap locals: int
      StackMap stack:
            new org.apache.tomcat.util.net.TLSClientHelloExtractor
            dup
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokespecial org.apache.tomcat.util.net.TLSClientHelloExtractor.<init>:(Ljava/nio/ByteBuffer;)V
            astore 2 /* extractor */
        start local 2 // org.apache.tomcat.util.net.TLSClientHelloExtractor extractor
         4: .line 256
            goto 12
         5: .line 260
      StackMap locals: org.apache.tomcat.util.net.TLSClientHelloExtractor
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.capacity:()I
            iconst_2
            imul
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.endpoint:Lorg/apache/tomcat/util/net/NioEndpoint;
            invokevirtual org.apache.tomcat.util.net.NioEndpoint.getSniParseLimit:()I
            invokestatic java.lang.Math.min:(II)I
            istore 3 /* newLimit */
        start local 3 // int newLimit
         6: .line 261
            getstatic org.apache.tomcat.util.net.SecureNioChannel.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.expandNetInBuffer"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         7: .line 262
            iload 3 /* newLimit */
            invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
            aastore
         8: .line 261
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.info:(Ljava/lang/Object;)V
         9: .line 264
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            iload 3 /* newLimit */
            invokestatic org.apache.tomcat.util.buf.ByteBufferUtils.expand:(Ljava/nio/ByteBuffer;I)Ljava/nio/ByteBuffer;
            putfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
        10: .line 265
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sc:Ljava/nio/channels/SocketChannel;
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.channels.SocketChannel.read:(Ljava/nio/ByteBuffer;)I
            pop
        11: .line 266
            new org.apache.tomcat.util.net.TLSClientHelloExtractor
            dup
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokespecial org.apache.tomcat.util.net.TLSClientHelloExtractor.<init>:(Ljava/nio/ByteBuffer;)V
            astore 2 /* extractor */
        end local 3 // int newLimit
        12: .line 256
      StackMap locals:
      StackMap stack:
            aload 2 /* extractor */
            invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor.getResult:()Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
            getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.UNDERFLOW:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
            if_acmpne 15
        13: .line 257
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.capacity:()I
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.endpoint:Lorg/apache/tomcat/util/net/NioEndpoint;
            invokevirtual org.apache.tomcat.util.net.NioEndpoint.getSniParseLimit:()I
        14: .line 256
            if_icmplt 5
        15: .line 269
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 3 /* hostName */
        start local 3 // java.lang.String hostName
        16: .line 270
            aconst_null
            astore 4 /* clientRequestedCiphers */
        start local 4 // java.util.List clientRequestedCiphers
        17: .line 271
            aconst_null
            astore 5 /* clientRequestedApplicationProtocols */
        start local 5 // java.util.List clientRequestedApplicationProtocols
        18: .line 272
            invokestatic org.apache.tomcat.util.net.SecureNioChannel.$SWITCH_TABLE$org$apache$tomcat$util$net$TLSClientHelloExtractor$ExtractorResult:()[I
            aload 2 /* extractor */
            invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor.getResult:()Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
            invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.ordinal:()I
            iaload
            tableswitch { // 1 - 5
                    1: 19
                    2: 22
                    3: 25
                    4: 24
                    5: 30
              default: 35
          }
        19: .line 274
      StackMap locals: java.lang.String java.util.List java.util.List
      StackMap stack:
            aload 2 /* extractor */
            invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor.getSNIValue:()Ljava/lang/String;
            astore 3 /* hostName */
        20: .line 276
            aload 2 /* extractor */
            invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor.getClientRequestedApplicationProtocols:()Ljava/util/List;
        21: .line 275
            astore 5 /* clientRequestedApplicationProtocols */
        22: .line 279
      StackMap locals:
      StackMap stack:
            aload 2 /* extractor */
            invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor.getClientRequestedCiphers:()Ljava/util/List;
            astore 4 /* clientRequestedCiphers */
        23: .line 280
            goto 35
        24: .line 282
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        25: .line 285
      StackMap locals:
      StackMap stack:
            getstatic org.apache.tomcat.util.net.SecureNioChannel.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 27
        26: .line 286
            getstatic org.apache.tomcat.util.net.SecureNioChannel.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.sniDefault"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        27: .line 288
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.endpoint:Lorg/apache/tomcat/util/net/NioEndpoint;
            invokevirtual org.apache.tomcat.util.net.NioEndpoint.getDefaultSSLHostConfigName:()Ljava/lang/String;
            astore 3 /* hostName */
        28: .line 289
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            astore 4 /* clientRequestedCiphers */
        29: .line 290
            goto 35
        30: .line 292
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
            pop
        31: .line 293
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor.USE_TLS_RESPONSE:[B
            invokevirtual java.nio.ByteBuffer.put:([B)Ljava/nio/ByteBuffer;
            pop
        32: .line 294
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
        33: .line 295
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flushOutbound:()Z
            pop
        34: .line 296
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.foundHttp"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        35: .line 299
      StackMap locals:
      StackMap stack:
            getstatic org.apache.tomcat.util.net.SecureNioChannel.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 37
        36: .line 300
            getstatic org.apache.tomcat.util.net.SecureNioChannel.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.sniHostName"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sc:Ljava/nio/channels/SocketChannel;
            aastore
            dup
            iconst_1
            aload 3 /* hostName */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        37: .line 303
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.endpoint:Lorg/apache/tomcat/util/net/NioEndpoint;
            aload 3 /* hostName */
            aload 4 /* clientRequestedCiphers */
        38: .line 304
            aload 5 /* clientRequestedApplicationProtocols */
        39: .line 303
            invokevirtual org.apache.tomcat.util.net.NioEndpoint.createSSLEngine:(Ljava/lang/String;Ljava/util/List;Ljava/util/List;)Ljavax/net/ssl/SSLEngine;
            putfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
        40: .line 308
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
            invokeinterface javax.net.ssl.SSLSession.getApplicationBufferSize:()I
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.expand:(I)V
        41: .line 309
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.capacity:()I
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
            invokeinterface javax.net.ssl.SSLSession.getApplicationBufferSize:()I
            if_icmpge 45
        42: .line 311
            getstatic org.apache.tomcat.util.net.SecureNioChannel.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.expandNetOutBuffer"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        43: .line 312
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
            invokeinterface javax.net.ssl.SSLSession.getApplicationBufferSize:()I
            invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
            aastore
        44: .line 311
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.info:(Ljava/lang/Object;)V
        45: .line 314
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
            invokeinterface javax.net.ssl.SSLSession.getPacketBufferSize:()I
            invokestatic org.apache.tomcat.util.buf.ByteBufferUtils.expand:(Ljava/nio/ByteBuffer;I)Ljava/nio/ByteBuffer;
            putfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
        46: .line 315
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
            invokeinterface javax.net.ssl.SSLSession.getPacketBufferSize:()I
            invokestatic org.apache.tomcat.util.buf.ByteBufferUtils.expand:(Ljava/nio/ByteBuffer;I)Ljava/nio/ByteBuffer;
            putfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
        47: .line 318
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            iconst_0
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        48: .line 319
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            iconst_0
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        49: .line 322
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.beginHandshake:()V
        50: .line 323
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
        51: .line 325
            iconst_0
            ireturn
        end local 5 // java.util.List clientRequestedApplicationProtocols
        end local 4 // java.util.List clientRequestedCiphers
        end local 3 // java.lang.String hostName
        end local 2 // org.apache.tomcat.util.net.TLSClientHelloExtractor extractor
        end local 1 // int bytesRead
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot                                 Name  Signature
            0   52     0                                 this  Lorg/apache/tomcat/util/net/SecureNioChannel;
            1   52     1                            bytesRead  I
            4   52     2                            extractor  Lorg/apache/tomcat/util/net/TLSClientHelloExtractor;
            6   12     3                             newLimit  I
           16   52     3                             hostName  Ljava/lang/String;
           17   52     4               clientRequestedCiphers  Ljava/util/List<Lorg/apache/tomcat/util/net/openssl/ciphers/Cipher;>;
           18   52     5  clientRequestedApplicationProtocols  Ljava/util/List<Ljava/lang/String;>;
    Exceptions:
      throws java.io.IOException

  public void rehandshake(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=13, args_size=2
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
        start local 1 // long timeout
         0: .line 340
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.position:()I
            ifle 2
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.position:()I
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.limit:()I
            if_icmpge 2
         1: .line 341
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.netInputNotEmpty"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 343
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.position:()I
            ifle 4
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.position:()I
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.limit:()I
            if_icmpge 4
         3: .line 344
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.netOutputNotEmpty"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 346
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.isReadBufferEmpty:()Z
            ifne 6
         5: .line 347
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.appInputNotEmpty"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 349
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.isWriteBufferEmpty:()Z
            ifne 8
         7: .line 350
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.appOutputNotEmpty"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 352
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeComplete:Z
         9: .line 353
            iconst_0
            istore 3 /* isReadable */
        start local 3 // boolean isReadable
        10: .line 354
            iconst_0
            istore 4 /* isWriteable */
        start local 4 // boolean isWriteable
        11: .line 355
            iconst_1
            istore 5 /* handshaking */
        start local 5 // boolean handshaking
        12: .line 356
            aconst_null
            astore 6 /* selector */
        start local 6 // java.nio.channels.Selector selector
        13: .line 357
            aconst_null
            astore 7 /* key */
        start local 7 // java.nio.channels.SelectionKey key
        14: .line 359
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.beginHandshake:()V
        15: .line 360
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
        16: .line 361
            goto 33
        17: .line 362
      StackMap locals: org.apache.tomcat.util.net.SecureNioChannel long int int int java.nio.channels.Selector java.nio.channels.SelectionKey
      StackMap stack:
            aload 0 /* this */
            iload 3 /* isReadable */
            iload 4 /* isWriteable */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.handshake:(ZZ)I
            istore 8 /* hsStatus */
        start local 8 // int hsStatus
        18: .line 363
            iload 8 /* hsStatus */
            tableswitch { // -1 - 0
                   -1: 19
                    0: 20
              default: 22
          }
        19: .line 365
      StackMap locals: int
      StackMap stack:
            new java.io.EOFException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.eofDuringHandshake"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.io.EOFException.<init>:(Ljava/lang/String;)V
            athrow
        20: .line 367
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 5 /* handshaking */
        21: .line 368
            goto 33
        22: .line 370
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.currentTimeMillis:()J
            lstore 9 /* now */
        start local 9 // long now
        23: .line 371
            aload 6 /* selector */
            ifnonnull 27
        24: .line 372
            invokestatic java.nio.channels.Selector.open:()Ljava/nio/channels/Selector;
            astore 6 /* selector */
        25: .line 373
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getIOChannel:()Ljava/nio/channels/SocketChannel;
            aload 6 /* selector */
            iload 8 /* hsStatus */
            invokevirtual java.nio.channels.SocketChannel.register:(Ljava/nio/channels/Selector;I)Ljava/nio/channels/SelectionKey;
            astore 7 /* key */
        26: .line 374
            goto 28
        27: .line 375
      StackMap locals: long
      StackMap stack:
            aload 7 /* key */
            iload 8 /* hsStatus */
            invokevirtual java.nio.channels.SelectionKey.interestOps:(I)Ljava/nio/channels/SelectionKey;
            pop
        28: .line 377
      StackMap locals:
      StackMap stack:
            aload 6 /* selector */
            lload 1 /* timeout */
            invokevirtual java.nio.channels.Selector.select:(J)I
            istore 11 /* keyCount */
        start local 11 // int keyCount
        29: .line 378
            iload 11 /* keyCount */
            ifne 31
            invokestatic java.lang.System.currentTimeMillis:()J
            lload 9 /* now */
            lsub
            lload 1 /* timeout */
            lcmp
            iflt 31
        30: .line 379
            new java.net.SocketTimeoutException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.timeoutDuringHandshake"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.net.SocketTimeoutException.<init>:(Ljava/lang/String;)V
            athrow
        31: .line 381
      StackMap locals: int
      StackMap stack:
            aload 7 /* key */
            invokevirtual java.nio.channels.SelectionKey.isReadable:()Z
            istore 3 /* isReadable */
        32: .line 382
            aload 7 /* key */
            invokevirtual java.nio.channels.SelectionKey.isWritable:()Z
            istore 4 /* isWriteable */
        end local 11 // int keyCount
        end local 9 // long now
        end local 8 // int hsStatus
        33: .line 361
      StackMap locals:
      StackMap stack:
            iload 5 /* handshaking */
            ifne 17
        34: .line 385
            goto 52
      StackMap locals:
      StackMap stack: java.io.IOException
        35: astore 8 /* x */
        start local 8 // java.io.IOException x
        36: .line 386
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.closeSilently:()V
        37: .line 387
            aload 8 /* x */
            athrow
        end local 8 // java.io.IOException x
        38: .line 388
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 8 /* cx */
        start local 8 // java.lang.Exception cx
        39: .line 389
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.closeSilently:()V
        40: .line 390
            new java.io.IOException
            dup
            aload 8 /* cx */
            invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
            astore 9 /* x */
        start local 9 // java.io.IOException x
        41: .line 391
            aload 9 /* x */
            athrow
        end local 9 // java.io.IOException x
        end local 8 // java.lang.Exception cx
        42: .line 392
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 12
        43: .line 393
            aload 7 /* key */
            ifnull 47
        44: .line 395
            aload 7 /* key */
            invokevirtual java.nio.channels.SelectionKey.cancel:()V
        45: .line 396
            goto 47
      StackMap locals: org.apache.tomcat.util.net.SecureNioChannel long int int int java.nio.channels.Selector java.nio.channels.SelectionKey top top top top java.lang.Throwable
      StackMap stack: java.lang.Exception
        46: pop
        47: .line 399
      StackMap locals:
      StackMap stack:
            aload 6 /* selector */
            ifnull 51
        48: .line 401
            aload 6 /* selector */
            invokevirtual java.nio.channels.Selector.close:()V
        49: .line 402
            goto 51
      StackMap locals:
      StackMap stack: java.lang.Exception
        50: pop
        51: .line 405
      StackMap locals:
      StackMap stack:
            aload 12
            athrow
        52: .line 393
      StackMap locals: org.apache.tomcat.util.net.SecureNioChannel long int int int java.nio.channels.Selector java.nio.channels.SelectionKey
      StackMap stack:
            aload 7 /* key */
            ifnull 56
        53: .line 395
            aload 7 /* key */
            invokevirtual java.nio.channels.SelectionKey.cancel:()V
        54: .line 396
            goto 56
      StackMap locals:
      StackMap stack: java.lang.Exception
        55: pop
        56: .line 399
      StackMap locals:
      StackMap stack:
            aload 6 /* selector */
            ifnull 60
        57: .line 401
            aload 6 /* selector */
            invokevirtual java.nio.channels.Selector.close:()V
        58: .line 402
            goto 60
      StackMap locals:
      StackMap stack: java.lang.Exception
        59: pop
        60: .line 406
      StackMap locals:
      StackMap stack:
            return
        end local 7 // java.nio.channels.SelectionKey key
        end local 6 // java.nio.channels.Selector selector
        end local 5 // boolean handshaking
        end local 4 // boolean isWriteable
        end local 3 // boolean isReadable
        end local 1 // long timeout
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   61     0         this  Lorg/apache/tomcat/util/net/SecureNioChannel;
            0   61     1      timeout  J
           10   61     3   isReadable  Z
           11   61     4  isWriteable  Z
           12   61     5  handshaking  Z
           13   61     6     selector  Ljava/nio/channels/Selector;
           14   61     7          key  Ljava/nio/channels/SelectionKey;
           18   33     8     hsStatus  I
           23   33     9          now  J
           29   33    11     keyCount  I
           36   38     8            x  Ljava/io/IOException;
           39   42     8           cx  Ljava/lang/Exception;
           41   42     9            x  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          14    34      35  Class java.io.IOException
          14    34      38  Class java.lang.Exception
          14    42      42  any
          44    45      46  Class java.lang.Exception
          48    49      50  Class java.lang.Exception
          53    54      55  Class java.lang.Exception
          57    58      59  Class java.lang.Exception
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      timeout  

  protected javax.net.ssl.SSLEngineResult$HandshakeStatus tasks();
    descriptor: ()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
         0: .line 415
            aconst_null
            astore 1 /* r */
        start local 1 // java.lang.Runnable r
         1: .line 416
            goto 3
         2: .line 417
      StackMap locals: java.lang.Runnable
      StackMap stack:
            aload 1 /* r */
            invokeinterface java.lang.Runnable.run:()V
         3: .line 416
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.getDelegatedTask:()Ljava/lang/Runnable;
            dup
            astore 1 /* r */
            ifnonnull 2
         4: .line 419
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            areturn
        end local 1 // java.lang.Runnable r
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/apache/tomcat/util/net/SecureNioChannel;
            1    5     1     r  Ljava/lang/Runnable;

  protected javax.net.ssl.SSLEngineResult handshakeWrap(boolean);
    descriptor: (Z)Ljavax/net/ssl/SSLEngineResult;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
        start local 1 // boolean doWrite
         0: .line 431
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
            pop
         1: .line 433
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureWriteBufferForRead:()V
         2: .line 434
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getWriteBuffer:()Ljava/nio/ByteBuffer;
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual javax.net.ssl.SSLEngine.wrap:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;
            astore 2 /* result */
        start local 2 // javax.net.ssl.SSLEngineResult result
         3: .line 436
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
         4: .line 438
            aload 0 /* this */
            aload 2 /* result */
            invokevirtual javax.net.ssl.SSLEngineResult.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
         5: .line 440
            iload 1 /* doWrite */
            ifeq 7
         6: .line 441
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
            pop
         7: .line 443
      StackMap locals: javax.net.ssl.SSLEngineResult
      StackMap stack:
            aload 2 /* result */
            areturn
        end local 2 // javax.net.ssl.SSLEngineResult result
        end local 1 // boolean doWrite
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0     this  Lorg/apache/tomcat/util/net/SecureNioChannel;
            0    8     1  doWrite  Z
            3    8     2   result  Ljavax/net/ssl/SSLEngineResult;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      doWrite  

  protected javax.net.ssl.SSLEngineResult handshakeUnwrap(boolean);
    descriptor: (Z)Ljavax/net/ssl/SSLEngineResult;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
        start local 1 // boolean doread
         0: .line 454
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.position:()I
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.limit:()I
            if_icmpne 2
         1: .line 456
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
            pop
         2: .line 458
      StackMap locals:
      StackMap stack:
            iload 1 /* doread */
            ifeq 6
         3: .line 460
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sc:Ljava/nio/channels/SocketChannel;
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.channels.SocketChannel.read:(Ljava/nio/ByteBuffer;)I
            istore 2 /* read */
        start local 2 // int read
         4: .line 461
            iload 2 /* read */
            iconst_m1
            if_icmpne 6
         5: .line 462
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.eofDuringHandshake"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // int read
         6: .line 466
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* cont */
        start local 3 // boolean cont
         7: .line 470
      StackMap locals: org.apache.tomcat.util.net.SecureNioChannel int top int
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
         8: .line 472
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureReadBufferForWrite:()V
         9: .line 473
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual javax.net.ssl.SSLEngine.unwrap:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;
            astore 2 /* result */
        start local 2 // javax.net.ssl.SSLEngineResult result
        10: .line 475
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.compact:()Ljava/nio/ByteBuffer;
            pop
        11: .line 477
            aload 0 /* this */
            aload 2 /* result */
            invokevirtual javax.net.ssl.SSLEngineResult.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
        12: .line 478
            aload 2 /* result */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            getstatic javax.net.ssl.SSLEngineResult$Status.OK:Ljavax/net/ssl/SSLEngineResult$Status;
            if_acmpne 15
        13: .line 479
            aload 2 /* result */
            invokevirtual javax.net.ssl.SSLEngineResult.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_TASK:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            if_acmpne 15
        14: .line 481
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.tasks:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
        15: .line 484
      StackMap locals: org.apache.tomcat.util.net.SecureNioChannel int javax.net.ssl.SSLEngineResult int
      StackMap stack:
            aload 2 /* result */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            getstatic javax.net.ssl.SSLEngineResult$Status.OK:Ljavax/net/ssl/SSLEngineResult$Status;
            if_acmpne 18
        16: .line 485
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_UNWRAP:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            if_acmpne 18
        17: .line 484
            iconst_1
            goto 19
      StackMap locals:
      StackMap stack:
        18: iconst_0
      StackMap locals:
      StackMap stack: int
        19: istore 3 /* cont */
        20: .line 486
            iload 3 /* cont */
            ifne 7
        21: .line 487
            aload 2 /* result */
            areturn
        end local 3 // boolean cont
        end local 2 // javax.net.ssl.SSLEngineResult result
        end local 1 // boolean doread
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   22     0    this  Lorg/apache/tomcat/util/net/SecureNioChannel;
            0   22     1  doread  Z
            4    6     2    read  I
           10   22     2  result  Ljavax/net/ssl/SSLEngineResult;
            7   22     3    cont  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      doread  

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
         0: .line 504
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.closing:Z
            ifeq 2
         1: .line 505
            return
         2: .line 507
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield org.apache.tomcat.util.net.SecureNioChannel.closing:Z
         3: .line 508
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.closeOutbound:()V
         4: .line 510
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
            ifne 6
         5: .line 511
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.remainingDataDuringClose"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 514
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
            pop
         7: .line 516
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getEmptyBuf:()Ljava/nio/ByteBuffer;
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual javax.net.ssl.SSLEngine.wrap:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;
            astore 1 /* handshake */
        start local 1 // javax.net.ssl.SSLEngineResult handshake
         8: .line 518
            aload 1 /* handshake */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            getstatic javax.net.ssl.SSLEngineResult$Status.CLOSED:Ljavax/net/ssl/SSLEngineResult$Status;
            if_acmpeq 10
         9: .line 519
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.invalidCloseState"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 522
      StackMap locals: javax.net.ssl.SSLEngineResult
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
        11: .line 524
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
            pop
        12: .line 527
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifne 13
            aload 1 /* handshake */
            invokevirtual javax.net.ssl.SSLEngineResult.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_WRAP:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            if_acmpeq 13
            iconst_1
            goto 14
      StackMap locals:
      StackMap stack: org.apache.tomcat.util.net.SecureNioChannel
        13: iconst_0
      StackMap locals: org.apache.tomcat.util.net.SecureNioChannel javax.net.ssl.SSLEngineResult
      StackMap stack: org.apache.tomcat.util.net.SecureNioChannel int
        14: putfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
        15: .line 528
            return
        end local 1 // javax.net.ssl.SSLEngineResult handshake
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   16     0       this  Lorg/apache/tomcat/util/net/SecureNioChannel;
            8   16     1  handshake  Ljavax/net/ssl/SSLEngineResult;
    Exceptions:
      throws java.io.IOException

  public void close(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
        start local 1 // boolean force
         0: .line 534
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.close:()V
         1: .line 535
            goto 7
      StackMap locals:
      StackMap stack: java.lang.Throwable
         2: astore 2
         3: .line 536
            iload 1 /* force */
            ifne 4
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
            ifeq 6
         4: .line 537
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
         5: .line 538
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sc:Ljava/nio/channels/SocketChannel;
            invokevirtual java.nio.channels.SocketChannel.close:()V
         6: .line 540
      StackMap locals:
      StackMap stack:
            aload 2
            athrow
         7: .line 536
      StackMap locals:
      StackMap stack:
            iload 1 /* force */
            ifne 8
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
            ifeq 10
         8: .line 537
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
         9: .line 538
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sc:Ljava/nio/channels/SocketChannel;
            invokevirtual java.nio.channels.SocketChannel.close:()V
        10: .line 541
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean force
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   11     0   this  Lorg/apache/tomcat/util/net/SecureNioChannel;
            0   11     1  force  Z
      Exception table:
        from    to  target  type
           0     2       2  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      force  

  private void closeSilently();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
         0: .line 546
            aload 0 /* this */
            iconst_1
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.close:(Z)V
         1: .line 547
            goto 4
      StackMap locals:
      StackMap stack: java.io.IOException
         2: astore 1 /* ioe */
        start local 1 // java.io.IOException ioe
         3: .line 550
            getstatic org.apache.tomcat.util.net.SecureNioChannel.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.closeSilentError"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            aload 1 /* ioe */
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 1 // java.io.IOException ioe
         4: .line 552
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/apache/tomcat/util/net/SecureNioChannel;
            3    4     1   ioe  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.io.IOException

  public int read(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=5, args_size=2
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
        start local 1 // java.nio.ByteBuffer dst
         0: .line 568
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.closing:Z
            ifne 1
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
            ifeq 2
         1: .line 569
      StackMap locals:
      StackMap stack:
            iconst_m1
            ireturn
         2: .line 572
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeComplete:Z
            ifne 4
         3: .line 573
            new java.lang.IllegalStateException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.incompleteHandshake"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 577
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sc:Ljava/nio/channels/SocketChannel;
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.channels.SocketChannel.read:(Ljava/nio/ByteBuffer;)I
            istore 2 /* netread */
        start local 2 // int netread
         5: .line 579
            iload 2 /* netread */
            iconst_m1
            if_icmpne 7
         6: .line 580
            iconst_m1
            ireturn
         7: .line 584
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 3 /* read */
        start local 3 // int read
         8: .line 589
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
         9: .line 591
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            aload 1 /* dst */
            invokevirtual javax.net.ssl.SSLEngine.unwrap:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;
            astore 4 /* unwrap */
        start local 4 // javax.net.ssl.SSLEngineResult unwrap
        10: .line 593
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.compact:()Ljava/nio/ByteBuffer;
            pop
        11: .line 595
            aload 4 /* unwrap */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            getstatic javax.net.ssl.SSLEngineResult$Status.OK:Ljavax/net/ssl/SSLEngineResult$Status;
            if_acmpeq 12
            aload 4 /* unwrap */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            getstatic javax.net.ssl.SSLEngineResult$Status.BUFFER_UNDERFLOW:Ljavax/net/ssl/SSLEngineResult$Status;
            if_acmpne 17
        12: .line 597
      StackMap locals: javax.net.ssl.SSLEngineResult
      StackMap stack:
            iload 3 /* read */
            aload 4 /* unwrap */
            invokevirtual javax.net.ssl.SSLEngineResult.bytesProduced:()I
            iadd
            istore 3 /* read */
        13: .line 599
            aload 4 /* unwrap */
            invokevirtual javax.net.ssl.SSLEngineResult.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_TASK:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            if_acmpne 15
        14: .line 600
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.tasks:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            pop
        15: .line 603
      StackMap locals:
      StackMap stack:
            aload 4 /* unwrap */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            getstatic javax.net.ssl.SSLEngineResult$Status.BUFFER_UNDERFLOW:Ljavax/net/ssl/SSLEngineResult$Status;
            if_acmpne 32
        16: .line 604
            goto 33
        17: .line 606
      StackMap locals:
      StackMap stack:
            aload 4 /* unwrap */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            getstatic javax.net.ssl.SSLEngineResult$Status.BUFFER_OVERFLOW:Ljavax/net/ssl/SSLEngineResult$Status;
            if_acmpne 31
        18: .line 607
            iload 3 /* read */
            ifle 20
        19: .line 611
            goto 33
        20: .line 615
      StackMap locals:
      StackMap stack:
            aload 1 /* dst */
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
            if_acmpne 24
        21: .line 617
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
            invokeinterface javax.net.ssl.SSLSession.getApplicationBufferSize:()I
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.expand:(I)V
        22: .line 618
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
            astore 1 /* dst */
        23: .line 619
            goto 32
      StackMap locals:
      StackMap stack:
        24: aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getAppReadBufHandler:()Lorg/apache/tomcat/util/net/ApplicationBufferHandler;
            ifnull 28
            aload 1 /* dst */
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getAppReadBufHandler:()Lorg/apache/tomcat/util/net/ApplicationBufferHandler;
            invokeinterface org.apache.tomcat.util.net.ApplicationBufferHandler.getByteBuffer:()Ljava/nio/ByteBuffer;
            if_acmpne 28
        25: .line 620
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getAppReadBufHandler:()Lorg/apache/tomcat/util/net/ApplicationBufferHandler;
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
            invokeinterface javax.net.ssl.SSLSession.getApplicationBufferSize:()I
            invokeinterface org.apache.tomcat.util.net.ApplicationBufferHandler.expand:(I)V
        26: .line 621
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getAppReadBufHandler:()Lorg/apache/tomcat/util/net/ApplicationBufferHandler;
            invokeinterface org.apache.tomcat.util.net.ApplicationBufferHandler.getByteBuffer:()Ljava/nio/ByteBuffer;
            astore 1 /* dst */
        27: .line 622
            goto 32
        28: .line 625
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
        29: .line 626
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.unwrapFailResize"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* unwrap */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        30: .line 625
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        31: .line 631
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.unwrapFail"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* unwrap */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        32: .line 633
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.position:()I
            ifne 8
        33: .line 634
      StackMap locals:
      StackMap stack:
            iload 3 /* read */
            ireturn
        end local 4 // javax.net.ssl.SSLEngineResult unwrap
        end local 3 // int read
        end local 2 // int netread
        end local 1 // java.nio.ByteBuffer dst
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   34     0     this  Lorg/apache/tomcat/util/net/SecureNioChannel;
            0   34     1      dst  Ljava/nio/ByteBuffer;
            5   34     2  netread  I
            8   34     3     read  I
           10   34     4   unwrap  Ljavax/net/ssl/SSLEngineResult;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      dst   

  public long read(java.nio.ByteBuffer[], int, int);
    descriptor: ([Ljava/nio/ByteBuffer;II)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=14, args_size=4
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
        start local 1 // java.nio.ByteBuffer[] dsts
        start local 2 // int offset
        start local 3 // int length
         0: .line 641
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.closing:Z
            ifne 1
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
            ifeq 2
         1: .line 642
      StackMap locals:
      StackMap stack:
            ldc -1
            lreturn
         2: .line 645
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeComplete:Z
            ifne 4
         3: .line 646
            new java.lang.IllegalStateException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.incompleteHandshake"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 650
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sc:Ljava/nio/channels/SocketChannel;
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.channels.SocketChannel.read:(Ljava/nio/ByteBuffer;)I
            istore 4 /* netread */
        start local 4 // int netread
         5: .line 652
            iload 4 /* netread */
            iconst_m1
            if_icmpne 7
         6: .line 653
            ldc -1
            lreturn
         7: .line 657
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 5 /* read */
        start local 5 // int read
         8: .line 660
            getstatic org.apache.tomcat.util.net.SecureNioChannel$OverflowState.NONE:Lorg/apache/tomcat/util/net/SecureNioChannel$OverflowState;
            astore 7 /* overflowState */
        start local 7 // org.apache.tomcat.util.net.SecureNioChannel$OverflowState overflowState
         9: .line 662
      StackMap locals: org.apache.tomcat.util.net.SecureNioChannel java.nio.ByteBuffer[] int int int int top org.apache.tomcat.util.net.SecureNioChannel$OverflowState
      StackMap stack:
            aload 7 /* overflowState */
            getstatic org.apache.tomcat.util.net.SecureNioChannel$OverflowState.PROCESSING:Lorg/apache/tomcat/util/net/SecureNioChannel$OverflowState;
            if_acmpne 11
        10: .line 663
            getstatic org.apache.tomcat.util.net.SecureNioChannel$OverflowState.DONE:Lorg/apache/tomcat/util/net/SecureNioChannel$OverflowState;
            astore 7 /* overflowState */
        11: .line 666
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
        12: .line 668
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            aload 1 /* dsts */
            iload 2 /* offset */
            iload 3 /* length */
            invokevirtual javax.net.ssl.SSLEngine.unwrap:(Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;II)Ljavax/net/ssl/SSLEngineResult;
            astore 6 /* unwrap */
        start local 6 // javax.net.ssl.SSLEngineResult unwrap
        13: .line 670
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.compact:()Ljava/nio/ByteBuffer;
            pop
        14: .line 672
            aload 6 /* unwrap */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            getstatic javax.net.ssl.SSLEngineResult$Status.OK:Ljavax/net/ssl/SSLEngineResult$Status;
            if_acmpeq 15
            aload 6 /* unwrap */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            getstatic javax.net.ssl.SSLEngineResult$Status.BUFFER_UNDERFLOW:Ljavax/net/ssl/SSLEngineResult$Status;
            if_acmpne 22
        15: .line 674
      StackMap locals: org.apache.tomcat.util.net.SecureNioChannel java.nio.ByteBuffer[] int int int int javax.net.ssl.SSLEngineResult org.apache.tomcat.util.net.SecureNioChannel$OverflowState
      StackMap stack:
            iload 5 /* read */
            aload 6 /* unwrap */
            invokevirtual javax.net.ssl.SSLEngineResult.bytesProduced:()I
            iadd
            istore 5 /* read */
        16: .line 675
            aload 7 /* overflowState */
            getstatic org.apache.tomcat.util.net.SecureNioChannel$OverflowState.DONE:Lorg/apache/tomcat/util/net/SecureNioChannel$OverflowState;
            if_acmpne 18
        17: .line 677
            iload 5 /* read */
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.position:()I
            isub
            istore 5 /* read */
        18: .line 680
      StackMap locals:
      StackMap stack:
            aload 6 /* unwrap */
            invokevirtual javax.net.ssl.SSLEngineResult.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_TASK:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            if_acmpne 20
        19: .line 681
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.tasks:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            pop
        20: .line 684
      StackMap locals:
      StackMap stack:
            aload 6 /* unwrap */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            getstatic javax.net.ssl.SSLEngineResult$Status.BUFFER_UNDERFLOW:Ljavax/net/ssl/SSLEngineResult$Status;
            if_acmpne 65
        21: .line 685
            goto 67
        22: .line 687
      StackMap locals:
      StackMap stack:
            aload 6 /* unwrap */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            getstatic javax.net.ssl.SSLEngineResult$Status.BUFFER_OVERFLOW:Ljavax/net/ssl/SSLEngineResult$Status;
            if_acmpne 64
        23: .line 688
            iload 5 /* read */
            ifle 25
        24: .line 692
            goto 67
        25: .line 694
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
            astore 8 /* readBuffer */
        start local 8 // java.nio.ByteBuffer readBuffer
        26: .line 695
            iconst_0
            istore 9 /* found */
        start local 9 // boolean found
        27: .line 696
            iconst_1
            istore 10 /* resized */
        start local 10 // boolean resized
        28: .line 697
            iconst_0
            istore 11 /* i */
        start local 11 // int i
        29: goto 44
        30: .line 700
      StackMap locals: org.apache.tomcat.util.net.SecureNioChannel java.nio.ByteBuffer[] int int int int javax.net.ssl.SSLEngineResult org.apache.tomcat.util.net.SecureNioChannel$OverflowState java.nio.ByteBuffer int int int
      StackMap stack:
            aload 1 /* dsts */
            iload 2 /* offset */
            iload 11 /* i */
            iadd
            aaload
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
            if_acmpne 37
        31: .line 701
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
            invokeinterface javax.net.ssl.SSLSession.getApplicationBufferSize:()I
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.expand:(I)V
        32: .line 702
            aload 1 /* dsts */
            iload 2 /* offset */
            iload 11 /* i */
            iadd
            aaload
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
            if_acmpne 34
        33: .line 703
            iconst_0
            istore 10 /* resized */
        34: .line 705
      StackMap locals:
      StackMap stack:
            aload 1 /* dsts */
            iload 2 /* offset */
            iload 11 /* i */
            iadd
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
            aastore
        35: .line 706
            iconst_1
            istore 9 /* found */
        36: .line 707
            goto 43
      StackMap locals:
      StackMap stack:
        37: aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getAppReadBufHandler:()Lorg/apache/tomcat/util/net/ApplicationBufferHandler;
            ifnull 43
            aload 1 /* dsts */
            iload 2 /* offset */
            iload 11 /* i */
            iadd
            aaload
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getAppReadBufHandler:()Lorg/apache/tomcat/util/net/ApplicationBufferHandler;
            invokeinterface org.apache.tomcat.util.net.ApplicationBufferHandler.getByteBuffer:()Ljava/nio/ByteBuffer;
            if_acmpne 43
        38: .line 708
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getAppReadBufHandler:()Lorg/apache/tomcat/util/net/ApplicationBufferHandler;
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
            invokeinterface javax.net.ssl.SSLSession.getApplicationBufferSize:()I
            invokeinterface org.apache.tomcat.util.net.ApplicationBufferHandler.expand:(I)V
        39: .line 709
            aload 1 /* dsts */
            iload 2 /* offset */
            iload 11 /* i */
            iadd
            aaload
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getAppReadBufHandler:()Lorg/apache/tomcat/util/net/ApplicationBufferHandler;
            invokeinterface org.apache.tomcat.util.net.ApplicationBufferHandler.getByteBuffer:()Ljava/nio/ByteBuffer;
            if_acmpne 41
        40: .line 710
            iconst_0
            istore 10 /* resized */
        41: .line 712
      StackMap locals:
      StackMap stack:
            aload 1 /* dsts */
            iload 2 /* offset */
            iload 11 /* i */
            iadd
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getAppReadBufHandler:()Lorg/apache/tomcat/util/net/ApplicationBufferHandler;
            invokeinterface org.apache.tomcat.util.net.ApplicationBufferHandler.getByteBuffer:()Ljava/nio/ByteBuffer;
            aastore
        42: .line 713
            iconst_1
            istore 9 /* found */
        43: .line 697
      StackMap locals:
      StackMap stack:
            iinc 11 /* i */ 1
      StackMap locals:
      StackMap stack:
        44: iload 11 /* i */
            iload 3 /* length */
            if_icmplt 30
        end local 11 // int i
        45: .line 716
            iload 9 /* found */
            ifeq 48
        46: .line 717
            iload 10 /* resized */
            ifne 65
        47: .line 718
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.unwrapFail"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 6 /* unwrap */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        48: .line 722
      StackMap locals:
      StackMap stack:
            aload 1 /* dsts */
            arraylength
            iconst_1
            iadd
            anewarray java.nio.ByteBuffer
            astore 11 /* dsts2 */
        start local 11 // java.nio.ByteBuffer[] dsts2
        49: .line 723
            iconst_0
            istore 12 /* dstOffset */
        start local 12 // int dstOffset
        50: .line 724
            iconst_0
            istore 13 /* i */
        start local 13 // int i
        51: goto 58
        52: .line 725
      StackMap locals: java.nio.ByteBuffer[] int int
      StackMap stack:
            iload 13 /* i */
            iload 2 /* offset */
            iload 3 /* length */
            iadd
            if_icmpne 56
        53: .line 726
            aload 11 /* dsts2 */
            iload 13 /* i */
            aload 8 /* readBuffer */
            aastore
        54: .line 727
            iconst_m1
            istore 12 /* dstOffset */
        55: .line 728
            goto 57
        56: .line 729
      StackMap locals:
      StackMap stack:
            aload 11 /* dsts2 */
            iload 13 /* i */
            aload 1 /* dsts */
            iload 13 /* i */
            iload 12 /* dstOffset */
            iadd
            aaload
            aastore
        57: .line 724
      StackMap locals:
      StackMap stack:
            iinc 13 /* i */ 1
      StackMap locals:
      StackMap stack:
        58: iload 13 /* i */
            aload 1 /* dsts */
            arraylength
            iconst_1
            iadd
            if_icmplt 52
        end local 13 // int i
        59: .line 732
            aload 11 /* dsts2 */
            astore 1 /* dsts */
        60: .line 733
            iinc 3 /* length */ 1
        61: .line 734
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureReadBufferForWrite:()V
        62: .line 735
            getstatic org.apache.tomcat.util.net.SecureNioChannel$OverflowState.PROCESSING:Lorg/apache/tomcat/util/net/SecureNioChannel$OverflowState;
            astore 7 /* overflowState */
        end local 12 // int dstOffset
        end local 11 // java.nio.ByteBuffer[] dsts2
        end local 10 // boolean resized
        end local 9 // boolean found
        end local 8 // java.nio.ByteBuffer readBuffer
        63: .line 738
            goto 65
        64: .line 740
      StackMap locals: org.apache.tomcat.util.net.SecureNioChannel java.nio.ByteBuffer[] int int int int javax.net.ssl.SSLEngineResult org.apache.tomcat.util.net.SecureNioChannel$OverflowState
      StackMap stack:
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.unwrapFail"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 6 /* unwrap */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        65: .line 742
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.position:()I
            ifne 66
            aload 7 /* overflowState */
            getstatic org.apache.tomcat.util.net.SecureNioChannel$OverflowState.PROCESSING:Lorg/apache/tomcat/util/net/SecureNioChannel$OverflowState;
            if_acmpne 67
        66: .line 743
      StackMap locals:
      StackMap stack:
            aload 7 /* overflowState */
            getstatic org.apache.tomcat.util.net.SecureNioChannel$OverflowState.DONE:Lorg/apache/tomcat/util/net/SecureNioChannel$OverflowState;
            if_acmpne 9
        67: .line 744
      StackMap locals:
      StackMap stack:
            iload 5 /* read */
            i2l
            lreturn
        end local 7 // org.apache.tomcat.util.net.SecureNioChannel$OverflowState overflowState
        end local 6 // javax.net.ssl.SSLEngineResult unwrap
        end local 5 // int read
        end local 4 // int netread
        end local 3 // int length
        end local 2 // int offset
        end local 1 // java.nio.ByteBuffer[] dsts
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   68     0           this  Lorg/apache/tomcat/util/net/SecureNioChannel;
            0   68     1           dsts  [Ljava/nio/ByteBuffer;
            0   68     2         offset  I
            0   68     3         length  I
            5   68     4        netread  I
            8   68     5           read  I
           13   68     6         unwrap  Ljavax/net/ssl/SSLEngineResult;
            9   68     7  overflowState  Lorg/apache/tomcat/util/net/SecureNioChannel$OverflowState;
           26   63     8     readBuffer  Ljava/nio/ByteBuffer;
           27   63     9          found  Z
           28   63    10        resized  Z
           29   45    11              i  I
           49   63    11          dsts2  [Ljava/nio/ByteBuffer;
           50   63    12      dstOffset  I
           51   59    13              i  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      dsts    
      offset  
      length  

  public int write(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=4, args_size=2
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
        start local 1 // java.nio.ByteBuffer src
         0: .line 756
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.checkInterruptStatus:()V
         1: .line 757
            aload 1 /* src */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            if_acmpne 4
         2: .line 760
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sc:Ljava/nio/channels/SocketChannel;
            aload 1 /* src */
            invokevirtual java.nio.channels.SocketChannel.write:(Ljava/nio/ByteBuffer;)I
            istore 2 /* written */
        start local 2 // int written
         3: .line 761
            iload 2 /* written */
            ireturn
        end local 2 // int written
         4: .line 764
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.closing:Z
            ifne 5
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
            ifeq 6
         5: .line 765
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.closing"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 768
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
            ifne 8
         7: .line 770
            iconst_0
            ireturn
         8: .line 774
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
            pop
         9: .line 776
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            aload 1 /* src */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual javax.net.ssl.SSLEngine.wrap:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;
            astore 2 /* result */
        start local 2 // javax.net.ssl.SSLEngineResult result
        10: .line 778
            aload 2 /* result */
            invokevirtual javax.net.ssl.SSLEngineResult.bytesConsumed:()I
            istore 3 /* written */
        start local 3 // int written
        11: .line 779
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
        12: .line 781
            aload 2 /* result */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            getstatic javax.net.ssl.SSLEngineResult$Status.OK:Ljavax/net/ssl/SSLEngineResult$Status;
            if_acmpne 16
        13: .line 782
            aload 2 /* result */
            invokevirtual javax.net.ssl.SSLEngineResult.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_TASK:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            if_acmpne 17
        14: .line 783
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.tasks:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            pop
        15: .line 785
            goto 17
        16: .line 786
      StackMap locals: javax.net.ssl.SSLEngineResult int
      StackMap stack:
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.wrapFail"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* result */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        17: .line 790
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
            pop
        18: .line 792
            iload 3 /* written */
            ireturn
        end local 3 // int written
        end local 2 // javax.net.ssl.SSLEngineResult result
        end local 1 // java.nio.ByteBuffer src
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   19     0     this  Lorg/apache/tomcat/util/net/SecureNioChannel;
            0   19     1      src  Ljava/nio/ByteBuffer;
            3    4     2  written  I
           10   19     2   result  Ljavax/net/ssl/SSLEngineResult;
           11   19     3  written  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      src   

  public long write(java.nio.ByteBuffer[], int, int);
    descriptor: ([Ljava/nio/ByteBuffer;II)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=6, args_size=4
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
        start local 1 // java.nio.ByteBuffer[] srcs
        start local 2 // int offset
        start local 3 // int length
         0: .line 799
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.checkInterruptStatus:()V
         1: .line 801
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.closing:Z
            ifne 2
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
            ifeq 3
         2: .line 802
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.closing"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 805
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
            ifne 5
         4: .line 807
            lconst_0
            lreturn
         5: .line 811
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
            pop
         6: .line 813
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            aload 1 /* srcs */
            iload 2 /* offset */
            iload 3 /* length */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual javax.net.ssl.SSLEngine.wrap:([Ljava/nio/ByteBuffer;IILjava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;
            astore 4 /* result */
        start local 4 // javax.net.ssl.SSLEngineResult result
         7: .line 815
            aload 4 /* result */
            invokevirtual javax.net.ssl.SSLEngineResult.bytesConsumed:()I
            istore 5 /* written */
        start local 5 // int written
         8: .line 816
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
         9: .line 818
            aload 4 /* result */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            getstatic javax.net.ssl.SSLEngineResult$Status.OK:Ljavax/net/ssl/SSLEngineResult$Status;
            if_acmpne 12
        10: .line 819
            aload 4 /* result */
            invokevirtual javax.net.ssl.SSLEngineResult.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_TASK:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            if_acmpne 13
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.tasks:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            pop
        11: .line 820
            goto 13
        12: .line 821
      StackMap locals: javax.net.ssl.SSLEngineResult int
      StackMap stack:
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "channel.nio.ssl.wrapFail"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* result */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 825
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
            pop
        14: .line 827
            iload 5 /* written */
            i2l
            lreturn
        end local 5 // int written
        end local 4 // javax.net.ssl.SSLEngineResult result
        end local 3 // int length
        end local 2 // int offset
        end local 1 // java.nio.ByteBuffer[] srcs
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   15     0     this  Lorg/apache/tomcat/util/net/SecureNioChannel;
            0   15     1     srcs  [Ljava/nio/ByteBuffer;
            0   15     2   offset  I
            0   15     3   length  I
            7   15     4   result  Ljavax/net/ssl/SSLEngineResult;
            8   15     5  written  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      srcs    
      offset  
      length  

  public int getOutboundRemaining();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
         0: .line 832
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            ireturn
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SecureNioChannel;

  public boolean flushOutbound();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
         0: .line 837
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 1 /* remaining */
        start local 1 // int remaining
         1: .line 838
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
            pop
         2: .line 839
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 2 /* remaining2 */
        start local 2 // int remaining2
         3: .line 840
            iload 2 /* remaining2 */
            iload 1 /* remaining */
            if_icmpge 4
            iconst_1
            ireturn
      StackMap locals: int int
      StackMap stack:
         4: iconst_0
            ireturn
        end local 2 // int remaining2
        end local 1 // int remaining
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lorg/apache/tomcat/util/net/SecureNioChannel;
            1    5     1   remaining  I
            3    5     2  remaining2  I
    Exceptions:
      throws java.io.IOException

  public boolean isHandshakeComplete();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
         0: .line 845
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeComplete:Z
            ireturn
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SecureNioChannel;

  public boolean isClosing();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
         0: .line 850
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.closing:Z
            ireturn
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SecureNioChannel;

  public javax.net.ssl.SSLEngine getSslEngine();
    descriptor: ()Ljavax/net/ssl/SSLEngine;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
         0: .line 854
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
            areturn
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SecureNioChannel;

  public java.nio.ByteBuffer getEmptyBuf();
    descriptor: ()Ljava/nio/ByteBuffer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SecureNioChannel this
         0: .line 858
            getstatic org.apache.tomcat.util.net.SecureNioChannel.emptyBuf:Ljava/nio/ByteBuffer;
            areturn
        end local 0 // org.apache.tomcat.util.net.SecureNioChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SecureNioChannel;

  static int[] $SWITCH_TABLE$javax$net$ssl$SSLEngineResult$HandshakeStatus();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 47
            getstatic org.apache.tomcat.util.net.SecureNioChannel.$SWITCH_TABLE$javax$net$ssl$SSLEngineResult$HandshakeStatus:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic javax.net.ssl.SSLEngineResult$HandshakeStatus.values:()[Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.FINISHED:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            invokevirtual javax.net.ssl.SSLEngineResult$HandshakeStatus.ordinal:()I
            iconst_2
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_TASK:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            invokevirtual javax.net.ssl.SSLEngineResult$HandshakeStatus.ordinal:()I
            iconst_3
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_UNWRAP:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            invokevirtual javax.net.ssl.SSLEngineResult$HandshakeStatus.ordinal:()I
            iconst_5
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_WRAP:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            invokevirtual javax.net.ssl.SSLEngineResult$HandshakeStatus.ordinal:()I
            iconst_4
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NOT_HANDSHAKING:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            invokevirtual javax.net.ssl.SSLEngineResult$HandshakeStatus.ordinal:()I
            iconst_1
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            dup
            putstatic org.apache.tomcat.util.net.SecureNioChannel.$SWITCH_TABLE$javax$net$ssl$SSLEngineResult$HandshakeStatus:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
          14    15      16  Class java.lang.NoSuchFieldError

  static int[] $SWITCH_TABLE$org$apache$tomcat$util$net$TLSClientHelloExtractor$ExtractorResult();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 47
            getstatic org.apache.tomcat.util.net.SecureNioChannel.$SWITCH_TABLE$org$apache$tomcat$util$net$TLSClientHelloExtractor$ExtractorResult:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.values:()[Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.COMPLETE:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
            invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.ordinal:()I
            iconst_1
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.NEED_READ:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
            invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.ordinal:()I
            iconst_4
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.NON_SECURE:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
            invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.ordinal:()I
            iconst_5
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.NOT_PRESENT:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
            invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.ordinal:()I
            iconst_2
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.UNDERFLOW:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
            invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.ordinal:()I
            iconst_3
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            dup
            putstatic org.apache.tomcat.util.net.SecureNioChannel.$SWITCH_TABLE$org$apache$tomcat$util$net$TLSClientHelloExtractor$ExtractorResult:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
          14    15      16  Class java.lang.NoSuchFieldError
}
SourceFile: "SecureNioChannel.java"
NestMembers:
  org.apache.tomcat.util.net.SecureNioChannel$OverflowState
InnerClasses:
  public final HandshakeStatus = javax.net.ssl.SSLEngineResult$HandshakeStatus of javax.net.ssl.SSLEngineResult
  public final Status = javax.net.ssl.SSLEngineResult$Status of javax.net.ssl.SSLEngineResult
  public NioSocketWrapper = org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper of org.apache.tomcat.util.net.NioEndpoint
  public abstract ProtocolInfo = org.apache.tomcat.util.net.SSLUtil$ProtocolInfo of org.apache.tomcat.util.net.SSLUtil
  private final OverflowState = org.apache.tomcat.util.net.SecureNioChannel$OverflowState of org.apache.tomcat.util.net.SecureNioChannel
  public final ExtractorResult = org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult of org.apache.tomcat.util.net.TLSClientHelloExtractor