public class org.bouncycastle.math.ec.custom.sec.SecP521R1Field
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.bouncycastle.math.ec.custom.sec.SecP521R1Field
super_class: java.lang.Object
{
static final int[] P;
descriptor: [I
flags: (0x0018) ACC_STATIC, ACC_FINAL
private static final int P16;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 511
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: bipush 17
newarray 10
dup
iconst_0
iconst_m1
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
iconst_m1
iastore
dup
bipush 7
1: iconst_m1
iastore
dup
bipush 8
iconst_m1
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
iconst_m1
iastore
dup
bipush 15
iconst_m1
iastore
dup
bipush 16
sipush 511
iastore
2: putstatic org.bouncycastle.math.ec.custom.sec.SecP521R1Field.P:[I
3: 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/sec/SecP521R1Field;
public static void add(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.add:(I[I[I[I)I
aload 0
bipush 16
iaload
iadd
aload 1
bipush 16
iaload
iadd
istore 3
start local 3 1: iload 3
sipush 511
if_icmpgt 2
iload 3
sipush 511
if_icmpne 4
bipush 16
aload 2
getstatic org.bouncycastle.math.ec.custom.sec.SecP521R1Field.P:[I
invokestatic org.bouncycastle.math.raw.Nat.eq:(I[I[I)Z
ifeq 4
2: StackMap locals: int
StackMap stack:
iload 3
bipush 16
aload 2
invokestatic org.bouncycastle.math.raw.Nat.inc:(I[I)I
iadd
istore 3
3: iload 3
sipush 511
iand
istore 3
4: StackMap locals:
StackMap stack:
aload 2
bipush 16
iload 3
iastore
5: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 x [I
0 6 1 y [I
0 6 2 z [I
1 6 3 c I
MethodParameters:
Name Flags
x
y
z
public static void addOne(int[], int[]);
descriptor: ([I[I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: bipush 16
aload 0
aload 1
invokestatic org.bouncycastle.math.raw.Nat.inc:(I[I[I)I
aload 0
bipush 16
iaload
iadd
istore 2
start local 2 1: iload 2
sipush 511
if_icmpgt 2
iload 2
sipush 511
if_icmpne 4
bipush 16
aload 1
getstatic org.bouncycastle.math.ec.custom.sec.SecP521R1Field.P:[I
invokestatic org.bouncycastle.math.raw.Nat.eq:(I[I[I)Z
ifeq 4
2: StackMap locals: int
StackMap stack:
iload 2
bipush 16
aload 1
invokestatic org.bouncycastle.math.raw.Nat.inc:(I[I)I
iadd
istore 2
3: iload 2
sipush 511
iand
istore 2
4: StackMap locals:
StackMap stack:
aload 1
bipush 16
iload 2
iastore
5: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 x [I
0 6 1 z [I
1 6 2 c 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=3, locals=2, args_size=1
start local 0 0: sipush 521
aload 0
invokestatic org.bouncycastle.math.raw.Nat.fromBigInteger:(ILjava/math/BigInteger;)[I
astore 1
start local 1 1: bipush 17
aload 1
getstatic org.bouncycastle.math.ec.custom.sec.SecP521R1Field.P:[I
invokestatic org.bouncycastle.math.raw.Nat.eq:(I[I[I)Z
ifeq 3
2: bipush 17
aload 1
invokestatic org.bouncycastle.math.raw.Nat.zero:(I[I)V
3: StackMap locals: int[]
StackMap stack:
aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 x Ljava/math/BigInteger;
1 4 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=5, locals=4, args_size=2
start local 0 start local 1 0: aload 0
bipush 16
iaload
istore 2
start local 2 1: bipush 16
aload 0
iload 2
aload 1
invokestatic org.bouncycastle.math.raw.Nat.shiftDownBit:(I[II[I)I
istore 3
start local 3 2: aload 1
bipush 16
iload 2
iconst_1
iushr
iload 3
bipush 23
iushr
ior
iastore
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 z [I
1 4 2 x16 I
2 4 3 c 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: bipush 33
invokestatic org.bouncycastle.math.raw.Nat.create:(I)[I
astore 3
start local 3 1: aload 0
aload 1
aload 3
invokestatic org.bouncycastle.math.ec.custom.sec.SecP521R1Field.implMultiply:([I[I[I)V
2: aload 3
aload 2
invokestatic org.bouncycastle.math.ec.custom.sec.SecP521R1Field.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 negate(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 17
aload 0
invokestatic org.bouncycastle.math.raw.Nat.isZero:(I[I)Z
ifeq 3
1: bipush 17
aload 1
invokestatic org.bouncycastle.math.raw.Nat.zero:(I[I)V
2: goto 4
3: StackMap locals:
StackMap stack:
bipush 17
getstatic org.bouncycastle.math.ec.custom.sec.SecP521R1Field.P:[I
aload 0
aload 1
invokestatic org.bouncycastle.math.raw.Nat.sub:(I[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=7, locals=4, args_size=2
start local 0 start local 1 0: aload 0
bipush 32
iaload
istore 2
start local 2 1: bipush 16
aload 0
bipush 16
bipush 9
iload 2
aload 1
iconst_0
invokestatic org.bouncycastle.math.raw.Nat.shiftDownBits:(I[IIII[II)I
bipush 23
iushr
istore 3
start local 3 2: iload 3
iload 2
bipush 9
iushr
iadd
istore 3
3: iload 3
bipush 16
aload 0
aload 1
invokestatic org.bouncycastle.math.raw.Nat.addTo:(I[I[I)I
iadd
istore 3
4: iload 3
sipush 511
if_icmpgt 5
iload 3
sipush 511
if_icmpne 7
bipush 16
aload 1
getstatic org.bouncycastle.math.ec.custom.sec.SecP521R1Field.P:[I
invokestatic org.bouncycastle.math.raw.Nat.eq:(I[I[I)Z
ifeq 7
5: StackMap locals: int int
StackMap stack:
iload 3
bipush 16
aload 1
invokestatic org.bouncycastle.math.raw.Nat.inc:(I[I)I
iadd
istore 3
6: iload 3
sipush 511
iand
istore 3
7: StackMap locals:
StackMap stack:
aload 1
bipush 16
iload 3
iastore
8: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 xx [I
0 9 1 z [I
1 9 2 xx32 I
2 9 3 c I
MethodParameters:
Name Flags
xx
z
public static void reduce23(int[]);
descriptor: ([I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=3, args_size=1
start local 0 0: aload 0
bipush 16
iaload
istore 1
start local 1 1: bipush 16
iload 1
bipush 9
iushr
aload 0
invokestatic org.bouncycastle.math.raw.Nat.addWordTo:(II[I)I
iload 1
sipush 511
iand
iadd
istore 2
start local 2 2: iload 2
sipush 511
if_icmpgt 3
iload 2
sipush 511
if_icmpne 5
bipush 16
aload 0
getstatic org.bouncycastle.math.ec.custom.sec.SecP521R1Field.P:[I
invokestatic org.bouncycastle.math.raw.Nat.eq:(I[I[I)Z
ifeq 5
3: StackMap locals: int int
StackMap stack:
iload 2
bipush 16
aload 0
invokestatic org.bouncycastle.math.raw.Nat.inc:(I[I)I
iadd
istore 2
4: iload 2
sipush 511
iand
istore 2
5: StackMap locals:
StackMap stack:
aload 0
bipush 16
iload 2
iastore
6: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 z [I
1 7 1 z16 I
2 7 2 c I
MethodParameters:
Name Flags
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: bipush 33
invokestatic org.bouncycastle.math.raw.Nat.create:(I)[I
astore 2
start local 2 1: aload 0
aload 2
invokestatic org.bouncycastle.math.ec.custom.sec.SecP521R1Field.implSquare:([I[I)V
2: aload 2
aload 1
invokestatic org.bouncycastle.math.ec.custom.sec.SecP521R1Field.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: bipush 33
invokestatic org.bouncycastle.math.raw.Nat.create:(I)[I
astore 3
start local 3 1: aload 0
aload 3
invokestatic org.bouncycastle.math.ec.custom.sec.SecP521R1Field.implSquare:([I[I)V
2: aload 3
aload 2
invokestatic org.bouncycastle.math.ec.custom.sec.SecP521R1Field.reduce:([I[I)V
3: goto 6
4: StackMap locals: int[]
StackMap stack:
aload 2
aload 3
invokestatic org.bouncycastle.math.ec.custom.sec.SecP521R1Field.implSquare:([I[I)V
5: aload 3
aload 2
invokestatic org.bouncycastle.math.ec.custom.sec.SecP521R1Field.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=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
aload 0
bipush 16
iaload
iadd
aload 1
bipush 16
iaload
isub
istore 3
start local 3 1: iload 3
ifge 4
2: iload 3
bipush 16
aload 2
invokestatic org.bouncycastle.math.raw.Nat.dec:(I[I)I
iadd
istore 3
3: iload 3
sipush 511
iand
istore 3
4: StackMap locals: int
StackMap stack:
aload 2
bipush 16
iload 3
iastore
5: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 x [I
0 6 1 y [I
0 6 2 z [I
1 6 3 c I
MethodParameters:
Name Flags
x
y
z
public static void twice(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 0
bipush 16
iaload
istore 2
start local 2 1: bipush 16
aload 0
iload 2
bipush 23
ishl
aload 1
invokestatic org.bouncycastle.math.raw.Nat.shiftUpBit:(I[II[I)I
iload 2
iconst_1
ishl
ior
istore 3
start local 3 2: aload 1
bipush 16
iload 3
sipush 511
iand
iastore
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 z [I
1 4 2 x16 I
2 4 3 c I
MethodParameters:
Name Flags
x
z
protected static void implMultiply(int[], int[], int[]);
descriptor: ([I[I[I)V
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=9, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
invokestatic org.bouncycastle.math.raw.Nat512.mul:([I[I[I)V
1: aload 0
bipush 16
iaload
istore 3
start local 3 2: aload 1
bipush 16
iaload
istore 4
start local 4 3: aload 2
bipush 32
bipush 16
iload 3
aload 1
iload 4
aload 0
aload 2
bipush 16
invokestatic org.bouncycastle.math.raw.Nat.mul31BothAdd:(II[II[I[II)I
iload 3
iload 4
imul
iadd
iastore
4: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 x [I
0 5 1 y [I
0 5 2 zz [I
2 5 3 x16 I
3 5 4 y16 I
MethodParameters:
Name Flags
x
y
zz
protected static void implSquare(int[], int[]);
descriptor: ([I[I)V
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=8, locals=3, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokestatic org.bouncycastle.math.raw.Nat512.square:([I[I)V
1: aload 0
bipush 16
iaload
istore 2
start local 2 2: aload 1
bipush 32
bipush 16
iload 2
iconst_1
ishl
aload 0
iconst_0
aload 1
bipush 16
invokestatic org.bouncycastle.math.raw.Nat.mulWordAddTo:(II[II[II)I
iload 2
iload 2
imul
iadd
iastore
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 zz [I
2 4 2 x16 I
MethodParameters:
Name Flags
x
zz
}
SourceFile: "SecP521R1Field.java"