public class org.bouncycastle.crypto.generators.Argon2BytesGenerator
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.crypto.generators.Argon2BytesGenerator
  super_class: java.lang.Object
{
  private static final int ARGON2_BLOCK_SIZE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1024

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

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

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

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

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

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

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

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

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

  private org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block[] memory;
    descriptor: [Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
    flags: (0x0002) ACC_PRIVATE

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

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

  private org.bouncycastle.crypto.params.Argon2Parameters parameters;
    descriptor: Lorg/bouncycastle/crypto/params/Argon2Parameters;
    flags: (0x0002) ACC_PRIVATE

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

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
         0: .line 48
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 51
            return
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;

  public void init(org.bouncycastle.crypto.params.Argon2Parameters);
    descriptor: (Lorg/bouncycastle/crypto/params/Argon2Parameters;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // org.bouncycastle.crypto.params.Argon2Parameters parameters
         0: .line 60
            aload 0 /* this */
            aload 1 /* parameters */
            putfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.parameters:Lorg/bouncycastle/crypto/params/Argon2Parameters;
         1: .line 63
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
            iconst_1
            if_icmpge 3
         2: .line 65
            new java.lang.IllegalStateException
            dup
            ldc "lanes must be greater than 1"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 67
      StackMap locals:
      StackMap stack:
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
            ldc 16777216
            if_icmple 5
         4: .line 69
            new java.lang.IllegalStateException
            dup
            ldc "lanes must be less than 16777216"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 71
      StackMap locals:
      StackMap stack:
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getMemory:()I
            iconst_2
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
            imul
            if_icmpge 7
         6: .line 73
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "memory is less than: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iconst_2
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
            imul
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " expected "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iconst_2
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
            imul
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 75
      StackMap locals:
      StackMap stack:
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getIterations:()I
            iconst_1
            if_icmpge 9
         8: .line 77
            new java.lang.IllegalStateException
            dup
            ldc "iterations is less than: 1"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 80
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.doInit:(Lorg/bouncycastle/crypto/params/Argon2Parameters;)V
        10: .line 81
            return
        end local 1 // org.bouncycastle.crypto.params.Argon2Parameters parameters
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0        this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0   11     1  parameters  Lorg/bouncycastle/crypto/params/Argon2Parameters;
    MethodParameters:
            Name  Flags
      parameters  

  public int generateBytes(char[], byte[]);
    descriptor: ([C[B)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // char[] password
        start local 2 // byte[] out
         0: .line 85
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.parameters:Lorg/bouncycastle/crypto/params/Argon2Parameters;
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getCharToByteConverter:()Lorg/bouncycastle/crypto/CharToByteConverter;
            aload 1 /* password */
            invokeinterface org.bouncycastle.crypto.CharToByteConverter.convert:([C)[B
            aload 2 /* out */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.generateBytes:([B[B)I
            ireturn
        end local 2 // byte[] out
        end local 1 // char[] password
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    1     1  password  [C
            0    1     2       out  [B
    MethodParameters:
          Name  Flags
      password  
      out       

  public int generateBytes(char[], byte[], int, int);
    descriptor: ([C[BII)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // char[] password
        start local 2 // byte[] out
        start local 3 // int outOff
        start local 4 // int outLen
         0: .line 90
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.parameters:Lorg/bouncycastle/crypto/params/Argon2Parameters;
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getCharToByteConverter:()Lorg/bouncycastle/crypto/CharToByteConverter;
            aload 1 /* password */
            invokeinterface org.bouncycastle.crypto.CharToByteConverter.convert:([C)[B
            aload 2 /* out */
            iload 3 /* outOff */
            iload 4 /* outLen */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.generateBytes:([B[BII)I
            ireturn
        end local 4 // int outLen
        end local 3 // int outOff
        end local 2 // byte[] out
        end local 1 // char[] password
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    1     1  password  [C
            0    1     2       out  [B
            0    1     3    outOff  I
            0    1     4    outLen  I
    MethodParameters:
          Name  Flags
      password  
      out       
      outOff    
      outLen    

  public int generateBytes(byte[], byte[]);
    descriptor: ([B[B)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // byte[] password
        start local 2 // byte[] out
         0: .line 95
            aload 0 /* this */
            aload 1 /* password */
            aload 2 /* out */
            iconst_0
            aload 2 /* out */
            arraylength
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.generateBytes:([B[BII)I
            ireturn
        end local 2 // byte[] out
        end local 1 // byte[] password
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    1     1  password  [B
            0    1     2       out  [B
    MethodParameters:
          Name  Flags
      password  
      out       

  public int generateBytes(byte[], byte[], int, int);
    descriptor: ([B[BII)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // byte[] password
        start local 2 // byte[] out
        start local 3 // int outOff
        start local 4 // int outLen
         0: .line 100
            iload 4 /* outLen */
            iconst_4
            if_icmpge 2
         1: .line 102
            new java.lang.IllegalStateException
            dup
            ldc "output length less than 4"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 105
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* password */
            iload 4 /* outLen */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.initialize:([BI)V
         3: .line 106
            aload 0 /* this */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.fillMemoryBlocks:()V
         4: .line 107
            aload 0 /* this */
            iload 4 /* outLen */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.digest:(I)V
         5: .line 109
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.result:[B
            iconst_0
            aload 2 /* out */
            iload 3 /* outOff */
            iload 4 /* outLen */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         6: .line 111
            aload 0 /* this */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.reset:()V
         7: .line 113
            iload 4 /* outLen */
            ireturn
        end local 4 // int outLen
        end local 3 // int outOff
        end local 2 // byte[] out
        end local 1 // byte[] password
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    8     1  password  [B
            0    8     2       out  [B
            0    8     3    outOff  I
            0    8     4    outLen  I
    MethodParameters:
          Name  Flags
      password  
      out       
      outOff    
      outLen    

  private void reset();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
         0: .line 120
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         1: goto 5
         2: .line 122
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            iload 1 /* i */
            aaload
            astore 2 /* b */
        start local 2 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block b
         3: .line 124
            aload 2 /* b */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.clear:()V
        end local 2 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block b
         4: .line 120
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 1 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            arraylength
            if_icmplt 2
        end local 1 // int i
         6: .line 126
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
         7: .line 127
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.result:[B
            iconst_0
            invokestatic org.bouncycastle.util.Arrays.fill:([BB)V
         8: .line 128
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.parameters:Lorg/bouncycastle/crypto/params/Argon2Parameters;
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.doInit:(Lorg/bouncycastle/crypto/params/Argon2Parameters;)V
         9: .line 129
            return
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            1    6     1     i  I
            3    4     2     b  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;

  private void doInit(org.bouncycastle.crypto.params.Argon2Parameters);
    descriptor: (Lorg/bouncycastle/crypto/params/Argon2Parameters;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // org.bouncycastle.crypto.params.Argon2Parameters parameters
         0: .line 135
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getMemory:()I
            istore 2 /* memoryBlocks */
        start local 2 // int memoryBlocks
         1: .line 137
            iload 2 /* memoryBlocks */
            bipush 8
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
            imul
            if_icmpge 3
         2: .line 139
            bipush 8
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
            imul
            istore 2 /* memoryBlocks */
         3: .line 142
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iload 2 /* memoryBlocks */
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
            iconst_4
            imul
            idiv
            putfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.segmentLength:I
         4: .line 143
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.segmentLength:I
            iconst_4
            imul
            putfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
         5: .line 146
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.segmentLength:I
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
            iconst_4
            imul
            imul
            istore 2 /* memoryBlocks */
         6: .line 148
            aload 0 /* this */
            iload 2 /* memoryBlocks */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.initMemory:(I)V
         7: .line 149
            return
        end local 2 // int memoryBlocks
        end local 1 // org.bouncycastle.crypto.params.Argon2Parameters parameters
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0          this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    8     1    parameters  Lorg/bouncycastle/crypto/params/Argon2Parameters;
            1    8     2  memoryBlocks  I
    MethodParameters:
            Name  Flags
      parameters  

  private void initMemory(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // int memoryBlocks
         0: .line 154
            aload 0 /* this */
            iload 1 /* memoryBlocks */
            anewarray org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block
            putfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
         1: .line 156
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 5
         3: .line 158
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            iload 2 /* i */
            new org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block
            dup
            invokespecial org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.<init>:()V
            aastore
         4: .line 156
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 2 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            arraylength
            if_icmplt 3
        end local 2 // int i
         6: .line 160
            return
        end local 1 // int memoryBlocks
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    7     1  memoryBlocks  I
            2    6     2             i  I
    MethodParameters:
              Name  Flags
      memoryBlocks  

  private void fillBlock(org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block, org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block, org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block, boolean);
    descriptor: (Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=19, locals=8, args_size=5
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block X
        start local 2 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block Y
        start local 3 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block currentBlock
        start local 4 // boolean withXor
         0: .line 164
            new org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block
            dup
            invokespecial org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.<init>:()V
            astore 5 /* R */
        start local 5 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block R
         1: .line 165
            new org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block
            dup
            invokespecial org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.<init>:()V
            astore 6 /* Z */
        start local 6 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block Z
         2: .line 167
            aload 5 /* R */
            aload 1 /* X */
            aload 2 /* Y */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.xor:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;)V
         3: .line 168
            aload 6 /* Z */
            aload 5 /* R */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.copyBlock:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;)V
         4: .line 172
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         5: goto 15
         6: .line 175
      StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block int
      StackMap stack:
            aload 0 /* this */
            aload 6 /* Z */
         7: .line 176
            bipush 16
            iload 7 /* i */
            imul
            bipush 16
            iload 7 /* i */
            imul
            iconst_1
            iadd
            bipush 16
            iload 7 /* i */
            imul
            iconst_2
            iadd
         8: .line 177
            bipush 16
            iload 7 /* i */
            imul
            iconst_3
            iadd
            bipush 16
            iload 7 /* i */
            imul
            iconst_4
            iadd
            bipush 16
            iload 7 /* i */
            imul
            iconst_5
            iadd
         9: .line 178
            bipush 16
            iload 7 /* i */
            imul
            bipush 6
            iadd
            bipush 16
            iload 7 /* i */
            imul
            bipush 7
            iadd
            bipush 16
            iload 7 /* i */
            imul
            bipush 8
            iadd
        10: .line 179
            bipush 16
            iload 7 /* i */
            imul
            bipush 9
            iadd
            bipush 16
            iload 7 /* i */
            imul
            bipush 10
            iadd
            bipush 16
            iload 7 /* i */
            imul
            bipush 11
            iadd
        11: .line 180
            bipush 16
            iload 7 /* i */
            imul
            bipush 12
            iadd
            bipush 16
            iload 7 /* i */
            imul
            bipush 13
            iadd
            bipush 16
            iload 7 /* i */
            imul
            bipush 14
            iadd
        12: .line 181
            bipush 16
            iload 7 /* i */
            imul
            bipush 15
            iadd
        13: .line 175
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.roundFunction:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIIIIIIIIIIIIIII)V
        14: .line 172
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        15: iload 7 /* i */
            bipush 8
            if_icmplt 6
        end local 7 // int i
        16: .line 187
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        17: goto 27
        18: .line 190
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 6 /* Z */
        19: .line 191
            iconst_2
            iload 7 /* i */
            imul
            iconst_2
            iload 7 /* i */
            imul
            iconst_1
            iadd
            iconst_2
            iload 7 /* i */
            imul
            bipush 16
            iadd
        20: .line 192
            iconst_2
            iload 7 /* i */
            imul
            bipush 17
            iadd
            iconst_2
            iload 7 /* i */
            imul
            bipush 32
            iadd
            iconst_2
            iload 7 /* i */
            imul
            bipush 33
            iadd
        21: .line 193
            iconst_2
            iload 7 /* i */
            imul
            bipush 48
            iadd
            iconst_2
            iload 7 /* i */
            imul
            bipush 49
            iadd
            iconst_2
            iload 7 /* i */
            imul
            bipush 64
            iadd
        22: .line 194
            iconst_2
            iload 7 /* i */
            imul
            bipush 65
            iadd
            iconst_2
            iload 7 /* i */
            imul
            bipush 80
            iadd
            iconst_2
            iload 7 /* i */
            imul
            bipush 81
            iadd
        23: .line 195
            iconst_2
            iload 7 /* i */
            imul
            bipush 96
            iadd
            iconst_2
            iload 7 /* i */
            imul
            bipush 97
            iadd
            iconst_2
            iload 7 /* i */
            imul
            bipush 112
            iadd
        24: .line 196
            iconst_2
            iload 7 /* i */
            imul
            bipush 113
            iadd
        25: .line 190
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.roundFunction:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIIIIIIIIIIIIIII)V
        26: .line 187
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        27: iload 7 /* i */
            bipush 8
            if_icmplt 18
        end local 7 // int i
        28: .line 201
            iload 4 /* withXor */
            ifeq 31
        29: .line 203
            aload 3 /* currentBlock */
            aload 5 /* R */
            aload 6 /* Z */
            aload 3 /* currentBlock */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.xor:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;)V
        30: .line 204
            goto 32
        31: .line 207
      StackMap locals:
      StackMap stack:
            aload 3 /* currentBlock */
            aload 5 /* R */
            aload 6 /* Z */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.xor:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;)V
        32: .line 209
      StackMap locals:
      StackMap stack:
            return
        end local 6 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block Z
        end local 5 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block R
        end local 4 // boolean withXor
        end local 3 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block currentBlock
        end local 2 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block Y
        end local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block X
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   33     0          this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0   33     1             X  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            0   33     2             Y  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            0   33     3  currentBlock  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            0   33     4       withXor  Z
            1   33     5             R  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            2   33     6             Z  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            5   16     7             i  I
           17   28     7             i  I
    MethodParameters:
              Name  Flags
      X             
      Y             
      currentBlock  
      withXor       

  private void fillMemoryBlocks();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=5, args_size=1
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
         0: .line 213
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         1: goto 13
         2: .line 215
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 2 /* j */
        start local 2 // int j
         3: goto 11
         4: .line 217
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 3 /* k */
        start local 3 // int k
         5: goto 9
         6: .line 219
      StackMap locals: int
      StackMap stack:
            new org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position
            dup
            iload 1 /* i */
            iload 3 /* k */
            iload 2 /* j */
            iconst_0
            invokespecial org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.<init>:(IIII)V
            astore 4 /* position */
        start local 4 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position position
         7: .line 220
            aload 0 /* this */
            aload 4 /* position */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.fillSegment:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;)V
        end local 4 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position position
         8: .line 217
            iinc 3 /* k */ 1
      StackMap locals:
      StackMap stack:
         9: iload 3 /* k */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.parameters:Lorg/bouncycastle/crypto/params/Argon2Parameters;
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
            if_icmplt 6
        end local 3 // int k
        10: .line 215
            iinc 2 /* j */ 1
      StackMap locals:
      StackMap stack:
        11: iload 2 /* j */
            iconst_4
            if_icmplt 4
        end local 2 // int j
        12: .line 213
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: iload 1 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.parameters:Lorg/bouncycastle/crypto/params/Argon2Parameters;
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getIterations:()I
            if_icmplt 2
        end local 1 // int i
        14: .line 224
            return
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   15     0      this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            1   14     1         i  I
            3   12     2         j  I
            5   10     3         k  I
            7    8     4  position  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;

  private void fillSegment(org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position);
    descriptor: (Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=17, args_size=2
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position position
         0: .line 229
            aconst_null
            astore 2 /* addressBlock */
        start local 2 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block addressBlock
         1: aconst_null
            astore 3 /* inputBlock */
        start local 3 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block inputBlock
         2: aconst_null
            astore 4 /* zeroBlock */
        start local 4 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block zeroBlock
         3: .line 231
            aload 0 /* this */
            aload 1 /* position */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.isDataIndependentAddressing:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;)Z
            istore 5 /* dataIndependentAddressing */
        start local 5 // boolean dataIndependentAddressing
         4: .line 232
            aload 1 /* position */
            invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.getStartingIndex:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;)I
            istore 6 /* startingIndex */
        start local 6 // int startingIndex
         5: .line 233
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.lane:I
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
            imul
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.slice:I
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.segmentLength:I
            imul
            iadd
            iload 6 /* startingIndex */
            iadd
            istore 7 /* currentOffset */
        start local 7 // int currentOffset
         6: .line 234
            aload 0 /* this */
            iload 7 /* currentOffset */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.getPrevOffset:(I)I
            istore 8 /* prevOffset */
        start local 8 // int prevOffset
         7: .line 236
            iload 5 /* dataIndependentAddressing */
            ifeq 12
         8: .line 238
            new org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block
            dup
            invokespecial org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.<init>:()V
            astore 2 /* addressBlock */
         9: .line 239
            new org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block
            dup
            invokespecial org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.<init>:()V
            astore 4 /* zeroBlock */
        10: .line 240
            new org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block
            dup
            invokespecial org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.<init>:()V
            astore 3 /* inputBlock */
        11: .line 242
            aload 0 /* this */
            aload 1 /* position */
            aload 4 /* zeroBlock */
            aload 3 /* inputBlock */
            aload 2 /* addressBlock */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.initAddressBlocks:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;)V
        12: .line 245
      StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block int int int int
      StackMap stack:
            aload 1 /* position */
            iload 6 /* startingIndex */
            putfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.index:I
            goto 25
        13: .line 247
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 7 /* currentOffset */
            iload 8 /* prevOffset */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.rotatePrevOffset:(II)I
            istore 8 /* prevOffset */
        14: .line 249
            aload 0 /* this */
            aload 1 /* position */
            aload 2 /* addressBlock */
            aload 3 /* inputBlock */
            aload 4 /* zeroBlock */
            iload 8 /* prevOffset */
            iload 5 /* dataIndependentAddressing */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.getPseudoRandom:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IZ)J
            lstore 9 /* pseudoRandom */
        start local 9 // long pseudoRandom
        15: .line 250
            aload 0 /* this */
            aload 1 /* position */
            lload 9 /* pseudoRandom */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.getRefLane:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;J)I
            istore 11 /* refLane */
        start local 11 // int refLane
        16: .line 251
            aload 0 /* this */
            aload 1 /* position */
            lload 9 /* pseudoRandom */
            iload 11 /* refLane */
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.lane:I
            if_icmpne 17
            iconst_1
            goto 18
      StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block int int int int long int
      StackMap stack: org.bouncycastle.crypto.generators.Argon2BytesGenerator org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position long
        17: iconst_0
      StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block int int int int long int
      StackMap stack: org.bouncycastle.crypto.generators.Argon2BytesGenerator org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position long int
        18: invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.getRefColumn:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;JZ)I
            istore 12 /* refColumn */
        start local 12 // int refColumn
        19: .line 254
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            iload 8 /* prevOffset */
            aaload
            astore 13 /* prevBlock */
        start local 13 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block prevBlock
        20: .line 255
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
            iload 11 /* refLane */
            imul
            iload 12 /* refColumn */
            iadd
            aaload
            astore 14 /* refBlock */
        start local 14 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block refBlock
        21: .line 256
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            iload 7 /* currentOffset */
            aaload
            astore 15 /* currentBlock */
        start local 15 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block currentBlock
        22: .line 258
            aload 0 /* this */
            aload 1 /* position */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.isWithXor:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;)Z
            istore 16 /* withXor */
        start local 16 // boolean withXor
        23: .line 259
            aload 0 /* this */
            aload 13 /* prevBlock */
            aload 14 /* refBlock */
            aload 15 /* currentBlock */
            iload 16 /* withXor */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.fillBlock:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Z)V
        end local 16 // boolean withXor
        end local 15 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block currentBlock
        end local 14 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block refBlock
        end local 13 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block prevBlock
        end local 12 // int refColumn
        end local 11 // int refLane
        end local 9 // long pseudoRandom
        24: .line 245
            aload 1 /* position */
            dup
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.index:I
            iconst_1
            iadd
            putfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.index:I
            iinc 7 /* currentOffset */ 1
            iinc 8 /* prevOffset */ 1
      StackMap locals:
      StackMap stack:
        25: aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.index:I
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.segmentLength:I
            if_icmplt 13
        26: .line 261
            return
        end local 8 // int prevOffset
        end local 7 // int currentOffset
        end local 6 // int startingIndex
        end local 5 // boolean dataIndependentAddressing
        end local 4 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block zeroBlock
        end local 3 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block inputBlock
        end local 2 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block addressBlock
        end local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position position
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   27     0                       this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0   27     1                   position  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;
            1   27     2               addressBlock  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            2   27     3                 inputBlock  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            3   27     4                  zeroBlock  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            4   27     5  dataIndependentAddressing  Z
            5   27     6              startingIndex  I
            6   27     7              currentOffset  I
            7   27     8                 prevOffset  I
           15   24     9               pseudoRandom  J
           16   24    11                    refLane  I
           19   24    12                  refColumn  I
           20   24    13                  prevBlock  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
           21   24    14                   refBlock  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
           22   24    15               currentBlock  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
           23   24    16                    withXor  Z
    MethodParameters:
          Name  Flags
      position  

  private boolean isDataIndependentAddressing(org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position);
    descriptor: (Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position position
         0: .line 265
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.parameters:Lorg/bouncycastle/crypto/params/Argon2Parameters;
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getType:()I
            iconst_1
            if_icmpeq 6
         1: .line 266
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.parameters:Lorg/bouncycastle/crypto/params/Argon2Parameters;
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getType:()I
            iconst_2
            if_icmpne 5
         2: .line 267
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.pass:I
            ifne 5
         3: .line 268
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.slice:I
            iconst_2
         4: .line 265
            if_icmplt 6
      StackMap locals:
      StackMap stack:
         5: iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         6: iconst_1
            ireturn
        end local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position position
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    7     1  position  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;
    MethodParameters:
          Name  Flags
      position  

  private void initAddressBlocks(org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position, org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block, org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block, org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block);
    descriptor: (Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position position
        start local 2 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block zeroBlock
        start local 3 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block inputBlock
        start local 4 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block addressBlock
         0: .line 274
            aload 3 /* inputBlock */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
            iconst_0
            aload 0 /* this */
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.pass:I
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.intToLong:(I)J
            lastore
         1: .line 275
            aload 3 /* inputBlock */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
            iconst_1
            aload 0 /* this */
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.lane:I
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.intToLong:(I)J
            lastore
         2: .line 276
            aload 3 /* inputBlock */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
            iconst_2
            aload 0 /* this */
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.slice:I
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.intToLong:(I)J
            lastore
         3: .line 277
            aload 3 /* inputBlock */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
            iconst_3
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            arraylength
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.intToLong:(I)J
            lastore
         4: .line 278
            aload 3 /* inputBlock */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
            iconst_4
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.parameters:Lorg/bouncycastle/crypto/params/Argon2Parameters;
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getIterations:()I
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.intToLong:(I)J
            lastore
         5: .line 279
            aload 3 /* inputBlock */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
            iconst_5
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.parameters:Lorg/bouncycastle/crypto/params/Argon2Parameters;
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getType:()I
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.intToLong:(I)J
            lastore
         6: .line 281
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.pass:I
            ifne 8
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.slice:I
            ifne 8
         7: .line 284
            aload 0 /* this */
            aload 2 /* zeroBlock */
            aload 3 /* inputBlock */
            aload 4 /* addressBlock */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.nextAddresses:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;)V
         8: .line 286
      StackMap locals:
      StackMap stack:
            return
        end local 4 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block addressBlock
        end local 3 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block inputBlock
        end local 2 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block zeroBlock
        end local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position position
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0          this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    9     1      position  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;
            0    9     2     zeroBlock  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            0    9     3    inputBlock  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            0    9     4  addressBlock  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
    MethodParameters:
              Name  Flags
      position      
      zeroBlock     
      inputBlock    
      addressBlock  

  private boolean isWithXor(org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position);
    descriptor: (Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position position
         0: .line 290
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.pass:I
            ifeq 1
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.parameters:Lorg/bouncycastle/crypto/params/Argon2Parameters;
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getVersion:()I
            bipush 16
            if_icmpne 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
            goto 3
      StackMap locals:
      StackMap stack:
         2: iconst_1
      StackMap locals:
      StackMap stack: int
         3: ireturn
        end local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position position
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    4     1  position  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;
    MethodParameters:
          Name  Flags
      position  

  private int getPrevOffset(int);
    descriptor: (I)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // int currentOffset
         0: .line 295
            iload 1 /* currentOffset */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
            irem
            ifne 2
         1: .line 298
            iload 1 /* currentOffset */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
            iadd
            iconst_1
            isub
            ireturn
         2: .line 303
      StackMap locals:
      StackMap stack:
            iload 1 /* currentOffset */
            iconst_1
            isub
            ireturn
        end local 1 // int currentOffset
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    3     1  currentOffset  I
    MethodParameters:
               Name  Flags
      currentOffset  

  private int rotatePrevOffset(int, int);
    descriptor: (II)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // int currentOffset
        start local 2 // int prevOffset
         0: .line 309
            iload 1 /* currentOffset */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
            irem
            iconst_1
            if_icmpne 2
         1: .line 311
            iload 1 /* currentOffset */
            iconst_1
            isub
            istore 2 /* prevOffset */
         2: .line 313
      StackMap locals:
      StackMap stack:
            iload 2 /* prevOffset */
            ireturn
        end local 2 // int prevOffset
        end local 1 // int currentOffset
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    3     1  currentOffset  I
            0    3     2     prevOffset  I
    MethodParameters:
               Name  Flags
      currentOffset  
      prevOffset     

  private static int getStartingIndex(org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position);
    descriptor: (Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position position
         0: .line 318
            aload 0 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.pass:I
            ifne 2
            aload 0 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.slice:I
            ifne 2
         1: .line 320
            iconst_2
            ireturn
         2: .line 324
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position position
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0  position  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;
    MethodParameters:
          Name  Flags
      position  

  private void nextAddresses(org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block, org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block, org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block);
    descriptor: (Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=4
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block zeroBlock
        start local 2 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block inputBlock
        start local 3 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block addressBlock
         0: .line 330
            aload 2 /* inputBlock */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
            bipush 6
            dup2
            laload
            lconst_1
            ladd
            lastore
         1: .line 331
            aload 0 /* this */
            aload 1 /* zeroBlock */
            aload 2 /* inputBlock */
            aload 3 /* addressBlock */
            iconst_0
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.fillBlock:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Z)V
         2: .line 332
            aload 0 /* this */
            aload 1 /* zeroBlock */
            aload 3 /* addressBlock */
            aload 3 /* addressBlock */
            iconst_0
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.fillBlock:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Z)V
         3: .line 333
            return
        end local 3 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block addressBlock
        end local 2 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block inputBlock
        end local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block zeroBlock
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    4     1     zeroBlock  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            0    4     2    inputBlock  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            0    4     3  addressBlock  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
    MethodParameters:
              Name  Flags
      zeroBlock     
      inputBlock    
      addressBlock  

  private long getPseudoRandom(org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position, org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block, org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block, org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block, int, boolean);
    descriptor: (Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IZ)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=7
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position position
        start local 2 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block addressBlock
        start local 3 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block inputBlock
        start local 4 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block zeroBlock
        start local 5 // int prevOffset
        start local 6 // boolean dataIndependentAddressing
         0: .line 339
            iload 6 /* dataIndependentAddressing */
            ifeq 4
         1: .line 341
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.index:I
            sipush 128
            irem
            ifne 3
         2: .line 343
            aload 0 /* this */
            aload 4 /* zeroBlock */
            aload 3 /* inputBlock */
            aload 2 /* addressBlock */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.nextAddresses:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;)V
         3: .line 345
      StackMap locals:
      StackMap stack:
            aload 2 /* addressBlock */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.index:I
            sipush 128
            irem
            laload
            lreturn
         4: .line 349
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            iload 5 /* prevOffset */
            aaload
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
            iconst_0
            laload
            lreturn
        end local 6 // boolean dataIndependentAddressing
        end local 5 // int prevOffset
        end local 4 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block zeroBlock
        end local 3 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block inputBlock
        end local 2 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block addressBlock
        end local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position position
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0    5     0                       this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    5     1                   position  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;
            0    5     2               addressBlock  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            0    5     3                 inputBlock  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            0    5     4                  zeroBlock  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            0    5     5                 prevOffset  I
            0    5     6  dataIndependentAddressing  Z
    MethodParameters:
                           Name  Flags
      position                   
      addressBlock               
      inputBlock                 
      zeroBlock                  
      prevOffset                 
      dataIndependentAddressing  

  private int getRefLane(org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position, long);
    descriptor: (Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;J)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position position
        start local 2 // long pseudoRandom
         0: .line 355
            lload 2 /* pseudoRandom */
            bipush 32
            lushr
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.parameters:Lorg/bouncycastle/crypto/params/Argon2Parameters;
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
            i2l
            lrem
            l2i
            istore 4 /* refLane */
        start local 4 // int refLane
         1: .line 357
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.pass:I
            ifne 3
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.slice:I
            ifne 3
         2: .line 360
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.lane:I
            istore 4 /* refLane */
         3: .line 362
      StackMap locals: int
      StackMap stack:
            iload 4 /* refLane */
            ireturn
        end local 4 // int refLane
        end local 2 // long pseudoRandom
        end local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position position
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    4     1      position  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;
            0    4     2  pseudoRandom  J
            1    4     4       refLane  I
    MethodParameters:
              Name  Flags
      position      
      pseudoRandom  

  private int getRefColumn(org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position, long, boolean);
    descriptor: (Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;JZ)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=9, args_size=4
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position position
        start local 2 // long pseudoRandom
        start local 4 // boolean sameLane
         0: .line 372
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.pass:I
            ifne 9
         1: .line 374
            iconst_0
            istore 6 /* startPosition */
        start local 6 // int startPosition
         2: .line 376
            iload 4 /* sameLane */
            ifeq 5
         3: .line 379
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.slice:I
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.segmentLength:I
            imul
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.index:I
            iadd
            iconst_1
            isub
            istore 5 /* referenceAreaSize */
        start local 5 // int referenceAreaSize
         4: .line 380
            goto 16
        end local 5 // int referenceAreaSize
         5: .line 384
      StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position long int top int
      StackMap stack:
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.slice:I
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.segmentLength:I
            imul
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.index:I
            ifne 6
            iconst_m1
            goto 7
      StackMap locals:
      StackMap stack: int
         6: iconst_0
      StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position long int top int
      StackMap stack: int int
         7: iadd
            istore 5 /* referenceAreaSize */
        start local 5 // int referenceAreaSize
         8: .line 387
            goto 16
        end local 6 // int startPosition
        end local 5 // int referenceAreaSize
         9: .line 390
      StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position long int
      StackMap stack:
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.slice:I
            iconst_1
            iadd
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.segmentLength:I
            imul
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
            irem
            istore 6 /* startPosition */
        start local 6 // int startPosition
        10: .line 392
            iload 4 /* sameLane */
            ifeq 13
        11: .line 394
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.segmentLength:I
            isub
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.index:I
            iadd
            iconst_1
            isub
            istore 5 /* referenceAreaSize */
        start local 5 // int referenceAreaSize
        12: .line 395
            goto 16
        end local 5 // int referenceAreaSize
        13: .line 398
      StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position long int top int
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.segmentLength:I
            isub
            aload 1 /* position */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.index:I
            ifne 14
            iconst_m1
            goto 15
      StackMap locals:
      StackMap stack: int
        14: iconst_0
      StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position long int top int
      StackMap stack: int int
        15: iadd
            istore 5 /* referenceAreaSize */
        start local 5 // int referenceAreaSize
        16: .line 402
      StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position long int int int
      StackMap stack:
            lload 2 /* pseudoRandom */
            ldc 4294967295
            land
            lstore 7 /* relativePosition */
        start local 7 // long relativePosition
        17: .line 404
            lload 7 /* relativePosition */
            lload 7 /* relativePosition */
            lmul
            bipush 32
            lushr
            lstore 7 /* relativePosition */
        18: .line 405
            iload 5 /* referenceAreaSize */
            iconst_1
            isub
            i2l
            iload 5 /* referenceAreaSize */
            i2l
            lload 7 /* relativePosition */
            lmul
            bipush 32
            lushr
            lsub
            lstore 7 /* relativePosition */
        19: .line 407
            iload 6 /* startPosition */
            i2l
            lload 7 /* relativePosition */
            ladd
            l2i
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
            irem
            ireturn
        end local 7 // long relativePosition
        end local 6 // int startPosition
        end local 5 // int referenceAreaSize
        end local 4 // boolean sameLane
        end local 2 // long pseudoRandom
        end local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position position
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   20     0               this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0   20     1           position  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;
            0   20     2       pseudoRandom  J
            0   20     4           sameLane  Z
            4    5     5  referenceAreaSize  I
            8    9     5  referenceAreaSize  I
           12   13     5  referenceAreaSize  I
           16   20     5  referenceAreaSize  I
            2    9     6      startPosition  I
           10   20     6      startPosition  I
           17   20     7   relativePosition  J
    MethodParameters:
              Name  Flags
      position      
      pseudoRandom  
      sameLane      

  private void digest(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // int outputLength
         0: .line 412
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
            iconst_1
            isub
            aaload
            astore 2 /* finalBlock */
        start local 2 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block finalBlock
         1: .line 415
            iconst_1
            istore 3 /* i */
        start local 3 // int i
         2: goto 6
         3: .line 417
      StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block int
      StackMap stack:
            iload 3 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
            imul
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
            iconst_1
            isub
            iadd
            istore 4 /* lastBlockInLane */
        start local 4 // int lastBlockInLane
         4: .line 418
            aload 2 /* finalBlock */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            iload 4 /* lastBlockInLane */
            aaload
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.xorWith:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;)V
        end local 4 // int lastBlockInLane
         5: .line 415
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 3 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.parameters:Lorg/bouncycastle/crypto/params/Argon2Parameters;
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
            if_icmplt 3
        end local 3 // int i
         7: .line 421
            aload 2 /* finalBlock */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.toBytes:()[B
            astore 3 /* finalBlockBytes */
        start local 3 // byte[] finalBlockBytes
         8: .line 423
            aload 0 /* this */
            aload 0 /* this */
            aload 3 /* finalBlockBytes */
            iload 1 /* outputLength */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.hash:([BI)[B
            putfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.result:[B
         9: .line 424
            return
        end local 3 // byte[] finalBlockBytes
        end local 2 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block finalBlock
        end local 1 // int outputLength
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   10     0             this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0   10     1     outputLength  I
            1   10     2       finalBlock  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            2    7     3                i  I
            4    5     4  lastBlockInLane  I
            8   10     3  finalBlockBytes  [B
    MethodParameters:
              Name  Flags
      outputLength  

  private byte[] initialHash(org.bouncycastle.crypto.params.Argon2Parameters, int, byte[]);
    descriptor: (Lorg/bouncycastle/crypto/params/Argon2Parameters;I[B)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=4
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // org.bouncycastle.crypto.params.Argon2Parameters parameters
        start local 2 // int outputLength
        start local 3 // byte[] password
         0: .line 432
            new org.bouncycastle.crypto.digests.Blake2bDigest
            dup
            sipush 512
            invokespecial org.bouncycastle.crypto.digests.Blake2bDigest.<init>:(I)V
            astore 4 /* blake */
        start local 4 // org.bouncycastle.crypto.digests.Blake2bDigest blake
         1: .line 434
            aload 4 /* blake */
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
            invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addIntToLittleEndian:(Lorg/bouncycastle/crypto/Digest;I)V
         2: .line 435
            aload 4 /* blake */
            iload 2 /* outputLength */
            invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addIntToLittleEndian:(Lorg/bouncycastle/crypto/Digest;I)V
         3: .line 436
            aload 4 /* blake */
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getMemory:()I
            invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addIntToLittleEndian:(Lorg/bouncycastle/crypto/Digest;I)V
         4: .line 437
            aload 4 /* blake */
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getIterations:()I
            invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addIntToLittleEndian:(Lorg/bouncycastle/crypto/Digest;I)V
         5: .line 438
            aload 4 /* blake */
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getVersion:()I
            invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addIntToLittleEndian:(Lorg/bouncycastle/crypto/Digest;I)V
         6: .line 439
            aload 4 /* blake */
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getType:()I
            invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addIntToLittleEndian:(Lorg/bouncycastle/crypto/Digest;I)V
         7: .line 441
            aload 4 /* blake */
            aload 3 /* password */
            invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addByteString:(Lorg/bouncycastle/crypto/Digest;[B)V
         8: .line 442
            aload 4 /* blake */
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getSalt:()[B
            invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addByteString:(Lorg/bouncycastle/crypto/Digest;[B)V
         9: .line 443
            aload 4 /* blake */
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getSecret:()[B
            invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addByteString:(Lorg/bouncycastle/crypto/Digest;[B)V
        10: .line 444
            aload 4 /* blake */
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getAdditional:()[B
            invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addByteString:(Lorg/bouncycastle/crypto/Digest;[B)V
        11: .line 446
            aload 4 /* blake */
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.getDigestSize:()I
            newarray 8
            astore 5 /* blake2hash */
        start local 5 // byte[] blake2hash
        12: .line 447
            aload 4 /* blake */
            aload 5 /* blake2hash */
            iconst_0
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.doFinal:([BI)I
            pop
        13: .line 449
            aload 5 /* blake2hash */
            areturn
        end local 5 // byte[] blake2hash
        end local 4 // org.bouncycastle.crypto.digests.Blake2bDigest blake
        end local 3 // byte[] password
        end local 2 // int outputLength
        end local 1 // org.bouncycastle.crypto.params.Argon2Parameters parameters
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   14     0          this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0   14     1    parameters  Lorg/bouncycastle/crypto/params/Argon2Parameters;
            0   14     2  outputLength  I
            0   14     3      password  [B
            1   14     4         blake  Lorg/bouncycastle/crypto/digests/Blake2bDigest;
           12   14     5    blake2hash  [B
    MethodParameters:
              Name  Flags
      parameters    
      outputLength  
      password      

  private byte[] hash(byte[], int);
    descriptor: ([BI)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=11, args_size=3
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // byte[] input
        start local 2 // int outputLength
         0: .line 457
            iload 2 /* outputLength */
            newarray 8
            astore 3 /* result */
        start local 3 // byte[] result
         1: .line 458
            iload 2 /* outputLength */
            invokestatic org.bouncycastle.util.Pack.intToLittleEndian:(I)[B
            astore 4 /* outlenBytes */
        start local 4 // byte[] outlenBytes
         2: .line 460
            bipush 64
            istore 5 /* blake2bLength */
        start local 5 // int blake2bLength
         3: .line 462
            iload 2 /* outputLength */
            iload 5 /* blake2bLength */
            if_icmpgt 9
         4: .line 464
            new org.bouncycastle.crypto.digests.Blake2bDigest
            dup
            iload 2 /* outputLength */
            bipush 8
            imul
            invokespecial org.bouncycastle.crypto.digests.Blake2bDigest.<init>:(I)V
            astore 6 /* blake */
        start local 6 // org.bouncycastle.crypto.digests.Blake2bDigest blake
         5: .line 466
            aload 6 /* blake */
            aload 4 /* outlenBytes */
            iconst_0
            aload 4 /* outlenBytes */
            arraylength
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.update:([BII)V
         6: .line 467
            aload 6 /* blake */
            aload 1 /* input */
            iconst_0
            aload 1 /* input */
            arraylength
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.update:([BII)V
         7: .line 468
            aload 6 /* blake */
            aload 3 /* result */
            iconst_0
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.doFinal:([BI)I
            pop
        end local 6 // org.bouncycastle.crypto.digests.Blake2bDigest blake
         8: .line 469
            goto 28
         9: .line 472
      StackMap locals: byte[] byte[] int
      StackMap stack:
            new org.bouncycastle.crypto.digests.Blake2bDigest
            dup
            iload 5 /* blake2bLength */
            bipush 8
            imul
            invokespecial org.bouncycastle.crypto.digests.Blake2bDigest.<init>:(I)V
            astore 6 /* digest */
        start local 6 // org.bouncycastle.crypto.digests.Blake2bDigest digest
        10: .line 473
            iload 5 /* blake2bLength */
            newarray 8
            astore 7 /* outBuffer */
        start local 7 // byte[] outBuffer
        11: .line 476
            aload 6 /* digest */
            aload 4 /* outlenBytes */
            iconst_0
            aload 4 /* outlenBytes */
            arraylength
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.update:([BII)V
        12: .line 477
            aload 6 /* digest */
            aload 1 /* input */
            iconst_0
            aload 1 /* input */
            arraylength
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.update:([BII)V
        13: .line 478
            aload 6 /* digest */
            aload 7 /* outBuffer */
            iconst_0
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.doFinal:([BI)I
            pop
        14: .line 480
            aload 7 /* outBuffer */
            iconst_0
            aload 3 /* result */
            iconst_0
            iload 5 /* blake2bLength */
            iconst_2
            idiv
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        15: .line 482
            iload 2 /* outputLength */
            bipush 31
            iadd
            bipush 32
            idiv
            iconst_2
            isub
            istore 8 /* r */
        start local 8 // int r
        16: .line 484
            iload 5 /* blake2bLength */
            iconst_2
            idiv
            istore 9 /* position */
        start local 9 // int position
        17: .line 486
            iconst_2
            istore 10 /* i */
        start local 10 // int i
        18: goto 23
        19: .line 489
      StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator byte[] int byte[] byte[] int org.bouncycastle.crypto.digests.Blake2bDigest byte[] int int int
      StackMap stack:
            aload 6 /* digest */
            aload 7 /* outBuffer */
            iconst_0
            aload 7 /* outBuffer */
            arraylength
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.update:([BII)V
        20: .line 490
            aload 6 /* digest */
            aload 7 /* outBuffer */
            iconst_0
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.doFinal:([BI)I
            pop
        21: .line 492
            aload 7 /* outBuffer */
            iconst_0
            aload 3 /* result */
            iload 9 /* position */
            iload 5 /* blake2bLength */
            iconst_2
            idiv
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        22: .line 486
            iinc 10 /* i */ 1
            iload 9 /* position */
            iload 5 /* blake2bLength */
            iconst_2
            idiv
            iadd
            istore 9 /* position */
      StackMap locals:
      StackMap stack:
        23: iload 10 /* i */
            iload 8 /* r */
            if_icmple 19
        end local 10 // int i
        24: .line 495
            iload 2 /* outputLength */
            bipush 32
            iload 8 /* r */
            imul
            isub
            istore 10 /* lastLength */
        start local 10 // int lastLength
        25: .line 498
            new org.bouncycastle.crypto.digests.Blake2bDigest
            dup
            iload 10 /* lastLength */
            bipush 8
            imul
            invokespecial org.bouncycastle.crypto.digests.Blake2bDigest.<init>:(I)V
            astore 6 /* digest */
        26: .line 500
            aload 6 /* digest */
            aload 7 /* outBuffer */
            iconst_0
            aload 7 /* outBuffer */
            arraylength
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.update:([BII)V
        27: .line 501
            aload 6 /* digest */
            aload 3 /* result */
            iload 9 /* position */
            invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.doFinal:([BI)I
            pop
        end local 10 // int lastLength
        end local 9 // int position
        end local 8 // int r
        end local 7 // byte[] outBuffer
        end local 6 // org.bouncycastle.crypto.digests.Blake2bDigest digest
        28: .line 504
      StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator byte[] int byte[] byte[] int
      StackMap stack:
            aload 3 /* result */
            areturn
        end local 5 // int blake2bLength
        end local 4 // byte[] outlenBytes
        end local 3 // byte[] result
        end local 2 // int outputLength
        end local 1 // byte[] input
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   29     0           this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0   29     1          input  [B
            0   29     2   outputLength  I
            1   29     3         result  [B
            2   29     4    outlenBytes  [B
            3   29     5  blake2bLength  I
            5    8     6          blake  Lorg/bouncycastle/crypto/digests/Blake2bDigest;
           10   28     6         digest  Lorg/bouncycastle/crypto/digests/Blake2bDigest;
           11   28     7      outBuffer  [B
           16   28     8              r  I
           17   28     9       position  I
           18   24    10              i  I
           25   28    10     lastLength  I
    MethodParameters:
              Name  Flags
      input         
      outputLength  

  private void roundFunction(org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int);
    descriptor: (Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIIIIIIIIIIIIIII)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=18, args_size=18
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block block
        start local 2 // int v0
        start local 3 // int v1
        start local 4 // int v2
        start local 5 // int v3
        start local 6 // int v4
        start local 7 // int v5
        start local 8 // int v6
        start local 9 // int v7
        start local 10 // int v8
        start local 11 // int v9
        start local 12 // int v10
        start local 13 // int v11
        start local 14 // int v12
        start local 15 // int v13
        start local 16 // int v14
        start local 17 // int v15
         0: .line 514
            aload 0 /* this */
            aload 1 /* block */
            iload 2 /* v0 */
            iload 6 /* v4 */
            iload 10 /* v8 */
            iload 14 /* v12 */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.F:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIII)V
         1: .line 515
            aload 0 /* this */
            aload 1 /* block */
            iload 3 /* v1 */
            iload 7 /* v5 */
            iload 11 /* v9 */
            iload 15 /* v13 */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.F:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIII)V
         2: .line 516
            aload 0 /* this */
            aload 1 /* block */
            iload 4 /* v2 */
            iload 8 /* v6 */
            iload 12 /* v10 */
            iload 16 /* v14 */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.F:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIII)V
         3: .line 517
            aload 0 /* this */
            aload 1 /* block */
            iload 5 /* v3 */
            iload 9 /* v7 */
            iload 13 /* v11 */
            iload 17 /* v15 */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.F:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIII)V
         4: .line 519
            aload 0 /* this */
            aload 1 /* block */
            iload 2 /* v0 */
            iload 7 /* v5 */
            iload 12 /* v10 */
            iload 17 /* v15 */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.F:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIII)V
         5: .line 520
            aload 0 /* this */
            aload 1 /* block */
            iload 3 /* v1 */
            iload 8 /* v6 */
            iload 13 /* v11 */
            iload 14 /* v12 */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.F:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIII)V
         6: .line 521
            aload 0 /* this */
            aload 1 /* block */
            iload 4 /* v2 */
            iload 9 /* v7 */
            iload 10 /* v8 */
            iload 15 /* v13 */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.F:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIII)V
         7: .line 522
            aload 0 /* this */
            aload 1 /* block */
            iload 5 /* v3 */
            iload 6 /* v4 */
            iload 11 /* v9 */
            iload 16 /* v14 */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.F:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIII)V
         8: .line 523
            return
        end local 17 // int v15
        end local 16 // int v14
        end local 15 // int v13
        end local 14 // int v12
        end local 13 // int v11
        end local 12 // int v10
        end local 11 // int v9
        end local 10 // int v8
        end local 9 // int v7
        end local 8 // int v6
        end local 7 // int v5
        end local 6 // int v4
        end local 5 // int v3
        end local 4 // int v2
        end local 3 // int v1
        end local 2 // int v0
        end local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block block
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    9     0   this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    9     1  block  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            0    9     2     v0  I
            0    9     3     v1  I
            0    9     4     v2  I
            0    9     5     v3  I
            0    9     6     v4  I
            0    9     7     v5  I
            0    9     8     v6  I
            0    9     9     v7  I
            0    9    10     v8  I
            0    9    11     v9  I
            0    9    12    v10  I
            0    9    13    v11  I
            0    9    14    v12  I
            0    9    15    v13  I
            0    9    16    v14  I
            0    9    17    v15  I
    MethodParameters:
       Name  Flags
      block  
      v0     
      v1     
      v2     
      v3     
      v4     
      v5     
      v6     
      v7     
      v8     
      v9     
      v10    
      v11    
      v12    
      v13    
      v14    
      v15    

  private void F(org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block, int, int, int, int);
    descriptor: (Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIII)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=6, args_size=6
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block block
        start local 2 // int a
        start local 3 // int b
        start local 4 // int c
        start local 5 // int d
         0: .line 527
            aload 0 /* this */
            aload 1 /* block */
            iload 2 /* a */
            iload 3 /* b */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.fBlaMka:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;II)V
         1: .line 528
            aload 0 /* this */
            aload 1 /* block */
            iload 5 /* d */
            iload 2 /* a */
            ldc 32
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.rotr64:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIJ)V
         2: .line 530
            aload 0 /* this */
            aload 1 /* block */
            iload 4 /* c */
            iload 5 /* d */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.fBlaMka:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;II)V
         3: .line 531
            aload 0 /* this */
            aload 1 /* block */
            iload 3 /* b */
            iload 4 /* c */
            ldc 24
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.rotr64:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIJ)V
         4: .line 533
            aload 0 /* this */
            aload 1 /* block */
            iload 2 /* a */
            iload 3 /* b */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.fBlaMka:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;II)V
         5: .line 534
            aload 0 /* this */
            aload 1 /* block */
            iload 5 /* d */
            iload 2 /* a */
            ldc 16
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.rotr64:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIJ)V
         6: .line 536
            aload 0 /* this */
            aload 1 /* block */
            iload 4 /* c */
            iload 5 /* d */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.fBlaMka:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;II)V
         7: .line 537
            aload 0 /* this */
            aload 1 /* block */
            iload 3 /* b */
            iload 4 /* c */
            ldc 63
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.rotr64:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIJ)V
         8: .line 538
            return
        end local 5 // int d
        end local 4 // int c
        end local 3 // int b
        end local 2 // int a
        end local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block block
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    9     0   this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    9     1  block  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            0    9     2      a  I
            0    9     3      b  I
            0    9     4      c  I
            0    9     5      d  I
    MethodParameters:
       Name  Flags
      block  
      a      
      b      
      c      
      d      

  private void fBlaMka(org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block, int, int);
    descriptor: (Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;II)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=6, args_size=4
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block block
        start local 2 // int x
        start local 3 // int y
         0: .line 547
            aload 1 /* block */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
            iload 2 /* x */
            laload
            ldc 4294967295
            land
            aload 1 /* block */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
            iload 3 /* y */
            laload
            ldc 4294967295
            land
            lmul
            lstore 4 /* xy */
        start local 4 // long xy
         1: .line 549
            aload 1 /* block */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
            iload 2 /* x */
            aload 1 /* block */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
            iload 2 /* x */
            laload
            aload 1 /* block */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
            iload 3 /* y */
            laload
            ladd
            ldc 2
            lload 4 /* xy */
            lmul
            ladd
            lastore
         2: .line 550
            return
        end local 4 // long xy
        end local 3 // int y
        end local 2 // int x
        end local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block block
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    3     1  block  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            0    3     2      x  I
            0    3     3      y  I
            1    3     4     xy  J
    MethodParameters:
       Name  Flags
      block  
      x      
      y      

  private void rotr64(org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block, int, int, long);
    descriptor: (Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIJ)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=10, locals=8, args_size=5
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block block
        start local 2 // int v
        start local 3 // int w
        start local 4 // long c
         0: .line 554
            aload 1 /* block */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
            iload 2 /* v */
            laload
            aload 1 /* block */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
            iload 3 /* w */
            laload
            lxor
            lstore 6 /* temp */
        start local 6 // long temp
         1: .line 555
            aload 1 /* block */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
            iload 2 /* v */
            lload 6 /* temp */
            lload 4 /* c */
            l2i
            lushr
            lload 6 /* temp */
            ldc 64
            lload 4 /* c */
            lsub
            l2i
            lshl
            lor
            lastore
         2: .line 556
            return
        end local 6 // long temp
        end local 4 // long c
        end local 3 // int w
        end local 2 // int v
        end local 1 // org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block block
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    3     1  block  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            0    3     2      v  I
            0    3     3      w  I
            0    3     4      c  J
            1    3     6   temp  J
    MethodParameters:
       Name  Flags
      block  
      v      
      w      
      c      

  private void initialize(byte[], int);
    descriptor: ([BI)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // byte[] password
        start local 2 // int outputLength
         0: .line 560
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.parameters:Lorg/bouncycastle/crypto/params/Argon2Parameters;
            iload 2 /* outputLength */
            aload 1 /* password */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.initialHash:(Lorg/bouncycastle/crypto/params/Argon2Parameters;I[B)[B
            astore 3 /* initialHash */
        start local 3 // byte[] initialHash
         1: .line 562
            aload 0 /* this */
            aload 3 /* initialHash */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.fillFirstBlocks:([B)V
         2: .line 563
            return
        end local 3 // byte[] initialHash
        end local 2 // int outputLength
        end local 1 // byte[] password
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    3     1      password  [B
            0    3     2  outputLength  I
            1    3     3   initialHash  [B
    MethodParameters:
              Name  Flags
      password      
      outputLength  

  private static void addIntToLittleEndian(org.bouncycastle.crypto.Digest, int);
    descriptor: (Lorg/bouncycastle/crypto/Digest;I)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.bouncycastle.crypto.Digest digest
        start local 1 // int n
         0: .line 567
            aload 0 /* digest */
            iload 1 /* n */
            i2b
            invokeinterface org.bouncycastle.crypto.Digest.update:(B)V
         1: .line 568
            aload 0 /* digest */
            iload 1 /* n */
            bipush 8
            iushr
            i2b
            invokeinterface org.bouncycastle.crypto.Digest.update:(B)V
         2: .line 569
            aload 0 /* digest */
            iload 1 /* n */
            bipush 16
            iushr
            i2b
            invokeinterface org.bouncycastle.crypto.Digest.update:(B)V
         3: .line 570
            aload 0 /* digest */
            iload 1 /* n */
            bipush 24
            iushr
            i2b
            invokeinterface org.bouncycastle.crypto.Digest.update:(B)V
         4: .line 571
            return
        end local 1 // int n
        end local 0 // org.bouncycastle.crypto.Digest digest
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0  digest  Lorg/bouncycastle/crypto/Digest;
            0    5     1       n  I
    MethodParameters:
        Name  Flags
      digest  
      n       

  private static void addByteString(org.bouncycastle.crypto.Digest, byte[]);
    descriptor: (Lorg/bouncycastle/crypto/Digest;[B)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.bouncycastle.crypto.Digest digest
        start local 1 // byte[] octets
         0: .line 575
            aload 1 /* octets */
            ifnull 4
         1: .line 577
            aload 0 /* digest */
            aload 1 /* octets */
            arraylength
            invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addIntToLittleEndian:(Lorg/bouncycastle/crypto/Digest;I)V
         2: .line 578
            aload 0 /* digest */
            aload 1 /* octets */
            iconst_0
            aload 1 /* octets */
            arraylength
            invokeinterface org.bouncycastle.crypto.Digest.update:([BII)V
         3: .line 579
            goto 5
         4: .line 582
      StackMap locals:
      StackMap stack:
            aload 0 /* digest */
            iconst_0
            invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addIntToLittleEndian:(Lorg/bouncycastle/crypto/Digest;I)V
         5: .line 584
      StackMap locals:
      StackMap stack:
            return
        end local 1 // byte[] octets
        end local 0 // org.bouncycastle.crypto.Digest digest
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0  digest  Lorg/bouncycastle/crypto/Digest;
            0    6     1  octets  [B
    MethodParameters:
        Name  Flags
      digest  
      octets  

  private void fillFirstBlocks(byte[]);
    descriptor: ([B)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // byte[] initialHash
         0: .line 592
            iconst_4
            newarray 8
            astore 2 /* zeroBytes */
        start local 2 // byte[] zeroBytes
         1: .line 593
            iconst_4
            newarray 8
            dup
            iconst_0
            iconst_1
            bastore
            astore 3 /* oneBytes */
        start local 3 // byte[] oneBytes
         2: .line 595
            aload 0 /* this */
            aload 1 /* initialHash */
            aload 2 /* zeroBytes */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.getInitialHashLong:([B[B)[B
            astore 4 /* initialHashWithZeros */
        start local 4 // byte[] initialHashWithZeros
         3: .line 596
            aload 0 /* this */
            aload 1 /* initialHash */
            aload 3 /* oneBytes */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.getInitialHashLong:([B[B)[B
            astore 5 /* initialHashWithOnes */
        start local 5 // byte[] initialHashWithOnes
         4: .line 598
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         5: goto 13
         6: .line 600
      StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator byte[] byte[] byte[] byte[] byte[] int
      StackMap stack:
            iload 6 /* i */
            aload 4 /* initialHashWithZeros */
            bipush 68
            invokestatic org.bouncycastle.util.Pack.intToLittleEndian:(I[BI)V
         7: .line 601
            iload 6 /* i */
            aload 5 /* initialHashWithOnes */
            bipush 68
            invokestatic org.bouncycastle.util.Pack.intToLittleEndian:(I[BI)V
         8: .line 603
            aload 0 /* this */
            aload 4 /* initialHashWithZeros */
            sipush 1024
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.hash:([BI)[B
            astore 7 /* blockhashBytes */
        start local 7 // byte[] blockhashBytes
         9: .line 604
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            iload 6 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
            imul
            iconst_0
            iadd
            aaload
            aload 7 /* blockhashBytes */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.fromBytes:([B)V
        10: .line 606
            aload 0 /* this */
            aload 5 /* initialHashWithOnes */
            sipush 1024
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.hash:([BI)[B
            astore 7 /* blockhashBytes */
        11: .line 607
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
            iload 6 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
            imul
            iconst_1
            iadd
            aaload
            aload 7 /* blockhashBytes */
            invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.fromBytes:([B)V
        end local 7 // byte[] blockhashBytes
        12: .line 598
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: iload 6 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.parameters:Lorg/bouncycastle/crypto/params/Argon2Parameters;
            invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
            if_icmplt 6
        end local 6 // int i
        14: .line 609
            return
        end local 5 // byte[] initialHashWithOnes
        end local 4 // byte[] initialHashWithZeros
        end local 3 // byte[] oneBytes
        end local 2 // byte[] zeroBytes
        end local 1 // byte[] initialHash
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   15     0                  this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0   15     1           initialHash  [B
            1   15     2             zeroBytes  [B
            2   15     3              oneBytes  [B
            3   15     4  initialHashWithZeros  [B
            4   15     5   initialHashWithOnes  [B
            5   14     6                     i  I
            9   12     7        blockhashBytes  [B
    MethodParameters:
             Name  Flags
      initialHash  

  private byte[] getInitialHashLong(byte[], byte[]);
    descriptor: ([B[B)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // byte[] initialHash
        start local 2 // byte[] appendix
         0: .line 613
            bipush 72
            newarray 8
            astore 3 /* initialHashLong */
        start local 3 // byte[] initialHashLong
         1: .line 615
            aload 1 /* initialHash */
            iconst_0
            aload 3 /* initialHashLong */
            iconst_0
            bipush 64
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         2: .line 616
            aload 2 /* appendix */
            iconst_0
            aload 3 /* initialHashLong */
            bipush 64
            iconst_4
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         3: .line 618
            aload 3 /* initialHashLong */
            areturn
        end local 3 // byte[] initialHashLong
        end local 2 // byte[] appendix
        end local 1 // byte[] initialHash
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    4     0             this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    4     1      initialHash  [B
            0    4     2         appendix  [B
            1    4     3  initialHashLong  [B
    MethodParameters:
             Name  Flags
      initialHash  
      appendix     

  private long intToLong(int);
    descriptor: (I)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
        start local 1 // int x
         0: .line 623
            iload 1 /* x */
            i2l
            ldc 4294967295
            land
            lreturn
        end local 1 // int x
        end local 0 // org.bouncycastle.crypto.generators.Argon2BytesGenerator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator;
            0    1     1     x  I
    MethodParameters:
      Name  Flags
      x     
}
SourceFile: "Argon2BytesGenerator.java"
NestMembers:
  org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block  org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position
InnerClasses:
  private Block = org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block of org.bouncycastle.crypto.generators.Argon2BytesGenerator
  private Position = org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position of org.bouncycastle.crypto.generators.Argon2BytesGenerator