public class org.bouncycastle.crypto.digests.Blake2bDigest implements org.bouncycastle.crypto.ExtendedDigest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.crypto.digests.Blake2bDigest
  super_class: java.lang.Object
{
  private static final long[] blake2b_IV;
    descriptor: [J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final byte[][] blake2b_sigma;
    descriptor: [[B
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static int ROUNDS;
    descriptor: I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

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

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

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

  private byte[] salt;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private byte[] personalization;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private byte[] key;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private byte[] buffer;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

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

  private long[] internalState;
    descriptor: [J
    flags: (0x0002) ACC_PRIVATE

  private long[] chainValue;
    descriptor: [J
    flags: (0x0002) ACC_PRIVATE

  private long t0;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private long t1;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private long f0;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=7, locals=0, args_size=0
         0: .line 50
            bipush 8
            newarray 11
            dup
            iconst_0
         1: .line 51
            ldc 7640891576956012808
            lastore
            dup
            iconst_1
            ldc -4942790177534073029
            lastore
            dup
            iconst_2
            ldc 4354685564936845355
            lastore
            dup
            iconst_3
         2: .line 52
            ldc -6534734903238641935
            lastore
            dup
            iconst_4
            ldc 5840696475078001361
            lastore
            dup
            iconst_5
            ldc -7276294671716946913
            lastore
            dup
            bipush 6
         3: .line 53
            ldc 2270897969802886507
            lastore
            dup
            bipush 7
            ldc 6620516959819538809
            lastore
         4: .line 47
            putstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_IV:[J
         5: .line 58
            bipush 12
            anewarray byte[]
            dup
            iconst_0
         6: .line 59
            bipush 16
            newarray 8
            dup
            iconst_1
            iconst_1
            bastore
            dup
            iconst_2
            iconst_2
            bastore
            dup
            iconst_3
            iconst_3
            bastore
            dup
            iconst_4
            iconst_4
            bastore
            dup
            iconst_5
            iconst_5
            bastore
            dup
            bipush 6
            bipush 6
            bastore
            dup
            bipush 7
            bipush 7
            bastore
            dup
            bipush 8
            bipush 8
            bastore
            dup
            bipush 9
            bipush 9
            bastore
            dup
            bipush 10
            bipush 10
            bastore
            dup
            bipush 11
            bipush 11
            bastore
            dup
            bipush 12
            bipush 12
            bastore
            dup
            bipush 13
            bipush 13
            bastore
            dup
            bipush 14
            bipush 14
            bastore
            dup
            bipush 15
            bipush 15
            bastore
            aastore
            dup
            iconst_1
         7: .line 60
            bipush 16
            newarray 8
            dup
            iconst_0
            bipush 14
            bastore
            dup
            iconst_1
            bipush 10
            bastore
            dup
            iconst_2
            iconst_4
            bastore
            dup
            iconst_3
            bipush 8
            bastore
            dup
            iconst_4
            bipush 9
            bastore
            dup
            iconst_5
            bipush 15
            bastore
            dup
            bipush 6
            bipush 13
            bastore
            dup
            bipush 7
            bipush 6
            bastore
            dup
            bipush 8
            iconst_1
            bastore
            dup
            bipush 9
            bipush 12
            bastore
            dup
            bipush 11
            iconst_2
            bastore
            dup
            bipush 12
            bipush 11
            bastore
            dup
            bipush 13
            bipush 7
            bastore
            dup
            bipush 14
            iconst_5
            bastore
            dup
            bipush 15
            iconst_3
            bastore
            aastore
            dup
            iconst_2
         8: .line 61
            bipush 16
            newarray 8
            dup
            iconst_0
            bipush 11
            bastore
            dup
            iconst_1
            bipush 8
            bastore
            dup
            iconst_2
            bipush 12
            bastore
            dup
            iconst_4
            iconst_5
            bastore
            dup
            iconst_5
            iconst_2
            bastore
            dup
            bipush 6
            bipush 15
            bastore
            dup
            bipush 7
            bipush 13
            bastore
            dup
            bipush 8
            bipush 10
            bastore
            dup
            bipush 9
            bipush 14
            bastore
            dup
            bipush 10
            iconst_3
            bastore
            dup
            bipush 11
            bipush 6
            bastore
            dup
            bipush 12
            bipush 7
            bastore
            dup
            bipush 13
            iconst_1
            bastore
            dup
            bipush 14
            bipush 9
            bastore
            dup
            bipush 15
            iconst_4
            bastore
            aastore
            dup
            iconst_3
         9: .line 62
            bipush 16
            newarray 8
            dup
            iconst_0
            bipush 7
            bastore
            dup
            iconst_1
            bipush 9
            bastore
            dup
            iconst_2
            iconst_3
            bastore
            dup
            iconst_3
            iconst_1
            bastore
            dup
            iconst_4
            bipush 13
            bastore
            dup
            iconst_5
            bipush 12
            bastore
            dup
            bipush 6
            bipush 11
            bastore
            dup
            bipush 7
            bipush 14
            bastore
            dup
            bipush 8
            iconst_2
            bastore
            dup
            bipush 9
            bipush 6
            bastore
            dup
            bipush 10
            iconst_5
            bastore
            dup
            bipush 11
            bipush 10
            bastore
            dup
            bipush 12
            iconst_4
            bastore
            dup
            bipush 14
            bipush 15
            bastore
            dup
            bipush 15
            bipush 8
            bastore
            aastore
            dup
            iconst_4
        10: .line 63
            bipush 16
            newarray 8
            dup
            iconst_0
            bipush 9
            bastore
            dup
            iconst_2
            iconst_5
            bastore
            dup
            iconst_3
            bipush 7
            bastore
            dup
            iconst_4
            iconst_2
            bastore
            dup
            iconst_5
            iconst_4
            bastore
            dup
            bipush 6
            bipush 10
            bastore
            dup
            bipush 7
            bipush 15
            bastore
            dup
            bipush 8
            bipush 14
            bastore
            dup
            bipush 9
            iconst_1
            bastore
            dup
            bipush 10
            bipush 11
            bastore
            dup
            bipush 11
            bipush 12
            bastore
            dup
            bipush 12
            bipush 6
            bastore
            dup
            bipush 13
            bipush 8
            bastore
            dup
            bipush 14
            iconst_3
            bastore
            dup
            bipush 15
            bipush 13
            bastore
            aastore
            dup
            iconst_5
        11: .line 64
            bipush 16
            newarray 8
            dup
            iconst_0
            iconst_2
            bastore
            dup
            iconst_1
            bipush 12
            bastore
            dup
            iconst_2
            bipush 6
            bastore
            dup
            iconst_3
            bipush 10
            bastore
            dup
            iconst_5
            bipush 11
            bastore
            dup
            bipush 6
            bipush 8
            bastore
            dup
            bipush 7
            iconst_3
            bastore
            dup
            bipush 8
            iconst_4
            bastore
            dup
            bipush 9
            bipush 13
            bastore
            dup
            bipush 10
            bipush 7
            bastore
            dup
            bipush 11
            iconst_5
            bastore
            dup
            bipush 12
            bipush 15
            bastore
            dup
            bipush 13
            bipush 14
            bastore
            dup
            bipush 14
            iconst_1
            bastore
            dup
            bipush 15
            bipush 9
            bastore
            aastore
            dup
            bipush 6
        12: .line 65
            bipush 16
            newarray 8
            dup
            iconst_0
            bipush 12
            bastore
            dup
            iconst_1
            iconst_5
            bastore
            dup
            iconst_2
            iconst_1
            bastore
            dup
            iconst_3
            bipush 15
            bastore
            dup
            iconst_4
            bipush 14
            bastore
            dup
            iconst_5
            bipush 13
            bastore
            dup
            bipush 6
            iconst_4
            bastore
            dup
            bipush 7
            bipush 10
            bastore
            dup
            bipush 9
            bipush 7
            bastore
            dup
            bipush 10
            bipush 6
            bastore
            dup
            bipush 11
            iconst_3
            bastore
            dup
            bipush 12
            bipush 9
            bastore
            dup
            bipush 13
            iconst_2
            bastore
            dup
            bipush 14
            bipush 8
            bastore
            dup
            bipush 15
            bipush 11
            bastore
            aastore
            dup
            bipush 7
        13: .line 66
            bipush 16
            newarray 8
            dup
            iconst_0
            bipush 13
            bastore
            dup
            iconst_1
            bipush 11
            bastore
            dup
            iconst_2
            bipush 7
            bastore
            dup
            iconst_3
            bipush 14
            bastore
            dup
            iconst_4
            bipush 12
            bastore
            dup
            iconst_5
            iconst_1
            bastore
            dup
            bipush 6
            iconst_3
            bastore
            dup
            bipush 7
            bipush 9
            bastore
            dup
            bipush 8
            iconst_5
            bastore
            dup
            bipush 10
            bipush 15
            bastore
            dup
            bipush 11
            iconst_4
            bastore
            dup
            bipush 12
            bipush 8
            bastore
            dup
            bipush 13
            bipush 6
            bastore
            dup
            bipush 14
            iconst_2
            bastore
            dup
            bipush 15
            bipush 10
            bastore
            aastore
            dup
            bipush 8
        14: .line 67
            bipush 16
            newarray 8
            dup
            iconst_0
            bipush 6
            bastore
            dup
            iconst_1
            bipush 15
            bastore
            dup
            iconst_2
            bipush 14
            bastore
            dup
            iconst_3
            bipush 9
            bastore
            dup
            iconst_4
            bipush 11
            bastore
            dup
            iconst_5
            iconst_3
            bastore
            dup
            bipush 7
            bipush 8
            bastore
            dup
            bipush 8
            bipush 12
            bastore
            dup
            bipush 9
            iconst_2
            bastore
            dup
            bipush 10
            bipush 13
            bastore
            dup
            bipush 11
            bipush 7
            bastore
            dup
            bipush 12
            iconst_1
            bastore
            dup
            bipush 13
            iconst_4
            bastore
            dup
            bipush 14
            bipush 10
            bastore
            dup
            bipush 15
            iconst_5
            bastore
            aastore
            dup
            bipush 9
        15: .line 68
            bipush 16
            newarray 8
            dup
            iconst_0
            bipush 10
            bastore
            dup
            iconst_1
            iconst_2
            bastore
            dup
            iconst_2
            bipush 8
            bastore
            dup
            iconst_3
            iconst_4
            bastore
            dup
            iconst_4
            bipush 7
            bastore
            dup
            iconst_5
            bipush 6
            bastore
            dup
            bipush 6
            iconst_1
            bastore
            dup
            bipush 7
            iconst_5
            bastore
            dup
            bipush 8
            bipush 15
            bastore
            dup
            bipush 9
            bipush 11
            bastore
            dup
            bipush 10
            bipush 9
            bastore
            dup
            bipush 11
            bipush 14
            bastore
            dup
            bipush 12
            iconst_3
            bastore
            dup
            bipush 13
            bipush 12
            bastore
            dup
            bipush 14
            bipush 13
            bastore
            aastore
            dup
            bipush 10
        16: .line 69
            bipush 16
            newarray 8
            dup
            iconst_1
            iconst_1
            bastore
            dup
            iconst_2
            iconst_2
            bastore
            dup
            iconst_3
            iconst_3
            bastore
            dup
            iconst_4
            iconst_4
            bastore
            dup
            iconst_5
            iconst_5
            bastore
            dup
            bipush 6
            bipush 6
            bastore
            dup
            bipush 7
            bipush 7
            bastore
            dup
            bipush 8
            bipush 8
            bastore
            dup
            bipush 9
            bipush 9
            bastore
            dup
            bipush 10
            bipush 10
            bastore
            dup
            bipush 11
            bipush 11
            bastore
            dup
            bipush 12
            bipush 12
            bastore
            dup
            bipush 13
            bipush 13
            bastore
            dup
            bipush 14
            bipush 14
            bastore
            dup
            bipush 15
            bipush 15
            bastore
            aastore
            dup
            bipush 11
        17: .line 70
            bipush 16
            newarray 8
            dup
            iconst_0
            bipush 14
            bastore
            dup
            iconst_1
            bipush 10
            bastore
            dup
            iconst_2
            iconst_4
            bastore
            dup
            iconst_3
            bipush 8
            bastore
            dup
            iconst_4
            bipush 9
            bastore
            dup
            iconst_5
            bipush 15
            bastore
            dup
            bipush 6
            bipush 13
            bastore
            dup
            bipush 7
            bipush 6
            bastore
            dup
            bipush 8
            iconst_1
            bastore
            dup
            bipush 9
            bipush 12
            bastore
            dup
            bipush 11
            iconst_2
            bastore
            dup
            bipush 12
            bipush 11
            bastore
            dup
            bipush 13
            bipush 7
            bastore
            dup
            bipush 14
            iconst_5
            bastore
            dup
            bipush 15
            iconst_3
            bastore
            aastore
        18: .line 57
            putstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_sigma:[[B
        19: .line 73
            bipush 12
            putstatic org.bouncycastle.crypto.digests.Blake2bDigest.ROUNDS:I
        20: .line 74
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
         0: .line 115
            aload 0 /* this */
            sipush 512
            invokespecial org.bouncycastle.crypto.digests.Blake2bDigest.<init>:(I)V
         1: .line 116
            return
        end local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bouncycastle/crypto/digests/Blake2bDigest;

  public void <init>(org.bouncycastle.crypto.digests.Blake2bDigest);
    descriptor: (Lorg/bouncycastle/crypto/digests/Blake2bDigest;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
        start local 1 // org.bouncycastle.crypto.digests.Blake2bDigest digest
         0: .line 118
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 77
            aload 0 /* this */
            bipush 64
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.digestLength:I
         2: .line 78
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.keyLength:I
         3: .line 79
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.salt:[B
         4: .line 80
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.personalization:[B
         5: .line 83
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.key:[B
         6: .line 97
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
         7: .line 99
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
         8: .line 101
            aload 0 /* this */
            bipush 16
            newarray 11
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
         9: .line 103
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
        10: .line 106
            aload 0 /* this */
            lconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.t0:J
        11: .line 107
            aload 0 /* this */
            lconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.t1:J
        12: .line 108
            aload 0 /* this */
            lconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.f0:J
        13: .line 120
            aload 0 /* this */
            aload 1 /* digest */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
        14: .line 121
            aload 0 /* this */
            aload 1 /* digest */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
            invokestatic org.bouncycastle.util.Arrays.clone:([B)[B
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
        15: .line 122
            aload 0 /* this */
            aload 1 /* digest */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.keyLength:I
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.keyLength:I
        16: .line 123
            aload 0 /* this */
            aload 1 /* digest */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.key:[B
            invokestatic org.bouncycastle.util.Arrays.clone:([B)[B
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.key:[B
        17: .line 124
            aload 0 /* this */
            aload 1 /* digest */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.digestLength:I
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.digestLength:I
        18: .line 125
            aload 0 /* this */
            aload 1 /* digest */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            invokestatic org.bouncycastle.util.Arrays.clone:([J)[J
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
        19: .line 126
            aload 0 /* this */
            aload 1 /* digest */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.personalization:[B
            invokestatic org.bouncycastle.util.Arrays.clone:([B)[B
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.personalization:[B
        20: .line 127
            aload 0 /* this */
            aload 1 /* digest */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.salt:[B
            invokestatic org.bouncycastle.util.Arrays.clone:([B)[B
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.salt:[B
        21: .line 128
            aload 0 /* this */
            aload 1 /* digest */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.t0:J
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.t0:J
        22: .line 129
            aload 0 /* this */
            aload 1 /* digest */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.t1:J
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.t1:J
        23: .line 130
            aload 0 /* this */
            aload 1 /* digest */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.f0:J
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.f0:J
        24: .line 131
            return
        end local 1 // org.bouncycastle.crypto.digests.Blake2bDigest digest
        end local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   25     0    this  Lorg/bouncycastle/crypto/digests/Blake2bDigest;
            0   25     1  digest  Lorg/bouncycastle/crypto/digests/Blake2bDigest;
    MethodParameters:
        Name  Flags
      digest  

  public void <init>(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
        start local 1 // int digestSize
         0: .line 138
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 77
            aload 0 /* this */
            bipush 64
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.digestLength:I
         2: .line 78
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.keyLength:I
         3: .line 79
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.salt:[B
         4: .line 80
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.personalization:[B
         5: .line 83
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.key:[B
         6: .line 97
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
         7: .line 99
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
         8: .line 101
            aload 0 /* this */
            bipush 16
            newarray 11
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
         9: .line 103
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
        10: .line 106
            aload 0 /* this */
            lconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.t0:J
        11: .line 107
            aload 0 /* this */
            lconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.t1:J
        12: .line 108
            aload 0 /* this */
            lconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.f0:J
        13: .line 140
            iload 1 /* digestSize */
            bipush 8
            if_icmplt 14
            iload 1 /* digestSize */
            sipush 512
            if_icmpgt 14
            iload 1 /* digestSize */
            bipush 8
            irem
            ifeq 17
        14: .line 142
      StackMap locals: org.bouncycastle.crypto.digests.Blake2bDigest int
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
        15: .line 143
            ldc "BLAKE2b digest bit length must be a multiple of 8 and not greater than 512"
        16: .line 142
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        17: .line 146
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            sipush 128
            newarray 8
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
        18: .line 147
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.keyLength:I
        19: .line 148
            aload 0 /* this */
            iload 1 /* digestSize */
            bipush 8
            idiv
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.digestLength:I
        20: .line 149
            aload 0 /* this */
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.init:()V
        21: .line 150
            return
        end local 1 // int digestSize
        end local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   22     0        this  Lorg/bouncycastle/crypto/digests/Blake2bDigest;
            0   22     1  digestSize  I
    MethodParameters:
            Name  Flags
      digestSize  

  public void <init>(byte[]);
    descriptor: ([B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
        start local 1 // byte[] key
         0: .line 161
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 77
            aload 0 /* this */
            bipush 64
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.digestLength:I
         2: .line 78
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.keyLength:I
         3: .line 79
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.salt:[B
         4: .line 80
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.personalization:[B
         5: .line 83
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.key:[B
         6: .line 97
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
         7: .line 99
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
         8: .line 101
            aload 0 /* this */
            bipush 16
            newarray 11
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
         9: .line 103
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
        10: .line 106
            aload 0 /* this */
            lconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.t0:J
        11: .line 107
            aload 0 /* this */
            lconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.t1:J
        12: .line 108
            aload 0 /* this */
            lconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.f0:J
        13: .line 163
            aload 0 /* this */
            sipush 128
            newarray 8
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
        14: .line 164
            aload 1 /* key */
            ifnull 24
        15: .line 166
            aload 0 /* this */
            aload 1 /* key */
            arraylength
            newarray 8
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.key:[B
        16: .line 167
            aload 1 /* key */
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.key:[B
            iconst_0
            aload 1 /* key */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        17: .line 169
            aload 1 /* key */
            arraylength
            bipush 64
            if_icmple 21
        18: .line 171
            new java.lang.IllegalArgumentException
            dup
        19: .line 172
            ldc "Keys > 64 are not supported"
        20: .line 171
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        21: .line 174
      StackMap locals: org.bouncycastle.crypto.digests.Blake2bDigest byte[]
      StackMap stack:
            aload 0 /* this */
            aload 1 /* key */
            arraylength
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.keyLength:I
        22: .line 175
            aload 1 /* key */
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
            iconst_0
            aload 1 /* key */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        23: .line 176
            aload 0 /* this */
            sipush 128
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
        24: .line 178
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            bipush 64
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.digestLength:I
        25: .line 179
            aload 0 /* this */
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.init:()V
        26: .line 180
            return
        end local 1 // byte[] key
        end local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   27     0  this  Lorg/bouncycastle/crypto/digests/Blake2bDigest;
            0   27     1   key  [B
    MethodParameters:
      Name  Flags
      key   

  public void <init>(byte[], int, byte[], byte[]);
    descriptor: ([BI[B[B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
        start local 1 // byte[] key
        start local 2 // int digestLength
        start local 3 // byte[] salt
        start local 4 // byte[] personalization
         0: .line 194
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 77
            aload 0 /* this */
            bipush 64
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.digestLength:I
         2: .line 78
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.keyLength:I
         3: .line 79
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.salt:[B
         4: .line 80
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.personalization:[B
         5: .line 83
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.key:[B
         6: .line 97
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
         7: .line 99
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
         8: .line 101
            aload 0 /* this */
            bipush 16
            newarray 11
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
         9: .line 103
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
        10: .line 106
            aload 0 /* this */
            lconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.t0:J
        11: .line 107
            aload 0 /* this */
            lconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.t1:J
        12: .line 108
            aload 0 /* this */
            lconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.f0:J
        13: .line 197
            aload 0 /* this */
            sipush 128
            newarray 8
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
        14: .line 198
            iload 2 /* digestLength */
            iconst_1
            if_icmplt 15
            iload 2 /* digestLength */
            bipush 64
            if_icmple 18
        15: .line 200
      StackMap locals: org.bouncycastle.crypto.digests.Blake2bDigest byte[] int byte[] byte[]
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
        16: .line 201
            ldc "Invalid digest length (required: 1 - 64)"
        17: .line 200
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        18: .line 203
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 2 /* digestLength */
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.digestLength:I
        19: .line 204
            aload 3 /* salt */
            ifnull 26
        20: .line 206
            aload 3 /* salt */
            arraylength
            bipush 16
            if_icmpeq 24
        21: .line 208
            new java.lang.IllegalArgumentException
            dup
        22: .line 209
            ldc "salt length must be exactly 16 bytes"
        23: .line 208
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        24: .line 211
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            bipush 16
            newarray 8
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.salt:[B
        25: .line 212
            aload 3 /* salt */
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.salt:[B
            iconst_0
            aload 3 /* salt */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        26: .line 214
      StackMap locals:
      StackMap stack:
            aload 4 /* personalization */
            ifnull 35
        27: .line 216
            aload 4 /* personalization */
            arraylength
            bipush 16
            if_icmpeq 31
        28: .line 218
            new java.lang.IllegalArgumentException
            dup
        29: .line 219
            ldc "personalization length must be exactly 16 bytes"
        30: .line 218
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        31: .line 221
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            bipush 16
            newarray 8
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.personalization:[B
        32: .line 222
            aload 4 /* personalization */
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.personalization:[B
            iconst_0
        33: .line 223
            aload 4 /* personalization */
            arraylength
        34: .line 222
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        35: .line 225
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ifnull 45
        36: .line 227
            aload 0 /* this */
            aload 1 /* key */
            arraylength
            newarray 8
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.key:[B
        37: .line 228
            aload 1 /* key */
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.key:[B
            iconst_0
            aload 1 /* key */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        38: .line 230
            aload 1 /* key */
            arraylength
            bipush 64
            if_icmple 42
        39: .line 232
            new java.lang.IllegalArgumentException
            dup
        40: .line 233
            ldc "Keys > 64 are not supported"
        41: .line 232
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        42: .line 235
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* key */
            arraylength
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.keyLength:I
        43: .line 236
            aload 1 /* key */
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
            iconst_0
            aload 1 /* key */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        44: .line 237
            aload 0 /* this */
            sipush 128
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
        45: .line 239
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.init:()V
        46: .line 240
            return
        end local 4 // byte[] personalization
        end local 3 // byte[] salt
        end local 2 // int digestLength
        end local 1 // byte[] key
        end local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   47     0             this  Lorg/bouncycastle/crypto/digests/Blake2bDigest;
            0   47     1              key  [B
            0   47     2     digestLength  I
            0   47     3             salt  [B
            0   47     4  personalization  [B
    MethodParameters:
                 Name  Flags
      key              
      digestLength     
      salt             
      personalization  

  private void init();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
         0: .line 245
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            ifnonnull 18
         1: .line 247
            aload 0 /* this */
            bipush 8
            newarray 11
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
         2: .line 249
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            iconst_0
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_IV:[J
            iconst_0
            laload
         3: .line 250
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.digestLength:I
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.keyLength:I
            bipush 8
            ishl
            ior
            ldc 16842752
            ior
            i2l
            lxor
         4: .line 249
            lastore
         5: .line 254
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            iconst_1
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_IV:[J
            iconst_1
            laload
            lastore
         6: .line 255
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            iconst_2
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_IV:[J
            iconst_2
            laload
            lastore
         7: .line 259
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            iconst_3
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_IV:[J
            iconst_3
            laload
            lastore
         8: .line 261
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            iconst_4
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_IV:[J
            iconst_4
            laload
            lastore
         9: .line 262
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            iconst_5
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_IV:[J
            iconst_5
            laload
            lastore
        10: .line 263
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.salt:[B
            ifnull 13
        11: .line 265
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            iconst_4
            dup2
            laload
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.salt:[B
            iconst_0
            invokestatic org.bouncycastle.util.Pack.littleEndianToLong:([BI)J
            lxor
            lastore
        12: .line 266
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            iconst_5
            dup2
            laload
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.salt:[B
            bipush 8
            invokestatic org.bouncycastle.util.Pack.littleEndianToLong:([BI)J
            lxor
            lastore
        13: .line 269
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            bipush 6
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_IV:[J
            bipush 6
            laload
            lastore
        14: .line 270
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            bipush 7
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_IV:[J
            bipush 7
            laload
            lastore
        15: .line 271
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.personalization:[B
            ifnull 18
        16: .line 273
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            bipush 6
            dup2
            laload
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.personalization:[B
            iconst_0
            invokestatic org.bouncycastle.util.Pack.littleEndianToLong:([BI)J
            lxor
            lastore
        17: .line 274
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            bipush 7
            dup2
            laload
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.personalization:[B
            bipush 8
            invokestatic org.bouncycastle.util.Pack.littleEndianToLong:([BI)J
            lxor
            lastore
        18: .line 277
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   19     0  this  Lorg/bouncycastle/crypto/digests/Blake2bDigest;

  private void initializeInternalState();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
         0: .line 282
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         1: .line 283
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_IV:[J
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            arraylength
            iconst_4
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         2: .line 284
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            bipush 12
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.t0:J
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_IV:[J
            iconst_4
            laload
            lxor
            lastore
         3: .line 285
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            bipush 13
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.t1:J
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_IV:[J
            iconst_5
            laload
            lxor
            lastore
         4: .line 286
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            bipush 14
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.f0:J
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_IV:[J
            bipush 6
            laload
            lxor
            lastore
         5: .line 287
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            bipush 15
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_IV:[J
            bipush 7
            laload
            lastore
         6: .line 288
            return
        end local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/bouncycastle/crypto/digests/Blake2bDigest;

  public void update(byte);
    descriptor: (B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
        start local 1 // byte b
         0: .line 297
            iconst_0
            istore 2 /* remainingLength */
        start local 2 // int remainingLength
         1: .line 300
            sipush 128
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
            isub
            istore 2 /* remainingLength */
         2: .line 301
            iload 2 /* remainingLength */
            ifne 11
         3: .line 303
            aload 0 /* this */
            dup
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.t0:J
            ldc 128
            ladd
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.t0:J
         4: .line 304
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.t0:J
            lconst_0
            lcmp
            ifne 6
         5: .line 306
            aload 0 /* this */
            dup
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.t1:J
            lconst_1
            ladd
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.t1:J
         6: .line 308
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
            iconst_0
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.compress:([BI)V
         7: .line 309
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
            iconst_0
            invokestatic org.bouncycastle.util.Arrays.fill:([BB)V
         8: .line 310
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
            iconst_0
            iload 1 /* b */
            bastore
         9: .line 311
            aload 0 /* this */
            iconst_1
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
        10: .line 312
            goto 14
        11: .line 315
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
            iload 1 /* b */
            bastore
        12: .line 316
            aload 0 /* this */
            dup
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
            iconst_1
            iadd
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
        13: .line 317
            return
        14: .line 319
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int remainingLength
        end local 1 // byte b
        end local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   15     0             this  Lorg/bouncycastle/crypto/digests/Blake2bDigest;
            0   15     1                b  B
            1   15     2  remainingLength  I
    MethodParameters:
      Name  Flags
      b     

  public void update(byte[], int, int);
    descriptor: ([BII)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=7, args_size=4
        start local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
        start local 1 // byte[] message
        start local 2 // int offset
        start local 3 // int len
         0: .line 331
            aload 1 /* message */
            ifnull 1
            iload 3 /* len */
            ifne 2
         1: .line 333
      StackMap locals:
      StackMap stack:
            return
         2: .line 336
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* remainingLength */
        start local 4 // int remainingLength
         3: .line 338
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
            ifeq 19
         4: .line 342
            sipush 128
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
            isub
            istore 4 /* remainingLength */
         5: .line 343
            iload 4 /* remainingLength */
            iload 3 /* len */
            if_icmpge 16
         6: .line 345
            aload 1 /* message */
            iload 2 /* offset */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
         7: .line 346
            iload 4 /* remainingLength */
         8: .line 345
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         9: .line 347
            aload 0 /* this */
            dup
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.t0:J
            ldc 128
            ladd
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.t0:J
        10: .line 348
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.t0:J
            lconst_0
            lcmp
            ifne 12
        11: .line 350
            aload 0 /* this */
            dup
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.t1:J
            lconst_1
            ladd
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.t1:J
        12: .line 352
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
            iconst_0
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.compress:([BI)V
        13: .line 353
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
        14: .line 354
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
            iconst_0
            invokestatic org.bouncycastle.util.Arrays.fill:([BB)V
        15: .line 355
            goto 19
        16: .line 358
      StackMap locals:
      StackMap stack:
            aload 1 /* message */
            iload 2 /* offset */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
            iload 3 /* len */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        17: .line 359
            aload 0 /* this */
            dup
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
            iload 3 /* len */
            iadd
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
        18: .line 360
            return
        19: .line 366
      StackMap locals:
      StackMap stack:
            iload 2 /* offset */
            iload 3 /* len */
            iadd
            sipush 128
            isub
            istore 6 /* blockWiseLastPos */
        start local 6 // int blockWiseLastPos
        20: .line 367
            iload 2 /* offset */
            iload 4 /* remainingLength */
            iadd
            istore 5 /* messagePos */
        start local 5 // int messagePos
        21: goto 27
        22: .line 370
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            dup
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.t0:J
            ldc 128
            ladd
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.t0:J
        23: .line 371
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.t0:J
            lconst_0
            lcmp
            ifne 25
        24: .line 373
            aload 0 /* this */
            dup
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.t1:J
            lconst_1
            ladd
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.t1:J
        25: .line 375
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* message */
            iload 5 /* messagePos */
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.compress:([BI)V
        26: .line 367
            iinc 5 /* messagePos */ 128
      StackMap locals:
      StackMap stack:
        27: iload 5 /* messagePos */
            iload 6 /* blockWiseLastPos */
            if_icmplt 22
        28: .line 379
            aload 1 /* message */
            iload 5 /* messagePos */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
            iconst_0
            iload 2 /* offset */
            iload 3 /* len */
            iadd
        29: .line 380
            iload 5 /* messagePos */
            isub
        30: .line 379
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        31: .line 381
            aload 0 /* this */
            dup
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
            iload 2 /* offset */
            iload 3 /* len */
            iadd
            iload 5 /* messagePos */
            isub
            iadd
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
        32: .line 382
            return
        end local 6 // int blockWiseLastPos
        end local 5 // int messagePos
        end local 4 // int remainingLength
        end local 3 // int len
        end local 2 // int offset
        end local 1 // byte[] message
        end local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   33     0              this  Lorg/bouncycastle/crypto/digests/Blake2bDigest;
            0   33     1           message  [B
            0   33     2            offset  I
            0   33     3               len  I
            3   33     4   remainingLength  I
           21   33     5        messagePos  I
           20   33     6  blockWiseLastPos  I
    MethodParameters:
         Name  Flags
      message  
      offset   
      len      

  public int doFinal(byte[], int);
    descriptor: ([BI)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=5, args_size=3
        start local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
        start local 1 // byte[] out
        start local 2 // int outOffset
         0: .line 395
            aload 0 /* this */
            ldc -1
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.f0:J
         1: .line 396
            aload 0 /* this */
            dup
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.t0:J
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
            i2l
            ladd
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.t0:J
         2: .line 397
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
            ifle 4
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.t0:J
            lconst_0
            lcmp
            ifne 4
         3: .line 399
            aload 0 /* this */
            dup
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.t1:J
            lconst_1
            ladd
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.t1:J
         4: .line 401
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
            iconst_0
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.compress:([BI)V
         5: .line 402
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
            iconst_0
            invokestatic org.bouncycastle.util.Arrays.fill:([BB)V
         6: .line 403
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            lconst_0
            invokestatic org.bouncycastle.util.Arrays.fill:([JJ)V
         7: .line 405
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         8: goto 15
         9: .line 407
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            iload 3 /* i */
            laload
            invokestatic org.bouncycastle.util.Pack.longToLittleEndian:(J)[B
            astore 4 /* bytes */
        start local 4 // byte[] bytes
        10: .line 409
            iload 3 /* i */
            bipush 8
            imul
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.digestLength:I
            bipush 8
            isub
            if_icmpge 13
        11: .line 411
            aload 4 /* bytes */
            iconst_0
            aload 1 /* out */
            iload 2 /* outOffset */
            iload 3 /* i */
            bipush 8
            imul
            iadd
            bipush 8
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        12: .line 412
            goto 14
        13: .line 415
      StackMap locals: byte[]
      StackMap stack:
            aload 4 /* bytes */
            iconst_0
            aload 1 /* out */
            iload 2 /* outOffset */
            iload 3 /* i */
            bipush 8
            imul
            iadd
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.digestLength:I
            iload 3 /* i */
            bipush 8
            imul
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        end local 4 // byte[] bytes
        14: .line 405
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        15: iload 3 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            arraylength
            if_icmpge 16
            iload 3 /* i */
            bipush 8
            imul
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.digestLength:I
            if_icmplt 9
        end local 3 // int i
        16: .line 419
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            lconst_0
            invokestatic org.bouncycastle.util.Arrays.fill:([JJ)V
        17: .line 421
            aload 0 /* this */
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.reset:()V
        18: .line 423
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.digestLength:I
            ireturn
        end local 2 // int outOffset
        end local 1 // byte[] out
        end local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   19     0       this  Lorg/bouncycastle/crypto/digests/Blake2bDigest;
            0   19     1        out  [B
            0   19     2  outOffset  I
            8   16     3          i  I
           10   14     4      bytes  [B
    MethodParameters:
           Name  Flags
      out        
      outOffset  

  public void reset();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
         0: .line 433
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
         1: .line 434
            aload 0 /* this */
            lconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.f0:J
         2: .line 435
            aload 0 /* this */
            lconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.t0:J
         3: .line 436
            aload 0 /* this */
            lconst_0
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.t1:J
         4: .line 437
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
         5: .line 438
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
            iconst_0
            invokestatic org.bouncycastle.util.Arrays.fill:([BB)V
         6: .line 439
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.key:[B
            ifnull 9
         7: .line 441
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.key:[B
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.key:[B
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         8: .line 442
            aload 0 /* this */
            sipush 128
            putfield org.bouncycastle.crypto.digests.Blake2bDigest.bufferPos:I
         9: .line 444
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.init:()V
        10: .line 445
            return
        end local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lorg/bouncycastle/crypto/digests/Blake2bDigest;

  private void compress(byte[], int);
    descriptor: ([BI)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=9, locals=5, args_size=3
        start local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
        start local 1 // byte[] message
        start local 2 // int messagePos
         0: .line 450
            aload 0 /* this */
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.initializeInternalState:()V
         1: .line 452
            bipush 16
            newarray 11
            astore 3 /* m */
        start local 3 // long[] m
         2: .line 453
            iconst_0
            istore 4 /* j */
        start local 4 // int j
         3: goto 6
         4: .line 455
      StackMap locals: long[] int
      StackMap stack:
            aload 3 /* m */
            iload 4 /* j */
            aload 1 /* message */
            iload 2 /* messagePos */
            iload 4 /* j */
            bipush 8
            imul
            iadd
            invokestatic org.bouncycastle.util.Pack.littleEndianToLong:([BI)J
            lastore
         5: .line 453
            iinc 4 /* j */ 1
      StackMap locals:
      StackMap stack:
         6: iload 4 /* j */
            bipush 16
            if_icmplt 4
        end local 4 // int j
         7: .line 458
            iconst_0
            istore 4 /* round */
        start local 4 // int round
         8: goto 18
         9: .line 463
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* m */
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_sigma:[[B
            iload 4 /* round */
            aaload
            iconst_0
            baload
            laload
            aload 3 /* m */
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_sigma:[[B
            iload 4 /* round */
            aaload
            iconst_1
            baload
            laload
            iconst_0
            iconst_4
            bipush 8
            bipush 12
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.G:(JJIIII)V
        10: .line 464
            aload 0 /* this */
            aload 3 /* m */
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_sigma:[[B
            iload 4 /* round */
            aaload
            iconst_2
            baload
            laload
            aload 3 /* m */
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_sigma:[[B
            iload 4 /* round */
            aaload
            iconst_3
            baload
            laload
            iconst_1
            iconst_5
            bipush 9
            bipush 13
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.G:(JJIIII)V
        11: .line 465
            aload 0 /* this */
            aload 3 /* m */
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_sigma:[[B
            iload 4 /* round */
            aaload
            iconst_4
            baload
            laload
            aload 3 /* m */
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_sigma:[[B
            iload 4 /* round */
            aaload
            iconst_5
            baload
            laload
            iconst_2
            bipush 6
            bipush 10
            bipush 14
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.G:(JJIIII)V
        12: .line 466
            aload 0 /* this */
            aload 3 /* m */
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_sigma:[[B
            iload 4 /* round */
            aaload
            bipush 6
            baload
            laload
            aload 3 /* m */
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_sigma:[[B
            iload 4 /* round */
            aaload
            bipush 7
            baload
            laload
            iconst_3
            bipush 7
            bipush 11
            bipush 15
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.G:(JJIIII)V
        13: .line 468
            aload 0 /* this */
            aload 3 /* m */
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_sigma:[[B
            iload 4 /* round */
            aaload
            bipush 8
            baload
            laload
            aload 3 /* m */
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_sigma:[[B
            iload 4 /* round */
            aaload
            bipush 9
            baload
            laload
            iconst_0
            iconst_5
            bipush 10
            bipush 15
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.G:(JJIIII)V
        14: .line 469
            aload 0 /* this */
            aload 3 /* m */
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_sigma:[[B
            iload 4 /* round */
            aaload
            bipush 10
            baload
            laload
            aload 3 /* m */
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_sigma:[[B
            iload 4 /* round */
            aaload
            bipush 11
            baload
            laload
            iconst_1
            bipush 6
            bipush 11
            bipush 12
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.G:(JJIIII)V
        15: .line 470
            aload 0 /* this */
            aload 3 /* m */
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_sigma:[[B
            iload 4 /* round */
            aaload
            bipush 12
            baload
            laload
            aload 3 /* m */
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_sigma:[[B
            iload 4 /* round */
            aaload
            bipush 13
            baload
            laload
            iconst_2
            bipush 7
            bipush 8
            bipush 13
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.G:(JJIIII)V
        16: .line 471
            aload 0 /* this */
            aload 3 /* m */
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_sigma:[[B
            iload 4 /* round */
            aaload
            bipush 14
            baload
            laload
            aload 3 /* m */
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.blake2b_sigma:[[B
            iload 4 /* round */
            aaload
            bipush 15
            baload
            laload
            iconst_3
            iconst_4
            bipush 9
            bipush 14
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.G:(JJIIII)V
        17: .line 458
            iinc 4 /* round */ 1
      StackMap locals:
      StackMap stack:
        18: iload 4 /* round */
            getstatic org.bouncycastle.crypto.digests.Blake2bDigest.ROUNDS:I
            if_icmplt 9
        end local 4 // int round
        19: .line 475
            iconst_0
            istore 4 /* offset */
        start local 4 // int offset
        20: goto 23
        21: .line 477
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            iload 4 /* offset */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            iload 4 /* offset */
            laload
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 4 /* offset */
            laload
            lxor
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 4 /* offset */
            bipush 8
            iadd
            laload
            lxor
            lastore
        22: .line 475
            iinc 4 /* offset */ 1
      StackMap locals:
      StackMap stack:
        23: iload 4 /* offset */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.chainValue:[J
            arraylength
            if_icmplt 21
        end local 4 // int offset
        24: .line 479
            return
        end local 3 // long[] m
        end local 2 // int messagePos
        end local 1 // byte[] message
        end local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   25     0        this  Lorg/bouncycastle/crypto/digests/Blake2bDigest;
            0   25     1     message  [B
            0   25     2  messagePos  I
            2   25     3           m  [J
            3    7     4           j  I
            8   19     4       round  I
           20   24     4      offset  I
    MethodParameters:
            Name  Flags
      message     
      messagePos  

  private void G(long, long, int, int, int, int);
    descriptor: (JJIIII)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=9, args_size=7
        start local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
        start local 1 // long m1
        start local 3 // long m2
        start local 5 // int posA
        start local 6 // int posB
        start local 7 // int posC
        start local 8 // int posD
         0: .line 484
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 5 /* posA */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 5 /* posA */
            laload
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 6 /* posB */
            laload
            ladd
            lload 1 /* m1 */
            ladd
            lastore
         1: .line 485
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 8 /* posD */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 8 /* posD */
            laload
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 5 /* posA */
            laload
            lxor
            bipush 32
            invokestatic org.bouncycastle.crypto.digests.Blake2bDigest.rotr64:(JI)J
            lastore
         2: .line 486
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 7 /* posC */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 7 /* posC */
            laload
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 8 /* posD */
            laload
            ladd
            lastore
         3: .line 487
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 6 /* posB */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 6 /* posB */
            laload
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 7 /* posC */
            laload
            lxor
            bipush 24
            invokestatic org.bouncycastle.crypto.digests.Blake2bDigest.rotr64:(JI)J
            lastore
         4: .line 488
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 5 /* posA */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 5 /* posA */
            laload
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 6 /* posB */
            laload
            ladd
            lload 3 /* m2 */
            ladd
            lastore
         5: .line 489
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 8 /* posD */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 8 /* posD */
            laload
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 5 /* posA */
            laload
            lxor
            bipush 16
            invokestatic org.bouncycastle.crypto.digests.Blake2bDigest.rotr64:(JI)J
            lastore
         6: .line 490
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 7 /* posC */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 7 /* posC */
            laload
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 8 /* posD */
            laload
            ladd
            lastore
         7: .line 491
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 6 /* posB */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 6 /* posB */
            laload
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.internalState:[J
            iload 7 /* posC */
            laload
            lxor
            bipush 63
            invokestatic org.bouncycastle.crypto.digests.Blake2bDigest.rotr64:(JI)J
            lastore
         8: .line 492
            return
        end local 8 // int posD
        end local 7 // int posC
        end local 6 // int posB
        end local 5 // int posA
        end local 3 // long m2
        end local 1 // long m1
        end local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/bouncycastle/crypto/digests/Blake2bDigest;
            0    9     1    m1  J
            0    9     3    m2  J
            0    9     5  posA  I
            0    9     6  posB  I
            0    9     7  posC  I
            0    9     8  posD  I
    MethodParameters:
      Name  Flags
      m1    
      m2    
      posA  
      posB  
      posC  
      posD  

  private static long rotr64(long, int);
    descriptor: (JI)J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // long x
        start local 2 // int rot
         0: .line 496
            lload 0 /* x */
            iload 2 /* rot */
            lushr
            lload 0 /* x */
            bipush 64
            iload 2 /* rot */
            isub
            lshl
            lor
            lreturn
        end local 2 // int rot
        end local 0 // long x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     x  J
            0    1     2   rot  I
    MethodParameters:
      Name  Flags
      x     
      rot   

  public java.lang.String getAlgorithmName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
         0: .line 506
            ldc "BLAKE2b"
            areturn
        end local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/crypto/digests/Blake2bDigest;

  public int getDigestSize();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
         0: .line 516
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.digestLength:I
            ireturn
        end local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/crypto/digests/Blake2bDigest;

  public int getByteLength();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
         0: .line 527
            sipush 128
            ireturn
        end local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/crypto/digests/Blake2bDigest;

  public void clearKey();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
         0: .line 536
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.key:[B
            ifnull 3
         1: .line 538
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.key:[B
            iconst_0
            invokestatic org.bouncycastle.util.Arrays.fill:([BB)V
         2: .line 539
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.buffer:[B
            iconst_0
            invokestatic org.bouncycastle.util.Arrays.fill:([BB)V
         3: .line 541
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/bouncycastle/crypto/digests/Blake2bDigest;

  public void clearSalt();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
         0: .line 549
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.salt:[B
            ifnull 2
         1: .line 551
            aload 0 /* this */
            getfield org.bouncycastle.crypto.digests.Blake2bDigest.salt:[B
            iconst_0
            invokestatic org.bouncycastle.util.Arrays.fill:([BB)V
         2: .line 553
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.bouncycastle.crypto.digests.Blake2bDigest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bouncycastle/crypto/digests/Blake2bDigest;
}
SourceFile: "Blake2bDigest.java"