public class java.math.BigInteger extends java.lang.Number implements java.lang.Comparable<java.math.BigInteger>
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: java.math.BigInteger
super_class: java.lang.Number
{
final int signum;
descriptor: I
flags: (0x0010) ACC_FINAL
final int[] mag;
descriptor: [I
flags: (0x0010) ACC_FINAL
private int bitCount;
descriptor: I
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
java.lang.Deprecated()
private int bitLength;
descriptor: I
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
java.lang.Deprecated()
private int lowestSetBit;
descriptor: I
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
java.lang.Deprecated()
private int firstNonzeroIntNum;
descriptor: I
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
java.lang.Deprecated()
static final long LONG_MASK;
descriptor: J
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 4294967295
private static final int MAX_MAG_LENGTH;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 67108864
private static final int PRIME_SEARCH_BIT_LENGTH_LIMIT;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 500000000
private static final int KARATSUBA_THRESHOLD;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 80
private static final int TOOM_COOK_THRESHOLD;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 240
private static final int KARATSUBA_SQUARE_THRESHOLD;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 128
private static final int TOOM_COOK_SQUARE_THRESHOLD;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 216
static final int BURNIKEL_ZIEGLER_THRESHOLD;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 80
static final int BURNIKEL_ZIEGLER_OFFSET;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 40
private static final int SCHOENHAGE_BASE_CONVERSION_THRESHOLD;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 20
private static final int MULTIPLY_SQUARE_THRESHOLD;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 20
private static final int MONTGOMERY_INTRINSIC_THRESHOLD;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 512
private static long[] bitsPerDigit;
descriptor: [J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static final int SMALL_PRIME_THRESHOLD;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 95
private static final int DEFAULT_PRIME_CERTAINTY;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 100
private static final java.math.BigInteger SMALL_PRIME_PRODUCT;
descriptor: Ljava/math/BigInteger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int MAX_CONSTANT;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 16
private static java.math.BigInteger[] posConst;
descriptor: [Ljava/math/BigInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static java.math.BigInteger[] negConst;
descriptor: [Ljava/math/BigInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static volatile java.math.BigInteger[][] powerCache;
descriptor: [[Ljava/math/BigInteger;
flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE
private static final double[] logCache;
descriptor: [D
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final double LOG_TWO;
descriptor: D
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
public static final java.math.BigInteger ZERO;
descriptor: Ljava/math/BigInteger;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
public static final java.math.BigInteger ONE;
descriptor: Ljava/math/BigInteger;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
private static final java.math.BigInteger TWO;
descriptor: Ljava/math/BigInteger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.math.BigInteger NEGATIVE_ONE;
descriptor: Ljava/math/BigInteger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
public static final java.math.BigInteger TEN;
descriptor: Ljava/math/BigInteger;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
static int[] bnExpModThreshTable;
descriptor: [I
flags: (0x0008) ACC_STATIC
private static java.lang.String[] zeros;
descriptor: [Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static int[] digitsPerLong;
descriptor: [I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static java.math.BigInteger[] longRadix;
descriptor: [Ljava/math/BigInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static int[] digitsPerInt;
descriptor: [I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static int[] intRadix;
descriptor: [I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static final long serialVersionUID;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: -8287574255936472291
private static final java.io.ObjectStreamField[] serialPersistentFields;
descriptor: [Ljava/io/ObjectStreamField;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=7, locals=2, args_size=0
0: .line 123
ldc Ljava/math/BigInteger;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic java.math.BigInteger.$assertionsDisabled:Z
3: .line 560
bipush 37
newarray 11
dup
iconst_2
4: .line 561
ldc 1024
lastore
dup
iconst_3
ldc 1624
lastore
dup
iconst_4
ldc 2048
lastore
dup
iconst_5
ldc 2378
lastore
dup
bipush 6
ldc 2648
lastore
dup
bipush 7
ldc 2875
lastore
dup
bipush 8
ldc 3072
lastore
dup
bipush 9
ldc 3247
lastore
dup
bipush 10
ldc 3402
lastore
dup
bipush 11
ldc 3543
lastore
dup
bipush 12
ldc 3672
lastore
dup
bipush 13
5: .line 562
ldc 3790
lastore
dup
bipush 14
ldc 3899
lastore
dup
bipush 15
ldc 4001
lastore
dup
bipush 16
ldc 4096
lastore
dup
bipush 17
ldc 4186
lastore
dup
bipush 18
ldc 4271
lastore
dup
bipush 19
ldc 4350
lastore
dup
bipush 20
ldc 4426
lastore
dup
bipush 21
ldc 4498
lastore
dup
bipush 22
ldc 4567
lastore
dup
bipush 23
ldc 4633
lastore
dup
bipush 24
6: .line 563
ldc 4696
lastore
dup
bipush 25
ldc 4756
lastore
dup
bipush 26
ldc 4814
lastore
dup
bipush 27
ldc 4870
lastore
dup
bipush 28
ldc 4923
lastore
dup
bipush 29
ldc 4975
lastore
dup
bipush 30
ldc 5025
lastore
dup
bipush 31
ldc 5074
lastore
dup
bipush 32
ldc 5120
lastore
dup
bipush 33
ldc 5166
lastore
dup
bipush 34
ldc 5210
lastore
dup
bipush 35
7: .line 564
ldc 5253
lastore
dup
bipush 36
ldc 5295
lastore
8: .line 560
putstatic java.math.BigInteger.bitsPerDigit:[J
9: .line 745
ldc 152125131763605
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
10: .line 744
putstatic java.math.BigInteger.SMALL_PRIME_PRODUCT:Ljava/math/BigInteger;
11: .line 1147
bipush 17
anewarray java.math.BigInteger
putstatic java.math.BigInteger.posConst:[Ljava/math/BigInteger;
12: .line 1148
bipush 17
anewarray java.math.BigInteger
putstatic java.math.BigInteger.negConst:[Ljava/math/BigInteger;
13: .line 1161
ldc 2.0
invokestatic java.lang.Math.log:(D)D
putstatic java.math.BigInteger.LOG_TWO:D
14: .line 1172
iconst_1
istore 0 /* i */
start local 0 // int i
15: goto 21
16: .line 1173
StackMap locals: int
StackMap stack:
iconst_1
newarray 10
astore 1 /* magnitude */
start local 1 // int[] magnitude
17: .line 1174
aload 1 /* magnitude */
iconst_0
iload 0 /* i */
iastore
18: .line 1175
getstatic java.math.BigInteger.posConst:[Ljava/math/BigInteger;
iload 0 /* i */
new java.math.BigInteger
dup
aload 1 /* magnitude */
iconst_1
invokespecial java.math.BigInteger.<init>:([II)V
aastore
19: .line 1176
getstatic java.math.BigInteger.negConst:[Ljava/math/BigInteger;
iload 0 /* i */
new java.math.BigInteger
dup
aload 1 /* magnitude */
iconst_m1
invokespecial java.math.BigInteger.<init>:([II)V
aastore
end local 1 // int[] magnitude
20: .line 1172
iinc 0 /* i */ 1
StackMap locals:
StackMap stack:
21: iload 0 /* i */
bipush 16
if_icmple 16
end local 0 // int i
22: .line 1184
bipush 37
anewarray java.math.BigInteger[]
putstatic java.math.BigInteger.powerCache:[[Ljava/math/BigInteger;
23: .line 1185
bipush 37
newarray 7
putstatic java.math.BigInteger.logCache:[D
24: .line 1187
iconst_2
istore 0 /* i */
start local 0 // int i
25: goto 29
26: .line 1188
StackMap locals:
StackMap stack:
getstatic java.math.BigInteger.powerCache:[[Ljava/math/BigInteger;
iload 0 /* i */
iconst_1
anewarray java.math.BigInteger
dup
iconst_0
iload 0 /* i */
i2l
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
aastore
27: .line 1189
getstatic java.math.BigInteger.logCache:[D
iload 0 /* i */
iload 0 /* i */
i2d
invokestatic java.lang.Math.log:(D)D
dastore
28: .line 1187
iinc 0 /* i */ 1
StackMap locals:
StackMap stack:
29: iload 0 /* i */
bipush 36
if_icmple 26
end local 0 // int i
30: .line 1198
new java.math.BigInteger
dup
iconst_0
newarray 10
iconst_0
invokespecial java.math.BigInteger.<init>:([II)V
putstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
31: .line 1205
lconst_1
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
putstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
32: .line 1210
ldc 2
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
putstatic java.math.BigInteger.TWO:Ljava/math/BigInteger;
33: .line 1215
ldc -1
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
putstatic java.math.BigInteger.NEGATIVE_ONE:Ljava/math/BigInteger;
34: .line 1222
ldc 10
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
putstatic java.math.BigInteger.TEN:Ljava/math/BigInteger;
35: .line 2717
bipush 7
newarray 10
dup
iconst_0
bipush 7
iastore
dup
iconst_1
bipush 25
iastore
dup
iconst_2
bipush 81
iastore
dup
iconst_3
sipush 241
iastore
dup
iconst_4
sipush 673
iastore
dup
iconst_5
sipush 1793
iastore
dup
bipush 6
36: .line 2718
ldc 2147483647
iastore
37: .line 2717
putstatic java.math.BigInteger.bnExpModThreshTable:[I
38: .line 3938
bipush 64
anewarray java.lang.String
putstatic java.math.BigInteger.zeros:[Ljava/lang/String;
39: .line 3940
getstatic java.math.BigInteger.zeros:[Ljava/lang/String;
bipush 63
40: .line 3941
ldc "000000000000000000000000000000000000000000000000000000000000000"
41: .line 3940
aastore
42: .line 3942
iconst_0
istore 0 /* i */
start local 0 // int i
43: goto 46
44: .line 3943
StackMap locals:
StackMap stack:
getstatic java.math.BigInteger.zeros:[Ljava/lang/String;
iload 0 /* i */
getstatic java.math.BigInteger.zeros:[Ljava/lang/String;
bipush 63
aaload
iconst_0
iload 0 /* i */
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
aastore
45: .line 3942
iinc 0 /* i */ 1
StackMap locals:
StackMap stack:
46: iload 0 /* i */
bipush 63
if_icmplt 44
end local 0 // int i
47: .line 4354
bipush 37
newarray 10
dup
iconst_2
48: .line 4355
bipush 62
iastore
dup
iconst_3
bipush 39
iastore
dup
iconst_4
bipush 31
iastore
dup
iconst_5
bipush 27
iastore
dup
bipush 6
bipush 24
iastore
dup
bipush 7
bipush 22
iastore
dup
bipush 8
bipush 20
iastore
dup
bipush 9
bipush 19
iastore
dup
bipush 10
bipush 18
iastore
dup
bipush 11
bipush 18
iastore
dup
bipush 12
bipush 17
iastore
dup
bipush 13
bipush 17
iastore
dup
bipush 14
bipush 16
iastore
dup
bipush 15
bipush 16
iastore
dup
bipush 16
bipush 15
iastore
dup
bipush 17
bipush 15
iastore
dup
bipush 18
bipush 15
iastore
dup
bipush 19
bipush 14
iastore
dup
bipush 20
49: .line 4356
bipush 14
iastore
dup
bipush 21
bipush 14
iastore
dup
bipush 22
bipush 14
iastore
dup
bipush 23
bipush 13
iastore
dup
bipush 24
bipush 13
iastore
dup
bipush 25
bipush 13
iastore
dup
bipush 26
bipush 13
iastore
dup
bipush 27
bipush 13
iastore
dup
bipush 28
bipush 13
iastore
dup
bipush 29
bipush 12
iastore
dup
bipush 30
bipush 12
iastore
dup
bipush 31
bipush 12
iastore
dup
bipush 32
bipush 12
iastore
dup
bipush 33
bipush 12
iastore
dup
bipush 34
bipush 12
iastore
dup
bipush 35
bipush 12
iastore
dup
bipush 36
bipush 12
iastore
50: .line 4354
putstatic java.math.BigInteger.digitsPerLong:[I
51: .line 4358
bipush 37
anewarray java.math.BigInteger
dup
iconst_2
52: .line 4359
ldc 4611686018427387904
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
iconst_3
ldc 4052555153018976267
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
iconst_4
53: .line 4360
ldc 4611686018427387904
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
iconst_5
ldc 7450580596923828125
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 6
54: .line 4361
ldc 4738381338321616896
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 7
ldc 3909821048582988049
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 8
55: .line 4362
ldc 1152921504606846976
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 9
ldc 1350851717672992089
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 10
56: .line 4363
ldc 1000000000000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 11
ldc 5559917313492231481
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 12
57: .line 4364
ldc 2218611106740436992
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 13
ldc 8650415919381337933
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 14
58: .line 4365
ldc 2177953337809371136
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 15
ldc 6568408355712890625
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 16
59: .line 4366
ldc 1152921504606846976
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 17
ldc 2862423051509815793
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 18
60: .line 4367
ldc 6746640616477458432
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 19
ldc 799006685782884121
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 20
61: .line 4368
ldc 1638400000000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 21
ldc 3243919932521508681
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 22
62: .line 4369
ldc 6221821273427820544
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 23
ldc 504036361936467383
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 24
63: .line 4370
ldc 876488338465357824
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 25
ldc 1490116119384765625
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 26
64: .line 4371
ldc 2481152873203736576
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 27
ldc 4052555153018976267
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 28
65: .line 4372
ldc 6502111422497947648
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 29
ldc 353814783205469041
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 30
66: .line 4373
ldc 531441000000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 31
ldc 787662783788549761
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 32
67: .line 4374
ldc 1152921504606846976
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 33
ldc 1667889514952984961
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 34
68: .line 4375
ldc 2386420683693101056
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 35
ldc 3379220508056640625
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 36
69: .line 4376
ldc 4738381338321616896
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
70: .line 4358
putstatic java.math.BigInteger.longRadix:[Ljava/math/BigInteger;
71: .line 4381
bipush 37
newarray 10
dup
iconst_2
bipush 30
iastore
dup
iconst_3
bipush 19
iastore
dup
iconst_4
bipush 15
iastore
dup
iconst_5
bipush 13
iastore
dup
bipush 6
bipush 11
iastore
dup
bipush 7
72: .line 4382
bipush 11
iastore
dup
bipush 8
bipush 10
iastore
dup
bipush 9
bipush 9
iastore
dup
bipush 10
bipush 9
iastore
dup
bipush 11
bipush 8
iastore
dup
bipush 12
bipush 8
iastore
dup
bipush 13
bipush 8
iastore
dup
bipush 14
bipush 8
iastore
dup
bipush 15
bipush 7
iastore
dup
bipush 16
bipush 7
iastore
dup
bipush 17
bipush 7
iastore
dup
bipush 18
bipush 7
iastore
dup
bipush 19
bipush 7
iastore
dup
bipush 20
bipush 7
iastore
dup
bipush 21
bipush 7
iastore
dup
bipush 22
bipush 6
iastore
dup
bipush 23
bipush 6
iastore
dup
bipush 24
bipush 6
iastore
dup
bipush 25
bipush 6
iastore
dup
bipush 26
73: .line 4383
bipush 6
iastore
dup
bipush 27
bipush 6
iastore
dup
bipush 28
bipush 6
iastore
dup
bipush 29
bipush 6
iastore
dup
bipush 30
bipush 6
iastore
dup
bipush 31
bipush 6
iastore
dup
bipush 32
bipush 6
iastore
dup
bipush 33
bipush 6
iastore
dup
bipush 34
bipush 6
iastore
dup
bipush 35
bipush 6
iastore
dup
bipush 36
iconst_5
iastore
74: .line 4381
putstatic java.math.BigInteger.digitsPerInt:[I
75: .line 4385
bipush 37
newarray 10
dup
iconst_2
76: .line 4386
ldc 1073741824
iastore
dup
iconst_3
ldc 1162261467
iastore
dup
iconst_4
ldc 1073741824
iastore
dup
iconst_5
ldc 1220703125
iastore
dup
bipush 6
ldc 362797056
iastore
dup
bipush 7
77: .line 4387
ldc 1977326743
iastore
dup
bipush 8
ldc 1073741824
iastore
dup
bipush 9
ldc 387420489
iastore
dup
bipush 10
ldc 1000000000
iastore
dup
bipush 11
ldc 214358881
iastore
dup
bipush 12
78: .line 4388
ldc 429981696
iastore
dup
bipush 13
ldc 815730721
iastore
dup
bipush 14
ldc 1475789056
iastore
dup
bipush 15
ldc 170859375
iastore
dup
bipush 16
ldc 268435456
iastore
dup
bipush 17
79: .line 4389
ldc 410338673
iastore
dup
bipush 18
ldc 612220032
iastore
dup
bipush 19
ldc 893871739
iastore
dup
bipush 20
ldc 1280000000
iastore
dup
bipush 21
ldc 1801088541
iastore
dup
bipush 22
80: .line 4390
ldc 113379904
iastore
dup
bipush 23
ldc 148035889
iastore
dup
bipush 24
ldc 191102976
iastore
dup
bipush 25
ldc 244140625
iastore
dup
bipush 26
ldc 308915776
iastore
dup
bipush 27
81: .line 4391
ldc 387420489
iastore
dup
bipush 28
ldc 481890304
iastore
dup
bipush 29
ldc 594823321
iastore
dup
bipush 30
ldc 729000000
iastore
dup
bipush 31
ldc 887503681
iastore
dup
bipush 32
82: .line 4392
ldc 1073741824
iastore
dup
bipush 33
ldc 1291467969
iastore
dup
bipush 34
ldc 1544804416
iastore
dup
bipush 35
ldc 1838265625
iastore
dup
bipush 36
ldc 60466176
iastore
83: .line 4385
putstatic java.math.BigInteger.intRadix:[I
84: .line 4475
bipush 6
anewarray java.io.ObjectStreamField
dup
iconst_0
85: .line 4476
new java.io.ObjectStreamField
dup
ldc "signum"
getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
invokespecial java.io.ObjectStreamField.<init>:(Ljava/lang/String;Ljava/lang/Class;)V
aastore
dup
iconst_1
86: .line 4477
new java.io.ObjectStreamField
dup
ldc "magnitude"
ldc [B
invokespecial java.io.ObjectStreamField.<init>:(Ljava/lang/String;Ljava/lang/Class;)V
aastore
dup
iconst_2
87: .line 4478
new java.io.ObjectStreamField
dup
ldc "bitCount"
getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
invokespecial java.io.ObjectStreamField.<init>:(Ljava/lang/String;Ljava/lang/Class;)V
aastore
dup
iconst_3
88: .line 4479
new java.io.ObjectStreamField
dup
ldc "bitLength"
getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
invokespecial java.io.ObjectStreamField.<init>:(Ljava/lang/String;Ljava/lang/Class;)V
aastore
dup
iconst_4
89: .line 4480
new java.io.ObjectStreamField
dup
ldc "firstNonzeroByteNum"
getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
invokespecial java.io.ObjectStreamField.<init>:(Ljava/lang/String;Ljava/lang/Class;)V
aastore
dup
iconst_5
90: .line 4481
new java.io.ObjectStreamField
dup
ldc "lowestSetBit"
getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
invokespecial java.io.ObjectStreamField.<init>:(Ljava/lang/String;Ljava/lang/Class;)V
aastore
91: .line 4475
putstatic java.math.BigInteger.serialPersistentFields:[Ljava/io/ObjectStreamField;
92: .line 4482
return
LocalVariableTable:
Start End Slot Name Signature
15 22 0 i I
17 20 1 magnitude [I
25 30 0 i I
43 47 0 i I
public void <init>(byte[]);
descriptor: ([B)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // byte[] val
0: .line 300
aload 0 /* this */
invokespecial java.lang.Number.<init>:()V
1: .line 301
aload 1 /* val */
arraylength
ifne 3
2: .line 302
new java.lang.NumberFormatException
dup
ldc "Zero length BigInteger"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
3: .line 304
StackMap locals: java.math.BigInteger byte[]
StackMap stack:
aload 1 /* val */
iconst_0
baload
ifge 7
4: .line 305
aload 0 /* this */
aload 1 /* val */
invokestatic java.math.BigInteger.makePositive:([B)[I
putfield java.math.BigInteger.mag:[I
5: .line 306
aload 0 /* this */
iconst_m1
putfield java.math.BigInteger.signum:I
6: .line 307
goto 11
7: .line 308
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* val */
invokestatic java.math.BigInteger.stripLeadingZeroBytes:([B)[I
putfield java.math.BigInteger.mag:[I
8: .line 309
aload 0 /* this */
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ifne 9
iconst_0
goto 10
StackMap locals:
StackMap stack: java.math.BigInteger
9: iconst_1
StackMap locals: java.math.BigInteger byte[]
StackMap stack: java.math.BigInteger int
10: putfield java.math.BigInteger.signum:I
11: .line 311
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ldc 67108864
if_icmplt 13
12: .line 312
aload 0 /* this */
invokevirtual java.math.BigInteger.checkRange:()V
13: .line 314
StackMap locals:
StackMap stack:
return
end local 1 // byte[] val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Ljava/math/BigInteger;
0 14 1 val [B
MethodParameters:
Name Flags
val
private void <init>(int[]);
descriptor: ([I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // int[] val
0: .line 322
aload 0 /* this */
invokespecial java.lang.Number.<init>:()V
1: .line 323
aload 1 /* val */
arraylength
ifne 3
2: .line 324
new java.lang.NumberFormatException
dup
ldc "Zero length BigInteger"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
3: .line 326
StackMap locals: java.math.BigInteger int[]
StackMap stack:
aload 1 /* val */
iconst_0
iaload
ifge 7
4: .line 327
aload 0 /* this */
aload 1 /* val */
invokestatic java.math.BigInteger.makePositive:([I)[I
putfield java.math.BigInteger.mag:[I
5: .line 328
aload 0 /* this */
iconst_m1
putfield java.math.BigInteger.signum:I
6: .line 329
goto 11
7: .line 330
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* val */
invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
putfield java.math.BigInteger.mag:[I
8: .line 331
aload 0 /* this */
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ifne 9
iconst_0
goto 10
StackMap locals:
StackMap stack: java.math.BigInteger
9: iconst_1
StackMap locals: java.math.BigInteger int[]
StackMap stack: java.math.BigInteger int
10: putfield java.math.BigInteger.signum:I
11: .line 333
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ldc 67108864
if_icmplt 13
12: .line 334
aload 0 /* this */
invokevirtual java.math.BigInteger.checkRange:()V
13: .line 336
StackMap locals:
StackMap stack:
return
end local 1 // int[] val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Ljava/math/BigInteger;
0 14 1 val [I
MethodParameters:
Name Flags
val
public void <init>(int, byte[]);
descriptor: (I[B)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 // java.math.BigInteger this
start local 1 // int signum
start local 2 // byte[] magnitude
0: .line 354
aload 0 /* this */
invokespecial java.lang.Number.<init>:()V
1: .line 355
aload 0 /* this */
aload 2 /* magnitude */
invokestatic java.math.BigInteger.stripLeadingZeroBytes:([B)[I
putfield java.math.BigInteger.mag:[I
2: .line 357
iload 1 /* signum */
iconst_m1
if_icmplt 3
iload 1 /* signum */
iconst_1
if_icmple 4
3: .line 358
StackMap locals: java.math.BigInteger int byte[]
StackMap stack:
new java.lang.NumberFormatException
dup
ldc "Invalid signum value"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
4: .line 360
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ifne 7
5: .line 361
aload 0 /* this */
iconst_0
putfield java.math.BigInteger.signum:I
6: .line 362
goto 10
7: .line 363
StackMap locals:
StackMap stack:
iload 1 /* signum */
ifne 9
8: .line 364
new java.lang.NumberFormatException
dup
ldc "signum-magnitude mismatch"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
9: .line 365
StackMap locals:
StackMap stack:
aload 0 /* this */
iload 1 /* signum */
putfield java.math.BigInteger.signum:I
10: .line 367
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ldc 67108864
if_icmplt 12
11: .line 368
aload 0 /* this */
invokevirtual java.math.BigInteger.checkRange:()V
12: .line 370
StackMap locals:
StackMap stack:
return
end local 2 // byte[] magnitude
end local 1 // int signum
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Ljava/math/BigInteger;
0 13 1 signum I
0 13 2 magnitude [B
MethodParameters:
Name Flags
signum
magnitude
private void <init>(int, int[]);
descriptor: (I[I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=3
start local 0 // java.math.BigInteger this
start local 1 // int signum
start local 2 // int[] magnitude
0: .line 378
aload 0 /* this */
invokespecial java.lang.Number.<init>:()V
1: .line 379
aload 0 /* this */
aload 2 /* magnitude */
invokestatic java.math.BigInteger.stripLeadingZeroInts:([I)[I
putfield java.math.BigInteger.mag:[I
2: .line 381
iload 1 /* signum */
iconst_m1
if_icmplt 3
iload 1 /* signum */
iconst_1
if_icmple 4
3: .line 382
StackMap locals: java.math.BigInteger int int[]
StackMap stack:
new java.lang.NumberFormatException
dup
ldc "Invalid signum value"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
4: .line 384
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ifne 7
5: .line 385
aload 0 /* this */
iconst_0
putfield java.math.BigInteger.signum:I
6: .line 386
goto 10
7: .line 387
StackMap locals:
StackMap stack:
iload 1 /* signum */
ifne 9
8: .line 388
new java.lang.NumberFormatException
dup
ldc "signum-magnitude mismatch"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
9: .line 389
StackMap locals:
StackMap stack:
aload 0 /* this */
iload 1 /* signum */
putfield java.math.BigInteger.signum:I
10: .line 391
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ldc 67108864
if_icmplt 12
11: .line 392
aload 0 /* this */
invokevirtual java.math.BigInteger.checkRange:()V
12: .line 394
StackMap locals:
StackMap stack:
return
end local 2 // int[] magnitude
end local 1 // int signum
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Ljava/math/BigInteger;
0 13 1 signum I
0 13 2 magnitude [I
MethodParameters:
Name Flags
signum
magnitude
public void <init>(java.lang.String, int);
descriptor: (Ljava/lang/String;I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=17, args_size=3
start local 0 // java.math.BigInteger this
start local 1 // java.lang.String val
start local 2 // int radix
0: .line 413
aload 0 /* this */
invokespecial java.lang.Number.<init>:()V
1: .line 414
iconst_0
istore 3 /* cursor */
start local 3 // int cursor
2: .line 415
aload 1 /* val */
invokevirtual java.lang.String.length:()I
istore 5 /* len */
start local 5 // int len
3: .line 417
iload 2 /* radix */
iconst_2
if_icmplt 4
iload 2 /* radix */
bipush 36
if_icmple 5
4: .line 418
StackMap locals: java.math.BigInteger java.lang.String int int top int
StackMap stack:
new java.lang.NumberFormatException
dup
ldc "Radix out of range"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
5: .line 419
StackMap locals:
StackMap stack:
iload 5 /* len */
ifne 7
6: .line 420
new java.lang.NumberFormatException
dup
ldc "Zero length BigInteger"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
7: .line 423
StackMap locals:
StackMap stack:
iconst_1
istore 6 /* sign */
start local 6 // int sign
8: .line 424
aload 1 /* val */
bipush 45
invokevirtual java.lang.String.lastIndexOf:(I)I
istore 7 /* index1 */
start local 7 // int index1
9: .line 425
aload 1 /* val */
bipush 43
invokevirtual java.lang.String.lastIndexOf:(I)I
istore 8 /* index2 */
start local 8 // int index2
10: .line 426
iload 7 /* index1 */
iflt 16
11: .line 427
iload 7 /* index1 */
ifne 12
iload 8 /* index2 */
iflt 13
12: .line 428
StackMap locals: int int int
StackMap stack:
new java.lang.NumberFormatException
dup
ldc "Illegal embedded sign character"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
13: .line 430
StackMap locals:
StackMap stack:
iconst_m1
istore 6 /* sign */
14: .line 431
iconst_1
istore 3 /* cursor */
15: .line 432
goto 20
StackMap locals:
StackMap stack:
16: iload 8 /* index2 */
iflt 20
17: .line 433
iload 8 /* index2 */
ifeq 19
18: .line 434
new java.lang.NumberFormatException
dup
ldc "Illegal embedded sign character"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
19: .line 436
StackMap locals:
StackMap stack:
iconst_1
istore 3 /* cursor */
20: .line 438
StackMap locals:
StackMap stack:
iload 3 /* cursor */
iload 5 /* len */
if_icmpne 23
21: .line 439
new java.lang.NumberFormatException
dup
ldc "Zero length BigInteger"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
22: .line 444
StackMap locals:
StackMap stack:
iinc 3 /* cursor */ 1
23: .line 442
StackMap locals:
StackMap stack:
iload 3 /* cursor */
iload 5 /* len */
if_icmpge 25
24: .line 443
aload 1 /* val */
iload 3 /* cursor */
invokevirtual java.lang.String.charAt:(I)C
iload 2 /* radix */
invokestatic java.lang.Character.digit:(CI)I
ifeq 22
25: .line 447
StackMap locals:
StackMap stack:
iload 3 /* cursor */
iload 5 /* len */
if_icmpne 29
26: .line 448
aload 0 /* this */
iconst_0
putfield java.math.BigInteger.signum:I
27: .line 449
aload 0 /* this */
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
getfield java.math.BigInteger.mag:[I
putfield java.math.BigInteger.mag:[I
28: .line 450
return
29: .line 453
StackMap locals:
StackMap stack:
iload 5 /* len */
iload 3 /* cursor */
isub
istore 4 /* numDigits */
start local 4 // int numDigits
30: .line 454
aload 0 /* this */
iload 6 /* sign */
putfield java.math.BigInteger.signum:I
31: .line 458
iload 4 /* numDigits */
i2l
getstatic java.math.BigInteger.bitsPerDigit:[J
iload 2 /* radix */
laload
lmul
bipush 10
lushr
lconst_1
ladd
lstore 9 /* numBits */
start local 9 // long numBits
32: .line 459
lload 9 /* numBits */
ldc 31
ladd
ldc 4294967296
lcmp
iflt 34
33: .line 460
invokestatic java.math.BigInteger.reportOverflow:()V
34: .line 462
StackMap locals: java.math.BigInteger java.lang.String int int int int int int int long
StackMap stack:
lload 9 /* numBits */
ldc 31
ladd
l2i
iconst_5
iushr
istore 11 /* numWords */
start local 11 // int numWords
35: .line 463
iload 11 /* numWords */
newarray 10
astore 12 /* magnitude */
start local 12 // int[] magnitude
36: .line 466
iload 4 /* numDigits */
getstatic java.math.BigInteger.digitsPerInt:[I
iload 2 /* radix */
iaload
irem
istore 13 /* firstGroupLen */
start local 13 // int firstGroupLen
37: .line 467
iload 13 /* firstGroupLen */
ifne 39
38: .line 468
getstatic java.math.BigInteger.digitsPerInt:[I
iload 2 /* radix */
iaload
istore 13 /* firstGroupLen */
39: .line 469
StackMap locals: int int[] int
StackMap stack:
aload 1 /* val */
iload 3 /* cursor */
iload 3 /* cursor */
iload 13 /* firstGroupLen */
iadd
dup
istore 3 /* cursor */
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
astore 14 /* group */
start local 14 // java.lang.String group
40: .line 470
aload 12 /* magnitude */
iload 11 /* numWords */
iconst_1
isub
aload 14 /* group */
iload 2 /* radix */
invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;I)I
iastore
41: .line 471
aload 12 /* magnitude */
iload 11 /* numWords */
iconst_1
isub
iaload
ifge 43
42: .line 472
new java.lang.NumberFormatException
dup
ldc "Illegal digit"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
43: .line 475
StackMap locals: java.lang.String
StackMap stack:
getstatic java.math.BigInteger.intRadix:[I
iload 2 /* radix */
iaload
istore 15 /* superRadix */
start local 15 // int superRadix
44: .line 476
iconst_0
istore 16 /* groupVal */
start local 16 // int groupVal
45: .line 477
goto 51
46: .line 478
StackMap locals: int int
StackMap stack:
aload 1 /* val */
iload 3 /* cursor */
iload 3 /* cursor */
getstatic java.math.BigInteger.digitsPerInt:[I
iload 2 /* radix */
iaload
iadd
dup
istore 3 /* cursor */
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
astore 14 /* group */
47: .line 479
aload 14 /* group */
iload 2 /* radix */
invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;I)I
istore 16 /* groupVal */
48: .line 480
iload 16 /* groupVal */
ifge 50
49: .line 481
new java.lang.NumberFormatException
dup
ldc "Illegal digit"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
50: .line 482
StackMap locals:
StackMap stack:
aload 12 /* magnitude */
iload 15 /* superRadix */
iload 16 /* groupVal */
invokestatic java.math.BigInteger.destructiveMulAdd:([III)V
51: .line 477
StackMap locals:
StackMap stack:
iload 3 /* cursor */
iload 5 /* len */
if_icmplt 46
52: .line 485
aload 0 /* this */
aload 12 /* magnitude */
invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
putfield java.math.BigInteger.mag:[I
53: .line 486
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ldc 67108864
if_icmplt 55
54: .line 487
aload 0 /* this */
invokevirtual java.math.BigInteger.checkRange:()V
55: .line 489
StackMap locals:
StackMap stack:
return
end local 16 // int groupVal
end local 15 // int superRadix
end local 14 // java.lang.String group
end local 13 // int firstGroupLen
end local 12 // int[] magnitude
end local 11 // int numWords
end local 9 // long numBits
end local 8 // int index2
end local 7 // int index1
end local 6 // int sign
end local 5 // int len
end local 4 // int numDigits
end local 3 // int cursor
end local 2 // int radix
end local 1 // java.lang.String val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 56 0 this Ljava/math/BigInteger;
0 56 1 val Ljava/lang/String;
0 56 2 radix I
2 56 3 cursor I
30 56 4 numDigits I
3 56 5 len I
8 56 6 sign I
9 56 7 index1 I
10 56 8 index2 I
32 56 9 numBits J
35 56 11 numWords I
36 56 12 magnitude [I
37 56 13 firstGroupLen I
40 56 14 group Ljava/lang/String;
44 56 15 superRadix I
45 56 16 groupVal I
MethodParameters:
Name Flags
val
radix
void <init>(char[], int, int);
descriptor: ([CII)V
flags: (0x0000)
Code:
stack=7, locals=10, args_size=4
start local 0 // java.math.BigInteger this
start local 1 // char[] val
start local 2 // int sign
start local 3 // int len
0: .line 495
aload 0 /* this */
invokespecial java.lang.Number.<init>:()V
1: .line 496
iconst_0
istore 4 /* cursor */
start local 4 // int cursor
2: .line 499
goto 4
3: .line 500
StackMap locals: java.math.BigInteger char[] int int int
StackMap stack:
iinc 4 /* cursor */ 1
4: .line 499
StackMap locals:
StackMap stack:
iload 4 /* cursor */
iload 3 /* len */
if_icmpge 5
aload 1 /* val */
iload 4 /* cursor */
caload
bipush 10
invokestatic java.lang.Character.digit:(CI)I
ifeq 3
5: .line 502
StackMap locals:
StackMap stack:
iload 4 /* cursor */
iload 3 /* len */
if_icmpne 9
6: .line 503
aload 0 /* this */
iconst_0
putfield java.math.BigInteger.signum:I
7: .line 504
aload 0 /* this */
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
getfield java.math.BigInteger.mag:[I
putfield java.math.BigInteger.mag:[I
8: .line 505
return
9: .line 508
StackMap locals:
StackMap stack:
iload 3 /* len */
iload 4 /* cursor */
isub
istore 5 /* numDigits */
start local 5 // int numDigits
10: .line 509
aload 0 /* this */
iload 2 /* sign */
putfield java.math.BigInteger.signum:I
11: .line 512
iload 3 /* len */
bipush 10
if_icmpge 14
12: .line 513
iconst_1
istore 6 /* numWords */
start local 6 // int numWords
13: .line 514
goto 18
end local 6 // int numWords
14: .line 515
StackMap locals: int
StackMap stack:
iload 5 /* numDigits */
i2l
getstatic java.math.BigInteger.bitsPerDigit:[J
bipush 10
laload
lmul
bipush 10
lushr
lconst_1
ladd
lstore 7 /* numBits */
start local 7 // long numBits
15: .line 516
lload 7 /* numBits */
ldc 31
ladd
ldc 4294967296
lcmp
iflt 17
16: .line 517
invokestatic java.math.BigInteger.reportOverflow:()V
17: .line 519
StackMap locals: java.math.BigInteger char[] int int int int top long
StackMap stack:
lload 7 /* numBits */
ldc 31
ladd
l2i
iconst_5
iushr
istore 6 /* numWords */
end local 7 // long numBits
start local 6 // int numWords
18: .line 521
StackMap locals: java.math.BigInteger char[] int int int int int
StackMap stack:
iload 6 /* numWords */
newarray 10
astore 7 /* magnitude */
start local 7 // int[] magnitude
19: .line 524
iload 5 /* numDigits */
getstatic java.math.BigInteger.digitsPerInt:[I
bipush 10
iaload
irem
istore 8 /* firstGroupLen */
start local 8 // int firstGroupLen
20: .line 525
iload 8 /* firstGroupLen */
ifne 22
21: .line 526
getstatic java.math.BigInteger.digitsPerInt:[I
bipush 10
iaload
istore 8 /* firstGroupLen */
22: .line 527
StackMap locals: int[] int
StackMap stack:
aload 7 /* magnitude */
iload 6 /* numWords */
iconst_1
isub
aload 0 /* this */
aload 1 /* val */
iload 4 /* cursor */
iload 4 /* cursor */
iload 8 /* firstGroupLen */
iadd
dup
istore 4 /* cursor */
invokevirtual java.math.BigInteger.parseInt:([CII)I
iastore
23: .line 530
goto 26
24: .line 531
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* val */
iload 4 /* cursor */
iload 4 /* cursor */
getstatic java.math.BigInteger.digitsPerInt:[I
bipush 10
iaload
iadd
dup
istore 4 /* cursor */
invokevirtual java.math.BigInteger.parseInt:([CII)I
istore 9 /* groupVal */
start local 9 // int groupVal
25: .line 532
aload 7 /* magnitude */
getstatic java.math.BigInteger.intRadix:[I
bipush 10
iaload
iload 9 /* groupVal */
invokestatic java.math.BigInteger.destructiveMulAdd:([III)V
end local 9 // int groupVal
26: .line 530
StackMap locals:
StackMap stack:
iload 4 /* cursor */
iload 3 /* len */
if_icmplt 24
27: .line 534
aload 0 /* this */
aload 7 /* magnitude */
invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
putfield java.math.BigInteger.mag:[I
28: .line 535
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ldc 67108864
if_icmplt 30
29: .line 536
aload 0 /* this */
invokevirtual java.math.BigInteger.checkRange:()V
30: .line 538
StackMap locals:
StackMap stack:
return
end local 8 // int firstGroupLen
end local 7 // int[] magnitude
end local 6 // int numWords
end local 5 // int numDigits
end local 4 // int cursor
end local 3 // int len
end local 2 // int sign
end local 1 // char[] val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 31 0 this Ljava/math/BigInteger;
0 31 1 val [C
0 31 2 sign I
0 31 3 len I
2 31 4 cursor I
10 31 5 numDigits I
13 14 6 numWords I
18 31 6 numWords I
15 18 7 numBits J
19 31 7 magnitude [I
20 31 8 firstGroupLen I
25 26 9 groupVal I
MethodParameters:
Name Flags
val
sign
len
private int parseInt(char[], int, int);
descriptor: ([CII)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=7, args_size=4
start local 0 // java.math.BigInteger this
start local 1 // char[] source
start local 2 // int start
start local 3 // int end
0: .line 544
aload 1 /* source */
iload 2 /* start */
iinc 2 /* start */ 1
caload
bipush 10
invokestatic java.lang.Character.digit:(CI)I
istore 4 /* result */
start local 4 // int result
1: .line 545
iload 4 /* result */
iconst_m1
if_icmpne 3
2: .line 546
new java.lang.NumberFormatException
dup
new java.lang.String
dup
aload 1 /* source */
invokespecial java.lang.String.<init>:([C)V
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
3: .line 548
StackMap locals: int
StackMap stack:
iload 2 /* start */
istore 5 /* index */
start local 5 // int index
4: goto 10
5: .line 549
StackMap locals: int
StackMap stack:
aload 1 /* source */
iload 5 /* index */
caload
bipush 10
invokestatic java.lang.Character.digit:(CI)I
istore 6 /* nextVal */
start local 6 // int nextVal
6: .line 550
iload 6 /* nextVal */
iconst_m1
if_icmpne 8
7: .line 551
new java.lang.NumberFormatException
dup
new java.lang.String
dup
aload 1 /* source */
invokespecial java.lang.String.<init>:([C)V
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
8: .line 552
StackMap locals: int
StackMap stack:
bipush 10
iload 4 /* result */
imul
iload 6 /* nextVal */
iadd
istore 4 /* result */
end local 6 // int nextVal
9: .line 548
iinc 5 /* index */ 1
StackMap locals:
StackMap stack:
10: iload 5 /* index */
iload 3 /* end */
if_icmplt 5
end local 5 // int index
11: .line 555
iload 4 /* result */
ireturn
end local 4 // int result
end local 3 // int end
end local 2 // int start
end local 1 // char[] source
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Ljava/math/BigInteger;
0 12 1 source [C
0 12 2 start I
0 12 3 end I
1 12 4 result I
4 11 5 index I
6 9 6 nextVal I
MethodParameters:
Name Flags
source
start
end
private static void destructiveMulAdd(int[], int, int);
descriptor: ([III)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=15, args_size=3
start local 0 // int[] x
start local 1 // int y
start local 2 // int z
0: .line 569
iload 1 /* y */
i2l
ldc 4294967295
land
lstore 3 /* ylong */
start local 3 // long ylong
1: .line 570
iload 2 /* z */
i2l
ldc 4294967295
land
lstore 5 /* zlong */
start local 5 // long zlong
2: .line 571
aload 0 /* x */
arraylength
istore 7 /* len */
start local 7 // int len
3: .line 573
lconst_0
lstore 8 /* product */
start local 8 // long product
4: .line 574
lconst_0
lstore 10 /* carry */
start local 10 // long carry
5: .line 575
iload 7 /* len */
iconst_1
isub
istore 12 /* i */
start local 12 // int i
6: goto 11
7: .line 576
StackMap locals: int[] int int long long int long long int
StackMap stack:
lload 3 /* ylong */
aload 0 /* x */
iload 12 /* i */
iaload
i2l
ldc 4294967295
land
lmul
lload 10 /* carry */
ladd
lstore 8 /* product */
8: .line 577
aload 0 /* x */
iload 12 /* i */
lload 8 /* product */
l2i
iastore
9: .line 578
lload 8 /* product */
bipush 32
lushr
lstore 10 /* carry */
10: .line 575
iinc 12 /* i */ -1
StackMap locals:
StackMap stack:
11: iload 12 /* i */
ifge 7
end local 12 // int i
12: .line 582
aload 0 /* x */
iload 7 /* len */
iconst_1
isub
iaload
i2l
ldc 4294967295
land
lload 5 /* zlong */
ladd
lstore 12 /* sum */
start local 12 // long sum
13: .line 583
aload 0 /* x */
iload 7 /* len */
iconst_1
isub
lload 12 /* sum */
l2i
iastore
14: .line 584
lload 12 /* sum */
bipush 32
lushr
lstore 10 /* carry */
15: .line 585
iload 7 /* len */
iconst_2
isub
istore 14 /* i */
start local 14 // int i
16: goto 21
17: .line 586
StackMap locals: int[] int int long long int long long long int
StackMap stack:
aload 0 /* x */
iload 14 /* i */
iaload
i2l
ldc 4294967295
land
lload 10 /* carry */
ladd
lstore 12 /* sum */
18: .line 587
aload 0 /* x */
iload 14 /* i */
lload 12 /* sum */
l2i
iastore
19: .line 588
lload 12 /* sum */
bipush 32
lushr
lstore 10 /* carry */
20: .line 585
iinc 14 /* i */ -1
StackMap locals:
StackMap stack:
21: iload 14 /* i */
ifge 17
end local 14 // int i
22: .line 590
return
end local 12 // long sum
end local 10 // long carry
end local 8 // long product
end local 7 // int len
end local 5 // long zlong
end local 3 // long ylong
end local 2 // int z
end local 1 // int y
end local 0 // int[] x
LocalVariableTable:
Start End Slot Name Signature
0 23 0 x [I
0 23 1 y I
0 23 2 z I
1 23 3 ylong J
2 23 5 zlong J
3 23 7 len I
4 23 8 product J
5 23 10 carry J
6 12 12 i I
13 23 12 sum J
16 22 14 i I
MethodParameters:
Name Flags
x
y
z
public void <init>(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.lang.String val
0: .line 606
aload 0 /* this */
aload 1 /* val */
bipush 10
invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
1: .line 607
return
end local 1 // java.lang.String val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/math/BigInteger;
0 2 1 val Ljava/lang/String;
MethodParameters:
Name Flags
val
public void <init>(int, java.util.Random);
descriptor: (ILjava/util/Random;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=3
start local 0 // java.math.BigInteger this
start local 1 // int numBits
start local 2 // java.util.Random rnd
0: .line 623
aload 0 /* this */
iconst_1
iload 1 /* numBits */
aload 2 /* rnd */
invokestatic java.math.BigInteger.randomBits:(ILjava/util/Random;)[B
invokespecial java.math.BigInteger.<init>:(I[B)V
1: .line 624
return
end local 2 // java.util.Random rnd
end local 1 // int numBits
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/math/BigInteger;
0 2 1 numBits I
0 2 2 rnd Ljava/util/Random;
MethodParameters:
Name Flags
numBits
rnd
private static byte[] randomBits(int, java.util.Random);
descriptor: (ILjava/util/Random;)[B
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=5, args_size=2
start local 0 // int numBits
start local 1 // java.util.Random rnd
0: .line 627
iload 0 /* numBits */
ifge 2
1: .line 628
new java.lang.IllegalArgumentException
dup
ldc "numBits must be non-negative"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: .line 629
StackMap locals:
StackMap stack:
iload 0 /* numBits */
i2l
ldc 7
ladd
ldc 8
ldiv
l2i
istore 2 /* numBytes */
start local 2 // int numBytes
3: .line 630
iload 2 /* numBytes */
newarray 8
astore 3 /* randomBits */
start local 3 // byte[] randomBits
4: .line 633
iload 2 /* numBytes */
ifle 8
5: .line 634
aload 1 /* rnd */
aload 3 /* randomBits */
invokevirtual java.util.Random.nextBytes:([B)V
6: .line 635
bipush 8
iload 2 /* numBytes */
imul
iload 0 /* numBits */
isub
istore 4 /* excessBits */
start local 4 // int excessBits
7: .line 636
aload 3 /* randomBits */
iconst_0
dup2
baload
iconst_1
bipush 8
iload 4 /* excessBits */
isub
ishl
iconst_1
isub
iand
i2b
bastore
end local 4 // int excessBits
8: .line 638
StackMap locals: int byte[]
StackMap stack:
aload 3 /* randomBits */
areturn
end local 3 // byte[] randomBits
end local 2 // int numBytes
end local 1 // java.util.Random rnd
end local 0 // int numBits
LocalVariableTable:
Start End Slot Name Signature
0 9 0 numBits I
0 9 1 rnd Ljava/util/Random;
3 9 2 numBytes I
4 9 3 randomBits [B
7 8 4 excessBits I
MethodParameters:
Name Flags
numBits
rnd
public void <init>(int, int, java.util.Random);
descriptor: (IILjava/util/Random;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=5, args_size=4
start local 0 // java.math.BigInteger this
start local 1 // int bitLength
start local 2 // int certainty
start local 3 // java.util.Random rnd
0: .line 660
aload 0 /* this */
invokespecial java.lang.Number.<init>:()V
1: .line 663
iload 1 /* bitLength */
iconst_2
if_icmpge 3
2: .line 664
new java.lang.ArithmeticException
dup
ldc "bitLength < 2"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
3: .line 665
StackMap locals: java.math.BigInteger int int java.util.Random
StackMap stack:
iload 1 /* bitLength */
bipush 95
if_icmpge 5
4: .line 666
iload 1 /* bitLength */
iload 2 /* certainty */
aload 3 /* rnd */
invokestatic java.math.BigInteger.smallPrime:(IILjava/util/Random;)Ljava/math/BigInteger;
goto 6
5: .line 667
StackMap locals:
StackMap stack:
iload 1 /* bitLength */
iload 2 /* certainty */
aload 3 /* rnd */
invokestatic java.math.BigInteger.largePrime:(IILjava/util/Random;)Ljava/math/BigInteger;
6: .line 665
StackMap locals:
StackMap stack: java.math.BigInteger
astore 4 /* prime */
start local 4 // java.math.BigInteger prime
7: .line 668
aload 0 /* this */
iconst_1
putfield java.math.BigInteger.signum:I
8: .line 669
aload 0 /* this */
aload 4 /* prime */
getfield java.math.BigInteger.mag:[I
putfield java.math.BigInteger.mag:[I
9: .line 670
return
end local 4 // java.math.BigInteger prime
end local 3 // java.util.Random rnd
end local 2 // int certainty
end local 1 // int bitLength
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Ljava/math/BigInteger;
0 10 1 bitLength I
0 10 2 certainty I
0 10 3 rnd Ljava/util/Random;
7 10 4 prime Ljava/math/BigInteger;
MethodParameters:
Name Flags
bitLength
certainty
rnd
public static java.math.BigInteger probablePrime(int, java.util.Random);
descriptor: (ILjava/util/Random;)Ljava/math/BigInteger;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 // int bitLength
start local 1 // java.util.Random rnd
0: .line 694
iload 0 /* bitLength */
iconst_2
if_icmpge 2
1: .line 695
new java.lang.ArithmeticException
dup
ldc "bitLength < 2"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 697
StackMap locals:
StackMap stack:
iload 0 /* bitLength */
bipush 95
if_icmpge 4
3: .line 698
iload 0 /* bitLength */
bipush 100
aload 1 /* rnd */
invokestatic java.math.BigInteger.smallPrime:(IILjava/util/Random;)Ljava/math/BigInteger;
goto 5
4: .line 699
StackMap locals:
StackMap stack:
iload 0 /* bitLength */
bipush 100
aload 1 /* rnd */
invokestatic java.math.BigInteger.largePrime:(IILjava/util/Random;)Ljava/math/BigInteger;
5: .line 697
StackMap locals:
StackMap stack: java.math.BigInteger
areturn
end local 1 // java.util.Random rnd
end local 0 // int bitLength
LocalVariableTable:
Start End Slot Name Signature
0 6 0 bitLength I
0 6 1 rnd Ljava/util/Random;
MethodParameters:
Name Flags
bitLength
rnd
private static java.math.BigInteger smallPrime(int, int, java.util.Random);
descriptor: (IILjava/util/Random;)Ljava/math/BigInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=10, args_size=3
start local 0 // int bitLength
start local 1 // int certainty
start local 2 // java.util.Random rnd
0: .line 710
iload 0 /* bitLength */
bipush 31
iadd
iconst_5
iushr
istore 3 /* magLen */
start local 3 // int magLen
1: .line 711
iload 3 /* magLen */
newarray 10
astore 4 /* temp */
start local 4 // int[] temp
2: .line 712
iconst_1
iload 0 /* bitLength */
bipush 31
iadd
bipush 31
iand
ishl
istore 5 /* highBit */
start local 5 // int highBit
3: .line 713
iload 5 /* highBit */
iconst_1
ishl
iconst_1
isub
istore 6 /* highMask */
start local 6 // int highMask
4: .line 717
StackMap locals: int int java.util.Random int int[] int int
StackMap stack:
iconst_0
istore 7 /* i */
start local 7 // int i
5: goto 8
6: .line 718
StackMap locals: int
StackMap stack:
aload 4 /* temp */
iload 7 /* i */
aload 2 /* rnd */
invokevirtual java.util.Random.nextInt:()I
iastore
7: .line 717
iinc 7 /* i */ 1
StackMap locals:
StackMap stack:
8: iload 7 /* i */
iload 3 /* magLen */
if_icmplt 6
end local 7 // int i
9: .line 719
aload 4 /* temp */
iconst_0
aload 4 /* temp */
iconst_0
iaload
iload 6 /* highMask */
iand
iload 5 /* highBit */
ior
iastore
10: .line 720
iload 0 /* bitLength */
iconst_2
if_icmple 12
11: .line 721
aload 4 /* temp */
iload 3 /* magLen */
iconst_1
isub
dup2
iaload
iconst_1
ior
iastore
12: .line 723
StackMap locals:
StackMap stack:
new java.math.BigInteger
dup
aload 4 /* temp */
iconst_1
invokespecial java.math.BigInteger.<init>:([II)V
astore 7 /* p */
start local 7 // java.math.BigInteger p
13: .line 726
iload 0 /* bitLength */
bipush 6
if_icmple 19
14: .line 727
aload 7 /* p */
getstatic java.math.BigInteger.SMALL_PRIME_PRODUCT:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.remainder:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.longValue:()J
lstore 8 /* r */
start local 8 // long r
15: .line 728
lload 8 /* r */
ldc 3
lrem
lconst_0
lcmp
ifeq 4
lload 8 /* r */
ldc 5
lrem
lconst_0
lcmp
ifeq 4
lload 8 /* r */
ldc 7
lrem
lconst_0
lcmp
ifeq 4
lload 8 /* r */
ldc 11
lrem
lconst_0
lcmp
ifeq 4
16: .line 729
lload 8 /* r */
ldc 13
lrem
lconst_0
lcmp
ifeq 4
lload 8 /* r */
ldc 17
lrem
lconst_0
lcmp
ifeq 4
lload 8 /* r */
ldc 19
lrem
lconst_0
lcmp
ifeq 4
lload 8 /* r */
ldc 23
lrem
lconst_0
lcmp
ifeq 4
17: .line 730
lload 8 /* r */
ldc 29
lrem
lconst_0
lcmp
ifeq 4
lload 8 /* r */
ldc 31
lrem
lconst_0
lcmp
ifeq 4
lload 8 /* r */
ldc 37
lrem
lconst_0
lcmp
ifeq 4
lload 8 /* r */
ldc 41
lrem
lconst_0
lcmp
ifne 19
18: .line 731
goto 4
end local 8 // long r
19: .line 735
StackMap locals: java.math.BigInteger
StackMap stack:
iload 0 /* bitLength */
iconst_4
if_icmpge 21
20: .line 736
aload 7 /* p */
areturn
21: .line 739
StackMap locals:
StackMap stack:
aload 7 /* p */
iload 1 /* certainty */
aload 2 /* rnd */
invokevirtual java.math.BigInteger.primeToCertainty:(ILjava/util/Random;)Z
ifeq 4
22: .line 740
aload 7 /* p */
areturn
end local 7 // java.math.BigInteger p
end local 6 // int highMask
end local 5 // int highBit
end local 4 // int[] temp
end local 3 // int magLen
end local 2 // java.util.Random rnd
end local 1 // int certainty
end local 0 // int bitLength
LocalVariableTable:
Start End Slot Name Signature
0 23 0 bitLength I
0 23 1 certainty I
0 23 2 rnd Ljava/util/Random;
1 23 3 magLen I
2 23 4 temp [I
3 23 5 highBit I
4 23 6 highMask I
5 9 7 i I
13 23 7 p Ljava/math/BigInteger;
15 19 8 r J
MethodParameters:
Name Flags
bitLength
certainty
rnd
private static java.math.BigInteger largePrime(int, int, java.util.Random);
descriptor: (IILjava/util/Random;)Ljava/math/BigInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=7, args_size=3
start local 0 // int bitLength
start local 1 // int certainty
start local 2 // java.util.Random rnd
0: .line 755
new java.math.BigInteger
dup
iload 0 /* bitLength */
aload 2 /* rnd */
invokespecial java.math.BigInteger.<init>:(ILjava/util/Random;)V
iload 0 /* bitLength */
iconst_1
isub
invokevirtual java.math.BigInteger.setBit:(I)Ljava/math/BigInteger;
astore 3 /* p */
start local 3 // java.math.BigInteger p
1: .line 756
aload 3 /* p */
getfield java.math.BigInteger.mag:[I
aload 3 /* p */
getfield java.math.BigInteger.mag:[I
arraylength
iconst_1
isub
dup2
iaload
bipush -2
iand
iastore
2: .line 759
iload 0 /* bitLength */
invokestatic java.math.BigInteger.getPrimeSearchLen:(I)I
istore 4 /* searchLen */
start local 4 // int searchLen
3: .line 760
new java.math.BitSieve
dup
aload 3 /* p */
iload 4 /* searchLen */
invokespecial java.math.BitSieve.<init>:(Ljava/math/BigInteger;I)V
astore 5 /* searchSieve */
start local 5 // java.math.BitSieve searchSieve
4: .line 761
aload 5 /* searchSieve */
aload 3 /* p */
iload 1 /* certainty */
aload 2 /* rnd */
invokevirtual java.math.BitSieve.retrieve:(Ljava/math/BigInteger;ILjava/util/Random;)Ljava/math/BigInteger;
astore 6 /* candidate */
start local 6 // java.math.BigInteger candidate
5: .line 763
goto 12
6: .line 764
StackMap locals: int int java.util.Random java.math.BigInteger int java.math.BitSieve java.math.BigInteger
StackMap stack:
aload 3 /* p */
iconst_2
iload 4 /* searchLen */
imul
i2l
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 3 /* p */
7: .line 765
aload 3 /* p */
invokevirtual java.math.BigInteger.bitLength:()I
iload 0 /* bitLength */
if_icmpeq 9
8: .line 766
new java.math.BigInteger
dup
iload 0 /* bitLength */
aload 2 /* rnd */
invokespecial java.math.BigInteger.<init>:(ILjava/util/Random;)V
iload 0 /* bitLength */
iconst_1
isub
invokevirtual java.math.BigInteger.setBit:(I)Ljava/math/BigInteger;
astore 3 /* p */
9: .line 767
StackMap locals:
StackMap stack:
aload 3 /* p */
getfield java.math.BigInteger.mag:[I
aload 3 /* p */
getfield java.math.BigInteger.mag:[I
arraylength
iconst_1
isub
dup2
iaload
bipush -2
iand
iastore
10: .line 768
new java.math.BitSieve
dup
aload 3 /* p */
iload 4 /* searchLen */
invokespecial java.math.BitSieve.<init>:(Ljava/math/BigInteger;I)V
astore 5 /* searchSieve */
11: .line 769
aload 5 /* searchSieve */
aload 3 /* p */
iload 1 /* certainty */
aload 2 /* rnd */
invokevirtual java.math.BitSieve.retrieve:(Ljava/math/BigInteger;ILjava/util/Random;)Ljava/math/BigInteger;
astore 6 /* candidate */
12: .line 763
StackMap locals:
StackMap stack:
aload 6 /* candidate */
ifnull 6
aload 6 /* candidate */
invokevirtual java.math.BigInteger.bitLength:()I
iload 0 /* bitLength */
if_icmpne 6
13: .line 771
aload 6 /* candidate */
areturn
end local 6 // java.math.BigInteger candidate
end local 5 // java.math.BitSieve searchSieve
end local 4 // int searchLen
end local 3 // java.math.BigInteger p
end local 2 // java.util.Random rnd
end local 1 // int certainty
end local 0 // int bitLength
LocalVariableTable:
Start End Slot Name Signature
0 14 0 bitLength I
0 14 1 certainty I
0 14 2 rnd Ljava/util/Random;
1 14 3 p Ljava/math/BigInteger;
3 14 4 searchLen I
4 14 5 searchSieve Ljava/math/BitSieve;
5 14 6 candidate Ljava/math/BigInteger;
MethodParameters:
Name Flags
bitLength
certainty
rnd
public java.math.BigInteger nextProbablePrime();
descriptor: ()Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=1
start local 0 // java.math.BigInteger this
0: .line 787
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifge 2
1: .line 788
new java.lang.ArithmeticException
dup
new java.lang.StringBuilder
dup
ldc "start < 0: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0 /* this */
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 791
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifeq 3
aload 0 /* this */
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ifeq 4
3: .line 792
StackMap locals:
StackMap stack:
getstatic java.math.BigInteger.TWO:Ljava/math/BigInteger;
areturn
4: .line 794
StackMap locals:
StackMap stack:
aload 0 /* this */
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 1 /* result */
start local 1 // java.math.BigInteger result
5: .line 797
aload 1 /* result */
invokevirtual java.math.BigInteger.bitLength:()I
bipush 95
if_icmpge 21
6: .line 800
aload 1 /* result */
iconst_0
invokevirtual java.math.BigInteger.testBit:(I)Z
ifne 8
7: .line 801
aload 1 /* result */
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 1 /* result */
8: .line 805
StackMap locals: java.math.BigInteger
StackMap stack:
aload 1 /* result */
invokevirtual java.math.BigInteger.bitLength:()I
bipush 6
if_icmple 15
9: .line 806
aload 1 /* result */
getstatic java.math.BigInteger.SMALL_PRIME_PRODUCT:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.remainder:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.longValue:()J
lstore 2 /* r */
start local 2 // long r
10: .line 807
lload 2 /* r */
ldc 3
lrem
lconst_0
lcmp
ifeq 13
lload 2 /* r */
ldc 5
lrem
lconst_0
lcmp
ifeq 13
lload 2 /* r */
ldc 7
lrem
lconst_0
lcmp
ifeq 13
lload 2 /* r */
ldc 11
lrem
lconst_0
lcmp
ifeq 13
11: .line 808
lload 2 /* r */
ldc 13
lrem
lconst_0
lcmp
ifeq 13
lload 2 /* r */
ldc 17
lrem
lconst_0
lcmp
ifeq 13
lload 2 /* r */
ldc 19
lrem
lconst_0
lcmp
ifeq 13
lload 2 /* r */
ldc 23
lrem
lconst_0
lcmp
ifeq 13
12: .line 809
lload 2 /* r */
ldc 29
lrem
lconst_0
lcmp
ifeq 13
lload 2 /* r */
ldc 31
lrem
lconst_0
lcmp
ifeq 13
lload 2 /* r */
ldc 37
lrem
lconst_0
lcmp
ifeq 13
lload 2 /* r */
ldc 41
lrem
lconst_0
lcmp
ifne 15
13: .line 810
StackMap locals: long
StackMap stack:
aload 1 /* result */
getstatic java.math.BigInteger.TWO:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 1 /* result */
14: .line 811
goto 8
end local 2 // long r
15: .line 816
StackMap locals:
StackMap stack:
aload 1 /* result */
invokevirtual java.math.BigInteger.bitLength:()I
iconst_4
if_icmpge 17
16: .line 817
aload 1 /* result */
areturn
17: .line 820
StackMap locals:
StackMap stack:
aload 1 /* result */
bipush 100
aconst_null
invokevirtual java.math.BigInteger.primeToCertainty:(ILjava/util/Random;)Z
ifeq 19
18: .line 821
aload 1 /* result */
areturn
19: .line 823
StackMap locals:
StackMap stack:
aload 1 /* result */
getstatic java.math.BigInteger.TWO:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 1 /* result */
20: .line 803
goto 8
21: .line 828
StackMap locals:
StackMap stack:
aload 1 /* result */
iconst_0
invokevirtual java.math.BigInteger.testBit:(I)Z
ifeq 23
22: .line 829
aload 1 /* result */
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 1 /* result */
23: .line 832
StackMap locals:
StackMap stack:
aload 1 /* result */
invokevirtual java.math.BigInteger.bitLength:()I
invokestatic java.math.BigInteger.getPrimeSearchLen:(I)I
istore 2 /* searchLen */
start local 2 // int searchLen
24: .line 835
StackMap locals: int
StackMap stack:
new java.math.BitSieve
dup
aload 1 /* result */
iload 2 /* searchLen */
invokespecial java.math.BitSieve.<init>:(Ljava/math/BigInteger;I)V
astore 3 /* searchSieve */
start local 3 // java.math.BitSieve searchSieve
25: .line 836
aload 3 /* searchSieve */
aload 1 /* result */
26: .line 837
bipush 100
aconst_null
27: .line 836
invokevirtual java.math.BitSieve.retrieve:(Ljava/math/BigInteger;ILjava/util/Random;)Ljava/math/BigInteger;
astore 4 /* candidate */
start local 4 // java.math.BigInteger candidate
28: .line 838
aload 4 /* candidate */
ifnull 30
29: .line 839
aload 4 /* candidate */
areturn
30: .line 840
StackMap locals: java.math.BitSieve java.math.BigInteger
StackMap stack:
aload 1 /* result */
iconst_2
iload 2 /* searchLen */
imul
i2l
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 1 /* result */
end local 4 // java.math.BigInteger candidate
end local 3 // java.math.BitSieve searchSieve
31: .line 834
goto 24
end local 2 // int searchLen
end local 1 // java.math.BigInteger result
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 32 0 this Ljava/math/BigInteger;
5 32 1 result Ljava/math/BigInteger;
10 15 2 r J
24 32 2 searchLen I
25 31 3 searchSieve Ljava/math/BitSieve;
28 31 4 candidate Ljava/math/BigInteger;
private static int getPrimeSearchLen(int);
descriptor: (I)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=1, args_size=1
start local 0 // int bitLength
0: .line 845
iload 0 /* bitLength */
ldc 500000001
if_icmple 2
1: .line 846
new java.lang.ArithmeticException
dup
ldc "Prime search implementation restriction on bitLength"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 848
StackMap locals:
StackMap stack:
iload 0 /* bitLength */
bipush 20
idiv
bipush 64
imul
ireturn
end local 0 // int bitLength
LocalVariableTable:
Start End Slot Name Signature
0 3 0 bitLength I
MethodParameters:
Name Flags
bitLength
boolean primeToCertainty(int, java.util.Random);
descriptor: (ILjava/util/Random;)Z
flags: (0x0000)
Code:
stack=3, locals=6, args_size=3
start local 0 // java.math.BigInteger this
start local 1 // int certainty
start local 2 // java.util.Random random
0: .line 866
iconst_0
istore 3 /* rounds */
start local 3 // int rounds
1: .line 867
iload 1 /* certainty */
ldc 2147483646
invokestatic java.lang.Math.min:(II)I
iconst_1
iadd
iconst_2
idiv
istore 4 /* n */
start local 4 // int n
2: .line 872
aload 0 /* this */
invokevirtual java.math.BigInteger.bitLength:()I
istore 5 /* sizeInBits */
start local 5 // int sizeInBits
3: .line 873
iload 5 /* sizeInBits */
bipush 100
if_icmpge 9
4: .line 874
bipush 50
istore 3 /* rounds */
5: .line 875
iload 4 /* n */
iload 3 /* rounds */
if_icmpge 6
iload 4 /* n */
goto 7
StackMap locals: int int int
StackMap stack:
6: iload 3 /* rounds */
StackMap locals:
StackMap stack: int
7: istore 3 /* rounds */
8: .line 876
aload 0 /* this */
iload 3 /* rounds */
aload 2 /* random */
invokevirtual java.math.BigInteger.passesMillerRabin:(ILjava/util/Random;)Z
ireturn
9: .line 879
StackMap locals:
StackMap stack:
iload 5 /* sizeInBits */
sipush 256
if_icmpge 12
10: .line 880
bipush 27
istore 3 /* rounds */
11: .line 881
goto 22
StackMap locals:
StackMap stack:
12: iload 5 /* sizeInBits */
sipush 512
if_icmpge 15
13: .line 882
bipush 15
istore 3 /* rounds */
14: .line 883
goto 22
StackMap locals:
StackMap stack:
15: iload 5 /* sizeInBits */
sipush 768
if_icmpge 18
16: .line 884
bipush 8
istore 3 /* rounds */
17: .line 885
goto 22
StackMap locals:
StackMap stack:
18: iload 5 /* sizeInBits */
sipush 1024
if_icmpge 21
19: .line 886
iconst_4
istore 3 /* rounds */
20: .line 887
goto 22
21: .line 888
StackMap locals:
StackMap stack:
iconst_2
istore 3 /* rounds */
22: .line 890
StackMap locals:
StackMap stack:
iload 4 /* n */
iload 3 /* rounds */
if_icmpge 23
iload 4 /* n */
goto 24
StackMap locals:
StackMap stack:
23: iload 3 /* rounds */
StackMap locals:
StackMap stack: int
24: istore 3 /* rounds */
25: .line 892
aload 0 /* this */
iload 3 /* rounds */
aload 2 /* random */
invokevirtual java.math.BigInteger.passesMillerRabin:(ILjava/util/Random;)Z
ifeq 26
aload 0 /* this */
invokevirtual java.math.BigInteger.passesLucasLehmer:()Z
ifeq 26
iconst_1
ireturn
StackMap locals:
StackMap stack:
26: iconst_0
ireturn
end local 5 // int sizeInBits
end local 4 // int n
end local 3 // int rounds
end local 2 // java.util.Random random
end local 1 // int certainty
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Ljava/math/BigInteger;
0 27 1 certainty I
0 27 2 random Ljava/util/Random;
1 27 3 rounds I
2 27 4 n I
3 27 5 sizeInBits I
MethodParameters:
Name Flags
certainty
random
private boolean passesLucasLehmer();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=1
start local 0 // java.math.BigInteger this
0: .line 902
aload 0 /* this */
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 1 /* thisPlusOne */
start local 1 // java.math.BigInteger thisPlusOne
1: .line 905
iconst_5
istore 2 /* d */
start local 2 // int d
2: .line 906
goto 6
3: .line 908
StackMap locals: java.math.BigInteger int
StackMap stack:
iload 2 /* d */
ifge 4
iload 2 /* d */
invokestatic java.lang.Math.abs:(I)I
iconst_2
iadd
goto 5
StackMap locals:
StackMap stack:
4: iload 2 /* d */
iconst_2
iadd
ineg
StackMap locals:
StackMap stack: int
5: istore 2 /* d */
6: .line 906
StackMap locals:
StackMap stack:
iload 2 /* d */
aload 0 /* this */
invokestatic java.math.BigInteger.jacobiSymbol:(ILjava/math/BigInteger;)I
iconst_m1
if_icmpne 3
7: .line 912
iload 2 /* d */
aload 1 /* thisPlusOne */
aload 0 /* this */
invokestatic java.math.BigInteger.lucasLehmerSequence:(ILjava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 3 /* u */
start local 3 // java.math.BigInteger u
8: .line 915
aload 3 /* u */
aload 0 /* this */
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ireturn
end local 3 // java.math.BigInteger u
end local 2 // int d
end local 1 // java.math.BigInteger thisPlusOne
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljava/math/BigInteger;
1 9 1 thisPlusOne Ljava/math/BigInteger;
2 9 2 d I
8 9 3 u Ljava/math/BigInteger;
private static int jacobiSymbol(int, java.math.BigInteger);
descriptor: (ILjava/math/BigInteger;)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=5, args_size=2
start local 0 // int p
start local 1 // java.math.BigInteger n
0: .line 923
iload 0 /* p */
ifne 2
1: .line 924
iconst_0
ireturn
2: .line 927
StackMap locals:
StackMap stack:
iconst_1
istore 2 /* j */
start local 2 // int j
3: .line 928
aload 1 /* n */
getfield java.math.BigInteger.mag:[I
aload 1 /* n */
getfield java.math.BigInteger.mag:[I
arraylength
iconst_1
isub
iaload
istore 3 /* u */
start local 3 // int u
4: .line 931
iload 0 /* p */
ifge 11
5: .line 932
iload 0 /* p */
ineg
istore 0 /* p */
6: .line 933
iload 3 /* u */
bipush 7
iand
istore 4 /* n8 */
start local 4 // int n8
7: .line 934
iload 4 /* n8 */
iconst_3
if_icmpeq 8
iload 4 /* n8 */
bipush 7
if_icmpne 11
8: .line 935
StackMap locals: int int int
StackMap stack:
iload 2 /* j */
ineg
istore 2 /* j */
end local 4 // int n8
9: .line 939
goto 11
10: .line 940
StackMap locals:
StackMap stack:
iload 0 /* p */
iconst_2
ishr
istore 0 /* p */
11: .line 939
StackMap locals:
StackMap stack:
iload 0 /* p */
iconst_3
iand
ifeq 10
12: .line 941
iload 0 /* p */
iconst_1
iand
ifne 16
13: .line 942
iload 0 /* p */
iconst_1
ishr
istore 0 /* p */
14: .line 943
iload 3 /* u */
iload 3 /* u */
iconst_1
ishr
ixor
iconst_2
iand
ifeq 16
15: .line 944
iload 2 /* j */
ineg
istore 2 /* j */
16: .line 946
StackMap locals:
StackMap stack:
iload 0 /* p */
iconst_1
if_icmpne 18
17: .line 947
iload 2 /* j */
ireturn
18: .line 949
StackMap locals:
StackMap stack:
iload 0 /* p */
iload 3 /* u */
iand
iconst_2
iand
ifeq 20
19: .line 950
iload 2 /* j */
ineg
istore 2 /* j */
20: .line 952
StackMap locals:
StackMap stack:
aload 1 /* n */
iload 0 /* p */
i2l
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.intValue:()I
istore 3 /* u */
21: .line 955
goto 36
22: .line 957
StackMap locals:
StackMap stack:
iload 3 /* u */
iconst_2
ishr
istore 3 /* u */
23: .line 956
StackMap locals:
StackMap stack:
iload 3 /* u */
iconst_3
iand
ifeq 22
24: .line 958
iload 3 /* u */
iconst_1
iand
ifne 28
25: .line 959
iload 3 /* u */
iconst_1
ishr
istore 3 /* u */
26: .line 960
iload 0 /* p */
iload 0 /* p */
iconst_1
ishr
ixor
iconst_2
iand
ifeq 28
27: .line 961
iload 2 /* j */
ineg
istore 2 /* j */
28: .line 963
StackMap locals:
StackMap stack:
iload 3 /* u */
iconst_1
if_icmpne 30
29: .line 964
iload 2 /* j */
ireturn
30: .line 966
StackMap locals:
StackMap stack:
getstatic java.math.BigInteger.$assertionsDisabled:Z
ifne 31
iload 3 /* u */
iload 0 /* p */
if_icmplt 31
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
31: .line 967
StackMap locals:
StackMap stack:
iload 3 /* u */
istore 4 /* t */
start local 4 // int t
32: iload 0 /* p */
istore 3 /* u */
iload 4 /* t */
istore 0 /* p */
33: .line 968
iload 3 /* u */
iload 0 /* p */
iand
iconst_2
iand
ifeq 35
34: .line 969
iload 2 /* j */
ineg
istore 2 /* j */
35: .line 971
StackMap locals: int
StackMap stack:
iload 3 /* u */
iload 0 /* p */
irem
istore 3 /* u */
end local 4 // int t
36: .line 955
StackMap locals:
StackMap stack:
iload 3 /* u */
ifne 23
37: .line 973
iconst_0
ireturn
end local 3 // int u
end local 2 // int j
end local 1 // java.math.BigInteger n
end local 0 // int p
LocalVariableTable:
Start End Slot Name Signature
0 38 0 p I
0 38 1 n Ljava/math/BigInteger;
3 38 2 j I
4 38 3 u I
7 9 4 n8 I
32 36 4 t I
MethodParameters:
Name Flags
p
n
private static java.math.BigInteger lucasLehmerSequence(int, java.math.BigInteger, java.math.BigInteger);
descriptor: (ILjava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=9, args_size=3
start local 0 // int z
start local 1 // java.math.BigInteger k
start local 2 // java.math.BigInteger n
0: .line 977
iload 0 /* z */
i2l
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
astore 3 /* d */
start local 3 // java.math.BigInteger d
1: .line 978
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
astore 4 /* u */
start local 4 // java.math.BigInteger u
2: .line 979
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
astore 6 /* v */
start local 6 // java.math.BigInteger v
3: .line 981
aload 1 /* k */
invokevirtual java.math.BigInteger.bitLength:()I
iconst_2
isub
istore 8 /* i */
start local 8 // int i
4: goto 22
5: .line 982
StackMap locals: int java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger top java.math.BigInteger top int
StackMap stack:
aload 4 /* u */
aload 6 /* v */
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 2 /* n */
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 5 /* u2 */
start local 5 // java.math.BigInteger u2
6: .line 984
aload 6 /* v */
invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
aload 3 /* d */
aload 4 /* u */
invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 2 /* n */
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 7 /* v2 */
start local 7 // java.math.BigInteger v2
7: .line 985
aload 7 /* v2 */
iconst_0
invokevirtual java.math.BigInteger.testBit:(I)Z
ifeq 9
8: .line 986
aload 7 /* v2 */
aload 2 /* n */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 7 /* v2 */
9: .line 988
StackMap locals: int java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger int
StackMap stack:
aload 7 /* v2 */
iconst_1
invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
astore 7 /* v2 */
10: .line 990
aload 5 /* u2 */
astore 4 /* u */
aload 7 /* v2 */
astore 6 /* v */
11: .line 991
aload 1 /* k */
iload 8 /* i */
invokevirtual java.math.BigInteger.testBit:(I)Z
ifeq 21
12: .line 992
aload 4 /* u */
aload 6 /* v */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 2 /* n */
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 5 /* u2 */
13: .line 993
aload 5 /* u2 */
iconst_0
invokevirtual java.math.BigInteger.testBit:(I)Z
ifeq 15
14: .line 994
aload 5 /* u2 */
aload 2 /* n */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 5 /* u2 */
15: .line 996
StackMap locals:
StackMap stack:
aload 5 /* u2 */
iconst_1
invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
astore 5 /* u2 */
16: .line 997
aload 6 /* v */
aload 3 /* d */
aload 4 /* u */
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 2 /* n */
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 7 /* v2 */
17: .line 998
aload 7 /* v2 */
iconst_0
invokevirtual java.math.BigInteger.testBit:(I)Z
ifeq 19
18: .line 999
aload 7 /* v2 */
aload 2 /* n */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 7 /* v2 */
19: .line 1000
StackMap locals:
StackMap stack:
aload 7 /* v2 */
iconst_1
invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
astore 7 /* v2 */
20: .line 1002
aload 5 /* u2 */
astore 4 /* u */
aload 7 /* v2 */
astore 6 /* v */
21: .line 981
StackMap locals:
StackMap stack:
iinc 8 /* i */ -1
end local 7 // java.math.BigInteger v2
end local 5 // java.math.BigInteger u2
StackMap locals: int java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger top java.math.BigInteger top int
StackMap stack:
22: iload 8 /* i */
ifge 5
end local 8 // int i
23: .line 1005
aload 4 /* u */
areturn
end local 6 // java.math.BigInteger v
end local 4 // java.math.BigInteger u
end local 3 // java.math.BigInteger d
end local 2 // java.math.BigInteger n
end local 1 // java.math.BigInteger k
end local 0 // int z
LocalVariableTable:
Start End Slot Name Signature
0 24 0 z I
0 24 1 k Ljava/math/BigInteger;
0 24 2 n Ljava/math/BigInteger;
1 24 3 d Ljava/math/BigInteger;
2 24 4 u Ljava/math/BigInteger;
6 22 5 u2 Ljava/math/BigInteger;
3 24 6 v Ljava/math/BigInteger;
7 22 7 v2 Ljava/math/BigInteger;
4 23 8 i I
MethodParameters:
Name Flags
z
k
n
private boolean passesMillerRabin(int, java.util.Random);
descriptor: (ILjava/util/Random;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=10, args_size=3
start local 0 // java.math.BigInteger this
start local 1 // int iterations
start local 2 // java.util.Random rnd
0: .line 1019
aload 0 /* this */
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 3 /* thisMinusOne */
start local 3 // java.math.BigInteger thisMinusOne
1: .line 1020
aload 3 /* thisMinusOne */
astore 4 /* m */
start local 4 // java.math.BigInteger m
2: .line 1021
aload 4 /* m */
invokevirtual java.math.BigInteger.getLowestSetBit:()I
istore 5 /* a */
start local 5 // int a
3: .line 1022
aload 4 /* m */
iload 5 /* a */
invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
astore 4 /* m */
4: .line 1025
aload 2 /* rnd */
ifnonnull 6
5: .line 1026
invokestatic java.util.concurrent.ThreadLocalRandom.current:()Ljava/util/concurrent/ThreadLocalRandom;
astore 2 /* rnd */
6: .line 1028
StackMap locals: java.math.BigInteger java.math.BigInteger int
StackMap stack:
iconst_0
istore 6 /* i */
start local 6 // int i
7: goto 21
8: .line 1032
StackMap locals: int
StackMap stack:
new java.math.BigInteger
dup
aload 0 /* this */
invokevirtual java.math.BigInteger.bitLength:()I
aload 2 /* rnd */
invokespecial java.math.BigInteger.<init>:(ILjava/util/Random;)V
astore 7 /* b */
start local 7 // java.math.BigInteger b
9: .line 1033
aload 7 /* b */
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
ifle 8
aload 7 /* b */
aload 0 /* this */
invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
10: .line 1031
ifge 8
11: .line 1035
iconst_0
istore 8 /* j */
start local 8 // int j
12: .line 1036
aload 7 /* b */
aload 4 /* m */
aload 0 /* this */
invokevirtual java.math.BigInteger.modPow:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 9 /* z */
start local 9 // java.math.BigInteger z
13: .line 1037
goto 18
14: .line 1038
StackMap locals: java.math.BigInteger int java.math.BigInteger
StackMap stack:
iload 8 /* j */
ifle 15
aload 9 /* z */
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ifne 16
StackMap locals:
StackMap stack:
15: iinc 8 /* j */ 1
iload 8 /* j */
iload 5 /* a */
if_icmpne 17
16: .line 1039
StackMap locals:
StackMap stack:
iconst_0
ireturn
17: .line 1040
StackMap locals:
StackMap stack:
aload 9 /* z */
getstatic java.math.BigInteger.TWO:Ljava/math/BigInteger;
aload 0 /* this */
invokevirtual java.math.BigInteger.modPow:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 9 /* z */
18: .line 1037
StackMap locals:
StackMap stack:
iload 8 /* j */
ifne 19
aload 9 /* z */
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ifne 20
StackMap locals:
StackMap stack:
19: aload 9 /* z */
aload 3 /* thisMinusOne */
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ifeq 14
end local 9 // java.math.BigInteger z
end local 8 // int j
end local 7 // java.math.BigInteger b
20: .line 1028
StackMap locals:
StackMap stack:
iinc 6 /* i */ 1
StackMap locals:
StackMap stack:
21: iload 6 /* i */
iload 1 /* iterations */
if_icmplt 8
end local 6 // int i
22: .line 1043
iconst_1
ireturn
end local 5 // int a
end local 4 // java.math.BigInteger m
end local 3 // java.math.BigInteger thisMinusOne
end local 2 // java.util.Random rnd
end local 1 // int iterations
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Ljava/math/BigInteger;
0 23 1 iterations I
0 23 2 rnd Ljava/util/Random;
1 23 3 thisMinusOne Ljava/math/BigInteger;
2 23 4 m Ljava/math/BigInteger;
3 23 5 a I
7 22 6 i I
9 20 7 b Ljava/math/BigInteger;
12 20 8 j I
13 20 9 z Ljava/math/BigInteger;
MethodParameters:
Name Flags
iterations
rnd
void <init>(int[], int);
descriptor: ([II)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=3
start local 0 // java.math.BigInteger this
start local 1 // int[] magnitude
start local 2 // int signum
0: .line 1051
aload 0 /* this */
invokespecial java.lang.Number.<init>:()V
1: .line 1052
aload 0 /* this */
aload 1 /* magnitude */
arraylength
ifne 2
iconst_0
goto 3
StackMap locals: java.math.BigInteger int[] int
StackMap stack: java.math.BigInteger
2: iload 2 /* signum */
StackMap locals: java.math.BigInteger int[] int
StackMap stack: java.math.BigInteger int
3: putfield java.math.BigInteger.signum:I
4: .line 1053
aload 0 /* this */
aload 1 /* magnitude */
putfield java.math.BigInteger.mag:[I
5: .line 1054
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ldc 67108864
if_icmplt 7
6: .line 1055
aload 0 /* this */
invokevirtual java.math.BigInteger.checkRange:()V
7: .line 1057
StackMap locals:
StackMap stack:
return
end local 2 // int signum
end local 1 // int[] magnitude
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Ljava/math/BigInteger;
0 8 1 magnitude [I
0 8 2 signum I
MethodParameters:
Name Flags
magnitude
signum
private void <init>(byte[], int);
descriptor: ([BI)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=3
start local 0 // java.math.BigInteger this
start local 1 // byte[] magnitude
start local 2 // int signum
0: .line 1063
aload 0 /* this */
invokespecial java.lang.Number.<init>:()V
1: .line 1064
aload 0 /* this */
aload 1 /* magnitude */
arraylength
ifne 2
iconst_0
goto 3
StackMap locals: java.math.BigInteger byte[] int
StackMap stack: java.math.BigInteger
2: iload 2 /* signum */
StackMap locals: java.math.BigInteger byte[] int
StackMap stack: java.math.BigInteger int
3: putfield java.math.BigInteger.signum:I
4: .line 1065
aload 0 /* this */
aload 1 /* magnitude */
invokestatic java.math.BigInteger.stripLeadingZeroBytes:([B)[I
putfield java.math.BigInteger.mag:[I
5: .line 1066
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ldc 67108864
if_icmplt 7
6: .line 1067
aload 0 /* this */
invokevirtual java.math.BigInteger.checkRange:()V
7: .line 1069
StackMap locals:
StackMap stack:
return
end local 2 // int signum
end local 1 // byte[] magnitude
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Ljava/math/BigInteger;
0 8 1 magnitude [B
0 8 2 signum I
MethodParameters:
Name Flags
magnitude
signum
private void checkRange();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 // java.math.BigInteger this
0: .line 1078
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ldc 67108864
if_icmpgt 1
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ldc 67108864
if_icmpne 2
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
iaload
ifge 2
1: .line 1079
StackMap locals:
StackMap stack:
invokestatic java.math.BigInteger.reportOverflow:()V
2: .line 1081
StackMap locals:
StackMap stack:
return
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BigInteger;
private static void reportOverflow();
descriptor: ()V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: .line 1084
new java.lang.ArithmeticException
dup
ldc "BigInteger would overflow supported range"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
LocalVariableTable:
Start End Slot Name Signature
public static java.math.BigInteger valueOf(long);
descriptor: (J)Ljava/math/BigInteger;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=2, args_size=1
start local 0 // long val
0: .line 1100
lload 0 /* val */
lconst_0
lcmp
ifne 2
1: .line 1101
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
2: .line 1102
StackMap locals:
StackMap stack:
lload 0 /* val */
lconst_0
lcmp
ifle 4
lload 0 /* val */
ldc 16
lcmp
ifgt 4
3: .line 1103
getstatic java.math.BigInteger.posConst:[Ljava/math/BigInteger;
lload 0 /* val */
l2i
aaload
areturn
4: .line 1104
StackMap locals:
StackMap stack:
lload 0 /* val */
lconst_0
lcmp
ifge 6
lload 0 /* val */
ldc -16
lcmp
iflt 6
5: .line 1105
getstatic java.math.BigInteger.negConst:[Ljava/math/BigInteger;
lload 0 /* val */
lneg
l2i
aaload
areturn
6: .line 1107
StackMap locals:
StackMap stack:
new java.math.BigInteger
dup
lload 0 /* val */
invokespecial java.math.BigInteger.<init>:(J)V
areturn
end local 0 // long val
LocalVariableTable:
Start End Slot Name Signature
0 7 0 val J
MethodParameters:
Name Flags
val
private void <init>(long);
descriptor: (J)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=4, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // long val
0: .line 1113
aload 0 /* this */
invokespecial java.lang.Number.<init>:()V
1: .line 1114
lload 1 /* val */
lconst_0
lcmp
ifge 5
2: .line 1115
lload 1 /* val */
lneg
lstore 1 /* val */
3: .line 1116
aload 0 /* this */
iconst_m1
putfield java.math.BigInteger.signum:I
4: .line 1117
goto 6
5: .line 1118
StackMap locals: java.math.BigInteger long
StackMap stack:
aload 0 /* this */
iconst_1
putfield java.math.BigInteger.signum:I
6: .line 1121
StackMap locals:
StackMap stack:
lload 1 /* val */
bipush 32
lushr
l2i
istore 3 /* highWord */
start local 3 // int highWord
7: .line 1122
iload 3 /* highWord */
ifne 11
8: .line 1123
aload 0 /* this */
iconst_1
newarray 10
putfield java.math.BigInteger.mag:[I
9: .line 1124
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
lload 1 /* val */
l2i
iastore
10: .line 1125
goto 14
11: .line 1126
StackMap locals: int
StackMap stack:
aload 0 /* this */
iconst_2
newarray 10
putfield java.math.BigInteger.mag:[I
12: .line 1127
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
iload 3 /* highWord */
iastore
13: .line 1128
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_1
lload 1 /* val */
l2i
iastore
14: .line 1130
StackMap locals:
StackMap stack:
return
end local 3 // int highWord
end local 1 // long val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Ljava/math/BigInteger;
0 15 1 val J
7 15 3 highWord I
MethodParameters:
Name Flags
val
private static java.math.BigInteger valueOf(int[]);
descriptor: ([I)Ljava/math/BigInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=1, args_size=1
start local 0 // int[] val
0: .line 1138
aload 0 /* val */
iconst_0
iaload
ifle 1
new java.math.BigInteger
dup
aload 0 /* val */
iconst_1
invokespecial java.math.BigInteger.<init>:([II)V
goto 2
StackMap locals:
StackMap stack:
1: new java.math.BigInteger
dup
aload 0 /* val */
invokespecial java.math.BigInteger.<init>:([I)V
StackMap locals:
StackMap stack: java.math.BigInteger
2: areturn
end local 0 // int[] val
LocalVariableTable:
Start End Slot Name Signature
0 3 0 val [I
MethodParameters:
Name Flags
val
public java.math.BigInteger add(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 1233
aload 1 /* val */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 1234
aload 0 /* this */
areturn
2: .line 1235
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 4
3: .line 1236
aload 1 /* val */
areturn
4: .line 1237
StackMap locals:
StackMap stack:
aload 1 /* val */
getfield java.math.BigInteger.signum:I
aload 0 /* this */
getfield java.math.BigInteger.signum:I
if_icmpne 6
5: .line 1238
new java.math.BigInteger
dup
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
invokestatic java.math.BigInteger.add:([I[I)[I
aload 0 /* this */
getfield java.math.BigInteger.signum:I
invokespecial java.math.BigInteger.<init>:([II)V
areturn
6: .line 1240
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* val */
invokevirtual java.math.BigInteger.compareMagnitude:(Ljava/math/BigInteger;)I
istore 2 /* cmp */
start local 2 // int cmp
7: .line 1241
iload 2 /* cmp */
ifne 9
8: .line 1242
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
9: .line 1243
StackMap locals: int
StackMap stack:
iload 2 /* cmp */
ifle 10
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
invokestatic java.math.BigInteger.subtract:([I[I)[I
goto 11
10: .line 1244
StackMap locals:
StackMap stack:
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
invokestatic java.math.BigInteger.subtract:([I[I)[I
11: .line 1243
StackMap locals:
StackMap stack: int[]
astore 3 /* resultMag */
start local 3 // int[] resultMag
12: .line 1245
aload 3 /* resultMag */
invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
astore 3 /* resultMag */
13: .line 1247
new java.math.BigInteger
dup
aload 3 /* resultMag */
iload 2 /* cmp */
aload 0 /* this */
getfield java.math.BigInteger.signum:I
if_icmpne 14
iconst_1
goto 15
StackMap locals: java.math.BigInteger java.math.BigInteger int int[]
StackMap stack: new 13 new 13 int[]
14: iconst_m1
StackMap locals: java.math.BigInteger java.math.BigInteger int int[]
StackMap stack: new 13 new 13 int[] int
15: invokespecial java.math.BigInteger.<init>:([II)V
areturn
end local 3 // int[] resultMag
end local 2 // int cmp
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Ljava/math/BigInteger;
0 16 1 val Ljava/math/BigInteger;
7 16 2 cmp I
12 16 3 resultMag [I
MethodParameters:
Name Flags
val
java.math.BigInteger add(long);
descriptor: (J)Ljava/math/BigInteger;
flags: (0x0000)
Code:
stack=5, locals=5, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // long val
0: .line 1255
lload 1 /* val */
lconst_0
lcmp
ifne 2
1: .line 1256
aload 0 /* this */
areturn
2: .line 1257
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 4
3: .line 1258
lload 1 /* val */
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
areturn
4: .line 1259
StackMap locals:
StackMap stack:
lload 1 /* val */
invokestatic java.lang.Long.signum:(J)I
aload 0 /* this */
getfield java.math.BigInteger.signum:I
if_icmpne 6
5: .line 1260
new java.math.BigInteger
dup
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
lload 1 /* val */
invokestatic java.lang.Math.abs:(J)J
invokestatic java.math.BigInteger.add:([IJ)[I
aload 0 /* this */
getfield java.math.BigInteger.signum:I
invokespecial java.math.BigInteger.<init>:([II)V
areturn
6: .line 1261
StackMap locals:
StackMap stack:
aload 0 /* this */
lload 1 /* val */
invokevirtual java.math.BigInteger.compareMagnitude:(J)I
istore 3 /* cmp */
start local 3 // int cmp
7: .line 1262
iload 3 /* cmp */
ifne 9
8: .line 1263
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
9: .line 1264
StackMap locals: int
StackMap stack:
iload 3 /* cmp */
ifle 10
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
lload 1 /* val */
invokestatic java.lang.Math.abs:(J)J
invokestatic java.math.BigInteger.subtract:([IJ)[I
goto 11
StackMap locals:
StackMap stack:
10: lload 1 /* val */
invokestatic java.lang.Math.abs:(J)J
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
invokestatic java.math.BigInteger.subtract:(J[I)[I
StackMap locals:
StackMap stack: int[]
11: astore 4 /* resultMag */
start local 4 // int[] resultMag
12: .line 1265
aload 4 /* resultMag */
invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
astore 4 /* resultMag */
13: .line 1266
new java.math.BigInteger
dup
aload 4 /* resultMag */
iload 3 /* cmp */
aload 0 /* this */
getfield java.math.BigInteger.signum:I
if_icmpne 14
iconst_1
goto 15
StackMap locals: java.math.BigInteger long int int[]
StackMap stack: new 13 new 13 int[]
14: iconst_m1
StackMap locals: java.math.BigInteger long int int[]
StackMap stack: new 13 new 13 int[] int
15: invokespecial java.math.BigInteger.<init>:([II)V
areturn
end local 4 // int[] resultMag
end local 3 // int cmp
end local 1 // long val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Ljava/math/BigInteger;
0 16 1 val J
7 16 3 cmp I
12 16 4 resultMag [I
MethodParameters:
Name Flags
val
private static int[] add(int[], long);
descriptor: ([IJ)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=10, args_size=2
start local 0 // int[] x
start local 1 // long val
0: .line 1277
lconst_0
lstore 3 /* sum */
start local 3 // long sum
1: .line 1278
aload 0 /* x */
arraylength
istore 5 /* xIndex */
start local 5 // int xIndex
2: .line 1280
lload 1 /* val */
bipush 32
lushr
l2i
istore 7 /* highWord */
start local 7 // int highWord
3: .line 1281
iload 7 /* highWord */
ifne 8
4: .line 1282
iload 5 /* xIndex */
newarray 10
astore 6 /* result */
start local 6 // int[] result
5: .line 1283
aload 0 /* x */
iinc 5 /* xIndex */ -1
iload 5 /* xIndex */
iaload
i2l
ldc 4294967295
land
lload 1 /* val */
ladd
lstore 3 /* sum */
6: .line 1284
aload 6 /* result */
iload 5 /* xIndex */
lload 3 /* sum */
l2i
iastore
7: .line 1285
goto 19
end local 6 // int[] result
8: .line 1286
StackMap locals: int[] long long int top int
StackMap stack:
iload 5 /* xIndex */
iconst_1
if_icmpne 14
9: .line 1287
iconst_2
newarray 10
astore 6 /* result */
start local 6 // int[] result
10: .line 1288
lload 1 /* val */
aload 0 /* x */
iconst_0
iaload
i2l
ldc 4294967295
land
ladd
lstore 3 /* sum */
11: .line 1289
aload 6 /* result */
iconst_1
lload 3 /* sum */
l2i
iastore
12: .line 1290
aload 6 /* result */
iconst_0
lload 3 /* sum */
bipush 32
lushr
l2i
iastore
13: .line 1291
aload 6 /* result */
areturn
end local 6 // int[] result
14: .line 1293
StackMap locals:
StackMap stack:
iload 5 /* xIndex */
newarray 10
astore 6 /* result */
start local 6 // int[] result
15: .line 1294
aload 0 /* x */
iinc 5 /* xIndex */ -1
iload 5 /* xIndex */
iaload
i2l
ldc 4294967295
land
lload 1 /* val */
ldc 4294967295
land
ladd
lstore 3 /* sum */
16: .line 1295
aload 6 /* result */
iload 5 /* xIndex */
lload 3 /* sum */
l2i
iastore
17: .line 1296
aload 0 /* x */
iinc 5 /* xIndex */ -1
iload 5 /* xIndex */
iaload
i2l
ldc 4294967295
land
iload 7 /* highWord */
i2l
ldc 4294967295
land
ladd
lload 3 /* sum */
bipush 32
lushr
ladd
lstore 3 /* sum */
18: .line 1297
aload 6 /* result */
iload 5 /* xIndex */
lload 3 /* sum */
l2i
iastore
19: .line 1301
StackMap locals: int[] long long int int[] int
StackMap stack:
lload 3 /* sum */
bipush 32
lushr
lconst_0
lcmp
ifeq 20
iconst_1
goto 21
StackMap locals:
StackMap stack:
20: iconst_0
StackMap locals:
StackMap stack: int
21: istore 8 /* carry */
start local 8 // boolean carry
22: .line 1302
goto 26
23: .line 1303
StackMap locals: int
StackMap stack:
aload 6 /* result */
iinc 5 /* xIndex */ -1
iload 5 /* xIndex */
aload 0 /* x */
iload 5 /* xIndex */
iaload
iconst_1
iadd
dup_x2
iastore
ifne 24
iconst_1
goto 25
StackMap locals:
StackMap stack:
24: iconst_0
StackMap locals:
StackMap stack: int
25: istore 8 /* carry */
26: .line 1302
StackMap locals:
StackMap stack:
iload 5 /* xIndex */
ifle 29
iload 8 /* carry */
ifne 23
27: .line 1305
goto 29
28: .line 1306
StackMap locals:
StackMap stack:
aload 6 /* result */
iinc 5 /* xIndex */ -1
iload 5 /* xIndex */
aload 0 /* x */
iload 5 /* xIndex */
iaload
iastore
29: .line 1305
StackMap locals:
StackMap stack:
iload 5 /* xIndex */
ifgt 28
30: .line 1308
iload 8 /* carry */
ifeq 35
31: .line 1309
aload 6 /* result */
arraylength
iconst_1
iadd
newarray 10
astore 9 /* bigger */
start local 9 // int[] bigger
32: .line 1310
aload 6 /* result */
iconst_0
aload 9 /* bigger */
iconst_1
aload 6 /* result */
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
33: .line 1311
aload 9 /* bigger */
iconst_0
iconst_1
iastore
34: .line 1312
aload 9 /* bigger */
areturn
end local 9 // int[] bigger
35: .line 1314
StackMap locals:
StackMap stack:
aload 6 /* result */
areturn
end local 8 // boolean carry
end local 7 // int highWord
end local 6 // int[] result
end local 5 // int xIndex
end local 3 // long sum
end local 1 // long val
end local 0 // int[] x
LocalVariableTable:
Start End Slot Name Signature
0 36 0 x [I
0 36 1 val J
1 36 3 sum J
2 36 5 xIndex I
5 8 6 result [I
10 14 6 result [I
15 36 6 result [I
3 36 7 highWord I
22 36 8 carry Z
32 35 9 bigger [I
MethodParameters:
Name Flags
x
val
private static int[] add(int[], int[]);
descriptor: ([I[I)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=9, args_size=2
start local 0 // int[] x
start local 1 // int[] y
0: .line 1324
aload 0 /* x */
arraylength
aload 1 /* y */
arraylength
if_icmpge 4
1: .line 1325
aload 0 /* x */
astore 2 /* tmp */
start local 2 // int[] tmp
2: .line 1326
aload 1 /* y */
astore 0 /* x */
3: .line 1327
aload 2 /* tmp */
astore 1 /* y */
end local 2 // int[] tmp
4: .line 1330
StackMap locals:
StackMap stack:
aload 0 /* x */
arraylength
istore 2 /* xIndex */
start local 2 // int xIndex
5: .line 1331
aload 1 /* y */
arraylength
istore 3 /* yIndex */
start local 3 // int yIndex
6: .line 1332
iload 2 /* xIndex */
newarray 10
astore 4 /* result */
start local 4 // int[] result
7: .line 1333
lconst_0
lstore 5 /* sum */
start local 5 // long sum
8: .line 1334
iload 3 /* yIndex */
iconst_1
if_icmpne 18
9: .line 1335
aload 0 /* x */
iinc 2 /* xIndex */ -1
iload 2 /* xIndex */
iaload
i2l
ldc 4294967295
land
aload 1 /* y */
iconst_0
iaload
i2l
ldc 4294967295
land
ladd
lstore 5 /* sum */
10: .line 1336
aload 4 /* result */
iload 2 /* xIndex */
lload 5 /* sum */
l2i
iastore
11: .line 1337
goto 19
12: .line 1340
StackMap locals: int[] int[] int int int[] long
StackMap stack:
aload 0 /* x */
iinc 2 /* xIndex */ -1
iload 2 /* xIndex */
iaload
i2l
ldc 4294967295
land
13: .line 1341
aload 1 /* y */
iinc 3 /* yIndex */ -1
iload 3 /* yIndex */
iaload
i2l
ldc 4294967295
land
14: .line 1340
ladd
15: .line 1341
lload 5 /* sum */
bipush 32
lushr
16: .line 1340
ladd
lstore 5 /* sum */
17: .line 1342
aload 4 /* result */
iload 2 /* xIndex */
lload 5 /* sum */
l2i
iastore
18: .line 1339
StackMap locals:
StackMap stack:
iload 3 /* yIndex */
ifgt 12
19: .line 1346
StackMap locals:
StackMap stack:
lload 5 /* sum */
bipush 32
lushr
lconst_0
lcmp
ifeq 20
iconst_1
goto 21
StackMap locals:
StackMap stack:
20: iconst_0
StackMap locals:
StackMap stack: int
21: istore 7 /* carry */
start local 7 // boolean carry
22: .line 1347
goto 26
23: .line 1348
StackMap locals: int
StackMap stack:
aload 4 /* result */
iinc 2 /* xIndex */ -1
iload 2 /* xIndex */
aload 0 /* x */
iload 2 /* xIndex */
iaload
iconst_1
iadd
dup_x2
iastore
ifne 24
iconst_1
goto 25
StackMap locals:
StackMap stack:
24: iconst_0
StackMap locals:
StackMap stack: int
25: istore 7 /* carry */
26: .line 1347
StackMap locals:
StackMap stack:
iload 2 /* xIndex */
ifle 29
iload 7 /* carry */
ifne 23
27: .line 1351
goto 29
28: .line 1352
StackMap locals:
StackMap stack:
aload 4 /* result */
iinc 2 /* xIndex */ -1
iload 2 /* xIndex */
aload 0 /* x */
iload 2 /* xIndex */
iaload
iastore
29: .line 1351
StackMap locals:
StackMap stack:
iload 2 /* xIndex */
ifgt 28
30: .line 1355
iload 7 /* carry */
ifeq 35
31: .line 1356
aload 4 /* result */
arraylength
iconst_1
iadd
newarray 10
astore 8 /* bigger */
start local 8 // int[] bigger
32: .line 1357
aload 4 /* result */
iconst_0
aload 8 /* bigger */
iconst_1
aload 4 /* result */
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
33: .line 1358
aload 8 /* bigger */
iconst_0
iconst_1
iastore
34: .line 1359
aload 8 /* bigger */
areturn
end local 8 // int[] bigger
35: .line 1361
StackMap locals:
StackMap stack:
aload 4 /* result */
areturn
end local 7 // boolean carry
end local 5 // long sum
end local 4 // int[] result
end local 3 // int yIndex
end local 2 // int xIndex
end local 1 // int[] y
end local 0 // int[] x
LocalVariableTable:
Start End Slot Name Signature
0 36 0 x [I
0 36 1 y [I
2 4 2 tmp [I
5 36 2 xIndex I
6 36 3 yIndex I
7 36 4 result [I
8 36 5 sum J
22 36 7 carry Z
32 35 8 bigger [I
MethodParameters:
Name Flags
x
y
private static int[] subtract(long, int[]);
descriptor: (J[I)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=8, locals=8, args_size=2
start local 0 // long val
start local 2 // int[] little
0: .line 1365
lload 0 /* val */
bipush 32
lushr
l2i
istore 3 /* highWord */
start local 3 // int highWord
1: .line 1366
iload 3 /* highWord */
ifne 5
2: .line 1367
iconst_1
newarray 10
astore 4 /* result */
start local 4 // int[] result
3: .line 1368
aload 4 /* result */
iconst_0
lload 0 /* val */
aload 2 /* little */
iconst_0
iaload
i2l
ldc 4294967295
land
lsub
l2i
iastore
4: .line 1369
aload 4 /* result */
areturn
end local 4 // int[] result
5: .line 1371
StackMap locals: int
StackMap stack:
iconst_2
newarray 10
astore 4 /* result */
start local 4 // int[] result
6: .line 1372
aload 2 /* little */
arraylength
iconst_1
if_icmpne 17
7: .line 1373
lload 0 /* val */
l2i
i2l
ldc 4294967295
land
aload 2 /* little */
iconst_0
iaload
i2l
ldc 4294967295
land
lsub
lstore 5 /* difference */
start local 5 // long difference
8: .line 1374
aload 4 /* result */
iconst_1
lload 5 /* difference */
l2i
iastore
9: .line 1376
lload 5 /* difference */
bipush 32
lshr
lconst_0
lcmp
ifeq 10
iconst_1
goto 11
StackMap locals: int[] long
StackMap stack:
10: iconst_0
StackMap locals:
StackMap stack: int
11: istore 7 /* borrow */
start local 7 // boolean borrow
12: .line 1377
iload 7 /* borrow */
ifeq 15
13: .line 1378
aload 4 /* result */
iconst_0
iload 3 /* highWord */
iconst_1
isub
iastore
14: .line 1379
goto 16
15: .line 1380
StackMap locals: int
StackMap stack:
aload 4 /* result */
iconst_0
iload 3 /* highWord */
iastore
16: .line 1382
StackMap locals:
StackMap stack:
aload 4 /* result */
areturn
end local 7 // boolean borrow
end local 5 // long difference
17: .line 1384
StackMap locals:
StackMap stack:
lload 0 /* val */
l2i
i2l
ldc 4294967295
land
aload 2 /* little */
iconst_1
iaload
i2l
ldc 4294967295
land
lsub
lstore 5 /* difference */
start local 5 // long difference
18: .line 1385
aload 4 /* result */
iconst_1
lload 5 /* difference */
l2i
iastore
19: .line 1386
iload 3 /* highWord */
i2l
ldc 4294967295
land
aload 2 /* little */
iconst_0
iaload
i2l
ldc 4294967295
land
lsub
lload 5 /* difference */
bipush 32
lshr
ladd
lstore 5 /* difference */
20: .line 1387
aload 4 /* result */
iconst_0
lload 5 /* difference */
l2i
iastore
21: .line 1388
aload 4 /* result */
areturn
end local 5 // long difference
end local 4 // int[] result
end local 3 // int highWord
end local 2 // int[] little
end local 0 // long val
LocalVariableTable:
Start End Slot Name Signature
0 22 0 val J
0 22 2 little [I
1 22 3 highWord I
3 5 4 result [I
6 22 4 result [I
8 17 5 difference J
12 17 7 borrow Z
18 22 5 difference J
MethodParameters:
Name Flags
val
little
private static int[] subtract(int[], long);
descriptor: ([IJ)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=9, args_size=2
start local 0 // int[] big
start local 1 // long val
0: .line 1401
lload 1 /* val */
bipush 32
lushr
l2i
istore 3 /* highWord */
start local 3 // int highWord
1: .line 1402
aload 0 /* big */
arraylength
istore 4 /* bigIndex */
start local 4 // int bigIndex
2: .line 1403
iload 4 /* bigIndex */
newarray 10
astore 5 /* result */
start local 5 // int[] result
3: .line 1404
lconst_0
lstore 6 /* difference */
start local 6 // long difference
4: .line 1406
iload 3 /* highWord */
ifne 8
5: .line 1407
aload 0 /* big */
iinc 4 /* bigIndex */ -1
iload 4 /* bigIndex */
iaload
i2l
ldc 4294967295
land
lload 1 /* val */
lsub
lstore 6 /* difference */
6: .line 1408
aload 5 /* result */
iload 4 /* bigIndex */
lload 6 /* difference */
l2i
iastore
7: .line 1409
goto 12
8: .line 1410
StackMap locals: int[] long int int int[] long
StackMap stack:
aload 0 /* big */
iinc 4 /* bigIndex */ -1
iload 4 /* bigIndex */
iaload
i2l
ldc 4294967295
land
lload 1 /* val */
ldc 4294967295
land
lsub
lstore 6 /* difference */
9: .line 1411
aload 5 /* result */
iload 4 /* bigIndex */
lload 6 /* difference */
l2i
iastore
10: .line 1412
aload 0 /* big */
iinc 4 /* bigIndex */ -1
iload 4 /* bigIndex */
iaload
i2l
ldc 4294967295
land
iload 3 /* highWord */
i2l
ldc 4294967295
land
lsub
lload 6 /* difference */
bipush 32
lshr
ladd
lstore 6 /* difference */
11: .line 1413
aload 5 /* result */
iload 4 /* bigIndex */
lload 6 /* difference */
l2i
iastore
12: .line 1417
StackMap locals:
StackMap stack:
lload 6 /* difference */
bipush 32
lshr
lconst_0
lcmp
ifeq 13
iconst_1
goto 14
StackMap locals:
StackMap stack:
13: iconst_0
StackMap locals:
StackMap stack: int
14: istore 8 /* borrow */
start local 8 // boolean borrow
15: .line 1418
goto 19
16: .line 1419
StackMap locals: int
StackMap stack:
aload 5 /* result */
iinc 4 /* bigIndex */ -1
iload 4 /* bigIndex */
aload 0 /* big */
iload 4 /* bigIndex */
iaload
iconst_1
isub
dup_x2
iastore
iconst_m1
if_icmpne 17
iconst_1
goto 18
StackMap locals:
StackMap stack:
17: iconst_0
StackMap locals:
StackMap stack: int
18: istore 8 /* borrow */
19: .line 1418
StackMap locals:
StackMap stack:
iload 4 /* bigIndex */
ifle 22
iload 8 /* borrow */
ifne 16
20: .line 1422
goto 22
21: .line 1423
StackMap locals:
StackMap stack:
aload 5 /* result */
iinc 4 /* bigIndex */ -1
iload 4 /* bigIndex */
aload 0 /* big */
iload 4 /* bigIndex */
iaload
iastore
22: .line 1422
StackMap locals:
StackMap stack:
iload 4 /* bigIndex */
ifgt 21
23: .line 1425
aload 5 /* result */
areturn
end local 8 // boolean borrow
end local 6 // long difference
end local 5 // int[] result
end local 4 // int bigIndex
end local 3 // int highWord
end local 1 // long val
end local 0 // int[] big
LocalVariableTable:
Start End Slot Name Signature
0 24 0 big [I
0 24 1 val J
1 24 3 highWord I
2 24 4 bigIndex I
3 24 5 result [I
4 24 6 difference J
15 24 8 borrow Z
MethodParameters:
Name Flags
big
val
public java.math.BigInteger subtract(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 1435
aload 1 /* val */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 1436
aload 0 /* this */
areturn
2: .line 1437
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 4
3: .line 1438
aload 1 /* val */
invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
areturn
4: .line 1439
StackMap locals:
StackMap stack:
aload 1 /* val */
getfield java.math.BigInteger.signum:I
aload 0 /* this */
getfield java.math.BigInteger.signum:I
if_icmpeq 6
5: .line 1440
new java.math.BigInteger
dup
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
invokestatic java.math.BigInteger.add:([I[I)[I
aload 0 /* this */
getfield java.math.BigInteger.signum:I
invokespecial java.math.BigInteger.<init>:([II)V
areturn
6: .line 1442
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* val */
invokevirtual java.math.BigInteger.compareMagnitude:(Ljava/math/BigInteger;)I
istore 2 /* cmp */
start local 2 // int cmp
7: .line 1443
iload 2 /* cmp */
ifne 9
8: .line 1444
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
9: .line 1445
StackMap locals: int
StackMap stack:
iload 2 /* cmp */
ifle 10
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
invokestatic java.math.BigInteger.subtract:([I[I)[I
goto 11
10: .line 1446
StackMap locals:
StackMap stack:
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
invokestatic java.math.BigInteger.subtract:([I[I)[I
11: .line 1445
StackMap locals:
StackMap stack: int[]
astore 3 /* resultMag */
start local 3 // int[] resultMag
12: .line 1447
aload 3 /* resultMag */
invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
astore 3 /* resultMag */
13: .line 1448
new java.math.BigInteger
dup
aload 3 /* resultMag */
iload 2 /* cmp */
aload 0 /* this */
getfield java.math.BigInteger.signum:I
if_icmpne 14
iconst_1
goto 15
StackMap locals: java.math.BigInteger java.math.BigInteger int int[]
StackMap stack: new 13 new 13 int[]
14: iconst_m1
StackMap locals: java.math.BigInteger java.math.BigInteger int int[]
StackMap stack: new 13 new 13 int[] int
15: invokespecial java.math.BigInteger.<init>:([II)V
areturn
end local 3 // int[] resultMag
end local 2 // int cmp
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Ljava/math/BigInteger;
0 16 1 val Ljava/math/BigInteger;
7 16 2 cmp I
12 16 3 resultMag [I
MethodParameters:
Name Flags
val
private static int[] subtract(int[], int[]);
descriptor: ([I[I)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=8, args_size=2
start local 0 // int[] big
start local 1 // int[] little
0: .line 1458
aload 0 /* big */
arraylength
istore 2 /* bigIndex */
start local 2 // int bigIndex
1: .line 1459
iload 2 /* bigIndex */
newarray 10
astore 3 /* result */
start local 3 // int[] result
2: .line 1460
aload 1 /* little */
arraylength
istore 4 /* littleIndex */
start local 4 // int littleIndex
3: .line 1461
lconst_0
lstore 5 /* difference */
start local 5 // long difference
4: .line 1464
goto 11
5: .line 1465
StackMap locals: int[] int[] int int[] int long
StackMap stack:
aload 0 /* big */
iinc 2 /* bigIndex */ -1
iload 2 /* bigIndex */
iaload
i2l
ldc 4294967295
land
6: .line 1466
aload 1 /* little */
iinc 4 /* littleIndex */ -1
iload 4 /* littleIndex */
iaload
i2l
ldc 4294967295
land
7: .line 1465
lsub
8: .line 1467
lload 5 /* difference */
bipush 32
lshr
9: .line 1465
ladd
lstore 5 /* difference */
10: .line 1468
aload 3 /* result */
iload 2 /* bigIndex */
lload 5 /* difference */
l2i
iastore
11: .line 1464
StackMap locals:
StackMap stack:
iload 4 /* littleIndex */
ifgt 5
12: .line 1472
lload 5 /* difference */
bipush 32
lshr
lconst_0
lcmp
ifeq 13
iconst_1
goto 14
StackMap locals:
StackMap stack:
13: iconst_0
StackMap locals:
StackMap stack: int
14: istore 7 /* borrow */
start local 7 // boolean borrow
15: .line 1473
goto 19
16: .line 1474
StackMap locals: int
StackMap stack:
aload 3 /* result */
iinc 2 /* bigIndex */ -1
iload 2 /* bigIndex */
aload 0 /* big */
iload 2 /* bigIndex */
iaload
iconst_1
isub
dup_x2
iastore
iconst_m1
if_icmpne 17
iconst_1
goto 18
StackMap locals:
StackMap stack:
17: iconst_0
StackMap locals:
StackMap stack: int
18: istore 7 /* borrow */
19: .line 1473
StackMap locals:
StackMap stack:
iload 2 /* bigIndex */
ifle 22
iload 7 /* borrow */
ifne 16
20: .line 1477
goto 22
21: .line 1478
StackMap locals:
StackMap stack:
aload 3 /* result */
iinc 2 /* bigIndex */ -1
iload 2 /* bigIndex */
aload 0 /* big */
iload 2 /* bigIndex */
iaload
iastore
22: .line 1477
StackMap locals:
StackMap stack:
iload 2 /* bigIndex */
ifgt 21
23: .line 1480
aload 3 /* result */
areturn
end local 7 // boolean borrow
end local 5 // long difference
end local 4 // int littleIndex
end local 3 // int[] result
end local 2 // int bigIndex
end local 1 // int[] little
end local 0 // int[] big
LocalVariableTable:
Start End Slot Name Signature
0 24 0 big [I
0 24 1 little [I
1 24 2 bigIndex I
2 24 3 result [I
3 24 4 littleIndex I
4 24 5 difference J
15 24 7 borrow Z
MethodParameters:
Name Flags
big
little
public java.math.BigInteger multiply(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 1493
aload 0 /* this */
aload 1 /* val */
iconst_0
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;Z)Ljava/math/BigInteger;
areturn
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigInteger;
0 1 1 val Ljava/math/BigInteger;
MethodParameters:
Name Flags
val
private java.math.BigInteger multiply(java.math.BigInteger, boolean);
descriptor: (Ljava/math/BigInteger;Z)Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=7, args_size=3
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
start local 2 // boolean isRecursion
0: .line 1505
aload 1 /* val */
getfield java.math.BigInteger.signum:I
ifeq 1
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 1506
StackMap locals:
StackMap stack:
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
2: .line 1508
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 3 /* xlen */
start local 3 // int xlen
3: .line 1510
aload 1 /* val */
aload 0 /* this */
if_acmpne 5
iload 3 /* xlen */
bipush 20
if_icmple 5
4: .line 1511
aload 0 /* this */
invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
areturn
5: .line 1514
StackMap locals: int
StackMap stack:
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
arraylength
istore 4 /* ylen */
start local 4 // int ylen
6: .line 1516
iload 3 /* xlen */
bipush 80
if_icmplt 7
iload 4 /* ylen */
bipush 80
if_icmpge 19
7: .line 1517
StackMap locals: int
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.signum:I
aload 1 /* val */
getfield java.math.BigInteger.signum:I
if_icmpne 8
iconst_1
goto 9
StackMap locals:
StackMap stack:
8: iconst_m1
StackMap locals:
StackMap stack: int
9: istore 5 /* resultSign */
start local 5 // int resultSign
10: .line 1518
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
arraylength
iconst_1
if_icmpne 12
11: .line 1519
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
iconst_0
iaload
iload 5 /* resultSign */
invokestatic java.math.BigInteger.multiplyByInt:([III)Ljava/math/BigInteger;
areturn
12: .line 1521
StackMap locals: int
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
iconst_1
if_icmpne 14
13: .line 1522
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
iaload
iload 5 /* resultSign */
invokestatic java.math.BigInteger.multiplyByInt:([III)Ljava/math/BigInteger;
areturn
14: .line 1524
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 3 /* xlen */
15: .line 1525
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
iload 4 /* ylen */
aconst_null
16: .line 1524
invokestatic java.math.BigInteger.multiplyToLen:([II[II[I)[I
astore 6 /* result */
start local 6 // int[] result
17: .line 1526
aload 6 /* result */
invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
astore 6 /* result */
18: .line 1527
new java.math.BigInteger
dup
aload 6 /* result */
iload 5 /* resultSign */
invokespecial java.math.BigInteger.<init>:([II)V
areturn
end local 6 // int[] result
end local 5 // int resultSign
19: .line 1529
StackMap locals:
StackMap stack:
iload 3 /* xlen */
sipush 240
if_icmpge 21
iload 4 /* ylen */
sipush 240
if_icmpge 21
20: .line 1530
aload 0 /* this */
aload 1 /* val */
invokestatic java.math.BigInteger.multiplyKaratsuba:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
areturn
21: .line 1577
StackMap locals:
StackMap stack:
iload 2 /* isRecursion */
ifne 27
22: .line 1582
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
invokestatic java.math.BigInteger.bitLength:([II)I
23: .line 1583
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
arraylength
invokestatic java.math.BigInteger.bitLength:([II)I
24: .line 1582
iadd
i2l
25: .line 1584
ldc 2147483648
lcmp
ifle 27
26: .line 1585
invokestatic java.math.BigInteger.reportOverflow:()V
27: .line 1589
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* val */
invokestatic java.math.BigInteger.multiplyToomCook3:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
areturn
end local 4 // int ylen
end local 3 // int xlen
end local 2 // boolean isRecursion
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Ljava/math/BigInteger;
0 28 1 val Ljava/math/BigInteger;
0 28 2 isRecursion Z
3 28 3 xlen I
6 28 4 ylen I
10 19 5 resultSign I
17 19 6 result [I
MethodParameters:
Name Flags
val
isRecursion
private static java.math.BigInteger multiplyByInt(int[], int, int);
descriptor: ([III)Ljava/math/BigInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=13, args_size=3
start local 0 // int[] x
start local 1 // int y
start local 2 // int sign
0: .line 1595
iload 1 /* y */
invokestatic java.lang.Integer.bitCount:(I)I
iconst_1
if_icmpne 2
1: .line 1596
new java.math.BigInteger
dup
aload 0 /* x */
iload 1 /* y */
invokestatic java.lang.Integer.numberOfTrailingZeros:(I)I
invokestatic java.math.BigInteger.shiftLeft:([II)[I
iload 2 /* sign */
invokespecial java.math.BigInteger.<init>:([II)V
areturn
2: .line 1598
StackMap locals:
StackMap stack:
aload 0 /* x */
arraylength
istore 3 /* xlen */
start local 3 // int xlen
3: .line 1599
iload 3 /* xlen */
iconst_1
iadd
newarray 10
astore 4 /* rmag */
start local 4 // int[] rmag
4: .line 1600
lconst_0
lstore 5 /* carry */
start local 5 // long carry
5: .line 1601
iload 1 /* y */
i2l
ldc 4294967295
land
lstore 7 /* yl */
start local 7 // long yl
6: .line 1602
aload 4 /* rmag */
arraylength
iconst_1
isub
istore 9 /* rstart */
start local 9 // int rstart
7: .line 1603
iload 3 /* xlen */
iconst_1
isub
istore 10 /* i */
start local 10 // int i
8: goto 13
9: .line 1604
StackMap locals: int[] int int int int[] long long int int
StackMap stack:
aload 0 /* x */
iload 10 /* i */
iaload
i2l
ldc 4294967295
land
lload 7 /* yl */
lmul
lload 5 /* carry */
ladd
lstore 11 /* product */
start local 11 // long product
10: .line 1605
aload 4 /* rmag */
iload 9 /* rstart */
iinc 9 /* rstart */ -1
lload 11 /* product */
l2i
iastore
11: .line 1606
lload 11 /* product */
bipush 32
lushr
lstore 5 /* carry */
end local 11 // long product
12: .line 1603
iinc 10 /* i */ -1
StackMap locals:
StackMap stack:
13: iload 10 /* i */
ifge 9
end local 10 // int i
14: .line 1608
lload 5 /* carry */
lconst_0
lcmp
ifne 17
15: .line 1609
aload 4 /* rmag */
iconst_1
aload 4 /* rmag */
arraylength
invokestatic java.util.Arrays.copyOfRange:([III)[I
astore 4 /* rmag */
16: .line 1610
goto 18
17: .line 1611
StackMap locals:
StackMap stack:
aload 4 /* rmag */
iload 9 /* rstart */
lload 5 /* carry */
l2i
iastore
18: .line 1613
StackMap locals:
StackMap stack:
new java.math.BigInteger
dup
aload 4 /* rmag */
iload 2 /* sign */
invokespecial java.math.BigInteger.<init>:([II)V
areturn
end local 9 // int rstart
end local 7 // long yl
end local 5 // long carry
end local 4 // int[] rmag
end local 3 // int xlen
end local 2 // int sign
end local 1 // int y
end local 0 // int[] x
LocalVariableTable:
Start End Slot Name Signature
0 19 0 x [I
0 19 1 y I
0 19 2 sign I
3 19 3 xlen I
4 19 4 rmag [I
5 19 5 carry J
6 19 7 yl J
7 19 9 rstart I
8 14 10 i I
10 12 11 product J
MethodParameters:
Name Flags
x
y
sign
java.math.BigInteger multiply(long);
descriptor: (J)Ljava/math/BigInteger;
flags: (0x0000)
Code:
stack=6, locals=17, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // long v
0: .line 1621
lload 1 /* v */
lconst_0
lcmp
ifeq 1
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 1622
StackMap locals:
StackMap stack:
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
2: .line 1623
StackMap locals:
StackMap stack:
lload 1 /* v */
ldc -9223372036854775808
lcmp
ifne 4
3: .line 1624
aload 0 /* this */
lload 1 /* v */
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
areturn
4: .line 1625
StackMap locals:
StackMap stack:
lload 1 /* v */
lconst_0
lcmp
ifle 5
aload 0 /* this */
getfield java.math.BigInteger.signum:I
goto 6
StackMap locals:
StackMap stack:
5: aload 0 /* this */
getfield java.math.BigInteger.signum:I
ineg
StackMap locals:
StackMap stack: int
6: istore 3 /* rsign */
start local 3 // int rsign
7: .line 1626
lload 1 /* v */
lconst_0
lcmp
ifge 9
8: .line 1627
lload 1 /* v */
lneg
lstore 1 /* v */
9: .line 1628
StackMap locals: int
StackMap stack:
lload 1 /* v */
bipush 32
lushr
lstore 4 /* dh */
start local 4 // long dh
10: .line 1629
lload 1 /* v */
ldc 4294967295
land
lstore 6 /* dl */
start local 6 // long dl
11: .line 1631
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 8 /* xlen */
start local 8 // int xlen
12: .line 1632
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
astore 9 /* value */
start local 9 // int[] value
13: .line 1633
lload 4 /* dh */
lconst_0
lcmp
ifne 14
iload 8 /* xlen */
iconst_1
iadd
newarray 10
goto 15
StackMap locals: java.math.BigInteger long int long long int int[]
StackMap stack:
14: iload 8 /* xlen */
iconst_2
iadd
newarray 10
StackMap locals:
StackMap stack: int[]
15: astore 10 /* rmag */
start local 10 // int[] rmag
16: .line 1634
lconst_0
lstore 11 /* carry */
start local 11 // long carry
17: .line 1635
aload 10 /* rmag */
arraylength
iconst_1
isub
istore 13 /* rstart */
start local 13 // int rstart
18: .line 1636
iload 8 /* xlen */
iconst_1
isub
istore 14 /* i */
start local 14 // int i
19: goto 24
20: .line 1637
StackMap locals: java.math.BigInteger long int long long int int[] int[] long int int
StackMap stack:
aload 9 /* value */
iload 14 /* i */
iaload
i2l
ldc 4294967295
land
lload 6 /* dl */
lmul
lload 11 /* carry */
ladd
lstore 15 /* product */
start local 15 // long product
21: .line 1638
aload 10 /* rmag */
iload 13 /* rstart */
iinc 13 /* rstart */ -1
lload 15 /* product */
l2i
iastore
22: .line 1639
lload 15 /* product */
bipush 32
lushr
lstore 11 /* carry */
end local 15 // long product
23: .line 1636
iinc 14 /* i */ -1
StackMap locals:
StackMap stack:
24: iload 14 /* i */
ifge 20
end local 14 // int i
25: .line 1641
aload 10 /* rmag */
iload 13 /* rstart */
lload 11 /* carry */
l2i
iastore
26: .line 1642
lload 4 /* dh */
lconst_0
lcmp
ifeq 41
27: .line 1643
lconst_0
lstore 11 /* carry */
28: .line 1644
aload 10 /* rmag */
arraylength
iconst_2
isub
istore 13 /* rstart */
29: .line 1645
iload 8 /* xlen */
iconst_1
isub
istore 14 /* i */
start local 14 // int i
30: goto 39
31: .line 1646
StackMap locals:
StackMap stack:
aload 9 /* value */
iload 14 /* i */
iaload
i2l
ldc 4294967295
land
lload 4 /* dh */
lmul
32: .line 1647
aload 10 /* rmag */
iload 13 /* rstart */
iaload
i2l
ldc 4294967295
land
33: .line 1646
ladd
34: .line 1647
lload 11 /* carry */
35: .line 1646
ladd
lstore 15 /* product */
start local 15 // long product
36: .line 1648
aload 10 /* rmag */
iload 13 /* rstart */
iinc 13 /* rstart */ -1
lload 15 /* product */
l2i
iastore
37: .line 1649
lload 15 /* product */
bipush 32
lushr
lstore 11 /* carry */
end local 15 // long product
38: .line 1645
iinc 14 /* i */ -1
StackMap locals:
StackMap stack:
39: iload 14 /* i */
ifge 31
end local 14 // int i
40: .line 1651
aload 10 /* rmag */
iconst_0
lload 11 /* carry */
l2i
iastore
41: .line 1653
StackMap locals:
StackMap stack:
lload 11 /* carry */
lconst_0
lcmp
ifne 43
42: .line 1654
aload 10 /* rmag */
iconst_1
aload 10 /* rmag */
arraylength
invokestatic java.util.Arrays.copyOfRange:([III)[I
astore 10 /* rmag */
43: .line 1655
StackMap locals:
StackMap stack:
new java.math.BigInteger
dup
aload 10 /* rmag */
iload 3 /* rsign */
invokespecial java.math.BigInteger.<init>:([II)V
areturn
end local 13 // int rstart
end local 11 // long carry
end local 10 // int[] rmag
end local 9 // int[] value
end local 8 // int xlen
end local 6 // long dl
end local 4 // long dh
end local 3 // int rsign
end local 1 // long v
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 44 0 this Ljava/math/BigInteger;
0 44 1 v J
7 44 3 rsign I
10 44 4 dh J
11 44 6 dl J
12 44 8 xlen I
13 44 9 value [I
16 44 10 rmag [I
17 44 11 carry J
18 44 13 rstart I
19 25 14 i I
21 23 15 product J
30 40 14 i I
36 38 15 product J
MethodParameters:
Name Flags
v
private static int[] multiplyToLen(int[], int, int[], int, int[]);
descriptor: ([II[II[I)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=14, args_size=5
start local 0 // int[] x
start local 1 // int xlen
start local 2 // int[] y
start local 3 // int ylen
start local 4 // int[] z
0: .line 1663
iload 1 /* xlen */
iconst_1
isub
istore 5 /* xstart */
start local 5 // int xstart
1: .line 1664
iload 3 /* ylen */
iconst_1
isub
istore 6 /* ystart */
start local 6 // int ystart
2: .line 1666
aload 4 /* z */
ifnull 3
aload 4 /* z */
arraylength
iload 1 /* xlen */
iload 3 /* ylen */
iadd
if_icmpge 4
3: .line 1667
StackMap locals: int int
StackMap stack:
iload 1 /* xlen */
iload 3 /* ylen */
iadd
newarray 10
astore 4 /* z */
4: .line 1669
StackMap locals:
StackMap stack:
lconst_0
lstore 7 /* carry */
start local 7 // long carry
5: .line 1670
iload 6 /* ystart */
istore 9 /* j */
start local 9 // int j
6: iload 6 /* ystart */
iconst_1
iadd
iload 5 /* xstart */
iadd
istore 10 /* k */
start local 10 // int k
7: goto 16
8: .line 1671
StackMap locals: long int int
StackMap stack:
aload 2 /* y */
iload 9 /* j */
iaload
i2l
ldc 4294967295
land
9: .line 1672
aload 0 /* x */
iload 5 /* xstart */
iaload
i2l
ldc 4294967295
land
10: .line 1671
lmul
11: .line 1672
lload 7 /* carry */
12: .line 1671
ladd
lstore 11 /* product */
start local 11 // long product
13: .line 1673
aload 4 /* z */
iload 10 /* k */
lload 11 /* product */
l2i
iastore
14: .line 1674
lload 11 /* product */
bipush 32
lushr
lstore 7 /* carry */
end local 11 // long product
15: .line 1670
iinc 9 /* j */ -1
iinc 10 /* k */ -1
StackMap locals:
StackMap stack:
16: iload 9 /* j */
ifge 8
end local 10 // int k
end local 9 // int j
17: .line 1676
aload 4 /* z */
iload 5 /* xstart */
lload 7 /* carry */
l2i
iastore
18: .line 1678
iload 5 /* xstart */
iconst_1
isub
istore 9 /* i */
start local 9 // int i
19: goto 37
20: .line 1679
StackMap locals:
StackMap stack:
lconst_0
lstore 7 /* carry */
21: .line 1680
iload 6 /* ystart */
istore 10 /* j */
start local 10 // int j
22: iload 6 /* ystart */
iconst_1
iadd
iload 9 /* i */
iadd
istore 11 /* k */
start local 11 // int k
23: goto 34
24: .line 1681
StackMap locals: int int
StackMap stack:
aload 2 /* y */
iload 10 /* j */
iaload
i2l
ldc 4294967295
land
25: .line 1682
aload 0 /* x */
iload 9 /* i */
iaload
i2l
ldc 4294967295
land
26: .line 1681
lmul
27: .line 1683
aload 4 /* z */
iload 11 /* k */
iaload
i2l
ldc 4294967295
land
28: .line 1681
ladd
29: .line 1683
lload 7 /* carry */
30: .line 1681
ladd
lstore 12 /* product */
start local 12 // long product
31: .line 1684
aload 4 /* z */
iload 11 /* k */
lload 12 /* product */
l2i
iastore
32: .line 1685
lload 12 /* product */
bipush 32
lushr
lstore 7 /* carry */
end local 12 // long product
33: .line 1680
iinc 10 /* j */ -1
iinc 11 /* k */ -1
StackMap locals:
StackMap stack:
34: iload 10 /* j */
ifge 24
end local 11 // int k
end local 10 // int j
35: .line 1687
aload 4 /* z */
iload 9 /* i */
lload 7 /* carry */
l2i
iastore
36: .line 1678
iinc 9 /* i */ -1
StackMap locals:
StackMap stack:
37: iload 9 /* i */
ifge 20
end local 9 // int i
38: .line 1689
aload 4 /* z */
areturn
end local 7 // long carry
end local 6 // int ystart
end local 5 // int xstart
end local 4 // int[] z
end local 3 // int ylen
end local 2 // int[] y
end local 1 // int xlen
end local 0 // int[] x
LocalVariableTable:
Start End Slot Name Signature
0 39 0 x [I
0 39 1 xlen I
0 39 2 y [I
0 39 3 ylen I
0 39 4 z [I
1 39 5 xstart I
2 39 6 ystart I
5 39 7 carry J
6 17 9 j I
7 17 10 k I
13 15 11 product J
19 38 9 i I
22 35 10 j I
23 35 11 k I
31 33 12 product J
MethodParameters:
Name Flags
x
xlen
y
ylen
z
private static java.math.BigInteger multiplyKaratsuba(java.math.BigInteger, java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=13, args_size=2
start local 0 // java.math.BigInteger x
start local 1 // java.math.BigInteger y
0: .line 1708
aload 0 /* x */
getfield java.math.BigInteger.mag:[I
arraylength
istore 2 /* xlen */
start local 2 // int xlen
1: .line 1709
aload 1 /* y */
getfield java.math.BigInteger.mag:[I
arraylength
istore 3 /* ylen */
start local 3 // int ylen
2: .line 1712
iload 2 /* xlen */
iload 3 /* ylen */
invokestatic java.lang.Math.max:(II)I
iconst_1
iadd
iconst_2
idiv
istore 4 /* half */
start local 4 // int half
3: .line 1716
aload 0 /* x */
iload 4 /* half */
invokevirtual java.math.BigInteger.getLower:(I)Ljava/math/BigInteger;
astore 5 /* xl */
start local 5 // java.math.BigInteger xl
4: .line 1717
aload 0 /* x */
iload 4 /* half */
invokevirtual java.math.BigInteger.getUpper:(I)Ljava/math/BigInteger;
astore 6 /* xh */
start local 6 // java.math.BigInteger xh
5: .line 1718
aload 1 /* y */
iload 4 /* half */
invokevirtual java.math.BigInteger.getLower:(I)Ljava/math/BigInteger;
astore 7 /* yl */
start local 7 // java.math.BigInteger yl
6: .line 1719
aload 1 /* y */
iload 4 /* half */
invokevirtual java.math.BigInteger.getUpper:(I)Ljava/math/BigInteger;
astore 8 /* yh */
start local 8 // java.math.BigInteger yh
7: .line 1721
aload 6 /* xh */
aload 8 /* yh */
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 9 /* p1 */
start local 9 // java.math.BigInteger p1
8: .line 1722
aload 5 /* xl */
aload 7 /* yl */
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 10 /* p2 */
start local 10 // java.math.BigInteger p2
9: .line 1725
aload 6 /* xh */
aload 5 /* xl */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 8 /* yh */
aload 7 /* yl */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 11 /* p3 */
start local 11 // java.math.BigInteger p3
10: .line 1728
aload 9 /* p1 */
bipush 32
iload 4 /* half */
imul
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
aload 11 /* p3 */
aload 9 /* p1 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 10 /* p2 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
bipush 32
iload 4 /* half */
imul
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
aload 10 /* p2 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 12 /* result */
start local 12 // java.math.BigInteger result
11: .line 1730
aload 0 /* x */
getfield java.math.BigInteger.signum:I
aload 1 /* y */
getfield java.math.BigInteger.signum:I
if_icmpeq 13
12: .line 1731
aload 12 /* result */
invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
areturn
13: .line 1733
StackMap locals: java.math.BigInteger java.math.BigInteger int int int java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger
StackMap stack:
aload 12 /* result */
areturn
end local 12 // java.math.BigInteger result
end local 11 // java.math.BigInteger p3
end local 10 // java.math.BigInteger p2
end local 9 // java.math.BigInteger p1
end local 8 // java.math.BigInteger yh
end local 7 // java.math.BigInteger yl
end local 6 // java.math.BigInteger xh
end local 5 // java.math.BigInteger xl
end local 4 // int half
end local 3 // int ylen
end local 2 // int xlen
end local 1 // java.math.BigInteger y
end local 0 // java.math.BigInteger x
LocalVariableTable:
Start End Slot Name Signature
0 14 0 x Ljava/math/BigInteger;
0 14 1 y Ljava/math/BigInteger;
1 14 2 xlen I
2 14 3 ylen I
3 14 4 half I
4 14 5 xl Ljava/math/BigInteger;
5 14 6 xh Ljava/math/BigInteger;
6 14 7 yl Ljava/math/BigInteger;
7 14 8 yh Ljava/math/BigInteger;
8 14 9 p1 Ljava/math/BigInteger;
9 14 10 p2 Ljava/math/BigInteger;
10 14 11 p3 Ljava/math/BigInteger;
11 14 12 result Ljava/math/BigInteger;
MethodParameters:
Name Flags
x
y
private static java.math.BigInteger multiplyToomCook3(java.math.BigInteger, java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=25, args_size=2
start local 0 // java.math.BigInteger a
start local 1 // java.math.BigInteger b
0: .line 1766
aload 0 /* a */
getfield java.math.BigInteger.mag:[I
arraylength
istore 2 /* alen */
start local 2 // int alen
1: .line 1767
aload 1 /* b */
getfield java.math.BigInteger.mag:[I
arraylength
istore 3 /* blen */
start local 3 // int blen
2: .line 1769
iload 2 /* alen */
iload 3 /* blen */
invokestatic java.lang.Math.max:(II)I
istore 4 /* largest */
start local 4 // int largest
3: .line 1772
iload 4 /* largest */
iconst_2
iadd
iconst_3
idiv
istore 5 /* k */
start local 5 // int k
4: .line 1775
iload 4 /* largest */
iconst_2
iload 5 /* k */
imul
isub
istore 6 /* r */
start local 6 // int r
5: .line 1780
aload 0 /* a */
iload 5 /* k */
iload 6 /* r */
iconst_0
iload 4 /* largest */
invokevirtual java.math.BigInteger.getToomSlice:(IIII)Ljava/math/BigInteger;
astore 9 /* a2 */
start local 9 // java.math.BigInteger a2
6: .line 1781
aload 0 /* a */
iload 5 /* k */
iload 6 /* r */
iconst_1
iload 4 /* largest */
invokevirtual java.math.BigInteger.getToomSlice:(IIII)Ljava/math/BigInteger;
astore 8 /* a1 */
start local 8 // java.math.BigInteger a1
7: .line 1782
aload 0 /* a */
iload 5 /* k */
iload 6 /* r */
iconst_2
iload 4 /* largest */
invokevirtual java.math.BigInteger.getToomSlice:(IIII)Ljava/math/BigInteger;
astore 7 /* a0 */
start local 7 // java.math.BigInteger a0
8: .line 1783
aload 1 /* b */
iload 5 /* k */
iload 6 /* r */
iconst_0
iload 4 /* largest */
invokevirtual java.math.BigInteger.getToomSlice:(IIII)Ljava/math/BigInteger;
astore 12 /* b2 */
start local 12 // java.math.BigInteger b2
9: .line 1784
aload 1 /* b */
iload 5 /* k */
iload 6 /* r */
iconst_1
iload 4 /* largest */
invokevirtual java.math.BigInteger.getToomSlice:(IIII)Ljava/math/BigInteger;
astore 11 /* b1 */
start local 11 // java.math.BigInteger b1
10: .line 1785
aload 1 /* b */
iload 5 /* k */
iload 6 /* r */
iconst_2
iload 4 /* largest */
invokevirtual java.math.BigInteger.getToomSlice:(IIII)Ljava/math/BigInteger;
astore 10 /* b0 */
start local 10 // java.math.BigInteger b0
11: .line 1789
aload 7 /* a0 */
aload 10 /* b0 */
iconst_1
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;Z)Ljava/math/BigInteger;
astore 13 /* v0 */
start local 13 // java.math.BigInteger v0
12: .line 1790
aload 9 /* a2 */
aload 7 /* a0 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 21 /* da1 */
start local 21 // java.math.BigInteger da1
13: .line 1791
aload 12 /* b2 */
aload 10 /* b0 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 22 /* db1 */
start local 22 // java.math.BigInteger db1
14: .line 1792
aload 21 /* da1 */
aload 8 /* a1 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 22 /* db1 */
aload 11 /* b1 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
iconst_1
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;Z)Ljava/math/BigInteger;
astore 16 /* vm1 */
start local 16 // java.math.BigInteger vm1
15: .line 1793
aload 21 /* da1 */
aload 8 /* a1 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 21 /* da1 */
16: .line 1794
aload 22 /* db1 */
aload 11 /* b1 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 22 /* db1 */
17: .line 1795
aload 21 /* da1 */
aload 22 /* db1 */
iconst_1
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;Z)Ljava/math/BigInteger;
astore 14 /* v1 */
start local 14 // java.math.BigInteger v1
18: .line 1796
aload 21 /* da1 */
aload 9 /* a2 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
iconst_1
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
aload 7 /* a0 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
19: .line 1797
aload 22 /* db1 */
aload 12 /* b2 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
iconst_1
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
aload 10 /* b0 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
iconst_1
20: .line 1796
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;Z)Ljava/math/BigInteger;
astore 15 /* v2 */
start local 15 // java.math.BigInteger v2
21: .line 1798
aload 9 /* a2 */
aload 12 /* b2 */
iconst_1
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;Z)Ljava/math/BigInteger;
astore 17 /* vinf */
start local 17 // java.math.BigInteger vinf
22: .line 1806
aload 15 /* v2 */
aload 16 /* vm1 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.exactDivideBy3:()Ljava/math/BigInteger;
astore 19 /* t2 */
start local 19 // java.math.BigInteger t2
23: .line 1807
aload 14 /* v1 */
aload 16 /* vm1 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
iconst_1
invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
astore 20 /* tm1 */
start local 20 // java.math.BigInteger tm1
24: .line 1808
aload 14 /* v1 */
aload 13 /* v0 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 18 /* t1 */
start local 18 // java.math.BigInteger t1
25: .line 1809
aload 19 /* t2 */
aload 18 /* t1 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
iconst_1
invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
astore 19 /* t2 */
26: .line 1810
aload 18 /* t1 */
aload 20 /* tm1 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 17 /* vinf */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 18 /* t1 */
27: .line 1811
aload 19 /* t2 */
aload 17 /* vinf */
iconst_1
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 19 /* t2 */
28: .line 1812
aload 20 /* tm1 */
aload 19 /* t2 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 20 /* tm1 */
29: .line 1815
iload 5 /* k */
bipush 32
imul
istore 23 /* ss */
start local 23 // int ss
30: .line 1817
aload 17 /* vinf */
iload 23 /* ss */
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
aload 19 /* t2 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
iload 23 /* ss */
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
aload 18 /* t1 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
iload 23 /* ss */
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
aload 20 /* tm1 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
iload 23 /* ss */
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
aload 13 /* v0 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 24 /* result */
start local 24 // java.math.BigInteger result
31: .line 1819
aload 0 /* a */
getfield java.math.BigInteger.signum:I
aload 1 /* b */
getfield java.math.BigInteger.signum:I
if_icmpeq 33
32: .line 1820
aload 24 /* result */
invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
areturn
33: .line 1822
StackMap locals: java.math.BigInteger java.math.BigInteger int int int int int java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger int java.math.BigInteger
StackMap stack:
aload 24 /* result */
areturn
end local 24 // java.math.BigInteger result
end local 23 // int ss
end local 22 // java.math.BigInteger db1
end local 21 // java.math.BigInteger da1
end local 20 // java.math.BigInteger tm1
end local 19 // java.math.BigInteger t2
end local 18 // java.math.BigInteger t1
end local 17 // java.math.BigInteger vinf
end local 16 // java.math.BigInteger vm1
end local 15 // java.math.BigInteger v2
end local 14 // java.math.BigInteger v1
end local 13 // java.math.BigInteger v0
end local 12 // java.math.BigInteger b2
end local 11 // java.math.BigInteger b1
end local 10 // java.math.BigInteger b0
end local 9 // java.math.BigInteger a2
end local 8 // java.math.BigInteger a1
end local 7 // java.math.BigInteger a0
end local 6 // int r
end local 5 // int k
end local 4 // int largest
end local 3 // int blen
end local 2 // int alen
end local 1 // java.math.BigInteger b
end local 0 // java.math.BigInteger a
LocalVariableTable:
Start End Slot Name Signature
0 34 0 a Ljava/math/BigInteger;
0 34 1 b Ljava/math/BigInteger;
1 34 2 alen I
2 34 3 blen I
3 34 4 largest I
4 34 5 k I
5 34 6 r I
8 34 7 a0 Ljava/math/BigInteger;
7 34 8 a1 Ljava/math/BigInteger;
6 34 9 a2 Ljava/math/BigInteger;
11 34 10 b0 Ljava/math/BigInteger;
10 34 11 b1 Ljava/math/BigInteger;
9 34 12 b2 Ljava/math/BigInteger;
12 34 13 v0 Ljava/math/BigInteger;
18 34 14 v1 Ljava/math/BigInteger;
21 34 15 v2 Ljava/math/BigInteger;
15 34 16 vm1 Ljava/math/BigInteger;
22 34 17 vinf Ljava/math/BigInteger;
25 34 18 t1 Ljava/math/BigInteger;
23 34 19 t2 Ljava/math/BigInteger;
24 34 20 tm1 Ljava/math/BigInteger;
13 34 21 da1 Ljava/math/BigInteger;
14 34 22 db1 Ljava/math/BigInteger;
30 34 23 ss I
31 34 24 result Ljava/math/BigInteger;
MethodParameters:
Name Flags
a
b
private java.math.BigInteger getToomSlice(int, int, int, int);
descriptor: (IIII)Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=11, args_size=5
start local 0 // java.math.BigInteger this
start local 1 // int lowerSize
start local 2 // int upperSize
start local 3 // int slice
start local 4 // int fullsize
0: .line 1844
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 8 /* len */
start local 8 // int len
1: .line 1845
iload 4 /* fullsize */
iload 8 /* len */
isub
istore 9 /* offset */
start local 9 // int offset
2: .line 1847
iload 3 /* slice */
ifne 6
3: .line 1848
iconst_0
iload 9 /* offset */
isub
istore 5 /* start */
start local 5 // int start
4: .line 1849
iload 2 /* upperSize */
iconst_1
isub
iload 9 /* offset */
isub
istore 6 /* end */
start local 6 // int end
5: .line 1850
goto 8
end local 6 // int end
end local 5 // int start
6: .line 1851
StackMap locals: java.math.BigInteger int int int int top top top int int
StackMap stack:
iload 2 /* upperSize */
iload 3 /* slice */
iconst_1
isub
iload 1 /* lowerSize */
imul
iadd
iload 9 /* offset */
isub
istore 5 /* start */
start local 5 // int start
7: .line 1852
iload 5 /* start */
iload 1 /* lowerSize */
iadd
iconst_1
isub
istore 6 /* end */
start local 6 // int end
8: .line 1855
StackMap locals: java.math.BigInteger int int int int int int top int int
StackMap stack:
iload 5 /* start */
ifge 10
9: .line 1856
iconst_0
istore 5 /* start */
10: .line 1858
StackMap locals:
StackMap stack:
iload 6 /* end */
ifge 12
11: .line 1859
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
12: .line 1862
StackMap locals:
StackMap stack:
iload 6 /* end */
iload 5 /* start */
isub
iconst_1
iadd
istore 7 /* sliceSize */
start local 7 // int sliceSize
13: .line 1864
iload 7 /* sliceSize */
ifgt 15
14: .line 1865
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
15: .line 1870
StackMap locals: java.math.BigInteger int int int int int int int int int
StackMap stack:
iload 5 /* start */
ifne 17
iload 7 /* sliceSize */
iload 8 /* len */
if_icmplt 17
16: .line 1871
aload 0 /* this */
invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
areturn
17: .line 1874
StackMap locals:
StackMap stack:
iload 7 /* sliceSize */
newarray 10
astore 10 /* intSlice */
start local 10 // int[] intSlice
18: .line 1875
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 5 /* start */
aload 10 /* intSlice */
iconst_0
iload 7 /* sliceSize */
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
19: .line 1877
new java.math.BigInteger
dup
aload 10 /* intSlice */
invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
iconst_1
invokespecial java.math.BigInteger.<init>:([II)V
areturn
end local 10 // int[] intSlice
end local 9 // int offset
end local 8 // int len
end local 7 // int sliceSize
end local 6 // int end
end local 5 // int start
end local 4 // int fullsize
end local 3 // int slice
end local 2 // int upperSize
end local 1 // int lowerSize
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Ljava/math/BigInteger;
0 20 1 lowerSize I
0 20 2 upperSize I
0 20 3 slice I
0 20 4 fullsize I
4 6 5 start I
7 20 5 start I
5 6 6 end I
8 20 6 end I
13 20 7 sliceSize I
1 20 8 len I
2 20 9 offset I
18 20 10 intSlice [I
MethodParameters:
Name Flags
lowerSize
upperSize
slice
fullsize
private java.math.BigInteger exactDivideBy3();
descriptor: ()Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=12, args_size=1
start local 0 // java.math.BigInteger this
0: .line 1889
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 1 /* len */
start local 1 // int len
1: .line 1890
iload 1 /* len */
newarray 10
astore 2 /* result */
start local 2 // int[] result
2: .line 1892
lconst_0
lstore 9 /* borrow */
start local 9 // long borrow
3: .line 1893
iload 1 /* len */
iconst_1
isub
istore 11 /* i */
start local 11 // int i
4: goto 18
5: .line 1894
StackMap locals: java.math.BigInteger int int[] top top top top top top long int
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 11 /* i */
iaload
i2l
ldc 4294967295
land
lstore 3 /* x */
start local 3 // long x
6: .line 1895
lload 3 /* x */
lload 9 /* borrow */
lsub
lstore 5 /* w */
start local 5 // long w
7: .line 1896
lload 9 /* borrow */
lload 3 /* x */
lcmp
ifle 10
8: .line 1897
lconst_1
lstore 9 /* borrow */
9: .line 1898
goto 11
10: .line 1899
StackMap locals: java.math.BigInteger int int[] long long top top long int
StackMap stack:
lconst_0
lstore 9 /* borrow */
11: .line 1905
StackMap locals:
StackMap stack:
lload 5 /* w */
ldc 2863311531
lmul
ldc 4294967295
land
lstore 7 /* q */
start local 7 // long q
12: .line 1906
aload 2 /* result */
iload 11 /* i */
lload 7 /* q */
l2i
iastore
13: .line 1910
lload 7 /* q */
ldc 1431655766
lcmp
iflt 17
14: .line 1911
lload 9 /* borrow */
lconst_1
ladd
lstore 9 /* borrow */
15: .line 1912
lload 7 /* q */
ldc 2863311531
lcmp
iflt 17
16: .line 1913
lload 9 /* borrow */
lconst_1
ladd
lstore 9 /* borrow */
17: .line 1893
StackMap locals: java.math.BigInteger int int[] long long long long int
StackMap stack:
iinc 11 /* i */ -1
end local 7 // long q
end local 5 // long w
end local 3 // long x
StackMap locals: java.math.BigInteger int int[] top top top top top top long int
StackMap stack:
18: iload 11 /* i */
ifge 5
end local 11 // int i
19: .line 1916
aload 2 /* result */
invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
astore 2 /* result */
20: .line 1917
new java.math.BigInteger
dup
aload 2 /* result */
aload 0 /* this */
getfield java.math.BigInteger.signum:I
invokespecial java.math.BigInteger.<init>:([II)V
areturn
end local 9 // long borrow
end local 2 // int[] result
end local 1 // int len
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Ljava/math/BigInteger;
1 21 1 len I
2 21 2 result [I
6 18 3 x J
7 18 5 w J
12 18 7 q J
3 21 9 borrow J
4 19 11 i I
private java.math.BigInteger getLower(int);
descriptor: (I)Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=4, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // int n
0: .line 1925
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 2 /* len */
start local 2 // int len
1: .line 1927
iload 2 /* len */
iload 1 /* n */
if_icmpgt 3
2: .line 1928
aload 0 /* this */
invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
areturn
3: .line 1931
StackMap locals: int
StackMap stack:
iload 1 /* n */
newarray 10
astore 3 /* lowerInts */
start local 3 // int[] lowerInts
4: .line 1932
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 2 /* len */
iload 1 /* n */
isub
aload 3 /* lowerInts */
iconst_0
iload 1 /* n */
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
5: .line 1934
new java.math.BigInteger
dup
aload 3 /* lowerInts */
invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
iconst_1
invokespecial java.math.BigInteger.<init>:([II)V
areturn
end local 3 // int[] lowerInts
end local 2 // int len
end local 1 // int n
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljava/math/BigInteger;
0 6 1 n I
1 6 2 len I
4 6 3 lowerInts [I
MethodParameters:
Name Flags
n
private java.math.BigInteger getUpper(int);
descriptor: (I)Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=5, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // int n
0: .line 1943
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 2 /* len */
start local 2 // int len
1: .line 1945
iload 2 /* len */
iload 1 /* n */
if_icmpgt 3
2: .line 1946
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
3: .line 1949
StackMap locals: int
StackMap stack:
iload 2 /* len */
iload 1 /* n */
isub
istore 3 /* upperLen */
start local 3 // int upperLen
4: .line 1950
iload 3 /* upperLen */
newarray 10
astore 4 /* upperInts */
start local 4 // int[] upperInts
5: .line 1951
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
aload 4 /* upperInts */
iconst_0
iload 3 /* upperLen */
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
6: .line 1953
new java.math.BigInteger
dup
aload 4 /* upperInts */
invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
iconst_1
invokespecial java.math.BigInteger.<init>:([II)V
areturn
end local 4 // int[] upperInts
end local 3 // int upperLen
end local 2 // int len
end local 1 // int n
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljava/math/BigInteger;
0 7 1 n I
1 7 2 len I
4 7 3 upperLen I
5 7 4 upperInts [I
MethodParameters:
Name Flags
n
private java.math.BigInteger square();
descriptor: ()Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 // java.math.BigInteger this
0: .line 1964
aload 0 /* this */
iconst_0
invokevirtual java.math.BigInteger.square:(Z)Ljava/math/BigInteger;
areturn
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigInteger;
private java.math.BigInteger square(boolean);
descriptor: (Z)Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=4, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // boolean isRecursion
0: .line 1975
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 1976
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
2: .line 1978
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 2 /* len */
start local 2 // int len
3: .line 1980
iload 2 /* len */
sipush 128
if_icmpge 6
4: .line 1981
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 2 /* len */
aconst_null
invokestatic java.math.BigInteger.squareToLen:([II[I)[I
astore 3 /* z */
start local 3 // int[] z
5: .line 1982
new java.math.BigInteger
dup
aload 3 /* z */
invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
iconst_1
invokespecial java.math.BigInteger.<init>:([II)V
areturn
end local 3 // int[] z
6: .line 1984
StackMap locals: int
StackMap stack:
iload 2 /* len */
sipush 216
if_icmpge 8
7: .line 1985
aload 0 /* this */
invokevirtual java.math.BigInteger.squareKaratsuba:()Ljava/math/BigInteger;
areturn
8: .line 1990
StackMap locals:
StackMap stack:
iload 1 /* isRecursion */
ifne 11
9: .line 1991
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
invokestatic java.math.BigInteger.bitLength:([II)I
i2l
ldc 1073741824
lcmp
ifle 11
10: .line 1992
invokestatic java.math.BigInteger.reportOverflow:()V
11: .line 1996
StackMap locals:
StackMap stack:
aload 0 /* this */
invokevirtual java.math.BigInteger.squareToomCook3:()Ljava/math/BigInteger;
areturn
end local 2 // int len
end local 1 // boolean isRecursion
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Ljava/math/BigInteger;
0 12 1 isRecursion Z
3 12 2 len I
5 6 3 z [I
MethodParameters:
Name Flags
isRecursion
private static final int[] squareToLen(int[], int, int[]);
descriptor: ([II[I)[I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Code:
stack=4, locals=4, args_size=3
start local 0 // int[] x
start local 1 // int len
start local 2 // int[] z
0: .line 2006
iload 1 /* len */
iconst_1
ishl
istore 3 /* zlen */
start local 3 // int zlen
1: .line 2007
aload 2 /* z */
ifnull 2
aload 2 /* z */
arraylength
iload 3 /* zlen */
if_icmpge 3
2: .line 2008
StackMap locals: int
StackMap stack:
iload 3 /* zlen */
newarray 10
astore 2 /* z */
3: .line 2011
StackMap locals:
StackMap stack:
aload 0 /* x */
iload 1 /* len */
aload 2 /* z */
iload 3 /* zlen */
invokestatic java.math.BigInteger.implSquareToLenChecks:([II[II)V
4: .line 2012
aload 0 /* x */
iload 1 /* len */
aload 2 /* z */
iload 3 /* zlen */
invokestatic java.math.BigInteger.implSquareToLen:([II[II)[I
areturn
end local 3 // int zlen
end local 2 // int[] z
end local 1 // int len
end local 0 // int[] x
LocalVariableTable:
Start End Slot Name Signature
0 5 0 x [I
0 5 1 len I
0 5 2 z [I
1 5 3 zlen I
MethodParameters:
Name Flags
x
len
z
private static void implSquareToLenChecks(int[], int, int[], int);
descriptor: ([II[II)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=4, args_size=4
start local 0 // int[] x
start local 1 // int len
start local 2 // int[] z
start local 3 // int zlen
0: .line 2019
iload 1 /* len */
iconst_1
if_icmpge 2
1: .line 2020
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "invalid input length: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 1 /* len */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: .line 2022
StackMap locals:
StackMap stack:
iload 1 /* len */
aload 0 /* x */
arraylength
if_icmple 6
3: .line 2023
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "input length out of bound: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
4: .line 2024
iload 1 /* len */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " > "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0 /* x */
arraylength
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
5: .line 2023
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
6: .line 2026
StackMap locals:
StackMap stack:
iload 1 /* len */
iconst_2
imul
aload 2 /* z */
arraylength
if_icmple 10
7: .line 2027
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "input length out of bound: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
8: .line 2028
iload 1 /* len */
iconst_2
imul
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " > "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2 /* z */
arraylength
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
9: .line 2027
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
10: .line 2030
StackMap locals:
StackMap stack:
iload 3 /* zlen */
iconst_1
if_icmpge 12
11: .line 2031
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "invalid input length: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 3 /* zlen */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
12: .line 2033
StackMap locals:
StackMap stack:
iload 3 /* zlen */
aload 2 /* z */
arraylength
if_icmple 16
13: .line 2034
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "input length out of bound: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
14: .line 2035
iload 1 /* len */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " > "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2 /* z */
arraylength
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
15: .line 2034
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
16: .line 2037
StackMap locals:
StackMap stack:
return
end local 3 // int zlen
end local 2 // int[] z
end local 1 // int len
end local 0 // int[] x
LocalVariableTable:
Start End Slot Name Signature
0 17 0 x [I
0 17 1 len I
0 17 2 z [I
0 17 3 zlen I
Exceptions:
throws java.lang.RuntimeException
MethodParameters:
Name Flags
x
len
z
zlen
private static final int[] implSquareToLen(int[], int, int[], int);
descriptor: ([II[II)[I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Code:
stack=6, locals=11, args_size=4
start local 0 // int[] x
start local 1 // int len
start local 2 // int[] z
start local 3 // int zlen
0: .line 2079
iconst_0
istore 4 /* lastProductLowWord */
start local 4 // int lastProductLowWord
1: .line 2080
iconst_0
istore 5 /* j */
start local 5 // int j
2: iconst_0
istore 6 /* i */
start local 6 // int i
3: goto 10
4: .line 2081
StackMap locals: int int int
StackMap stack:
aload 0 /* x */
iload 5 /* j */
iaload
i2l
ldc 4294967295
land
lstore 7 /* piece */
start local 7 // long piece
5: .line 2082
lload 7 /* piece */
lload 7 /* piece */
lmul
lstore 9 /* product */
start local 9 // long product
6: .line 2083
aload 2 /* z */
iload 6 /* i */
iinc 6 /* i */ 1
iload 4 /* lastProductLowWord */
bipush 31
ishl
lload 9 /* product */
bipush 33
lushr
l2i
ior
iastore
7: .line 2084
aload 2 /* z */
iload 6 /* i */
iinc 6 /* i */ 1
lload 9 /* product */
iconst_1
lushr
l2i
iastore
8: .line 2085
lload 9 /* product */
l2i
istore 4 /* lastProductLowWord */
end local 9 // long product
end local 7 // long piece
9: .line 2080
iinc 5 /* j */ 1
StackMap locals:
StackMap stack:
10: iload 5 /* j */
iload 1 /* len */
if_icmplt 4
end local 6 // int i
end local 5 // int j
11: .line 2089
iload 1 /* len */
istore 5 /* i */
start local 5 // int i
12: iconst_1
istore 6 /* offset */
start local 6 // int offset
13: goto 18
14: .line 2090
StackMap locals:
StackMap stack:
aload 0 /* x */
iload 5 /* i */
iconst_1
isub
iaload
istore 7 /* t */
start local 7 // int t
15: .line 2091
aload 2 /* z */
aload 0 /* x */
iload 6 /* offset */
iload 5 /* i */
iconst_1
isub
iload 7 /* t */
invokestatic java.math.BigInteger.mulAdd:([I[IIII)I
istore 7 /* t */
16: .line 2092
aload 2 /* z */
iload 6 /* offset */
iconst_1
isub
iload 5 /* i */
iload 7 /* t */
invokestatic java.math.BigInteger.addOne:([IIII)I
pop
end local 7 // int t
17: .line 2089
iinc 5 /* i */ -1
iinc 6 /* offset */ 2
StackMap locals:
StackMap stack:
18: iload 5 /* i */
ifgt 14
end local 6 // int offset
end local 5 // int i
19: .line 2096
aload 2 /* z */
iload 3 /* zlen */
iconst_1
invokestatic java.math.BigInteger.primitiveLeftShift:([III)V
20: .line 2097
aload 2 /* z */
iload 3 /* zlen */
iconst_1
isub
dup2
iaload
aload 0 /* x */
iload 1 /* len */
iconst_1
isub
iaload
iconst_1
iand
ior
iastore
21: .line 2099
aload 2 /* z */
areturn
end local 4 // int lastProductLowWord
end local 3 // int zlen
end local 2 // int[] z
end local 1 // int len
end local 0 // int[] x
LocalVariableTable:
Start End Slot Name Signature
0 22 0 x [I
0 22 1 len I
0 22 2 z [I
0 22 3 zlen I
1 22 4 lastProductLowWord I
2 11 5 j I
3 11 6 i I
5 9 7 piece J
6 9 9 product J
12 19 5 i I
13 19 6 offset I
15 17 7 t I
MethodParameters:
Name Flags
x
len
z
zlen
private java.math.BigInteger squareKaratsuba();
descriptor: ()Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=6, args_size=1
start local 0 // java.math.BigInteger this
0: .line 2110
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
iconst_1
iadd
iconst_2
idiv
istore 1 /* half */
start local 1 // int half
1: .line 2112
aload 0 /* this */
iload 1 /* half */
invokevirtual java.math.BigInteger.getLower:(I)Ljava/math/BigInteger;
astore 2 /* xl */
start local 2 // java.math.BigInteger xl
2: .line 2113
aload 0 /* this */
iload 1 /* half */
invokevirtual java.math.BigInteger.getUpper:(I)Ljava/math/BigInteger;
astore 3 /* xh */
start local 3 // java.math.BigInteger xh
3: .line 2115
aload 3 /* xh */
invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
astore 4 /* xhs */
start local 4 // java.math.BigInteger xhs
4: .line 2116
aload 2 /* xl */
invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
astore 5 /* xls */
start local 5 // java.math.BigInteger xls
5: .line 2119
aload 4 /* xhs */
iload 1 /* half */
bipush 32
imul
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
aload 2 /* xl */
aload 3 /* xh */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
aload 4 /* xhs */
aload 5 /* xls */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
iload 1 /* half */
bipush 32
imul
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
aload 5 /* xls */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
areturn
end local 5 // java.math.BigInteger xls
end local 4 // java.math.BigInteger xhs
end local 3 // java.math.BigInteger xh
end local 2 // java.math.BigInteger xl
end local 1 // int half
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljava/math/BigInteger;
1 6 1 half I
2 6 2 xl Ljava/math/BigInteger;
3 6 3 xh Ljava/math/BigInteger;
4 6 4 xhs Ljava/math/BigInteger;
5 6 5 xls Ljava/math/BigInteger;
private java.math.BigInteger squareToomCook3();
descriptor: ()Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=17, args_size=1
start local 0 // java.math.BigInteger this
0: .line 2130
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 1 /* len */
start local 1 // int len
1: .line 2133
iload 1 /* len */
iconst_2
iadd
iconst_3
idiv
istore 2 /* k */
start local 2 // int k
2: .line 2136
iload 1 /* len */
iconst_2
iload 2 /* k */
imul
isub
istore 3 /* r */
start local 3 // int r
3: .line 2141
aload 0 /* this */
iload 2 /* k */
iload 3 /* r */
iconst_0
iload 1 /* len */
invokevirtual java.math.BigInteger.getToomSlice:(IIII)Ljava/math/BigInteger;
astore 6 /* a2 */
start local 6 // java.math.BigInteger a2
4: .line 2142
aload 0 /* this */
iload 2 /* k */
iload 3 /* r */
iconst_1
iload 1 /* len */
invokevirtual java.math.BigInteger.getToomSlice:(IIII)Ljava/math/BigInteger;
astore 5 /* a1 */
start local 5 // java.math.BigInteger a1
5: .line 2143
aload 0 /* this */
iload 2 /* k */
iload 3 /* r */
iconst_2
iload 1 /* len */
invokevirtual java.math.BigInteger.getToomSlice:(IIII)Ljava/math/BigInteger;
astore 4 /* a0 */
start local 4 // java.math.BigInteger a0
6: .line 2146
aload 4 /* a0 */
iconst_1
invokevirtual java.math.BigInteger.square:(Z)Ljava/math/BigInteger;
astore 7 /* v0 */
start local 7 // java.math.BigInteger v0
7: .line 2147
aload 6 /* a2 */
aload 4 /* a0 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 15 /* da1 */
start local 15 // java.math.BigInteger da1
8: .line 2148
aload 15 /* da1 */
aload 5 /* a1 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
iconst_1
invokevirtual java.math.BigInteger.square:(Z)Ljava/math/BigInteger;
astore 10 /* vm1 */
start local 10 // java.math.BigInteger vm1
9: .line 2149
aload 15 /* da1 */
aload 5 /* a1 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 15 /* da1 */
10: .line 2150
aload 15 /* da1 */
iconst_1
invokevirtual java.math.BigInteger.square:(Z)Ljava/math/BigInteger;
astore 8 /* v1 */
start local 8 // java.math.BigInteger v1
11: .line 2151
aload 6 /* a2 */
iconst_1
invokevirtual java.math.BigInteger.square:(Z)Ljava/math/BigInteger;
astore 11 /* vinf */
start local 11 // java.math.BigInteger vinf
12: .line 2152
aload 15 /* da1 */
aload 6 /* a2 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
iconst_1
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
aload 4 /* a0 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
iconst_1
invokevirtual java.math.BigInteger.square:(Z)Ljava/math/BigInteger;
astore 9 /* v2 */
start local 9 // java.math.BigInteger v2
13: .line 2160
aload 9 /* v2 */
aload 10 /* vm1 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.exactDivideBy3:()Ljava/math/BigInteger;
astore 13 /* t2 */
start local 13 // java.math.BigInteger t2
14: .line 2161
aload 8 /* v1 */
aload 10 /* vm1 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
iconst_1
invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
astore 14 /* tm1 */
start local 14 // java.math.BigInteger tm1
15: .line 2162
aload 8 /* v1 */
aload 7 /* v0 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 12 /* t1 */
start local 12 // java.math.BigInteger t1
16: .line 2163
aload 13 /* t2 */
aload 12 /* t1 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
iconst_1
invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
astore 13 /* t2 */
17: .line 2164
aload 12 /* t1 */
aload 14 /* tm1 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 11 /* vinf */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 12 /* t1 */
18: .line 2165
aload 13 /* t2 */
aload 11 /* vinf */
iconst_1
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 13 /* t2 */
19: .line 2166
aload 14 /* tm1 */
aload 13 /* t2 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 14 /* tm1 */
20: .line 2169
iload 2 /* k */
bipush 32
imul
istore 16 /* ss */
start local 16 // int ss
21: .line 2171
aload 11 /* vinf */
iload 16 /* ss */
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
aload 13 /* t2 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
iload 16 /* ss */
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
aload 12 /* t1 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
iload 16 /* ss */
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
aload 14 /* tm1 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
iload 16 /* ss */
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
aload 7 /* v0 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
areturn
end local 16 // int ss
end local 15 // java.math.BigInteger da1
end local 14 // java.math.BigInteger tm1
end local 13 // java.math.BigInteger t2
end local 12 // java.math.BigInteger t1
end local 11 // java.math.BigInteger vinf
end local 10 // java.math.BigInteger vm1
end local 9 // java.math.BigInteger v2
end local 8 // java.math.BigInteger v1
end local 7 // java.math.BigInteger v0
end local 6 // java.math.BigInteger a2
end local 5 // java.math.BigInteger a1
end local 4 // java.math.BigInteger a0
end local 3 // int r
end local 2 // int k
end local 1 // int len
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Ljava/math/BigInteger;
1 22 1 len I
2 22 2 k I
3 22 3 r I
6 22 4 a0 Ljava/math/BigInteger;
5 22 5 a1 Ljava/math/BigInteger;
4 22 6 a2 Ljava/math/BigInteger;
7 22 7 v0 Ljava/math/BigInteger;
11 22 8 v1 Ljava/math/BigInteger;
13 22 9 v2 Ljava/math/BigInteger;
9 22 10 vm1 Ljava/math/BigInteger;
12 22 11 vinf Ljava/math/BigInteger;
16 22 12 t1 Ljava/math/BigInteger;
14 22 13 t2 Ljava/math/BigInteger;
15 22 14 tm1 Ljava/math/BigInteger;
8 22 15 da1 Ljava/math/BigInteger;
21 22 16 ss I
public java.math.BigInteger divide(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 2184
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
arraylength
bipush 80
if_icmplt 2
1: .line 2185
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
arraylength
isub
bipush 40
if_icmpge 3
2: .line 2186
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* val */
invokevirtual java.math.BigInteger.divideKnuth:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
areturn
3: .line 2188
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* val */
invokevirtual java.math.BigInteger.divideBurnikelZiegler:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
areturn
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/math/BigInteger;
0 4 1 val Ljava/math/BigInteger;
MethodParameters:
Name Flags
val
private java.math.BigInteger divideKnuth(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 2201
new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 2 /* q */
start local 2 // java.math.MutableBigInteger q
1: .line 2202
new java.math.MutableBigInteger
dup
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
invokespecial java.math.MutableBigInteger.<init>:([I)V
astore 3 /* a */
start local 3 // java.math.MutableBigInteger a
2: .line 2203
new java.math.MutableBigInteger
dup
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
invokespecial java.math.MutableBigInteger.<init>:([I)V
astore 4 /* b */
start local 4 // java.math.MutableBigInteger b
3: .line 2205
aload 3 /* a */
aload 4 /* b */
aload 2 /* q */
iconst_0
invokevirtual java.math.MutableBigInteger.divideKnuth:(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;Z)Ljava/math/MutableBigInteger;
pop
4: .line 2206
aload 2 /* q */
aload 0 /* this */
getfield java.math.BigInteger.signum:I
aload 1 /* val */
getfield java.math.BigInteger.signum:I
imul
invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
areturn
end local 4 // java.math.MutableBigInteger b
end local 3 // java.math.MutableBigInteger a
end local 2 // java.math.MutableBigInteger q
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/math/BigInteger;
0 5 1 val Ljava/math/BigInteger;
1 5 2 q Ljava/math/MutableBigInteger;
2 5 3 a Ljava/math/MutableBigInteger;
3 5 4 b Ljava/math/MutableBigInteger;
MethodParameters:
Name Flags
val
public java.math.BigInteger[] divideAndRemainder(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)[Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 2221
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
arraylength
bipush 80
if_icmplt 2
1: .line 2222
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
arraylength
isub
bipush 40
if_icmpge 3
2: .line 2223
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* val */
invokevirtual java.math.BigInteger.divideAndRemainderKnuth:(Ljava/math/BigInteger;)[Ljava/math/BigInteger;
areturn
3: .line 2225
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* val */
invokevirtual java.math.BigInteger.divideAndRemainderBurnikelZiegler:(Ljava/math/BigInteger;)[Ljava/math/BigInteger;
areturn
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/math/BigInteger;
0 4 1 val Ljava/math/BigInteger;
MethodParameters:
Name Flags
val
private java.math.BigInteger[] divideAndRemainderKnuth(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)[Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=7, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 2231
iconst_2
anewarray java.math.BigInteger
astore 2 /* result */
start local 2 // java.math.BigInteger[] result
1: .line 2232
new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 3 /* q */
start local 3 // java.math.MutableBigInteger q
2: .line 2233
new java.math.MutableBigInteger
dup
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
invokespecial java.math.MutableBigInteger.<init>:([I)V
astore 4 /* a */
start local 4 // java.math.MutableBigInteger a
3: .line 2234
new java.math.MutableBigInteger
dup
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
invokespecial java.math.MutableBigInteger.<init>:([I)V
astore 5 /* b */
start local 5 // java.math.MutableBigInteger b
4: .line 2235
aload 4 /* a */
aload 5 /* b */
aload 3 /* q */
invokevirtual java.math.MutableBigInteger.divideKnuth:(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger;
astore 6 /* r */
start local 6 // java.math.MutableBigInteger r
5: .line 2236
aload 2 /* result */
iconst_0
aload 3 /* q */
aload 0 /* this */
getfield java.math.BigInteger.signum:I
aload 1 /* val */
getfield java.math.BigInteger.signum:I
if_icmpne 6
iconst_1
goto 7
StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger[] java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger
StackMap stack: java.math.BigInteger[] int java.math.MutableBigInteger
6: iconst_m1
StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger[] java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger
StackMap stack: java.math.BigInteger[] int java.math.MutableBigInteger int
7: invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
aastore
8: .line 2237
aload 2 /* result */
iconst_1
aload 6 /* r */
aload 0 /* this */
getfield java.math.BigInteger.signum:I
invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
aastore
9: .line 2238
aload 2 /* result */
areturn
end local 6 // java.math.MutableBigInteger r
end local 5 // java.math.MutableBigInteger b
end local 4 // java.math.MutableBigInteger a
end local 3 // java.math.MutableBigInteger q
end local 2 // java.math.BigInteger[] result
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Ljava/math/BigInteger;
0 10 1 val Ljava/math/BigInteger;
1 10 2 result [Ljava/math/BigInteger;
2 10 3 q Ljava/math/MutableBigInteger;
3 10 4 a Ljava/math/MutableBigInteger;
4 10 5 b Ljava/math/MutableBigInteger;
5 10 6 r Ljava/math/MutableBigInteger;
MethodParameters:
Name Flags
val
public java.math.BigInteger remainder(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 2250
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
arraylength
bipush 80
if_icmplt 2
1: .line 2251
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
arraylength
isub
bipush 40
if_icmpge 3
2: .line 2252
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* val */
invokevirtual java.math.BigInteger.remainderKnuth:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
areturn
3: .line 2254
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* val */
invokevirtual java.math.BigInteger.remainderBurnikelZiegler:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
areturn
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/math/BigInteger;
0 4 1 val Ljava/math/BigInteger;
MethodParameters:
Name Flags
val
private java.math.BigInteger remainderKnuth(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 2260
new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 2 /* q */
start local 2 // java.math.MutableBigInteger q
1: .line 2261
new java.math.MutableBigInteger
dup
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
invokespecial java.math.MutableBigInteger.<init>:([I)V
astore 3 /* a */
start local 3 // java.math.MutableBigInteger a
2: .line 2262
new java.math.MutableBigInteger
dup
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
invokespecial java.math.MutableBigInteger.<init>:([I)V
astore 4 /* b */
start local 4 // java.math.MutableBigInteger b
3: .line 2264
aload 3 /* a */
aload 4 /* b */
aload 2 /* q */
invokevirtual java.math.MutableBigInteger.divideKnuth:(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger;
aload 0 /* this */
getfield java.math.BigInteger.signum:I
invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
areturn
end local 4 // java.math.MutableBigInteger b
end local 3 // java.math.MutableBigInteger a
end local 2 // java.math.MutableBigInteger q
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/math/BigInteger;
0 4 1 val Ljava/math/BigInteger;
1 4 2 q Ljava/math/MutableBigInteger;
2 4 3 a Ljava/math/MutableBigInteger;
3 4 4 b Ljava/math/MutableBigInteger;
MethodParameters:
Name Flags
val
private java.math.BigInteger divideBurnikelZiegler(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 2273
aload 0 /* this */
aload 1 /* val */
invokevirtual java.math.BigInteger.divideAndRemainderBurnikelZiegler:(Ljava/math/BigInteger;)[Ljava/math/BigInteger;
iconst_0
aaload
areturn
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigInteger;
0 1 1 val Ljava/math/BigInteger;
MethodParameters:
Name Flags
val
private java.math.BigInteger remainderBurnikelZiegler(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 2282
aload 0 /* this */
aload 1 /* val */
invokevirtual java.math.BigInteger.divideAndRemainderBurnikelZiegler:(Ljava/math/BigInteger;)[Ljava/math/BigInteger;
iconst_1
aaload
areturn
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigInteger;
0 1 1 val Ljava/math/BigInteger;
MethodParameters:
Name Flags
val
private java.math.BigInteger[] divideAndRemainderBurnikelZiegler(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)[Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=6, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 2292
new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 2 /* q */
start local 2 // java.math.MutableBigInteger q
1: .line 2293
new java.math.MutableBigInteger
dup
aload 0 /* this */
invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
new java.math.MutableBigInteger
dup
aload 1 /* val */
invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
aload 2 /* q */
invokevirtual java.math.MutableBigInteger.divideAndRemainderBurnikelZiegler:(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger;
astore 3 /* r */
start local 3 // java.math.MutableBigInteger r
2: .line 2294
aload 2 /* q */
invokevirtual java.math.MutableBigInteger.isZero:()Z
ifeq 3
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
goto 4
StackMap locals: java.math.MutableBigInteger java.math.MutableBigInteger
StackMap stack:
3: aload 2 /* q */
aload 0 /* this */
getfield java.math.BigInteger.signum:I
aload 1 /* val */
getfield java.math.BigInteger.signum:I
imul
invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
StackMap locals:
StackMap stack: java.math.BigInteger
4: astore 4 /* qBigInt */
start local 4 // java.math.BigInteger qBigInt
5: .line 2295
aload 3 /* r */
invokevirtual java.math.MutableBigInteger.isZero:()Z
ifeq 6
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
goto 7
StackMap locals: java.math.BigInteger
StackMap stack:
6: aload 3 /* r */
aload 0 /* this */
getfield java.math.BigInteger.signum:I
invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
StackMap locals:
StackMap stack: java.math.BigInteger
7: astore 5 /* rBigInt */
start local 5 // java.math.BigInteger rBigInt
8: .line 2296
iconst_2
anewarray java.math.BigInteger
dup
iconst_0
aload 4 /* qBigInt */
aastore
dup
iconst_1
aload 5 /* rBigInt */
aastore
areturn
end local 5 // java.math.BigInteger rBigInt
end local 4 // java.math.BigInteger qBigInt
end local 3 // java.math.MutableBigInteger r
end local 2 // java.math.MutableBigInteger q
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljava/math/BigInteger;
0 9 1 val Ljava/math/BigInteger;
1 9 2 q Ljava/math/MutableBigInteger;
2 9 3 r Ljava/math/MutableBigInteger;
5 9 4 qBigInt Ljava/math/BigInteger;
8 9 5 rBigInt Ljava/math/BigInteger;
MethodParameters:
Name Flags
val
public java.math.BigInteger pow(int);
descriptor: (I)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=16, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // int exponent
0: .line 2309
iload 1 /* exponent */
ifge 2
1: .line 2310
new java.lang.ArithmeticException
dup
ldc "Negative exponent"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 2312
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 6
3: .line 2313
iload 1 /* exponent */
ifne 4
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
goto 5
StackMap locals:
StackMap stack:
4: aload 0 /* this */
StackMap locals:
StackMap stack: java.math.BigInteger
5: areturn
6: .line 2316
StackMap locals:
StackMap stack:
aload 0 /* this */
invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
astore 2 /* partToSquare */
start local 2 // java.math.BigInteger partToSquare
7: .line 2322
aload 2 /* partToSquare */
invokevirtual java.math.BigInteger.getLowestSetBit:()I
istore 3 /* powersOfTwo */
start local 3 // int powersOfTwo
8: .line 2323
iload 3 /* powersOfTwo */
i2l
iload 1 /* exponent */
i2l
lmul
lstore 4 /* bitsToShiftLong */
start local 4 // long bitsToShiftLong
9: .line 2324
lload 4 /* bitsToShiftLong */
ldc 2147483647
lcmp
ifle 11
10: .line 2325
invokestatic java.math.BigInteger.reportOverflow:()V
11: .line 2327
StackMap locals: java.math.BigInteger int long
StackMap stack:
lload 4 /* bitsToShiftLong */
l2i
istore 6 /* bitsToShift */
start local 6 // int bitsToShift
12: .line 2332
iload 3 /* powersOfTwo */
ifle 19
13: .line 2333
aload 2 /* partToSquare */
iload 3 /* powersOfTwo */
invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
astore 2 /* partToSquare */
14: .line 2334
aload 2 /* partToSquare */
invokevirtual java.math.BigInteger.bitLength:()I
istore 7 /* remainingBits */
start local 7 // int remainingBits
15: .line 2335
iload 7 /* remainingBits */
iconst_1
if_icmpne 24
16: .line 2336
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifge 18
iload 1 /* exponent */
iconst_1
iand
iconst_1
if_icmpne 18
17: .line 2337
getstatic java.math.BigInteger.NEGATIVE_ONE:Ljava/math/BigInteger;
iload 6 /* bitsToShift */
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
areturn
18: .line 2339
StackMap locals: int int
StackMap stack:
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
iload 6 /* bitsToShift */
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
areturn
end local 7 // int remainingBits
19: .line 2343
StackMap locals:
StackMap stack:
aload 2 /* partToSquare */
invokevirtual java.math.BigInteger.bitLength:()I
istore 7 /* remainingBits */
start local 7 // int remainingBits
20: .line 2344
iload 7 /* remainingBits */
iconst_1
if_icmpne 24
21: .line 2345
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifge 23
iload 1 /* exponent */
iconst_1
iand
iconst_1
if_icmpne 23
22: .line 2346
getstatic java.math.BigInteger.NEGATIVE_ONE:Ljava/math/BigInteger;
areturn
23: .line 2348
StackMap locals: int
StackMap stack:
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
areturn
24: .line 2356
StackMap locals:
StackMap stack:
iload 7 /* remainingBits */
i2l
iload 1 /* exponent */
i2l
lmul
lstore 8 /* scaleFactor */
start local 8 // long scaleFactor
25: .line 2360
aload 2 /* partToSquare */
getfield java.math.BigInteger.mag:[I
arraylength
iconst_1
if_icmpne 43
lload 8 /* scaleFactor */
ldc 62
lcmp
ifgt 43
26: .line 2362
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifge 27
iload 1 /* exponent */
iconst_1
iand
iconst_1
if_icmpne 27
iconst_m1
goto 28
StackMap locals: long
StackMap stack:
27: iconst_1
StackMap locals:
StackMap stack: int
28: istore 10 /* newSign */
start local 10 // int newSign
29: .line 2363
lconst_1
lstore 11 /* result */
start local 11 // long result
30: .line 2364
aload 2 /* partToSquare */
getfield java.math.BigInteger.mag:[I
iconst_0
iaload
i2l
ldc 4294967295
land
lstore 13 /* baseToPow2 */
start local 13 // long baseToPow2
31: .line 2366
iload 1 /* exponent */
istore 15 /* workingExponent */
start local 15 // int workingExponent
32: .line 2369
goto 37
33: .line 2370
StackMap locals: java.math.BigInteger int java.math.BigInteger int long int int long int long long int
StackMap stack:
iload 15 /* workingExponent */
iconst_1
iand
iconst_1
if_icmpne 35
34: .line 2371
lload 11 /* result */
lload 13 /* baseToPow2 */
lmul
lstore 11 /* result */
35: .line 2374
StackMap locals:
StackMap stack:
iload 15 /* workingExponent */
iconst_1
iushr
dup
istore 15 /* workingExponent */
ifeq 37
36: .line 2375
lload 13 /* baseToPow2 */
lload 13 /* baseToPow2 */
lmul
lstore 13 /* baseToPow2 */
37: .line 2369
StackMap locals:
StackMap stack:
iload 15 /* workingExponent */
ifne 33
38: .line 2380
iload 3 /* powersOfTwo */
ifle 42
39: .line 2381
iload 6 /* bitsToShift */
i2l
lload 8 /* scaleFactor */
ladd
ldc 62
lcmp
ifgt 41
40: .line 2382
lload 11 /* result */
iload 6 /* bitsToShift */
lshl
iload 10 /* newSign */
i2l
lmul
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
areturn
41: .line 2384
StackMap locals:
StackMap stack:
lload 11 /* result */
iload 10 /* newSign */
i2l
lmul
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
iload 6 /* bitsToShift */
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
areturn
42: .line 2387
StackMap locals:
StackMap stack:
lload 11 /* result */
iload 10 /* newSign */
i2l
lmul
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
areturn
end local 15 // int workingExponent
end local 13 // long baseToPow2
end local 11 // long result
end local 10 // int newSign
43: .line 2390
StackMap locals: java.math.BigInteger int java.math.BigInteger int long int int long
StackMap stack:
aload 0 /* this */
invokevirtual java.math.BigInteger.bitLength:()I
i2l
iload 1 /* exponent */
i2l
lmul
ldc 32
ldiv
ldc 67108864
lcmp
ifle 45
44: .line 2391
invokestatic java.math.BigInteger.reportOverflow:()V
45: .line 2397
StackMap locals:
StackMap stack:
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
astore 10 /* answer */
start local 10 // java.math.BigInteger answer
46: .line 2399
iload 1 /* exponent */
istore 11 /* workingExponent */
start local 11 // int workingExponent
47: .line 2401
goto 52
48: .line 2402
StackMap locals: java.math.BigInteger int
StackMap stack:
iload 11 /* workingExponent */
iconst_1
iand
iconst_1
if_icmpne 50
49: .line 2403
aload 10 /* answer */
aload 2 /* partToSquare */
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 10 /* answer */
50: .line 2406
StackMap locals:
StackMap stack:
iload 11 /* workingExponent */
iconst_1
iushr
dup
istore 11 /* workingExponent */
ifeq 52
51: .line 2407
aload 2 /* partToSquare */
invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
astore 2 /* partToSquare */
52: .line 2401
StackMap locals:
StackMap stack:
iload 11 /* workingExponent */
ifne 48
53: .line 2412
iload 3 /* powersOfTwo */
ifle 55
54: .line 2413
aload 10 /* answer */
iload 6 /* bitsToShift */
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
astore 10 /* answer */
55: .line 2416
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifge 57
iload 1 /* exponent */
iconst_1
iand
iconst_1
if_icmpne 57
56: .line 2417
aload 10 /* answer */
invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
areturn
57: .line 2419
StackMap locals:
StackMap stack:
aload 10 /* answer */
areturn
end local 11 // int workingExponent
end local 10 // java.math.BigInteger answer
end local 8 // long scaleFactor
end local 7 // int remainingBits
end local 6 // int bitsToShift
end local 4 // long bitsToShiftLong
end local 3 // int powersOfTwo
end local 2 // java.math.BigInteger partToSquare
end local 1 // int exponent
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 58 0 this Ljava/math/BigInteger;
0 58 1 exponent I
7 58 2 partToSquare Ljava/math/BigInteger;
8 58 3 powersOfTwo I
9 58 4 bitsToShiftLong J
12 58 6 bitsToShift I
15 19 7 remainingBits I
20 58 7 remainingBits I
25 58 8 scaleFactor J
29 43 10 newSign I
30 43 11 result J
31 43 13 baseToPow2 J
32 43 15 workingExponent I
46 58 10 answer Ljava/math/BigInteger;
47 58 11 workingExponent I
MethodParameters:
Name Flags
exponent
public java.math.BigInteger gcd(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=5, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 2433
aload 1 /* val */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 2434
aload 0 /* this */
invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
areturn
2: .line 2435
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 4
3: .line 2436
aload 1 /* val */
invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
areturn
4: .line 2438
StackMap locals:
StackMap stack:
new java.math.MutableBigInteger
dup
aload 0 /* this */
invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
astore 2 /* a */
start local 2 // java.math.MutableBigInteger a
5: .line 2439
new java.math.MutableBigInteger
dup
aload 1 /* val */
invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
astore 3 /* b */
start local 3 // java.math.MutableBigInteger b
6: .line 2441
aload 2 /* a */
aload 3 /* b */
invokevirtual java.math.MutableBigInteger.hybridGCD:(Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger;
astore 4 /* result */
start local 4 // java.math.MutableBigInteger result
7: .line 2443
aload 4 /* result */
iconst_1
invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
areturn
end local 4 // java.math.MutableBigInteger result
end local 3 // java.math.MutableBigInteger b
end local 2 // java.math.MutableBigInteger a
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Ljava/math/BigInteger;
0 8 1 val Ljava/math/BigInteger;
5 8 2 a Ljava/math/MutableBigInteger;
6 8 3 b Ljava/math/MutableBigInteger;
7 8 4 result Ljava/math/MutableBigInteger;
MethodParameters:
Name Flags
val
static int bitLengthForInt(int);
descriptor: (I)I
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 // int n
0: .line 2450
bipush 32
iload 0 /* n */
invokestatic java.lang.Integer.numberOfLeadingZeros:(I)I
isub
ireturn
end local 0 // int n
LocalVariableTable:
Start End Slot Name Signature
0 1 0 n I
MethodParameters:
Name Flags
n
private static int[] leftShift(int[], int, int);
descriptor: ([III)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=7, args_size=3
start local 0 // int[] a
start local 1 // int len
start local 2 // int n
0: .line 2458
iload 2 /* n */
iconst_5
iushr
istore 3 /* nInts */
start local 3 // int nInts
1: .line 2459
iload 2 /* n */
bipush 31
iand
istore 4 /* nBits */
start local 4 // int nBits
2: .line 2460
aload 0 /* a */
iconst_0
iaload
invokestatic java.math.BigInteger.bitLengthForInt:(I)I
istore 5 /* bitsInHighWord */
start local 5 // int bitsInHighWord
3: .line 2463
iload 2 /* n */
bipush 32
iload 5 /* bitsInHighWord */
isub
if_icmpgt 6
4: .line 2464
aload 0 /* a */
iload 1 /* len */
iload 4 /* nBits */
invokestatic java.math.BigInteger.primitiveLeftShift:([III)V
5: .line 2465
aload 0 /* a */
areturn
6: .line 2467
StackMap locals: int int int
StackMap stack:
iload 4 /* nBits */
bipush 32
iload 5 /* bitsInHighWord */
isub
if_icmpgt 11
7: .line 2468
iload 3 /* nInts */
iload 1 /* len */
iadd
newarray 10
astore 6 /* result */
start local 6 // int[] result
8: .line 2469
aload 0 /* a */
iconst_0
aload 6 /* result */
iconst_0
iload 1 /* len */
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
9: .line 2470
aload 6 /* result */
aload 6 /* result */
arraylength
iload 4 /* nBits */
invokestatic java.math.BigInteger.primitiveLeftShift:([III)V
10: .line 2471
aload 6 /* result */
areturn
end local 6 // int[] result
11: .line 2473
StackMap locals:
StackMap stack:
iload 3 /* nInts */
iload 1 /* len */
iadd
iconst_1
iadd
newarray 10
astore 6 /* result */
start local 6 // int[] result
12: .line 2474
aload 0 /* a */
iconst_0
aload 6 /* result */
iconst_0
iload 1 /* len */
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
13: .line 2475
aload 6 /* result */
aload 6 /* result */
arraylength
bipush 32
iload 4 /* nBits */
isub
invokestatic java.math.BigInteger.primitiveRightShift:([III)V
14: .line 2476
aload 6 /* result */
areturn
end local 6 // int[] result
end local 5 // int bitsInHighWord
end local 4 // int nBits
end local 3 // int nInts
end local 2 // int n
end local 1 // int len
end local 0 // int[] a
LocalVariableTable:
Start End Slot Name Signature
0 15 0 a [I
0 15 1 len I
0 15 2 n I
1 15 3 nInts I
2 15 4 nBits I
3 15 5 bitsInHighWord I
8 11 6 result [I
12 15 6 result [I
MethodParameters:
Name Flags
a
len
n
static void primitiveRightShift(int[], int, int);
descriptor: ([III)V
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=7, args_size=3
start local 0 // int[] a
start local 1 // int len
start local 2 // int n
0: .line 2483
bipush 32
iload 2 /* n */
isub
istore 3 /* n2 */
start local 3 // int n2
1: .line 2484
iload 1 /* len */
iconst_1
isub
istore 4 /* i */
start local 4 // int i
2: aload 0 /* a */
iload 4 /* i */
iaload
istore 5 /* c */
start local 5 // int c
3: goto 8
4: .line 2485
StackMap locals: int int int
StackMap stack:
iload 5 /* c */
istore 6 /* b */
start local 6 // int b
5: .line 2486
aload 0 /* a */
iload 4 /* i */
iconst_1
isub
iaload
istore 5 /* c */
6: .line 2487
aload 0 /* a */
iload 4 /* i */
iload 5 /* c */
iload 3 /* n2 */
ishl
iload 6 /* b */
iload 2 /* n */
iushr
ior
iastore
end local 6 // int b
7: .line 2484
iinc 4 /* i */ -1
StackMap locals:
StackMap stack:
8: iload 4 /* i */
ifgt 4
end local 5 // int c
end local 4 // int i
9: .line 2489
aload 0 /* a */
iconst_0
dup2
iaload
iload 2 /* n */
iushr
iastore
10: .line 2490
return
end local 3 // int n2
end local 2 // int n
end local 1 // int len
end local 0 // int[] a
LocalVariableTable:
Start End Slot Name Signature
0 11 0 a [I
0 11 1 len I
0 11 2 n I
1 11 3 n2 I
2 9 4 i I
3 9 5 c I
5 7 6 b I
MethodParameters:
Name Flags
a
len
n
static void primitiveLeftShift(int[], int, int);
descriptor: ([III)V
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=8, args_size=3
start local 0 // int[] a
start local 1 // int len
start local 2 // int n
0: .line 2494
iload 1 /* len */
ifeq 1
iload 2 /* n */
ifne 2
1: .line 2495
StackMap locals:
StackMap stack:
return
2: .line 2497
StackMap locals:
StackMap stack:
bipush 32
iload 2 /* n */
isub
istore 3 /* n2 */
start local 3 // int n2
3: .line 2498
iconst_0
istore 4 /* i */
start local 4 // int i
4: aload 0 /* a */
iload 4 /* i */
iaload
istore 5 /* c */
start local 5 // int c
5: iload 4 /* i */
iload 1 /* len */
iadd
iconst_1
isub
istore 6 /* m */
start local 6 // int m
6: goto 11
7: .line 2499
StackMap locals: int[] int int int int int int
StackMap stack:
iload 5 /* c */
istore 7 /* b */
start local 7 // int b
8: .line 2500
aload 0 /* a */
iload 4 /* i */
iconst_1
iadd
iaload
istore 5 /* c */
9: .line 2501
aload 0 /* a */
iload 4 /* i */
iload 7 /* b */
iload 2 /* n */
ishl
iload 5 /* c */
iload 3 /* n2 */
iushr
ior
iastore
end local 7 // int b
10: .line 2498
iinc 4 /* i */ 1
StackMap locals:
StackMap stack:
11: iload 4 /* i */
iload 6 /* m */
if_icmplt 7
end local 6 // int m
end local 5 // int c
end local 4 // int i
12: .line 2503
aload 0 /* a */
iload 1 /* len */
iconst_1
isub
dup2
iaload
iload 2 /* n */
ishl
iastore
13: .line 2504
return
end local 3 // int n2
end local 2 // int n
end local 1 // int len
end local 0 // int[] a
LocalVariableTable:
Start End Slot Name Signature
0 14 0 a [I
0 14 1 len I
0 14 2 n I
3 14 3 n2 I
4 12 4 i I
5 12 5 c I
6 12 6 m I
8 10 7 b I
MethodParameters:
Name Flags
a
len
n
private static int bitLength(int[], int);
descriptor: ([II)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 // int[] val
start local 1 // int len
0: .line 2511
iload 1 /* len */
ifne 2
1: .line 2512
iconst_0
ireturn
2: .line 2513
StackMap locals:
StackMap stack:
iload 1 /* len */
iconst_1
isub
iconst_5
ishl
aload 0 /* val */
iconst_0
iaload
invokestatic java.math.BigInteger.bitLengthForInt:(I)I
iadd
ireturn
end local 1 // int len
end local 0 // int[] val
LocalVariableTable:
Start End Slot Name Signature
0 3 0 val [I
0 3 1 len I
MethodParameters:
Name Flags
val
len
public java.math.BigInteger abs();
descriptor: ()Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 // java.math.BigInteger this
0: .line 2523
aload 0 /* this */
getfield java.math.BigInteger.signum:I
iflt 1
aload 0 /* this */
goto 2
StackMap locals:
StackMap stack:
1: aload 0 /* this */
invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
StackMap locals:
StackMap stack: java.math.BigInteger
2: areturn
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BigInteger;
public java.math.BigInteger negate();
descriptor: ()Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 // java.math.BigInteger this
0: .line 2532
new java.math.BigInteger
dup
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ineg
invokespecial java.math.BigInteger.<init>:([II)V
areturn
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigInteger;
public int signum();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 // java.math.BigInteger this
0: .line 2542
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ireturn
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigInteger;
public java.math.BigInteger mod(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger m
0: .line 2558
aload 1 /* m */
getfield java.math.BigInteger.signum:I
ifgt 2
1: .line 2559
new java.lang.ArithmeticException
dup
ldc "BigInteger: modulus not positive"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 2561
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* m */
invokevirtual java.math.BigInteger.remainder:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 2 /* result */
start local 2 // java.math.BigInteger result
3: .line 2562
aload 2 /* result */
getfield java.math.BigInteger.signum:I
iflt 4
aload 2 /* result */
goto 5
StackMap locals: java.math.BigInteger
StackMap stack:
4: aload 2 /* result */
aload 1 /* m */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
StackMap locals:
StackMap stack: java.math.BigInteger
5: areturn
end local 2 // java.math.BigInteger result
end local 1 // java.math.BigInteger m
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljava/math/BigInteger;
0 6 1 m Ljava/math/BigInteger;
3 6 2 result Ljava/math/BigInteger;
MethodParameters:
Name Flags
m
public java.math.BigInteger modPow(java.math.BigInteger, java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=17, args_size=3
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger exponent
start local 2 // java.math.BigInteger m
0: .line 2579
aload 2 /* m */
getfield java.math.BigInteger.signum:I
ifgt 2
1: .line 2580
new java.lang.ArithmeticException
dup
ldc "BigInteger: modulus not positive"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 2583
StackMap locals:
StackMap stack:
aload 1 /* exponent */
getfield java.math.BigInteger.signum:I
ifne 6
3: .line 2584
aload 2 /* m */
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ifeq 4
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
goto 5
StackMap locals:
StackMap stack:
4: getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
StackMap locals:
StackMap stack: java.math.BigInteger
5: areturn
6: .line 2586
StackMap locals:
StackMap stack:
aload 0 /* this */
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ifeq 10
7: .line 2587
aload 2 /* m */
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ifeq 8
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
goto 9
StackMap locals:
StackMap stack:
8: getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
StackMap locals:
StackMap stack: java.math.BigInteger
9: areturn
10: .line 2589
StackMap locals:
StackMap stack:
aload 0 /* this */
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ifeq 12
aload 1 /* exponent */
getfield java.math.BigInteger.signum:I
iflt 12
11: .line 2590
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
12: .line 2592
StackMap locals:
StackMap stack:
aload 0 /* this */
getstatic java.math.BigInteger.negConst:[Ljava/math/BigInteger;
iconst_1
aaload
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ifeq 16
aload 1 /* exponent */
iconst_0
invokevirtual java.math.BigInteger.testBit:(I)Z
ifne 16
13: .line 2593
aload 2 /* m */
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ifeq 14
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
goto 15
StackMap locals:
StackMap stack:
14: getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
StackMap locals:
StackMap stack: java.math.BigInteger
15: areturn
16: .line 2596
StackMap locals:
StackMap stack:
aload 1 /* exponent */
getfield java.math.BigInteger.signum:I
ifge 17
iconst_1
goto 18
StackMap locals:
StackMap stack:
17: iconst_0
StackMap locals:
StackMap stack: int
18: dup
istore 3 /* invertResult */
start local 3 // boolean invertResult
19: ifeq 21
20: .line 2597
aload 1 /* exponent */
invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
astore 1 /* exponent */
21: .line 2599
StackMap locals: int
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.signum:I
iflt 22
aload 0 /* this */
aload 2 /* m */
invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
iflt 23
22: .line 2600
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 2 /* m */
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
goto 24
StackMap locals:
StackMap stack:
23: aload 0 /* this */
24: .line 2599
StackMap locals:
StackMap stack: java.math.BigInteger
astore 4 /* base */
start local 4 // java.math.BigInteger base
25: .line 2602
aload 2 /* m */
iconst_0
invokevirtual java.math.BigInteger.testBit:(I)Z
ifeq 28
26: .line 2603
aload 4 /* base */
aload 1 /* exponent */
aload 2 /* m */
invokevirtual java.math.BigInteger.oddModPow:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 5 /* result */
start local 5 // java.math.BigInteger result
27: .line 2604
goto 51
end local 5 // java.math.BigInteger result
28: .line 2612
StackMap locals: java.math.BigInteger
StackMap stack:
aload 2 /* m */
invokevirtual java.math.BigInteger.getLowestSetBit:()I
istore 6 /* p */
start local 6 // int p
29: .line 2614
aload 2 /* m */
iload 6 /* p */
invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
astore 7 /* m1 */
start local 7 // java.math.BigInteger m1
30: .line 2615
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
iload 6 /* p */
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
astore 8 /* m2 */
start local 8 // java.math.BigInteger m2
31: .line 2618
aload 0 /* this */
getfield java.math.BigInteger.signum:I
iflt 32
aload 0 /* this */
aload 7 /* m1 */
invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
iflt 33
32: .line 2619
StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger int java.math.BigInteger top int java.math.BigInteger java.math.BigInteger
StackMap stack:
aload 0 /* this */
aload 7 /* m1 */
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
goto 34
StackMap locals:
StackMap stack:
33: aload 0 /* this */
34: .line 2618
StackMap locals:
StackMap stack: java.math.BigInteger
astore 9 /* base2 */
start local 9 // java.math.BigInteger base2
35: .line 2622
aload 7 /* m1 */
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ifeq 36
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
goto 37
36: .line 2623
StackMap locals: java.math.BigInteger
StackMap stack:
aload 9 /* base2 */
aload 1 /* exponent */
aload 7 /* m1 */
invokevirtual java.math.BigInteger.oddModPow:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
37: .line 2622
StackMap locals:
StackMap stack: java.math.BigInteger
astore 10 /* a1 */
start local 10 // java.math.BigInteger a1
38: .line 2626
aload 4 /* base */
aload 1 /* exponent */
iload 6 /* p */
invokevirtual java.math.BigInteger.modPow2:(Ljava/math/BigInteger;I)Ljava/math/BigInteger;
astore 11 /* a2 */
start local 11 // java.math.BigInteger a2
39: .line 2629
aload 8 /* m2 */
aload 7 /* m1 */
invokevirtual java.math.BigInteger.modInverse:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 12 /* y1 */
start local 12 // java.math.BigInteger y1
40: .line 2630
aload 7 /* m1 */
aload 8 /* m2 */
invokevirtual java.math.BigInteger.modInverse:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 13 /* y2 */
start local 13 // java.math.BigInteger y2
41: .line 2632
aload 2 /* m */
getfield java.math.BigInteger.mag:[I
arraylength
ldc 33554432
if_icmpge 44
42: .line 2633
aload 10 /* a1 */
aload 8 /* m2 */
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 12 /* y1 */
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 11 /* a2 */
aload 7 /* m1 */
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 13 /* y2 */
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 2 /* m */
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 5 /* result */
start local 5 // java.math.BigInteger result
43: .line 2634
goto 51
end local 5 // java.math.BigInteger result
44: .line 2635
StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger int java.math.BigInteger top int java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger
StackMap stack:
new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 14 /* t1 */
start local 14 // java.math.MutableBigInteger t1
45: .line 2636
new java.math.MutableBigInteger
dup
aload 10 /* a1 */
aload 8 /* m2 */
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
new java.math.MutableBigInteger
dup
aload 12 /* y1 */
invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
aload 14 /* t1 */
invokevirtual java.math.MutableBigInteger.multiply:(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)V
46: .line 2637
new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 15 /* t2 */
start local 15 // java.math.MutableBigInteger t2
47: .line 2638
new java.math.MutableBigInteger
dup
aload 11 /* a2 */
aload 7 /* m1 */
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
new java.math.MutableBigInteger
dup
aload 13 /* y2 */
invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
aload 15 /* t2 */
invokevirtual java.math.MutableBigInteger.multiply:(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)V
48: .line 2639
aload 14 /* t1 */
aload 15 /* t2 */
invokevirtual java.math.MutableBigInteger.add:(Ljava/math/MutableBigInteger;)V
49: .line 2640
new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 16 /* q */
start local 16 // java.math.MutableBigInteger q
50: .line 2641
aload 14 /* t1 */
new java.math.MutableBigInteger
dup
aload 2 /* m */
invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
aload 16 /* q */
invokevirtual java.math.MutableBigInteger.divide:(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger;
invokevirtual java.math.MutableBigInteger.toBigInteger:()Ljava/math/BigInteger;
astore 5 /* result */
end local 16 // java.math.MutableBigInteger q
end local 15 // java.math.MutableBigInteger t2
end local 14 // java.math.MutableBigInteger t1
end local 13 // java.math.BigInteger y2
end local 12 // java.math.BigInteger y1
end local 11 // java.math.BigInteger a2
end local 10 // java.math.BigInteger a1
end local 9 // java.math.BigInteger base2
end local 8 // java.math.BigInteger m2
end local 7 // java.math.BigInteger m1
end local 6 // int p
start local 5 // java.math.BigInteger result
51: .line 2645
StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger int java.math.BigInteger java.math.BigInteger
StackMap stack:
iload 3 /* invertResult */
ifeq 52
aload 5 /* result */
aload 2 /* m */
invokevirtual java.math.BigInteger.modInverse:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
goto 53
StackMap locals:
StackMap stack:
52: aload 5 /* result */
StackMap locals:
StackMap stack: java.math.BigInteger
53: areturn
end local 5 // java.math.BigInteger result
end local 4 // java.math.BigInteger base
end local 3 // boolean invertResult
end local 2 // java.math.BigInteger m
end local 1 // java.math.BigInteger exponent
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 54 0 this Ljava/math/BigInteger;
0 54 1 exponent Ljava/math/BigInteger;
0 54 2 m Ljava/math/BigInteger;
19 54 3 invertResult Z
25 54 4 base Ljava/math/BigInteger;
27 28 5 result Ljava/math/BigInteger;
43 44 5 result Ljava/math/BigInteger;
51 54 5 result Ljava/math/BigInteger;
29 51 6 p I
30 51 7 m1 Ljava/math/BigInteger;
31 51 8 m2 Ljava/math/BigInteger;
35 51 9 base2 Ljava/math/BigInteger;
38 51 10 a1 Ljava/math/BigInteger;
39 51 11 a2 Ljava/math/BigInteger;
40 51 12 y1 Ljava/math/BigInteger;
41 51 13 y2 Ljava/math/BigInteger;
45 51 14 t1 Ljava/math/MutableBigInteger;
47 51 15 t2 Ljava/math/MutableBigInteger;
50 51 16 q Ljava/math/MutableBigInteger;
MethodParameters:
Name Flags
exponent
m
private static int[] montgomeryMultiply(int[], int[], int[], int, long, int[]);
descriptor: ([I[I[IIJ[I)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=8, locals=7, args_size=6
start local 0 // int[] a
start local 1 // int[] b
start local 2 // int[] n
start local 3 // int len
start local 4 // long inv
start local 6 // int[] product
0: .line 2655
aload 0 /* a */
aload 1 /* b */
aload 2 /* n */
iload 3 /* len */
aload 6 /* product */
invokestatic java.math.BigInteger.implMontgomeryMultiplyChecks:([I[I[II[I)V
1: .line 2656
iload 3 /* len */
sipush 512
if_icmple 4
2: .line 2658
aload 0 /* a */
iload 3 /* len */
aload 1 /* b */
iload 3 /* len */
aload 6 /* product */
invokestatic java.math.BigInteger.multiplyToLen:([II[II[I)[I
astore 6 /* product */
3: .line 2659
aload 6 /* product */
aload 2 /* n */
iload 3 /* len */
lload 4 /* inv */
l2i
invokestatic java.math.BigInteger.montReduce:([I[III)[I
areturn
4: .line 2661
StackMap locals:
StackMap stack:
aload 0 /* a */
aload 1 /* b */
aload 2 /* n */
iload 3 /* len */
lload 4 /* inv */
aload 6 /* product */
iload 3 /* len */
invokestatic java.math.BigInteger.materialize:([II)[I
invokestatic java.math.BigInteger.implMontgomeryMultiply:([I[I[IIJ[I)[I
areturn
end local 6 // int[] product
end local 4 // long inv
end local 3 // int len
end local 2 // int[] n
end local 1 // int[] b
end local 0 // int[] a
LocalVariableTable:
Start End Slot Name Signature
0 5 0 a [I
0 5 1 b [I
0 5 2 n [I
0 5 3 len I
0 5 4 inv J
0 5 6 product [I
MethodParameters:
Name Flags
a
b
n
len
inv
product
private static int[] montgomerySquare(int[], int[], int, long, int[]);
descriptor: ([I[IIJ[I)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=6, args_size=5
start local 0 // int[] a
start local 1 // int[] n
start local 2 // int len
start local 3 // long inv
start local 5 // int[] product
0: .line 2666
aload 0 /* a */
aload 0 /* a */
aload 1 /* n */
iload 2 /* len */
aload 5 /* product */
invokestatic java.math.BigInteger.implMontgomeryMultiplyChecks:([I[I[II[I)V
1: .line 2667
iload 2 /* len */
sipush 512
if_icmple 4
2: .line 2669
aload 0 /* a */
iload 2 /* len */
aload 5 /* product */
invokestatic java.math.BigInteger.squareToLen:([II[I)[I
astore 5 /* product */
3: .line 2670
aload 5 /* product */
aload 1 /* n */
iload 2 /* len */
lload 3 /* inv */
l2i
invokestatic java.math.BigInteger.montReduce:([I[III)[I
areturn
4: .line 2672
StackMap locals:
StackMap stack:
aload 0 /* a */
aload 1 /* n */
iload 2 /* len */
lload 3 /* inv */
aload 5 /* product */
iload 2 /* len */
invokestatic java.math.BigInteger.materialize:([II)[I
invokestatic java.math.BigInteger.implMontgomerySquare:([I[IIJ[I)[I
areturn
end local 5 // int[] product
end local 3 // long inv
end local 2 // int len
end local 1 // int[] n
end local 0 // int[] a
LocalVariableTable:
Start End Slot Name Signature
0 5 0 a [I
0 5 1 n [I
0 5 2 len I
0 5 3 inv J
0 5 5 product [I
MethodParameters:
Name Flags
a
n
len
inv
product
private static void implMontgomeryMultiplyChecks(int[], int[], int[], int, int[]);
descriptor: ([I[I[II[I)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=5, args_size=5
start local 0 // int[] a
start local 1 // int[] b
start local 2 // int[] n
start local 3 // int len
start local 4 // int[] product
0: .line 2679
iload 3 /* len */
iconst_2
irem
ifeq 2
1: .line 2680
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "input array length must be even: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 3 /* len */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: .line 2683
StackMap locals:
StackMap stack:
iload 3 /* len */
iconst_1
if_icmpge 4
3: .line 2684
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "invalid input length: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 3 /* len */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
4: .line 2687
StackMap locals:
StackMap stack:
iload 3 /* len */
aload 0 /* a */
arraylength
if_icmpgt 8
5: .line 2688
iload 3 /* len */
aload 1 /* b */
arraylength
if_icmpgt 8
6: .line 2689
iload 3 /* len */
aload 2 /* n */
arraylength
if_icmpgt 8
7: .line 2690
aload 4 /* product */
ifnull 9
iload 3 /* len */
aload 4 /* product */
arraylength
if_icmple 9
8: .line 2691
StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "input array length out of bound: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 3 /* len */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
9: .line 2693
StackMap locals:
StackMap stack:
return
end local 4 // int[] product
end local 3 // int len
end local 2 // int[] n
end local 1 // int[] b
end local 0 // int[] a
LocalVariableTable:
Start End Slot Name Signature
0 10 0 a [I
0 10 1 b [I
0 10 2 n [I
0 10 3 len I
0 10 4 product [I
Exceptions:
throws java.lang.RuntimeException
MethodParameters:
Name Flags
a
b
n
len
product
private static int[] materialize(int[], int);
descriptor: ([II)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 // int[] z
start local 1 // int len
0: .line 2699
aload 0 /* z */
ifnull 1
aload 0 /* z */
arraylength
iload 1 /* len */
if_icmpge 2
1: .line 2700
StackMap locals:
StackMap stack:
iload 1 /* len */
newarray 10
astore 0 /* z */
2: .line 2701
StackMap locals:
StackMap stack:
aload 0 /* z */
areturn
end local 1 // int len
end local 0 // int[] z
LocalVariableTable:
Start End Slot Name Signature
0 3 0 z [I
0 3 1 len I
MethodParameters:
Name Flags
z
len
private static int[] implMontgomeryMultiply(int[], int[], int[], int, long, int[]);
descriptor: ([I[I[IIJ[I)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=7, args_size=6
start local 0 // int[] a
start local 1 // int[] b
start local 2 // int[] n
start local 3 // int len
start local 4 // long inv
start local 6 // int[] product
0: .line 2708
aload 0 /* a */
iload 3 /* len */
aload 1 /* b */
iload 3 /* len */
aload 6 /* product */
invokestatic java.math.BigInteger.multiplyToLen:([II[II[I)[I
astore 6 /* product */
1: .line 2709
aload 6 /* product */
aload 2 /* n */
iload 3 /* len */
lload 4 /* inv */
l2i
invokestatic java.math.BigInteger.montReduce:([I[III)[I
areturn
end local 6 // int[] product
end local 4 // long inv
end local 3 // int len
end local 2 // int[] n
end local 1 // int[] b
end local 0 // int[] a
LocalVariableTable:
Start End Slot Name Signature
0 2 0 a [I
0 2 1 b [I
0 2 2 n [I
0 2 3 len I
0 2 4 inv J
0 2 6 product [I
MethodParameters:
Name Flags
a
b
n
len
inv
product
private static int[] implMontgomerySquare(int[], int[], int, long, int[]);
descriptor: ([I[IIJ[I)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=6, args_size=5
start local 0 // int[] a
start local 1 // int[] n
start local 2 // int len
start local 3 // long inv
start local 5 // int[] product
0: .line 2713
aload 0 /* a */
iload 2 /* len */
aload 5 /* product */
invokestatic java.math.BigInteger.squareToLen:([II[I)[I
astore 5 /* product */
1: .line 2714
aload 5 /* product */
aload 1 /* n */
iload 2 /* len */
lload 3 /* inv */
l2i
invokestatic java.math.BigInteger.montReduce:([I[III)[I
areturn
end local 5 // int[] product
end local 3 // long inv
end local 2 // int len
end local 1 // int[] n
end local 0 // int[] a
LocalVariableTable:
Start End Slot Name Signature
0 2 0 a [I
0 2 1 n [I
0 2 2 len I
0 2 3 inv J
0 2 5 product [I
MethodParameters:
Name Flags
a
n
len
inv
product
private java.math.BigInteger oddModPow(java.math.BigInteger, java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=9, locals=30, args_size=3
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger y
start local 2 // java.math.BigInteger z
0: .line 2783
aload 1 /* y */
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ifeq 2
1: .line 2784
aload 0 /* this */
areturn
2: .line 2787
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 4
3: .line 2788
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
4: .line 2790
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
invokevirtual int[].clone:()Ljava/lang/Object;
checkcast int[]
astore 3 /* base */
start local 3 // int[] base
5: .line 2791
aload 1 /* y */
getfield java.math.BigInteger.mag:[I
astore 4 /* exp */
start local 4 // int[] exp
6: .line 2792
aload 2 /* z */
getfield java.math.BigInteger.mag:[I
astore 5 /* mod */
start local 5 // int[] mod
7: .line 2793
aload 5 /* mod */
arraylength
istore 6 /* modLen */
start local 6 // int modLen
8: .line 2799
iload 6 /* modLen */
iconst_1
iand
ifeq 13
9: .line 2800
iload 6 /* modLen */
iconst_1
iadd
newarray 10
astore 7 /* x */
start local 7 // int[] x
10: .line 2801
aload 5 /* mod */
iconst_0
aload 7 /* x */
iconst_1
iload 6 /* modLen */
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
11: .line 2802
aload 7 /* x */
astore 5 /* mod */
12: .line 2803
iinc 6 /* modLen */ 1
end local 7 // int[] x
13: .line 2807
StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger int[] int[] int[] int
StackMap stack:
iconst_0
istore 7 /* wbits */
start local 7 // int wbits
14: .line 2808
aload 4 /* exp */
aload 4 /* exp */
arraylength
invokestatic java.math.BigInteger.bitLength:([II)I
istore 8 /* ebits */
start local 8 // int ebits
15: .line 2810
iload 8 /* ebits */
bipush 17
if_icmpne 18
aload 4 /* exp */
iconst_0
iaload
ldc 65537
if_icmpeq 19
16: .line 2811
goto 18
17: .line 2812
StackMap locals: int int
StackMap stack:
iinc 7 /* wbits */ 1
18: .line 2811
StackMap locals:
StackMap stack:
iload 8 /* ebits */
getstatic java.math.BigInteger.bnExpModThreshTable:[I
iload 7 /* wbits */
iaload
if_icmpgt 17
19: .line 2817
StackMap locals:
StackMap stack:
iconst_1
iload 7 /* wbits */
ishl
istore 9 /* tblmask */
start local 9 // int tblmask
20: .line 2820
iload 9 /* tblmask */
anewarray int[]
astore 10 /* table */
start local 10 // int[][] table
21: .line 2821
iconst_0
istore 11 /* i */
start local 11 // int i
22: goto 25
23: .line 2822
StackMap locals: int int[][] int
StackMap stack:
aload 10 /* table */
iload 11 /* i */
iload 6 /* modLen */
newarray 10
aastore
24: .line 2821
iinc 11 /* i */ 1
StackMap locals:
StackMap stack:
25: iload 11 /* i */
iload 9 /* tblmask */
if_icmplt 23
end local 11 // int i
26: .line 2826
aload 5 /* mod */
iload 6 /* modLen */
iconst_1
isub
iaload
i2l
ldc 4294967295
land
aload 5 /* mod */
iload 6 /* modLen */
iconst_2
isub
iaload
i2l
ldc 4294967295
land
bipush 32
lshl
ladd
lstore 11 /* n0 */
start local 11 // long n0
27: .line 2827
lload 11 /* n0 */
invokestatic java.math.MutableBigInteger.inverseMod64:(J)J
lneg
lstore 13 /* inv */
start local 13 // long inv
28: .line 2830
aload 3 /* base */
aload 3 /* base */
arraylength
iload 6 /* modLen */
iconst_5
ishl
invokestatic java.math.BigInteger.leftShift:([III)[I
astore 15 /* a */
start local 15 // int[] a
29: .line 2832
new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 16 /* q */
start local 16 // java.math.MutableBigInteger q
30: .line 2833
new java.math.MutableBigInteger
dup
aload 15 /* a */
invokespecial java.math.MutableBigInteger.<init>:([I)V
astore 17 /* a2 */
start local 17 // java.math.MutableBigInteger a2
31: .line 2834
new java.math.MutableBigInteger
dup
aload 5 /* mod */
invokespecial java.math.MutableBigInteger.<init>:([I)V
astore 18 /* b2 */
start local 18 // java.math.MutableBigInteger b2
32: .line 2835
aload 18 /* b2 */
invokevirtual java.math.MutableBigInteger.normalize:()V
33: .line 2838
aload 17 /* a2 */
aload 18 /* b2 */
aload 16 /* q */
invokevirtual java.math.MutableBigInteger.divide:(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger;
astore 19 /* r */
start local 19 // java.math.MutableBigInteger r
34: .line 2839
aload 10 /* table */
iconst_0
aload 19 /* r */
invokevirtual java.math.MutableBigInteger.toIntArray:()[I
aastore
35: .line 2842
aload 10 /* table */
iconst_0
aaload
arraylength
iload 6 /* modLen */
if_icmpge 40
36: .line 2843
iload 6 /* modLen */
aload 10 /* table */
iconst_0
aaload
arraylength
isub
istore 20 /* offset */
start local 20 // int offset
37: .line 2844
iload 6 /* modLen */
newarray 10
astore 21 /* t2 */
start local 21 // int[] t2
38: .line 2845
aload 10 /* table */
iconst_0
aaload
iconst_0
aload 21 /* t2 */
iload 20 /* offset */
aload 10 /* table */
iconst_0
aaload
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
39: .line 2846
aload 10 /* table */
iconst_0
aload 21 /* t2 */
aastore
end local 21 // int[] t2
end local 20 // int offset
40: .line 2850
StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger int[] int[] int[] int int int int int[][] long long int[] java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger
StackMap stack:
aload 10 /* table */
iconst_0
aaload
aload 5 /* mod */
iload 6 /* modLen */
lload 13 /* inv */
aconst_null
invokestatic java.math.BigInteger.montgomerySquare:([I[IIJ[I)[I
astore 20 /* b */
start local 20 // int[] b
41: .line 2853
aload 20 /* b */
iload 6 /* modLen */
invokestatic java.util.Arrays.copyOf:([II)[I
astore 21 /* t */
start local 21 // int[] t
42: .line 2856
iconst_1
istore 22 /* i */
start local 22 // int i
43: goto 46
44: .line 2857
StackMap locals: int[] int[] int
StackMap stack:
aload 10 /* table */
iload 22 /* i */
aload 21 /* t */
aload 10 /* table */
iload 22 /* i */
iconst_1
isub
aaload
aload 5 /* mod */
iload 6 /* modLen */
lload 13 /* inv */
aconst_null
invokestatic java.math.BigInteger.montgomeryMultiply:([I[I[IIJ[I)[I
aastore
45: .line 2856
iinc 22 /* i */ 1
StackMap locals:
StackMap stack:
46: iload 22 /* i */
iload 9 /* tblmask */
if_icmplt 44
end local 22 // int i
47: .line 2861
iconst_1
iload 8 /* ebits */
iconst_1
isub
bipush 31
iand
ishl
istore 22 /* bitpos */
start local 22 // int bitpos
48: .line 2863
iconst_0
istore 23 /* buf */
start local 23 // int buf
49: .line 2864
aload 4 /* exp */
arraylength
istore 24 /* elen */
start local 24 // int elen
50: .line 2865
iconst_0
istore 25 /* eIndex */
start local 25 // int eIndex
51: .line 2866
iconst_0
istore 26 /* i */
start local 26 // int i
52: goto 62
53: .line 2867
StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger int[] int[] int[] int int int int int[][] long long int[] java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger int[] int[] int int int int int
StackMap stack:
iload 23 /* buf */
iconst_1
ishl
aload 4 /* exp */
iload 25 /* eIndex */
iaload
iload 22 /* bitpos */
iand
ifeq 54
iconst_1
goto 55
StackMap locals:
StackMap stack: int
54: iconst_0
StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger int[] int[] int[] int int int int int[][] long long int[] java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger int[] int[] int int int int int
StackMap stack: int int
55: ior
istore 23 /* buf */
56: .line 2868
iload 22 /* bitpos */
iconst_1
iushr
istore 22 /* bitpos */
57: .line 2869
iload 22 /* bitpos */
ifne 61
58: .line 2870
iinc 25 /* eIndex */ 1
59: .line 2871
ldc -2147483648
istore 22 /* bitpos */
60: .line 2872
iinc 24 /* elen */ -1
61: .line 2866
StackMap locals:
StackMap stack:
iinc 26 /* i */ 1
StackMap locals:
StackMap stack:
62: iload 26 /* i */
iload 7 /* wbits */
if_icmple 53
end local 26 // int i
63: .line 2876
iload 8 /* ebits */
istore 26 /* multpos */
start local 26 // int multpos
64: .line 2879
iinc 8 /* ebits */ -1
65: .line 2880
iconst_1
istore 27 /* isone */
start local 27 // boolean isone
66: .line 2882
iload 8 /* ebits */
iload 7 /* wbits */
isub
istore 26 /* multpos */
67: .line 2883
goto 70
68: .line 2884
StackMap locals: int
StackMap stack:
iload 23 /* buf */
iconst_1
iushr
istore 23 /* buf */
69: .line 2885
iinc 26 /* multpos */ 1
70: .line 2883
StackMap locals:
StackMap stack:
iload 23 /* buf */
iconst_1
iand
ifeq 68
71: .line 2888
aload 10 /* table */
iload 23 /* buf */
iconst_1
iushr
aaload
astore 28 /* mult */
start local 28 // int[] mult
72: .line 2890
iconst_0
istore 23 /* buf */
73: .line 2891
iload 26 /* multpos */
iload 8 /* ebits */
if_icmpne 75
74: .line 2892
iconst_0
istore 27 /* isone */
75: .line 2896
StackMap locals: int[]
StackMap stack:
iinc 8 /* ebits */ -1
76: .line 2898
iload 23 /* buf */
iconst_1
ishl
istore 23 /* buf */
77: .line 2900
iload 24 /* elen */
ifeq 86
78: .line 2901
iload 23 /* buf */
aload 4 /* exp */
iload 25 /* eIndex */
iaload
iload 22 /* bitpos */
iand
ifeq 79
iconst_1
goto 80
StackMap locals:
StackMap stack: int
79: iconst_0
StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger int[] int[] int[] int int int int int[][] long long int[] java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger int[] int[] int int int int int int int[]
StackMap stack: int int
80: ior
istore 23 /* buf */
81: .line 2902
iload 22 /* bitpos */
iconst_1
iushr
istore 22 /* bitpos */
82: .line 2903
iload 22 /* bitpos */
ifne 86
83: .line 2904
iinc 25 /* eIndex */ 1
84: .line 2905
ldc -2147483648
istore 22 /* bitpos */
85: .line 2906
iinc 24 /* elen */ -1
86: .line 2911
StackMap locals:
StackMap stack:
iload 23 /* buf */
iload 9 /* tblmask */
iand
ifeq 94
87: .line 2912
iload 8 /* ebits */
iload 7 /* wbits */
isub
istore 26 /* multpos */
88: .line 2913
goto 91
89: .line 2914
StackMap locals:
StackMap stack:
iload 23 /* buf */
iconst_1
iushr
istore 23 /* buf */
90: .line 2915
iinc 26 /* multpos */ 1
91: .line 2913
StackMap locals:
StackMap stack:
iload 23 /* buf */
iconst_1
iand
ifeq 89
92: .line 2917
aload 10 /* table */
iload 23 /* buf */
iconst_1
iushr
aaload
astore 28 /* mult */
93: .line 2918
iconst_0
istore 23 /* buf */
94: .line 2922
StackMap locals:
StackMap stack:
iload 8 /* ebits */
iload 26 /* multpos */
if_icmpne 102
95: .line 2923
iload 27 /* isone */
ifeq 99
96: .line 2924
aload 28 /* mult */
invokevirtual int[].clone:()Ljava/lang/Object;
checkcast int[]
astore 20 /* b */
97: .line 2925
iconst_0
istore 27 /* isone */
98: .line 2926
goto 102
99: .line 2927
StackMap locals:
StackMap stack:
aload 20 /* b */
astore 21 /* t */
100: .line 2928
aload 21 /* t */
aload 28 /* mult */
aload 5 /* mod */
iload 6 /* modLen */
lload 13 /* inv */
aload 15 /* a */
invokestatic java.math.BigInteger.montgomeryMultiply:([I[I[IIJ[I)[I
astore 15 /* a */
101: .line 2929
aload 15 /* a */
astore 21 /* t */
aload 20 /* b */
astore 15 /* a */
aload 21 /* t */
astore 20 /* b */
102: .line 2934
StackMap locals:
StackMap stack:
iload 8 /* ebits */
ifne 104
103: .line 2935
goto 109
104: .line 2938
StackMap locals:
StackMap stack:
iload 27 /* isone */
ifne 75
105: .line 2939
aload 20 /* b */
astore 21 /* t */
106: .line 2940
aload 21 /* t */
aload 5 /* mod */
iload 6 /* modLen */
lload 13 /* inv */
aload 15 /* a */
invokestatic java.math.BigInteger.montgomerySquare:([I[IIJ[I)[I
astore 15 /* a */
107: .line 2941
aload 15 /* a */
astore 21 /* t */
aload 20 /* b */
astore 15 /* a */
aload 21 /* t */
astore 20 /* b */
108: .line 2895
goto 75
109: .line 2946
StackMap locals:
StackMap stack:
iconst_2
iload 6 /* modLen */
imul
newarray 10
astore 29 /* t2 */
start local 29 // int[] t2
110: .line 2947
aload 20 /* b */
iconst_0
aload 29 /* t2 */
iload 6 /* modLen */
iload 6 /* modLen */
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
111: .line 2949
aload 29 /* t2 */
aload 5 /* mod */
iload 6 /* modLen */
lload 13 /* inv */
l2i
invokestatic java.math.BigInteger.montReduce:([I[III)[I
astore 20 /* b */
112: .line 2951
aload 20 /* b */
iload 6 /* modLen */
invokestatic java.util.Arrays.copyOf:([II)[I
astore 29 /* t2 */
113: .line 2953
new java.math.BigInteger
dup
iconst_1
aload 29 /* t2 */
invokespecial java.math.BigInteger.<init>:(I[I)V
areturn
end local 29 // int[] t2
end local 28 // int[] mult
end local 27 // boolean isone
end local 26 // int multpos
end local 25 // int eIndex
end local 24 // int elen
end local 23 // int buf
end local 22 // int bitpos
end local 21 // int[] t
end local 20 // int[] b
end local 19 // java.math.MutableBigInteger r
end local 18 // java.math.MutableBigInteger b2
end local 17 // java.math.MutableBigInteger a2
end local 16 // java.math.MutableBigInteger q
end local 15 // int[] a
end local 13 // long inv
end local 11 // long n0
end local 10 // int[][] table
end local 9 // int tblmask
end local 8 // int ebits
end local 7 // int wbits
end local 6 // int modLen
end local 5 // int[] mod
end local 4 // int[] exp
end local 3 // int[] base
end local 2 // java.math.BigInteger z
end local 1 // java.math.BigInteger y
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 114 0 this Ljava/math/BigInteger;
0 114 1 y Ljava/math/BigInteger;
0 114 2 z Ljava/math/BigInteger;
5 114 3 base [I
6 114 4 exp [I
7 114 5 mod [I
8 114 6 modLen I
10 13 7 x [I
14 114 7 wbits I
15 114 8 ebits I
20 114 9 tblmask I
21 114 10 table [[I
22 26 11 i I
27 114 11 n0 J
28 114 13 inv J
29 114 15 a [I
30 114 16 q Ljava/math/MutableBigInteger;
31 114 17 a2 Ljava/math/MutableBigInteger;
32 114 18 b2 Ljava/math/MutableBigInteger;
34 114 19 r Ljava/math/MutableBigInteger;
37 40 20 offset I
38 40 21 t2 [I
41 114 20 b [I
42 114 21 t [I
43 47 22 i I
48 114 22 bitpos I
49 114 23 buf I
50 114 24 elen I
51 114 25 eIndex I
52 63 26 i I
64 114 26 multpos I
66 114 27 isone Z
72 114 28 mult [I
110 114 29 t2 [I
MethodParameters:
Name Flags
y
z
private static int[] montReduce(int[], int[], int, int);
descriptor: ([I[III)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=9, args_size=4
start local 0 // int[] n
start local 1 // int[] mod
start local 2 // int mlen
start local 3 // int inv
0: .line 2961
iconst_0
istore 4 /* c */
start local 4 // int c
1: .line 2962
iload 2 /* mlen */
istore 5 /* len */
start local 5 // int len
2: .line 2963
iconst_0
istore 6 /* offset */
start local 6 // int offset
3: .line 2966
StackMap locals: int int int
StackMap stack:
aload 0 /* n */
aload 0 /* n */
arraylength
iconst_1
isub
iload 6 /* offset */
isub
iaload
istore 7 /* nEnd */
start local 7 // int nEnd
4: .line 2967
aload 0 /* n */
aload 1 /* mod */
iload 6 /* offset */
iload 2 /* mlen */
iload 3 /* inv */
iload 7 /* nEnd */
imul
invokestatic java.math.BigInteger.mulAdd:([I[IIII)I
istore 8 /* carry */
start local 8 // int carry
5: .line 2968
iload 4 /* c */
aload 0 /* n */
iload 6 /* offset */
iload 2 /* mlen */
iload 8 /* carry */
invokestatic java.math.BigInteger.addOne:([IIII)I
iadd
istore 4 /* c */
6: .line 2969
iinc 6 /* offset */ 1
end local 8 // int carry
end local 7 // int nEnd
7: .line 2970
iinc 5 /* len */ -1
iload 5 /* len */
8: .line 2965
ifgt 3
9: .line 2972
goto 11
10: .line 2973
StackMap locals:
StackMap stack:
iload 4 /* c */
aload 0 /* n */
aload 1 /* mod */
iload 2 /* mlen */
invokestatic java.math.BigInteger.subN:([I[II)I
iadd
istore 4 /* c */
11: .line 2972
StackMap locals:
StackMap stack:
iload 4 /* c */
ifgt 10
12: .line 2975
goto 14
13: .line 2976
StackMap locals:
StackMap stack:
aload 0 /* n */
aload 1 /* mod */
iload 2 /* mlen */
invokestatic java.math.BigInteger.subN:([I[II)I
pop
14: .line 2975
StackMap locals:
StackMap stack:
aload 0 /* n */
aload 1 /* mod */
iload 2 /* mlen */
invokestatic java.math.BigInteger.intArrayCmpToLen:([I[II)I
ifge 13
15: .line 2978
aload 0 /* n */
areturn
end local 6 // int offset
end local 5 // int len
end local 4 // int c
end local 3 // int inv
end local 2 // int mlen
end local 1 // int[] mod
end local 0 // int[] n
LocalVariableTable:
Start End Slot Name Signature
0 16 0 n [I
0 16 1 mod [I
0 16 2 mlen I
0 16 3 inv I
1 16 4 c I
2 16 5 len I
3 16 6 offset I
4 7 7 nEnd I
5 7 8 carry I
MethodParameters:
Name Flags
n
mod
mlen
inv
private static int intArrayCmpToLen(int[], int[], int);
descriptor: ([I[II)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=8, args_size=3
start local 0 // int[] arg1
start local 1 // int[] arg2
start local 2 // int len
0: .line 2987
iconst_0
istore 3 /* i */
start local 3 // int i
1: goto 9
2: .line 2988
StackMap locals: int
StackMap stack:
aload 0 /* arg1 */
iload 3 /* i */
iaload
i2l
ldc 4294967295
land
lstore 4 /* b1 */
start local 4 // long b1
3: .line 2989
aload 1 /* arg2 */
iload 3 /* i */
iaload
i2l
ldc 4294967295
land
lstore 6 /* b2 */
start local 6 // long b2
4: .line 2990
lload 4 /* b1 */
lload 6 /* b2 */
lcmp
ifge 6
5: .line 2991
iconst_m1
ireturn
6: .line 2992
StackMap locals: long long
StackMap stack:
lload 4 /* b1 */
lload 6 /* b2 */
lcmp
ifle 8
7: .line 2993
iconst_1
ireturn
end local 6 // long b2
end local 4 // long b1
8: .line 2987
StackMap locals:
StackMap stack:
iinc 3 /* i */ 1
StackMap locals:
StackMap stack:
9: iload 3 /* i */
iload 2 /* len */
if_icmplt 2
end local 3 // int i
10: .line 2995
iconst_0
ireturn
end local 2 // int len
end local 1 // int[] arg2
end local 0 // int[] arg1
LocalVariableTable:
Start End Slot Name Signature
0 11 0 arg1 [I
0 11 1 arg2 [I
0 11 2 len I
1 10 3 i I
3 8 4 b1 J
4 8 6 b2 J
MethodParameters:
Name Flags
arg1
arg2
len
private static int subN(int[], int[], int);
descriptor: ([I[II)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=5, args_size=3
start local 0 // int[] a
start local 1 // int[] b
start local 2 // int len
0: .line 3002
lconst_0
lstore 3 /* sum */
start local 3 // long sum
1: .line 3004
goto 8
2: .line 3005
StackMap locals: long
StackMap stack:
aload 0 /* a */
iload 2 /* len */
iaload
i2l
ldc 4294967295
land
3: .line 3006
aload 1 /* b */
iload 2 /* len */
iaload
i2l
ldc 4294967295
land
4: .line 3005
lsub
5: .line 3006
lload 3 /* sum */
bipush 32
lshr
6: .line 3005
ladd
lstore 3 /* sum */
7: .line 3007
aload 0 /* a */
iload 2 /* len */
lload 3 /* sum */
l2i
iastore
8: .line 3004
StackMap locals:
StackMap stack:
iinc 2 /* len */ -1
iload 2 /* len */
ifge 2
9: .line 3010
lload 3 /* sum */
bipush 32
lshr
l2i
ireturn
end local 3 // long sum
end local 2 // int len
end local 1 // int[] b
end local 0 // int[] a
LocalVariableTable:
Start End Slot Name Signature
0 10 0 a [I
0 10 1 b [I
0 10 2 len I
1 10 3 sum J
MethodParameters:
Name Flags
a
b
len
static int mulAdd(int[], int[], int, int, int);
descriptor: ([I[IIII)I
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=5, args_size=5
start local 0 // int[] out
start local 1 // int[] in
start local 2 // int offset
start local 3 // int len
start local 4 // int k
0: .line 3017
aload 0 /* out */
aload 1 /* in */
iload 2 /* offset */
iload 3 /* len */
iload 4 /* k */
invokestatic java.math.BigInteger.implMulAddCheck:([I[IIII)V
1: .line 3018
aload 0 /* out */
aload 1 /* in */
iload 2 /* offset */
iload 3 /* len */
iload 4 /* k */
invokestatic java.math.BigInteger.implMulAdd:([I[IIII)I
ireturn
end local 4 // int k
end local 3 // int len
end local 2 // int offset
end local 1 // int[] in
end local 0 // int[] out
LocalVariableTable:
Start End Slot Name Signature
0 2 0 out [I
0 2 1 in [I
0 2 2 offset I
0 2 3 len I
0 2 4 k I
MethodParameters:
Name Flags
out
in
offset
len
k
private static void implMulAddCheck(int[], int[], int, int, int);
descriptor: ([I[IIII)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=5, args_size=5
start local 0 // int[] out
start local 1 // int[] in
start local 2 // int offset
start local 3 // int len
start local 4 // int k
0: .line 3025
iload 3 /* len */
aload 1 /* in */
arraylength
if_icmple 2
1: .line 3026
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "input length is out of bound: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 3 /* len */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " > "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1 /* in */
arraylength
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: .line 3028
StackMap locals:
StackMap stack:
iload 2 /* offset */
ifge 4
3: .line 3029
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "input offset is invalid: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 2 /* offset */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
4: .line 3031
StackMap locals:
StackMap stack:
iload 2 /* offset */
aload 0 /* out */
arraylength
iconst_1
isub
if_icmple 6
5: .line 3032
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "input offset is out of bound: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 2 /* offset */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " > "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0 /* out */
arraylength
iconst_1
isub
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
6: .line 3034
StackMap locals:
StackMap stack:
iload 3 /* len */
aload 0 /* out */
arraylength
iload 2 /* offset */
isub
if_icmple 8
7: .line 3035
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "input len is out of bound: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 3 /* len */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " > "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0 /* out */
arraylength
iload 2 /* offset */
isub
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
8: .line 3037
StackMap locals:
StackMap stack:
return
end local 4 // int k
end local 3 // int len
end local 2 // int offset
end local 1 // int[] in
end local 0 // int[] out
LocalVariableTable:
Start End Slot Name Signature
0 9 0 out [I
0 9 1 in [I
0 9 2 offset I
0 9 3 len I
0 9 4 k I
MethodParameters:
Name Flags
out
in
offset
len
k
private static int implMulAdd(int[], int[], int, int, int);
descriptor: ([I[IIII)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=12, args_size=5
start local 0 // int[] out
start local 1 // int[] in
start local 2 // int offset
start local 3 // int len
start local 4 // int k
0: .line 3043
iload 4 /* k */
i2l
ldc 4294967295
land
lstore 5 /* kLong */
start local 5 // long kLong
1: .line 3044
lconst_0
lstore 7 /* carry */
start local 7 // long carry
2: .line 3046
aload 0 /* out */
arraylength
iload 2 /* offset */
isub
iconst_1
isub
istore 2 /* offset */
3: .line 3047
iload 3 /* len */
iconst_1
isub
istore 9 /* j */
start local 9 // int j
4: goto 13
5: .line 3048
StackMap locals: long long int
StackMap stack:
aload 1 /* in */
iload 9 /* j */
iaload
i2l
ldc 4294967295
land
lload 5 /* kLong */
lmul
6: .line 3049
aload 0 /* out */
iload 2 /* offset */
iaload
i2l
ldc 4294967295
land
7: .line 3048
ladd
8: .line 3049
lload 7 /* carry */
9: .line 3048
ladd
lstore 10 /* product */
start local 10 // long product
10: .line 3050
aload 0 /* out */
iload 2 /* offset */
iinc 2 /* offset */ -1
lload 10 /* product */
l2i
iastore
11: .line 3051
lload 10 /* product */
bipush 32
lushr
lstore 7 /* carry */
end local 10 // long product
12: .line 3047
iinc 9 /* j */ -1
StackMap locals:
StackMap stack:
13: iload 9 /* j */
ifge 5
end local 9 // int j
14: .line 3053
lload 7 /* carry */
l2i
ireturn
end local 7 // long carry
end local 5 // long kLong
end local 4 // int k
end local 3 // int len
end local 2 // int offset
end local 1 // int[] in
end local 0 // int[] out
LocalVariableTable:
Start End Slot Name Signature
0 15 0 out [I
0 15 1 in [I
0 15 2 offset I
0 15 3 len I
0 15 4 k I
1 15 5 kLong J
2 15 7 carry J
4 14 9 j I
10 12 10 product J
MethodParameters:
Name Flags
out
in
offset
len
k
static int addOne(int[], int, int, int);
descriptor: ([IIII)I
flags: (0x0008) ACC_STATIC
Code:
stack=6, locals=6, args_size=4
start local 0 // int[] a
start local 1 // int offset
start local 2 // int mlen
start local 3 // int carry
0: .line 3061
aload 0 /* a */
arraylength
iconst_1
isub
iload 2 /* mlen */
isub
iload 1 /* offset */
isub
istore 1 /* offset */
1: .line 3062
aload 0 /* a */
iload 1 /* offset */
iaload
i2l
ldc 4294967295
land
iload 3 /* carry */
i2l
ldc 4294967295
land
ladd
lstore 4 /* t */
start local 4 // long t
2: .line 3064
aload 0 /* a */
iload 1 /* offset */
lload 4 /* t */
l2i
iastore
3: .line 3065
lload 4 /* t */
bipush 32
lushr
lconst_0
lcmp
ifne 10
4: .line 3066
iconst_0
ireturn
5: .line 3068
StackMap locals: long
StackMap stack:
iinc 1 /* offset */ -1
iload 1 /* offset */
ifge 7
6: .line 3069
iconst_1
ireturn
7: .line 3071
StackMap locals:
StackMap stack:
aload 0 /* a */
iload 1 /* offset */
dup2
iaload
iconst_1
iadd
iastore
8: .line 3072
aload 0 /* a */
iload 1 /* offset */
iaload
ifeq 10
9: .line 3073
iconst_0
ireturn
10: .line 3067
StackMap locals:
StackMap stack:
iinc 2 /* mlen */ -1
iload 2 /* mlen */
ifge 5
11: .line 3076
iconst_1
ireturn
end local 4 // long t
end local 3 // int carry
end local 2 // int mlen
end local 1 // int offset
end local 0 // int[] a
LocalVariableTable:
Start End Slot Name Signature
0 12 0 a [I
0 12 1 offset I
0 12 2 mlen I
0 12 3 carry I
2 12 4 t J
MethodParameters:
Name Flags
a
offset
mlen
carry
private java.math.BigInteger modPow2(java.math.BigInteger, int);
descriptor: (Ljava/math/BigInteger;I)Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=7, args_size=3
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger exponent
start local 2 // int p
0: .line 3087
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
astore 3 /* result */
start local 3 // java.math.BigInteger result
1: .line 3088
aload 0 /* this */
iload 2 /* p */
invokevirtual java.math.BigInteger.mod2:(I)Ljava/math/BigInteger;
astore 4 /* baseToPow2 */
start local 4 // java.math.BigInteger baseToPow2
2: .line 3089
iconst_0
istore 5 /* expOffset */
start local 5 // int expOffset
3: .line 3091
aload 1 /* exponent */
invokevirtual java.math.BigInteger.bitLength:()I
istore 6 /* limit */
start local 6 // int limit
4: .line 3093
aload 0 /* this */
iconst_0
invokevirtual java.math.BigInteger.testBit:(I)Z
ifeq 14
5: .line 3094
iload 2 /* p */
iconst_1
isub
iload 6 /* limit */
if_icmpge 6
iload 2 /* p */
iconst_1
isub
goto 7
StackMap locals: java.math.BigInteger java.math.BigInteger int java.math.BigInteger java.math.BigInteger int int
StackMap stack:
6: iload 6 /* limit */
StackMap locals:
StackMap stack: int
7: istore 6 /* limit */
8: .line 3096
goto 14
9: .line 3097
StackMap locals:
StackMap stack:
aload 1 /* exponent */
iload 5 /* expOffset */
invokevirtual java.math.BigInteger.testBit:(I)Z
ifeq 11
10: .line 3098
aload 3 /* result */
aload 4 /* baseToPow2 */
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
iload 2 /* p */
invokevirtual java.math.BigInteger.mod2:(I)Ljava/math/BigInteger;
astore 3 /* result */
11: .line 3099
StackMap locals:
StackMap stack:
iinc 5 /* expOffset */ 1
12: .line 3100
iload 5 /* expOffset */
iload 6 /* limit */
if_icmpge 14
13: .line 3101
aload 4 /* baseToPow2 */
invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
iload 2 /* p */
invokevirtual java.math.BigInteger.mod2:(I)Ljava/math/BigInteger;
astore 4 /* baseToPow2 */
14: .line 3096
StackMap locals:
StackMap stack:
iload 5 /* expOffset */
iload 6 /* limit */
if_icmplt 9
15: .line 3104
aload 3 /* result */
areturn
end local 6 // int limit
end local 5 // int expOffset
end local 4 // java.math.BigInteger baseToPow2
end local 3 // java.math.BigInteger result
end local 2 // int p
end local 1 // java.math.BigInteger exponent
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Ljava/math/BigInteger;
0 16 1 exponent Ljava/math/BigInteger;
0 16 2 p I
1 16 3 result Ljava/math/BigInteger;
2 16 4 baseToPow2 Ljava/math/BigInteger;
3 16 5 expOffset I
4 16 6 limit I
MethodParameters:
Name Flags
exponent
p
private java.math.BigInteger mod2(int);
descriptor: (I)Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=8, locals=5, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // int p
0: .line 3112
aload 0 /* this */
invokevirtual java.math.BigInteger.bitLength:()I
iload 1 /* p */
if_icmpgt 2
1: .line 3113
aload 0 /* this */
areturn
2: .line 3116
StackMap locals:
StackMap stack:
iload 1 /* p */
bipush 31
iadd
iconst_5
iushr
istore 2 /* numInts */
start local 2 // int numInts
3: .line 3117
iload 2 /* numInts */
newarray 10
astore 3 /* mag */
start local 3 // int[] mag
4: .line 3118
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
iload 2 /* numInts */
isub
aload 3 /* mag */
iconst_0
iload 2 /* numInts */
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
5: .line 3121
iload 2 /* numInts */
iconst_5
ishl
iload 1 /* p */
isub
istore 4 /* excessBits */
start local 4 // int excessBits
6: .line 3122
aload 3 /* mag */
iconst_0
dup2
iaload
i2l
lconst_1
bipush 32
iload 4 /* excessBits */
isub
lshl
lconst_1
lsub
land
l2i
iastore
7: .line 3124
aload 3 /* mag */
iconst_0
iaload
ifne 8
new java.math.BigInteger
dup
iconst_1
aload 3 /* mag */
invokespecial java.math.BigInteger.<init>:(I[I)V
goto 9
StackMap locals: int int[] int
StackMap stack:
8: new java.math.BigInteger
dup
aload 3 /* mag */
iconst_1
invokespecial java.math.BigInteger.<init>:([II)V
StackMap locals:
StackMap stack: java.math.BigInteger
9: areturn
end local 4 // int excessBits
end local 3 // int[] mag
end local 2 // int numInts
end local 1 // int p
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Ljava/math/BigInteger;
0 10 1 p I
3 10 2 numInts I
4 10 3 mag [I
6 10 4 excessBits I
MethodParameters:
Name Flags
p
public java.math.BigInteger modInverse(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=6, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger m
0: .line 3137
aload 1 /* m */
getfield java.math.BigInteger.signum:I
iconst_1
if_icmpeq 2
1: .line 3138
new java.lang.ArithmeticException
dup
ldc "BigInteger: modulus not positive"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 3140
StackMap locals:
StackMap stack:
aload 1 /* m */
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ifeq 4
3: .line 3141
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
4: .line 3144
StackMap locals:
StackMap stack:
aload 0 /* this */
astore 2 /* modVal */
start local 2 // java.math.BigInteger modVal
5: .line 3145
aload 0 /* this */
getfield java.math.BigInteger.signum:I
iflt 6
aload 0 /* this */
aload 1 /* m */
invokevirtual java.math.BigInteger.compareMagnitude:(Ljava/math/BigInteger;)I
iflt 7
6: .line 3146
StackMap locals: java.math.BigInteger
StackMap stack:
aload 0 /* this */
aload 1 /* m */
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 2 /* modVal */
7: .line 3148
StackMap locals:
StackMap stack:
aload 2 /* modVal */
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ifeq 9
8: .line 3149
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
areturn
9: .line 3151
StackMap locals:
StackMap stack:
new java.math.MutableBigInteger
dup
aload 2 /* modVal */
invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
astore 3 /* a */
start local 3 // java.math.MutableBigInteger a
10: .line 3152
new java.math.MutableBigInteger
dup
aload 1 /* m */
invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
astore 4 /* b */
start local 4 // java.math.MutableBigInteger b
11: .line 3154
aload 3 /* a */
aload 4 /* b */
invokevirtual java.math.MutableBigInteger.mutableModInverse:(Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger;
astore 5 /* result */
start local 5 // java.math.MutableBigInteger result
12: .line 3155
aload 5 /* result */
iconst_1
invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
areturn
end local 5 // java.math.MutableBigInteger result
end local 4 // java.math.MutableBigInteger b
end local 3 // java.math.MutableBigInteger a
end local 2 // java.math.BigInteger modVal
end local 1 // java.math.BigInteger m
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Ljava/math/BigInteger;
0 13 1 m Ljava/math/BigInteger;
5 13 2 modVal Ljava/math/BigInteger;
10 13 3 a Ljava/math/MutableBigInteger;
11 13 4 b Ljava/math/MutableBigInteger;
12 13 5 result Ljava/math/MutableBigInteger;
MethodParameters:
Name Flags
m
public java.math.BigInteger shiftLeft(int);
descriptor: (I)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // int n
0: .line 3171
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 3172
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
2: .line 3173
StackMap locals:
StackMap stack:
iload 1 /* n */
ifle 4
3: .line 3174
new java.math.BigInteger
dup
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 1 /* n */
invokestatic java.math.BigInteger.shiftLeft:([II)[I
aload 0 /* this */
getfield java.math.BigInteger.signum:I
invokespecial java.math.BigInteger.<init>:([II)V
areturn
4: .line 3175
StackMap locals:
StackMap stack:
iload 1 /* n */
ifne 6
5: .line 3176
aload 0 /* this */
areturn
6: .line 3180
StackMap locals:
StackMap stack:
aload 0 /* this */
iload 1 /* n */
ineg
invokevirtual java.math.BigInteger.shiftRightImpl:(I)Ljava/math/BigInteger;
areturn
end local 1 // int n
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljava/math/BigInteger;
0 7 1 n I
MethodParameters:
Name Flags
n
private static int[] shiftLeft(int[], int);
descriptor: ([II)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=10, args_size=2
start local 0 // int[] mag
start local 1 // int n
0: .line 3194
iload 1 /* n */
iconst_5
iushr
istore 2 /* nInts */
start local 2 // int nInts
1: .line 3195
iload 1 /* n */
bipush 31
iand
istore 3 /* nBits */
start local 3 // int nBits
2: .line 3196
aload 0 /* mag */
arraylength
istore 4 /* magLen */
start local 4 // int magLen
3: .line 3197
aconst_null
astore 5 /* newMag */
start local 5 // int[] newMag
4: .line 3199
iload 3 /* nBits */
ifne 8
5: .line 3200
iload 4 /* magLen */
iload 2 /* nInts */
iadd
newarray 10
astore 5 /* newMag */
6: .line 3201
aload 0 /* mag */
iconst_0
aload 5 /* newMag */
iconst_0
iload 4 /* magLen */
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
7: .line 3202
goto 21
8: .line 3203
StackMap locals: int[] int int int int int[]
StackMap stack:
iconst_0
istore 6 /* i */
start local 6 // int i
9: .line 3204
bipush 32
iload 3 /* nBits */
isub
istore 7 /* nBits2 */
start local 7 // int nBits2
10: .line 3205
aload 0 /* mag */
iconst_0
iaload
iload 7 /* nBits2 */
iushr
istore 8 /* highBits */
start local 8 // int highBits
11: .line 3206
iload 8 /* highBits */
ifeq 15
12: .line 3207
iload 4 /* magLen */
iload 2 /* nInts */
iadd
iconst_1
iadd
newarray 10
astore 5 /* newMag */
13: .line 3208
aload 5 /* newMag */
iload 6 /* i */
iinc 6 /* i */ 1
iload 8 /* highBits */
iastore
14: .line 3209
goto 16
15: .line 3210
StackMap locals: int int int
StackMap stack:
iload 4 /* magLen */
iload 2 /* nInts */
iadd
newarray 10
astore 5 /* newMag */
16: .line 3212
StackMap locals:
StackMap stack:
iconst_0
istore 9 /* j */
start local 9 // int j
17: .line 3213
goto 19
18: .line 3214
StackMap locals: int
StackMap stack:
aload 5 /* newMag */
iload 6 /* i */
iinc 6 /* i */ 1
aload 0 /* mag */
iload 9 /* j */
iinc 9 /* j */ 1
iaload
iload 3 /* nBits */
ishl
aload 0 /* mag */
iload 9 /* j */
iaload
iload 7 /* nBits2 */
iushr
ior
iastore
19: .line 3213
StackMap locals:
StackMap stack:
iload 9 /* j */
iload 4 /* magLen */
iconst_1
isub
if_icmplt 18
20: .line 3215
aload 5 /* newMag */
iload 6 /* i */
aload 0 /* mag */
iload 9 /* j */
iaload
iload 3 /* nBits */
ishl
iastore
end local 9 // int j
end local 8 // int highBits
end local 7 // int nBits2
end local 6 // int i
21: .line 3217
StackMap locals: int[] int int int int int[]
StackMap stack:
aload 5 /* newMag */
areturn
end local 5 // int[] newMag
end local 4 // int magLen
end local 3 // int nBits
end local 2 // int nInts
end local 1 // int n
end local 0 // int[] mag
LocalVariableTable:
Start End Slot Name Signature
0 22 0 mag [I
0 22 1 n I
1 22 2 nInts I
2 22 3 nBits I
3 22 4 magLen I
4 22 5 newMag [I
9 21 6 i I
10 21 7 nBits2 I
11 21 8 highBits I
17 21 9 j I
MethodParameters:
Name Flags
mag
n
public java.math.BigInteger shiftRight(int);
descriptor: (I)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // int n
0: .line 3231
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 3232
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
2: .line 3233
StackMap locals:
StackMap stack:
iload 1 /* n */
ifle 4
3: .line 3234
aload 0 /* this */
iload 1 /* n */
invokevirtual java.math.BigInteger.shiftRightImpl:(I)Ljava/math/BigInteger;
areturn
4: .line 3235
StackMap locals:
StackMap stack:
iload 1 /* n */
ifne 6
5: .line 3236
aload 0 /* this */
areturn
6: .line 3240
StackMap locals:
StackMap stack:
new java.math.BigInteger
dup
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 1 /* n */
ineg
invokestatic java.math.BigInteger.shiftLeft:([II)[I
aload 0 /* this */
getfield java.math.BigInteger.signum:I
invokespecial java.math.BigInteger.<init>:([II)V
areturn
end local 1 // int n
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljava/math/BigInteger;
0 7 1 n I
MethodParameters:
Name Flags
n
private java.math.BigInteger shiftRightImpl(int);
descriptor: (I)Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=10, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // int n
0: .line 3253
iload 1 /* n */
iconst_5
iushr
istore 2 /* nInts */
start local 2 // int nInts
1: .line 3254
iload 1 /* n */
bipush 31
iand
istore 3 /* nBits */
start local 3 // int nBits
2: .line 3255
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 4 /* magLen */
start local 4 // int magLen
3: .line 3256
aconst_null
astore 5 /* newMag */
start local 5 // int[] newMag
4: .line 3259
iload 2 /* nInts */
iload 4 /* magLen */
if_icmplt 8
5: .line 3260
aload 0 /* this */
getfield java.math.BigInteger.signum:I
iflt 6
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
goto 7
StackMap locals: java.math.BigInteger int int int int int[]
StackMap stack:
6: getstatic java.math.BigInteger.negConst:[Ljava/math/BigInteger;
iconst_1
aaload
StackMap locals:
StackMap stack: java.math.BigInteger
7: areturn
8: .line 3262
StackMap locals:
StackMap stack:
iload 3 /* nBits */
ifne 12
9: .line 3263
iload 4 /* magLen */
iload 2 /* nInts */
isub
istore 6 /* newMagLen */
start local 6 // int newMagLen
10: .line 3264
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 6 /* newMagLen */
invokestatic java.util.Arrays.copyOf:([II)[I
astore 5 /* newMag */
end local 6 // int newMagLen
11: .line 3265
goto 24
12: .line 3266
StackMap locals:
StackMap stack:
iconst_0
istore 6 /* i */
start local 6 // int i
13: .line 3267
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
iaload
iload 3 /* nBits */
iushr
istore 7 /* highBits */
start local 7 // int highBits
14: .line 3268
iload 7 /* highBits */
ifeq 18
15: .line 3269
iload 4 /* magLen */
iload 2 /* nInts */
isub
newarray 10
astore 5 /* newMag */
16: .line 3270
aload 5 /* newMag */
iload 6 /* i */
iinc 6 /* i */ 1
iload 7 /* highBits */
iastore
17: .line 3271
goto 19
18: .line 3272
StackMap locals: int int
StackMap stack:
iload 4 /* magLen */
iload 2 /* nInts */
isub
iconst_1
isub
newarray 10
astore 5 /* newMag */
19: .line 3275
StackMap locals:
StackMap stack:
bipush 32
iload 3 /* nBits */
isub
istore 8 /* nBits2 */
start local 8 // int nBits2
20: .line 3276
iconst_0
istore 9 /* j */
start local 9 // int j
21: .line 3277
goto 23
22: .line 3278
StackMap locals: int int
StackMap stack:
aload 5 /* newMag */
iload 6 /* i */
iinc 6 /* i */ 1
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 9 /* j */
iinc 9 /* j */ 1
iaload
iload 8 /* nBits2 */
ishl
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 9 /* j */
iaload
iload 3 /* nBits */
iushr
ior
iastore
23: .line 3277
StackMap locals:
StackMap stack:
iload 9 /* j */
iload 4 /* magLen */
iload 2 /* nInts */
isub
iconst_1
isub
if_icmplt 22
end local 9 // int j
end local 8 // int nBits2
end local 7 // int highBits
end local 6 // int i
24: .line 3281
StackMap locals: java.math.BigInteger int int int int int[]
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifge 40
25: .line 3283
iconst_0
istore 6 /* onesLost */
start local 6 // boolean onesLost
26: .line 3284
iload 4 /* magLen */
iconst_1
isub
istore 7 /* i */
start local 7 // int i
27: iload 4 /* magLen */
iload 2 /* nInts */
isub
istore 8 /* j */
start local 8 // int j
28: goto 33
29: .line 3285
StackMap locals: int int int
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 7 /* i */
iaload
ifeq 30
iconst_1
goto 31
StackMap locals:
StackMap stack:
30: iconst_0
StackMap locals:
StackMap stack: int
31: istore 6 /* onesLost */
32: .line 3284
iinc 7 /* i */ -1
StackMap locals:
StackMap stack:
33: iload 7 /* i */
iload 8 /* j */
if_icmplt 34
iload 6 /* onesLost */
ifeq 29
end local 8 // int j
end local 7 // int i
34: .line 3286
StackMap locals:
StackMap stack:
iload 6 /* onesLost */
ifne 38
iload 3 /* nBits */
ifeq 38
35: .line 3287
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 4 /* magLen */
iload 2 /* nInts */
isub
iconst_1
isub
iaload
bipush 32
iload 3 /* nBits */
isub
ishl
ifeq 36
iconst_1
goto 37
StackMap locals:
StackMap stack:
36: iconst_0
StackMap locals:
StackMap stack: int
37: istore 6 /* onesLost */
38: .line 3289
StackMap locals:
StackMap stack:
iload 6 /* onesLost */
ifeq 40
39: .line 3290
aload 0 /* this */
aload 5 /* newMag */
invokevirtual java.math.BigInteger.javaIncrement:([I)[I
astore 5 /* newMag */
end local 6 // boolean onesLost
40: .line 3293
StackMap locals:
StackMap stack:
new java.math.BigInteger
dup
aload 5 /* newMag */
aload 0 /* this */
getfield java.math.BigInteger.signum:I
invokespecial java.math.BigInteger.<init>:([II)V
areturn
end local 5 // int[] newMag
end local 4 // int magLen
end local 3 // int nBits
end local 2 // int nInts
end local 1 // int n
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 41 0 this Ljava/math/BigInteger;
0 41 1 n I
1 41 2 nInts I
2 41 3 nBits I
3 41 4 magLen I
4 41 5 newMag [I
10 11 6 newMagLen I
13 24 6 i I
14 24 7 highBits I
20 24 8 nBits2 I
21 24 9 j I
26 40 6 onesLost Z
27 34 7 i I
28 34 8 j I
MethodParameters:
Name Flags
n
int[] javaIncrement(int[]);
descriptor: ([I)[I
flags: (0x0000)
Code:
stack=4, locals=4, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // int[] val
0: .line 3297
iconst_0
istore 2 /* lastSum */
start local 2 // int lastSum
1: .line 3298
aload 1 /* val */
arraylength
iconst_1
isub
istore 3 /* i */
start local 3 // int i
2: goto 5
3: .line 3299
StackMap locals: int int
StackMap stack:
aload 1 /* val */
iload 3 /* i */
dup2
iaload
iconst_1
iadd
dup_x2
iastore
istore 2 /* lastSum */
4: .line 3298
iinc 3 /* i */ -1
StackMap locals:
StackMap stack:
5: iload 3 /* i */
iflt 6
iload 2 /* lastSum */
ifeq 3
end local 3 // int i
6: .line 3300
StackMap locals:
StackMap stack:
iload 2 /* lastSum */
ifne 9
7: .line 3301
aload 1 /* val */
arraylength
iconst_1
iadd
newarray 10
astore 1 /* val */
8: .line 3302
aload 1 /* val */
iconst_0
iconst_1
iastore
9: .line 3304
StackMap locals:
StackMap stack:
aload 1 /* val */
areturn
end local 2 // int lastSum
end local 1 // int[] val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Ljava/math/BigInteger;
0 10 1 val [I
1 10 2 lastSum I
2 6 3 i I
MethodParameters:
Name Flags
val
public java.math.BigInteger and(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 3318
aload 0 /* this */
invokevirtual java.math.BigInteger.intLength:()I
aload 1 /* val */
invokevirtual java.math.BigInteger.intLength:()I
invokestatic java.lang.Math.max:(II)I
newarray 10
astore 2 /* result */
start local 2 // int[] result
1: .line 3319
iconst_0
istore 3 /* i */
start local 3 // int i
2: goto 7
3: .line 3320
StackMap locals: int[] int
StackMap stack:
aload 2 /* result */
iload 3 /* i */
aload 0 /* this */
aload 2 /* result */
arraylength
iload 3 /* i */
isub
iconst_1
isub
invokevirtual java.math.BigInteger.getInt:(I)I
4: .line 3321
aload 1 /* val */
aload 2 /* result */
arraylength
iload 3 /* i */
isub
iconst_1
isub
invokevirtual java.math.BigInteger.getInt:(I)I
iand
5: .line 3320
iastore
6: .line 3319
iinc 3 /* i */ 1
StackMap locals:
StackMap stack:
7: iload 3 /* i */
aload 2 /* result */
arraylength
if_icmplt 3
end local 3 // int i
8: .line 3323
aload 2 /* result */
invokestatic java.math.BigInteger.valueOf:([I)Ljava/math/BigInteger;
areturn
end local 2 // int[] result
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljava/math/BigInteger;
0 9 1 val Ljava/math/BigInteger;
1 9 2 result [I
2 8 3 i I
MethodParameters:
Name Flags
val
public java.math.BigInteger or(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 3335
aload 0 /* this */
invokevirtual java.math.BigInteger.intLength:()I
aload 1 /* val */
invokevirtual java.math.BigInteger.intLength:()I
invokestatic java.lang.Math.max:(II)I
newarray 10
astore 2 /* result */
start local 2 // int[] result
1: .line 3336
iconst_0
istore 3 /* i */
start local 3 // int i
2: goto 7
3: .line 3337
StackMap locals: int[] int
StackMap stack:
aload 2 /* result */
iload 3 /* i */
aload 0 /* this */
aload 2 /* result */
arraylength
iload 3 /* i */
isub
iconst_1
isub
invokevirtual java.math.BigInteger.getInt:(I)I
4: .line 3338
aload 1 /* val */
aload 2 /* result */
arraylength
iload 3 /* i */
isub
iconst_1
isub
invokevirtual java.math.BigInteger.getInt:(I)I
ior
5: .line 3337
iastore
6: .line 3336
iinc 3 /* i */ 1
StackMap locals:
StackMap stack:
7: iload 3 /* i */
aload 2 /* result */
arraylength
if_icmplt 3
end local 3 // int i
8: .line 3340
aload 2 /* result */
invokestatic java.math.BigInteger.valueOf:([I)Ljava/math/BigInteger;
areturn
end local 2 // int[] result
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljava/math/BigInteger;
0 9 1 val Ljava/math/BigInteger;
1 9 2 result [I
2 8 3 i I
MethodParameters:
Name Flags
val
public java.math.BigInteger xor(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 3352
aload 0 /* this */
invokevirtual java.math.BigInteger.intLength:()I
aload 1 /* val */
invokevirtual java.math.BigInteger.intLength:()I
invokestatic java.lang.Math.max:(II)I
newarray 10
astore 2 /* result */
start local 2 // int[] result
1: .line 3353
iconst_0
istore 3 /* i */
start local 3 // int i
2: goto 7
3: .line 3354
StackMap locals: int[] int
StackMap stack:
aload 2 /* result */
iload 3 /* i */
aload 0 /* this */
aload 2 /* result */
arraylength
iload 3 /* i */
isub
iconst_1
isub
invokevirtual java.math.BigInteger.getInt:(I)I
4: .line 3355
aload 1 /* val */
aload 2 /* result */
arraylength
iload 3 /* i */
isub
iconst_1
isub
invokevirtual java.math.BigInteger.getInt:(I)I
ixor
5: .line 3354
iastore
6: .line 3353
iinc 3 /* i */ 1
StackMap locals:
StackMap stack:
7: iload 3 /* i */
aload 2 /* result */
arraylength
if_icmplt 3
end local 3 // int i
8: .line 3357
aload 2 /* result */
invokestatic java.math.BigInteger.valueOf:([I)Ljava/math/BigInteger;
areturn
end local 2 // int[] result
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljava/math/BigInteger;
0 9 1 val Ljava/math/BigInteger;
1 9 2 result [I
2 8 3 i I
MethodParameters:
Name Flags
val
public java.math.BigInteger not();
descriptor: ()Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=1
start local 0 // java.math.BigInteger this
0: .line 3368
aload 0 /* this */
invokevirtual java.math.BigInteger.intLength:()I
newarray 10
astore 1 /* result */
start local 1 // int[] result
1: .line 3369
iconst_0
istore 2 /* i */
start local 2 // int i
2: goto 5
3: .line 3370
StackMap locals: int[] int
StackMap stack:
aload 1 /* result */
iload 2 /* i */
aload 0 /* this */
aload 1 /* result */
arraylength
iload 2 /* i */
isub
iconst_1
isub
invokevirtual java.math.BigInteger.getInt:(I)I
iconst_m1
ixor
iastore
4: .line 3369
iinc 2 /* i */ 1
StackMap locals:
StackMap stack:
5: iload 2 /* i */
aload 1 /* result */
arraylength
if_icmplt 3
end local 2 // int i
6: .line 3372
aload 1 /* result */
invokestatic java.math.BigInteger.valueOf:([I)Ljava/math/BigInteger;
areturn
end local 1 // int[] result
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljava/math/BigInteger;
1 7 1 result [I
2 6 2 i I
public java.math.BigInteger andNot(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 3386
aload 0 /* this */
invokevirtual java.math.BigInteger.intLength:()I
aload 1 /* val */
invokevirtual java.math.BigInteger.intLength:()I
invokestatic java.lang.Math.max:(II)I
newarray 10
astore 2 /* result */
start local 2 // int[] result
1: .line 3387
iconst_0
istore 3 /* i */
start local 3 // int i
2: goto 7
3: .line 3388
StackMap locals: int[] int
StackMap stack:
aload 2 /* result */
iload 3 /* i */
aload 0 /* this */
aload 2 /* result */
arraylength
iload 3 /* i */
isub
iconst_1
isub
invokevirtual java.math.BigInteger.getInt:(I)I
4: .line 3389
aload 1 /* val */
aload 2 /* result */
arraylength
iload 3 /* i */
isub
iconst_1
isub
invokevirtual java.math.BigInteger.getInt:(I)I
iconst_m1
ixor
iand
5: .line 3388
iastore
6: .line 3387
iinc 3 /* i */ 1
StackMap locals:
StackMap stack:
7: iload 3 /* i */
aload 2 /* result */
arraylength
if_icmplt 3
end local 3 // int i
8: .line 3391
aload 2 /* result */
invokestatic java.math.BigInteger.valueOf:([I)Ljava/math/BigInteger;
areturn
end local 2 // int[] result
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljava/math/BigInteger;
0 9 1 val Ljava/math/BigInteger;
1 9 2 result [I
2 8 3 i I
MethodParameters:
Name Flags
val
public boolean testBit(int);
descriptor: (I)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // int n
0: .line 3406
iload 1 /* n */
ifge 2
1: .line 3407
new java.lang.ArithmeticException
dup
ldc "Negative bit address"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 3409
StackMap locals:
StackMap stack:
aload 0 /* this */
iload 1 /* n */
iconst_5
iushr
invokevirtual java.math.BigInteger.getInt:(I)I
iconst_1
iload 1 /* n */
bipush 31
iand
ishl
iand
ifeq 3
iconst_1
ireturn
StackMap locals:
StackMap stack:
3: iconst_0
ireturn
end local 1 // int n
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/math/BigInteger;
0 4 1 n I
MethodParameters:
Name Flags
n
public java.math.BigInteger setBit(int);
descriptor: (I)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=5, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // int n
0: .line 3421
iload 1 /* n */
ifge 2
1: .line 3422
new java.lang.ArithmeticException
dup
ldc "Negative bit address"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 3424
StackMap locals:
StackMap stack:
iload 1 /* n */
iconst_5
iushr
istore 2 /* intNum */
start local 2 // int intNum
3: .line 3425
aload 0 /* this */
invokevirtual java.math.BigInteger.intLength:()I
iload 2 /* intNum */
iconst_2
iadd
invokestatic java.lang.Math.max:(II)I
newarray 10
astore 3 /* result */
start local 3 // int[] result
4: .line 3427
iconst_0
istore 4 /* i */
start local 4 // int i
5: goto 8
6: .line 3428
StackMap locals: int int[] int
StackMap stack:
aload 3 /* result */
aload 3 /* result */
arraylength
iload 4 /* i */
isub
iconst_1
isub
aload 0 /* this */
iload 4 /* i */
invokevirtual java.math.BigInteger.getInt:(I)I
iastore
7: .line 3427
iinc 4 /* i */ 1
StackMap locals:
StackMap stack:
8: iload 4 /* i */
aload 3 /* result */
arraylength
if_icmplt 6
end local 4 // int i
9: .line 3430
aload 3 /* result */
aload 3 /* result */
arraylength
iload 2 /* intNum */
isub
iconst_1
isub
dup2
iaload
iconst_1
iload 1 /* n */
bipush 31
iand
ishl
ior
iastore
10: .line 3432
aload 3 /* result */
invokestatic java.math.BigInteger.valueOf:([I)Ljava/math/BigInteger;
areturn
end local 3 // int[] result
end local 2 // int intNum
end local 1 // int n
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Ljava/math/BigInteger;
0 11 1 n I
3 11 2 intNum I
4 11 3 result [I
5 9 4 i I
MethodParameters:
Name Flags
n
public java.math.BigInteger clearBit(int);
descriptor: (I)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=5, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // int n
0: .line 3445
iload 1 /* n */
ifge 2
1: .line 3446
new java.lang.ArithmeticException
dup
ldc "Negative bit address"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 3448
StackMap locals:
StackMap stack:
iload 1 /* n */
iconst_5
iushr
istore 2 /* intNum */
start local 2 // int intNum
3: .line 3449
aload 0 /* this */
invokevirtual java.math.BigInteger.intLength:()I
iload 1 /* n */
iconst_1
iadd
iconst_5
iushr
iconst_1
iadd
invokestatic java.lang.Math.max:(II)I
newarray 10
astore 3 /* result */
start local 3 // int[] result
4: .line 3451
iconst_0
istore 4 /* i */
start local 4 // int i
5: goto 8
6: .line 3452
StackMap locals: int int[] int
StackMap stack:
aload 3 /* result */
aload 3 /* result */
arraylength
iload 4 /* i */
isub
iconst_1
isub
aload 0 /* this */
iload 4 /* i */
invokevirtual java.math.BigInteger.getInt:(I)I
iastore
7: .line 3451
iinc 4 /* i */ 1
StackMap locals:
StackMap stack:
8: iload 4 /* i */
aload 3 /* result */
arraylength
if_icmplt 6
end local 4 // int i
9: .line 3454
aload 3 /* result */
aload 3 /* result */
arraylength
iload 2 /* intNum */
isub
iconst_1
isub
dup2
iaload
iconst_1
iload 1 /* n */
bipush 31
iand
ishl
iconst_m1
ixor
iand
iastore
10: .line 3456
aload 3 /* result */
invokestatic java.math.BigInteger.valueOf:([I)Ljava/math/BigInteger;
areturn
end local 3 // int[] result
end local 2 // int intNum
end local 1 // int n
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Ljava/math/BigInteger;
0 11 1 n I
3 11 2 intNum I
4 11 3 result [I
5 9 4 i I
MethodParameters:
Name Flags
n
public java.math.BigInteger flipBit(int);
descriptor: (I)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=5, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // int n
0: .line 3469
iload 1 /* n */
ifge 2
1: .line 3470
new java.lang.ArithmeticException
dup
ldc "Negative bit address"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 3472
StackMap locals:
StackMap stack:
iload 1 /* n */
iconst_5
iushr
istore 2 /* intNum */
start local 2 // int intNum
3: .line 3473
aload 0 /* this */
invokevirtual java.math.BigInteger.intLength:()I
iload 2 /* intNum */
iconst_2
iadd
invokestatic java.lang.Math.max:(II)I
newarray 10
astore 3 /* result */
start local 3 // int[] result
4: .line 3475
iconst_0
istore 4 /* i */
start local 4 // int i
5: goto 8
6: .line 3476
StackMap locals: int int[] int
StackMap stack:
aload 3 /* result */
aload 3 /* result */
arraylength
iload 4 /* i */
isub
iconst_1
isub
aload 0 /* this */
iload 4 /* i */
invokevirtual java.math.BigInteger.getInt:(I)I
iastore
7: .line 3475
iinc 4 /* i */ 1
StackMap locals:
StackMap stack:
8: iload 4 /* i */
aload 3 /* result */
arraylength
if_icmplt 6
end local 4 // int i
9: .line 3478
aload 3 /* result */
aload 3 /* result */
arraylength
iload 2 /* intNum */
isub
iconst_1
isub
dup2
iaload
iconst_1
iload 1 /* n */
bipush 31
iand
ishl
ixor
iastore
10: .line 3480
aload 3 /* result */
invokestatic java.math.BigInteger.valueOf:([I)Ljava/math/BigInteger;
areturn
end local 3 // int[] result
end local 2 // int intNum
end local 1 // int n
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Ljava/math/BigInteger;
0 11 1 n I
3 11 2 intNum I
4 11 3 result [I
5 9 4 i I
MethodParameters:
Name Flags
n
public int getLowestSetBit();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=1
start local 0 // java.math.BigInteger this
0: .line 3492
aload 0 /* this */
getfield java.math.BigInteger.lowestSetBit:I
iconst_2
isub
istore 1 /* lsb */
start local 1 // int lsb
1: .line 3493
iload 1 /* lsb */
bipush -2
if_icmpne 13
2: .line 3494
iconst_0
istore 1 /* lsb */
3: .line 3495
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 6
4: .line 3496
iinc 1 /* lsb */ -1
5: .line 3497
goto 12
6: .line 3500
StackMap locals: int
StackMap stack:
iconst_0
istore 2 /* i */
start local 2 // int i
7: goto 9
start local 3 // int b
StackMap locals: int int
StackMap stack:
8: iinc 2 /* i */ 1
end local 3 // int b
StackMap locals:
StackMap stack:
9: aload 0 /* this */
iload 2 /* i */
invokevirtual java.math.BigInteger.getInt:(I)I
dup
istore 3 /* b */
start local 3 // int b
10: ifeq 8
11: .line 3502
iload 1 /* lsb */
iload 2 /* i */
iconst_5
ishl
iload 3 /* b */
invokestatic java.lang.Integer.numberOfTrailingZeros:(I)I
iadd
iadd
istore 1 /* lsb */
end local 3 // int b
end local 2 // int i
12: .line 3504
StackMap locals:
StackMap stack:
aload 0 /* this */
iload 1 /* lsb */
iconst_2
iadd
putfield java.math.BigInteger.lowestSetBit:I
13: .line 3506
StackMap locals:
StackMap stack:
iload 1 /* lsb */
ireturn
end local 1 // int lsb
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Ljava/math/BigInteger;
1 14 1 lsb I
7 12 2 i I
8 9 3 b I
10 12 3 b I
public int bitLength();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=7, args_size=1
start local 0 // java.math.BigInteger this
0: .line 3523
aload 0 /* this */
getfield java.math.BigInteger.bitLength:I
iconst_1
isub
istore 1 /* n */
start local 1 // int n
1: .line 3524
iload 1 /* n */
iconst_m1
if_icmpne 25
2: .line 3525
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
astore 2 /* m */
start local 2 // int[] m
3: .line 3526
aload 2 /* m */
arraylength
istore 3 /* len */
start local 3 // int len
4: .line 3527
iload 3 /* len */
ifne 7
5: .line 3528
iconst_0
istore 1 /* n */
6: .line 3529
goto 24
7: .line 3531
StackMap locals: int int[] int
StackMap stack:
iload 3 /* len */
iconst_1
isub
iconst_5
ishl
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
iaload
invokestatic java.math.BigInteger.bitLengthForInt:(I)I
iadd
istore 4 /* magBitLength */
start local 4 // int magBitLength
8: .line 3532
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifge 23
9: .line 3534
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
iaload
invokestatic java.lang.Integer.bitCount:(I)I
iconst_1
if_icmpne 10
iconst_1
goto 11
StackMap locals: int
StackMap stack:
10: iconst_0
StackMap locals:
StackMap stack: int
11: istore 5 /* pow2 */
start local 5 // boolean pow2
12: .line 3535
iconst_1
istore 6 /* i */
start local 6 // int i
13: goto 18
14: .line 3536
StackMap locals: int int
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 6 /* i */
iaload
ifne 15
iconst_1
goto 16
StackMap locals:
StackMap stack:
15: iconst_0
StackMap locals:
StackMap stack: int
16: istore 5 /* pow2 */
17: .line 3535
iinc 6 /* i */ 1
StackMap locals:
StackMap stack:
18: iload 6 /* i */
iload 3 /* len */
if_icmpge 19
iload 5 /* pow2 */
ifne 14
end local 6 // int i
19: .line 3538
StackMap locals:
StackMap stack:
iload 5 /* pow2 */
ifeq 20
iload 4 /* magBitLength */
iconst_1
isub
goto 21
StackMap locals:
StackMap stack:
20: iload 4 /* magBitLength */
StackMap locals:
StackMap stack: int
21: istore 1 /* n */
end local 5 // boolean pow2
22: .line 3539
goto 24
23: .line 3540
StackMap locals:
StackMap stack:
iload 4 /* magBitLength */
istore 1 /* n */
end local 4 // int magBitLength
24: .line 3543
StackMap locals:
StackMap stack:
aload 0 /* this */
iload 1 /* n */
iconst_1
iadd
putfield java.math.BigInteger.bitLength:I
end local 3 // int len
end local 2 // int[] m
25: .line 3545
StackMap locals:
StackMap stack:
iload 1 /* n */
ireturn
end local 1 // int n
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 26 0 this Ljava/math/BigInteger;
1 26 1 n I
3 25 2 m [I
4 25 3 len I
8 24 4 magBitLength I
12 22 5 pow2 Z
13 19 6 i I
public int bitCount();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=1
start local 0 // java.math.BigInteger this
0: .line 3557
aload 0 /* this */
getfield java.math.BigInteger.bitCount:I
iconst_1
isub
istore 1 /* bc */
start local 1 // int bc
1: .line 3558
iload 1 /* bc */
iconst_m1
if_icmpne 18
2: .line 3559
iconst_0
istore 1 /* bc */
3: .line 3561
iconst_0
istore 2 /* i */
start local 2 // int i
4: goto 7
5: .line 3562
StackMap locals: int int
StackMap stack:
iload 1 /* bc */
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 2 /* i */
iaload
invokestatic java.lang.Integer.bitCount:(I)I
iadd
istore 1 /* bc */
6: .line 3561
iinc 2 /* i */ 1
StackMap locals:
StackMap stack:
7: iload 2 /* i */
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
if_icmplt 5
end local 2 // int i
8: .line 3563
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifge 17
9: .line 3565
iconst_0
istore 2 /* magTrailingZeroCount */
start local 2 // int magTrailingZeroCount
10: .line 3566
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
iconst_1
isub
istore 3 /* j */
start local 3 // int j
11: goto 14
12: .line 3567
StackMap locals: int
StackMap stack:
iinc 2 /* magTrailingZeroCount */ 32
13: .line 3566
iinc 3 /* j */ -1
StackMap locals:
StackMap stack:
14: aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 3 /* j */
iaload
ifeq 12
15: .line 3568
iload 2 /* magTrailingZeroCount */
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 3 /* j */
iaload
invokestatic java.lang.Integer.numberOfTrailingZeros:(I)I
iadd
istore 2 /* magTrailingZeroCount */
16: .line 3569
iload 1 /* bc */
iload 2 /* magTrailingZeroCount */
iconst_1
isub
iadd
istore 1 /* bc */
end local 3 // int j
end local 2 // int magTrailingZeroCount
17: .line 3571
StackMap locals:
StackMap stack:
aload 0 /* this */
iload 1 /* bc */
iconst_1
iadd
putfield java.math.BigInteger.bitCount:I
18: .line 3573
StackMap locals:
StackMap stack:
iload 1 /* bc */
ireturn
end local 1 // int bc
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Ljava/math/BigInteger;
1 19 1 bc I
4 8 2 i I
10 17 2 magTrailingZeroCount I
11 17 3 j I
public boolean isProbablePrime(int);
descriptor: (I)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // int certainty
0: .line 3593
iload 1 /* certainty */
ifgt 2
1: .line 3594
iconst_1
ireturn
2: .line 3595
StackMap locals:
StackMap stack:
aload 0 /* this */
invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
astore 2 /* w */
start local 2 // java.math.BigInteger w
3: .line 3596
aload 2 /* w */
getstatic java.math.BigInteger.TWO:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ifeq 5
4: .line 3597
iconst_1
ireturn
5: .line 3598
StackMap locals: java.math.BigInteger
StackMap stack:
aload 2 /* w */
iconst_0
invokevirtual java.math.BigInteger.testBit:(I)Z
ifeq 6
aload 2 /* w */
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ifeq 7
6: .line 3599
StackMap locals:
StackMap stack:
iconst_0
ireturn
7: .line 3601
StackMap locals:
StackMap stack:
aload 2 /* w */
iload 1 /* certainty */
aconst_null
invokevirtual java.math.BigInteger.primeToCertainty:(ILjava/util/Random;)Z
ireturn
end local 2 // java.math.BigInteger w
end local 1 // int certainty
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Ljava/math/BigInteger;
0 8 1 certainty I
3 8 2 w Ljava/math/BigInteger;
MethodParameters:
Name Flags
certainty
public int compareTo(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 3620
aload 0 /* this */
getfield java.math.BigInteger.signum:I
aload 1 /* val */
getfield java.math.BigInteger.signum:I
if_icmpne 5
1: .line 3621
aload 0 /* this */
getfield java.math.BigInteger.signum:I
tableswitch { // -1 - 1
-1: 3
0: 4
1: 2
default: 4
}
2: .line 3623
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* val */
invokevirtual java.math.BigInteger.compareMagnitude:(Ljava/math/BigInteger;)I
ireturn
3: .line 3625
StackMap locals:
StackMap stack:
aload 1 /* val */
aload 0 /* this */
invokevirtual java.math.BigInteger.compareMagnitude:(Ljava/math/BigInteger;)I
ireturn
4: .line 3627
StackMap locals:
StackMap stack:
iconst_0
ireturn
5: .line 3630
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.signum:I
aload 1 /* val */
getfield java.math.BigInteger.signum:I
if_icmple 6
iconst_1
goto 7
StackMap locals:
StackMap stack:
6: iconst_m1
StackMap locals:
StackMap stack: int
7: ireturn
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Ljava/math/BigInteger;
0 8 1 val Ljava/math/BigInteger;
MethodParameters:
Name Flags
val
final int compareMagnitude(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)I
flags: (0x0010) ACC_FINAL
Code:
stack=6, locals=9, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 3642
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
astore 2 /* m1 */
start local 2 // int[] m1
1: .line 3643
aload 2 /* m1 */
arraylength
istore 3 /* len1 */
start local 3 // int len1
2: .line 3644
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
astore 4 /* m2 */
start local 4 // int[] m2
3: .line 3645
aload 4 /* m2 */
arraylength
istore 5 /* len2 */
start local 5 // int len2
4: .line 3646
iload 3 /* len1 */
iload 5 /* len2 */
if_icmpge 6
5: .line 3647
iconst_m1
ireturn
6: .line 3648
StackMap locals: java.math.BigInteger java.math.BigInteger int[] int int[] int
StackMap stack:
iload 3 /* len1 */
iload 5 /* len2 */
if_icmple 8
7: .line 3649
iconst_1
ireturn
8: .line 3650
StackMap locals:
StackMap stack:
iconst_0
istore 6 /* i */
start local 6 // int i
9: goto 17
10: .line 3651
StackMap locals: int
StackMap stack:
aload 2 /* m1 */
iload 6 /* i */
iaload
istore 7 /* a */
start local 7 // int a
11: .line 3652
aload 4 /* m2 */
iload 6 /* i */
iaload
istore 8 /* b */
start local 8 // int b
12: .line 3653
iload 7 /* a */
iload 8 /* b */
if_icmpeq 16
13: .line 3654
iload 7 /* a */
i2l
ldc 4294967295
land
iload 8 /* b */
i2l
ldc 4294967295
land
lcmp
ifge 14
iconst_m1
goto 15
StackMap locals: int int
StackMap stack:
14: iconst_1
StackMap locals:
StackMap stack: int
15: ireturn
end local 8 // int b
end local 7 // int a
16: .line 3650
StackMap locals:
StackMap stack:
iinc 6 /* i */ 1
StackMap locals:
StackMap stack:
17: iload 6 /* i */
iload 3 /* len1 */
if_icmplt 10
end local 6 // int i
18: .line 3656
iconst_0
ireturn
end local 5 // int len2
end local 4 // int[] m2
end local 3 // int len1
end local 2 // int[] m1
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Ljava/math/BigInteger;
0 19 1 val Ljava/math/BigInteger;
1 19 2 m1 [I
2 19 3 len1 I
3 19 4 m2 [I
4 19 5 len2 I
9 18 6 i I
11 16 7 a I
12 16 8 b I
MethodParameters:
Name Flags
val
final int compareMagnitude(long);
descriptor: (J)I
flags: (0x0010) ACC_FINAL
Code:
stack=6, locals=8, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // long val
0: .line 3664
getstatic java.math.BigInteger.$assertionsDisabled:Z
ifne 1
lload 1 /* val */
ldc -9223372036854775808
lcmp
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: .line 3665
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
astore 3 /* m1 */
start local 3 // int[] m1
2: .line 3666
aload 3 /* m1 */
arraylength
istore 4 /* len */
start local 4 // int len
3: .line 3667
iload 4 /* len */
iconst_2
if_icmple 5
4: .line 3668
iconst_1
ireturn
5: .line 3670
StackMap locals: int[] int
StackMap stack:
lload 1 /* val */
lconst_0
lcmp
ifge 7
6: .line 3671
lload 1 /* val */
lneg
lstore 1 /* val */
7: .line 3673
StackMap locals:
StackMap stack:
lload 1 /* val */
bipush 32
lushr
l2i
istore 5 /* highWord */
start local 5 // int highWord
8: .line 3674
iload 5 /* highWord */
ifne 20
9: .line 3675
iload 4 /* len */
iconst_1
if_icmpge 11
10: .line 3676
iconst_m1
ireturn
11: .line 3677
StackMap locals: int
StackMap stack:
iload 4 /* len */
iconst_1
if_icmple 13
12: .line 3678
iconst_1
ireturn
13: .line 3679
StackMap locals:
StackMap stack:
aload 3 /* m1 */
iconst_0
iaload
istore 6 /* a */
start local 6 // int a
14: .line 3680
lload 1 /* val */
l2i
istore 7 /* b */
start local 7 // int b
15: .line 3681
iload 6 /* a */
iload 7 /* b */
if_icmpeq 19
16: .line 3682
iload 6 /* a */
i2l
ldc 4294967295
land
iload 7 /* b */
i2l
ldc 4294967295
land
lcmp
ifge 17
iconst_m1
goto 18
StackMap locals: int int
StackMap stack:
17: iconst_1
StackMap locals:
StackMap stack: int
18: ireturn
19: .line 3684
StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 7 // int b
end local 6 // int a
20: .line 3686
StackMap locals:
StackMap stack:
iload 4 /* len */
iconst_2
if_icmpge 22
21: .line 3687
iconst_m1
ireturn
22: .line 3688
StackMap locals:
StackMap stack:
aload 3 /* m1 */
iconst_0
iaload
istore 6 /* a */
start local 6 // int a
23: .line 3689
iload 5 /* highWord */
istore 7 /* b */
start local 7 // int b
24: .line 3690
iload 6 /* a */
iload 7 /* b */
if_icmpeq 28
25: .line 3691
iload 6 /* a */
i2l
ldc 4294967295
land
iload 7 /* b */
i2l
ldc 4294967295
land
lcmp
ifge 26
iconst_m1
goto 27
StackMap locals: int int
StackMap stack:
26: iconst_1
StackMap locals:
StackMap stack: int
27: ireturn
28: .line 3693
StackMap locals:
StackMap stack:
aload 3 /* m1 */
iconst_1
iaload
istore 6 /* a */
29: .line 3694
lload 1 /* val */
l2i
istore 7 /* b */
30: .line 3695
iload 6 /* a */
iload 7 /* b */
if_icmpeq 34
31: .line 3696
iload 6 /* a */
i2l
ldc 4294967295
land
iload 7 /* b */
i2l
ldc 4294967295
land
lcmp
ifge 32
iconst_m1
goto 33
StackMap locals:
StackMap stack:
32: iconst_1
StackMap locals:
StackMap stack: int
33: ireturn
34: .line 3698
StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 7 // int b
end local 6 // int a
end local 5 // int highWord
end local 4 // int len
end local 3 // int[] m1
end local 1 // long val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 35 0 this Ljava/math/BigInteger;
0 35 1 val J
2 35 3 m1 [I
3 35 4 len I
8 35 5 highWord I
14 20 6 a I
15 20 7 b I
23 35 6 a I
24 35 7 b I
MethodParameters:
Name Flags
val
public boolean equals(java.lang.Object);
descriptor: (Ljava/lang/Object;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=7, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.lang.Object x
0: .line 3711
aload 1 /* x */
aload 0 /* this */
if_acmpne 2
1: .line 3712
iconst_1
ireturn
2: .line 3714
StackMap locals:
StackMap stack:
aload 1 /* x */
instanceof java.math.BigInteger
ifne 4
3: .line 3715
iconst_0
ireturn
4: .line 3717
StackMap locals:
StackMap stack:
aload 1 /* x */
checkcast java.math.BigInteger
astore 2 /* xInt */
start local 2 // java.math.BigInteger xInt
5: .line 3718
aload 2 /* xInt */
getfield java.math.BigInteger.signum:I
aload 0 /* this */
getfield java.math.BigInteger.signum:I
if_icmpeq 7
6: .line 3719
iconst_0
ireturn
7: .line 3721
StackMap locals: java.math.BigInteger
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
astore 3 /* m */
start local 3 // int[] m
8: .line 3722
aload 3 /* m */
arraylength
istore 4 /* len */
start local 4 // int len
9: .line 3723
aload 2 /* xInt */
getfield java.math.BigInteger.mag:[I
astore 5 /* xm */
start local 5 // int[] xm
10: .line 3724
iload 4 /* len */
aload 5 /* xm */
arraylength
if_icmpeq 12
11: .line 3725
iconst_0
ireturn
12: .line 3727
StackMap locals: int[] int int[]
StackMap stack:
iconst_0
istore 6 /* i */
start local 6 // int i
13: goto 17
14: .line 3728
StackMap locals: int
StackMap stack:
aload 5 /* xm */
iload 6 /* i */
iaload
aload 3 /* m */
iload 6 /* i */
iaload
if_icmpeq 16
15: .line 3729
iconst_0
ireturn
16: .line 3727
StackMap locals:
StackMap stack:
iinc 6 /* i */ 1
StackMap locals:
StackMap stack:
17: iload 6 /* i */
iload 4 /* len */
if_icmplt 14
end local 6 // int i
18: .line 3731
iconst_1
ireturn
end local 5 // int[] xm
end local 4 // int len
end local 3 // int[] m
end local 2 // java.math.BigInteger xInt
end local 1 // java.lang.Object x
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Ljava/math/BigInteger;
0 19 1 x Ljava/lang/Object;
5 19 2 xInt Ljava/math/BigInteger;
8 19 3 m [I
9 19 4 len I
10 19 5 xm [I
13 18 6 i I
MethodParameters:
Name Flags
x
public java.math.BigInteger min(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 3742
aload 0 /* this */
aload 1 /* val */
invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
ifge 1
aload 0 /* this */
goto 2
StackMap locals:
StackMap stack:
1: aload 1 /* val */
StackMap locals:
StackMap stack: java.math.BigInteger
2: areturn
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BigInteger;
0 3 1 val Ljava/math/BigInteger;
MethodParameters:
Name Flags
val
public java.math.BigInteger max(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.math.BigInteger val
0: .line 3753
aload 0 /* this */
aload 1 /* val */
invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
ifle 1
aload 0 /* this */
goto 2
StackMap locals:
StackMap stack:
1: aload 1 /* val */
StackMap locals:
StackMap stack: java.math.BigInteger
2: areturn
end local 1 // java.math.BigInteger val
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BigInteger;
0 3 1 val Ljava/math/BigInteger;
MethodParameters:
Name Flags
val
public int hashCode();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=3, args_size=1
start local 0 // java.math.BigInteger this
0: .line 3765
iconst_0
istore 1 /* hashCode */
start local 1 // int hashCode
1: .line 3767
iconst_0
istore 2 /* i */
start local 2 // int i
2: goto 5
3: .line 3768
StackMap locals: int int
StackMap stack:
bipush 31
iload 1 /* hashCode */
imul
i2l
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 2 /* i */
iaload
i2l
ldc 4294967295
land
ladd
l2i
istore 1 /* hashCode */
4: .line 3767
iinc 2 /* i */ 1
StackMap locals:
StackMap stack:
5: iload 2 /* i */
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
if_icmplt 3
end local 2 // int i
6: .line 3770
iload 1 /* hashCode */
aload 0 /* this */
getfield java.math.BigInteger.signum:I
imul
ireturn
end local 1 // int hashCode
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljava/math/BigInteger;
1 7 1 hashCode I
2 6 2 i I
public java.lang.String toString(int);
descriptor: (I)Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // int radix
0: .line 3791
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 3792
ldc "0"
areturn
2: .line 3793
StackMap locals:
StackMap stack:
iload 1 /* radix */
iconst_2
if_icmplt 3
iload 1 /* radix */
bipush 36
if_icmple 4
3: .line 3794
StackMap locals:
StackMap stack:
bipush 10
istore 1 /* radix */
4: .line 3797
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
bipush 20
if_icmpgt 6
5: .line 3798
aload 0 /* this */
iload 1 /* radix */
invokevirtual java.math.BigInteger.smallToString:(I)Ljava/lang/String;
areturn
6: .line 3802
StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
astore 2 /* sb */
start local 2 // java.lang.StringBuilder sb
7: .line 3803
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifge 11
8: .line 3804
aload 0 /* this */
invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
aload 2 /* sb */
iload 1 /* radix */
iconst_0
invokestatic java.math.BigInteger.toString:(Ljava/math/BigInteger;Ljava/lang/StringBuilder;II)V
9: .line 3805
aload 2 /* sb */
iconst_0
bipush 45
invokevirtual java.lang.StringBuilder.insert:(IC)Ljava/lang/StringBuilder;
pop
10: .line 3806
goto 12
11: .line 3808
StackMap locals: java.lang.StringBuilder
StackMap stack:
aload 0 /* this */
aload 2 /* sb */
iload 1 /* radix */
iconst_0
invokestatic java.math.BigInteger.toString:(Ljava/math/BigInteger;Ljava/lang/StringBuilder;II)V
12: .line 3810
StackMap locals:
StackMap stack:
aload 2 /* sb */
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 2 // java.lang.StringBuilder sb
end local 1 // int radix
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Ljava/math/BigInteger;
0 13 1 radix I
7 13 2 sb Ljava/lang/StringBuilder;
MethodParameters:
Name Flags
radix
private java.lang.String smallToString(int);
descriptor: (I)Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=13, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // int radix
0: .line 3815
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 3816
ldc "0"
areturn
2: .line 3820
StackMap locals:
StackMap stack:
iconst_4
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
imul
bipush 6
iadd
bipush 7
idiv
istore 2 /* maxNumDigitGroups */
start local 2 // int maxNumDigitGroups
3: .line 3821
iload 2 /* maxNumDigitGroups */
anewarray java.lang.String
astore 3 /* digitGroup */
start local 3 // java.lang.String[] digitGroup
4: .line 3824
aload 0 /* this */
invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
astore 4 /* tmp */
start local 4 // java.math.BigInteger tmp
5: .line 3825
iconst_0
istore 5 /* numGroups */
start local 5 // int numGroups
6: .line 3826
goto 16
7: .line 3827
StackMap locals: java.math.BigInteger int int java.lang.String[] java.math.BigInteger int
StackMap stack:
getstatic java.math.BigInteger.longRadix:[Ljava/math/BigInteger;
iload 1 /* radix */
aaload
astore 6 /* d */
start local 6 // java.math.BigInteger d
8: .line 3829
new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 7 /* q */
start local 7 // java.math.MutableBigInteger q
9: .line 3830
new java.math.MutableBigInteger
dup
aload 4 /* tmp */
getfield java.math.BigInteger.mag:[I
invokespecial java.math.MutableBigInteger.<init>:([I)V
astore 8 /* a */
start local 8 // java.math.MutableBigInteger a
10: .line 3831
new java.math.MutableBigInteger
dup
aload 6 /* d */
getfield java.math.BigInteger.mag:[I
invokespecial java.math.MutableBigInteger.<init>:([I)V
astore 9 /* b */
start local 9 // java.math.MutableBigInteger b
11: .line 3832
aload 8 /* a */
aload 9 /* b */
aload 7 /* q */
invokevirtual java.math.MutableBigInteger.divide:(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger;
astore 10 /* r */
start local 10 // java.math.MutableBigInteger r
12: .line 3833
aload 7 /* q */
aload 4 /* tmp */
getfield java.math.BigInteger.signum:I
aload 6 /* d */
getfield java.math.BigInteger.signum:I
imul
invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
astore 11 /* q2 */
start local 11 // java.math.BigInteger q2
13: .line 3834
aload 10 /* r */
aload 4 /* tmp */
getfield java.math.BigInteger.signum:I
aload 6 /* d */
getfield java.math.BigInteger.signum:I
imul
invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
astore 12 /* r2 */
start local 12 // java.math.BigInteger r2
14: .line 3836
aload 3 /* digitGroup */
iload 5 /* numGroups */
iinc 5 /* numGroups */ 1
aload 12 /* r2 */
invokevirtual java.math.BigInteger.longValue:()J
iload 1 /* radix */
invokestatic java.lang.Long.toString:(JI)Ljava/lang/String;
aastore
15: .line 3837
aload 11 /* q2 */
astore 4 /* tmp */
end local 12 // java.math.BigInteger r2
end local 11 // java.math.BigInteger q2
end local 10 // java.math.MutableBigInteger r
end local 9 // java.math.MutableBigInteger b
end local 8 // java.math.MutableBigInteger a
end local 7 // java.math.MutableBigInteger q
end local 6 // java.math.BigInteger d
16: .line 3826
StackMap locals:
StackMap stack:
aload 4 /* tmp */
getfield java.math.BigInteger.signum:I
ifne 7
17: .line 3841
new java.lang.StringBuilder
dup
iload 5 /* numGroups */
getstatic java.math.BigInteger.digitsPerLong:[I
iload 1 /* radix */
iaload
imul
iconst_1
iadd
invokespecial java.lang.StringBuilder.<init>:(I)V
astore 6 /* buf */
start local 6 // java.lang.StringBuilder buf
18: .line 3842
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifge 20
19: .line 3843
aload 6 /* buf */
bipush 45
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
20: .line 3845
StackMap locals: java.lang.StringBuilder
StackMap stack:
aload 6 /* buf */
aload 3 /* digitGroup */
iload 5 /* numGroups */
iconst_1
isub
aaload
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
21: .line 3848
iload 5 /* numGroups */
iconst_2
isub
istore 7 /* i */
start local 7 // int i
22: goto 28
23: .line 3850
StackMap locals: int
StackMap stack:
getstatic java.math.BigInteger.digitsPerLong:[I
iload 1 /* radix */
iaload
aload 3 /* digitGroup */
iload 7 /* i */
aaload
invokevirtual java.lang.String.length:()I
isub
istore 8 /* numLeadingZeros */
start local 8 // int numLeadingZeros
24: .line 3851
iload 8 /* numLeadingZeros */
ifeq 26
25: .line 3852
aload 6 /* buf */
getstatic java.math.BigInteger.zeros:[Ljava/lang/String;
iload 8 /* numLeadingZeros */
aaload
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
26: .line 3854
StackMap locals: int
StackMap stack:
aload 6 /* buf */
aload 3 /* digitGroup */
iload 7 /* i */
aaload
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
end local 8 // int numLeadingZeros
27: .line 3848
iinc 7 /* i */ -1
StackMap locals:
StackMap stack:
28: iload 7 /* i */
ifge 23
end local 7 // int i
29: .line 3856
aload 6 /* buf */
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 6 // java.lang.StringBuilder buf
end local 5 // int numGroups
end local 4 // java.math.BigInteger tmp
end local 3 // java.lang.String[] digitGroup
end local 2 // int maxNumDigitGroups
end local 1 // int radix
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 30 0 this Ljava/math/BigInteger;
0 30 1 radix I
3 30 2 maxNumDigitGroups I
4 30 3 digitGroup [Ljava/lang/String;
5 30 4 tmp Ljava/math/BigInteger;
6 30 5 numGroups I
8 16 6 d Ljava/math/BigInteger;
9 16 7 q Ljava/math/MutableBigInteger;
10 16 8 a Ljava/math/MutableBigInteger;
11 16 9 b Ljava/math/MutableBigInteger;
12 16 10 r Ljava/math/MutableBigInteger;
13 16 11 q2 Ljava/math/BigInteger;
14 16 12 r2 Ljava/math/BigInteger;
18 30 6 buf Ljava/lang/StringBuilder;
22 29 7 i I
24 27 8 numLeadingZeros I
MethodParameters:
Name Flags
radix
private static void toString(java.math.BigInteger, java.lang.StringBuilder, int, int);
descriptor: (Ljava/math/BigInteger;Ljava/lang/StringBuilder;II)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=9, args_size=4
start local 0 // java.math.BigInteger u
start local 1 // java.lang.StringBuilder sb
start local 2 // int radix
start local 3 // int digits
0: .line 3876
aload 0 /* u */
getfield java.math.BigInteger.mag:[I
arraylength
bipush 20
if_icmpgt 10
1: .line 3877
aload 0 /* u */
iload 2 /* radix */
invokevirtual java.math.BigInteger.smallToString:(I)Ljava/lang/String;
astore 4 /* s */
start local 4 // java.lang.String s
2: .line 3881
aload 4 /* s */
invokevirtual java.lang.String.length:()I
iload 3 /* digits */
if_icmpge 8
aload 1 /* sb */
invokevirtual java.lang.StringBuilder.length:()I
ifle 8
3: .line 3882
aload 4 /* s */
invokevirtual java.lang.String.length:()I
istore 5 /* i */
start local 5 // int i
4: goto 7
5: .line 3883
StackMap locals: java.lang.String int
StackMap stack:
aload 1 /* sb */
bipush 48
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
6: .line 3882
iinc 5 /* i */ 1
StackMap locals:
StackMap stack:
7: iload 5 /* i */
iload 3 /* digits */
if_icmplt 5
end local 5 // int i
8: .line 3887
StackMap locals:
StackMap stack:
aload 1 /* sb */
aload 4 /* s */
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
9: .line 3888
return
end local 4 // java.lang.String s
10: .line 3892
StackMap locals:
StackMap stack:
aload 0 /* u */
invokevirtual java.math.BigInteger.bitLength:()I
istore 4 /* b */
start local 4 // int b
11: .line 3897
iload 4 /* b */
i2d
getstatic java.math.BigInteger.LOG_TWO:D
dmul
getstatic java.math.BigInteger.logCache:[D
iload 2 /* radix */
daload
ddiv
invokestatic java.lang.Math.log:(D)D
getstatic java.math.BigInteger.LOG_TWO:D
ddiv
dconst_1
dsub
invokestatic java.lang.Math.round:(D)J
l2i
istore 5 /* n */
start local 5 // int n
12: .line 3898
iload 2 /* radix */
iload 5 /* n */
invokestatic java.math.BigInteger.getRadixConversionCache:(II)Ljava/math/BigInteger;
astore 6 /* v */
start local 6 // java.math.BigInteger v
13: .line 3900
aload 0 /* u */
aload 6 /* v */
invokevirtual java.math.BigInteger.divideAndRemainder:(Ljava/math/BigInteger;)[Ljava/math/BigInteger;
astore 7 /* results */
start local 7 // java.math.BigInteger[] results
14: .line 3902
iconst_1
iload 5 /* n */
ishl
istore 8 /* expectedDigits */
start local 8 // int expectedDigits
15: .line 3905
aload 7 /* results */
iconst_0
aaload
aload 1 /* sb */
iload 2 /* radix */
iload 3 /* digits */
iload 8 /* expectedDigits */
isub
invokestatic java.math.BigInteger.toString:(Ljava/math/BigInteger;Ljava/lang/StringBuilder;II)V
16: .line 3906
aload 7 /* results */
iconst_1
aaload
aload 1 /* sb */
iload 2 /* radix */
iload 8 /* expectedDigits */
invokestatic java.math.BigInteger.toString:(Ljava/math/BigInteger;Ljava/lang/StringBuilder;II)V
17: .line 3907
return
end local 8 // int expectedDigits
end local 7 // java.math.BigInteger[] results
end local 6 // java.math.BigInteger v
end local 5 // int n
end local 4 // int b
end local 3 // int digits
end local 2 // int radix
end local 1 // java.lang.StringBuilder sb
end local 0 // java.math.BigInteger u
LocalVariableTable:
Start End Slot Name Signature
0 18 0 u Ljava/math/BigInteger;
0 18 1 sb Ljava/lang/StringBuilder;
0 18 2 radix I
0 18 3 digits I
2 10 4 s Ljava/lang/String;
4 8 5 i I
11 18 4 b I
12 18 5 n I
13 18 6 v Ljava/math/BigInteger;
14 18 7 results [Ljava/math/BigInteger;
15 18 8 expectedDigits I
MethodParameters:
Name Flags
u
sb
radix
digits
private static java.math.BigInteger getRadixConversionCache(int, int);
descriptor: (II)Ljava/math/BigInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=5, args_size=2
start local 0 // int radix
start local 1 // int exponent
0: .line 3917
getstatic java.math.BigInteger.powerCache:[[Ljava/math/BigInteger;
iload 0 /* radix */
aaload
astore 2 /* cacheLine */
start local 2 // java.math.BigInteger[] cacheLine
1: .line 3918
iload 1 /* exponent */
aload 2 /* cacheLine */
arraylength
if_icmpge 3
2: .line 3919
aload 2 /* cacheLine */
iload 1 /* exponent */
aaload
areturn
3: .line 3922
StackMap locals: java.math.BigInteger[]
StackMap stack:
aload 2 /* cacheLine */
arraylength
istore 3 /* oldLength */
start local 3 // int oldLength
4: .line 3923
aload 2 /* cacheLine */
iload 1 /* exponent */
iconst_1
iadd
invokestatic java.util.Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
checkcast java.math.BigInteger[]
astore 2 /* cacheLine */
5: .line 3924
iload 3 /* oldLength */
istore 4 /* i */
start local 4 // int i
6: goto 9
7: .line 3925
StackMap locals: int int
StackMap stack:
aload 2 /* cacheLine */
iload 4 /* i */
aload 2 /* cacheLine */
iload 4 /* i */
iconst_1
isub
aaload
iconst_2
invokevirtual java.math.BigInteger.pow:(I)Ljava/math/BigInteger;
aastore
8: .line 3924
iinc 4 /* i */ 1
StackMap locals:
StackMap stack:
9: iload 4 /* i */
iload 1 /* exponent */
if_icmple 7
end local 4 // int i
10: .line 3928
getstatic java.math.BigInteger.powerCache:[[Ljava/math/BigInteger;
astore 4 /* pc */
start local 4 // java.math.BigInteger[][] pc
11: .line 3929
iload 1 /* exponent */
aload 4 /* pc */
iload 0 /* radix */
aaload
arraylength
if_icmplt 15
12: .line 3930
aload 4 /* pc */
invokevirtual java.math.BigInteger[][].clone:()Ljava/lang/Object;
checkcast java.math.BigInteger[][]
astore 4 /* pc */
13: .line 3931
aload 4 /* pc */
iload 0 /* radix */
aload 2 /* cacheLine */
aastore
14: .line 3932
aload 4 /* pc */
putstatic java.math.BigInteger.powerCache:[[Ljava/math/BigInteger;
15: .line 3934
StackMap locals: int int java.math.BigInteger[] int java.math.BigInteger[][]
StackMap stack:
aload 2 /* cacheLine */
iload 1 /* exponent */
aaload
areturn
end local 4 // java.math.BigInteger[][] pc
end local 3 // int oldLength
end local 2 // java.math.BigInteger[] cacheLine
end local 1 // int exponent
end local 0 // int radix
LocalVariableTable:
Start End Slot Name Signature
0 16 0 radix I
0 16 1 exponent I
1 16 2 cacheLine [Ljava/math/BigInteger;
4 16 3 oldLength I
6 10 4 i I
11 16 4 pc [[Ljava/math/BigInteger;
MethodParameters:
Name Flags
radix
exponent
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 // java.math.BigInteger this
0: .line 3959
aload 0 /* this */
bipush 10
invokevirtual java.math.BigInteger.toString:(I)Ljava/lang/String;
areturn
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigInteger;
public byte[] toByteArray();
descriptor: ()[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=7, args_size=1
start local 0 // java.math.BigInteger this
0: .line 3977
aload 0 /* this */
invokevirtual java.math.BigInteger.bitLength:()I
bipush 8
idiv
iconst_1
iadd
istore 1 /* byteLen */
start local 1 // int byteLen
1: .line 3978
iload 1 /* byteLen */
newarray 8
astore 2 /* byteArray */
start local 2 // byte[] byteArray
2: .line 3980
iload 1 /* byteLen */
iconst_1
isub
istore 3 /* i */
start local 3 // int i
3: iconst_4
istore 4 /* bytesCopied */
start local 4 // int bytesCopied
4: iconst_0
istore 5 /* nextInt */
start local 5 // int nextInt
5: iconst_0
istore 6 /* intIndex */
start local 6 // int intIndex
6: goto 15
7: .line 3981
StackMap locals: java.math.BigInteger int byte[] int int int int
StackMap stack:
iload 4 /* bytesCopied */
iconst_4
if_icmpne 11
8: .line 3982
aload 0 /* this */
iload 6 /* intIndex */
iinc 6 /* intIndex */ 1
invokevirtual java.math.BigInteger.getInt:(I)I
istore 5 /* nextInt */
9: .line 3983
iconst_1
istore 4 /* bytesCopied */
10: .line 3984
goto 13
11: .line 3985
StackMap locals:
StackMap stack:
iload 5 /* nextInt */
bipush 8
iushr
istore 5 /* nextInt */
12: .line 3986
iinc 4 /* bytesCopied */ 1
13: .line 3988
StackMap locals:
StackMap stack:
aload 2 /* byteArray */
iload 3 /* i */
iload 5 /* nextInt */
i2b
bastore
14: .line 3980
iinc 3 /* i */ -1
StackMap locals:
StackMap stack:
15: iload 3 /* i */
ifge 7
end local 6 // int intIndex
end local 5 // int nextInt
end local 4 // int bytesCopied
end local 3 // int i
16: .line 3990
aload 2 /* byteArray */
areturn
end local 2 // byte[] byteArray
end local 1 // int byteLen
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Ljava/math/BigInteger;
1 17 1 byteLen I
2 17 2 byteArray [B
3 16 3 i I
4 16 4 bytesCopied I
5 16 5 nextInt I
6 16 6 intIndex I
public int intValue();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 // java.math.BigInteger this
0: .line 4009
iconst_0
istore 1 /* result */
start local 1 // int result
1: .line 4010
aload 0 /* this */
iconst_0
invokevirtual java.math.BigInteger.getInt:(I)I
istore 1 /* result */
2: .line 4011
iload 1 /* result */
ireturn
end local 1 // int result
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BigInteger;
1 3 1 result I
public long longValue();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=1
start local 0 // java.math.BigInteger this
0: .line 4030
lconst_0
lstore 1 /* result */
start local 1 // long result
1: .line 4032
iconst_1
istore 3 /* i */
start local 3 // int i
2: goto 5
3: .line 4033
StackMap locals: long int
StackMap stack:
lload 1 /* result */
bipush 32
lshl
aload 0 /* this */
iload 3 /* i */
invokevirtual java.math.BigInteger.getInt:(I)I
i2l
ldc 4294967295
land
ladd
lstore 1 /* result */
4: .line 4032
iinc 3 /* i */ -1
StackMap locals:
StackMap stack:
5: iload 3 /* i */
ifge 3
end local 3 // int i
6: .line 4034
lload 1 /* result */
lreturn
end local 1 // long result
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljava/math/BigInteger;
1 7 1 result J
2 6 3 i I
public float floatValue();
descriptor: ()F
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=10, args_size=1
start local 0 // java.math.BigInteger this
0: .line 4053
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 4054
fconst_0
freturn
2: .line 4057
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
iconst_1
isub
iconst_5
ishl
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
iaload
invokestatic java.math.BigInteger.bitLengthForInt:(I)I
iadd
iconst_1
isub
istore 1 /* exponent */
start local 1 // int exponent
3: .line 4060
iload 1 /* exponent */
bipush 63
if_icmpge 5
4: .line 4061
aload 0 /* this */
invokevirtual java.math.BigInteger.longValue:()J
l2f
freturn
5: .line 4062
StackMap locals: int
StackMap stack:
iload 1 /* exponent */
bipush 127
if_icmple 9
6: .line 4063
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifle 7
ldc Infinity
goto 8
StackMap locals:
StackMap stack:
7: ldc -Infinity
StackMap locals:
StackMap stack: float
8: freturn
9: .line 4076
StackMap locals:
StackMap stack:
iload 1 /* exponent */
bipush 24
isub
istore 2 /* shift */
start local 2 // int shift
10: .line 4082
iload 2 /* shift */
bipush 31
iand
istore 4 /* nBits */
start local 4 // int nBits
11: .line 4083
bipush 32
iload 4 /* nBits */
isub
istore 5 /* nBits2 */
start local 5 // int nBits2
12: .line 4085
iload 4 /* nBits */
ifne 15
13: .line 4086
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
iaload
istore 3 /* twiceSignifFloor */
start local 3 // int twiceSignifFloor
14: .line 4087
goto 18
end local 3 // int twiceSignifFloor
15: .line 4088
StackMap locals: java.math.BigInteger int int top int int
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
iaload
iload 4 /* nBits */
iushr
istore 3 /* twiceSignifFloor */
start local 3 // int twiceSignifFloor
16: .line 4089
iload 3 /* twiceSignifFloor */
ifne 18
17: .line 4090
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
iaload
iload 5 /* nBits2 */
ishl
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_1
iaload
iload 4 /* nBits */
iushr
ior
istore 3 /* twiceSignifFloor */
18: .line 4094
StackMap locals: java.math.BigInteger int int int int int
StackMap stack:
iload 3 /* twiceSignifFloor */
iconst_1
ishr
istore 6 /* signifFloor */
start local 6 // int signifFloor
19: .line 4095
iload 6 /* signifFloor */
ldc 8388607
iand
istore 6 /* signifFloor */
20: .line 4104
iload 3 /* twiceSignifFloor */
iconst_1
iand
ifeq 24
21: .line 4105
iload 6 /* signifFloor */
iconst_1
iand
ifne 23
aload 0 /* this */
invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.getLowestSetBit:()I
iload 2 /* shift */
22: .line 4104
if_icmpge 24
StackMap locals: int
StackMap stack:
23: iconst_1
goto 25
StackMap locals:
StackMap stack:
24: iconst_0
StackMap locals:
StackMap stack: int
25: istore 7 /* increment */
start local 7 // boolean increment
26: .line 4106
iload 7 /* increment */
ifeq 27
iload 6 /* signifFloor */
iconst_1
iadd
goto 28
StackMap locals: int
StackMap stack:
27: iload 6 /* signifFloor */
StackMap locals:
StackMap stack: int
28: istore 8 /* signifRounded */
start local 8 // int signifRounded
29: .line 4107
iload 1 /* exponent */
bipush 127
iadd
30: .line 4108
bipush 23
31: .line 4107
ishl
istore 9 /* bits */
start local 9 // int bits
32: .line 4109
iload 9 /* bits */
iload 8 /* signifRounded */
iadd
istore 9 /* bits */
33: .line 4117
iload 9 /* bits */
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ldc -2147483648
iand
ior
istore 9 /* bits */
34: .line 4118
iload 9 /* bits */
invokestatic java.lang.Float.intBitsToFloat:(I)F
freturn
end local 9 // int bits
end local 8 // int signifRounded
end local 7 // boolean increment
end local 6 // int signifFloor
end local 5 // int nBits2
end local 4 // int nBits
end local 3 // int twiceSignifFloor
end local 2 // int shift
end local 1 // int exponent
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 35 0 this Ljava/math/BigInteger;
3 35 1 exponent I
10 35 2 shift I
14 15 3 twiceSignifFloor I
16 35 3 twiceSignifFloor I
11 35 4 nBits I
12 35 5 nBits2 I
19 35 6 signifFloor I
26 35 7 increment Z
29 35 8 signifRounded I
32 35 9 bits I
public double doubleValue();
descriptor: ()D
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=16, args_size=1
start local 0 // java.math.BigInteger this
0: .line 4137
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 4138
dconst_0
dreturn
2: .line 4141
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
iconst_1
isub
iconst_5
ishl
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
iaload
invokestatic java.math.BigInteger.bitLengthForInt:(I)I
iadd
iconst_1
isub
istore 1 /* exponent */
start local 1 // int exponent
3: .line 4144
iload 1 /* exponent */
bipush 63
if_icmpge 5
4: .line 4145
aload 0 /* this */
invokevirtual java.math.BigInteger.longValue:()J
l2d
dreturn
5: .line 4146
StackMap locals: int
StackMap stack:
iload 1 /* exponent */
sipush 1023
if_icmple 9
6: .line 4147
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifle 7
ldc Infinity
goto 8
StackMap locals:
StackMap stack:
7: ldc -Infinity
StackMap locals:
StackMap stack: double
8: dreturn
9: .line 4160
StackMap locals:
StackMap stack:
iload 1 /* exponent */
bipush 53
isub
istore 2 /* shift */
start local 2 // int shift
10: .line 4166
iload 2 /* shift */
bipush 31
iand
istore 5 /* nBits */
start local 5 // int nBits
11: .line 4167
bipush 32
iload 5 /* nBits */
isub
istore 6 /* nBits2 */
start local 6 // int nBits2
12: .line 4171
iload 5 /* nBits */
ifne 16
13: .line 4172
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
iaload
istore 7 /* highBits */
start local 7 // int highBits
14: .line 4173
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_1
iaload
istore 8 /* lowBits */
start local 8 // int lowBits
15: .line 4174
goto 21
end local 8 // int lowBits
end local 7 // int highBits
16: .line 4175
StackMap locals: java.math.BigInteger int int top top int int
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
iaload
iload 5 /* nBits */
iushr
istore 7 /* highBits */
start local 7 // int highBits
17: .line 4176
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
iaload
iload 6 /* nBits2 */
ishl
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_1
iaload
iload 5 /* nBits */
iushr
ior
istore 8 /* lowBits */
start local 8 // int lowBits
18: .line 4177
iload 7 /* highBits */
ifne 21
19: .line 4178
iload 8 /* lowBits */
istore 7 /* highBits */
20: .line 4179
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_1
iaload
iload 6 /* nBits2 */
ishl
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_2
iaload
iload 5 /* nBits */
iushr
ior
istore 8 /* lowBits */
21: .line 4183
StackMap locals: int int
StackMap stack:
iload 7 /* highBits */
i2l
ldc 4294967295
land
bipush 32
lshl
22: .line 4184
iload 8 /* lowBits */
i2l
ldc 4294967295
land
23: .line 4183
lor
lstore 3 /* twiceSignifFloor */
start local 3 // long twiceSignifFloor
24: .line 4186
lload 3 /* twiceSignifFloor */
iconst_1
lshr
lstore 9 /* signifFloor */
start local 9 // long signifFloor
25: .line 4187
lload 9 /* signifFloor */
ldc 4503599627370495
land
lstore 9 /* signifFloor */
26: .line 4196
lload 3 /* twiceSignifFloor */
lconst_1
land
lconst_0
lcmp
ifeq 30
27: .line 4197
lload 9 /* signifFloor */
lconst_1
land
lconst_0
lcmp
ifne 29
aload 0 /* this */
invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.getLowestSetBit:()I
iload 2 /* shift */
28: .line 4196
if_icmpge 30
StackMap locals: java.math.BigInteger int int long int int int int long
StackMap stack:
29: iconst_1
goto 31
StackMap locals:
StackMap stack:
30: iconst_0
StackMap locals:
StackMap stack: int
31: istore 11 /* increment */
start local 11 // boolean increment
32: .line 4198
iload 11 /* increment */
ifeq 33
lload 9 /* signifFloor */
lconst_1
ladd
goto 34
StackMap locals: int
StackMap stack:
33: lload 9 /* signifFloor */
StackMap locals:
StackMap stack: long
34: lstore 12 /* signifRounded */
start local 12 // long signifRounded
35: .line 4199
iload 1 /* exponent */
sipush 1023
iadd
i2l
36: .line 4200
bipush 52
37: .line 4199
lshl
lstore 14 /* bits */
start local 14 // long bits
38: .line 4201
lload 14 /* bits */
lload 12 /* signifRounded */
ladd
lstore 14 /* bits */
39: .line 4209
lload 14 /* bits */
aload 0 /* this */
getfield java.math.BigInteger.signum:I
i2l
ldc -9223372036854775808
land
lor
lstore 14 /* bits */
40: .line 4210
lload 14 /* bits */
invokestatic java.lang.Double.longBitsToDouble:(J)D
dreturn
end local 14 // long bits
end local 12 // long signifRounded
end local 11 // boolean increment
end local 9 // long signifFloor
end local 8 // int lowBits
end local 7 // int highBits
end local 6 // int nBits2
end local 5 // int nBits
end local 3 // long twiceSignifFloor
end local 2 // int shift
end local 1 // int exponent
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 41 0 this Ljava/math/BigInteger;
3 41 1 exponent I
10 41 2 shift I
24 41 3 twiceSignifFloor J
11 41 5 nBits I
12 41 6 nBits2 I
14 16 7 highBits I
17 41 7 highBits I
15 16 8 lowBits I
18 41 8 lowBits I
25 41 9 signifFloor J
32 41 11 increment Z
35 41 12 signifRounded J
38 41 14 bits J
private static int[] stripLeadingZeroInts(int[]);
descriptor: ([I)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=1
start local 0 // int[] val
0: .line 4217
aload 0 /* val */
arraylength
istore 1 /* vlen */
start local 1 // int vlen
1: .line 4221
iconst_0
istore 2 /* keep */
start local 2 // int keep
2: goto 4
StackMap locals: int int
StackMap stack:
3: iinc 2 /* keep */ 1
StackMap locals:
StackMap stack:
4: iload 2 /* keep */
iload 1 /* vlen */
if_icmpge 5
aload 0 /* val */
iload 2 /* keep */
iaload
ifeq 3
5: .line 4223
StackMap locals:
StackMap stack:
aload 0 /* val */
iload 2 /* keep */
iload 1 /* vlen */
invokestatic java.util.Arrays.copyOfRange:([III)[I
areturn
end local 2 // int keep
end local 1 // int vlen
end local 0 // int[] val
LocalVariableTable:
Start End Slot Name Signature
0 6 0 val [I
1 6 1 vlen I
2 6 2 keep I
MethodParameters:
Name Flags
val
private static int[] trustedStripLeadingZeroInts(int[]);
descriptor: ([I)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=1
start local 0 // int[] val
0: .line 4231
aload 0 /* val */
arraylength
istore 1 /* vlen */
start local 1 // int vlen
1: .line 4235
iconst_0
istore 2 /* keep */
start local 2 // int keep
2: goto 4
StackMap locals: int int
StackMap stack:
3: iinc 2 /* keep */ 1
StackMap locals:
StackMap stack:
4: iload 2 /* keep */
iload 1 /* vlen */
if_icmpge 5
aload 0 /* val */
iload 2 /* keep */
iaload
ifeq 3
5: .line 4237
StackMap locals:
StackMap stack:
iload 2 /* keep */
ifne 6
aload 0 /* val */
goto 7
StackMap locals:
StackMap stack:
6: aload 0 /* val */
iload 2 /* keep */
iload 1 /* vlen */
invokestatic java.util.Arrays.copyOfRange:([III)[I
StackMap locals:
StackMap stack: int[]
7: areturn
end local 2 // int keep
end local 1 // int vlen
end local 0 // int[] val
LocalVariableTable:
Start End Slot Name Signature
0 8 0 val [I
1 8 1 vlen I
2 8 2 keep I
MethodParameters:
Name Flags
val
private static int[] stripLeadingZeroBytes(byte[]);
descriptor: ([B)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=10, args_size=1
start local 0 // byte[] a
0: .line 4244
aload 0 /* a */
arraylength
istore 1 /* byteLength */
start local 1 // int byteLength
1: .line 4248
iconst_0
istore 2 /* keep */
start local 2 // int keep
2: goto 4
StackMap locals: int int
StackMap stack:
3: iinc 2 /* keep */ 1
StackMap locals:
StackMap stack:
4: iload 2 /* keep */
iload 1 /* byteLength */
if_icmpge 5
aload 0 /* a */
iload 2 /* keep */
baload
ifeq 3
5: .line 4252
StackMap locals:
StackMap stack:
iload 1 /* byteLength */
iload 2 /* keep */
isub
iconst_3
iadd
iconst_2
iushr
istore 3 /* intLength */
start local 3 // int intLength
6: .line 4253
iload 3 /* intLength */
newarray 10
astore 4 /* result */
start local 4 // int[] result
7: .line 4254
iload 1 /* byteLength */
iconst_1
isub
istore 5 /* b */
start local 5 // int b
8: .line 4255
iload 3 /* intLength */
iconst_1
isub
istore 6 /* i */
start local 6 // int i
9: goto 19
10: .line 4256
StackMap locals: byte[] int int int int[] int int
StackMap stack:
aload 4 /* result */
iload 6 /* i */
aload 0 /* a */
iload 5 /* b */
iinc 5 /* b */ -1
baload
sipush 255
iand
iastore
11: .line 4257
iload 5 /* b */
iload 2 /* keep */
isub
iconst_1
iadd
istore 7 /* bytesRemaining */
start local 7 // int bytesRemaining
12: .line 4258
iconst_3
iload 7 /* bytesRemaining */
invokestatic java.lang.Math.min:(II)I
istore 8 /* bytesToTransfer */
start local 8 // int bytesToTransfer
13: .line 4259
bipush 8
istore 9 /* j */
start local 9 // int j
14: goto 17
15: .line 4260
StackMap locals: int int int
StackMap stack:
aload 4 /* result */
iload 6 /* i */
dup2
iaload
aload 0 /* a */
iload 5 /* b */
iinc 5 /* b */ -1
baload
sipush 255
iand
iload 9 /* j */
ishl
ior
iastore
16: .line 4259
iinc 9 /* j */ 8
StackMap locals:
StackMap stack:
17: iload 9 /* j */
iload 8 /* bytesToTransfer */
iconst_3
ishl
if_icmple 15
end local 9 // int j
end local 8 // int bytesToTransfer
end local 7 // int bytesRemaining
18: .line 4255
iinc 6 /* i */ -1
StackMap locals:
StackMap stack:
19: iload 6 /* i */
ifge 10
end local 6 // int i
20: .line 4262
aload 4 /* result */
areturn
end local 5 // int b
end local 4 // int[] result
end local 3 // int intLength
end local 2 // int keep
end local 1 // int byteLength
end local 0 // byte[] a
LocalVariableTable:
Start End Slot Name Signature
0 21 0 a [B
1 21 1 byteLength I
2 21 2 keep I
6 21 3 intLength I
7 21 4 result [I
8 21 5 b I
9 20 6 i I
12 18 7 bytesRemaining I
13 18 8 bytesToTransfer I
14 18 9 j I
MethodParameters:
Name Flags
a
private static int[] makePositive(byte[]);
descriptor: ([B)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=11, args_size=1
start local 0 // byte[] a
0: .line 4271
aload 0 /* a */
arraylength
istore 3 /* byteLength */
start local 3 // int byteLength
1: .line 4274
iconst_0
istore 1 /* keep */
start local 1 // int keep
2: goto 4
StackMap locals: byte[] int top int
StackMap stack:
3: iinc 1 /* keep */ 1
StackMap locals:
StackMap stack:
4: iload 1 /* keep */
iload 3 /* byteLength */
if_icmpge 5
aload 0 /* a */
iload 1 /* keep */
baload
iconst_m1
if_icmpeq 3
5: .line 4280
StackMap locals:
StackMap stack:
iload 1 /* keep */
istore 2 /* k */
start local 2 // int k
6: goto 8
StackMap locals: byte[] int int int
StackMap stack:
7: iinc 2 /* k */ 1
StackMap locals:
StackMap stack:
8: iload 2 /* k */
iload 3 /* byteLength */
if_icmpge 9
aload 0 /* a */
iload 2 /* k */
baload
ifeq 7
9: .line 4283
StackMap locals:
StackMap stack:
iload 2 /* k */
iload 3 /* byteLength */
if_icmpne 10
iconst_1
goto 11
StackMap locals:
StackMap stack:
10: iconst_0
StackMap locals:
StackMap stack: int
11: istore 4 /* extraByte */
start local 4 // int extraByte
12: .line 4284
iload 3 /* byteLength */
iload 1 /* keep */
isub
iload 4 /* extraByte */
iadd
iconst_3
iadd
iconst_2
iushr
istore 5 /* intLength */
start local 5 // int intLength
13: .line 4285
iload 5 /* intLength */
newarray 10
astore 6 /* result */
start local 6 // int[] result
14: .line 4289
iload 3 /* byteLength */
iconst_1
isub
istore 7 /* b */
start local 7 // int b
15: .line 4290
iload 5 /* intLength */
iconst_1
isub
istore 8 /* i */
start local 8 // int i
16: goto 29
17: .line 4291
StackMap locals: byte[] int int int int int int[] int int
StackMap stack:
aload 6 /* result */
iload 8 /* i */
aload 0 /* a */
iload 7 /* b */
iinc 7 /* b */ -1
baload
sipush 255
iand
iastore
18: .line 4292
iconst_3
iload 7 /* b */
iload 1 /* keep */
isub
iconst_1
iadd
invokestatic java.lang.Math.min:(II)I
istore 9 /* numBytesToTransfer */
start local 9 // int numBytesToTransfer
19: .line 4293
iload 9 /* numBytesToTransfer */
ifge 21
20: .line 4294
iconst_0
istore 9 /* numBytesToTransfer */
21: .line 4295
StackMap locals: int
StackMap stack:
bipush 8
istore 10 /* j */
start local 10 // int j
22: goto 25
23: .line 4296
StackMap locals: int
StackMap stack:
aload 6 /* result */
iload 8 /* i */
dup2
iaload
aload 0 /* a */
iload 7 /* b */
iinc 7 /* b */ -1
baload
sipush 255
iand
iload 10 /* j */
ishl
ior
iastore
24: .line 4295
iinc 10 /* j */ 8
StackMap locals:
StackMap stack:
25: iload 10 /* j */
bipush 8
iload 9 /* numBytesToTransfer */
imul
if_icmple 23
end local 10 // int j
26: .line 4299
iconst_m1
bipush 8
iconst_3
iload 9 /* numBytesToTransfer */
isub
imul
iushr
istore 10 /* mask */
start local 10 // int mask
27: .line 4300
aload 6 /* result */
iload 8 /* i */
aload 6 /* result */
iload 8 /* i */
iaload
iconst_m1
ixor
iload 10 /* mask */
iand
iastore
end local 10 // int mask
end local 9 // int numBytesToTransfer
28: .line 4290
iinc 8 /* i */ -1
StackMap locals:
StackMap stack:
29: iload 8 /* i */
ifge 17
end local 8 // int i
30: .line 4304
aload 6 /* result */
arraylength
iconst_1
isub
istore 8 /* i */
start local 8 // int i
31: goto 36
32: .line 4305
StackMap locals:
StackMap stack:
aload 6 /* result */
iload 8 /* i */
aload 6 /* result */
iload 8 /* i */
iaload
i2l
ldc 4294967295
land
lconst_1
ladd
l2i
iastore
33: .line 4306
aload 6 /* result */
iload 8 /* i */
iaload
ifeq 35
34: .line 4307
goto 37
35: .line 4304
StackMap locals:
StackMap stack:
iinc 8 /* i */ -1
StackMap locals:
StackMap stack:
36: iload 8 /* i */
ifge 32
end local 8 // int i
37: .line 4310
StackMap locals:
StackMap stack:
aload 6 /* result */
areturn
end local 7 // int b
end local 6 // int[] result
end local 5 // int intLength
end local 4 // int extraByte
end local 3 // int byteLength
end local 2 // int k
end local 1 // int keep
end local 0 // byte[] a
LocalVariableTable:
Start End Slot Name Signature
0 38 0 a [B
2 38 1 keep I
6 38 2 k I
1 38 3 byteLength I
12 38 4 extraByte I
13 38 5 intLength I
14 38 6 result [I
15 38 7 b I
16 30 8 i I
19 28 9 numBytesToTransfer I
22 26 10 j I
27 28 10 mask I
31 37 8 i I
MethodParameters:
Name Flags
a
private static int[] makePositive(int[]);
descriptor: ([I)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=6, args_size=1
start local 0 // int[] a
0: .line 4321
iconst_0
istore 1 /* keep */
start local 1 // int keep
1: goto 3
StackMap locals: int
StackMap stack:
2: iinc 1 /* keep */ 1
StackMap locals:
StackMap stack:
3: iload 1 /* keep */
aload 0 /* a */
arraylength
if_icmpge 4
aload 0 /* a */
iload 1 /* keep */
iaload
iconst_m1
if_icmpeq 2
4: .line 4326
StackMap locals:
StackMap stack:
iload 1 /* keep */
istore 2 /* j */
start local 2 // int j
5: goto 7
StackMap locals: int
StackMap stack:
6: iinc 2 /* j */ 1
StackMap locals:
StackMap stack:
7: iload 2 /* j */
aload 0 /* a */
arraylength
if_icmpge 8
aload 0 /* a */
iload 2 /* j */
iaload
ifeq 6
8: .line 4328
StackMap locals:
StackMap stack:
iload 2 /* j */
aload 0 /* a */
arraylength
if_icmpne 9
iconst_1
goto 10
StackMap locals:
StackMap stack:
9: iconst_0
StackMap locals:
StackMap stack: int
10: istore 3 /* extraInt */
start local 3 // int extraInt
11: .line 4329
aload 0 /* a */
arraylength
iload 1 /* keep */
isub
iload 3 /* extraInt */
iadd
newarray 10
astore 4 /* result */
start local 4 // int[] result
12: .line 4333
iload 1 /* keep */
istore 5 /* i */
start local 5 // int i
13: goto 16
14: .line 4334
StackMap locals: int int[] int
StackMap stack:
aload 4 /* result */
iload 5 /* i */
iload 1 /* keep */
isub
iload 3 /* extraInt */
iadd
aload 0 /* a */
iload 5 /* i */
iaload
iconst_m1
ixor
iastore
15: .line 4333
iinc 5 /* i */ 1
StackMap locals:
StackMap stack:
16: iload 5 /* i */
aload 0 /* a */
arraylength
if_icmplt 14
end local 5 // int i
17: .line 4337
aload 4 /* result */
arraylength
iconst_1
isub
istore 5 /* i */
start local 5 // int i
18: goto 20
StackMap locals:
StackMap stack:
19: iinc 5 /* i */ -1
StackMap locals:
StackMap stack:
20: aload 4 /* result */
iload 5 /* i */
dup2
iaload
iconst_1
iadd
dup_x2
iastore
ifeq 19
end local 5 // int i
21: .line 4340
aload 4 /* result */
areturn
end local 4 // int[] result
end local 3 // int extraInt
end local 2 // int j
end local 1 // int keep
end local 0 // int[] a
LocalVariableTable:
Start End Slot Name Signature
0 22 0 a [I
1 22 1 keep I
5 22 2 j I
11 22 3 extraInt I
12 22 4 result [I
13 17 5 i I
18 21 5 i I
MethodParameters:
Name Flags
a
private int intLength();
descriptor: ()I
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 // java.math.BigInteger this
0: .line 4405
aload 0 /* this */
invokevirtual java.math.BigInteger.bitLength:()I
iconst_5
iushr
iconst_1
iadd
ireturn
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigInteger;
private int signBit();
descriptor: ()I
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 // java.math.BigInteger this
0: .line 4410
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifge 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: ireturn
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BigInteger;
private int signInt();
descriptor: ()I
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 // java.math.BigInteger this
0: .line 4415
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifge 1
iconst_m1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: ireturn
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BigInteger;
private int getInt(int);
descriptor: (I)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // int n
0: .line 4425
iload 1 /* n */
ifge 2
1: .line 4426
iconst_0
ireturn
2: .line 4427
StackMap locals:
StackMap stack:
iload 1 /* n */
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
if_icmplt 4
3: .line 4428
aload 0 /* this */
invokevirtual java.math.BigInteger.signInt:()I
ireturn
4: .line 4430
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
iload 1 /* n */
isub
iconst_1
isub
iaload
istore 2 /* magInt */
start local 2 // int magInt
5: .line 4432
aload 0 /* this */
getfield java.math.BigInteger.signum:I
iflt 6
iload 2 /* magInt */
goto 8
6: .line 4433
StackMap locals: int
StackMap stack:
iload 1 /* n */
aload 0 /* this */
invokevirtual java.math.BigInteger.firstNonzeroIntNum:()I
if_icmpgt 7
iload 2 /* magInt */
ineg
goto 8
StackMap locals:
StackMap stack:
7: iload 2 /* magInt */
iconst_m1
ixor
8: .line 4432
StackMap locals:
StackMap stack: int
ireturn
end local 2 // int magInt
end local 1 // int n
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljava/math/BigInteger;
0 9 1 n I
5 9 2 magInt I
MethodParameters:
Name Flags
n
private int firstNonzeroIntNum();
descriptor: ()I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=1
start local 0 // java.math.BigInteger this
0: .line 4442
aload 0 /* this */
getfield java.math.BigInteger.firstNonzeroIntNum:I
iconst_2
isub
istore 1 /* fn */
start local 1 // int fn
1: .line 4443
iload 1 /* fn */
bipush -2
if_icmpne 10
2: .line 4444
iconst_0
istore 1 /* fn */
3: .line 4448
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 3 /* mlen */
start local 3 // int mlen
4: .line 4449
iload 3 /* mlen */
iconst_1
isub
istore 2 /* i */
start local 2 // int i
5: goto 7
StackMap locals: int int int
StackMap stack:
6: iinc 2 /* i */ -1
StackMap locals:
StackMap stack:
7: iload 2 /* i */
iflt 8
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 2 /* i */
iaload
ifeq 6
8: .line 4451
StackMap locals:
StackMap stack:
iload 3 /* mlen */
iload 2 /* i */
isub
iconst_1
isub
istore 1 /* fn */
9: .line 4452
aload 0 /* this */
iload 1 /* fn */
iconst_2
iadd
putfield java.math.BigInteger.firstNonzeroIntNum:I
end local 3 // int mlen
end local 2 // int i
10: .line 4454
StackMap locals:
StackMap stack:
iload 1 /* fn */
ireturn
end local 1 // int fn
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Ljava/math/BigInteger;
1 11 1 fn I
5 10 2 i I
4 10 3 mlen I
private void readObject(java.io.ObjectInputStream);
descriptor: (Ljava/io/ObjectInputStream;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=7, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.io.ObjectInputStream s
0: .line 4507
aload 1 /* s */
invokevirtual java.io.ObjectInputStream.readFields:()Ljava/io/ObjectInputStream$GetField;
astore 2 /* fields */
start local 2 // java.io.ObjectInputStream$GetField fields
1: .line 4510
aload 2 /* fields */
ldc "signum"
bipush -2
invokevirtual java.io.ObjectInputStream$GetField.get:(Ljava/lang/String;I)I
istore 3 /* sign */
start local 3 // int sign
2: .line 4511
aload 2 /* fields */
ldc "magnitude"
aconst_null
invokevirtual java.io.ObjectInputStream$GetField.get:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
checkcast byte[]
astore 4 /* magnitude */
start local 4 // byte[] magnitude
3: .line 4514
iload 3 /* sign */
iconst_m1
if_icmplt 4
iload 3 /* sign */
iconst_1
if_icmple 8
4: .line 4515
StackMap locals: java.io.ObjectInputStream$GetField int byte[]
StackMap stack:
ldc "BigInteger: Invalid signum value"
astore 5 /* message */
start local 5 // java.lang.String message
5: .line 4516
aload 2 /* fields */
ldc "signum"
invokevirtual java.io.ObjectInputStream$GetField.defaulted:(Ljava/lang/String;)Z
ifeq 7
6: .line 4517
ldc "BigInteger: Signum not present in stream"
astore 5 /* message */
7: .line 4518
StackMap locals: java.lang.String
StackMap stack:
new java.io.StreamCorruptedException
dup
aload 5 /* message */
invokespecial java.io.StreamCorruptedException.<init>:(Ljava/lang/String;)V
athrow
end local 5 // java.lang.String message
8: .line 4520
StackMap locals:
StackMap stack:
aload 4 /* magnitude */
invokestatic java.math.BigInteger.stripLeadingZeroBytes:([B)[I
astore 5 /* mag */
start local 5 // int[] mag
9: .line 4521
aload 5 /* mag */
arraylength
ifne 10
iconst_1
goto 11
StackMap locals: int[]
StackMap stack:
10: iconst_0
StackMap locals:
StackMap stack: int
11: iload 3 /* sign */
ifne 12
iconst_1
goto 13
StackMap locals:
StackMap stack: int
12: iconst_0
StackMap locals: java.math.BigInteger java.io.ObjectInputStream java.io.ObjectInputStream$GetField int byte[] int[]
StackMap stack: int int
13: if_icmpeq 18
14: .line 4522
ldc "BigInteger: signum-magnitude mismatch"
astore 6 /* message */
start local 6 // java.lang.String message
15: .line 4523
aload 2 /* fields */
ldc "magnitude"
invokevirtual java.io.ObjectInputStream$GetField.defaulted:(Ljava/lang/String;)Z
ifeq 17
16: .line 4524
ldc "BigInteger: Magnitude not present in stream"
astore 6 /* message */
17: .line 4525
StackMap locals: java.lang.String
StackMap stack:
new java.io.StreamCorruptedException
dup
aload 6 /* message */
invokespecial java.io.StreamCorruptedException.<init>:(Ljava/lang/String;)V
athrow
end local 6 // java.lang.String message
18: .line 4529
StackMap locals:
StackMap stack:
aload 0 /* this */
iload 3 /* sign */
invokestatic java.math.BigInteger$UnsafeHolder.putSign:(Ljava/math/BigInteger;I)V
19: .line 4532
aload 0 /* this */
aload 5 /* mag */
invokestatic java.math.BigInteger$UnsafeHolder.putMag:(Ljava/math/BigInteger;[I)V
20: .line 4533
aload 5 /* mag */
arraylength
ldc 67108864
if_icmplt 25
21: .line 4535
aload 0 /* this */
invokevirtual java.math.BigInteger.checkRange:()V
22: .line 4536
goto 25
StackMap locals:
StackMap stack: java.lang.ArithmeticException
23: pop
24: .line 4537
new java.io.StreamCorruptedException
dup
ldc "BigInteger: Out of the supported range"
invokespecial java.io.StreamCorruptedException.<init>:(Ljava/lang/String;)V
athrow
25: .line 4540
StackMap locals:
StackMap stack:
return
end local 5 // int[] mag
end local 4 // byte[] magnitude
end local 3 // int sign
end local 2 // java.io.ObjectInputStream$GetField fields
end local 1 // java.io.ObjectInputStream s
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 26 0 this Ljava/math/BigInteger;
0 26 1 s Ljava/io/ObjectInputStream;
1 26 2 fields Ljava/io/ObjectInputStream$GetField;
2 26 3 sign I
3 26 4 magnitude [B
5 8 5 message Ljava/lang/String;
9 26 5 mag [I
15 18 6 message Ljava/lang/String;
Exception table:
from to target type
21 22 23 Class java.lang.ArithmeticException
Exceptions:
throws java.io.IOException, java.lang.ClassNotFoundException
MethodParameters:
Name Flags
s
private void writeObject(java.io.ObjectOutputStream);
descriptor: (Ljava/io/ObjectOutputStream;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // java.io.ObjectOutputStream s
0: .line 4578
aload 1 /* s */
invokevirtual java.io.ObjectOutputStream.putFields:()Ljava/io/ObjectOutputStream$PutField;
astore 2 /* fields */
start local 2 // java.io.ObjectOutputStream$PutField fields
1: .line 4579
aload 2 /* fields */
ldc "signum"
aload 0 /* this */
getfield java.math.BigInteger.signum:I
invokevirtual java.io.ObjectOutputStream$PutField.put:(Ljava/lang/String;I)V
2: .line 4580
aload 2 /* fields */
ldc "magnitude"
aload 0 /* this */
invokevirtual java.math.BigInteger.magSerializedForm:()[B
invokevirtual java.io.ObjectOutputStream$PutField.put:(Ljava/lang/String;Ljava/lang/Object;)V
3: .line 4583
aload 2 /* fields */
ldc "bitCount"
iconst_m1
invokevirtual java.io.ObjectOutputStream$PutField.put:(Ljava/lang/String;I)V
4: .line 4584
aload 2 /* fields */
ldc "bitLength"
iconst_m1
invokevirtual java.io.ObjectOutputStream$PutField.put:(Ljava/lang/String;I)V
5: .line 4585
aload 2 /* fields */
ldc "lowestSetBit"
bipush -2
invokevirtual java.io.ObjectOutputStream$PutField.put:(Ljava/lang/String;I)V
6: .line 4586
aload 2 /* fields */
ldc "firstNonzeroByteNum"
bipush -2
invokevirtual java.io.ObjectOutputStream$PutField.put:(Ljava/lang/String;I)V
7: .line 4589
aload 1 /* s */
invokevirtual java.io.ObjectOutputStream.writeFields:()V
8: .line 4590
return
end local 2 // java.io.ObjectOutputStream$PutField fields
end local 1 // java.io.ObjectOutputStream s
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljava/math/BigInteger;
0 9 1 s Ljava/io/ObjectOutputStream;
1 9 2 fields Ljava/io/ObjectOutputStream$PutField;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
s
private byte[] magSerializedForm();
descriptor: ()[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=9, args_size=1
start local 0 // java.math.BigInteger this
0: .line 4596
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 1 /* len */
start local 1 // int len
1: .line 4598
iload 1 /* len */
ifne 2
iconst_0
goto 3
StackMap locals: int
StackMap stack:
2: iload 1 /* len */
iconst_1
isub
iconst_5
ishl
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
iaload
invokestatic java.math.BigInteger.bitLengthForInt:(I)I
iadd
StackMap locals:
StackMap stack: int
3: istore 2 /* bitLen */
start local 2 // int bitLen
4: .line 4599
iload 2 /* bitLen */
bipush 7
iadd
iconst_3
iushr
istore 3 /* byteLen */
start local 3 // int byteLen
5: .line 4600
iload 3 /* byteLen */
newarray 8
astore 4 /* result */
start local 4 // byte[] result
6: .line 4602
iload 3 /* byteLen */
iconst_1
isub
istore 5 /* i */
start local 5 // int i
7: iconst_4
istore 6 /* bytesCopied */
start local 6 // int bytesCopied
8: iload 1 /* len */
iconst_1
isub
istore 7 /* intIndex */
start local 7 // int intIndex
9: iconst_0
istore 8 /* nextInt */
start local 8 // int nextInt
10: .line 4603
goto 19
11: .line 4604
StackMap locals: java.math.BigInteger int int int byte[] int int int int
StackMap stack:
iload 6 /* bytesCopied */
iconst_4
if_icmpne 15
12: .line 4605
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 7 /* intIndex */
iinc 7 /* intIndex */ -1
iaload
istore 8 /* nextInt */
13: .line 4606
iconst_1
istore 6 /* bytesCopied */
14: .line 4607
goto 17
15: .line 4608
StackMap locals:
StackMap stack:
iload 8 /* nextInt */
bipush 8
iushr
istore 8 /* nextInt */
16: .line 4609
iinc 6 /* bytesCopied */ 1
17: .line 4611
StackMap locals:
StackMap stack:
aload 4 /* result */
iload 5 /* i */
iload 8 /* nextInt */
i2b
bastore
18: .line 4603
iinc 5 /* i */ -1
StackMap locals:
StackMap stack:
19: iload 5 /* i */
20: .line 4602
ifge 11
end local 8 // int nextInt
end local 7 // int intIndex
end local 6 // int bytesCopied
end local 5 // int i
21: .line 4613
aload 4 /* result */
areturn
end local 4 // byte[] result
end local 3 // int byteLen
end local 2 // int bitLen
end local 1 // int len
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Ljava/math/BigInteger;
1 22 1 len I
4 22 2 bitLen I
5 22 3 byteLen I
6 22 4 result [B
7 21 5 i I
8 21 6 bytesCopied I
9 21 7 intIndex I
10 21 8 nextInt I
public long longValueExact();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 // java.math.BigInteger this
0: .line 4629
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
iconst_2
if_icmpgt 2
aload 0 /* this */
invokevirtual java.math.BigInteger.bitLength:()I
bipush 63
if_icmpgt 2
1: .line 4630
aload 0 /* this */
invokevirtual java.math.BigInteger.longValue:()J
lreturn
2: .line 4632
StackMap locals:
StackMap stack:
new java.lang.ArithmeticException
dup
ldc "BigInteger out of long range"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BigInteger;
public int intValueExact();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 // java.math.BigInteger this
0: .line 4648
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
iconst_1
if_icmpgt 2
aload 0 /* this */
invokevirtual java.math.BigInteger.bitLength:()I
bipush 31
if_icmpgt 2
1: .line 4649
aload 0 /* this */
invokevirtual java.math.BigInteger.intValue:()I
ireturn
2: .line 4651
StackMap locals:
StackMap stack:
new java.lang.ArithmeticException
dup
ldc "BigInteger out of int range"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BigInteger;
public short shortValueExact();
descriptor: ()S
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 // java.math.BigInteger this
0: .line 4667
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
iconst_1
if_icmpgt 4
aload 0 /* this */
invokevirtual java.math.BigInteger.bitLength:()I
bipush 31
if_icmpgt 4
1: .line 4668
aload 0 /* this */
invokevirtual java.math.BigInteger.intValue:()I
istore 1 /* value */
start local 1 // int value
2: .line 4669
iload 1 /* value */
sipush -32768
if_icmplt 4
iload 1 /* value */
sipush 32767
if_icmpgt 4
3: .line 4670
aload 0 /* this */
invokevirtual java.math.BigInteger.shortValue:()S
ireturn
end local 1 // int value
4: .line 4672
StackMap locals:
StackMap stack:
new java.lang.ArithmeticException
dup
ldc "BigInteger out of short range"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/math/BigInteger;
2 4 1 value I
public byte byteValueExact();
descriptor: ()B
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 // java.math.BigInteger this
0: .line 4688
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
iconst_1
if_icmpgt 4
aload 0 /* this */
invokevirtual java.math.BigInteger.bitLength:()I
bipush 31
if_icmpgt 4
1: .line 4689
aload 0 /* this */
invokevirtual java.math.BigInteger.intValue:()I
istore 1 /* value */
start local 1 // int value
2: .line 4690
iload 1 /* value */
bipush -128
if_icmplt 4
iload 1 /* value */
bipush 127
if_icmpgt 4
3: .line 4691
aload 0 /* this */
invokevirtual java.math.BigInteger.byteValue:()B
ireturn
end local 1 // int value
4: .line 4693
StackMap locals:
StackMap stack:
new java.lang.ArithmeticException
dup
ldc "BigInteger out of byte range"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/math/BigInteger;
2 4 1 value I
public int compareTo(java.lang.Object);
descriptor: (Ljava/lang/Object;)I
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=2, locals=2, args_size=2
0: .line 1
aload 0
aload 1
checkcast java.math.BigInteger
invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
ireturn
LocalVariableTable:
Start End Slot Name Signature
}
Signature: Ljava/lang/Number;Ljava/lang/Comparable<Ljava/math/BigInteger;>;
SourceFile: "BigInteger.java"
NestMembers:
java.math.BigInteger$UnsafeHolder
InnerClasses:
public abstract GetField = java.io.ObjectInputStream$GetField of java.io.ObjectInputStream
public abstract PutField = java.io.ObjectOutputStream$PutField of java.io.ObjectOutputStream
private UnsafeHolder = java.math.BigInteger$UnsafeHolder of java.math.BigInteger