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 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: return
end local 0 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 start local 1 0: aload 0
aload 1
putfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.parameters:Lorg/bouncycastle/crypto/params/Argon2Parameters;
1: aload 1
invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
iconst_1
if_icmpge 3
2: new java.lang.IllegalStateException
dup
ldc "lanes must be greater than 1"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
ldc 16777216
if_icmple 5
4: new java.lang.IllegalStateException
dup
ldc "lanes must be less than 16777216"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getMemory:()I
iconst_2
aload 1
invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
imul
if_icmpge 7
6: 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
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
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: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getIterations:()I
iconst_1
if_icmpge 9
8: new java.lang.IllegalStateException
dup
ldc "iterations is less than: 1"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
9: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.doInit:(Lorg/bouncycastle/crypto/params/Argon2Parameters;)V
10: return
end local 1 end local 0 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 start local 1 start local 2 0: aload 0
aload 0
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
invokeinterface org.bouncycastle.crypto.CharToByteConverter.convert:([C)[B
aload 2
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.generateBytes:([B[B)I
ireturn
end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 3 start local 4 0: aload 0
aload 0
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
invokeinterface org.bouncycastle.crypto.CharToByteConverter.convert:([C)[B
aload 2
iload 3
iload 4
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.generateBytes:([B[BII)I
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 0: aload 0
aload 1
aload 2
iconst_0
aload 2
arraylength
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.generateBytes:([B[BII)I
ireturn
end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 3 start local 4 0: iload 4
iconst_4
if_icmpge 2
1: new java.lang.IllegalStateException
dup
ldc "output length less than 4"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 4
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.initialize:([BI)V
3: aload 0
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.fillMemoryBlocks:()V
4: aload 0
iload 4
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.digest:(I)V
5: aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.result:[B
iconst_0
aload 2
iload 3
iload 4
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
6: aload 0
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.reset:()V
7: iload 4
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 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 0: iconst_0
istore 1
start local 1 1: goto 5
2: StackMap locals: int
StackMap stack:
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
iload 1
aaload
astore 2
start local 2 3: aload 2
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.clear:()V
end local 2 4: iinc 1 1
StackMap locals:
StackMap stack:
5: iload 1
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
arraylength
if_icmplt 2
end local 1 6: aload 0
aconst_null
putfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
7: aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.result:[B
iconst_0
invokestatic org.bouncycastle.util.Arrays.fill:([BB)V
8: aload 0
aload 0
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: return
end local 0 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 start local 1 0: aload 1
invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getMemory:()I
istore 2
start local 2 1: iload 2
bipush 8
aload 1
invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
imul
if_icmpge 3
2: bipush 8
aload 1
invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
imul
istore 2
3: StackMap locals: int
StackMap stack:
aload 0
iload 2
aload 1
invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
iconst_4
imul
idiv
putfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.segmentLength:I
4: aload 0
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.segmentLength:I
iconst_4
imul
putfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
5: aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.segmentLength:I
aload 1
invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
iconst_4
imul
imul
istore 2
6: aload 0
iload 2
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.initMemory:(I)V
7: return
end local 2 end local 1 end local 0 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 start local 1 0: aload 0
iload 1
anewarray org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block
putfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
1: iconst_0
istore 2
start local 2 2: goto 5
3: StackMap locals: int
StackMap stack:
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
iload 2
new org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block
dup
invokespecial org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.<init>:()V
aastore
4: iinc 2 1
StackMap locals:
StackMap stack:
5: iload 2
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
arraylength
if_icmplt 3
end local 2 6: return
end local 1 end local 0 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 start local 1 start local 2 start local 3 start local 4 0: new org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block
dup
invokespecial org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.<init>:()V
astore 5
start local 5 1: new org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block
dup
invokespecial org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.<init>:()V
astore 6
start local 6 2: aload 5
aload 1
aload 2
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.xor:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;)V
3: aload 6
aload 5
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.copyBlock:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;)V
4: iconst_0
istore 7
start local 7 5: goto 15
6: StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block int
StackMap stack:
aload 0
aload 6
7: bipush 16
iload 7
imul
bipush 16
iload 7
imul
iconst_1
iadd
bipush 16
iload 7
imul
iconst_2
iadd
8: bipush 16
iload 7
imul
iconst_3
iadd
bipush 16
iload 7
imul
iconst_4
iadd
bipush 16
iload 7
imul
iconst_5
iadd
9: bipush 16
iload 7
imul
bipush 6
iadd
bipush 16
iload 7
imul
bipush 7
iadd
bipush 16
iload 7
imul
bipush 8
iadd
10: bipush 16
iload 7
imul
bipush 9
iadd
bipush 16
iload 7
imul
bipush 10
iadd
bipush 16
iload 7
imul
bipush 11
iadd
11: bipush 16
iload 7
imul
bipush 12
iadd
bipush 16
iload 7
imul
bipush 13
iadd
bipush 16
iload 7
imul
bipush 14
iadd
12: bipush 16
iload 7
imul
bipush 15
iadd
13: invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.roundFunction:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIIIIIIIIIIIIIII)V
14: iinc 7 1
StackMap locals:
StackMap stack:
15: iload 7
bipush 8
if_icmplt 6
end local 7 16: iconst_0
istore 7
start local 7 17: goto 27
18: StackMap locals:
StackMap stack:
aload 0
aload 6
19: iconst_2
iload 7
imul
iconst_2
iload 7
imul
iconst_1
iadd
iconst_2
iload 7
imul
bipush 16
iadd
20: iconst_2
iload 7
imul
bipush 17
iadd
iconst_2
iload 7
imul
bipush 32
iadd
iconst_2
iload 7
imul
bipush 33
iadd
21: iconst_2
iload 7
imul
bipush 48
iadd
iconst_2
iload 7
imul
bipush 49
iadd
iconst_2
iload 7
imul
bipush 64
iadd
22: iconst_2
iload 7
imul
bipush 65
iadd
iconst_2
iload 7
imul
bipush 80
iadd
iconst_2
iload 7
imul
bipush 81
iadd
23: iconst_2
iload 7
imul
bipush 96
iadd
iconst_2
iload 7
imul
bipush 97
iadd
iconst_2
iload 7
imul
bipush 112
iadd
24: iconst_2
iload 7
imul
bipush 113
iadd
25: invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.roundFunction:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIIIIIIIIIIIIIII)V
26: iinc 7 1
StackMap locals:
StackMap stack:
27: iload 7
bipush 8
if_icmplt 18
end local 7 28: iload 4
ifeq 31
29: aload 3
aload 5
aload 6
aload 3
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: goto 32
31: StackMap locals:
StackMap stack:
aload 3
aload 5
aload 6
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.xor:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;)V
32: StackMap locals:
StackMap stack:
return
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 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 0: iconst_0
istore 1
start local 1 1: goto 13
2: StackMap locals: int
StackMap stack:
iconst_0
istore 2
start local 2 3: goto 11
4: StackMap locals: int
StackMap stack:
iconst_0
istore 3
start local 3 5: goto 9
6: StackMap locals: int
StackMap stack:
new org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position
dup
iload 1
iload 3
iload 2
iconst_0
invokespecial org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.<init>:(IIII)V
astore 4
start local 4 7: aload 0
aload 4
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.fillSegment:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;)V
end local 4 8: iinc 3 1
StackMap locals:
StackMap stack:
9: iload 3
aload 0
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 10: iinc 2 1
StackMap locals:
StackMap stack:
11: iload 2
iconst_4
if_icmplt 4
end local 2 12: iinc 1 1
StackMap locals:
StackMap stack:
13: iload 1
aload 0
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 14: return
end local 0 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 start local 1 0: aconst_null
astore 2
start local 2 1: aconst_null
astore 3
start local 3 2: aconst_null
astore 4
start local 4 3: aload 0
aload 1
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.isDataIndependentAddressing:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;)Z
istore 5
start local 5 4: aload 1
invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.getStartingIndex:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;)I
istore 6
start local 6 5: aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.lane:I
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
imul
aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.slice:I
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.segmentLength:I
imul
iadd
iload 6
iadd
istore 7
start local 7 6: aload 0
iload 7
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.getPrevOffset:(I)I
istore 8
start local 8 7: iload 5
ifeq 12
8: new org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block
dup
invokespecial org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.<init>:()V
astore 2
9: new org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block
dup
invokespecial org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.<init>:()V
astore 4
10: new org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block
dup
invokespecial org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.<init>:()V
astore 3
11: aload 0
aload 1
aload 4
aload 3
aload 2
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: 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
iload 6
putfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.index:I
goto 25
13: StackMap locals:
StackMap stack:
aload 0
iload 7
iload 8
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.rotatePrevOffset:(II)I
istore 8
14: aload 0
aload 1
aload 2
aload 3
aload 4
iload 8
iload 5
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
start local 9 15: aload 0
aload 1
lload 9
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.getRefLane:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;J)I
istore 11
start local 11 16: aload 0
aload 1
lload 9
iload 11
aload 1
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
start local 12 19: aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
iload 8
aaload
astore 13
start local 13 20: aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
iload 11
imul
iload 12
iadd
aaload
astore 14
start local 14 21: aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
iload 7
aaload
astore 15
start local 15 22: aload 0
aload 1
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.isWithXor:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Position;)Z
istore 16
start local 16 23: aload 0
aload 13
aload 14
aload 15
iload 16
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 end local 15 end local 14 end local 13 end local 12 end local 11 end local 9 24: aload 1
dup
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.index:I
iconst_1
iadd
putfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.index:I
iinc 7 1
iinc 8 1
StackMap locals:
StackMap stack:
25: aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.index:I
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.segmentLength:I
if_icmplt 13
26: return
end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 0: aload 0
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: aload 0
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: aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.pass:I
ifne 5
3: aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.slice:I
iconst_2
4: if_icmplt 6
StackMap locals:
StackMap stack:
5: iconst_0
ireturn
StackMap locals:
StackMap stack:
6: iconst_1
ireturn
end local 1 end local 0 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 start local 1 start local 2 start local 3 start local 4 0: aload 3
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
iconst_0
aload 0
aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.pass:I
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.intToLong:(I)J
lastore
1: aload 3
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
iconst_1
aload 0
aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.lane:I
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.intToLong:(I)J
lastore
2: aload 3
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
iconst_2
aload 0
aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.slice:I
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.intToLong:(I)J
lastore
3: aload 3
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
iconst_3
aload 0
aload 0
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: aload 3
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
iconst_4
aload 0
aload 0
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: aload 3
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
iconst_5
aload 0
aload 0
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: aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.pass:I
ifne 8
aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.slice:I
ifne 8
7: aload 0
aload 2
aload 3
aload 4
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: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 0: aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.pass:I
ifeq 1
aload 0
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 end local 0 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 start local 1 0: iload 1
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
irem
ifne 2
1: iload 1
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
iadd
iconst_1
isub
ireturn
2: StackMap locals:
StackMap stack:
iload 1
iconst_1
isub
ireturn
end local 1 end local 0 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 start local 1 start local 2 0: iload 1
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
irem
iconst_1
if_icmpne 2
1: iload 1
iconst_1
isub
istore 2
2: StackMap locals:
StackMap stack:
iload 2
ireturn
end local 2 end local 1 end local 0 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 0: aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.pass:I
ifne 2
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.slice:I
ifne 2
1: iconst_2
ireturn
2: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 0 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 start local 1 start local 2 start local 3 0: aload 2
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
bipush 6
dup2
laload
lconst_1
ladd
lastore
1: aload 0
aload 1
aload 2
aload 3
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: aload 0
aload 1
aload 3
aload 3
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: return
end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 0: iload 6
ifeq 4
1: aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.index:I
sipush 128
irem
ifne 3
2: aload 0
aload 4
aload 3
aload 2
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: StackMap locals:
StackMap stack:
aload 2
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.index:I
sipush 128
irem
laload
lreturn
4: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
iload 5
aaload
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
iconst_0
laload
lreturn
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 0: lload 2
bipush 32
lushr
aload 0
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
start local 4 1: aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.pass:I
ifne 3
aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.slice:I
ifne 3
2: aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.lane:I
istore 4
3: StackMap locals: int
StackMap stack:
iload 4
ireturn
end local 4 end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 4 0: aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.pass:I
ifne 9
1: iconst_0
istore 6
start local 6 2: iload 4
ifeq 5
3: aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.slice:I
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.segmentLength:I
imul
aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.index:I
iadd
iconst_1
isub
istore 5
start local 5 4: goto 16
end local 5 5: StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position long int top int
StackMap stack:
aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.slice:I
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.segmentLength:I
imul
aload 1
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
start local 5 8: goto 16
end local 6 end local 5 9: StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position long int
StackMap stack:
aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.slice:I
iconst_1
iadd
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.segmentLength:I
imul
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
irem
istore 6
start local 6 10: iload 4
ifeq 13
11: aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.segmentLength:I
isub
aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position.index:I
iadd
iconst_1
isub
istore 5
start local 5 12: goto 16
end local 5 13: StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position long int top int
StackMap stack:
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.segmentLength:I
isub
aload 1
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
start local 5 16: StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator org.bouncycastle.crypto.generators.Argon2BytesGenerator$Position long int int int
StackMap stack:
lload 2
ldc 4294967295
land
lstore 7
start local 7 17: lload 7
lload 7
lmul
bipush 32
lushr
lstore 7
18: iload 5
iconst_1
isub
i2l
iload 5
i2l
lload 7
lmul
bipush 32
lushr
lsub
lstore 7
19: iload 6
i2l
lload 7
ladd
l2i
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
irem
ireturn
end local 7 end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 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 start local 1 0: aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
iconst_1
isub
aaload
astore 2
start local 2 1: iconst_1
istore 3
start local 3 2: goto 6
3: StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block int
StackMap stack:
iload 3
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
imul
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
iconst_1
isub
iadd
istore 4
start local 4 4: aload 2
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
iload 4
aaload
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.xorWith:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;)V
end local 4 5: iinc 3 1
StackMap locals:
StackMap stack:
6: iload 3
aload 0
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 7: aload 2
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.toBytes:()[B
astore 3
start local 3 8: aload 0
aload 0
aload 3
iload 1
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.hash:([BI)[B
putfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.result:[B
9: return
end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 3 0: new org.bouncycastle.crypto.digests.Blake2bDigest
dup
sipush 512
invokespecial org.bouncycastle.crypto.digests.Blake2bDigest.<init>:(I)V
astore 4
start local 4 1: aload 4
aload 1
invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getLanes:()I
invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addIntToLittleEndian:(Lorg/bouncycastle/crypto/Digest;I)V
2: aload 4
iload 2
invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addIntToLittleEndian:(Lorg/bouncycastle/crypto/Digest;I)V
3: aload 4
aload 1
invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getMemory:()I
invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addIntToLittleEndian:(Lorg/bouncycastle/crypto/Digest;I)V
4: aload 4
aload 1
invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getIterations:()I
invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addIntToLittleEndian:(Lorg/bouncycastle/crypto/Digest;I)V
5: aload 4
aload 1
invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getVersion:()I
invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addIntToLittleEndian:(Lorg/bouncycastle/crypto/Digest;I)V
6: aload 4
aload 1
invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getType:()I
invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addIntToLittleEndian:(Lorg/bouncycastle/crypto/Digest;I)V
7: aload 4
aload 3
invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addByteString:(Lorg/bouncycastle/crypto/Digest;[B)V
8: aload 4
aload 1
invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getSalt:()[B
invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addByteString:(Lorg/bouncycastle/crypto/Digest;[B)V
9: aload 4
aload 1
invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getSecret:()[B
invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addByteString:(Lorg/bouncycastle/crypto/Digest;[B)V
10: aload 4
aload 1
invokevirtual org.bouncycastle.crypto.params.Argon2Parameters.getAdditional:()[B
invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addByteString:(Lorg/bouncycastle/crypto/Digest;[B)V
11: aload 4
invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.getDigestSize:()I
newarray 8
astore 5
start local 5 12: aload 4
aload 5
iconst_0
invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.doFinal:([BI)I
pop
13: aload 5
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 0: iload 2
newarray 8
astore 3
start local 3 1: iload 2
invokestatic org.bouncycastle.util.Pack.intToLittleEndian:(I)[B
astore 4
start local 4 2: bipush 64
istore 5
start local 5 3: iload 2
iload 5
if_icmpgt 9
4: new org.bouncycastle.crypto.digests.Blake2bDigest
dup
iload 2
bipush 8
imul
invokespecial org.bouncycastle.crypto.digests.Blake2bDigest.<init>:(I)V
astore 6
start local 6 5: aload 6
aload 4
iconst_0
aload 4
arraylength
invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.update:([BII)V
6: aload 6
aload 1
iconst_0
aload 1
arraylength
invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.update:([BII)V
7: aload 6
aload 3
iconst_0
invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.doFinal:([BI)I
pop
end local 6 8: goto 28
9: StackMap locals: byte[] byte[] int
StackMap stack:
new org.bouncycastle.crypto.digests.Blake2bDigest
dup
iload 5
bipush 8
imul
invokespecial org.bouncycastle.crypto.digests.Blake2bDigest.<init>:(I)V
astore 6
start local 6 10: iload 5
newarray 8
astore 7
start local 7 11: aload 6
aload 4
iconst_0
aload 4
arraylength
invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.update:([BII)V
12: aload 6
aload 1
iconst_0
aload 1
arraylength
invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.update:([BII)V
13: aload 6
aload 7
iconst_0
invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.doFinal:([BI)I
pop
14: aload 7
iconst_0
aload 3
iconst_0
iload 5
iconst_2
idiv
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
15: iload 2
bipush 31
iadd
bipush 32
idiv
iconst_2
isub
istore 8
start local 8 16: iload 5
iconst_2
idiv
istore 9
start local 9 17: iconst_2
istore 10
start local 10 18: goto 23
19: 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
aload 7
iconst_0
aload 7
arraylength
invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.update:([BII)V
20: aload 6
aload 7
iconst_0
invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.doFinal:([BI)I
pop
21: aload 7
iconst_0
aload 3
iload 9
iload 5
iconst_2
idiv
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
22: iinc 10 1
iload 9
iload 5
iconst_2
idiv
iadd
istore 9
StackMap locals:
StackMap stack:
23: iload 10
iload 8
if_icmple 19
end local 10 24: iload 2
bipush 32
iload 8
imul
isub
istore 10
start local 10 25: new org.bouncycastle.crypto.digests.Blake2bDigest
dup
iload 10
bipush 8
imul
invokespecial org.bouncycastle.crypto.digests.Blake2bDigest.<init>:(I)V
astore 6
26: aload 6
aload 7
iconst_0
aload 7
arraylength
invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.update:([BII)V
27: aload 6
aload 3
iload 9
invokevirtual org.bouncycastle.crypto.digests.Blake2bDigest.doFinal:([BI)I
pop
end local 10 end local 9 end local 8 end local 7 end local 6 28: StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator byte[] int byte[] byte[] int
StackMap stack:
aload 3
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 start local 8 start local 9 start local 10 start local 11 start local 12 start local 13 start local 14 start local 15 start local 16 start local 17 0: aload 0
aload 1
iload 2
iload 6
iload 10
iload 14
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.F:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIII)V
1: aload 0
aload 1
iload 3
iload 7
iload 11
iload 15
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.F:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIII)V
2: aload 0
aload 1
iload 4
iload 8
iload 12
iload 16
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.F:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIII)V
3: aload 0
aload 1
iload 5
iload 9
iload 13
iload 17
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.F:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIII)V
4: aload 0
aload 1
iload 2
iload 7
iload 12
iload 17
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.F:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIII)V
5: aload 0
aload 1
iload 3
iload 8
iload 13
iload 14
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.F:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIII)V
6: aload 0
aload 1
iload 4
iload 9
iload 10
iload 15
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.F:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIII)V
7: aload 0
aload 1
iload 5
iload 6
iload 11
iload 16
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.F:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIII)V
8: return
end local 17 end local 16 end local 15 end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
aload 1
iload 2
iload 3
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.fBlaMka:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;II)V
1: aload 0
aload 1
iload 5
iload 2
ldc 32
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.rotr64:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIJ)V
2: aload 0
aload 1
iload 4
iload 5
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.fBlaMka:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;II)V
3: aload 0
aload 1
iload 3
iload 4
ldc 24
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.rotr64:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIJ)V
4: aload 0
aload 1
iload 2
iload 3
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.fBlaMka:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;II)V
5: aload 0
aload 1
iload 5
iload 2
ldc 16
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.rotr64:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIJ)V
6: aload 0
aload 1
iload 4
iload 5
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.fBlaMka:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;II)V
7: aload 0
aload 1
iload 3
iload 4
ldc 63
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.rotr64:(Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;IIJ)V
8: return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 3 0: aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
iload 2
laload
ldc 4294967295
land
aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
iload 3
laload
ldc 4294967295
land
lmul
lstore 4
start local 4 1: aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
iload 2
aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
iload 2
laload
aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
iload 3
laload
ladd
ldc 2
lload 4
lmul
ladd
lastore
2: return
end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 3 start local 4 0: aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
iload 2
laload
aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
iload 3
laload
lxor
lstore 6
start local 6 1: aload 1
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.v:[J
iload 2
lload 6
lload 4
l2i
lushr
lload 6
ldc 64
lload 4
lsub
l2i
lshl
lor
lastore
2: return
end local 6 end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 0: aload 0
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.parameters:Lorg/bouncycastle/crypto/params/Argon2Parameters;
iload 2
aload 1
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.initialHash:(Lorg/bouncycastle/crypto/params/Argon2Parameters;I[B)[B
astore 3
start local 3 1: aload 0
aload 3
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.fillFirstBlocks:([B)V
2: return
end local 3 end local 2 end local 1 end local 0 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 start local 1 0: aload 0
iload 1
i2b
invokeinterface org.bouncycastle.crypto.Digest.update:(B)V
1: aload 0
iload 1
bipush 8
iushr
i2b
invokeinterface org.bouncycastle.crypto.Digest.update:(B)V
2: aload 0
iload 1
bipush 16
iushr
i2b
invokeinterface org.bouncycastle.crypto.Digest.update:(B)V
3: aload 0
iload 1
bipush 24
iushr
i2b
invokeinterface org.bouncycastle.crypto.Digest.update:(B)V
4: return
end local 1 end local 0 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 start local 1 0: aload 1
ifnull 4
1: aload 0
aload 1
arraylength
invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addIntToLittleEndian:(Lorg/bouncycastle/crypto/Digest;I)V
2: aload 0
aload 1
iconst_0
aload 1
arraylength
invokeinterface org.bouncycastle.crypto.Digest.update:([BII)V
3: goto 5
4: StackMap locals:
StackMap stack:
aload 0
iconst_0
invokestatic org.bouncycastle.crypto.generators.Argon2BytesGenerator.addIntToLittleEndian:(Lorg/bouncycastle/crypto/Digest;I)V
5: StackMap locals:
StackMap stack:
return
end local 1 end local 0 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 start local 1 0: iconst_4
newarray 8
astore 2
start local 2 1: iconst_4
newarray 8
dup
iconst_0
iconst_1
bastore
astore 3
start local 3 2: aload 0
aload 1
aload 2
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.getInitialHashLong:([B[B)[B
astore 4
start local 4 3: aload 0
aload 1
aload 3
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.getInitialHashLong:([B[B)[B
astore 5
start local 5 4: iconst_0
istore 6
start local 6 5: goto 13
6: StackMap locals: org.bouncycastle.crypto.generators.Argon2BytesGenerator byte[] byte[] byte[] byte[] byte[] int
StackMap stack:
iload 6
aload 4
bipush 68
invokestatic org.bouncycastle.util.Pack.intToLittleEndian:(I[BI)V
7: iload 6
aload 5
bipush 68
invokestatic org.bouncycastle.util.Pack.intToLittleEndian:(I[BI)V
8: aload 0
aload 4
sipush 1024
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.hash:([BI)[B
astore 7
start local 7 9: aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
iload 6
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
imul
iconst_0
iadd
aaload
aload 7
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.fromBytes:([B)V
10: aload 0
aload 5
sipush 1024
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator.hash:([BI)[B
astore 7
11: aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.memory:[Lorg/bouncycastle/crypto/generators/Argon2BytesGenerator$Block;
iload 6
aload 0
getfield org.bouncycastle.crypto.generators.Argon2BytesGenerator.laneLength:I
imul
iconst_1
iadd
aaload
aload 7
invokevirtual org.bouncycastle.crypto.generators.Argon2BytesGenerator$Block.fromBytes:([B)V
end local 7 12: iinc 6 1
StackMap locals:
StackMap stack:
13: iload 6
aload 0
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 14: return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 0: bipush 72
newarray 8
astore 3
start local 3 1: aload 1
iconst_0
aload 3
iconst_0
bipush 64
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
2: aload 2
iconst_0
aload 3
bipush 64
iconst_4
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
3: aload 3
areturn
end local 3 end local 2 end local 1 end local 0 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 start local 1 0: iload 1
i2l
ldc 4294967295
land
lreturn
end local 1 end local 0 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