public class io.vertx.mysqlclient.impl.util.Native41Authenticator
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.vertx.mysqlclient.impl.util.Native41Authenticator
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.mysqlclient.impl.util.Native41Authenticator this
         0: .line 7
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // io.vertx.mysqlclient.impl.util.Native41Authenticator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/mysqlclient/impl/util/Native41Authenticator;

  public static byte[] encode(java.lang.String, java.nio.charset.Charset, byte[]);
    descriptor: (Ljava/lang/String;Ljava/nio/charset/Charset;[B)[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=9, args_size=3
        start local 0 // java.lang.String password
        start local 1 // java.nio.charset.Charset charset
        start local 2 // byte[] salt
         0: .line 20
            ldc "SHA-1"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 3 /* messageDigest */
        start local 3 // java.security.MessageDigest messageDigest
         1: .line 21
            goto 4
        end local 3 // java.security.MessageDigest messageDigest
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
         2: astore 4 /* e */
        start local 4 // java.security.NoSuchAlgorithmException e
         3: .line 22
            new java.lang.RuntimeException
            dup
            aload 4 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.security.NoSuchAlgorithmException e
        start local 3 // java.security.MessageDigest messageDigest
         4: .line 25
      StackMap locals: java.security.MessageDigest
      StackMap stack:
            aload 0 /* password */
            aload 1 /* charset */
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            astore 4 /* passwordBytes */
        start local 4 // byte[] passwordBytes
         5: .line 27
            aload 3 /* messageDigest */
            aload 4 /* passwordBytes */
            invokevirtual java.security.MessageDigest.digest:([B)[B
            astore 5 /* passwordHash1 */
        start local 5 // byte[] passwordHash1
         6: .line 28
            aload 3 /* messageDigest */
            invokevirtual java.security.MessageDigest.reset:()V
         7: .line 30
            aload 3 /* messageDigest */
            aload 5 /* passwordHash1 */
            invokevirtual java.security.MessageDigest.digest:([B)[B
            astore 6 /* passwordHash2 */
        start local 6 // byte[] passwordHash2
         8: .line 31
            aload 3 /* messageDigest */
            invokevirtual java.security.MessageDigest.reset:()V
         9: .line 34
            aload 3 /* messageDigest */
            aload 2 /* salt */
            invokevirtual java.security.MessageDigest.update:([B)V
        10: .line 35
            aload 3 /* messageDigest */
            aload 6 /* passwordHash2 */
            invokevirtual java.security.MessageDigest.update:([B)V
        11: .line 36
            aload 3 /* messageDigest */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 7 /* passwordHash3 */
        start local 7 // byte[] passwordHash3
        12: .line 39
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        13: goto 16
        14: .line 40
      StackMap locals: java.lang.String java.nio.charset.Charset byte[] java.security.MessageDigest byte[] byte[] byte[] byte[] int
      StackMap stack:
            aload 5 /* passwordHash1 */
            iload 8 /* i */
            aload 5 /* passwordHash1 */
            iload 8 /* i */
            baload
            aload 7 /* passwordHash3 */
            iload 8 /* i */
            baload
            ixor
            i2b
            bastore
        15: .line 39
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        16: iload 8 /* i */
            aload 5 /* passwordHash1 */
            arraylength
            if_icmplt 14
        end local 8 // int i
        17: .line 42
            aload 5 /* passwordHash1 */
            areturn
        end local 7 // byte[] passwordHash3
        end local 6 // byte[] passwordHash2
        end local 5 // byte[] passwordHash1
        end local 4 // byte[] passwordBytes
        end local 3 // java.security.MessageDigest messageDigest
        end local 2 // byte[] salt
        end local 1 // java.nio.charset.Charset charset
        end local 0 // java.lang.String password
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   18     0       password  Ljava/lang/String;
            0   18     1        charset  Ljava/nio/charset/Charset;
            0   18     2           salt  [B
            1    2     3  messageDigest  Ljava/security/MessageDigest;
            4   18     3  messageDigest  Ljava/security/MessageDigest;
            3    4     4              e  Ljava/security/NoSuchAlgorithmException;
            5   18     4  passwordBytes  [B
            6   18     5  passwordHash1  [B
            8   18     6  passwordHash2  [B
           12   18     7  passwordHash3  [B
           13   17     8              i  I
      Exception table:
        from    to  target  type
           0     1       2  Class java.security.NoSuchAlgorithmException
    MethodParameters:
          Name  Flags
      password  
      charset   
      salt      
}
SourceFile: "Native41Authenticator.java"