class io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec extends io.vertx.mysqlclient.impl.codec.AuthenticationCommandBaseCodec<io.vertx.sqlclient.impl.Connection, io.vertx.mysqlclient.impl.command.InitialHandshakeCommand>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec
  super_class: io.vertx.mysqlclient.impl.codec.AuthenticationCommandBaseCodec
{
  private static final io.vertx.core.impl.logging.Logger LOGGER;
    descriptor: Lio/vertx/core/impl/logging/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

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

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

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

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

  private static volatile int[] $SWITCH_TABLE$io$vertx$mysqlclient$SslMode;
    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 41
            ldc Lio/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec;
            invokestatic io.vertx.core.impl.logging.LoggerFactory.getLogger:(Ljava/lang/Class;)Lio/vertx/core/impl/logging/Logger;
            putstatic io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.LOGGER:Lio/vertx/core/impl/logging/Logger;
         1: .line 47
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(io.vertx.mysqlclient.impl.command.InitialHandshakeCommand);
    descriptor: (Lio/vertx/mysqlclient/impl/command/InitialHandshakeCommand;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec this
        start local 1 // io.vertx.mysqlclient.impl.command.InitialHandshakeCommand cmd
         0: .line 52
            aload 0 /* this */
            aload 1 /* cmd */
            invokespecial io.vertx.mysqlclient.impl.codec.AuthenticationCommandBaseCodec.<init>:(Lio/vertx/mysqlclient/impl/command/AuthenticationCommandBase;)V
         1: .line 49
            aload 0 /* this */
            iconst_0
            putfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.status:I
         2: .line 53
            return
        end local 1 // io.vertx.mysqlclient.impl.command.InitialHandshakeCommand cmd
        end local 0 // io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec;
            0    3     1   cmd  Lio/vertx/mysqlclient/impl/command/InitialHandshakeCommand;
    MethodParameters:
      Name  Flags
      cmd   

  void decodePayload(io.netty.buffer.ByteBuf, int);
    descriptor: (Lio/netty/buffer/ByteBuf;I)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec this
        start local 1 // io.netty.buffer.ByteBuf payload
        start local 2 // int payloadLength
         0: .line 57
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.status:I
            tableswitch { // 0 - 1
                    0: 1
                    1: 4
              default: 5
          }
         1: .line 59
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* payload */
            invokevirtual io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.handleInitialHandshake:(Lio/netty/buffer/ByteBuf;)V
         2: .line 60
            aload 0 /* this */
            iconst_1
            putfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.status:I
         3: .line 61
            goto 5
         4: .line 63
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* payload */
            invokevirtual io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.handleAuthentication:(Lio/netty/buffer/ByteBuf;)V
         5: .line 66
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int payloadLength
        end local 1 // io.netty.buffer.ByteBuf payload
        end local 0 // io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0           this  Lio/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec;
            0    6     1        payload  Lio/netty/buffer/ByteBuf;
            0    6     2  payloadLength  I
    MethodParameters:
               Name  Flags
      payload        
      payloadLength  

  private void handleInitialHandshake(io.netty.buffer.ByteBuf);
    descriptor: (Lio/netty/buffer/ByteBuf;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=12, args_size=2
        start local 0 // io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec this
        start local 1 // io.netty.buffer.ByteBuf payload
         0: .line 69
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.encoder:Lio/vertx/mysqlclient/impl/codec/MySQLEncoder;
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.InitialHandshakeCommand
            invokevirtual io.vertx.mysqlclient.impl.command.InitialHandshakeCommand.initialCapabilitiesFlags:()I
            putfield io.vertx.mysqlclient.impl.codec.MySQLEncoder.clientCapabilitiesFlag:I
         1: .line 70
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.encoder:Lio/vertx/mysqlclient/impl/codec/MySQLEncoder;
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.InitialHandshakeCommand
            invokevirtual io.vertx.mysqlclient.impl.command.InitialHandshakeCommand.charsetEncoding:()Ljava/nio/charset/Charset;
            putfield io.vertx.mysqlclient.impl.codec.MySQLEncoder.encodingCharset:Ljava/nio/charset/Charset;
         2: .line 71
            aload 1 /* payload */
            invokevirtual io.netty.buffer.ByteBuf.readUnsignedByte:()S
            pop
         3: .line 73
            aload 1 /* payload */
            getstatic java.nio.charset.StandardCharsets.US_ASCII:Ljava/nio/charset/Charset;
            invokestatic io.vertx.mysqlclient.impl.util.BufferUtils.readNullTerminatedString:(Lio/netty/buffer/ByteBuf;Ljava/nio/charset/Charset;)Ljava/lang/String;
            astore 2 /* serverVersion */
        start local 2 // java.lang.String serverVersion
         4: .line 74
            aload 2 /* serverVersion */
            invokestatic io.vertx.mysqlclient.impl.MySQLDatabaseMetadata.parse:(Ljava/lang/String;)Lio/vertx/mysqlclient/impl/MySQLDatabaseMetadata;
            astore 3 /* md */
        start local 3 // io.vertx.mysqlclient.impl.MySQLDatabaseMetadata md
         5: .line 75
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.encoder:Lio/vertx/mysqlclient/impl/codec/MySQLEncoder;
            getfield io.vertx.mysqlclient.impl.codec.MySQLEncoder.socketConnection:Lio/vertx/mysqlclient/impl/MySQLSocketConnection;
            aload 3 /* md */
            putfield io.vertx.mysqlclient.impl.MySQLSocketConnection.metaData:Lio/vertx/mysqlclient/impl/MySQLDatabaseMetadata;
         6: .line 76
            aload 3 /* md */
            invokevirtual io.vertx.mysqlclient.impl.MySQLDatabaseMetadata.majorVersion:()I
            iconst_5
            if_icmpne 8
         7: .line 77
            aload 3 /* md */
            invokevirtual io.vertx.mysqlclient.impl.MySQLDatabaseMetadata.minorVersion:()I
            bipush 7
            if_icmplt 9
            aload 3 /* md */
            invokevirtual io.vertx.mysqlclient.impl.MySQLDatabaseMetadata.minorVersion:()I
            bipush 7
            if_icmpne 8
            aload 3 /* md */
            invokevirtual io.vertx.mysqlclient.impl.MySQLDatabaseMetadata.microVersion:()I
            iconst_5
            if_icmplt 9
         8: .line 80
      StackMap locals: java.lang.String io.vertx.mysqlclient.impl.MySQLDatabaseMetadata
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.encoder:Lio/vertx/mysqlclient/impl/codec/MySQLEncoder;
            dup
            getfield io.vertx.mysqlclient.impl.codec.MySQLEncoder.clientCapabilitiesFlag:I
            ldc 16777216
            ior
            putfield io.vertx.mysqlclient.impl.codec.MySQLEncoder.clientCapabilitiesFlag:I
         9: .line 83
      StackMap locals:
      StackMap stack:
            aload 1 /* payload */
            invokevirtual io.netty.buffer.ByteBuf.readUnsignedIntLE:()J
            pop2
        10: .line 86
            aload 0 /* this */
            bipush 20
            newarray 8
            putfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.authPluginData:[B
        11: .line 87
            aload 1 /* payload */
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.authPluginData:[B
            iconst_0
            bipush 8
            invokevirtual io.netty.buffer.ByteBuf.readBytes:([BII)Lio/netty/buffer/ByteBuf;
            pop
        12: .line 90
            aload 1 /* payload */
            invokevirtual io.netty.buffer.ByteBuf.readByte:()B
            pop
        13: .line 93
            aload 1 /* payload */
            invokevirtual io.netty.buffer.ByteBuf.readUnsignedShortLE:()I
            istore 4 /* lowerServerCapabilitiesFlags */
        start local 4 // int lowerServerCapabilitiesFlags
        14: .line 95
            aload 1 /* payload */
            invokevirtual io.netty.buffer.ByteBuf.readUnsignedByte:()S
            pop
        15: .line 97
            aload 1 /* payload */
            invokevirtual io.netty.buffer.ByteBuf.readUnsignedShortLE:()I
            pop
        16: .line 100
            aload 1 /* payload */
            invokevirtual io.netty.buffer.ByteBuf.readUnsignedShortLE:()I
            istore 5 /* capabilityFlagsUpper */
        start local 5 // int capabilityFlagsUpper
        17: .line 101
            iload 4 /* lowerServerCapabilitiesFlags */
            iload 5 /* capabilityFlagsUpper */
            bipush 16
            ishl
            ior
            istore 6 /* serverCapabilitiesFlags */
        start local 6 // int serverCapabilitiesFlags
        18: .line 105
            iload 6 /* serverCapabilitiesFlags */
            ldc 524288
            iand
            ifeq 19
            iconst_1
            goto 20
      StackMap locals: int int int
      StackMap stack:
        19: iconst_0
      StackMap locals:
      StackMap stack: int
        20: istore 8 /* isClientPluginAuthSupported */
        start local 8 // boolean isClientPluginAuthSupported
        21: .line 106
            iload 8 /* isClientPluginAuthSupported */
            ifeq 24
        22: .line 107
            aload 1 /* payload */
            invokevirtual io.netty.buffer.ByteBuf.readUnsignedByte:()S
            istore 7 /* lenOfAuthPluginData */
        start local 7 // short lenOfAuthPluginData
        23: .line 108
            goto 26
        end local 7 // short lenOfAuthPluginData
        24: .line 109
      StackMap locals: io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec io.netty.buffer.ByteBuf java.lang.String io.vertx.mysqlclient.impl.MySQLDatabaseMetadata int int int top int
      StackMap stack:
            aload 1 /* payload */
            aload 1 /* payload */
            invokevirtual io.netty.buffer.ByteBuf.readerIndex:()I
            iconst_1
            iadd
            invokevirtual io.netty.buffer.ByteBuf.readerIndex:(I)Lio/netty/buffer/ByteBuf;
            pop
        25: .line 110
            iconst_0
            istore 7 /* lenOfAuthPluginData */
        start local 7 // short lenOfAuthPluginData
        26: .line 114
      StackMap locals: io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec io.netty.buffer.ByteBuf java.lang.String io.vertx.mysqlclient.impl.MySQLDatabaseMetadata int int int int int
      StackMap stack:
            aload 1 /* payload */
            aload 1 /* payload */
            invokevirtual io.netty.buffer.ByteBuf.readerIndex:()I
            bipush 10
            iadd
            invokevirtual io.netty.buffer.ByteBuf.readerIndex:(I)Lio/netty/buffer/ByteBuf;
            pop
        27: .line 117
            aload 1 /* payload */
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.authPluginData:[B
            bipush 8
            bipush 12
            iload 7 /* lenOfAuthPluginData */
            bipush 9
            isub
            invokestatic java.lang.Math.max:(II)I
            invokevirtual io.netty.buffer.ByteBuf.readBytes:([BII)Lio/netty/buffer/ByteBuf;
            pop
        28: .line 118
            aload 1 /* payload */
            invokevirtual io.netty.buffer.ByteBuf.readByte:()B
            pop
        29: .line 121
            aload 1 /* payload */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokestatic io.vertx.mysqlclient.impl.util.BufferUtils.readNullTerminatedString:(Lio/netty/buffer/ByteBuf;Ljava/nio/charset/Charset;)Ljava/lang/String;
            astore 9 /* serverAuthPluginName */
        start local 9 // java.lang.String serverAuthPluginName
        30: .line 124
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.InitialHandshakeCommand
            invokevirtual io.vertx.mysqlclient.impl.command.InitialHandshakeCommand.sslMode:()Lio/vertx/mysqlclient/SslMode;
            astore 11 /* sslMode */
        start local 11 // io.vertx.mysqlclient.SslMode sslMode
        31: .line 125
            invokestatic io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.$SWITCH_TABLE$io$vertx$mysqlclient$SslMode:()[I
            aload 11 /* sslMode */
            invokevirtual io.vertx.mysqlclient.SslMode.ordinal:()I
            iaload
            tableswitch { // 1 - 5
                    1: 32
                    2: 34
                    3: 36
                    4: 36
                    5: 36
              default: 38
          }
        32: .line 127
      StackMap locals: io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec io.netty.buffer.ByteBuf java.lang.String io.vertx.mysqlclient.impl.MySQLDatabaseMetadata int int int int int java.lang.String top io.vertx.mysqlclient.SslMode
      StackMap stack:
            iconst_0
            istore 10 /* upgradeToSsl */
        start local 10 // boolean upgradeToSsl
        33: .line 128
            goto 40
        end local 10 // boolean upgradeToSsl
        34: .line 130
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 6 /* serverCapabilitiesFlags */
            invokevirtual io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.isTlsSupportedByServer:(I)Z
            istore 10 /* upgradeToSsl */
        start local 10 // boolean upgradeToSsl
        35: .line 131
            goto 40
        end local 10 // boolean upgradeToSsl
        36: .line 135
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 10 /* upgradeToSsl */
        start local 10 // boolean upgradeToSsl
        37: .line 136
            goto 40
        end local 10 // boolean upgradeToSsl
        38: .line 138
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.completionHandler:Lio/vertx/core/Handler;
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unknown SSL mode to handle: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 11 /* sslMode */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            invokestatic io.vertx.sqlclient.impl.command.CommandResponse.failure:(Ljava/lang/Throwable;)Lio/vertx/sqlclient/impl/command/CommandResponse;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        39: .line 139
            return
        start local 10 // boolean upgradeToSsl
        40: .line 142
      StackMap locals: io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec io.netty.buffer.ByteBuf java.lang.String io.vertx.mysqlclient.impl.MySQLDatabaseMetadata int int int int int java.lang.String int io.vertx.mysqlclient.SslMode
      StackMap stack:
            iload 10 /* upgradeToSsl */
            ifeq 45
        41: .line 143
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.encoder:Lio/vertx/mysqlclient/impl/codec/MySQLEncoder;
            dup
            getfield io.vertx.mysqlclient.impl.codec.MySQLEncoder.clientCapabilitiesFlag:I
            sipush 2048
            ior
            putfield io.vertx.mysqlclient.impl.codec.MySQLEncoder.clientCapabilitiesFlag:I
        42: .line 144
            aload 0 /* this */
            invokevirtual io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.sendSslRequest:()V
        43: .line 146
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.encoder:Lio/vertx/mysqlclient/impl/codec/MySQLEncoder;
            getfield io.vertx.mysqlclient.impl.codec.MySQLEncoder.socketConnection:Lio/vertx/mysqlclient/impl/MySQLSocketConnection;
            aload 0 /* this */
            aload 9 /* serverAuthPluginName */
            iload 6 /* serverCapabilitiesFlags */
            invokedynamic handle(Lio/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec;Ljava/lang/String;I)Lio/vertx/core/Handler;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  io/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec.lambda$0(Ljava/lang/String;ILio/vertx/core/AsyncResult;)V (7)
                  (Lio/vertx/core/AsyncResult;)V
            invokevirtual io.vertx.mysqlclient.impl.MySQLSocketConnection.upgradeToSsl:(Lio/vertx/core/Handler;)V
        44: .line 153
            goto 46
        45: .line 154
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 9 /* serverAuthPluginName */
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.InitialHandshakeCommand
            invokevirtual io.vertx.mysqlclient.impl.command.InitialHandshakeCommand.authenticationPlugin:()Lio/vertx/mysqlclient/MySQLAuthenticationPlugin;
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.authPluginData:[B
            iload 6 /* serverCapabilitiesFlags */
            invokevirtual io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.doSendHandshakeResponseMessage:(Ljava/lang/String;Lio/vertx/mysqlclient/MySQLAuthenticationPlugin;[BI)V
        46: .line 156
      StackMap locals:
      StackMap stack:
            return
        end local 11 // io.vertx.mysqlclient.SslMode sslMode
        end local 10 // boolean upgradeToSsl
        end local 9 // java.lang.String serverAuthPluginName
        end local 8 // boolean isClientPluginAuthSupported
        end local 7 // short lenOfAuthPluginData
        end local 6 // int serverCapabilitiesFlags
        end local 5 // int capabilityFlagsUpper
        end local 4 // int lowerServerCapabilitiesFlags
        end local 3 // io.vertx.mysqlclient.impl.MySQLDatabaseMetadata md
        end local 2 // java.lang.String serverVersion
        end local 1 // io.netty.buffer.ByteBuf payload
        end local 0 // io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec this
      LocalVariableTable:
        Start  End  Slot                          Name  Signature
            0   47     0                          this  Lio/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec;
            0   47     1                       payload  Lio/netty/buffer/ByteBuf;
            4   47     2                 serverVersion  Ljava/lang/String;
            5   47     3                            md  Lio/vertx/mysqlclient/impl/MySQLDatabaseMetadata;
           14   47     4  lowerServerCapabilitiesFlags  I
           17   47     5          capabilityFlagsUpper  I
           18   47     6       serverCapabilitiesFlags  I
           23   24     7           lenOfAuthPluginData  S
           26   47     7           lenOfAuthPluginData  S
           21   47     8   isClientPluginAuthSupported  Z
           30   47     9          serverAuthPluginName  Ljava/lang/String;
           33   34    10                  upgradeToSsl  Z
           35   36    10                  upgradeToSsl  Z
           37   38    10                  upgradeToSsl  Z
           40   47    10                  upgradeToSsl  Z
           31   47    11                       sslMode  Lio/vertx/mysqlclient/SslMode;
    MethodParameters:
         Name  Flags
      payload  

  private void doSendHandshakeResponseMessage(java.lang.String, io.vertx.mysqlclient.MySQLAuthenticationPlugin, byte[], int);
    descriptor: (Ljava/lang/String;Lio/vertx/mysqlclient/MySQLAuthenticationPlugin;[BI)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=7, args_size=5
        start local 0 // io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec this
        start local 1 // java.lang.String serverAuthPluginName
        start local 2 // io.vertx.mysqlclient.MySQLAuthenticationPlugin authPlugin
        start local 3 // byte[] nonce
        start local 4 // int serverCapabilitiesFlags
         0: .line 159
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.InitialHandshakeCommand
            invokevirtual io.vertx.mysqlclient.impl.command.InitialHandshakeCommand.connectionAttributes:()Ljava/util/Map;
            astore 5 /* clientConnectionAttributes */
        start local 5 // java.util.Map clientConnectionAttributes
         1: .line 160
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.encoder:Lio/vertx/mysqlclient/impl/codec/MySQLEncoder;
            dup
            getfield io.vertx.mysqlclient.impl.codec.MySQLEncoder.clientCapabilitiesFlag:I
            iload 4 /* serverCapabilitiesFlags */
            iand
            putfield io.vertx.mysqlclient.impl.codec.MySQLEncoder.clientCapabilitiesFlag:I
         2: .line 161
            aload 2 /* authPlugin */
            getstatic io.vertx.mysqlclient.MySQLAuthenticationPlugin.DEFAULT:Lio/vertx/mysqlclient/MySQLAuthenticationPlugin;
            if_acmpne 3
            aload 1 /* serverAuthPluginName */
            goto 4
      StackMap locals: java.util.Map
      StackMap stack:
         3: aload 2 /* authPlugin */
            getfield io.vertx.mysqlclient.MySQLAuthenticationPlugin.value:Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
         4: astore 6 /* clientPluginName */
        start local 6 // java.lang.String clientPluginName
         5: .line 162
            aload 0 /* this */
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.InitialHandshakeCommand
            invokevirtual io.vertx.mysqlclient.impl.command.InitialHandshakeCommand.username:()Ljava/lang/String;
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.InitialHandshakeCommand
            invokevirtual io.vertx.mysqlclient.impl.command.InitialHandshakeCommand.password:()Ljava/lang/String;
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.InitialHandshakeCommand
            invokevirtual io.vertx.mysqlclient.impl.command.InitialHandshakeCommand.database:()Ljava/lang/String;
            aload 3 /* nonce */
            aload 6 /* clientPluginName */
            aload 5 /* clientConnectionAttributes */
            invokevirtual io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.sendHandshakeResponseMessage:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BLjava/lang/String;Ljava/util/Map;)V
         6: .line 163
            return
        end local 6 // java.lang.String clientPluginName
        end local 5 // java.util.Map clientConnectionAttributes
        end local 4 // int serverCapabilitiesFlags
        end local 3 // byte[] nonce
        end local 2 // io.vertx.mysqlclient.MySQLAuthenticationPlugin authPlugin
        end local 1 // java.lang.String serverAuthPluginName
        end local 0 // io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec this
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0    7     0                        this  Lio/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec;
            0    7     1        serverAuthPluginName  Ljava/lang/String;
            0    7     2                  authPlugin  Lio/vertx/mysqlclient/MySQLAuthenticationPlugin;
            0    7     3                       nonce  [B
            0    7     4     serverCapabilitiesFlags  I
            1    7     5  clientConnectionAttributes  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            5    7     6            clientPluginName  Ljava/lang/String;
    MethodParameters:
                         Name  Flags
      serverAuthPluginName     
      authPlugin               
      nonce                    
      serverCapabilitiesFlags  

  private void handleAuthentication(io.netty.buffer.ByteBuf);
    descriptor: (Lio/netty/buffer/ByteBuf;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec this
        start local 1 // io.netty.buffer.ByteBuf payload
         0: .line 166
            aload 1 /* payload */
            aload 1 /* payload */
            invokevirtual io.netty.buffer.ByteBuf.readerIndex:()I
            invokevirtual io.netty.buffer.ByteBuf.getUnsignedByte:(I)S
            istore 2 /* header */
        start local 2 // int header
         1: .line 167
            iload 2 /* header */
            lookupswitch { // 4
                    0: 2
                    1: 9
                  254: 7
                  255: 5
              default: 11
          }
         2: .line 169
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iconst_2
            putfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.status:I
         3: .line 170
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.completionHandler:Lio/vertx/core/Handler;
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.InitialHandshakeCommand
            invokevirtual io.vertx.mysqlclient.impl.command.InitialHandshakeCommand.connection:()Lio/vertx/sqlclient/impl/SocketConnectionBase;
            invokestatic io.vertx.sqlclient.impl.command.CommandResponse.success:(Ljava/lang/Object;)Lio/vertx/sqlclient/impl/command/CommandResponse;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         4: .line 171
            goto 12
         5: .line 173
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* payload */
            invokevirtual io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.handleErrorPacketPayload:(Lio/netty/buffer/ByteBuf;)V
         6: .line 174
            goto 12
         7: .line 176
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.InitialHandshakeCommand
            invokevirtual io.vertx.mysqlclient.impl.command.InitialHandshakeCommand.password:()Ljava/lang/String;
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            aload 1 /* payload */
            invokevirtual io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.handleAuthSwitchRequest:([BLio/netty/buffer/ByteBuf;)V
         8: .line 177
            goto 12
         9: .line 179
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.InitialHandshakeCommand
            invokevirtual io.vertx.mysqlclient.impl.command.InitialHandshakeCommand.password:()Ljava/lang/String;
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            aload 1 /* payload */
            invokevirtual io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.handleAuthMoreData:([BLio/netty/buffer/ByteBuf;)V
        10: .line 180
            goto 12
        11: .line 182
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.completionHandler:Lio/vertx/core/Handler;
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unhandled state with header: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* header */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            invokestatic io.vertx.sqlclient.impl.command.CommandResponse.failure:(Ljava/lang/Throwable;)Lio/vertx/sqlclient/impl/command/CommandResponse;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        12: .line 184
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int header
        end local 1 // io.netty.buffer.ByteBuf payload
        end local 0 // io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   13     0     this  Lio/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec;
            0   13     1  payload  Lio/netty/buffer/ByteBuf;
            1   13     2   header  I
    MethodParameters:
         Name  Flags
      payload  

  private void handleAuthSwitchRequest(byte[], io.netty.buffer.ByteBuf);
    descriptor: ([BLio/netty/buffer/ByteBuf;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=7, args_size=3
        start local 0 // io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec this
        start local 1 // byte[] password
        start local 2 // io.netty.buffer.ByteBuf payload
         0: .line 188
            aload 2 /* payload */
            iconst_1
            invokevirtual io.netty.buffer.ByteBuf.skipBytes:(I)Lio/netty/buffer/ByteBuf;
            pop
         1: .line 189
            aload 2 /* payload */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokestatic io.vertx.mysqlclient.impl.util.BufferUtils.readNullTerminatedString:(Lio/netty/buffer/ByteBuf;Ljava/nio/charset/Charset;)Ljava/lang/String;
            astore 3 /* pluginName */
        start local 3 // java.lang.String pluginName
         2: .line 190
            bipush 20
            newarray 8
            astore 4 /* nonce */
        start local 4 // byte[] nonce
         3: .line 191
            aload 2 /* payload */
            aload 4 /* nonce */
            invokevirtual io.netty.buffer.ByteBuf.readBytes:([B)Lio/netty/buffer/ByteBuf;
            pop
         4: .line 193
            aload 3 /* pluginName */
            dup
            astore 6
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 3
          -1232755404: 5
          -1034481270: 6
           2050512934: 7
              default: 14
          }
      StackMap locals: io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec byte[] io.netty.buffer.ByteBuf java.lang.String byte[] top java.lang.String
      StackMap stack:
         5: aload 6
            ldc "caching_sha2_password"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
            goto 14
      StackMap locals:
      StackMap stack:
         6: aload 6
            ldc "mysql_clear_password"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 12
            goto 14
      StackMap locals:
      StackMap stack:
         7: aload 6
            ldc "mysql_native_password"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 8
            goto 14
         8: .line 195
      StackMap locals:
      StackMap stack:
            aload 1 /* password */
            aload 4 /* nonce */
            invokestatic io.vertx.mysqlclient.impl.util.Native41Authenticator.encode:([B[B)[B
            astore 5 /* authResponse */
        start local 5 // byte[] authResponse
         9: .line 196
            goto 16
        end local 5 // byte[] authResponse
        10: .line 198
      StackMap locals:
      StackMap stack:
            aload 1 /* password */
            aload 4 /* nonce */
            invokestatic io.vertx.mysqlclient.impl.util.CachingSha2Authenticator.encode:([B[B)[B
            astore 5 /* authResponse */
        start local 5 // byte[] authResponse
        11: .line 199
            goto 16
        end local 5 // byte[] authResponse
        12: .line 201
      StackMap locals:
      StackMap stack:
            aload 1 /* password */
            astore 5 /* authResponse */
        start local 5 // byte[] authResponse
        13: .line 202
            goto 16
        end local 5 // byte[] authResponse
        14: .line 204
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.completionHandler:Lio/vertx/core/Handler;
            new java.lang.UnsupportedOperationException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unsupported authentication method: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* pluginName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            invokestatic io.vertx.sqlclient.impl.command.CommandResponse.failure:(Ljava/lang/Throwable;)Lio/vertx/sqlclient/impl/command/CommandResponse;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        15: .line 205
            return
        start local 5 // byte[] authResponse
        16: .line 207
      StackMap locals: io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec byte[] io.netty.buffer.ByteBuf java.lang.String byte[] byte[]
      StackMap stack:
            aload 0 /* this */
            aload 5 /* authResponse */
            invokevirtual io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.sendBytesAsPacket:([B)V
        17: .line 208
            return
        end local 5 // byte[] authResponse
        end local 4 // byte[] nonce
        end local 3 // java.lang.String pluginName
        end local 2 // io.netty.buffer.ByteBuf payload
        end local 1 // byte[] password
        end local 0 // io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   18     0          this  Lio/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec;
            0   18     1      password  [B
            0   18     2       payload  Lio/netty/buffer/ByteBuf;
            2   18     3    pluginName  Ljava/lang/String;
            3   18     4         nonce  [B
            9   10     5  authResponse  [B
           11   12     5  authResponse  [B
           13   14     5  authResponse  [B
           16   18     5  authResponse  [B
    MethodParameters:
          Name  Flags
      password  
      payload   

  private void sendSslRequest();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec this
         0: .line 211
            aload 0 /* this */
            bipush 36
            invokevirtual io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.allocateBuffer:(I)Lio/netty/buffer/ByteBuf;
            astore 1 /* packet */
        start local 1 // io.netty.buffer.ByteBuf packet
         1: .line 213
            aload 1 /* packet */
            bipush 32
            invokevirtual io.netty.buffer.ByteBuf.writeMediumLE:(I)Lio/netty/buffer/ByteBuf;
            pop
         2: .line 214
            aload 1 /* packet */
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.sequenceId:I
            invokevirtual io.netty.buffer.ByteBuf.writeByte:(I)Lio/netty/buffer/ByteBuf;
            pop
         3: .line 217
            aload 1 /* packet */
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.encoder:Lio/vertx/mysqlclient/impl/codec/MySQLEncoder;
            getfield io.vertx.mysqlclient.impl.codec.MySQLEncoder.clientCapabilitiesFlag:I
            invokevirtual io.netty.buffer.ByteBuf.writeIntLE:(I)Lio/netty/buffer/ByteBuf;
            pop
         4: .line 218
            aload 1 /* packet */
            ldc 16777215
            invokevirtual io.netty.buffer.ByteBuf.writeIntLE:(I)Lio/netty/buffer/ByteBuf;
            pop
         5: .line 219
            aload 1 /* packet */
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.InitialHandshakeCommand
            invokevirtual io.vertx.mysqlclient.impl.command.InitialHandshakeCommand.collation:()Lio/vertx/mysqlclient/impl/MySQLCollation;
            invokevirtual io.vertx.mysqlclient.impl.MySQLCollation.collationId:()I
            invokevirtual io.netty.buffer.ByteBuf.writeByte:(I)Lio/netty/buffer/ByteBuf;
            pop
         6: .line 220
            aload 1 /* packet */
            bipush 23
            invokevirtual io.netty.buffer.ByteBuf.writeZero:(I)Lio/netty/buffer/ByteBuf;
            pop
         7: .line 222
            aload 0 /* this */
            aload 1 /* packet */
            invokevirtual io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.sendNonSplitPacket:(Lio/netty/buffer/ByteBuf;)V
         8: .line 223
            return
        end local 1 // io.netty.buffer.ByteBuf packet
        end local 0 // io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Lio/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec;
            1    9     1  packet  Lio/netty/buffer/ByteBuf;

  private void sendHandshakeResponseMessage(java.lang.String, java.lang.String, java.lang.String, byte[], java.lang.String, java.util.Map<java.lang.String, java.lang.String>);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BLjava/lang/String;Ljava/util/Map;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=13, args_size=7
        start local 0 // io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec this
        start local 1 // java.lang.String username
        start local 2 // java.lang.String password
        start local 3 // java.lang.String database
        start local 4 // byte[] nonce
        start local 5 // java.lang.String clientPluginName
        start local 6 // java.util.Map clientConnectionAttributes
         0: .line 226
            aload 0 /* this */
            invokevirtual io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.allocateBuffer:()Lio/netty/buffer/ByteBuf;
            astore 7 /* packet */
        start local 7 // io.netty.buffer.ByteBuf packet
         1: .line 228
            aload 7 /* packet */
            invokevirtual io.netty.buffer.ByteBuf.writerIndex:()I
            istore 8 /* packetStartIdx */
        start local 8 // int packetStartIdx
         2: .line 229
            aload 7 /* packet */
            iconst_0
            invokevirtual io.netty.buffer.ByteBuf.writeMediumLE:(I)Lio/netty/buffer/ByteBuf;
            pop
         3: .line 230
            aload 7 /* packet */
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.sequenceId:I
            invokevirtual io.netty.buffer.ByteBuf.writeByte:(I)Lio/netty/buffer/ByteBuf;
            pop
         4: .line 233
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.encoder:Lio/vertx/mysqlclient/impl/codec/MySQLEncoder;
            getfield io.vertx.mysqlclient.impl.codec.MySQLEncoder.clientCapabilitiesFlag:I
            istore 9 /* clientCapabilitiesFlags */
        start local 9 // int clientCapabilitiesFlags
         5: .line 234
            aload 7 /* packet */
            iload 9 /* clientCapabilitiesFlags */
            invokevirtual io.netty.buffer.ByteBuf.writeIntLE:(I)Lio/netty/buffer/ByteBuf;
            pop
         6: .line 235
            aload 7 /* packet */
            ldc 16777215
            invokevirtual io.netty.buffer.ByteBuf.writeIntLE:(I)Lio/netty/buffer/ByteBuf;
            pop
         7: .line 236
            aload 7 /* packet */
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.InitialHandshakeCommand
            invokevirtual io.vertx.mysqlclient.impl.command.InitialHandshakeCommand.collation:()Lio/vertx/mysqlclient/impl/MySQLCollation;
            invokevirtual io.vertx.mysqlclient.impl.MySQLCollation.collationId:()I
            invokevirtual io.netty.buffer.ByteBuf.writeByte:(I)Lio/netty/buffer/ByteBuf;
            pop
         8: .line 237
            aload 7 /* packet */
            bipush 23
            invokevirtual io.netty.buffer.ByteBuf.writeZero:(I)Lio/netty/buffer/ByteBuf;
            pop
         9: .line 238
            aload 7 /* packet */
            aload 1 /* username */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokestatic io.vertx.mysqlclient.impl.util.BufferUtils.writeNullTerminatedString:(Lio/netty/buffer/ByteBuf;Ljava/lang/CharSequence;Ljava/nio/charset/Charset;)V
        10: .line 239
            aload 5 /* clientPluginName */
            astore 10 /* authMethod */
        start local 10 // java.lang.String authMethod
        11: .line 240
            aload 2 /* password */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 14
        12: .line 241
            aload 7 /* packet */
            iconst_0
            invokevirtual io.netty.buffer.ByteBuf.writeByte:(I)Lio/netty/buffer/ByteBuf;
            pop
        13: .line 242
            goto 36
        14: .line 244
      StackMap locals: io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec java.lang.String java.lang.String java.lang.String byte[] java.lang.String java.util.Map io.netty.buffer.ByteBuf int int java.lang.String
      StackMap stack:
            aload 10 /* authMethod */
            dup
            astore 12
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 3
          -1232755404: 15
          -1034481270: 16
           2050512934: 17
              default: 24
          }
      StackMap locals: io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec java.lang.String java.lang.String java.lang.String byte[] java.lang.String java.util.Map io.netty.buffer.ByteBuf int int java.lang.String top java.lang.String
      StackMap stack:
        15: aload 12
            ldc "caching_sha2_password"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 20
            goto 24
      StackMap locals:
      StackMap stack:
        16: aload 12
            ldc "mysql_clear_password"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 22
            goto 24
      StackMap locals:
      StackMap stack:
        17: aload 12
            ldc "mysql_native_password"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 18
            goto 24
        18: .line 246
      StackMap locals:
      StackMap stack:
            aload 2 /* password */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            aload 4 /* nonce */
            invokestatic io.vertx.mysqlclient.impl.util.Native41Authenticator.encode:([B[B)[B
            astore 11 /* authResponse */
        start local 11 // byte[] authResponse
        19: .line 247
            goto 27
        end local 11 // byte[] authResponse
        20: .line 249
      StackMap locals:
      StackMap stack:
            aload 2 /* password */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            aload 4 /* nonce */
            invokestatic io.vertx.mysqlclient.impl.util.CachingSha2Authenticator.encode:([B[B)[B
            astore 11 /* authResponse */
        start local 11 // byte[] authResponse
        21: .line 250
            goto 27
        end local 11 // byte[] authResponse
        22: .line 252
      StackMap locals:
      StackMap stack:
            aload 2 /* password */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            astore 11 /* authResponse */
        start local 11 // byte[] authResponse
        23: .line 253
            goto 27
        end local 11 // byte[] authResponse
        24: .line 255
      StackMap locals:
      StackMap stack:
            getstatic io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.LOGGER:Lio/vertx/core/impl/logging/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Unknown authentication method: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 10 /* authMethod */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ", the client will try to use mysql_native_password instead."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface io.vertx.core.impl.logging.Logger.warn:(Ljava/lang/Object;)V
        25: .line 256
            ldc "mysql_native_password"
            astore 10 /* authMethod */
        26: .line 257
            aload 2 /* password */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            aload 4 /* nonce */
            invokestatic io.vertx.mysqlclient.impl.util.Native41Authenticator.encode:([B[B)[B
            astore 11 /* authResponse */
        start local 11 // byte[] authResponse
        27: .line 260
      StackMap locals: io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec java.lang.String java.lang.String java.lang.String byte[] java.lang.String java.util.Map io.netty.buffer.ByteBuf int int java.lang.String byte[]
      StackMap stack:
            iload 9 /* clientCapabilitiesFlags */
            ldc 2097152
            iand
            ifeq 31
        28: .line 261
            aload 7 /* packet */
            aload 11 /* authResponse */
            arraylength
            i2l
            invokestatic io.vertx.mysqlclient.impl.util.BufferUtils.writeLengthEncodedInteger:(Lio/netty/buffer/ByteBuf;J)V
        29: .line 262
            aload 7 /* packet */
            aload 11 /* authResponse */
            invokevirtual io.netty.buffer.ByteBuf.writeBytes:([B)Lio/netty/buffer/ByteBuf;
            pop
        30: .line 263
            goto 36
      StackMap locals:
      StackMap stack:
        31: iload 9 /* clientCapabilitiesFlags */
            ldc 32768
            iand
            ifeq 35
        32: .line 264
            aload 7 /* packet */
            aload 11 /* authResponse */
            arraylength
            invokevirtual io.netty.buffer.ByteBuf.writeByte:(I)Lio/netty/buffer/ByteBuf;
            pop
        33: .line 265
            aload 7 /* packet */
            aload 11 /* authResponse */
            invokevirtual io.netty.buffer.ByteBuf.writeBytes:([B)Lio/netty/buffer/ByteBuf;
            pop
        34: .line 266
            goto 36
        35: .line 267
      StackMap locals:
      StackMap stack:
            aload 7 /* packet */
            iconst_0
            invokevirtual io.netty.buffer.ByteBuf.writeByte:(I)Lio/netty/buffer/ByteBuf;
            pop
        end local 11 // byte[] authResponse
        36: .line 270
      StackMap locals:
      StackMap stack:
            iload 9 /* clientCapabilitiesFlags */
            bipush 8
            iand
            ifeq 38
        37: .line 271
            aload 7 /* packet */
            aload 3 /* database */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokestatic io.vertx.mysqlclient.impl.util.BufferUtils.writeNullTerminatedString:(Lio/netty/buffer/ByteBuf;Ljava/lang/CharSequence;Ljava/nio/charset/Charset;)V
        38: .line 273
      StackMap locals:
      StackMap stack:
            iload 9 /* clientCapabilitiesFlags */
            ldc 524288
            iand
            ifeq 40
        39: .line 274
            aload 7 /* packet */
            aload 10 /* authMethod */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokestatic io.vertx.mysqlclient.impl.util.BufferUtils.writeNullTerminatedString:(Lio/netty/buffer/ByteBuf;Ljava/lang/CharSequence;Ljava/nio/charset/Charset;)V
        40: .line 276
      StackMap locals:
      StackMap stack:
            iload 9 /* clientCapabilitiesFlags */
            ldc 1048576
            iand
            ifeq 42
        41: .line 277
            aload 0 /* this */
            aload 6 /* clientConnectionAttributes */
            aload 7 /* packet */
            invokevirtual io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.encodeConnectionAttributes:(Ljava/util/Map;Lio/netty/buffer/ByteBuf;)V
        42: .line 281
      StackMap locals:
      StackMap stack:
            aload 7 /* packet */
            invokevirtual io.netty.buffer.ByteBuf.writerIndex:()I
            iload 8 /* packetStartIdx */
            isub
            iconst_4
            isub
            istore 11 /* payloadLength */
        start local 11 // int payloadLength
        43: .line 282
            aload 7 /* packet */
            iload 8 /* packetStartIdx */
            iload 11 /* payloadLength */
            invokevirtual io.netty.buffer.ByteBuf.setMediumLE:(II)Lio/netty/buffer/ByteBuf;
            pop
        44: .line 284
            aload 0 /* this */
            aload 7 /* packet */
            iload 11 /* payloadLength */
            invokevirtual io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.sendPacket:(Lio/netty/buffer/ByteBuf;I)V
        45: .line 285
            return
        end local 11 // int payloadLength
        end local 10 // java.lang.String authMethod
        end local 9 // int clientCapabilitiesFlags
        end local 8 // int packetStartIdx
        end local 7 // io.netty.buffer.ByteBuf packet
        end local 6 // java.util.Map clientConnectionAttributes
        end local 5 // java.lang.String clientPluginName
        end local 4 // byte[] nonce
        end local 3 // java.lang.String database
        end local 2 // java.lang.String password
        end local 1 // java.lang.String username
        end local 0 // io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec this
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0   46     0                        this  Lio/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec;
            0   46     1                    username  Ljava/lang/String;
            0   46     2                    password  Ljava/lang/String;
            0   46     3                    database  Ljava/lang/String;
            0   46     4                       nonce  [B
            0   46     5            clientPluginName  Ljava/lang/String;
            0   46     6  clientConnectionAttributes  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            1   46     7                      packet  Lio/netty/buffer/ByteBuf;
            2   46     8              packetStartIdx  I
            5   46     9     clientCapabilitiesFlags  I
           11   46    10                  authMethod  Ljava/lang/String;
           19   20    11                authResponse  [B
           21   22    11                authResponse  [B
           23   24    11                authResponse  [B
           27   36    11                authResponse  [B
           43   46    11               payloadLength  I
    Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BLjava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)V
    MethodParameters:
                            Name  Flags
      username                    
      password                    
      database                    
      nonce                       
      clientPluginName            
      clientConnectionAttributes  

  private boolean isTlsSupportedByServer(int);
    descriptor: (I)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec this
        start local 1 // int serverCapabilitiesFlags
         0: .line 288
            iload 1 /* serverCapabilitiesFlags */
            sipush 2048
            iand
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // int serverCapabilitiesFlags
        end local 0 // io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0    2     0                     this  Lio/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec;
            0    2     1  serverCapabilitiesFlags  I
    MethodParameters:
                         Name  Flags
      serverCapabilitiesFlags  

  static int[] $SWITCH_TABLE$io$vertx$mysqlclient$SslMode();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 39
            getstatic io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.$SWITCH_TABLE$io$vertx$mysqlclient$SslMode:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic io.vertx.mysqlclient.SslMode.values:()[Lio/vertx/mysqlclient/SslMode;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic io.vertx.mysqlclient.SslMode.DISABLED:Lio/vertx/mysqlclient/SslMode;
            invokevirtual io.vertx.mysqlclient.SslMode.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 io.vertx.mysqlclient.SslMode.PREFERRED:Lio/vertx/mysqlclient/SslMode;
            invokevirtual io.vertx.mysqlclient.SslMode.ordinal:()I
            iconst_2
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic io.vertx.mysqlclient.SslMode.REQUIRED:Lio/vertx/mysqlclient/SslMode;
            invokevirtual io.vertx.mysqlclient.SslMode.ordinal:()I
            iconst_3
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic io.vertx.mysqlclient.SslMode.VERIFY_CA:Lio/vertx/mysqlclient/SslMode;
            invokevirtual io.vertx.mysqlclient.SslMode.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 io.vertx.mysqlclient.SslMode.VERIFY_IDENTITY:Lio/vertx/mysqlclient/SslMode;
            invokevirtual io.vertx.mysqlclient.SslMode.ordinal:()I
            iconst_5
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            dup
            putstatic io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.$SWITCH_TABLE$io$vertx$mysqlclient$SslMode:[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

  private void lambda$0(java.lang.String, int, io.vertx.core.AsyncResult);
    descriptor: (Ljava/lang/String;ILio/vertx/core/AsyncResult;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec this
        start local 3 // io.vertx.core.AsyncResult upgrade
         0: .line 147
            aload 3 /* upgrade */
            invokeinterface io.vertx.core.AsyncResult.succeeded:()Z
            ifeq 3
         1: .line 148
            aload 0 /* this */
            aload 1
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.InitialHandshakeCommand
            invokevirtual io.vertx.mysqlclient.impl.command.InitialHandshakeCommand.authenticationPlugin:()Lio/vertx/mysqlclient/MySQLAuthenticationPlugin;
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.authPluginData:[B
            iload 2
            invokevirtual io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.doSendHandshakeResponseMessage:(Ljava/lang/String;Lio/vertx/mysqlclient/MySQLAuthenticationPlugin;[BI)V
         2: .line 149
            goto 4
         3: .line 150
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec.completionHandler:Lio/vertx/core/Handler;
            aload 3 /* upgrade */
            invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
            invokestatic io.vertx.sqlclient.impl.command.CommandResponse.failure:(Ljava/lang/Throwable;)Lio/vertx/sqlclient/impl/command/CommandResponse;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         4: .line 152
      StackMap locals:
      StackMap stack:
            return
        end local 3 // io.vertx.core.AsyncResult upgrade
        end local 0 // io.vertx.mysqlclient.impl.codec.InitialHandshakeCommandCodec this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lio/vertx/mysqlclient/impl/codec/InitialHandshakeCommandCodec;
            0    5     3  upgrade  Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;
}
Signature: Lio/vertx/mysqlclient/impl/codec/AuthenticationCommandBaseCodec<Lio/vertx/sqlclient/impl/Connection;Lio/vertx/mysqlclient/impl/command/InitialHandshakeCommand;>;
SourceFile: "InitialHandshakeCommandCodec.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles