public class org.bouncycastle.math.ec.custom.gm.SM2P256V1Field
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.bouncycastle.math.ec.custom.gm.SM2P256V1Field
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
static final int[] PExt;
descriptor: [I
flags: (0x0018) ACC_STATIC, ACC_FINAL
private static final int P7s1;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 2147483647
private static final int PExt15s1;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 2147483647
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: .line 13
bipush 8
newarray 10
dup
iconst_0
iconst_m1
iastore
dup
iconst_1
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: .line 14
iconst_m1
iastore
dup
bipush 7
bipush -2
iastore
2: .line 13
putstatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.P:[I
3: .line 15
bipush 16
newarray 10
dup
iconst_0
iconst_1
iastore
dup
iconst_2
bipush -2
iastore
dup
iconst_3
iconst_1
iastore
dup
iconst_4
iconst_1
iastore
dup
iconst_5
4: .line 16
bipush -2
iastore
dup
bipush 7
iconst_2
iastore
dup
bipush 8
bipush -2
iastore
dup
bipush 9
bipush -3
iastore
dup
bipush 10
iconst_3
iastore
dup
bipush 11
bipush -2
iastore
dup
bipush 12
iconst_m1
iastore
dup
bipush 13
iconst_m1
iastore
dup
bipush 15
5: .line 17
bipush -2
iastore
6: .line 15
putstatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.PExt:[I
7: .line 19
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 // org.bouncycastle.math.ec.custom.gm.SM2P256V1Field this
0: .line 8
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // org.bouncycastle.math.ec.custom.gm.SM2P256V1Field this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/math/ec/custom/gm/SM2P256V1Field;
public static void add(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 // int[] x
start local 1 // int[] y
start local 2 // int[] z
0: .line 23
aload 0 /* x */
aload 1 /* y */
aload 2 /* z */
invokestatic org.bouncycastle.math.raw.Nat256.add:([I[I[I)I
istore 3 /* c */
start local 3 // int c
1: .line 24
iload 3 /* c */
ifne 2
aload 2 /* z */
bipush 7
iaload
iconst_1
iushr
ldc 2147483647
if_icmplt 3
aload 2 /* z */
getstatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.P:[I
invokestatic org.bouncycastle.math.raw.Nat256.gte:([I[I)Z
ifeq 3
2: .line 26
StackMap locals: int
StackMap stack:
aload 2 /* z */
invokestatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.addPInvTo:([I)V
3: .line 28
StackMap locals:
StackMap stack:
return
end local 3 // int c
end local 2 // int[] z
end local 1 // int[] y
end local 0 // int[] x
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 addExt(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 // int[] xx
start local 1 // int[] yy
start local 2 // int[] zz
0: .line 32
bipush 16
aload 0 /* xx */
aload 1 /* yy */
aload 2 /* zz */
invokestatic org.bouncycastle.math.raw.Nat.add:(I[I[I[I)I
istore 3 /* c */
start local 3 // int c
1: .line 33
iload 3 /* c */
ifne 2
aload 2 /* zz */
bipush 15
iaload
iconst_1
iushr
ldc 2147483647
if_icmplt 3
bipush 16
aload 2 /* zz */
getstatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.PExt:[I
invokestatic org.bouncycastle.math.raw.Nat.gte:(I[I[I)Z
ifeq 3
2: .line 35
StackMap locals: int
StackMap stack:
bipush 16
getstatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.PExt:[I
aload 2 /* zz */
invokestatic org.bouncycastle.math.raw.Nat.subFrom:(I[I[I)I
pop
3: .line 37
StackMap locals:
StackMap stack:
return
end local 3 // int c
end local 2 // int[] zz
end local 1 // int[] yy
end local 0 // int[] xx
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 addOne(int[], int[]);
descriptor: ([I[I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=3, args_size=2
start local 0 // int[] x
start local 1 // int[] z
0: .line 41
bipush 8
aload 0 /* x */
aload 1 /* z */
invokestatic org.bouncycastle.math.raw.Nat.inc:(I[I[I)I
istore 2 /* c */
start local 2 // int c
1: .line 42
iload 2 /* c */
ifne 2
aload 1 /* z */
bipush 7
iaload
iconst_1
iushr
ldc 2147483647
if_icmplt 3
aload 1 /* z */
getstatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.P:[I
invokestatic org.bouncycastle.math.raw.Nat256.gte:([I[I)Z
ifeq 3
2: .line 44
StackMap locals: int
StackMap stack:
aload 1 /* z */
invokestatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.addPInvTo:([I)V
3: .line 46
StackMap locals:
StackMap stack:
return
end local 2 // int c
end local 1 // int[] z
end local 0 // int[] x
LocalVariableTable:
Start End Slot Name Signature
0 4 0 x [I
0 4 1 z [I
1 4 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=2, locals=2, args_size=1
start local 0 // java.math.BigInteger x
0: .line 50
aload 0 /* x */
invokestatic org.bouncycastle.math.raw.Nat256.fromBigInteger:(Ljava/math/BigInteger;)[I
astore 1 /* z */
start local 1 // int[] z
1: .line 51
aload 1 /* z */
bipush 7
iaload
iconst_1
iushr
ldc 2147483647
if_icmplt 3
aload 1 /* z */
getstatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.P:[I
invokestatic org.bouncycastle.math.raw.Nat256.gte:([I[I)Z
ifeq 3
2: .line 53
getstatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.P:[I
aload 1 /* z */
invokestatic org.bouncycastle.math.raw.Nat256.subFrom:([I[I)I
pop
3: .line 55
StackMap locals: int[]
StackMap stack:
aload 1 /* z */
areturn
end local 1 // int[] z
end local 0 // java.math.BigInteger x
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=4, locals=3, args_size=2
start local 0 // int[] x
start local 1 // int[] z
0: .line 60
aload 0 /* x */
iconst_0
iaload
iconst_1
iand
ifne 3
1: .line 62
bipush 8
aload 0 /* x */
iconst_0
aload 1 /* z */
invokestatic org.bouncycastle.math.raw.Nat.shiftDownBit:(I[II[I)I
pop
2: .line 63
goto 5
3: .line 66
StackMap locals:
StackMap stack:
aload 0 /* x */
getstatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.P:[I
aload 1 /* z */
invokestatic org.bouncycastle.math.raw.Nat256.add:([I[I[I)I
istore 2 /* c */
start local 2 // int c
4: .line 67
bipush 8
aload 1 /* z */
iload 2 /* c */
invokestatic org.bouncycastle.math.raw.Nat.shiftDownBit:(I[II)I
pop
end local 2 // int c
5: .line 69
StackMap locals:
StackMap stack:
return
end local 1 // int[] z
end local 0 // int[] x
LocalVariableTable:
Start End Slot Name Signature
0 6 0 x [I
0 6 1 z [I
4 5 2 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 // int[] x
start local 1 // int[] y
start local 2 // int[] z
0: .line 73
invokestatic org.bouncycastle.math.raw.Nat256.createExt:()[I
astore 3 /* tt */
start local 3 // int[] tt
1: .line 74
aload 0 /* x */
aload 1 /* y */
aload 3 /* tt */
invokestatic org.bouncycastle.math.raw.Nat256.mul:([I[I[I)V
2: .line 75
aload 3 /* tt */
aload 2 /* z */
invokestatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.reduce:([I[I)V
3: .line 76
return
end local 3 // int[] tt
end local 2 // int[] z
end local 1 // int[] y
end local 0 // int[] x
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=4, args_size=3
start local 0 // int[] x
start local 1 // int[] y
start local 2 // int[] zz
0: .line 80
aload 0 /* x */
aload 1 /* y */
aload 2 /* zz */
invokestatic org.bouncycastle.math.raw.Nat256.mulAddTo:([I[I[I)I
istore 3 /* c */
start local 3 // int c
1: .line 81
iload 3 /* c */
ifne 2
aload 2 /* zz */
bipush 15
iaload
iconst_1
iushr
ldc 2147483647
if_icmplt 3
bipush 16
aload 2 /* zz */
getstatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.PExt:[I
invokestatic org.bouncycastle.math.raw.Nat.gte:(I[I[I)Z
ifeq 3
2: .line 83
StackMap locals: int
StackMap stack:
bipush 16
getstatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.PExt:[I
aload 2 /* zz */
invokestatic org.bouncycastle.math.raw.Nat.subFrom:(I[I[I)I
pop
3: .line 85
StackMap locals:
StackMap stack:
return
end local 3 // int c
end local 2 // int[] zz
end local 1 // int[] y
end local 0 // int[] x
LocalVariableTable:
Start End Slot Name Signature
0 4 0 x [I
0 4 1 y [I
0 4 2 zz [I
1 4 3 c 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 // int[] x
start local 1 // int[] z
0: .line 89
aload 0 /* x */
invokestatic org.bouncycastle.math.raw.Nat256.isZero:([I)Z
ifeq 3
1: .line 91
aload 1 /* z */
invokestatic org.bouncycastle.math.raw.Nat256.zero:([I)V
2: .line 92
goto 4
3: .line 95
StackMap locals:
StackMap stack:
getstatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.P:[I
aload 0 /* x */
aload 1 /* z */
invokestatic org.bouncycastle.math.raw.Nat256.sub:([I[I[I)I
pop
4: .line 97
StackMap locals:
StackMap stack:
return
end local 1 // int[] z
end local 0 // int[] x
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=34, args_size=2
start local 0 // int[] xx
start local 1 // int[] z
0: .line 101
aload 0 /* xx */
bipush 8
iaload
i2l
ldc 4294967295
land
lstore 2 /* xx08 */
start local 2 // long xx08
1: aload 0 /* xx */
bipush 9
iaload
i2l
ldc 4294967295
land
lstore 4 /* xx09 */
start local 4 // long xx09
2: aload 0 /* xx */
bipush 10
iaload
i2l
ldc 4294967295
land
lstore 6 /* xx10 */
start local 6 // long xx10
3: aload 0 /* xx */
bipush 11
iaload
i2l
ldc 4294967295
land
lstore 8 /* xx11 */
start local 8 // long xx11
4: .line 102
aload 0 /* xx */
bipush 12
iaload
i2l
ldc 4294967295
land
lstore 10 /* xx12 */
start local 10 // long xx12
5: aload 0 /* xx */
bipush 13
iaload
i2l
ldc 4294967295
land
lstore 12 /* xx13 */
start local 12 // long xx13
6: aload 0 /* xx */
bipush 14
iaload
i2l
ldc 4294967295
land
lstore 14 /* xx14 */
start local 14 // long xx14
7: aload 0 /* xx */
bipush 15
iaload
i2l
ldc 4294967295
land
lstore 16 /* xx15 */
start local 16 // long xx15
8: .line 104
lload 2 /* xx08 */
lload 4 /* xx09 */
ladd
lstore 18 /* t0 */
start local 18 // long t0
9: .line 105
lload 6 /* xx10 */
lload 8 /* xx11 */
ladd
lstore 20 /* t1 */
start local 20 // long t1
10: .line 106
lload 10 /* xx12 */
lload 16 /* xx15 */
ladd
lstore 22 /* t2 */
start local 22 // long t2
11: .line 107
lload 12 /* xx13 */
lload 14 /* xx14 */
ladd
lstore 24 /* t3 */
start local 24 // long t3
12: .line 108
lload 24 /* t3 */
lload 16 /* xx15 */
iconst_1
lshl
ladd
lstore 26 /* t4 */
start local 26 // long t4
13: .line 110
lload 18 /* t0 */
lload 24 /* t3 */
ladd
lstore 28 /* ts */
start local 28 // long ts
14: .line 111
lload 20 /* t1 */
lload 22 /* t2 */
ladd
lload 28 /* ts */
ladd
lstore 30 /* tt */
start local 30 // long tt
15: .line 113
lconst_0
lstore 32 /* cc */
start local 32 // long cc
16: .line 114
lload 32 /* cc */
aload 0 /* xx */
iconst_0
iaload
i2l
ldc 4294967295
land
lload 30 /* tt */
ladd
lload 12 /* xx13 */
ladd
lload 14 /* xx14 */
ladd
lload 16 /* xx15 */
ladd
ladd
lstore 32 /* cc */
17: .line 115
aload 1 /* z */
iconst_0
lload 32 /* cc */
l2i
iastore
18: .line 116
lload 32 /* cc */
bipush 32
lshr
lstore 32 /* cc */
19: .line 117
lload 32 /* cc */
aload 0 /* xx */
iconst_1
iaload
i2l
ldc 4294967295
land
lload 30 /* tt */
ladd
lload 2 /* xx08 */
lsub
lload 14 /* xx14 */
ladd
lload 16 /* xx15 */
ladd
ladd
lstore 32 /* cc */
20: .line 118
aload 1 /* z */
iconst_1
lload 32 /* cc */
l2i
iastore
21: .line 119
lload 32 /* cc */
bipush 32
lshr
lstore 32 /* cc */
22: .line 120
lload 32 /* cc */
aload 0 /* xx */
iconst_2
iaload
i2l
ldc 4294967295
land
lload 28 /* ts */
lsub
ladd
lstore 32 /* cc */
23: .line 121
aload 1 /* z */
iconst_2
lload 32 /* cc */
l2i
iastore
24: .line 122
lload 32 /* cc */
bipush 32
lshr
lstore 32 /* cc */
25: .line 123
lload 32 /* cc */
aload 0 /* xx */
iconst_3
iaload
i2l
ldc 4294967295
land
lload 30 /* tt */
ladd
lload 4 /* xx09 */
lsub
lload 6 /* xx10 */
lsub
lload 12 /* xx13 */
ladd
ladd
lstore 32 /* cc */
26: .line 124
aload 1 /* z */
iconst_3
lload 32 /* cc */
l2i
iastore
27: .line 125
lload 32 /* cc */
bipush 32
lshr
lstore 32 /* cc */
28: .line 126
lload 32 /* cc */
aload 0 /* xx */
iconst_4
iaload
i2l
ldc 4294967295
land
lload 30 /* tt */
ladd
lload 20 /* t1 */
lsub
lload 2 /* xx08 */
lsub
lload 14 /* xx14 */
ladd
ladd
lstore 32 /* cc */
29: .line 127
aload 1 /* z */
iconst_4
lload 32 /* cc */
l2i
iastore
30: .line 128
lload 32 /* cc */
bipush 32
lshr
lstore 32 /* cc */
31: .line 129
lload 32 /* cc */
aload 0 /* xx */
iconst_5
iaload
i2l
ldc 4294967295
land
lload 26 /* t4 */
ladd
lload 6 /* xx10 */
ladd
ladd
lstore 32 /* cc */
32: .line 130
aload 1 /* z */
iconst_5
lload 32 /* cc */
l2i
iastore
33: .line 131
lload 32 /* cc */
bipush 32
lshr
lstore 32 /* cc */
34: .line 132
lload 32 /* cc */
aload 0 /* xx */
bipush 6
iaload
i2l
ldc 4294967295
land
lload 8 /* xx11 */
ladd
lload 14 /* xx14 */
ladd
lload 16 /* xx15 */
ladd
ladd
lstore 32 /* cc */
35: .line 133
aload 1 /* z */
bipush 6
lload 32 /* cc */
l2i
iastore
36: .line 134
lload 32 /* cc */
bipush 32
lshr
lstore 32 /* cc */
37: .line 135
lload 32 /* cc */
aload 0 /* xx */
bipush 7
iaload
i2l
ldc 4294967295
land
lload 30 /* tt */
ladd
lload 26 /* t4 */
ladd
lload 10 /* xx12 */
ladd
ladd
lstore 32 /* cc */
38: .line 136
aload 1 /* z */
bipush 7
lload 32 /* cc */
l2i
iastore
39: .line 137
lload 32 /* cc */
bipush 32
lshr
lstore 32 /* cc */
40: .line 141
lload 32 /* cc */
l2i
aload 1 /* z */
invokestatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.reduce32:(I[I)V
41: .line 142
return
end local 32 // long cc
end local 30 // long tt
end local 28 // long ts
end local 26 // long t4
end local 24 // long t3
end local 22 // long t2
end local 20 // long t1
end local 18 // long t0
end local 16 // long xx15
end local 14 // long xx14
end local 12 // long xx13
end local 10 // long xx12
end local 8 // long xx11
end local 6 // long xx10
end local 4 // long xx09
end local 2 // long xx08
end local 1 // int[] z
end local 0 // int[] xx
LocalVariableTable:
Start End Slot Name Signature
0 42 0 xx [I
0 42 1 z [I
1 42 2 xx08 J
2 42 4 xx09 J
3 42 6 xx10 J
4 42 8 xx11 J
5 42 10 xx12 J
6 42 12 xx13 J
7 42 14 xx14 J
8 42 16 xx15 J
9 42 18 t0 J
10 42 20 t1 J
11 42 22 t2 J
12 42 24 t3 J
13 42 26 t4 J
14 42 28 ts J
15 42 30 tt J
16 42 32 cc J
MethodParameters:
Name Flags
xx
z
public static void reduce32(int, int[]);
descriptor: (I[I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=6, args_size=2
start local 0 // int x
start local 1 // int[] z
0: .line 146
lconst_0
lstore 2 /* cc */
start local 2 // long cc
1: .line 148
iload 0 /* x */
ifeq 29
2: .line 150
iload 0 /* x */
i2l
ldc 4294967295
land
lstore 4 /* xx08 */
start local 4 // long xx08
3: .line 152
lload 2 /* cc */
aload 1 /* z */
iconst_0
iaload
i2l
ldc 4294967295
land
lload 4 /* xx08 */
ladd
ladd
lstore 2 /* cc */
4: .line 153
aload 1 /* z */
iconst_0
lload 2 /* cc */
l2i
iastore
5: .line 154
lload 2 /* cc */
bipush 32
lshr
lstore 2 /* cc */
6: .line 155
lload 2 /* cc */
lconst_0
lcmp
ifeq 10
7: .line 157
lload 2 /* cc */
aload 1 /* z */
iconst_1
iaload
i2l
ldc 4294967295
land
ladd
lstore 2 /* cc */
8: .line 158
aload 1 /* z */
iconst_1
lload 2 /* cc */
l2i
iastore
9: .line 159
lload 2 /* cc */
bipush 32
lshr
lstore 2 /* cc */
10: .line 161
StackMap locals: long long
StackMap stack:
lload 2 /* cc */
aload 1 /* z */
iconst_2
iaload
i2l
ldc 4294967295
land
lload 4 /* xx08 */
lsub
ladd
lstore 2 /* cc */
11: .line 162
aload 1 /* z */
iconst_2
lload 2 /* cc */
l2i
iastore
12: .line 163
lload 2 /* cc */
bipush 32
lshr
lstore 2 /* cc */
13: .line 164
lload 2 /* cc */
aload 1 /* z */
iconst_3
iaload
i2l
ldc 4294967295
land
lload 4 /* xx08 */
ladd
ladd
lstore 2 /* cc */
14: .line 165
aload 1 /* z */
iconst_3
lload 2 /* cc */
l2i
iastore
15: .line 166
lload 2 /* cc */
bipush 32
lshr
lstore 2 /* cc */
16: .line 167
lload 2 /* cc */
lconst_0
lcmp
ifeq 26
17: .line 169
lload 2 /* cc */
aload 1 /* z */
iconst_4
iaload
i2l
ldc 4294967295
land
ladd
lstore 2 /* cc */
18: .line 170
aload 1 /* z */
iconst_4
lload 2 /* cc */
l2i
iastore
19: .line 171
lload 2 /* cc */
bipush 32
lshr
lstore 2 /* cc */
20: .line 172
lload 2 /* cc */
aload 1 /* z */
iconst_5
iaload
i2l
ldc 4294967295
land
ladd
lstore 2 /* cc */
21: .line 173
aload 1 /* z */
iconst_5
lload 2 /* cc */
l2i
iastore
22: .line 174
lload 2 /* cc */
bipush 32
lshr
lstore 2 /* cc */
23: .line 175
lload 2 /* cc */
aload 1 /* z */
bipush 6
iaload
i2l
ldc 4294967295
land
ladd
lstore 2 /* cc */
24: .line 176
aload 1 /* z */
bipush 6
lload 2 /* cc */
l2i
iastore
25: .line 177
lload 2 /* cc */
bipush 32
lshr
lstore 2 /* cc */
26: .line 179
StackMap locals:
StackMap stack:
lload 2 /* cc */
aload 1 /* z */
bipush 7
iaload
i2l
ldc 4294967295
land
lload 4 /* xx08 */
ladd
ladd
lstore 2 /* cc */
27: .line 180
aload 1 /* z */
bipush 7
lload 2 /* cc */
l2i
iastore
28: .line 181
lload 2 /* cc */
bipush 32
lshr
lstore 2 /* cc */
end local 4 // long xx08
29: .line 186
StackMap locals:
StackMap stack:
lload 2 /* cc */
lconst_0
lcmp
ifne 30
aload 1 /* z */
bipush 7
iaload
iconst_1
iushr
ldc 2147483647
if_icmplt 31
aload 1 /* z */
getstatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.P:[I
invokestatic org.bouncycastle.math.raw.Nat256.gte:([I[I)Z
ifeq 31
30: .line 188
StackMap locals:
StackMap stack:
aload 1 /* z */
invokestatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.addPInvTo:([I)V
31: .line 190
StackMap locals:
StackMap stack:
return
end local 2 // long cc
end local 1 // int[] z
end local 0 // int x
LocalVariableTable:
Start End Slot Name Signature
0 32 0 x I
0 32 1 z [I
1 32 2 cc J
3 29 4 xx08 J
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 // int[] x
start local 1 // int[] z
0: .line 194
invokestatic org.bouncycastle.math.raw.Nat256.createExt:()[I
astore 2 /* tt */
start local 2 // int[] tt
1: .line 195
aload 0 /* x */
aload 2 /* tt */
invokestatic org.bouncycastle.math.raw.Nat256.square:([I[I)V
2: .line 196
aload 2 /* tt */
aload 1 /* z */
invokestatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.reduce:([I[I)V
3: .line 197
return
end local 2 // int[] tt
end local 1 // int[] z
end local 0 // int[] x
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 // int[] x
start local 1 // int n
start local 2 // int[] z
0: .line 203
invokestatic org.bouncycastle.math.raw.Nat256.createExt:()[I
astore 3 /* tt */
start local 3 // int[] tt
1: .line 204
aload 0 /* x */
aload 3 /* tt */
invokestatic org.bouncycastle.math.raw.Nat256.square:([I[I)V
2: .line 205
aload 3 /* tt */
aload 2 /* z */
invokestatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.reduce:([I[I)V
3: .line 207
goto 6
4: .line 209
StackMap locals: int[]
StackMap stack:
aload 2 /* z */
aload 3 /* tt */
invokestatic org.bouncycastle.math.raw.Nat256.square:([I[I)V
5: .line 210
aload 3 /* tt */
aload 2 /* z */
invokestatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.reduce:([I[I)V
6: .line 207
StackMap locals:
StackMap stack:
iinc 1 /* n */ -1
iload 1 /* n */
ifgt 4
7: .line 212
return
end local 3 // int[] tt
end local 2 // int[] z
end local 1 // int n
end local 0 // int[] x
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 // int[] x
start local 1 // int[] y
start local 2 // int[] z
0: .line 216
aload 0 /* x */
aload 1 /* y */
aload 2 /* z */
invokestatic org.bouncycastle.math.raw.Nat256.sub:([I[I[I)I
istore 3 /* c */
start local 3 // int c
1: .line 217
iload 3 /* c */
ifeq 3
2: .line 219
aload 2 /* z */
invokestatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.subPInvFrom:([I)V
3: .line 221
StackMap locals: int
StackMap stack:
return
end local 3 // int c
end local 2 // int[] z
end local 1 // int[] y
end local 0 // int[] x
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 // int[] xx
start local 1 // int[] yy
start local 2 // int[] zz
0: .line 225
bipush 16
aload 0 /* xx */
aload 1 /* yy */
aload 2 /* zz */
invokestatic org.bouncycastle.math.raw.Nat.sub:(I[I[I[I)I
istore 3 /* c */
start local 3 // int c
1: .line 226
iload 3 /* c */
ifeq 3
2: .line 228
bipush 16
getstatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.PExt:[I
aload 2 /* zz */
invokestatic org.bouncycastle.math.raw.Nat.addTo:(I[I[I)I
pop
3: .line 230
StackMap locals: int
StackMap stack:
return
end local 3 // int c
end local 2 // int[] zz
end local 1 // int[] yy
end local 0 // int[] xx
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=3, args_size=2
start local 0 // int[] x
start local 1 // int[] z
0: .line 234
bipush 8
aload 0 /* x */
iconst_0
aload 1 /* z */
invokestatic org.bouncycastle.math.raw.Nat.shiftUpBit:(I[II[I)I
istore 2 /* c */
start local 2 // int c
1: .line 235
iload 2 /* c */
ifne 2
aload 1 /* z */
bipush 7
iaload
iconst_1
iushr
ldc 2147483647
if_icmplt 3
aload 1 /* z */
getstatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.P:[I
invokestatic org.bouncycastle.math.raw.Nat256.gte:([I[I)Z
ifeq 3
2: .line 237
StackMap locals: int
StackMap stack:
aload 1 /* z */
invokestatic org.bouncycastle.math.ec.custom.gm.SM2P256V1Field.addPInvTo:([I)V
3: .line 239
StackMap locals:
StackMap stack:
return
end local 2 // int c
end local 1 // int[] z
end local 0 // int[] x
LocalVariableTable:
Start End Slot Name Signature
0 4 0 x [I
0 4 1 z [I
1 4 2 c I
MethodParameters:
Name Flags
x
z
private static void addPInvTo(int[]);
descriptor: ([I)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=3, args_size=1
start local 0 // int[] z
0: .line 243
aload 0 /* z */
iconst_0
iaload
i2l
ldc 4294967295
land
lconst_1
ladd
lstore 1 /* c */
start local 1 // long c
1: .line 244
aload 0 /* z */
iconst_0
lload 1 /* c */
l2i
iastore
2: .line 245
lload 1 /* c */
bipush 32
lshr
lstore 1 /* c */
3: .line 246
lload 1 /* c */
lconst_0
lcmp
ifeq 7
4: .line 248
lload 1 /* c */
aload 0 /* z */
iconst_1
iaload
i2l
ldc 4294967295
land
ladd
lstore 1 /* c */
5: .line 249
aload 0 /* z */
iconst_1
lload 1 /* c */
l2i
iastore
6: .line 250
lload 1 /* c */
bipush 32
lshr
lstore 1 /* c */
7: .line 252
StackMap locals: long
StackMap stack:
lload 1 /* c */
aload 0 /* z */
iconst_2
iaload
i2l
ldc 4294967295
land
lconst_1
lsub
ladd
lstore 1 /* c */
8: .line 253
aload 0 /* z */
iconst_2
lload 1 /* c */
l2i
iastore
9: .line 254
lload 1 /* c */
bipush 32
lshr
lstore 1 /* c */
10: .line 255
lload 1 /* c */
aload 0 /* z */
iconst_3
iaload
i2l
ldc 4294967295
land
lconst_1
ladd
ladd
lstore 1 /* c */
11: .line 256
aload 0 /* z */
iconst_3
lload 1 /* c */
l2i
iastore
12: .line 257
lload 1 /* c */
bipush 32
lshr
lstore 1 /* c */
13: .line 258
lload 1 /* c */
lconst_0
lcmp
ifeq 23
14: .line 260
lload 1 /* c */
aload 0 /* z */
iconst_4
iaload
i2l
ldc 4294967295
land
ladd
lstore 1 /* c */
15: .line 261
aload 0 /* z */
iconst_4
lload 1 /* c */
l2i
iastore
16: .line 262
lload 1 /* c */
bipush 32
lshr
lstore 1 /* c */
17: .line 263
lload 1 /* c */
aload 0 /* z */
iconst_5
iaload
i2l
ldc 4294967295
land
ladd
lstore 1 /* c */
18: .line 264
aload 0 /* z */
iconst_5
lload 1 /* c */
l2i
iastore
19: .line 265
lload 1 /* c */
bipush 32
lshr
lstore 1 /* c */
20: .line 266
lload 1 /* c */
aload 0 /* z */
bipush 6
iaload
i2l
ldc 4294967295
land
ladd
lstore 1 /* c */
21: .line 267
aload 0 /* z */
bipush 6
lload 1 /* c */
l2i
iastore
22: .line 268
lload 1 /* c */
bipush 32
lshr
lstore 1 /* c */
23: .line 270
StackMap locals:
StackMap stack:
lload 1 /* c */
aload 0 /* z */
bipush 7
iaload
i2l
ldc 4294967295
land
lconst_1
ladd
ladd
lstore 1 /* c */
24: .line 271
aload 0 /* z */
bipush 7
lload 1 /* c */
l2i
iastore
25: .line 273
return
end local 1 // long c
end local 0 // int[] z
LocalVariableTable:
Start End Slot Name Signature
0 26 0 z [I
1 26 1 c J
MethodParameters:
Name Flags
z
private static void subPInvFrom(int[]);
descriptor: ([I)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=3, args_size=1
start local 0 // int[] z
0: .line 277
aload 0 /* z */
iconst_0
iaload
i2l
ldc 4294967295
land
lconst_1
lsub
lstore 1 /* c */
start local 1 // long c
1: .line 278
aload 0 /* z */
iconst_0
lload 1 /* c */
l2i
iastore
2: .line 279
lload 1 /* c */
bipush 32
lshr
lstore 1 /* c */
3: .line 280
lload 1 /* c */
lconst_0
lcmp
ifeq 7
4: .line 282
lload 1 /* c */
aload 0 /* z */
iconst_1
iaload
i2l
ldc 4294967295
land
ladd
lstore 1 /* c */
5: .line 283
aload 0 /* z */
iconst_1
lload 1 /* c */
l2i
iastore
6: .line 284
lload 1 /* c */
bipush 32
lshr
lstore 1 /* c */
7: .line 286
StackMap locals: long
StackMap stack:
lload 1 /* c */
aload 0 /* z */
iconst_2
iaload
i2l
ldc 4294967295
land
lconst_1
ladd
ladd
lstore 1 /* c */
8: .line 287
aload 0 /* z */
iconst_2
lload 1 /* c */
l2i
iastore
9: .line 288
lload 1 /* c */
bipush 32
lshr
lstore 1 /* c */
10: .line 289
lload 1 /* c */
aload 0 /* z */
iconst_3
iaload
i2l
ldc 4294967295
land
lconst_1
lsub
ladd
lstore 1 /* c */
11: .line 290
aload 0 /* z */
iconst_3
lload 1 /* c */
l2i
iastore
12: .line 291
lload 1 /* c */
bipush 32
lshr
lstore 1 /* c */
13: .line 292
lload 1 /* c */
lconst_0
lcmp
ifeq 23
14: .line 294
lload 1 /* c */
aload 0 /* z */
iconst_4
iaload
i2l
ldc 4294967295
land
ladd
lstore 1 /* c */
15: .line 295
aload 0 /* z */
iconst_4
lload 1 /* c */
l2i
iastore
16: .line 296
lload 1 /* c */
bipush 32
lshr
lstore 1 /* c */
17: .line 297
lload 1 /* c */
aload 0 /* z */
iconst_5
iaload
i2l
ldc 4294967295
land
ladd
lstore 1 /* c */
18: .line 298
aload 0 /* z */
iconst_5
lload 1 /* c */
l2i
iastore
19: .line 299
lload 1 /* c */
bipush 32
lshr
lstore 1 /* c */
20: .line 300
lload 1 /* c */
aload 0 /* z */
bipush 6
iaload
i2l
ldc 4294967295
land
ladd
lstore 1 /* c */
21: .line 301
aload 0 /* z */
bipush 6
lload 1 /* c */
l2i
iastore
22: .line 302
lload 1 /* c */
bipush 32
lshr
lstore 1 /* c */
23: .line 304
StackMap locals:
StackMap stack:
lload 1 /* c */
aload 0 /* z */
bipush 7
iaload
i2l
ldc 4294967295
land
lconst_1
lsub
ladd
lstore 1 /* c */
24: .line 305
aload 0 /* z */
bipush 7
lload 1 /* c */
l2i
iastore
25: .line 307
return
end local 1 // long c
end local 0 // int[] z
LocalVariableTable:
Start End Slot Name Signature
0 26 0 z [I
1 26 1 c J
MethodParameters:
Name Flags
z
}
SourceFile: "SM2P256V1Field.java"