public class org.bouncycastle.math.ec.custom.djb.Curve25519Field
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.bouncycastle.math.ec.custom.djb.Curve25519Field
super_class: java.lang.Object
{
private static final long M;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 4294967295
static final int[] P;
descriptor: [I
flags: (0x0018) ACC_STATIC, ACC_FINAL
private static final int P7;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 2147483647
private static final int[] PExt;
descriptor: [I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int PInv;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 19
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: bipush 8
newarray 10
dup
iconst_0
bipush -19
iastore
dup
iconst_1
iconst_m1
iastore
dup
iconst_2
iconst_m1
iastore
dup
iconst_3
iconst_m1
iastore
dup
iconst_4
iconst_m1
iastore
dup
iconst_5
iconst_m1
iastore
dup
bipush 6
1: iconst_m1
iastore
dup
bipush 7
ldc 2147483647
iastore
2: putstatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.P:[I
3: bipush 16
newarray 10
dup
iconst_0
sipush 361
iastore
dup
bipush 8
4: bipush -19
iastore
dup
bipush 9
iconst_m1
iastore
dup
bipush 10
iconst_m1
iastore
dup
bipush 11
iconst_m1
iastore
dup
bipush 12
iconst_m1
iastore
dup
bipush 13
iconst_m1
iastore
dup
bipush 14
5: iconst_m1
iastore
dup
bipush 15
ldc 1073741823
iastore
6: putstatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.PExt:[I
7: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/math/ec/custom/djb/Curve25519Field;
public static void add(int[], int[], int[]);
descriptor: ([I[I[I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
invokestatic org.bouncycastle.math.raw.Nat256.add:([I[I[I)I
pop
1: aload 2
getstatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.P:[I
invokestatic org.bouncycastle.math.raw.Nat256.gte:([I[I)Z
ifeq 3
2: aload 2
invokestatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.subPFrom:([I)I
pop
3: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 x [I
0 4 1 y [I
0 4 2 z [I
MethodParameters:
Name Flags
x
y
z
public static void addExt(int[], int[], int[]);
descriptor: ([I[I[I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: bipush 16
aload 0
aload 1
aload 2
invokestatic org.bouncycastle.math.raw.Nat.add:(I[I[I[I)I
pop
1: bipush 16
aload 2
getstatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.PExt:[I
invokestatic org.bouncycastle.math.raw.Nat.gte:(I[I[I)Z
ifeq 3
2: aload 2
invokestatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.subPExtFrom:([I)I
pop
3: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 xx [I
0 4 1 yy [I
0 4 2 zz [I
MethodParameters:
Name Flags
xx
yy
zz
public static void addOne(int[], int[]);
descriptor: ([I[I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: bipush 8
aload 0
aload 1
invokestatic org.bouncycastle.math.raw.Nat.inc:(I[I[I)I
pop
1: aload 1
getstatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.P:[I
invokestatic org.bouncycastle.math.raw.Nat256.gte:([I[I)Z
ifeq 3
2: aload 1
invokestatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.subPFrom:([I)I
pop
3: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 x [I
0 4 1 z [I
MethodParameters:
Name Flags
x
z
public static int[] fromBigInteger(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)[I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
invokestatic org.bouncycastle.math.raw.Nat256.fromBigInteger:(Ljava/math/BigInteger;)[I
astore 1
start local 1 1: goto 3
2: StackMap locals: int[]
StackMap stack:
getstatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.P:[I
aload 1
invokestatic org.bouncycastle.math.raw.Nat256.subFrom:([I[I)I
pop
3: StackMap locals:
StackMap stack:
aload 1
getstatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.P:[I
invokestatic org.bouncycastle.math.raw.Nat256.gte:([I[I)Z
ifne 2
4: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 x Ljava/math/BigInteger;
1 5 1 z [I
MethodParameters:
Name Flags
x
public static void half(int[], int[]);
descriptor: ([I[I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iconst_0
iaload
iconst_1
iand
ifne 3
1: bipush 8
aload 0
iconst_0
aload 1
invokestatic org.bouncycastle.math.raw.Nat.shiftDownBit:(I[II[I)I
pop
2: goto 5
3: StackMap locals:
StackMap stack:
aload 0
getstatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.P:[I
aload 1
invokestatic org.bouncycastle.math.raw.Nat256.add:([I[I[I)I
pop
4: bipush 8
aload 1
iconst_0
invokestatic org.bouncycastle.math.raw.Nat.shiftDownBit:(I[II)I
pop
5: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 x [I
0 6 1 z [I
MethodParameters:
Name Flags
x
z
public static void multiply(int[], int[], int[]);
descriptor: ([I[I[I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: invokestatic org.bouncycastle.math.raw.Nat256.createExt:()[I
astore 3
start local 3 1: aload 0
aload 1
aload 3
invokestatic org.bouncycastle.math.raw.Nat256.mul:([I[I[I)V
2: aload 3
aload 2
invokestatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.reduce:([I[I)V
3: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 x [I
0 4 1 y [I
0 4 2 z [I
1 4 3 tt [I
MethodParameters:
Name Flags
x
y
z
public static void multiplyAddToExt(int[], int[], int[]);
descriptor: ([I[I[I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
invokestatic org.bouncycastle.math.raw.Nat256.mulAddTo:([I[I[I)I
pop
1: bipush 16
aload 2
getstatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.PExt:[I
invokestatic org.bouncycastle.math.raw.Nat.gte:(I[I[I)Z
ifeq 3
2: aload 2
invokestatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.subPExtFrom:([I)I
pop
3: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 x [I
0 4 1 y [I
0 4 2 zz [I
MethodParameters:
Name Flags
x
y
zz
public static void negate(int[], int[]);
descriptor: ([I[I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokestatic org.bouncycastle.math.raw.Nat256.isZero:([I)Z
ifeq 3
1: aload 1
invokestatic org.bouncycastle.math.raw.Nat256.zero:([I)V
2: goto 4
3: StackMap locals:
StackMap stack:
getstatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.P:[I
aload 0
aload 1
invokestatic org.bouncycastle.math.raw.Nat256.sub:([I[I[I)I
pop
4: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 x [I
0 5 1 z [I
MethodParameters:
Name Flags
x
z
public static void reduce(int[], int[]);
descriptor: ([I[I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=5, args_size=2
start local 0 start local 1 0: aload 0
bipush 7
iaload
istore 2
start local 2 1: bipush 8
aload 0
bipush 8
iload 2
aload 1
iconst_0
invokestatic org.bouncycastle.math.raw.Nat.shiftUpBit:(I[III[II)I
pop
2: bipush 19
aload 0
aload 1
invokestatic org.bouncycastle.math.raw.Nat256.mulByWordAddTo:(I[I[I)I
iconst_1
ishl
istore 3
start local 3 3: aload 1
bipush 7
iaload
istore 4
start local 4 4: iload 3
iload 4
bipush 31
iushr
iload 2
bipush 31
iushr
isub
iadd
istore 3
5: iload 4
ldc 2147483647
iand
istore 4
6: iload 4
bipush 7
iload 3
bipush 19
imul
aload 1
invokestatic org.bouncycastle.math.raw.Nat.addWordTo:(II[I)I
iadd
istore 4
7: aload 1
bipush 7
iload 4
iastore
8: aload 1
getstatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.P:[I
invokestatic org.bouncycastle.math.raw.Nat256.gte:([I[I)Z
ifeq 10
9: aload 1
invokestatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.subPFrom:([I)I
pop
10: StackMap locals: int int int
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 11 0 xx [I
0 11 1 z [I
1 11 2 xx07 I
3 11 3 c I
4 11 4 z7 I
MethodParameters:
Name Flags
xx
z
public static void reduce27(int, int[]);
descriptor: (I[I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 1
bipush 7
iaload
istore 2
start local 2 1: iload 0
iconst_1
ishl
iload 2
bipush 31
iushr
ior
istore 3
start local 3 2: iload 2
ldc 2147483647
iand
istore 2
3: iload 2
bipush 7
iload 3
bipush 19
imul
aload 1
invokestatic org.bouncycastle.math.raw.Nat.addWordTo:(II[I)I
iadd
istore 2
4: aload 1
bipush 7
iload 2
iastore
5: aload 1
getstatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.P:[I
invokestatic org.bouncycastle.math.raw.Nat256.gte:([I[I)Z
ifeq 7
6: aload 1
invokestatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.subPFrom:([I)I
pop
7: StackMap locals: int int
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 x I
0 8 1 z [I
1 8 2 z7 I
2 8 3 c I
MethodParameters:
Name Flags
x
z
public static void square(int[], int[]);
descriptor: ([I[I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: invokestatic org.bouncycastle.math.raw.Nat256.createExt:()[I
astore 2
start local 2 1: aload 0
aload 2
invokestatic org.bouncycastle.math.raw.Nat256.square:([I[I)V
2: aload 2
aload 1
invokestatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.reduce:([I[I)V
3: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 x [I
0 4 1 z [I
1 4 2 tt [I
MethodParameters:
Name Flags
x
z
public static void squareN(int[], int, int[]);
descriptor: ([II[I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=4, args_size=3
start local 0 start local 1 start local 2 0: invokestatic org.bouncycastle.math.raw.Nat256.createExt:()[I
astore 3
start local 3 1: aload 0
aload 3
invokestatic org.bouncycastle.math.raw.Nat256.square:([I[I)V
2: aload 3
aload 2
invokestatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.reduce:([I[I)V
3: goto 6
4: StackMap locals: int[]
StackMap stack:
aload 2
aload 3
invokestatic org.bouncycastle.math.raw.Nat256.square:([I[I)V
5: aload 3
aload 2
invokestatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.reduce:([I[I)V
6: StackMap locals:
StackMap stack:
iinc 1 -1
iload 1
ifgt 4
7: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 x [I
0 8 1 n I
0 8 2 z [I
1 8 3 tt [I
MethodParameters:
Name Flags
x
n
z
public static void subtract(int[], int[], int[]);
descriptor: ([I[I[I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
invokestatic org.bouncycastle.math.raw.Nat256.sub:([I[I[I)I
istore 3
start local 3 1: iload 3
ifeq 3
2: aload 2
invokestatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.addPTo:([I)I
pop
3: StackMap locals: int
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 x [I
0 4 1 y [I
0 4 2 z [I
1 4 3 c I
MethodParameters:
Name Flags
x
y
z
public static void subtractExt(int[], int[], int[]);
descriptor: ([I[I[I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: bipush 16
aload 0
aload 1
aload 2
invokestatic org.bouncycastle.math.raw.Nat.sub:(I[I[I[I)I
istore 3
start local 3 1: iload 3
ifeq 3
2: aload 2
invokestatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.addPExtTo:([I)I
pop
3: StackMap locals: int
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 xx [I
0 4 1 yy [I
0 4 2 zz [I
1 4 3 c I
MethodParameters:
Name Flags
xx
yy
zz
public static void twice(int[], int[]);
descriptor: ([I[I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: bipush 8
aload 0
iconst_0
aload 1
invokestatic org.bouncycastle.math.raw.Nat.shiftUpBit:(I[II[I)I
pop
1: aload 1
getstatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.P:[I
invokestatic org.bouncycastle.math.raw.Nat256.gte:([I[I)Z
ifeq 3
2: aload 1
invokestatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.subPFrom:([I)I
pop
3: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 x [I
0 4 1 z [I
MethodParameters:
Name Flags
x
z
private static int addPTo(int[]);
descriptor: ([I)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=3, args_size=1
start local 0 0: aload 0
iconst_0
iaload
i2l
ldc 4294967295
land
ldc 19
lsub
lstore 1
start local 1 1: aload 0
iconst_0
lload 1
l2i
iastore
2: lload 1
bipush 32
lshr
lstore 1
3: lload 1
lconst_0
lcmp
ifeq 5
4: bipush 7
aload 0
iconst_1
invokestatic org.bouncycastle.math.raw.Nat.decAt:(I[II)I
i2l
lstore 1
5: StackMap locals: long
StackMap stack:
lload 1
aload 0
bipush 7
iaload
i2l
ldc 4294967295
land
ldc 2147483648
ladd
ladd
lstore 1
6: aload 0
bipush 7
lload 1
l2i
iastore
7: lload 1
bipush 32
lshr
lstore 1
8: lload 1
l2i
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 z [I
1 9 1 c J
MethodParameters:
Name Flags
z
private static int addPExtTo(int[]);
descriptor: ([I)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=8, locals=3, args_size=1
start local 0 0: aload 0
iconst_0
iaload
i2l
ldc 4294967295
land
getstatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.PExt:[I
iconst_0
iaload
i2l
ldc 4294967295
land
ladd
lstore 1
start local 1 1: aload 0
iconst_0
lload 1
l2i
iastore
2: lload 1
bipush 32
lshr
lstore 1
3: lload 1
lconst_0
lcmp
ifeq 5
4: bipush 8
aload 0
iconst_1
invokestatic org.bouncycastle.math.raw.Nat.incAt:(I[II)I
i2l
lstore 1
5: StackMap locals: long
StackMap stack:
lload 1
aload 0
bipush 8
iaload
i2l
ldc 4294967295
land
ldc 19
lsub
ladd
lstore 1
6: aload 0
bipush 8
lload 1
l2i
iastore
7: lload 1
bipush 32
lshr
lstore 1
8: lload 1
lconst_0
lcmp
ifeq 10
9: bipush 15
aload 0
bipush 9
invokestatic org.bouncycastle.math.raw.Nat.decAt:(I[II)I
i2l
lstore 1
10: StackMap locals:
StackMap stack:
lload 1
aload 0
bipush 15
iaload
i2l
ldc 4294967295
land
getstatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.PExt:[I
bipush 15
iaload
iconst_1
iadd
i2l
ldc 4294967295
land
ladd
ladd
lstore 1
11: aload 0
bipush 15
lload 1
l2i
iastore
12: lload 1
bipush 32
lshr
lstore 1
13: lload 1
l2i
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 zz [I
1 14 1 c J
MethodParameters:
Name Flags
zz
private static int subPFrom(int[]);
descriptor: ([I)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=3, args_size=1
start local 0 0: aload 0
iconst_0
iaload
i2l
ldc 4294967295
land
ldc 19
ladd
lstore 1
start local 1 1: aload 0
iconst_0
lload 1
l2i
iastore
2: lload 1
bipush 32
lshr
lstore 1
3: lload 1
lconst_0
lcmp
ifeq 5
4: bipush 7
aload 0
iconst_1
invokestatic org.bouncycastle.math.raw.Nat.incAt:(I[II)I
i2l
lstore 1
5: StackMap locals: long
StackMap stack:
lload 1
aload 0
bipush 7
iaload
i2l
ldc 4294967295
land
ldc 2147483648
lsub
ladd
lstore 1
6: aload 0
bipush 7
lload 1
l2i
iastore
7: lload 1
bipush 32
lshr
lstore 1
8: lload 1
l2i
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 z [I
1 9 1 c J
MethodParameters:
Name Flags
z
private static int subPExtFrom(int[]);
descriptor: ([I)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=8, locals=3, args_size=1
start local 0 0: aload 0
iconst_0
iaload
i2l
ldc 4294967295
land
getstatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.PExt:[I
iconst_0
iaload
i2l
ldc 4294967295
land
lsub
lstore 1
start local 1 1: aload 0
iconst_0
lload 1
l2i
iastore
2: lload 1
bipush 32
lshr
lstore 1
3: lload 1
lconst_0
lcmp
ifeq 5
4: bipush 8
aload 0
iconst_1
invokestatic org.bouncycastle.math.raw.Nat.decAt:(I[II)I
i2l
lstore 1
5: StackMap locals: long
StackMap stack:
lload 1
aload 0
bipush 8
iaload
i2l
ldc 4294967295
land
ldc 19
ladd
ladd
lstore 1
6: aload 0
bipush 8
lload 1
l2i
iastore
7: lload 1
bipush 32
lshr
lstore 1
8: lload 1
lconst_0
lcmp
ifeq 10
9: bipush 15
aload 0
bipush 9
invokestatic org.bouncycastle.math.raw.Nat.incAt:(I[II)I
i2l
lstore 1
10: StackMap locals:
StackMap stack:
lload 1
aload 0
bipush 15
iaload
i2l
ldc 4294967295
land
getstatic org.bouncycastle.math.ec.custom.djb.Curve25519Field.PExt:[I
bipush 15
iaload
iconst_1
iadd
i2l
ldc 4294967295
land
lsub
ladd
lstore 1
11: aload 0
bipush 15
lload 1
l2i
iastore
12: lload 1
bipush 32
lshr
lstore 1
13: lload 1
l2i
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 zz [I
1 14 1 c J
MethodParameters:
Name Flags
zz
}
SourceFile: "Curve25519Field.java"