public abstract class org.bouncycastle.math.raw.Mod
minor version: 0
major version: 59
flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
this_class: org.bouncycastle.math.raw.Mod
super_class: java.lang.Object
{
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 // org.bouncycastle.math.raw.Mod this
0: .line 7
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // org.bouncycastle.math.raw.Mod this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/math/raw/Mod;
public static int inverse32(int);
descriptor: (I)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=2, args_size=1
start local 0 // int d
0: .line 12
iload 0 /* d */
istore 1 /* x */
start local 1 // int x
1: .line 13
iload 1 /* x */
iconst_2
iload 0 /* d */
iload 1 /* x */
imul
isub
imul
istore 1 /* x */
2: .line 14
iload 1 /* x */
iconst_2
iload 0 /* d */
iload 1 /* x */
imul
isub
imul
istore 1 /* x */
3: .line 15
iload 1 /* x */
iconst_2
iload 0 /* d */
iload 1 /* x */
imul
isub
imul
istore 1 /* x */
4: .line 16
iload 1 /* x */
iconst_2
iload 0 /* d */
iload 1 /* x */
imul
isub
imul
istore 1 /* x */
5: .line 18
iload 1 /* x */
ireturn
end local 1 // int x
end local 0 // int d
LocalVariableTable:
Start End Slot Name Signature
0 6 0 d I
1 6 1 x I
MethodParameters:
Name Flags
d
public static void invert(int[], int[], int[]);
descriptor: ([I[I[I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=11, args_size=3
start local 0 // int[] p
start local 1 // int[] x
start local 2 // int[] z
0: .line 23
aload 0 /* p */
arraylength
istore 3 /* len */
start local 3 // int len
1: .line 24
iload 3 /* len */
aload 1 /* x */
invokestatic org.bouncycastle.math.raw.Nat.isZero:(I[I)Z
ifeq 3
2: .line 26
new java.lang.IllegalArgumentException
dup
ldc "'x' cannot be 0"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
3: .line 28
StackMap locals: int
StackMap stack:
iload 3 /* len */
aload 1 /* x */
invokestatic org.bouncycastle.math.raw.Nat.isOne:(I[I)Z
ifeq 6
4: .line 30
aload 1 /* x */
iconst_0
aload 2 /* z */
iconst_0
iload 3 /* len */
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
5: .line 31
return
6: .line 34
StackMap locals:
StackMap stack:
iload 3 /* len */
aload 1 /* x */
invokestatic org.bouncycastle.math.raw.Nat.copy:(I[I)[I
astore 4 /* u */
start local 4 // int[] u
7: .line 35
iload 3 /* len */
invokestatic org.bouncycastle.math.raw.Nat.create:(I)[I
astore 5 /* a */
start local 5 // int[] a
8: .line 36
aload 5 /* a */
iconst_0
iconst_1
iastore
9: .line 37
iconst_0
istore 6 /* ac */
start local 6 // int ac
10: .line 39
aload 4 /* u */
iconst_0
iaload
iconst_1
iand
ifne 12
11: .line 41
aload 0 /* p */
aload 4 /* u */
iload 3 /* len */
aload 5 /* a */
iload 6 /* ac */
invokestatic org.bouncycastle.math.raw.Mod.inversionStep:([I[II[II)I
istore 6 /* ac */
12: .line 43
StackMap locals: int[] int[] int
StackMap stack:
iload 3 /* len */
aload 4 /* u */
invokestatic org.bouncycastle.math.raw.Nat.isOne:(I[I)Z
ifeq 15
13: .line 45
aload 0 /* p */
iload 6 /* ac */
aload 5 /* a */
aload 2 /* z */
invokestatic org.bouncycastle.math.raw.Mod.inversionResult:([II[I[I)V
14: .line 46
return
15: .line 49
StackMap locals:
StackMap stack:
iload 3 /* len */
aload 0 /* p */
invokestatic org.bouncycastle.math.raw.Nat.copy:(I[I)[I
astore 7 /* v */
start local 7 // int[] v
16: .line 50
iload 3 /* len */
invokestatic org.bouncycastle.math.raw.Nat.create:(I)[I
astore 8 /* b */
start local 8 // int[] b
17: .line 51
iconst_0
istore 9 /* bc */
start local 9 // int bc
18: .line 53
iload 3 /* len */
istore 10 /* uvLen */
start local 10 // int uvLen
19: .line 57
goto 21
20: .line 59
StackMap locals: int[] int[] int[] int int[] int[] int int[] int[] int int
StackMap stack:
iinc 10 /* uvLen */ -1
21: .line 57
StackMap locals:
StackMap stack:
aload 4 /* u */
iload 10 /* uvLen */
iconst_1
isub
iaload
ifne 22
aload 7 /* v */
iload 10 /* uvLen */
iconst_1
isub
iaload
ifeq 20
22: .line 62
StackMap locals:
StackMap stack:
iload 10 /* uvLen */
aload 4 /* u */
aload 7 /* v */
invokestatic org.bouncycastle.math.raw.Nat.gte:(I[I[I)Z
ifeq 29
23: .line 64
iload 10 /* uvLen */
aload 7 /* v */
aload 4 /* u */
invokestatic org.bouncycastle.math.raw.Nat.subFrom:(I[I[I)I
pop
24: .line 66
iload 6 /* ac */
iload 3 /* len */
aload 8 /* b */
aload 5 /* a */
invokestatic org.bouncycastle.math.raw.Nat.subFrom:(I[I[I)I
iload 9 /* bc */
isub
iadd
istore 6 /* ac */
25: .line 67
aload 0 /* p */
aload 4 /* u */
iload 10 /* uvLen */
aload 5 /* a */
iload 6 /* ac */
invokestatic org.bouncycastle.math.raw.Mod.inversionStep:([I[II[II)I
istore 6 /* ac */
26: .line 68
iload 10 /* uvLen */
aload 4 /* u */
invokestatic org.bouncycastle.math.raw.Nat.isOne:(I[I)Z
ifeq 35
27: .line 70
aload 0 /* p */
iload 6 /* ac */
aload 5 /* a */
aload 2 /* z */
invokestatic org.bouncycastle.math.raw.Mod.inversionResult:([II[I[I)V
28: .line 71
return
29: .line 76
StackMap locals:
StackMap stack:
iload 10 /* uvLen */
aload 4 /* u */
aload 7 /* v */
invokestatic org.bouncycastle.math.raw.Nat.subFrom:(I[I[I)I
pop
30: .line 78
iload 9 /* bc */
iload 3 /* len */
aload 5 /* a */
aload 8 /* b */
invokestatic org.bouncycastle.math.raw.Nat.subFrom:(I[I[I)I
iload 6 /* ac */
isub
iadd
istore 9 /* bc */
31: .line 79
aload 0 /* p */
aload 7 /* v */
iload 10 /* uvLen */
aload 8 /* b */
iload 9 /* bc */
invokestatic org.bouncycastle.math.raw.Mod.inversionStep:([I[II[II)I
istore 9 /* bc */
32: .line 80
iload 10 /* uvLen */
aload 7 /* v */
invokestatic org.bouncycastle.math.raw.Nat.isOne:(I[I)Z
ifeq 35
33: .line 82
aload 0 /* p */
iload 9 /* bc */
aload 8 /* b */
aload 2 /* z */
invokestatic org.bouncycastle.math.raw.Mod.inversionResult:([II[I[I)V
34: .line 83
return
35: .line 55
StackMap locals:
StackMap stack:
goto 21
end local 10 // int uvLen
end local 9 // int bc
end local 8 // int[] b
end local 7 // int[] v
end local 6 // int ac
end local 5 // int[] a
end local 4 // int[] u
end local 3 // int len
end local 2 // int[] z
end local 1 // int[] x
end local 0 // int[] p
LocalVariableTable:
Start End Slot Name Signature
0 36 0 p [I
0 36 1 x [I
0 36 2 z [I
1 36 3 len I
7 36 4 u [I
8 36 5 a [I
10 36 6 ac I
16 36 7 v [I
17 36 8 b [I
18 36 9 bc I
19 36 10 uvLen I
MethodParameters:
Name Flags
p
x
z
public static int[] random(int[]);
descriptor: ([I)[I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=6, args_size=1
start local 0 // int[] p
0: .line 91
aload 0 /* p */
arraylength
istore 1 /* len */
start local 1 // int len
1: .line 92
new java.util.Random
dup
invokespecial java.util.Random.<init>:()V
astore 2 /* rand */
start local 2 // java.util.Random rand
2: .line 93
iload 1 /* len */
invokestatic org.bouncycastle.math.raw.Nat.create:(I)[I
astore 3 /* s */
start local 3 // int[] s
3: .line 95
aload 0 /* p */
iload 1 /* len */
iconst_1
isub
iaload
istore 4 /* m */
start local 4 // int m
4: .line 96
iload 4 /* m */
iload 4 /* m */
iconst_1
iushr
ior
istore 4 /* m */
5: .line 97
iload 4 /* m */
iload 4 /* m */
iconst_2
iushr
ior
istore 4 /* m */
6: .line 98
iload 4 /* m */
iload 4 /* m */
iconst_4
iushr
ior
istore 4 /* m */
7: .line 99
iload 4 /* m */
iload 4 /* m */
bipush 8
iushr
ior
istore 4 /* m */
8: .line 100
iload 4 /* m */
iload 4 /* m */
bipush 16
iushr
ior
istore 4 /* m */
9: .line 104
StackMap locals: int[] int java.util.Random int[] int
StackMap stack:
iconst_0
istore 5 /* i */
start local 5 // int i
10: goto 13
11: .line 106
StackMap locals: int
StackMap stack:
aload 3 /* s */
iload 5 /* i */
aload 2 /* rand */
invokevirtual java.util.Random.nextInt:()I
iastore
12: .line 104
iinc 5 /* i */ 1
StackMap locals:
StackMap stack:
13: iload 5 /* i */
iload 1 /* len */
if_icmpne 11
end local 5 // int i
14: .line 108
aload 3 /* s */
iload 1 /* len */
iconst_1
isub
dup2
iaload
iload 4 /* m */
iand
iastore
15: .line 110
iload 1 /* len */
aload 3 /* s */
aload 0 /* p */
invokestatic org.bouncycastle.math.raw.Nat.gte:(I[I[I)Z
ifne 9
16: .line 112
aload 3 /* s */
areturn
end local 4 // int m
end local 3 // int[] s
end local 2 // java.util.Random rand
end local 1 // int len
end local 0 // int[] p
LocalVariableTable:
Start End Slot Name Signature
0 17 0 p [I
1 17 1 len I
2 17 2 rand Ljava/util/Random;
3 17 3 s [I
4 17 4 m I
10 14 5 i I
MethodParameters:
Name Flags
p
public static void add(int[], int[], int[], int[]);
descriptor: ([I[I[I[I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=6, args_size=4
start local 0 // int[] p
start local 1 // int[] x
start local 2 // int[] y
start local 3 // int[] z
0: .line 117
aload 0 /* p */
arraylength
istore 4 /* len */
start local 4 // int len
1: .line 118
iload 4 /* len */
aload 1 /* x */
aload 2 /* y */
aload 3 /* z */
invokestatic org.bouncycastle.math.raw.Nat.add:(I[I[I[I)I
istore 5 /* c */
start local 5 // int c
2: .line 119
iload 5 /* c */
ifeq 4
3: .line 121
iload 4 /* len */
aload 0 /* p */
aload 3 /* z */
invokestatic org.bouncycastle.math.raw.Nat.subFrom:(I[I[I)I
pop
4: .line 123
StackMap locals: int int
StackMap stack:
return
end local 5 // int c
end local 4 // int len
end local 3 // int[] z
end local 2 // int[] y
end local 1 // int[] x
end local 0 // int[] p
LocalVariableTable:
Start End Slot Name Signature
0 5 0 p [I
0 5 1 x [I
0 5 2 y [I
0 5 3 z [I
1 5 4 len I
2 5 5 c I
MethodParameters:
Name Flags
p
x
y
z
public static void subtract(int[], int[], int[], int[]);
descriptor: ([I[I[I[I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=6, args_size=4
start local 0 // int[] p
start local 1 // int[] x
start local 2 // int[] y
start local 3 // int[] z
0: .line 127
aload 0 /* p */
arraylength
istore 4 /* len */
start local 4 // int len
1: .line 128
iload 4 /* len */
aload 1 /* x */
aload 2 /* y */
aload 3 /* z */
invokestatic org.bouncycastle.math.raw.Nat.sub:(I[I[I[I)I
istore 5 /* c */
start local 5 // int c
2: .line 129
iload 5 /* c */
ifeq 4
3: .line 131
iload 4 /* len */
aload 0 /* p */
aload 3 /* z */
invokestatic org.bouncycastle.math.raw.Nat.addTo:(I[I[I)I
pop
4: .line 133
StackMap locals: int int
StackMap stack:
return
end local 5 // int c
end local 4 // int len
end local 3 // int[] z
end local 2 // int[] y
end local 1 // int[] x
end local 0 // int[] p
LocalVariableTable:
Start End Slot Name Signature
0 5 0 p [I
0 5 1 x [I
0 5 2 y [I
0 5 3 z [I
1 5 4 len I
2 5 5 c I
MethodParameters:
Name Flags
p
x
y
z
private static void inversionResult(int[], int, int[], int[]);
descriptor: ([II[I[I)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=4, args_size=4
start local 0 // int[] p
start local 1 // int ac
start local 2 // int[] a
start local 3 // int[] z
0: .line 137
iload 1 /* ac */
ifge 3
1: .line 139
aload 0 /* p */
arraylength
aload 2 /* a */
aload 0 /* p */
aload 3 /* z */
invokestatic org.bouncycastle.math.raw.Nat.add:(I[I[I[I)I
pop
2: .line 140
goto 4
3: .line 143
StackMap locals:
StackMap stack:
aload 2 /* a */
iconst_0
aload 3 /* z */
iconst_0
aload 0 /* p */
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
4: .line 145
StackMap locals:
StackMap stack:
return
end local 3 // int[] z
end local 2 // int[] a
end local 1 // int ac
end local 0 // int[] p
LocalVariableTable:
Start End Slot Name Signature
0 5 0 p [I
0 5 1 ac I
0 5 2 a [I
0 5 3 z [I
MethodParameters:
Name Flags
p
ac
a
z
private static int inversionStep(int[], int[], int, int[], int);
descriptor: ([I[II[II)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=8, args_size=5
start local 0 // int[] p
start local 1 // int[] u
start local 2 // int uLen
start local 3 // int[] x
start local 4 // int xc
0: .line 149
aload 0 /* p */
arraylength
istore 5 /* len */
start local 5 // int len
1: .line 150
iconst_0
istore 6 /* count */
start local 6 // int count
2: .line 151
goto 5
3: .line 153
StackMap locals: int int
StackMap stack:
iload 2 /* uLen */
aload 1 /* u */
iconst_0
invokestatic org.bouncycastle.math.raw.Nat.shiftDownWord:(I[II)I
pop
4: .line 154
iinc 6 /* count */ 32
5: .line 151
StackMap locals:
StackMap stack:
aload 1 /* u */
iconst_0
iaload
ifeq 3
6: .line 158
aload 1 /* u */
iconst_0
iaload
invokestatic org.bouncycastle.math.raw.Mod.getTrailingZeroes:(I)I
istore 7 /* zeroes */
start local 7 // int zeroes
7: .line 159
iload 7 /* zeroes */
ifle 10
8: .line 161
iload 2 /* uLen */
aload 1 /* u */
iload 7 /* zeroes */
iconst_0
invokestatic org.bouncycastle.math.raw.Nat.shiftDownBits:(I[III)I
pop
9: .line 162
iload 6 /* count */
iload 7 /* zeroes */
iadd
istore 6 /* count */
end local 7 // int zeroes
10: .line 166
StackMap locals:
StackMap stack:
iconst_0
istore 7 /* i */
start local 7 // int i
11: goto 19
12: .line 168
StackMap locals: int
StackMap stack:
aload 3 /* x */
iconst_0
iaload
iconst_1
iand
ifeq 17
13: .line 170
iload 4 /* xc */
ifge 16
14: .line 172
iload 4 /* xc */
iload 5 /* len */
aload 0 /* p */
aload 3 /* x */
invokestatic org.bouncycastle.math.raw.Nat.addTo:(I[I[I)I
iadd
istore 4 /* xc */
15: .line 173
goto 17
16: .line 176
StackMap locals:
StackMap stack:
iload 4 /* xc */
iload 5 /* len */
aload 0 /* p */
aload 3 /* x */
invokestatic org.bouncycastle.math.raw.Nat.subFrom:(I[I[I)I
iadd
istore 4 /* xc */
17: .line 181
StackMap locals:
StackMap stack:
iload 5 /* len */
aload 3 /* x */
iload 4 /* xc */
invokestatic org.bouncycastle.math.raw.Nat.shiftDownBit:(I[II)I
pop
18: .line 166
iinc 7 /* i */ 1
StackMap locals:
StackMap stack:
19: iload 7 /* i */
iload 6 /* count */
if_icmplt 12
end local 7 // int i
20: .line 184
iload 4 /* xc */
ireturn
end local 6 // int count
end local 5 // int len
end local 4 // int xc
end local 3 // int[] x
end local 2 // int uLen
end local 1 // int[] u
end local 0 // int[] p
LocalVariableTable:
Start End Slot Name Signature
0 21 0 p [I
0 21 1 u [I
0 21 2 uLen I
0 21 3 x [I
0 21 4 xc I
1 21 5 len I
2 21 6 count I
7 10 7 zeroes I
11 20 7 i I
MethodParameters:
Name Flags
p
u
uLen
x
xc
private static int getTrailingZeroes(int);
descriptor: (I)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 // int x
0: .line 191
iconst_0
istore 1 /* count */
start local 1 // int count
1: .line 192
goto 4
2: .line 194
StackMap locals: int
StackMap stack:
iload 0 /* x */
iconst_1
iushr
istore 0 /* x */
3: .line 195
iinc 1 /* count */ 1
4: .line 192
StackMap locals:
StackMap stack:
iload 0 /* x */
iconst_1
iand
ifeq 2
5: .line 197
iload 1 /* count */
ireturn
end local 1 // int count
end local 0 // int x
LocalVariableTable:
Start End Slot Name Signature
0 6 0 x I
1 6 1 count I
MethodParameters:
Name Flags
x
}
SourceFile: "Mod.java"