final class io.netty.handler.ssl.SslUtils
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: io.netty.handler.ssl.SslUtils
  super_class: java.lang.Object
{
  static final java.lang.String PROTOCOL_SSL_V2_HELLO;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "SSLv2Hello"

  static final java.lang.String PROTOCOL_SSL_V2;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "SSLv2"

  static final java.lang.String PROTOCOL_SSL_V3;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "SSLv3"

  static final java.lang.String PROTOCOL_TLS_V1;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "TLSv1"

  static final java.lang.String PROTOCOL_TLS_V1_1;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "TLSv1.1"

  static final java.lang.String PROTOCOL_TLS_V1_2;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "TLSv1.2"

  static final int SSL_CONTENT_TYPE_CHANGE_CIPHER_SPEC;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 20

  static final int SSL_CONTENT_TYPE_ALERT;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 21

  static final int SSL_CONTENT_TYPE_HANDSHAKE;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 22

  static final int SSL_CONTENT_TYPE_APPLICATION_DATA;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 23

  static final int SSL_CONTENT_TYPE_EXTENSION_HEARTBEAT;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 24

  static final int SSL_RECORD_HEADER_LENGTH;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 5

  static final int NOT_ENOUGH_DATA;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: -1

  static final int NOT_ENCRYPTED;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: -2

  static final java.lang.String[] DEFAULT_CIPHER_SUITES;
    descriptor: [Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 87
            bipush 8
            anewarray java.lang.String
            dup
            iconst_0
         1: .line 89
            ldc "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"
            aastore
            dup
            iconst_1
         2: .line 90
            ldc "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"
            aastore
            dup
            iconst_2
         3: .line 91
            ldc "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
            aastore
            dup
            iconst_3
         4: .line 92
            ldc "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA"
            aastore
            dup
            iconst_4
         5: .line 94
            ldc "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA"
            aastore
            dup
            iconst_5
         6: .line 96
            ldc "TLS_RSA_WITH_AES_128_GCM_SHA256"
            aastore
            dup
            bipush 6
         7: .line 97
            ldc "TLS_RSA_WITH_AES_128_CBC_SHA"
            aastore
            dup
            bipush 7
         8: .line 99
            ldc "TLS_RSA_WITH_AES_256_CBC_SHA"
            aastore
         9: .line 87
            putstatic io.netty.handler.ssl.SslUtils.DEFAULT_CIPHER_SUITES:[Ljava/lang/String;
        10: .line 100
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static void addIfSupported(java.util.Set<java.lang.String>, java.util.List<java.lang.String>, java.lang.String[]);
    descriptor: (Ljava/util/Set;Ljava/util/List;[Ljava/lang/String;)V
    flags: (0x0088) ACC_STATIC, ACC_VARARGS
    Code:
      stack=2, locals=7, args_size=3
        start local 0 // java.util.Set supported
        start local 1 // java.util.List enabled
        start local 2 // java.lang.String[] names
         0: .line 106
            aload 2 /* names */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 5
      StackMap locals: java.util.Set java.util.List java.lang.String[] top int int java.lang.String[]
      StackMap stack:
         1: aload 6
            iload 4
            aaload
            astore 3 /* n */
        start local 3 // java.lang.String n
         2: .line 107
            aload 0 /* supported */
            aload 3 /* n */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 108
            aload 1 /* enabled */
            aload 3 /* n */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // java.lang.String n
         4: .line 106
      StackMap locals:
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
         5: iload 4
            iload 5
            if_icmplt 1
         6: .line 111
            return
        end local 2 // java.lang.String[] names
        end local 1 // java.util.List enabled
        end local 0 // java.util.Set supported
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0  supported  Ljava/util/Set<Ljava/lang/String;>;
            0    7     1    enabled  Ljava/util/List<Ljava/lang/String;>;
            0    7     2      names  [Ljava/lang/String;
            2    4     3          n  Ljava/lang/String;
    Signature: (Ljava/util/Set<Ljava/lang/String;>;Ljava/util/List<Ljava/lang/String;>;[Ljava/lang/String;)V
    MethodParameters:
           Name  Flags
      supported  
      enabled    
      names      

  static void useFallbackCiphersIfDefaultIsEmpty(java.util.List<java.lang.String>, java.lang.Iterable<java.lang.String>);
    descriptor: (Ljava/util/List;Ljava/lang/Iterable;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // java.util.List defaultCiphers
        start local 1 // java.lang.Iterable fallbackCiphers
         0: .line 114
            aload 0 /* defaultCiphers */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 7
         1: .line 115
            aload 1 /* fallbackCiphers */
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 3
            goto 6
      StackMap locals: java.util.List java.lang.Iterable top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 2 /* cipher */
        start local 2 // java.lang.String cipher
         3: .line 116
            aload 2 /* cipher */
            ldc "SSL_"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 6
            aload 2 /* cipher */
            ldc "_RC4_"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 5
         4: .line 117
            goto 6
         5: .line 119
      StackMap locals: java.util.List java.lang.Iterable java.lang.String java.util.Iterator
      StackMap stack:
            aload 0 /* defaultCiphers */
            aload 2 /* cipher */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 2 // java.lang.String cipher
         6: .line 115
      StackMap locals: java.util.List java.lang.Iterable top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         7: .line 122
      StackMap locals: java.util.List java.lang.Iterable
      StackMap stack:
            return
        end local 1 // java.lang.Iterable fallbackCiphers
        end local 0 // java.util.List defaultCiphers
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    8     0   defaultCiphers  Ljava/util/List<Ljava/lang/String;>;
            0    8     1  fallbackCiphers  Ljava/lang/Iterable<Ljava/lang/String;>;
            3    6     2           cipher  Ljava/lang/String;
    Signature: (Ljava/util/List<Ljava/lang/String;>;Ljava/lang/Iterable<Ljava/lang/String;>;)V
    MethodParameters:
                 Name  Flags
      defaultCiphers   
      fallbackCiphers  

  static void useFallbackCiphersIfDefaultIsEmpty(java.util.List<java.lang.String>, java.lang.String[]);
    descriptor: (Ljava/util/List;[Ljava/lang/String;)V
    flags: (0x0088) ACC_STATIC, ACC_VARARGS
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.List defaultCiphers
        start local 1 // java.lang.String[] fallbackCiphers
         0: .line 125
            aload 0 /* defaultCiphers */
            aload 1 /* fallbackCiphers */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokestatic io.netty.handler.ssl.SslUtils.useFallbackCiphersIfDefaultIsEmpty:(Ljava/util/List;Ljava/lang/Iterable;)V
         1: .line 126
            return
        end local 1 // java.lang.String[] fallbackCiphers
        end local 0 // java.util.List defaultCiphers
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0   defaultCiphers  Ljava/util/List<Ljava/lang/String;>;
            0    2     1  fallbackCiphers  [Ljava/lang/String;
    Signature: (Ljava/util/List<Ljava/lang/String;>;[Ljava/lang/String;)V
    MethodParameters:
                 Name  Flags
      defaultCiphers   
      fallbackCiphers  

  static javax.net.ssl.SSLHandshakeException toSSLHandshakeException(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)Ljavax/net/ssl/SSLHandshakeException;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Throwable e
         0: .line 132
            aload 0 /* e */
            instanceof javax.net.ssl.SSLHandshakeException
            ifeq 2
         1: .line 133
            aload 0 /* e */
            checkcast javax.net.ssl.SSLHandshakeException
            areturn
         2: .line 136
      StackMap locals:
      StackMap stack:
            new javax.net.ssl.SSLHandshakeException
            dup
            aload 0 /* e */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
            aload 0 /* e */
            invokevirtual javax.net.ssl.SSLHandshakeException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            checkcast javax.net.ssl.SSLHandshakeException
            areturn
        end local 0 // java.lang.Throwable e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     e  Ljava/lang/Throwable;
    MethodParameters:
      Name  Flags
      e     

  static int getEncryptedPacketLength(io.netty.buffer.ByteBuf, int);
    descriptor: (Lio/netty/buffer/ByteBuf;I)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // io.netty.buffer.ByteBuf buffer
        start local 1 // int offset
         0: .line 157
            iconst_0
            istore 2 /* packetLength */
        start local 2 // int packetLength
         1: .line 161
            aload 0 /* buffer */
            iload 1 /* offset */
            invokevirtual io.netty.buffer.ByteBuf.getUnsignedByte:(I)S
            tableswitch { // 20 - 24
                   20: 2
                   21: 2
                   22: 2
                   23: 2
                   24: 2
              default: 4
          }
         2: .line 167
      StackMap locals: int
      StackMap stack:
            iconst_1
            istore 3 /* tls */
        start local 3 // boolean tls
         3: .line 168
            goto 5
        end local 3 // boolean tls
         4: .line 171
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* tls */
        start local 3 // boolean tls
         5: .line 174
      StackMap locals: int
      StackMap stack:
            iload 3 /* tls */
            ifeq 13
         6: .line 176
            aload 0 /* buffer */
            iload 1 /* offset */
            iconst_1
            iadd
            invokevirtual io.netty.buffer.ByteBuf.getUnsignedByte:(I)S
            istore 4 /* majorVersion */
        start local 4 // int majorVersion
         7: .line 177
            iload 4 /* majorVersion */
            iconst_3
            if_icmpne 12
         8: .line 179
            aload 0 /* buffer */
            iload 1 /* offset */
            iconst_3
            iadd
            invokestatic io.netty.handler.ssl.SslUtils.unsignedShortBE:(Lio/netty/buffer/ByteBuf;I)I
            iconst_5
            iadd
            istore 2 /* packetLength */
         9: .line 180
            iload 2 /* packetLength */
            iconst_5
            if_icmpgt 13
        10: .line 182
            iconst_0
            istore 3 /* tls */
        11: .line 184
            goto 13
        12: .line 186
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 3 /* tls */
        end local 4 // int majorVersion
        13: .line 190
      StackMap locals:
      StackMap stack:
            iload 3 /* tls */
            ifne 26
        14: .line 192
            aload 0 /* buffer */
            iload 1 /* offset */
            invokevirtual io.netty.buffer.ByteBuf.getUnsignedByte:(I)S
            sipush 128
            iand
            ifeq 15
            iconst_2
            goto 16
      StackMap locals:
      StackMap stack:
        15: iconst_3
      StackMap locals:
      StackMap stack: int
        16: istore 4 /* headerLength */
        start local 4 // int headerLength
        17: .line 193
            aload 0 /* buffer */
            iload 1 /* offset */
            iload 4 /* headerLength */
            iadd
            iconst_1
            iadd
            invokevirtual io.netty.buffer.ByteBuf.getUnsignedByte:(I)S
            istore 5 /* majorVersion */
        start local 5 // int majorVersion
        18: .line 194
            iload 5 /* majorVersion */
            iconst_2
            if_icmpeq 19
            iload 5 /* majorVersion */
            iconst_3
            if_icmpne 25
        19: .line 196
      StackMap locals: int int
      StackMap stack:
            iload 4 /* headerLength */
            iconst_2
            if_icmpne 21
        20: .line 197
            aload 0 /* buffer */
            iload 1 /* offset */
            invokestatic io.netty.handler.ssl.SslUtils.shortBE:(Lio/netty/buffer/ByteBuf;I)S
            sipush 32767
            iand
            iconst_2
            iadd
            goto 22
      StackMap locals:
      StackMap stack:
        21: aload 0 /* buffer */
            iload 1 /* offset */
            invokestatic io.netty.handler.ssl.SslUtils.shortBE:(Lio/netty/buffer/ByteBuf;I)S
            sipush 16383
            iand
            iconst_3
            iadd
        22: .line 196
      StackMap locals:
      StackMap stack: int
            istore 2 /* packetLength */
        23: .line 198
            iload 2 /* packetLength */
            iload 4 /* headerLength */
            if_icmpgt 26
        24: .line 199
            iconst_m1
            ireturn
        25: .line 202
      StackMap locals:
      StackMap stack:
            bipush -2
            ireturn
        end local 5 // int majorVersion
        end local 4 // int headerLength
        26: .line 205
      StackMap locals:
      StackMap stack:
            iload 2 /* packetLength */
            ireturn
        end local 3 // boolean tls
        end local 2 // int packetLength
        end local 1 // int offset
        end local 0 // io.netty.buffer.ByteBuf buffer
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   27     0        buffer  Lio/netty/buffer/ByteBuf;
            0   27     1        offset  I
            1   27     2  packetLength  I
            3    4     3           tls  Z
            5   27     3           tls  Z
            7   13     4  majorVersion  I
           17   26     4  headerLength  I
           18   26     5  majorVersion  I
    MethodParameters:
        Name  Flags
      buffer  
      offset  

  private static int unsignedShortBE(io.netty.buffer.ByteBuf, int);
    descriptor: (Lio/netty/buffer/ByteBuf;I)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.buffer.ByteBuf buffer
        start local 1 // int offset
         0: .line 211
            aload 0 /* buffer */
            invokevirtual io.netty.buffer.ByteBuf.order:()Ljava/nio/ByteOrder;
            getstatic java.nio.ByteOrder.BIG_ENDIAN:Ljava/nio/ByteOrder;
            if_acmpne 2
         1: .line 212
            aload 0 /* buffer */
            iload 1 /* offset */
            invokevirtual io.netty.buffer.ByteBuf.getUnsignedShort:(I)I
            goto 3
      StackMap locals:
      StackMap stack:
         2: aload 0 /* buffer */
            iload 1 /* offset */
            invokevirtual io.netty.buffer.ByteBuf.getUnsignedShortLE:(I)I
         3: .line 211
      StackMap locals:
      StackMap stack: int
            ireturn
        end local 1 // int offset
        end local 0 // io.netty.buffer.ByteBuf buffer
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0  buffer  Lio/netty/buffer/ByteBuf;
            0    4     1  offset  I
    MethodParameters:
        Name  Flags
      buffer  
      offset  

  private static short shortBE(io.netty.buffer.ByteBuf, int);
    descriptor: (Lio/netty/buffer/ByteBuf;I)S
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.buffer.ByteBuf buffer
        start local 1 // int offset
         0: .line 218
            aload 0 /* buffer */
            invokevirtual io.netty.buffer.ByteBuf.order:()Ljava/nio/ByteOrder;
            getstatic java.nio.ByteOrder.BIG_ENDIAN:Ljava/nio/ByteOrder;
            if_acmpne 2
         1: .line 219
            aload 0 /* buffer */
            iload 1 /* offset */
            invokevirtual io.netty.buffer.ByteBuf.getShort:(I)S
            goto 3
      StackMap locals:
      StackMap stack:
         2: aload 0 /* buffer */
            iload 1 /* offset */
            invokevirtual io.netty.buffer.ByteBuf.getShortLE:(I)S
         3: .line 218
      StackMap locals:
      StackMap stack: int
            ireturn
        end local 1 // int offset
        end local 0 // io.netty.buffer.ByteBuf buffer
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0  buffer  Lio/netty/buffer/ByteBuf;
            0    4     1  offset  I
    MethodParameters:
        Name  Flags
      buffer  
      offset  

  private static short unsignedByte(byte);
    descriptor: (B)S
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // byte b
         0: .line 223
            iload 0 /* b */
            sipush 255
            iand
            i2s
            ireturn
        end local 0 // byte b
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     b  B
    MethodParameters:
      Name  Flags
      b     

  private static int unsignedShortBE(java.nio.ByteBuffer, int);
    descriptor: (Ljava/nio/ByteBuffer;I)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.nio.ByteBuffer buffer
        start local 1 // int offset
         0: .line 228
            aload 0 /* buffer */
            iload 1 /* offset */
            invokestatic io.netty.handler.ssl.SslUtils.shortBE:(Ljava/nio/ByteBuffer;I)S
            ldc 65535
            iand
            ireturn
        end local 1 // int offset
        end local 0 // java.nio.ByteBuffer buffer
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  buffer  Ljava/nio/ByteBuffer;
            0    1     1  offset  I
    MethodParameters:
        Name  Flags
      buffer  
      offset  

  private static short shortBE(java.nio.ByteBuffer, int);
    descriptor: (Ljava/nio/ByteBuffer;I)S
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.nio.ByteBuffer buffer
        start local 1 // int offset
         0: .line 233
            aload 0 /* buffer */
            invokevirtual java.nio.ByteBuffer.order:()Ljava/nio/ByteOrder;
            getstatic java.nio.ByteOrder.BIG_ENDIAN:Ljava/nio/ByteOrder;
            if_acmpne 2
         1: .line 234
            aload 0 /* buffer */
            iload 1 /* offset */
            invokevirtual java.nio.ByteBuffer.getShort:(I)S
            goto 3
      StackMap locals:
      StackMap stack:
         2: aload 0 /* buffer */
            iload 1 /* offset */
            invokevirtual java.nio.ByteBuffer.getShort:(I)S
            invokestatic io.netty.buffer.ByteBufUtil.swapShort:(S)S
         3: .line 233
      StackMap locals:
      StackMap stack: int
            ireturn
        end local 1 // int offset
        end local 0 // java.nio.ByteBuffer buffer
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0  buffer  Ljava/nio/ByteBuffer;
            0    4     1  offset  I
    MethodParameters:
        Name  Flags
      buffer  
      offset  

  static int getEncryptedPacketLength(java.nio.ByteBuffer[], int);
    descriptor: ([Ljava/nio/ByteBuffer;I)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // java.nio.ByteBuffer[] buffers
        start local 1 // int offset
         0: .line 238
            aload 0 /* buffers */
            iload 1 /* offset */
            aaload
            astore 2 /* buffer */
        start local 2 // java.nio.ByteBuffer buffer
         1: .line 241
            aload 2 /* buffer */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            iconst_5
            if_icmplt 3
         2: .line 242
            aload 2 /* buffer */
            invokestatic io.netty.handler.ssl.SslUtils.getEncryptedPacketLength:(Ljava/nio/ByteBuffer;)I
            ireturn
         3: .line 246
      StackMap locals: java.nio.ByteBuffer
      StackMap stack:
            iconst_5
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 3 /* tmp */
        start local 3 // java.nio.ByteBuffer tmp
         4: .line 249
      StackMap locals: java.nio.ByteBuffer
      StackMap stack:
            aload 0 /* buffers */
            iload 1 /* offset */
            iinc 1 /* offset */ 1
            aaload
            invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
            astore 2 /* buffer */
         5: .line 250
            aload 2 /* buffer */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            aload 3 /* tmp */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            if_icmple 7
         6: .line 251
            aload 2 /* buffer */
            aload 2 /* buffer */
            invokevirtual java.nio.ByteBuffer.position:()I
            aload 3 /* tmp */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            iadd
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
         7: .line 253
      StackMap locals:
      StackMap stack:
            aload 3 /* tmp */
            aload 2 /* buffer */
            invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
            pop
         8: .line 254
            aload 3 /* tmp */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifne 4
         9: .line 257
            aload 3 /* tmp */
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
        10: .line 258
            aload 3 /* tmp */
            invokestatic io.netty.handler.ssl.SslUtils.getEncryptedPacketLength:(Ljava/nio/ByteBuffer;)I
            ireturn
        end local 3 // java.nio.ByteBuffer tmp
        end local 2 // java.nio.ByteBuffer buffer
        end local 1 // int offset
        end local 0 // java.nio.ByteBuffer[] buffers
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   11     0  buffers  [Ljava/nio/ByteBuffer;
            0   11     1   offset  I
            1   11     2   buffer  Ljava/nio/ByteBuffer;
            4   11     3      tmp  Ljava/nio/ByteBuffer;
    MethodParameters:
         Name  Flags
      buffers  
      offset   

  private static int getEncryptedPacketLength(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=1
        start local 0 // java.nio.ByteBuffer buffer
         0: .line 262
            iconst_0
            istore 1 /* packetLength */
        start local 1 // int packetLength
         1: .line 263
            aload 0 /* buffer */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 2 /* pos */
        start local 2 // int pos
         2: .line 266
            aload 0 /* buffer */
            iload 2 /* pos */
            invokevirtual java.nio.ByteBuffer.get:(I)B
            invokestatic io.netty.handler.ssl.SslUtils.unsignedByte:(B)S
            tableswitch { // 20 - 24
                   20: 3
                   21: 3
                   22: 3
                   23: 3
                   24: 3
              default: 5
          }
         3: .line 272
      StackMap locals: int int
      StackMap stack:
            iconst_1
            istore 3 /* tls */
        start local 3 // boolean tls
         4: .line 273
            goto 6
        end local 3 // boolean tls
         5: .line 276
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* tls */
        start local 3 // boolean tls
         6: .line 279
      StackMap locals: int
      StackMap stack:
            iload 3 /* tls */
            ifeq 14
         7: .line 281
            aload 0 /* buffer */
            iload 2 /* pos */
            iconst_1
            iadd
            invokevirtual java.nio.ByteBuffer.get:(I)B
            invokestatic io.netty.handler.ssl.SslUtils.unsignedByte:(B)S
            istore 4 /* majorVersion */
        start local 4 // int majorVersion
         8: .line 282
            iload 4 /* majorVersion */
            iconst_3
            if_icmpne 13
         9: .line 284
            aload 0 /* buffer */
            iload 2 /* pos */
            iconst_3
            iadd
            invokestatic io.netty.handler.ssl.SslUtils.unsignedShortBE:(Ljava/nio/ByteBuffer;I)I
            iconst_5
            iadd
            istore 1 /* packetLength */
        10: .line 285
            iload 1 /* packetLength */
            iconst_5
            if_icmpgt 14
        11: .line 287
            iconst_0
            istore 3 /* tls */
        12: .line 289
            goto 14
        13: .line 291
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 3 /* tls */
        end local 4 // int majorVersion
        14: .line 295
      StackMap locals:
      StackMap stack:
            iload 3 /* tls */
            ifne 27
        15: .line 297
            aload 0 /* buffer */
            iload 2 /* pos */
            invokevirtual java.nio.ByteBuffer.get:(I)B
            invokestatic io.netty.handler.ssl.SslUtils.unsignedByte:(B)S
            sipush 128
            iand
            ifeq 16
            iconst_2
            goto 17
      StackMap locals:
      StackMap stack:
        16: iconst_3
      StackMap locals:
      StackMap stack: int
        17: istore 4 /* headerLength */
        start local 4 // int headerLength
        18: .line 298
            aload 0 /* buffer */
            iload 2 /* pos */
            iload 4 /* headerLength */
            iadd
            iconst_1
            iadd
            invokevirtual java.nio.ByteBuffer.get:(I)B
            invokestatic io.netty.handler.ssl.SslUtils.unsignedByte:(B)S
            istore 5 /* majorVersion */
        start local 5 // int majorVersion
        19: .line 299
            iload 5 /* majorVersion */
            iconst_2
            if_icmpeq 20
            iload 5 /* majorVersion */
            iconst_3
            if_icmpne 26
        20: .line 301
      StackMap locals: int int
      StackMap stack:
            iload 4 /* headerLength */
            iconst_2
            if_icmpne 22
        21: .line 302
            aload 0 /* buffer */
            iload 2 /* pos */
            invokestatic io.netty.handler.ssl.SslUtils.shortBE:(Ljava/nio/ByteBuffer;I)S
            sipush 32767
            iand
            iconst_2
            iadd
            goto 23
      StackMap locals:
      StackMap stack:
        22: aload 0 /* buffer */
            iload 2 /* pos */
            invokestatic io.netty.handler.ssl.SslUtils.shortBE:(Ljava/nio/ByteBuffer;I)S
            sipush 16383
            iand
            iconst_3
            iadd
        23: .line 301
      StackMap locals:
      StackMap stack: int
            istore 1 /* packetLength */
        24: .line 303
            iload 1 /* packetLength */
            iload 4 /* headerLength */
            if_icmpgt 27
        25: .line 304
            iconst_m1
            ireturn
        26: .line 307
      StackMap locals:
      StackMap stack:
            bipush -2
            ireturn
        end local 5 // int majorVersion
        end local 4 // int headerLength
        27: .line 310
      StackMap locals:
      StackMap stack:
            iload 1 /* packetLength */
            ireturn
        end local 3 // boolean tls
        end local 2 // int pos
        end local 1 // int packetLength
        end local 0 // java.nio.ByteBuffer buffer
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   28     0        buffer  Ljava/nio/ByteBuffer;
            1   28     1  packetLength  I
            2   28     2           pos  I
            4    5     3           tls  Z
            6   28     3           tls  Z
            8   14     4  majorVersion  I
           18   27     4  headerLength  I
           19   27     5  majorVersion  I
    MethodParameters:
        Name  Flags
      buffer  

  static void handleHandshakeFailure(io.netty.channel.ChannelHandlerContext, java.lang.Throwable, boolean);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Throwable;Z)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // io.netty.channel.ChannelHandlerContext ctx
        start local 1 // java.lang.Throwable cause
        start local 2 // boolean notify
         0: .line 316
            aload 0 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.flush:()Lio/netty/channel/ChannelHandlerContext;
            pop
         1: .line 317
            iload 2 /* notify */
            ifeq 3
         2: .line 318
            aload 0 /* ctx */
            new io.netty.handler.ssl.SslHandshakeCompletionEvent
            dup
            aload 1 /* cause */
            invokespecial io.netty.handler.ssl.SslHandshakeCompletionEvent.<init>:(Ljava/lang/Throwable;)V
            invokeinterface io.netty.channel.ChannelHandlerContext.fireUserEventTriggered:(Ljava/lang/Object;)Lio/netty/channel/ChannelHandlerContext;
            pop
         3: .line 320
      StackMap locals:
      StackMap stack:
            aload 0 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.close:()Lio/netty/channel/ChannelFuture;
            pop
         4: .line 321
            return
        end local 2 // boolean notify
        end local 1 // java.lang.Throwable cause
        end local 0 // io.netty.channel.ChannelHandlerContext ctx
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0     ctx  Lio/netty/channel/ChannelHandlerContext;
            0    5     1   cause  Ljava/lang/Throwable;
            0    5     2  notify  Z
    MethodParameters:
        Name  Flags
      ctx     
      cause   
      notify  

  static void zeroout(io.netty.buffer.ByteBuf);
    descriptor: (Lio/netty/buffer/ByteBuf;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.netty.buffer.ByteBuf buffer
         0: .line 327
            aload 0 /* buffer */
            invokevirtual io.netty.buffer.ByteBuf.isReadOnly:()Z
            ifne 2
         1: .line 328
            aload 0 /* buffer */
            iconst_0
            aload 0 /* buffer */
            invokevirtual io.netty.buffer.ByteBuf.capacity:()I
            invokevirtual io.netty.buffer.ByteBuf.setZero:(II)Lio/netty/buffer/ByteBuf;
            pop
         2: .line 330
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.netty.buffer.ByteBuf buffer
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0  buffer  Lio/netty/buffer/ByteBuf;
    MethodParameters:
        Name  Flags
      buffer  

  static void zerooutAndRelease(io.netty.buffer.ByteBuf);
    descriptor: (Lio/netty/buffer/ByteBuf;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.buffer.ByteBuf buffer
         0: .line 336
            aload 0 /* buffer */
            invokestatic io.netty.handler.ssl.SslUtils.zeroout:(Lio/netty/buffer/ByteBuf;)V
         1: .line 337
            aload 0 /* buffer */
            invokevirtual io.netty.buffer.ByteBuf.release:()Z
            pop
         2: .line 338
            return
        end local 0 // io.netty.buffer.ByteBuf buffer
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0  buffer  Lio/netty/buffer/ByteBuf;
    MethodParameters:
        Name  Flags
      buffer  

  static io.netty.buffer.ByteBuf toBase64(io.netty.buffer.ByteBufAllocator, io.netty.buffer.ByteBuf);
    descriptor: (Lio/netty/buffer/ByteBufAllocator;Lio/netty/buffer/ByteBuf;)Lio/netty/buffer/ByteBuf;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // io.netty.buffer.ByteBufAllocator allocator
        start local 1 // io.netty.buffer.ByteBuf src
         0: .line 346
            aload 1 /* src */
            aload 1 /* src */
            invokevirtual io.netty.buffer.ByteBuf.readerIndex:()I
         1: .line 347
            aload 1 /* src */
            invokevirtual io.netty.buffer.ByteBuf.readableBytes:()I
            iconst_1
            getstatic io.netty.handler.codec.base64.Base64Dialect.STANDARD:Lio/netty/handler/codec/base64/Base64Dialect;
            aload 0 /* allocator */
         2: .line 346
            invokestatic io.netty.handler.codec.base64.Base64.encode:(Lio/netty/buffer/ByteBuf;IIZLio/netty/handler/codec/base64/Base64Dialect;Lio/netty/buffer/ByteBufAllocator;)Lio/netty/buffer/ByteBuf;
            astore 2 /* dst */
        start local 2 // io.netty.buffer.ByteBuf dst
         3: .line 348
            aload 1 /* src */
            aload 1 /* src */
            invokevirtual io.netty.buffer.ByteBuf.writerIndex:()I
            invokevirtual io.netty.buffer.ByteBuf.readerIndex:(I)Lio/netty/buffer/ByteBuf;
            pop
         4: .line 349
            aload 2 /* dst */
            areturn
        end local 2 // io.netty.buffer.ByteBuf dst
        end local 1 // io.netty.buffer.ByteBuf src
        end local 0 // io.netty.buffer.ByteBufAllocator allocator
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0  allocator  Lio/netty/buffer/ByteBufAllocator;
            0    5     1        src  Lio/netty/buffer/ByteBuf;
            3    5     2        dst  Lio/netty/buffer/ByteBuf;
    MethodParameters:
           Name  Flags
      allocator  
      src        

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.handler.ssl.SslUtils this
         0: .line 352
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 353
            return
        end local 0 // io.netty.handler.ssl.SslUtils this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/netty/handler/ssl/SslUtils;
}
SourceFile: "SslUtils.java"