public class org.apache.commons.codec.digest.Sha2Crypt
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.commons.codec.digest.Sha2Crypt
  super_class: java.lang.Object
{
  private static final int ROUNDS_DEFAULT;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 5000

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

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

  private static final java.lang.String ROUNDS_PREFIX;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "rounds="

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

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

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

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

  private static final java.util.regex.Pattern SALT_PATTERN;
    descriptor: Ljava/util/regex/Pattern;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 72
            ldc "^\\$([56])\\$(rounds=(\\d+)\\$)?([\\.\\/a-zA-Z0-9]{1,16}).*"
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
         1: .line 71
            putstatic org.apache.commons.codec.digest.Sha2Crypt.SALT_PATTERN:Ljava/util/regex/Pattern;
         2: .line 72
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.commons.codec.digest.Sha2Crypt this
         0: .line 44
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.apache.commons.codec.digest.Sha2Crypt this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/commons/codec/digest/Sha2Crypt;

  public static java.lang.String sha256Crypt(byte[]);
    descriptor: ([B)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // byte[] keyBytes
         0: .line 91
            aload 0 /* keyBytes */
            aconst_null
            invokestatic org.apache.commons.codec.digest.Sha2Crypt.sha256Crypt:([BLjava/lang/String;)Ljava/lang/String;
            areturn
        end local 0 // byte[] keyBytes
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  keyBytes  [B
    MethodParameters:
          Name  Flags
      keyBytes  final

  public static java.lang.String sha256Crypt(byte[], java.lang.String);
    descriptor: ([BLjava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // byte[] keyBytes
        start local 1 // java.lang.String salt
         0: .line 112
            aload 1 /* salt */
            ifnonnull 2
         1: .line 113
            new java.lang.StringBuilder
            dup
            ldc "$5$"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 8
            invokestatic org.apache.commons.codec.digest.B64.getRandomSalt:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* salt */
         2: .line 115
      StackMap locals:
      StackMap stack:
            aload 0 /* keyBytes */
            aload 1 /* salt */
            ldc "$5$"
            bipush 32
            ldc "SHA-256"
            invokestatic org.apache.commons.codec.digest.Sha2Crypt.sha2Crypt:([BLjava/lang/String;Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;
            areturn
        end local 1 // java.lang.String salt
        end local 0 // byte[] keyBytes
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0  keyBytes  [B
            0    3     1      salt  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      keyBytes  final
      salt      

  public static java.lang.String sha256Crypt(byte[], java.lang.String, java.util.Random);
    descriptor: ([BLjava/lang/String;Ljava/util/Random;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // byte[] keyBytes
        start local 1 // java.lang.String salt
        start local 2 // java.util.Random random
         0: .line 137
            aload 1 /* salt */
            ifnonnull 2
         1: .line 138
            new java.lang.StringBuilder
            dup
            ldc "$5$"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 8
            aload 2 /* random */
            invokestatic org.apache.commons.codec.digest.B64.getRandomSalt:(ILjava/util/Random;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* salt */
         2: .line 140
      StackMap locals:
      StackMap stack:
            aload 0 /* keyBytes */
            aload 1 /* salt */
            ldc "$5$"
            bipush 32
            ldc "SHA-256"
            invokestatic org.apache.commons.codec.digest.Sha2Crypt.sha2Crypt:([BLjava/lang/String;Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;
            areturn
        end local 2 // java.util.Random random
        end local 1 // java.lang.String salt
        end local 0 // byte[] keyBytes
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0  keyBytes  [B
            0    3     1      salt  Ljava/lang/String;
            0    3     2    random  Ljava/util/Random;
    MethodParameters:
          Name  Flags
      keyBytes  final
      salt      
      random    

  private static java.lang.String sha2Crypt(byte[], java.lang.String, java.lang.String, int, java.lang.String);
    descriptor: ([BLjava/lang/String;Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=21, args_size=5
        start local 0 // byte[] keyBytes
        start local 1 // java.lang.String salt
        start local 2 // java.lang.String saltPrefix
        start local 3 // int blocksize
        start local 4 // java.lang.String algorithm
         0: .line 171
            aload 0 /* keyBytes */
            arraylength
            istore 5 /* keyLen */
        start local 5 // int keyLen
         1: .line 174
            sipush 5000
            istore 6 /* rounds */
        start local 6 // int rounds
         2: .line 175
            iconst_0
            istore 7 /* roundsCustom */
        start local 7 // boolean roundsCustom
         3: .line 176
            aload 1 /* salt */
            ifnonnull 5
         4: .line 177
            new java.lang.IllegalArgumentException
            dup
            ldc "Salt must not be null"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 180
      StackMap locals: int int int
      StackMap stack:
            getstatic org.apache.commons.codec.digest.Sha2Crypt.SALT_PATTERN:Ljava/util/regex/Pattern;
            aload 1 /* salt */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 8 /* m */
        start local 8 // java.util.regex.Matcher m
         6: .line 181
            aload 8 /* m */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifne 8
         7: .line 182
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid salt value: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* salt */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 184
      StackMap locals: java.util.regex.Matcher
      StackMap stack:
            aload 8 /* m */
            iconst_3
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            ifnull 12
         9: .line 185
            aload 8 /* m */
            iconst_3
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 6 /* rounds */
        10: .line 186
            sipush 1000
            ldc 999999999
            iload 6 /* rounds */
            invokestatic java.lang.Math.min:(II)I
            invokestatic java.lang.Math.max:(II)I
            istore 6 /* rounds */
        11: .line 187
            iconst_1
            istore 7 /* roundsCustom */
        12: .line 189
      StackMap locals:
      StackMap stack:
            aload 8 /* m */
            iconst_4
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            astore 9 /* saltString */
        start local 9 // java.lang.String saltString
        13: .line 190
            aload 9 /* saltString */
            getstatic org.apache.commons.codec.Charsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            astore 10 /* saltBytes */
        start local 10 // byte[] saltBytes
        14: .line 191
            aload 10 /* saltBytes */
            arraylength
            istore 11 /* saltLen */
        start local 11 // int saltLen
        15: .line 195
            aload 4 /* algorithm */
            invokestatic org.apache.commons.codec.digest.DigestUtils.getDigest:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 12 /* ctx */
        start local 12 // java.security.MessageDigest ctx
        16: .line 201
            aload 12 /* ctx */
            aload 0 /* keyBytes */
            invokevirtual java.security.MessageDigest.update:([B)V
        17: .line 216
            aload 12 /* ctx */
            aload 10 /* saltBytes */
            invokevirtual java.security.MessageDigest.update:([B)V
        18: .line 223
            aload 4 /* algorithm */
            invokestatic org.apache.commons.codec.digest.DigestUtils.getDigest:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 13 /* altCtx */
        start local 13 // java.security.MessageDigest altCtx
        19: .line 229
            aload 13 /* altCtx */
            aload 0 /* keyBytes */
            invokevirtual java.security.MessageDigest.update:([B)V
        20: .line 235
            aload 13 /* altCtx */
            aload 10 /* saltBytes */
            invokevirtual java.security.MessageDigest.update:([B)V
        21: .line 241
            aload 13 /* altCtx */
            aload 0 /* keyBytes */
            invokevirtual java.security.MessageDigest.update:([B)V
        22: .line 247
            aload 13 /* altCtx */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 14 /* altResult */
        start local 14 // byte[] altResult
        23: .line 257
            aload 0 /* keyBytes */
            arraylength
            istore 15 /* cnt */
        start local 15 // int cnt
        24: .line 258
            goto 27
        25: .line 259
      StackMap locals: byte[] java.lang.String java.lang.String int java.lang.String int int int java.util.regex.Matcher java.lang.String byte[] int java.security.MessageDigest java.security.MessageDigest byte[] int
      StackMap stack:
            aload 12 /* ctx */
            aload 14 /* altResult */
            iconst_0
            iload 3 /* blocksize */
            invokevirtual java.security.MessageDigest.update:([BII)V
        26: .line 260
            iload 15 /* cnt */
            iload 3 /* blocksize */
            isub
            istore 15 /* cnt */
        27: .line 258
      StackMap locals:
      StackMap stack:
            iload 15 /* cnt */
            iload 3 /* blocksize */
            if_icmpgt 25
        28: .line 265
            aload 12 /* ctx */
            aload 14 /* altResult */
            iconst_0
            iload 15 /* cnt */
            invokevirtual java.security.MessageDigest.update:([BII)V
        29: .line 281
            aload 0 /* keyBytes */
            arraylength
            istore 15 /* cnt */
        30: .line 282
            goto 36
        31: .line 283
      StackMap locals:
      StackMap stack:
            iload 15 /* cnt */
            iconst_1
            iand
            ifeq 34
        32: .line 284
            aload 12 /* ctx */
            aload 14 /* altResult */
            iconst_0
            iload 3 /* blocksize */
            invokevirtual java.security.MessageDigest.update:([BII)V
        33: .line 285
            goto 35
        34: .line 286
      StackMap locals:
      StackMap stack:
            aload 12 /* ctx */
            aload 0 /* keyBytes */
            invokevirtual java.security.MessageDigest.update:([B)V
        35: .line 288
      StackMap locals:
      StackMap stack:
            iload 15 /* cnt */
            iconst_1
            ishr
            istore 15 /* cnt */
        36: .line 282
      StackMap locals:
      StackMap stack:
            iload 15 /* cnt */
            ifgt 31
        37: .line 295
            aload 12 /* ctx */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 14 /* altResult */
        38: .line 301
            aload 4 /* algorithm */
            invokestatic org.apache.commons.codec.digest.DigestUtils.getDigest:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 13 /* altCtx */
        39: .line 310
            iconst_1
            istore 16 /* i */
        start local 16 // int i
        40: goto 43
        41: .line 311
      StackMap locals: int
      StackMap stack:
            aload 13 /* altCtx */
            aload 0 /* keyBytes */
            invokevirtual java.security.MessageDigest.update:([B)V
        42: .line 310
            iinc 16 /* i */ 1
      StackMap locals:
      StackMap stack:
        43: iload 16 /* i */
            iload 5 /* keyLen */
            if_icmple 41
        end local 16 // int i
        44: .line 318
            aload 13 /* altCtx */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 16 /* tempResult */
        start local 16 // byte[] tempResult
        45: .line 330
            iload 5 /* keyLen */
            newarray 8
            astore 17 /* pBytes */
        start local 17 // byte[] pBytes
        46: .line 331
            iconst_0
            istore 18 /* cp */
        start local 18 // int cp
        47: .line 332
            goto 50
        48: .line 333
      StackMap locals: byte[] java.lang.String java.lang.String int java.lang.String int int int java.util.regex.Matcher java.lang.String byte[] int java.security.MessageDigest java.security.MessageDigest byte[] int byte[] byte[] int
      StackMap stack:
            aload 16 /* tempResult */
            iconst_0
            aload 17 /* pBytes */
            iload 18 /* cp */
            iload 3 /* blocksize */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        49: .line 334
            iload 18 /* cp */
            iload 3 /* blocksize */
            iadd
            istore 18 /* cp */
        50: .line 332
      StackMap locals:
      StackMap stack:
            iload 18 /* cp */
            iload 5 /* keyLen */
            iload 3 /* blocksize */
            isub
            if_icmplt 48
        51: .line 336
            aload 16 /* tempResult */
            iconst_0
            aload 17 /* pBytes */
            iload 18 /* cp */
            iload 5 /* keyLen */
            iload 18 /* cp */
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        52: .line 342
            aload 4 /* algorithm */
            invokestatic org.apache.commons.codec.digest.DigestUtils.getDigest:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 13 /* altCtx */
        53: .line 351
            iconst_1
            istore 19 /* i */
        start local 19 // int i
        54: goto 57
        55: .line 352
      StackMap locals: int
      StackMap stack:
            aload 13 /* altCtx */
            aload 10 /* saltBytes */
            invokevirtual java.security.MessageDigest.update:([B)V
        56: .line 351
            iinc 19 /* i */ 1
      StackMap locals:
      StackMap stack:
        57: iload 19 /* i */
            bipush 16
            aload 14 /* altResult */
            iconst_0
            baload
            sipush 255
            iand
            iadd
            if_icmple 55
        end local 19 // int i
        58: .line 359
            aload 13 /* altCtx */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 16 /* tempResult */
        59: .line 372
            iload 11 /* saltLen */
            newarray 8
            astore 19 /* sBytes */
        start local 19 // byte[] sBytes
        60: .line 373
            iconst_0
            istore 18 /* cp */
        61: .line 374
            goto 64
        62: .line 375
      StackMap locals: byte[] java.lang.String java.lang.String int java.lang.String int int int java.util.regex.Matcher java.lang.String byte[] int java.security.MessageDigest java.security.MessageDigest byte[] int byte[] byte[] int byte[]
      StackMap stack:
            aload 16 /* tempResult */
            iconst_0
            aload 19 /* sBytes */
            iload 18 /* cp */
            iload 3 /* blocksize */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        63: .line 376
            iload 18 /* cp */
            iload 3 /* blocksize */
            iadd
            istore 18 /* cp */
        64: .line 374
      StackMap locals:
      StackMap stack:
            iload 18 /* cp */
            iload 11 /* saltLen */
            iload 3 /* blocksize */
            isub
            if_icmplt 62
        65: .line 378
            aload 16 /* tempResult */
            iconst_0
            aload 19 /* sBytes */
            iload 18 /* cp */
            iload 11 /* saltLen */
            iload 18 /* cp */
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        66: .line 391
            iconst_0
            istore 20 /* i */
        start local 20 // int i
        67: goto 83
        68: .line 396
      StackMap locals: int
      StackMap stack:
            aload 4 /* algorithm */
            invokestatic org.apache.commons.codec.digest.DigestUtils.getDigest:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 12 /* ctx */
        69: .line 403
            iload 20 /* i */
            iconst_1
            iand
            ifeq 72
        70: .line 404
            aload 12 /* ctx */
            aload 17 /* pBytes */
            iconst_0
            iload 5 /* keyLen */
            invokevirtual java.security.MessageDigest.update:([BII)V
        71: .line 405
            goto 73
        72: .line 406
      StackMap locals:
      StackMap stack:
            aload 12 /* ctx */
            aload 14 /* altResult */
            iconst_0
            iload 3 /* blocksize */
            invokevirtual java.security.MessageDigest.update:([BII)V
        73: .line 413
      StackMap locals:
      StackMap stack:
            iload 20 /* i */
            iconst_3
            irem
            ifeq 75
        74: .line 414
            aload 12 /* ctx */
            aload 19 /* sBytes */
            iconst_0
            iload 11 /* saltLen */
            invokevirtual java.security.MessageDigest.update:([BII)V
        75: .line 421
      StackMap locals:
      StackMap stack:
            iload 20 /* i */
            bipush 7
            irem
            ifeq 77
        76: .line 422
            aload 12 /* ctx */
            aload 17 /* pBytes */
            iconst_0
            iload 5 /* keyLen */
            invokevirtual java.security.MessageDigest.update:([BII)V
        77: .line 430
      StackMap locals:
      StackMap stack:
            iload 20 /* i */
            iconst_1
            iand
            ifeq 80
        78: .line 431
            aload 12 /* ctx */
            aload 14 /* altResult */
            iconst_0
            iload 3 /* blocksize */
            invokevirtual java.security.MessageDigest.update:([BII)V
        79: .line 432
            goto 81
        80: .line 433
      StackMap locals:
      StackMap stack:
            aload 12 /* ctx */
            aload 17 /* pBytes */
            iconst_0
            iload 5 /* keyLen */
            invokevirtual java.security.MessageDigest.update:([BII)V
        81: .line 440
      StackMap locals:
      StackMap stack:
            aload 12 /* ctx */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 14 /* altResult */
        82: .line 391
            iinc 20 /* i */ 1
      StackMap locals:
      StackMap stack:
        83: iload 20 /* i */
            iload 6 /* rounds */
            iconst_1
            isub
            if_icmple 68
        end local 20 // int i
        84: .line 458
            new java.lang.StringBuilder
            dup
            aload 2 /* saltPrefix */
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            astore 20 /* buffer */
        start local 20 // java.lang.StringBuilder buffer
        85: .line 459
            iload 7 /* roundsCustom */
            ifeq 89
        86: .line 460
            aload 20 /* buffer */
            ldc "rounds="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        87: .line 461
            aload 20 /* buffer */
            iload 6 /* rounds */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            pop
        88: .line 462
            aload 20 /* buffer */
            ldc "$"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        89: .line 464
      StackMap locals: byte[] java.lang.String java.lang.String int java.lang.String int int int java.util.regex.Matcher java.lang.String byte[] int java.security.MessageDigest java.security.MessageDigest byte[] int byte[] byte[] int byte[] java.lang.StringBuilder
      StackMap stack:
            aload 20 /* buffer */
            aload 9 /* saltString */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        90: .line 465
            aload 20 /* buffer */
            ldc "$"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        91: .line 491
            iload 3 /* blocksize */
            bipush 32
            if_icmpne 104
        92: .line 492
            aload 14 /* altResult */
            iconst_0
            baload
            aload 14 /* altResult */
            bipush 10
            baload
            aload 14 /* altResult */
            bipush 20
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
        93: .line 493
            aload 14 /* altResult */
            bipush 21
            baload
            aload 14 /* altResult */
            iconst_1
            baload
            aload 14 /* altResult */
            bipush 11
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
        94: .line 494
            aload 14 /* altResult */
            bipush 12
            baload
            aload 14 /* altResult */
            bipush 22
            baload
            aload 14 /* altResult */
            iconst_2
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
        95: .line 495
            aload 14 /* altResult */
            iconst_3
            baload
            aload 14 /* altResult */
            bipush 13
            baload
            aload 14 /* altResult */
            bipush 23
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
        96: .line 496
            aload 14 /* altResult */
            bipush 24
            baload
            aload 14 /* altResult */
            iconst_4
            baload
            aload 14 /* altResult */
            bipush 14
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
        97: .line 497
            aload 14 /* altResult */
            bipush 15
            baload
            aload 14 /* altResult */
            bipush 25
            baload
            aload 14 /* altResult */
            iconst_5
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
        98: .line 498
            aload 14 /* altResult */
            bipush 6
            baload
            aload 14 /* altResult */
            bipush 16
            baload
            aload 14 /* altResult */
            bipush 26
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
        99: .line 499
            aload 14 /* altResult */
            bipush 27
            baload
            aload 14 /* altResult */
            bipush 7
            baload
            aload 14 /* altResult */
            bipush 17
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       100: .line 500
            aload 14 /* altResult */
            bipush 18
            baload
            aload 14 /* altResult */
            bipush 28
            baload
            aload 14 /* altResult */
            bipush 8
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       101: .line 501
            aload 14 /* altResult */
            bipush 9
            baload
            aload 14 /* altResult */
            bipush 19
            baload
            aload 14 /* altResult */
            bipush 29
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       102: .line 502
            iconst_0
            aload 14 /* altResult */
            bipush 31
            baload
            aload 14 /* altResult */
            bipush 30
            baload
            iconst_3
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       103: .line 503
            goto 126
       104: .line 504
      StackMap locals:
      StackMap stack:
            aload 14 /* altResult */
            iconst_0
            baload
            aload 14 /* altResult */
            bipush 21
            baload
            aload 14 /* altResult */
            bipush 42
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       105: .line 505
            aload 14 /* altResult */
            bipush 22
            baload
            aload 14 /* altResult */
            bipush 43
            baload
            aload 14 /* altResult */
            iconst_1
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       106: .line 506
            aload 14 /* altResult */
            bipush 44
            baload
            aload 14 /* altResult */
            iconst_2
            baload
            aload 14 /* altResult */
            bipush 23
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       107: .line 507
            aload 14 /* altResult */
            iconst_3
            baload
            aload 14 /* altResult */
            bipush 24
            baload
            aload 14 /* altResult */
            bipush 45
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       108: .line 508
            aload 14 /* altResult */
            bipush 25
            baload
            aload 14 /* altResult */
            bipush 46
            baload
            aload 14 /* altResult */
            iconst_4
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       109: .line 509
            aload 14 /* altResult */
            bipush 47
            baload
            aload 14 /* altResult */
            iconst_5
            baload
            aload 14 /* altResult */
            bipush 26
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       110: .line 510
            aload 14 /* altResult */
            bipush 6
            baload
            aload 14 /* altResult */
            bipush 27
            baload
            aload 14 /* altResult */
            bipush 48
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       111: .line 511
            aload 14 /* altResult */
            bipush 28
            baload
            aload 14 /* altResult */
            bipush 49
            baload
            aload 14 /* altResult */
            bipush 7
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       112: .line 512
            aload 14 /* altResult */
            bipush 50
            baload
            aload 14 /* altResult */
            bipush 8
            baload
            aload 14 /* altResult */
            bipush 29
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       113: .line 513
            aload 14 /* altResult */
            bipush 9
            baload
            aload 14 /* altResult */
            bipush 30
            baload
            aload 14 /* altResult */
            bipush 51
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       114: .line 514
            aload 14 /* altResult */
            bipush 31
            baload
            aload 14 /* altResult */
            bipush 52
            baload
            aload 14 /* altResult */
            bipush 10
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       115: .line 515
            aload 14 /* altResult */
            bipush 53
            baload
            aload 14 /* altResult */
            bipush 11
            baload
            aload 14 /* altResult */
            bipush 32
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       116: .line 516
            aload 14 /* altResult */
            bipush 12
            baload
            aload 14 /* altResult */
            bipush 33
            baload
            aload 14 /* altResult */
            bipush 54
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       117: .line 517
            aload 14 /* altResult */
            bipush 34
            baload
            aload 14 /* altResult */
            bipush 55
            baload
            aload 14 /* altResult */
            bipush 13
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       118: .line 518
            aload 14 /* altResult */
            bipush 56
            baload
            aload 14 /* altResult */
            bipush 14
            baload
            aload 14 /* altResult */
            bipush 35
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       119: .line 519
            aload 14 /* altResult */
            bipush 15
            baload
            aload 14 /* altResult */
            bipush 36
            baload
            aload 14 /* altResult */
            bipush 57
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       120: .line 520
            aload 14 /* altResult */
            bipush 37
            baload
            aload 14 /* altResult */
            bipush 58
            baload
            aload 14 /* altResult */
            bipush 16
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       121: .line 521
            aload 14 /* altResult */
            bipush 59
            baload
            aload 14 /* altResult */
            bipush 17
            baload
            aload 14 /* altResult */
            bipush 38
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       122: .line 522
            aload 14 /* altResult */
            bipush 18
            baload
            aload 14 /* altResult */
            bipush 39
            baload
            aload 14 /* altResult */
            bipush 60
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       123: .line 523
            aload 14 /* altResult */
            bipush 40
            baload
            aload 14 /* altResult */
            bipush 61
            baload
            aload 14 /* altResult */
            bipush 19
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       124: .line 524
            aload 14 /* altResult */
            bipush 62
            baload
            aload 14 /* altResult */
            bipush 20
            baload
            aload 14 /* altResult */
            bipush 41
            baload
            iconst_4
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       125: .line 525
            iconst_0
            iconst_0
            aload 14 /* altResult */
            bipush 63
            baload
            iconst_2
            aload 20 /* buffer */
            invokestatic org.apache.commons.codec.digest.B64.b64from24bit:(BBBILjava/lang/StringBuilder;)V
       126: .line 533
      StackMap locals:
      StackMap stack:
            aload 16 /* tempResult */
            iconst_0
            invokestatic java.util.Arrays.fill:([BB)V
       127: .line 534
            aload 17 /* pBytes */
            iconst_0
            invokestatic java.util.Arrays.fill:([BB)V
       128: .line 535
            aload 19 /* sBytes */
            iconst_0
            invokestatic java.util.Arrays.fill:([BB)V
       129: .line 536
            aload 12 /* ctx */
            invokevirtual java.security.MessageDigest.reset:()V
       130: .line 537
            aload 13 /* altCtx */
            invokevirtual java.security.MessageDigest.reset:()V
       131: .line 538
            aload 0 /* keyBytes */
            iconst_0
            invokestatic java.util.Arrays.fill:([BB)V
       132: .line 539
            aload 10 /* saltBytes */
            iconst_0
            invokestatic java.util.Arrays.fill:([BB)V
       133: .line 541
            aload 20 /* buffer */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 20 // java.lang.StringBuilder buffer
        end local 19 // byte[] sBytes
        end local 18 // int cp
        end local 17 // byte[] pBytes
        end local 16 // byte[] tempResult
        end local 15 // int cnt
        end local 14 // byte[] altResult
        end local 13 // java.security.MessageDigest altCtx
        end local 12 // java.security.MessageDigest ctx
        end local 11 // int saltLen
        end local 10 // byte[] saltBytes
        end local 9 // java.lang.String saltString
        end local 8 // java.util.regex.Matcher m
        end local 7 // boolean roundsCustom
        end local 6 // int rounds
        end local 5 // int keyLen
        end local 4 // java.lang.String algorithm
        end local 3 // int blocksize
        end local 2 // java.lang.String saltPrefix
        end local 1 // java.lang.String salt
        end local 0 // byte[] keyBytes
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0  134     0      keyBytes  [B
            0  134     1          salt  Ljava/lang/String;
            0  134     2    saltPrefix  Ljava/lang/String;
            0  134     3     blocksize  I
            0  134     4     algorithm  Ljava/lang/String;
            1  134     5        keyLen  I
            2  134     6        rounds  I
            3  134     7  roundsCustom  Z
            6  134     8             m  Ljava/util/regex/Matcher;
           13  134     9    saltString  Ljava/lang/String;
           14  134    10     saltBytes  [B
           15  134    11       saltLen  I
           16  134    12           ctx  Ljava/security/MessageDigest;
           19  134    13        altCtx  Ljava/security/MessageDigest;
           23  134    14     altResult  [B
           24  134    15           cnt  I
           40   44    16             i  I
           45  134    16    tempResult  [B
           46  134    17        pBytes  [B
           47  134    18            cp  I
           54   58    19             i  I
           60  134    19        sBytes  [B
           67   84    20             i  I
           85  134    20        buffer  Ljava/lang/StringBuilder;
    MethodParameters:
            Name  Flags
      keyBytes    final
      salt        final
      saltPrefix  final
      blocksize   final
      algorithm   final

  public static java.lang.String sha512Crypt(byte[]);
    descriptor: ([B)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // byte[] keyBytes
         0: .line 561
            aload 0 /* keyBytes */
            aconst_null
            invokestatic org.apache.commons.codec.digest.Sha2Crypt.sha512Crypt:([BLjava/lang/String;)Ljava/lang/String;
            areturn
        end local 0 // byte[] keyBytes
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  keyBytes  [B
    MethodParameters:
          Name  Flags
      keyBytes  final

  public static java.lang.String sha512Crypt(byte[], java.lang.String);
    descriptor: ([BLjava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // byte[] keyBytes
        start local 1 // java.lang.String salt
         0: .line 583
            aload 1 /* salt */
            ifnonnull 2
         1: .line 584
            new java.lang.StringBuilder
            dup
            ldc "$6$"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 8
            invokestatic org.apache.commons.codec.digest.B64.getRandomSalt:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* salt */
         2: .line 586
      StackMap locals:
      StackMap stack:
            aload 0 /* keyBytes */
            aload 1 /* salt */
            ldc "$6$"
            bipush 64
            ldc "SHA-512"
            invokestatic org.apache.commons.codec.digest.Sha2Crypt.sha2Crypt:([BLjava/lang/String;Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;
            areturn
        end local 1 // java.lang.String salt
        end local 0 // byte[] keyBytes
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0  keyBytes  [B
            0    3     1      salt  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      keyBytes  final
      salt      

  public static java.lang.String sha512Crypt(byte[], java.lang.String, java.util.Random);
    descriptor: ([BLjava/lang/String;Ljava/util/Random;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // byte[] keyBytes
        start local 1 // java.lang.String salt
        start local 2 // java.util.Random random
         0: .line 612
            aload 1 /* salt */
            ifnonnull 2
         1: .line 613
            new java.lang.StringBuilder
            dup
            ldc "$6$"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 8
            aload 2 /* random */
            invokestatic org.apache.commons.codec.digest.B64.getRandomSalt:(ILjava/util/Random;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* salt */
         2: .line 615
      StackMap locals:
      StackMap stack:
            aload 0 /* keyBytes */
            aload 1 /* salt */
            ldc "$6$"
            bipush 64
            ldc "SHA-512"
            invokestatic org.apache.commons.codec.digest.Sha2Crypt.sha2Crypt:([BLjava/lang/String;Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;
            areturn
        end local 2 // java.util.Random random
        end local 1 // java.lang.String salt
        end local 0 // byte[] keyBytes
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0  keyBytes  [B
            0    3     1      salt  Ljava/lang/String;
            0    3     2    random  Ljava/util/Random;
    MethodParameters:
          Name  Flags
      keyBytes  final
      salt      
      random    final
}
SourceFile: "Sha2Crypt.java"