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 bitCountPlusOne;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int bitLengthPlusOne;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int lowestSetBitPlusTwo;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int firstNonzeroIntNumPlusTwo;
descriptor: I
flags: (0x0002) ACC_PRIVATE
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
public static final java.math.BigInteger TWO;
descriptor: Ljava/math/BigInteger;
flags: (0x0019) ACC_PUBLIC, 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 130
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 626
bipush 37
newarray 11
dup
iconst_2
4: .line 627
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 628
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 629
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 630
ldc 5253
lastore
dup
bipush 36
ldc 5295
lastore
8: .line 626
putstatic java.math.BigInteger.bitsPerDigit:[J
9: .line 811
ldc 152125131763605
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
10: .line 810
putstatic java.math.BigInteger.SMALL_PRIME_PRODUCT:Ljava/math/BigInteger;
11: .line 1216
bipush 17
anewarray java.math.BigInteger
putstatic java.math.BigInteger.posConst:[Ljava/math/BigInteger;
12: .line 1217
bipush 17
anewarray java.math.BigInteger
putstatic java.math.BigInteger.negConst:[Ljava/math/BigInteger;
13: .line 1230
ldc 2.0
invokestatic java.lang.Math.log:(D)D
putstatic java.math.BigInteger.LOG_TWO:D
14: .line 1241
iconst_1
istore 0 /* i */
start local 0 // int i
15: goto 21
16: .line 1242
StackMap locals: int
StackMap stack:
iconst_1
newarray 10
astore 1 /* magnitude */
start local 1 // int[] magnitude
17: .line 1243
aload 1 /* magnitude */
iconst_0
iload 0 /* i */
iastore
18: .line 1244
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 1245
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 1241
iinc 0 /* i */ 1
StackMap locals:
StackMap stack:
21: iload 0 /* i */
bipush 16
if_icmple 16
end local 0 // int i
22: .line 1253
bipush 37
anewarray java.math.BigInteger[]
putstatic java.math.BigInteger.powerCache:[[Ljava/math/BigInteger;
23: .line 1254
bipush 37
newarray 7
putstatic java.math.BigInteger.logCache:[D
24: .line 1256
iconst_2
istore 0 /* i */
start local 0 // int i
25: goto 29
26: .line 1257
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 1258
getstatic java.math.BigInteger.logCache:[D
iload 0 /* i */
iload 0 /* i */
i2d
invokestatic java.lang.Math.log:(D)D
dastore
28: .line 1256
iinc 0 /* i */ 1
StackMap locals:
StackMap stack:
29: iload 0 /* i */
bipush 36
if_icmple 26
end local 0 // int i
30: .line 1267
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 1274
lconst_1
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
putstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
32: .line 1281
ldc 2
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
putstatic java.math.BigInteger.TWO:Ljava/math/BigInteger;
33: .line 1286
ldc -1
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
putstatic java.math.BigInteger.NEGATIVE_ONE:Ljava/math/BigInteger;
34: .line 1293
ldc 10
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
putstatic java.math.BigInteger.TEN:Ljava/math/BigInteger;
35: .line 2857
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 2858
ldc 2147483647
iastore
37: .line 2857
putstatic java.math.BigInteger.bnExpModThreshTable:[I
38: .line 4079
bipush 64
anewarray java.lang.String
putstatic java.math.BigInteger.zeros:[Ljava/lang/String;
39: .line 4081
getstatic java.math.BigInteger.zeros:[Ljava/lang/String;
bipush 63
40: .line 4082
ldc "000000000000000000000000000000000000000000000000000000000000000"
41: .line 4081
aastore
42: .line 4083
iconst_0
istore 0 /* i */
start local 0 // int i
43: goto 46
44: .line 4084
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 4083
iinc 0 /* i */ 1
StackMap locals:
StackMap stack:
46: iload 0 /* i */
bipush 63
if_icmplt 44
end local 0 // int i
47: .line 4499
bipush 37
newarray 10
dup
iconst_2
48: .line 4500
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 4501
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 4499
putstatic java.math.BigInteger.digitsPerLong:[I
51: .line 4503
bipush 37
anewarray java.math.BigInteger
dup
iconst_2
52: .line 4504
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 4505
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 4506
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 4507
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 4508
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 4509
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 4510
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 4511
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 4512
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 4513
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 4514
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 4515
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 4516
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 4517
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 4518
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 4519
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 4520
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 4521
ldc 4738381338321616896
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
70: .line 4503
putstatic java.math.BigInteger.longRadix:[Ljava/math/BigInteger;
71: .line 4526
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 4527
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 4528
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 4526
putstatic java.math.BigInteger.digitsPerInt:[I
75: .line 4530
bipush 37
newarray 10
dup
iconst_2
76: .line 4531
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 4532
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 4533
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 4534
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 4535
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 4536
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 4537
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 4530
putstatic java.math.BigInteger.intRadix:[I
84: .line 4622
bipush 6
anewarray java.io.ObjectStreamField
dup
iconst_0
85: .line 4623
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 4624
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 4625
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 4626
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 4627
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 4628
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 4622
putstatic java.math.BigInteger.serialPersistentFields:[Ljava/io/ObjectStreamField;
92: .line 4629
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[], int, int);
descriptor: ([BII)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=4
start local 0 // java.math.BigInteger this
start local 1 // byte[] val
start local 2 // int off
start local 3 // int len
0: .line 306
aload 0 /* this */
invokespecial java.lang.Number.<init>:()V
1: .line 307
aload 1 /* val */
arraylength
ifne 3
2: .line 308
new java.lang.NumberFormatException
dup
ldc "Zero length BigInteger"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
3: .line 310
StackMap locals: java.math.BigInteger byte[] int int
StackMap stack:
iload 2 /* off */
iload 3 /* len */
aload 1 /* val */
arraylength
invokestatic java.util.Objects.checkFromIndexSize:(III)I
pop
4: .line 312
aload 1 /* val */
iload 2 /* off */
baload
ifge 8
5: .line 313
aload 0 /* this */
aload 1 /* val */
iload 2 /* off */
iload 3 /* len */
invokestatic java.math.BigInteger.makePositive:([BII)[I
putfield java.math.BigInteger.mag:[I
6: .line 314
aload 0 /* this */
iconst_m1
putfield java.math.BigInteger.signum:I
7: .line 315
goto 12
8: .line 316
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* val */
iload 2 /* off */
iload 3 /* len */
invokestatic java.math.BigInteger.stripLeadingZeroBytes:([BII)[I
putfield java.math.BigInteger.mag:[I
9: .line 317
aload 0 /* this */
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ifne 10
iconst_0
goto 11
StackMap locals:
StackMap stack: java.math.BigInteger
10: iconst_1
StackMap locals: java.math.BigInteger byte[] int int
StackMap stack: java.math.BigInteger int
11: putfield java.math.BigInteger.signum:I
12: .line 319
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ldc 67108864
if_icmplt 14
13: .line 320
aload 0 /* this */
invokevirtual java.math.BigInteger.checkRange:()V
14: .line 322
StackMap locals:
StackMap stack:
return
end local 3 // int len
end local 2 // int off
end local 1 // byte[] 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 [B
0 15 2 off I
0 15 3 len I
MethodParameters:
Name Flags
val
off
len
public void <init>(byte[]);
descriptor: ([B)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 // java.math.BigInteger this
start local 1 // byte[] val
0: .line 336
aload 0 /* this */
aload 1 /* val */
iconst_0
aload 1 /* val */
arraylength
invokespecial java.math.BigInteger.<init>:([BII)V
1: .line 337
return
end local 1 // byte[] 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 [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 347
aload 0 /* this */
invokespecial java.lang.Number.<init>:()V
1: .line 348
aload 1 /* val */
arraylength
ifne 3
2: .line 349
new java.lang.NumberFormatException
dup
ldc "Zero length BigInteger"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
3: .line 351
StackMap locals: java.math.BigInteger int[]
StackMap stack:
aload 1 /* val */
iconst_0
iaload
ifge 7
4: .line 352
aload 0 /* this */
aload 1 /* val */
invokestatic java.math.BigInteger.makePositive:([I)[I
putfield java.math.BigInteger.mag:[I
5: .line 353
aload 0 /* this */
iconst_m1
putfield java.math.BigInteger.signum:I
6: .line 354
goto 11
7: .line 355
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 356
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 358
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ldc 67108864
if_icmplt 13
12: .line 359
aload 0 /* this */
invokevirtual java.math.BigInteger.checkRange:()V
13: .line 361
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[], int, int);
descriptor: (I[BII)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=5
start local 0 // java.math.BigInteger this
start local 1 // int signum
start local 2 // byte[] magnitude
start local 3 // int off
start local 4 // int len
0: .line 392
aload 0 /* this */
invokespecial java.lang.Number.<init>:()V
1: .line 393
iload 1 /* signum */
iconst_m1
if_icmplt 2
iload 1 /* signum */
iconst_1
if_icmple 3
2: .line 394
StackMap locals: java.math.BigInteger int byte[] int int
StackMap stack:
new java.lang.NumberFormatException
dup
ldc "Invalid signum value"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
3: .line 396
StackMap locals:
StackMap stack:
iload 3 /* off */
iload 4 /* len */
aload 2 /* magnitude */
arraylength
invokestatic java.util.Objects.checkFromIndexSize:(III)I
pop
4: .line 399
aload 0 /* this */
aload 2 /* magnitude */
iload 3 /* off */
iload 4 /* len */
invokestatic java.math.BigInteger.stripLeadingZeroBytes:([BII)[I
putfield java.math.BigInteger.mag:[I
5: .line 401
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ifne 8
6: .line 402
aload 0 /* this */
iconst_0
putfield java.math.BigInteger.signum:I
7: .line 403
goto 11
8: .line 404
StackMap locals:
StackMap stack:
iload 1 /* signum */
ifne 10
9: .line 405
new java.lang.NumberFormatException
dup
ldc "signum-magnitude mismatch"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
10: .line 406
StackMap locals:
StackMap stack:
aload 0 /* this */
iload 1 /* signum */
putfield java.math.BigInteger.signum:I
11: .line 408
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ldc 67108864
if_icmplt 13
12: .line 409
aload 0 /* this */
invokevirtual java.math.BigInteger.checkRange:()V
13: .line 411
StackMap locals:
StackMap stack:
return
end local 4 // int len
end local 3 // int off
end local 2 // byte[] magnitude
end local 1 // int signum
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Ljava/math/BigInteger;
0 14 1 signum I
0 14 2 magnitude [B
0 14 3 off I
0 14 4 len I
MethodParameters:
Name Flags
signum
magnitude
off
len
public void <init>(int, byte[]);
descriptor: (I[B)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=3
start local 0 // java.math.BigInteger this
start local 1 // int signum
start local 2 // byte[] magnitude
0: .line 432
aload 0 /* this */
iload 1 /* signum */
aload 2 /* magnitude */
iconst_0
aload 2 /* magnitude */
arraylength
invokespecial java.math.BigInteger.<init>:(I[BII)V
1: .line 433
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 2 0 this Ljava/math/BigInteger;
0 2 1 signum I
0 2 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 442
aload 0 /* this */
invokespecial java.lang.Number.<init>:()V
1: .line 443
aload 0 /* this */
aload 2 /* magnitude */
invokestatic java.math.BigInteger.stripLeadingZeroInts:([I)[I
putfield java.math.BigInteger.mag:[I
2: .line 445
iload 1 /* signum */
iconst_m1
if_icmplt 3
iload 1 /* signum */
iconst_1
if_icmple 4
3: .line 446
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 448
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ifne 7
5: .line 449
aload 0 /* this */
iconst_0
putfield java.math.BigInteger.signum:I
6: .line 450
goto 10
7: .line 451
StackMap locals:
StackMap stack:
iload 1 /* signum */
ifne 9
8: .line 452
new java.lang.NumberFormatException
dup
ldc "signum-magnitude mismatch"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
9: .line 453
StackMap locals:
StackMap stack:
aload 0 /* this */
iload 1 /* signum */
putfield java.math.BigInteger.signum:I
10: .line 455
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ldc 67108864
if_icmplt 12
11: .line 456
aload 0 /* this */
invokevirtual java.math.BigInteger.checkRange:()V
12: .line 458
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 477
aload 0 /* this */
invokespecial java.lang.Number.<init>:()V
1: .line 478
iconst_0
istore 3 /* cursor */
start local 3 // int cursor
2: .line 479
aload 1 /* val */
invokevirtual java.lang.String.length:()I
istore 5 /* len */
start local 5 // int len
3: .line 481
iload 2 /* radix */
iconst_2
if_icmplt 4
iload 2 /* radix */
bipush 36
if_icmple 5
4: .line 482
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 483
StackMap locals:
StackMap stack:
iload 5 /* len */
ifne 7
6: .line 484
new java.lang.NumberFormatException
dup
ldc "Zero length BigInteger"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
7: .line 487
StackMap locals:
StackMap stack:
iconst_1
istore 6 /* sign */
start local 6 // int sign
8: .line 488
aload 1 /* val */
bipush 45
invokevirtual java.lang.String.lastIndexOf:(I)I
istore 7 /* index1 */
start local 7 // int index1
9: .line 489
aload 1 /* val */
bipush 43
invokevirtual java.lang.String.lastIndexOf:(I)I
istore 8 /* index2 */
start local 8 // int index2
10: .line 490
iload 7 /* index1 */
iflt 16
11: .line 491
iload 7 /* index1 */
ifne 12
iload 8 /* index2 */
iflt 13
12: .line 492
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 494
StackMap locals:
StackMap stack:
iconst_m1
istore 6 /* sign */
14: .line 495
iconst_1
istore 3 /* cursor */
15: .line 496
goto 20
StackMap locals:
StackMap stack:
16: iload 8 /* index2 */
iflt 20
17: .line 497
iload 8 /* index2 */
ifeq 19
18: .line 498
new java.lang.NumberFormatException
dup
ldc "Illegal embedded sign character"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
19: .line 500
StackMap locals:
StackMap stack:
iconst_1
istore 3 /* cursor */
20: .line 502
StackMap locals:
StackMap stack:
iload 3 /* cursor */
iload 5 /* len */
if_icmpne 23
21: .line 503
new java.lang.NumberFormatException
dup
ldc "Zero length BigInteger"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
22: .line 508
StackMap locals:
StackMap stack:
iinc 3 /* cursor */ 1
23: .line 506
StackMap locals:
StackMap stack:
iload 3 /* cursor */
iload 5 /* len */
if_icmpge 25
24: .line 507
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 511
StackMap locals:
StackMap stack:
iload 3 /* cursor */
iload 5 /* len */
if_icmpne 29
26: .line 512
aload 0 /* this */
iconst_0
putfield java.math.BigInteger.signum:I
27: .line 513
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 514
return
29: .line 517
StackMap locals:
StackMap stack:
iload 5 /* len */
iload 3 /* cursor */
isub
istore 4 /* numDigits */
start local 4 // int numDigits
30: .line 518
aload 0 /* this */
iload 6 /* sign */
putfield java.math.BigInteger.signum:I
31: .line 522
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 523
lload 9 /* numBits */
ldc 31
ladd
ldc 4294967296
lcmp
iflt 34
33: .line 524
invokestatic java.math.BigInteger.reportOverflow:()V
34: .line 526
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 527
iload 11 /* numWords */
newarray 10
astore 12 /* magnitude */
start local 12 // int[] magnitude
36: .line 530
iload 4 /* numDigits */
getstatic java.math.BigInteger.digitsPerInt:[I
iload 2 /* radix */
iaload
irem
istore 13 /* firstGroupLen */
start local 13 // int firstGroupLen
37: .line 531
iload 13 /* firstGroupLen */
ifne 39
38: .line 532
getstatic java.math.BigInteger.digitsPerInt:[I
iload 2 /* radix */
iaload
istore 13 /* firstGroupLen */
39: .line 533
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 534
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 535
aload 12 /* magnitude */
iload 11 /* numWords */
iconst_1
isub
iaload
ifge 43
42: .line 536
new java.lang.NumberFormatException
dup
ldc "Illegal digit"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
43: .line 539
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 540
iconst_0
istore 16 /* groupVal */
start local 16 // int groupVal
45: .line 541
goto 51
46: .line 542
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 543
aload 14 /* group */
iload 2 /* radix */
invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;I)I
istore 16 /* groupVal */
48: .line 544
iload 16 /* groupVal */
ifge 50
49: .line 545
new java.lang.NumberFormatException
dup
ldc "Illegal digit"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
50: .line 546
StackMap locals:
StackMap stack:
aload 12 /* magnitude */
iload 15 /* superRadix */
iload 16 /* groupVal */
invokestatic java.math.BigInteger.destructiveMulAdd:([III)V
51: .line 541
StackMap locals:
StackMap stack:
iload 3 /* cursor */
iload 5 /* len */
if_icmplt 46
52: .line 549
aload 0 /* this */
aload 12 /* magnitude */
invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
putfield java.math.BigInteger.mag:[I
53: .line 550
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ldc 67108864
if_icmplt 55
54: .line 551
aload 0 /* this */
invokevirtual java.math.BigInteger.checkRange:()V
55: .line 553
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 561
aload 0 /* this */
invokespecial java.lang.Number.<init>:()V
1: .line 562
iconst_0
istore 4 /* cursor */
start local 4 // int cursor
2: .line 565
goto 4
3: .line 566
StackMap locals: java.math.BigInteger char[] int int int
StackMap stack:
iinc 4 /* cursor */ 1
4: .line 565
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 568
StackMap locals:
StackMap stack:
iload 4 /* cursor */
iload 3 /* len */
if_icmpne 9
6: .line 569
aload 0 /* this */
iconst_0
putfield java.math.BigInteger.signum:I
7: .line 570
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 571
return
9: .line 574
StackMap locals:
StackMap stack:
iload 3 /* len */
iload 4 /* cursor */
isub
istore 5 /* numDigits */
start local 5 // int numDigits
10: .line 575
aload 0 /* this */
iload 2 /* sign */
putfield java.math.BigInteger.signum:I
11: .line 578
iload 3 /* len */
bipush 10
if_icmpge 14
12: .line 579
iconst_1
istore 6 /* numWords */
start local 6 // int numWords
13: .line 580
goto 18
end local 6 // int numWords
14: .line 581
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 582
lload 7 /* numBits */
ldc 31
ladd
ldc 4294967296
lcmp
iflt 17
16: .line 583
invokestatic java.math.BigInteger.reportOverflow:()V
17: .line 585
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 587
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 590
iload 5 /* numDigits */
getstatic java.math.BigInteger.digitsPerInt:[I
bipush 10
iaload
irem
istore 8 /* firstGroupLen */
start local 8 // int firstGroupLen
20: .line 591
iload 8 /* firstGroupLen */
ifne 22
21: .line 592
getstatic java.math.BigInteger.digitsPerInt:[I
bipush 10
iaload
istore 8 /* firstGroupLen */
22: .line 593
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 596
goto 26
24: .line 597
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 598
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 596
StackMap locals:
StackMap stack:
iload 4 /* cursor */
iload 3 /* len */
if_icmplt 24
27: .line 600
aload 0 /* this */
aload 7 /* magnitude */
invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
putfield java.math.BigInteger.mag:[I
28: .line 601
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ldc 67108864
if_icmplt 30
29: .line 602
aload 0 /* this */
invokevirtual java.math.BigInteger.checkRange:()V
30: .line 604
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 610
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 611
iload 4 /* result */
iconst_m1
if_icmpne 3
2: .line 612
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 614
StackMap locals: int
StackMap stack:
iload 2 /* start */
istore 5 /* index */
start local 5 // int index
4: goto 10
5: .line 615
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 616
iload 6 /* nextVal */
iconst_m1
if_icmpne 8
7: .line 617
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 618
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 614
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 621
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 635
iload 1 /* y */
i2l
ldc 4294967295
land
lstore 3 /* ylong */
start local 3 // long ylong
1: .line 636
iload 2 /* z */
i2l
ldc 4294967295
land
lstore 5 /* zlong */
start local 5 // long zlong
2: .line 637
aload 0 /* x */
arraylength
istore 7 /* len */
start local 7 // int len
3: .line 639
lconst_0
lstore 8 /* product */
start local 8 // long product
4: .line 640
lconst_0
lstore 10 /* carry */
start local 10 // long carry
5: .line 641
iload 7 /* len */
iconst_1
isub
istore 12 /* i */
start local 12 // int i
6: goto 11
7: .line 642
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 643
aload 0 /* x */
iload 12 /* i */
lload 8 /* product */
l2i
iastore
9: .line 644
lload 8 /* product */
bipush 32
lushr
lstore 10 /* carry */
10: .line 641
iinc 12 /* i */ -1
StackMap locals:
StackMap stack:
11: iload 12 /* i */
ifge 7
end local 12 // int i
12: .line 648
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 649
aload 0 /* x */
iload 7 /* len */
iconst_1
isub
lload 12 /* sum */
l2i
iastore
14: .line 650
lload 12 /* sum */
bipush 32
lushr
lstore 10 /* carry */
15: .line 651
iload 7 /* len */
iconst_2
isub
istore 14 /* i */
start local 14 // int i
16: goto 21
17: .line 652
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 653
aload 0 /* x */
iload 14 /* i */
lload 12 /* sum */
l2i
iastore
19: .line 654
lload 12 /* sum */
bipush 32
lushr
lstore 10 /* carry */
20: .line 651
iinc 14 /* i */ -1
StackMap locals:
StackMap stack:
21: iload 14 /* i */
ifge 17
end local 14 // int i
22: .line 656
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 672
aload 0 /* this */
aload 1 /* val */
bipush 10
invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
1: .line 673
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 689
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 690
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 693
iload 0 /* numBits */
ifge 2
1: .line 694
new java.lang.IllegalArgumentException
dup
ldc "numBits must be non-negative"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: .line 695
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 696
iload 2 /* numBytes */
newarray 8
astore 3 /* randomBits */
start local 3 // byte[] randomBits
4: .line 699
iload 2 /* numBytes */
ifle 8
5: .line 700
aload 1 /* rnd */
aload 3 /* randomBits */
invokevirtual java.util.Random.nextBytes:([B)V
6: .line 701
bipush 8
iload 2 /* numBytes */
imul
iload 0 /* numBits */
isub
istore 4 /* excessBits */
start local 4 // int excessBits
7: .line 702
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 704
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 726
aload 0 /* this */
invokespecial java.lang.Number.<init>:()V
1: .line 729
iload 1 /* bitLength */
iconst_2
if_icmpge 3
2: .line 730
new java.lang.ArithmeticException
dup
ldc "bitLength < 2"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
3: .line 731
StackMap locals: java.math.BigInteger int int java.util.Random
StackMap stack:
iload 1 /* bitLength */
bipush 95
if_icmpge 5
4: .line 732
iload 1 /* bitLength */
iload 2 /* certainty */
aload 3 /* rnd */
invokestatic java.math.BigInteger.smallPrime:(IILjava/util/Random;)Ljava/math/BigInteger;
goto 6
5: .line 733
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 731
StackMap locals:
StackMap stack: java.math.BigInteger
astore 4 /* prime */
start local 4 // java.math.BigInteger prime
7: .line 734
aload 0 /* this */
iconst_1
putfield java.math.BigInteger.signum:I
8: .line 735
aload 0 /* this */
aload 4 /* prime */
getfield java.math.BigInteger.mag:[I
putfield java.math.BigInteger.mag:[I
9: .line 736
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 760
iload 0 /* bitLength */
iconst_2
if_icmpge 2
1: .line 761
new java.lang.ArithmeticException
dup
ldc "bitLength < 2"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 763
StackMap locals:
StackMap stack:
iload 0 /* bitLength */
bipush 95
if_icmpge 4
3: .line 764
iload 0 /* bitLength */
bipush 100
aload 1 /* rnd */
invokestatic java.math.BigInteger.smallPrime:(IILjava/util/Random;)Ljava/math/BigInteger;
goto 5
4: .line 765
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 763
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 776
iload 0 /* bitLength */
bipush 31
iadd
iconst_5
iushr
istore 3 /* magLen */
start local 3 // int magLen
1: .line 777
iload 3 /* magLen */
newarray 10
astore 4 /* temp */
start local 4 // int[] temp
2: .line 778
iconst_1
iload 0 /* bitLength */
bipush 31
iadd
bipush 31
iand
ishl
istore 5 /* highBit */
start local 5 // int highBit
3: .line 779
iload 5 /* highBit */
iconst_1
ishl
iconst_1
isub
istore 6 /* highMask */
start local 6 // int highMask
4: .line 783
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 784
StackMap locals: int
StackMap stack:
aload 4 /* temp */
iload 7 /* i */
aload 2 /* rnd */
invokevirtual java.util.Random.nextInt:()I
iastore
7: .line 783
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 785
aload 4 /* temp */
iconst_0
aload 4 /* temp */
iconst_0
iaload
iload 6 /* highMask */
iand
iload 5 /* highBit */
ior
iastore
10: .line 786
iload 0 /* bitLength */
iconst_2
if_icmple 12
11: .line 787
aload 4 /* temp */
iload 3 /* magLen */
iconst_1
isub
dup2
iaload
iconst_1
ior
iastore
12: .line 789
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 792
iload 0 /* bitLength */
bipush 6
if_icmple 19
14: .line 793
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 794
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 795
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 796
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 797
goto 4
end local 8 // long r
19: .line 801
StackMap locals: java.math.BigInteger
StackMap stack:
iload 0 /* bitLength */
iconst_4
if_icmpge 21
20: .line 802
aload 7 /* p */
areturn
21: .line 805
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 806
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 821
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 822
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 825
iload 0 /* bitLength */
invokestatic java.math.BigInteger.getPrimeSearchLen:(I)I
istore 4 /* searchLen */
start local 4 // int searchLen
3: .line 826
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 827
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 829
goto 12
6: .line 830
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 831
aload 3 /* p */
invokevirtual java.math.BigInteger.bitLength:()I
iload 0 /* bitLength */
if_icmpeq 9
8: .line 832
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 833
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 834
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 835
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 829
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 837
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 853
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifge 2
1: .line 854
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 857
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 858
StackMap locals:
StackMap stack:
getstatic java.math.BigInteger.TWO:Ljava/math/BigInteger;
areturn
4: .line 860
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 863
aload 1 /* result */
invokevirtual java.math.BigInteger.bitLength:()I
bipush 95
if_icmpge 21
6: .line 866
aload 1 /* result */
iconst_0
invokevirtual java.math.BigInteger.testBit:(I)Z
ifne 8
7: .line 867
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 871
StackMap locals: java.math.BigInteger
StackMap stack:
aload 1 /* result */
invokevirtual java.math.BigInteger.bitLength:()I
bipush 6
if_icmple 15
9: .line 872
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 873
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 874
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 875
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 876
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 877
goto 8
end local 2 // long r
15: .line 882
StackMap locals:
StackMap stack:
aload 1 /* result */
invokevirtual java.math.BigInteger.bitLength:()I
iconst_4
if_icmpge 17
16: .line 883
aload 1 /* result */
areturn
17: .line 886
StackMap locals:
StackMap stack:
aload 1 /* result */
bipush 100
aconst_null
invokevirtual java.math.BigInteger.primeToCertainty:(ILjava/util/Random;)Z
ifeq 19
18: .line 887
aload 1 /* result */
areturn
19: .line 889
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 869
goto 8
21: .line 894
StackMap locals:
StackMap stack:
aload 1 /* result */
iconst_0
invokevirtual java.math.BigInteger.testBit:(I)Z
ifeq 23
22: .line 895
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 898
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 901
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 902
aload 3 /* searchSieve */
aload 1 /* result */
26: .line 903
bipush 100
aconst_null
27: .line 902
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 904
aload 4 /* candidate */
ifnull 30
29: .line 905
aload 4 /* candidate */
areturn
30: .line 906
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 900
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 911
iload 0 /* bitLength */
ldc 500000001
if_icmple 2
1: .line 912
new java.lang.ArithmeticException
dup
ldc "Prime search implementation restriction on bitLength"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 914
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 932
iconst_0
istore 3 /* rounds */
start local 3 // int rounds
1: .line 933
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 938
aload 0 /* this */
invokevirtual java.math.BigInteger.bitLength:()I
istore 5 /* sizeInBits */
start local 5 // int sizeInBits
3: .line 939
iload 5 /* sizeInBits */
bipush 100
if_icmpge 9
4: .line 940
bipush 50
istore 3 /* rounds */
5: .line 941
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 942
aload 0 /* this */
iload 3 /* rounds */
aload 2 /* random */
invokevirtual java.math.BigInteger.passesMillerRabin:(ILjava/util/Random;)Z
ireturn
9: .line 945
StackMap locals:
StackMap stack:
iload 5 /* sizeInBits */
sipush 256
if_icmpge 12
10: .line 946
bipush 27
istore 3 /* rounds */
11: .line 947
goto 22
StackMap locals:
StackMap stack:
12: iload 5 /* sizeInBits */
sipush 512
if_icmpge 15
13: .line 948
bipush 15
istore 3 /* rounds */
14: .line 949
goto 22
StackMap locals:
StackMap stack:
15: iload 5 /* sizeInBits */
sipush 768
if_icmpge 18
16: .line 950
bipush 8
istore 3 /* rounds */
17: .line 951
goto 22
StackMap locals:
StackMap stack:
18: iload 5 /* sizeInBits */
sipush 1024
if_icmpge 21
19: .line 952
iconst_4
istore 3 /* rounds */
20: .line 953
goto 22
21: .line 954
StackMap locals:
StackMap stack:
iconst_2
istore 3 /* rounds */
22: .line 956
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 958
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 968
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 971
iconst_5
istore 2 /* d */
start local 2 // int d
2: .line 972
goto 6
3: .line 974
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 972
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 978
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 981
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 989
iload 0 /* p */
ifne 2
1: .line 990
iconst_0
ireturn
2: .line 993
StackMap locals:
StackMap stack:
iconst_1
istore 2 /* j */
start local 2 // int j
3: .line 994
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 997
iload 0 /* p */
ifge 11
5: .line 998
iload 0 /* p */
ineg
istore 0 /* p */
6: .line 999
iload 3 /* u */
bipush 7
iand
istore 4 /* n8 */
start local 4 // int n8
7: .line 1000
iload 4 /* n8 */
iconst_3
if_icmpeq 8
iload 4 /* n8 */
bipush 7
if_icmpne 11
8: .line 1001
StackMap locals: int int int
StackMap stack:
iload 2 /* j */
ineg
istore 2 /* j */
end local 4 // int n8
9: .line 1005
goto 11
10: .line 1006
StackMap locals:
StackMap stack:
iload 0 /* p */
iconst_2
ishr
istore 0 /* p */
11: .line 1005
StackMap locals:
StackMap stack:
iload 0 /* p */
iconst_3
iand
ifeq 10
12: .line 1007
iload 0 /* p */
iconst_1
iand
ifne 16
13: .line 1008
iload 0 /* p */
iconst_1
ishr
istore 0 /* p */
14: .line 1009
iload 3 /* u */
iload 3 /* u */
iconst_1
ishr
ixor
iconst_2
iand
ifeq 16
15: .line 1010
iload 2 /* j */
ineg
istore 2 /* j */
16: .line 1012
StackMap locals:
StackMap stack:
iload 0 /* p */
iconst_1
if_icmpne 18
17: .line 1013
iload 2 /* j */
ireturn
18: .line 1015
StackMap locals:
StackMap stack:
iload 0 /* p */
iload 3 /* u */
iand
iconst_2
iand
ifeq 20
19: .line 1016
iload 2 /* j */
ineg
istore 2 /* j */
20: .line 1018
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 1021
goto 36
22: .line 1023
StackMap locals:
StackMap stack:
iload 3 /* u */
iconst_2
ishr
istore 3 /* u */
23: .line 1022
StackMap locals:
StackMap stack:
iload 3 /* u */
iconst_3
iand
ifeq 22
24: .line 1024
iload 3 /* u */
iconst_1
iand
ifne 28
25: .line 1025
iload 3 /* u */
iconst_1
ishr
istore 3 /* u */
26: .line 1026
iload 0 /* p */
iload 0 /* p */
iconst_1
ishr
ixor
iconst_2
iand
ifeq 28
27: .line 1027
iload 2 /* j */
ineg
istore 2 /* j */
28: .line 1029
StackMap locals:
StackMap stack:
iload 3 /* u */
iconst_1
if_icmpne 30
29: .line 1030
iload 2 /* j */
ireturn
30: .line 1032
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 1033
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 1034
iload 3 /* u */
iload 0 /* p */
iand
iconst_2
iand
ifeq 35
34: .line 1035
iload 2 /* j */
ineg
istore 2 /* j */
35: .line 1037
StackMap locals: int
StackMap stack:
iload 3 /* u */
iload 0 /* p */
irem
istore 3 /* u */
end local 4 // int t
36: .line 1021
StackMap locals:
StackMap stack:
iload 3 /* u */
ifne 23
37: .line 1039
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 1043
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 1044
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
astore 4 /* u */
start local 4 // java.math.BigInteger u
2: .line 1045
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
astore 6 /* v */
start local 6 // java.math.BigInteger v
3: .line 1047
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 1048
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 1050
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 1051
aload 7 /* v2 */
iconst_0
invokevirtual java.math.BigInteger.testBit:(I)Z
ifeq 9
8: .line 1052
aload 7 /* v2 */
aload 2 /* n */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 7 /* v2 */
9: .line 1054
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 1056
aload 5 /* u2 */
astore 4 /* u */
aload 7 /* v2 */
astore 6 /* v */
11: .line 1057
aload 1 /* k */
iload 8 /* i */
invokevirtual java.math.BigInteger.testBit:(I)Z
ifeq 21
12: .line 1058
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 1059
aload 5 /* u2 */
iconst_0
invokevirtual java.math.BigInteger.testBit:(I)Z
ifeq 15
14: .line 1060
aload 5 /* u2 */
aload 2 /* n */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 5 /* u2 */
15: .line 1062
StackMap locals:
StackMap stack:
aload 5 /* u2 */
iconst_1
invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
astore 5 /* u2 */
16: .line 1063
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 1064
aload 7 /* v2 */
iconst_0
invokevirtual java.math.BigInteger.testBit:(I)Z
ifeq 19
18: .line 1065
aload 7 /* v2 */
aload 2 /* n */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 7 /* v2 */
19: .line 1066
StackMap locals:
StackMap stack:
aload 7 /* v2 */
iconst_1
invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
astore 7 /* v2 */
20: .line 1068
aload 5 /* u2 */
astore 4 /* u */
aload 7 /* v2 */
astore 6 /* v */
21: .line 1047
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 1071
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 1085
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 1086
aload 3 /* thisMinusOne */
astore 4 /* m */
start local 4 // java.math.BigInteger m
2: .line 1087
aload 4 /* m */
invokevirtual java.math.BigInteger.getLowestSetBit:()I
istore 5 /* a */
start local 5 // int a
3: .line 1088
aload 4 /* m */
iload 5 /* a */
invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
astore 4 /* m */
4: .line 1091
aload 2 /* rnd */
ifnonnull 6
5: .line 1092
invokestatic java.util.concurrent.ThreadLocalRandom.current:()Ljava/util/concurrent/ThreadLocalRandom;
astore 2 /* rnd */
6: .line 1094
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 1098
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 1099
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 1097
ifge 8
11: .line 1101
iconst_0
istore 8 /* j */
start local 8 // int j
12: .line 1102
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 1103
goto 18
14: .line 1104
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 1105
StackMap locals:
StackMap stack:
iconst_0
ireturn
17: .line 1106
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 1103
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 1094
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 1109
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 1117
aload 0 /* this */
invokespecial java.lang.Number.<init>:()V
1: .line 1118
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 1119
aload 0 /* this */
aload 1 /* magnitude */
putfield java.math.BigInteger.mag:[I
5: .line 1120
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ldc 67108864
if_icmplt 7
6: .line 1121
aload 0 /* this */
invokevirtual java.math.BigInteger.checkRange:()V
7: .line 1123
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=4, locals=3, args_size=3
start local 0 // java.math.BigInteger this
start local 1 // byte[] magnitude
start local 2 // int signum
0: .line 1130
aload 0 /* this */
invokespecial java.lang.Number.<init>:()V
1: .line 1131
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 1132
aload 0 /* this */
aload 1 /* magnitude */
iconst_0
aload 1 /* magnitude */
arraylength
invokestatic java.math.BigInteger.stripLeadingZeroBytes:([BII)[I
putfield java.math.BigInteger.mag:[I
5: .line 1133
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
ldc 67108864
if_icmplt 7
6: .line 1134
aload 0 /* this */
invokevirtual java.math.BigInteger.checkRange:()V
7: .line 1136
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 1145
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 1146
StackMap locals:
StackMap stack:
invokestatic java.math.BigInteger.reportOverflow:()V
2: .line 1148
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 1151
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 1169
lload 0 /* val */
lconst_0
lcmp
ifne 2
1: .line 1170
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
2: .line 1171
StackMap locals:
StackMap stack:
lload 0 /* val */
lconst_0
lcmp
ifle 4
lload 0 /* val */
ldc 16
lcmp
ifgt 4
3: .line 1172
getstatic java.math.BigInteger.posConst:[Ljava/math/BigInteger;
lload 0 /* val */
l2i
aaload
areturn
4: .line 1173
StackMap locals:
StackMap stack:
lload 0 /* val */
lconst_0
lcmp
ifge 6
lload 0 /* val */
ldc -16
lcmp
iflt 6
5: .line 1174
getstatic java.math.BigInteger.negConst:[Ljava/math/BigInteger;
lload 0 /* val */
lneg
l2i
aaload
areturn
6: .line 1176
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 1182
aload 0 /* this */
invokespecial java.lang.Number.<init>:()V
1: .line 1183
lload 1 /* val */
lconst_0
lcmp
ifge 5
2: .line 1184
lload 1 /* val */
lneg
lstore 1 /* val */
3: .line 1185
aload 0 /* this */
iconst_m1
putfield java.math.BigInteger.signum:I
4: .line 1186
goto 6
5: .line 1187
StackMap locals: java.math.BigInteger long
StackMap stack:
aload 0 /* this */
iconst_1
putfield java.math.BigInteger.signum:I
6: .line 1190
StackMap locals:
StackMap stack:
lload 1 /* val */
bipush 32
lushr
l2i
istore 3 /* highWord */
start local 3 // int highWord
7: .line 1191
iload 3 /* highWord */
ifne 11
8: .line 1192
aload 0 /* this */
iconst_1
newarray 10
putfield java.math.BigInteger.mag:[I
9: .line 1193
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
lload 1 /* val */
l2i
iastore
10: .line 1194
goto 14
11: .line 1195
StackMap locals: int
StackMap stack:
aload 0 /* this */
iconst_2
newarray 10
putfield java.math.BigInteger.mag:[I
12: .line 1196
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
iload 3 /* highWord */
iastore
13: .line 1197
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_1
lload 1 /* val */
l2i
iastore
14: .line 1199
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 1207
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 1304
aload 1 /* val */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 1305
aload 0 /* this */
areturn
2: .line 1306
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 4
3: .line 1307
aload 1 /* val */
areturn
4: .line 1308
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 1309
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 1311
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 1312
iload 2 /* cmp */
ifne 9
8: .line 1313
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
9: .line 1314
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 1315
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 1314
StackMap locals:
StackMap stack: int[]
astore 3 /* resultMag */
start local 3 // int[] resultMag
12: .line 1316
aload 3 /* resultMag */
invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
astore 3 /* resultMag */
13: .line 1318
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 1326
lload 1 /* val */
lconst_0
lcmp
ifne 2
1: .line 1327
aload 0 /* this */
areturn
2: .line 1328
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 4
3: .line 1329
lload 1 /* val */
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
areturn
4: .line 1330
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 1331
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 1332
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 1333
iload 3 /* cmp */
ifne 9
8: .line 1334
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
9: .line 1335
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 1336
aload 4 /* resultMag */
invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
astore 4 /* resultMag */
13: .line 1337
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 1348
lconst_0
lstore 3 /* sum */
start local 3 // long sum
1: .line 1349
aload 0 /* x */
arraylength
istore 5 /* xIndex */
start local 5 // int xIndex
2: .line 1351
lload 1 /* val */
bipush 32
lushr
l2i
istore 7 /* highWord */
start local 7 // int highWord
3: .line 1352
iload 7 /* highWord */
ifne 8
4: .line 1353
iload 5 /* xIndex */
newarray 10
astore 6 /* result */
start local 6 // int[] result
5: .line 1354
aload 0 /* x */
iinc 5 /* xIndex */ -1
iload 5 /* xIndex */
iaload
i2l
ldc 4294967295
land
lload 1 /* val */
ladd
lstore 3 /* sum */
6: .line 1355
aload 6 /* result */
iload 5 /* xIndex */
lload 3 /* sum */
l2i
iastore
7: .line 1356
goto 19
end local 6 // int[] result
8: .line 1357
StackMap locals: int[] long long int top int
StackMap stack:
iload 5 /* xIndex */
iconst_1
if_icmpne 14
9: .line 1358
iconst_2
newarray 10
astore 6 /* result */
start local 6 // int[] result
10: .line 1359
lload 1 /* val */
aload 0 /* x */
iconst_0
iaload
i2l
ldc 4294967295
land
ladd
lstore 3 /* sum */
11: .line 1360
aload 6 /* result */
iconst_1
lload 3 /* sum */
l2i
iastore
12: .line 1361
aload 6 /* result */
iconst_0
lload 3 /* sum */
bipush 32
lushr
l2i
iastore
13: .line 1362
aload 6 /* result */
areturn
end local 6 // int[] result
14: .line 1364
StackMap locals:
StackMap stack:
iload 5 /* xIndex */
newarray 10
astore 6 /* result */
start local 6 // int[] result
15: .line 1365
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 1366
aload 6 /* result */
iload 5 /* xIndex */
lload 3 /* sum */
l2i
iastore
17: .line 1367
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 1368
aload 6 /* result */
iload 5 /* xIndex */
lload 3 /* sum */
l2i
iastore
19: .line 1372
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 1373
goto 26
23: .line 1374
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 1373
StackMap locals:
StackMap stack:
iload 5 /* xIndex */
ifle 29
iload 8 /* carry */
ifne 23
27: .line 1376
goto 29
28: .line 1377
StackMap locals:
StackMap stack:
aload 6 /* result */
iinc 5 /* xIndex */ -1
iload 5 /* xIndex */
aload 0 /* x */
iload 5 /* xIndex */
iaload
iastore
29: .line 1376
StackMap locals:
StackMap stack:
iload 5 /* xIndex */
ifgt 28
30: .line 1379
iload 8 /* carry */
ifeq 35
31: .line 1380
aload 6 /* result */
arraylength
iconst_1
iadd
newarray 10
astore 9 /* bigger */
start local 9 // int[] bigger
32: .line 1381
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 1382
aload 9 /* bigger */
iconst_0
iconst_1
iastore
34: .line 1383
aload 9 /* bigger */
areturn
end local 9 // int[] bigger
35: .line 1385
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 1395
aload 0 /* x */
arraylength
aload 1 /* y */
arraylength
if_icmpge 4
1: .line 1396
aload 0 /* x */
astore 2 /* tmp */
start local 2 // int[] tmp
2: .line 1397
aload 1 /* y */
astore 0 /* x */
3: .line 1398
aload 2 /* tmp */
astore 1 /* y */
end local 2 // int[] tmp
4: .line 1401
StackMap locals:
StackMap stack:
aload 0 /* x */
arraylength
istore 2 /* xIndex */
start local 2 // int xIndex
5: .line 1402
aload 1 /* y */
arraylength
istore 3 /* yIndex */
start local 3 // int yIndex
6: .line 1403
iload 2 /* xIndex */
newarray 10
astore 4 /* result */
start local 4 // int[] result
7: .line 1404
lconst_0
lstore 5 /* sum */
start local 5 // long sum
8: .line 1405
iload 3 /* yIndex */
iconst_1
if_icmpne 18
9: .line 1406
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 1407
aload 4 /* result */
iload 2 /* xIndex */
lload 5 /* sum */
l2i
iastore
11: .line 1408
goto 19
12: .line 1411
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 1412
aload 1 /* y */
iinc 3 /* yIndex */ -1
iload 3 /* yIndex */
iaload
i2l
ldc 4294967295
land
14: .line 1411
ladd
15: .line 1412
lload 5 /* sum */
bipush 32
lushr
16: .line 1411
ladd
lstore 5 /* sum */
17: .line 1413
aload 4 /* result */
iload 2 /* xIndex */
lload 5 /* sum */
l2i
iastore
18: .line 1410
StackMap locals:
StackMap stack:
iload 3 /* yIndex */
ifgt 12
19: .line 1417
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 1418
goto 26
23: .line 1419
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 1418
StackMap locals:
StackMap stack:
iload 2 /* xIndex */
ifle 29
iload 7 /* carry */
ifne 23
27: .line 1422
goto 29
28: .line 1423
StackMap locals:
StackMap stack:
aload 4 /* result */
iinc 2 /* xIndex */ -1
iload 2 /* xIndex */
aload 0 /* x */
iload 2 /* xIndex */
iaload
iastore
29: .line 1422
StackMap locals:
StackMap stack:
iload 2 /* xIndex */
ifgt 28
30: .line 1426
iload 7 /* carry */
ifeq 35
31: .line 1427
aload 4 /* result */
arraylength
iconst_1
iadd
newarray 10
astore 8 /* bigger */
start local 8 // int[] bigger
32: .line 1428
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 1429
aload 8 /* bigger */
iconst_0
iconst_1
iastore
34: .line 1430
aload 8 /* bigger */
areturn
end local 8 // int[] bigger
35: .line 1432
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 1436
lload 0 /* val */
bipush 32
lushr
l2i
istore 3 /* highWord */
start local 3 // int highWord
1: .line 1437
iload 3 /* highWord */
ifne 5
2: .line 1438
iconst_1
newarray 10
astore 4 /* result */
start local 4 // int[] result
3: .line 1439
aload 4 /* result */
iconst_0
lload 0 /* val */
aload 2 /* little */
iconst_0
iaload
i2l
ldc 4294967295
land
lsub
l2i
iastore
4: .line 1440
aload 4 /* result */
areturn
end local 4 // int[] result
5: .line 1442
StackMap locals: int
StackMap stack:
iconst_2
newarray 10
astore 4 /* result */
start local 4 // int[] result
6: .line 1443
aload 2 /* little */
arraylength
iconst_1
if_icmpne 17
7: .line 1444
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 1445
aload 4 /* result */
iconst_1
lload 5 /* difference */
l2i
iastore
9: .line 1447
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 1448
iload 7 /* borrow */
ifeq 15
13: .line 1449
aload 4 /* result */
iconst_0
iload 3 /* highWord */
iconst_1
isub
iastore
14: .line 1450
goto 16
15: .line 1451
StackMap locals: int
StackMap stack:
aload 4 /* result */
iconst_0
iload 3 /* highWord */
iastore
16: .line 1453
StackMap locals:
StackMap stack:
aload 4 /* result */
areturn
end local 7 // boolean borrow
end local 5 // long difference
17: .line 1455
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 1456
aload 4 /* result */
iconst_1
lload 5 /* difference */
l2i
iastore
19: .line 1457
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 1458
aload 4 /* result */
iconst_0
lload 5 /* difference */
l2i
iastore
21: .line 1459
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 1472
lload 1 /* val */
bipush 32
lushr
l2i
istore 3 /* highWord */
start local 3 // int highWord
1: .line 1473
aload 0 /* big */
arraylength
istore 4 /* bigIndex */
start local 4 // int bigIndex
2: .line 1474
iload 4 /* bigIndex */
newarray 10
astore 5 /* result */
start local 5 // int[] result
3: .line 1475
lconst_0
lstore 6 /* difference */
start local 6 // long difference
4: .line 1477
iload 3 /* highWord */
ifne 8
5: .line 1478
aload 0 /* big */
iinc 4 /* bigIndex */ -1
iload 4 /* bigIndex */
iaload
i2l
ldc 4294967295
land
lload 1 /* val */
lsub
lstore 6 /* difference */
6: .line 1479
aload 5 /* result */
iload 4 /* bigIndex */
lload 6 /* difference */
l2i
iastore
7: .line 1480
goto 12
8: .line 1481
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 1482
aload 5 /* result */
iload 4 /* bigIndex */
lload 6 /* difference */
l2i
iastore
10: .line 1483
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 1484
aload 5 /* result */
iload 4 /* bigIndex */
lload 6 /* difference */
l2i
iastore
12: .line 1488
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 1489
goto 19
16: .line 1490
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 1489
StackMap locals:
StackMap stack:
iload 4 /* bigIndex */
ifle 22
iload 8 /* borrow */
ifne 16
20: .line 1493
goto 22
21: .line 1494
StackMap locals:
StackMap stack:
aload 5 /* result */
iinc 4 /* bigIndex */ -1
iload 4 /* bigIndex */
aload 0 /* big */
iload 4 /* bigIndex */
iaload
iastore
22: .line 1493
StackMap locals:
StackMap stack:
iload 4 /* bigIndex */
ifgt 21
23: .line 1496
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 1506
aload 1 /* val */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 1507
aload 0 /* this */
areturn
2: .line 1508
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 4
3: .line 1509
aload 1 /* val */
invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
areturn
4: .line 1510
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 1511
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 1513
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 1514
iload 2 /* cmp */
ifne 9
8: .line 1515
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
9: .line 1516
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 1517
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 1516
StackMap locals:
StackMap stack: int[]
astore 3 /* resultMag */
start local 3 // int[] resultMag
12: .line 1518
aload 3 /* resultMag */
invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
astore 3 /* resultMag */
13: .line 1519
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 1529
aload 0 /* big */
arraylength
istore 2 /* bigIndex */
start local 2 // int bigIndex
1: .line 1530
iload 2 /* bigIndex */
newarray 10
astore 3 /* result */
start local 3 // int[] result
2: .line 1531
aload 1 /* little */
arraylength
istore 4 /* littleIndex */
start local 4 // int littleIndex
3: .line 1532
lconst_0
lstore 5 /* difference */
start local 5 // long difference
4: .line 1535
goto 11
5: .line 1536
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 1537
aload 1 /* little */
iinc 4 /* littleIndex */ -1
iload 4 /* littleIndex */
iaload
i2l
ldc 4294967295
land
7: .line 1536
lsub
8: .line 1538
lload 5 /* difference */
bipush 32
lshr
9: .line 1536
ladd
lstore 5 /* difference */
10: .line 1539
aload 3 /* result */
iload 2 /* bigIndex */
lload 5 /* difference */
l2i
iastore
11: .line 1535
StackMap locals:
StackMap stack:
iload 4 /* littleIndex */
ifgt 5
12: .line 1543
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 1544
goto 19
16: .line 1545
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 1544
StackMap locals:
StackMap stack:
iload 2 /* bigIndex */
ifle 22
iload 7 /* borrow */
ifne 16
20: .line 1548
goto 22
21: .line 1549
StackMap locals:
StackMap stack:
aload 3 /* result */
iinc 2 /* bigIndex */ -1
iload 2 /* bigIndex */
aload 0 /* big */
iload 2 /* bigIndex */
iaload
iastore
22: .line 1548
StackMap locals:
StackMap stack:
iload 2 /* bigIndex */
ifgt 21
23: .line 1551
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 1564
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 1576
aload 1 /* val */
getfield java.math.BigInteger.signum:I
ifeq 1
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 1577
StackMap locals:
StackMap stack:
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
2: .line 1579
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 3 /* xlen */
start local 3 // int xlen
3: .line 1581
aload 1 /* val */
aload 0 /* this */
if_acmpne 5
iload 3 /* xlen */
bipush 20
if_icmple 5
4: .line 1582
aload 0 /* this */
invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
areturn
5: .line 1585
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 1587
iload 3 /* xlen */
bipush 80
if_icmplt 7
iload 4 /* ylen */
bipush 80
if_icmpge 19
7: .line 1588
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 1589
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
arraylength
iconst_1
if_icmpne 12
11: .line 1590
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 1592
StackMap locals: int
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
iconst_1
if_icmpne 14
13: .line 1593
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 1595
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 3 /* xlen */
15: .line 1596
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
iload 4 /* ylen */
aconst_null
16: .line 1595
invokestatic java.math.BigInteger.multiplyToLen:([II[II[I)[I
astore 6 /* result */
start local 6 // int[] result
17: .line 1597
aload 6 /* result */
invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
astore 6 /* result */
18: .line 1598
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 1600
StackMap locals:
StackMap stack:
iload 3 /* xlen */
sipush 240
if_icmpge 21
iload 4 /* ylen */
sipush 240
if_icmpge 21
20: .line 1601
aload 0 /* this */
aload 1 /* val */
invokestatic java.math.BigInteger.multiplyKaratsuba:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
areturn
21: .line 1648
StackMap locals:
StackMap stack:
iload 2 /* isRecursion */
ifne 27
22: .line 1653
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 1654
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 1653
iadd
i2l
25: .line 1655
ldc 2147483648
lcmp
ifle 27
26: .line 1656
invokestatic java.math.BigInteger.reportOverflow:()V
27: .line 1660
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 1666
iload 1 /* y */
invokestatic java.lang.Integer.bitCount:(I)I
iconst_1
if_icmpne 2
1: .line 1667
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 1669
StackMap locals:
StackMap stack:
aload 0 /* x */
arraylength
istore 3 /* xlen */
start local 3 // int xlen
3: .line 1670
iload 3 /* xlen */
iconst_1
iadd
newarray 10
astore 4 /* rmag */
start local 4 // int[] rmag
4: .line 1671
lconst_0
lstore 5 /* carry */
start local 5 // long carry
5: .line 1672
iload 1 /* y */
i2l
ldc 4294967295
land
lstore 7 /* yl */
start local 7 // long yl
6: .line 1673
aload 4 /* rmag */
arraylength
iconst_1
isub
istore 9 /* rstart */
start local 9 // int rstart
7: .line 1674
iload 3 /* xlen */
iconst_1
isub
istore 10 /* i */
start local 10 // int i
8: goto 13
9: .line 1675
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 1676
aload 4 /* rmag */
iload 9 /* rstart */
iinc 9 /* rstart */ -1
lload 11 /* product */
l2i
iastore
11: .line 1677
lload 11 /* product */
bipush 32
lushr
lstore 5 /* carry */
end local 11 // long product
12: .line 1674
iinc 10 /* i */ -1
StackMap locals:
StackMap stack:
13: iload 10 /* i */
ifge 9
end local 10 // int i
14: .line 1679
lload 5 /* carry */
lconst_0
lcmp
ifne 17
15: .line 1680
aload 4 /* rmag */
iconst_1
aload 4 /* rmag */
arraylength
invokestatic java.util.Arrays.copyOfRange:([III)[I
astore 4 /* rmag */
16: .line 1681
goto 18
17: .line 1682
StackMap locals:
StackMap stack:
aload 4 /* rmag */
iload 9 /* rstart */
lload 5 /* carry */
l2i
iastore
18: .line 1684
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 1692
lload 1 /* v */
lconst_0
lcmp
ifeq 1
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 1693
StackMap locals:
StackMap stack:
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
2: .line 1694
StackMap locals:
StackMap stack:
lload 1 /* v */
ldc -9223372036854775808
lcmp
ifne 4
3: .line 1695
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 1696
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 1697
lload 1 /* v */
lconst_0
lcmp
ifge 9
8: .line 1698
lload 1 /* v */
lneg
lstore 1 /* v */
9: .line 1699
StackMap locals: int
StackMap stack:
lload 1 /* v */
bipush 32
lushr
lstore 4 /* dh */
start local 4 // long dh
10: .line 1700
lload 1 /* v */
ldc 4294967295
land
lstore 6 /* dl */
start local 6 // long dl
11: .line 1702
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 8 /* xlen */
start local 8 // int xlen
12: .line 1703
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
astore 9 /* value */
start local 9 // int[] value
13: .line 1704
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 1705
lconst_0
lstore 11 /* carry */
start local 11 // long carry
17: .line 1706
aload 10 /* rmag */
arraylength
iconst_1
isub
istore 13 /* rstart */
start local 13 // int rstart
18: .line 1707
iload 8 /* xlen */
iconst_1
isub
istore 14 /* i */
start local 14 // int i
19: goto 24
20: .line 1708
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 1709
aload 10 /* rmag */
iload 13 /* rstart */
iinc 13 /* rstart */ -1
lload 15 /* product */
l2i
iastore
22: .line 1710
lload 15 /* product */
bipush 32
lushr
lstore 11 /* carry */
end local 15 // long product
23: .line 1707
iinc 14 /* i */ -1
StackMap locals:
StackMap stack:
24: iload 14 /* i */
ifge 20
end local 14 // int i
25: .line 1712
aload 10 /* rmag */
iload 13 /* rstart */
lload 11 /* carry */
l2i
iastore
26: .line 1713
lload 4 /* dh */
lconst_0
lcmp
ifeq 41
27: .line 1714
lconst_0
lstore 11 /* carry */
28: .line 1715
aload 10 /* rmag */
arraylength
iconst_2
isub
istore 13 /* rstart */
29: .line 1716
iload 8 /* xlen */
iconst_1
isub
istore 14 /* i */
start local 14 // int i
30: goto 39
31: .line 1717
StackMap locals:
StackMap stack:
aload 9 /* value */
iload 14 /* i */
iaload
i2l
ldc 4294967295
land
lload 4 /* dh */
lmul
32: .line 1718
aload 10 /* rmag */
iload 13 /* rstart */
iaload
i2l
ldc 4294967295
land
33: .line 1717
ladd
34: .line 1718
lload 11 /* carry */
35: .line 1717
ladd
lstore 15 /* product */
start local 15 // long product
36: .line 1719
aload 10 /* rmag */
iload 13 /* rstart */
iinc 13 /* rstart */ -1
lload 15 /* product */
l2i
iastore
37: .line 1720
lload 15 /* product */
bipush 32
lushr
lstore 11 /* carry */
end local 15 // long product
38: .line 1716
iinc 14 /* i */ -1
StackMap locals:
StackMap stack:
39: iload 14 /* i */
ifge 31
end local 14 // int i
40: .line 1722
aload 10 /* rmag */
iconst_0
lload 11 /* carry */
l2i
iastore
41: .line 1724
StackMap locals:
StackMap stack:
lload 11 /* carry */
lconst_0
lcmp
ifne 43
42: .line 1725
aload 10 /* rmag */
iconst_1
aload 10 /* rmag */
arraylength
invokestatic java.util.Arrays.copyOfRange:([III)[I
astore 10 /* rmag */
43: .line 1726
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=5, locals=5, 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 1734
aload 0 /* x */
iload 1 /* xlen */
invokestatic java.math.BigInteger.multiplyToLenCheck:([II)V
1: .line 1735
aload 2 /* y */
iload 3 /* ylen */
invokestatic java.math.BigInteger.multiplyToLenCheck:([II)V
2: .line 1736
aload 0 /* x */
iload 1 /* xlen */
aload 2 /* y */
iload 3 /* ylen */
aload 4 /* z */
invokestatic java.math.BigInteger.implMultiplyToLen:([II[II[I)[I
areturn
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 3 0 x [I
0 3 1 xlen I
0 3 2 y [I
0 3 3 ylen I
0 3 4 z [I
MethodParameters:
Name Flags
x
xlen
y
ylen
z
private static int[] implMultiplyToLen(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 1741
iload 1 /* xlen */
iconst_1
isub
istore 5 /* xstart */
start local 5 // int xstart
1: .line 1742
iload 3 /* ylen */
iconst_1
isub
istore 6 /* ystart */
start local 6 // int ystart
2: .line 1744
aload 4 /* z */
ifnull 3
aload 4 /* z */
arraylength
iload 1 /* xlen */
iload 3 /* ylen */
iadd
if_icmpge 4
3: .line 1745
StackMap locals: int int
StackMap stack:
iload 1 /* xlen */
iload 3 /* ylen */
iadd
newarray 10
astore 4 /* z */
4: .line 1747
StackMap locals:
StackMap stack:
lconst_0
lstore 7 /* carry */
start local 7 // long carry
5: .line 1748
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 1749
StackMap locals: long int int
StackMap stack:
aload 2 /* y */
iload 9 /* j */
iaload
i2l
ldc 4294967295
land
9: .line 1750
aload 0 /* x */
iload 5 /* xstart */
iaload
i2l
ldc 4294967295
land
10: .line 1749
lmul
11: .line 1750
lload 7 /* carry */
12: .line 1749
ladd
lstore 11 /* product */
start local 11 // long product
13: .line 1751
aload 4 /* z */
iload 10 /* k */
lload 11 /* product */
l2i
iastore
14: .line 1752
lload 11 /* product */
bipush 32
lushr
lstore 7 /* carry */
end local 11 // long product
15: .line 1748
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 1754
aload 4 /* z */
iload 5 /* xstart */
lload 7 /* carry */
l2i
iastore
18: .line 1756
iload 5 /* xstart */
iconst_1
isub
istore 9 /* i */
start local 9 // int i
19: goto 37
20: .line 1757
StackMap locals:
StackMap stack:
lconst_0
lstore 7 /* carry */
21: .line 1758
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 1759
StackMap locals: int int
StackMap stack:
aload 2 /* y */
iload 10 /* j */
iaload
i2l
ldc 4294967295
land
25: .line 1760
aload 0 /* x */
iload 9 /* i */
iaload
i2l
ldc 4294967295
land
26: .line 1759
lmul
27: .line 1761
aload 4 /* z */
iload 11 /* k */
iaload
i2l
ldc 4294967295
land
28: .line 1759
ladd
29: .line 1761
lload 7 /* carry */
30: .line 1759
ladd
lstore 12 /* product */
start local 12 // long product
31: .line 1762
aload 4 /* z */
iload 11 /* k */
lload 12 /* product */
l2i
iastore
32: .line 1763
lload 12 /* product */
bipush 32
lushr
lstore 7 /* carry */
end local 12 // long product
33: .line 1758
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 1765
aload 4 /* z */
iload 9 /* i */
lload 7 /* carry */
l2i
iastore
36: .line 1756
iinc 9 /* i */ -1
StackMap locals:
StackMap stack:
37: iload 9 /* i */
ifge 20
end local 9 // int i
38: .line 1767
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
RuntimeVisibleAnnotations:
jdk.internal.HotSpotIntrinsicCandidate()
MethodParameters:
Name Flags
x
xlen
y
ylen
z
private static void multiplyToLenCheck(int[], int);
descriptor: ([II)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=2, args_size=2
start local 0 // int[] array
start local 1 // int length
0: .line 1771
iload 1 /* length */
ifgt 2
1: .line 1772
return
2: .line 1775
StackMap locals:
StackMap stack:
aload 0 /* array */
invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
3: .line 1777
iload 1 /* length */
aload 0 /* array */
arraylength
if_icmple 5
4: .line 1778
new java.lang.ArrayIndexOutOfBoundsException
dup
iload 1 /* length */
iconst_1
isub
invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(I)V
athrow
5: .line 1780
StackMap locals:
StackMap stack:
return
end local 1 // int length
end local 0 // int[] array
LocalVariableTable:
Start End Slot Name Signature
0 6 0 array [I
0 6 1 length I
MethodParameters:
Name Flags
array
length
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 1798
aload 0 /* x */
getfield java.math.BigInteger.mag:[I
arraylength
istore 2 /* xlen */
start local 2 // int xlen
1: .line 1799
aload 1 /* y */
getfield java.math.BigInteger.mag:[I
arraylength
istore 3 /* ylen */
start local 3 // int ylen
2: .line 1802
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 1806
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 1807
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 1808
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 1809
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 1811
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 1812
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 1815
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 1818
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 1820
aload 0 /* x */
getfield java.math.BigInteger.signum:I
aload 1 /* y */
getfield java.math.BigInteger.signum:I
if_icmpeq 13
12: .line 1821
aload 12 /* result */
invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
areturn
13: .line 1823
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 1856
aload 0 /* a */
getfield java.math.BigInteger.mag:[I
arraylength
istore 2 /* alen */
start local 2 // int alen
1: .line 1857
aload 1 /* b */
getfield java.math.BigInteger.mag:[I
arraylength
istore 3 /* blen */
start local 3 // int blen
2: .line 1859
iload 2 /* alen */
iload 3 /* blen */
invokestatic java.lang.Math.max:(II)I
istore 4 /* largest */
start local 4 // int largest
3: .line 1862
iload 4 /* largest */
iconst_2
iadd
iconst_3
idiv
istore 5 /* k */
start local 5 // int k
4: .line 1865
iload 4 /* largest */
iconst_2
iload 5 /* k */
imul
isub
istore 6 /* r */
start local 6 // int r
5: .line 1870
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 1871
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 1872
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 1873
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 1874
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 1875
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 1879
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 1880
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 1881
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 1882
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 1883
aload 21 /* da1 */
aload 8 /* a1 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 21 /* da1 */
16: .line 1884
aload 22 /* db1 */
aload 11 /* b1 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 22 /* db1 */
17: .line 1885
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 1886
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 1887
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 1886
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;Z)Ljava/math/BigInteger;
astore 15 /* v2 */
start local 15 // java.math.BigInteger v2
21: .line 1888
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 1896
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 1897
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 1898
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 1899
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 1900
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 1901
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 1902
aload 20 /* tm1 */
aload 19 /* t2 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 20 /* tm1 */
29: .line 1905
iload 5 /* k */
bipush 32
imul
istore 23 /* ss */
start local 23 // int ss
30: .line 1907
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 1909
aload 0 /* a */
getfield java.math.BigInteger.signum:I
aload 1 /* b */
getfield java.math.BigInteger.signum:I
if_icmpeq 33
32: .line 1910
aload 24 /* result */
invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
areturn
33: .line 1912
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 1934
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 8 /* len */
start local 8 // int len
1: .line 1935
iload 4 /* fullsize */
iload 8 /* len */
isub
istore 9 /* offset */
start local 9 // int offset
2: .line 1937
iload 3 /* slice */
ifne 6
3: .line 1938
iconst_0
iload 9 /* offset */
isub
istore 5 /* start */
start local 5 // int start
4: .line 1939
iload 2 /* upperSize */
iconst_1
isub
iload 9 /* offset */
isub
istore 6 /* end */
start local 6 // int end
5: .line 1940
goto 8
end local 6 // int end
end local 5 // int start
6: .line 1941
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 1942
iload 5 /* start */
iload 1 /* lowerSize */
iadd
iconst_1
isub
istore 6 /* end */
start local 6 // int end
8: .line 1945
StackMap locals: java.math.BigInteger int int int int int int top int int
StackMap stack:
iload 5 /* start */
ifge 10
9: .line 1946
iconst_0
istore 5 /* start */
10: .line 1948
StackMap locals:
StackMap stack:
iload 6 /* end */
ifge 12
11: .line 1949
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
12: .line 1952
StackMap locals:
StackMap stack:
iload 6 /* end */
iload 5 /* start */
isub
iconst_1
iadd
istore 7 /* sliceSize */
start local 7 // int sliceSize
13: .line 1954
iload 7 /* sliceSize */
ifgt 15
14: .line 1955
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
15: .line 1960
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 1961
aload 0 /* this */
invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
areturn
17: .line 1964
StackMap locals:
StackMap stack:
iload 7 /* sliceSize */
newarray 10
astore 10 /* intSlice */
start local 10 // int[] intSlice
18: .line 1965
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 1967
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 1979
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 1 /* len */
start local 1 // int len
1: .line 1980
iload 1 /* len */
newarray 10
astore 2 /* result */
start local 2 // int[] result
2: .line 1982
lconst_0
lstore 9 /* borrow */
start local 9 // long borrow
3: .line 1983
iload 1 /* len */
iconst_1
isub
istore 11 /* i */
start local 11 // int i
4: goto 18
5: .line 1984
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 1985
lload 3 /* x */
lload 9 /* borrow */
lsub
lstore 5 /* w */
start local 5 // long w
7: .line 1986
lload 9 /* borrow */
lload 3 /* x */
lcmp
ifle 10
8: .line 1987
lconst_1
lstore 9 /* borrow */
9: .line 1988
goto 11
10: .line 1989
StackMap locals: java.math.BigInteger int int[] long long top top long int
StackMap stack:
lconst_0
lstore 9 /* borrow */
11: .line 1995
StackMap locals:
StackMap stack:
lload 5 /* w */
ldc 2863311531
lmul
ldc 4294967295
land
lstore 7 /* q */
start local 7 // long q
12: .line 1996
aload 2 /* result */
iload 11 /* i */
lload 7 /* q */
l2i
iastore
13: .line 2000
lload 7 /* q */
ldc 1431655766
lcmp
iflt 17
14: .line 2001
lload 9 /* borrow */
lconst_1
ladd
lstore 9 /* borrow */
15: .line 2002
lload 7 /* q */
ldc 2863311531
lcmp
iflt 17
16: .line 2003
lload 9 /* borrow */
lconst_1
ladd
lstore 9 /* borrow */
17: .line 1983
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 2006
aload 2 /* result */
invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
astore 2 /* result */
20: .line 2007
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 2015
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 2 /* len */
start local 2 // int len
1: .line 2017
iload 2 /* len */
iload 1 /* n */
if_icmpgt 3
2: .line 2018
aload 0 /* this */
invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
areturn
3: .line 2021
StackMap locals: int
StackMap stack:
iload 1 /* n */
newarray 10
astore 3 /* lowerInts */
start local 3 // int[] lowerInts
4: .line 2022
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 2024
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 2033
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 2 /* len */
start local 2 // int len
1: .line 2035
iload 2 /* len */
iload 1 /* n */
if_icmpgt 3
2: .line 2036
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
3: .line 2039
StackMap locals: int
StackMap stack:
iload 2 /* len */
iload 1 /* n */
isub
istore 3 /* upperLen */
start local 3 // int upperLen
4: .line 2040
iload 3 /* upperLen */
newarray 10
astore 4 /* upperInts */
start local 4 // int[] upperInts
5: .line 2041
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 2043
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 2054
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 2065
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 2066
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
2: .line 2068
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 2 /* len */
start local 2 // int len
3: .line 2070
iload 2 /* len */
sipush 128
if_icmpge 6
4: .line 2071
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 2072
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 2074
StackMap locals: int
StackMap stack:
iload 2 /* len */
sipush 216
if_icmpge 8
7: .line 2075
aload 0 /* this */
invokevirtual java.math.BigInteger.squareKaratsuba:()Ljava/math/BigInteger;
areturn
8: .line 2080
StackMap locals:
StackMap stack:
iload 1 /* isRecursion */
ifne 11
9: .line 2081
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 2082
invokestatic java.math.BigInteger.reportOverflow:()V
11: .line 2086
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 2096
iload 1 /* len */
iconst_1
ishl
istore 3 /* zlen */
start local 3 // int zlen
1: .line 2097
aload 2 /* z */
ifnull 2
aload 2 /* z */
arraylength
iload 3 /* zlen */
if_icmpge 3
2: .line 2098
StackMap locals: int
StackMap stack:
iload 3 /* zlen */
newarray 10
astore 2 /* z */
3: .line 2101
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 2102
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 2109
iload 1 /* len */
iconst_1
if_icmpge 2
1: .line 2110
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 2112
StackMap locals:
StackMap stack:
iload 1 /* len */
aload 0 /* x */
arraylength
if_icmple 6
3: .line 2113
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 2114
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 2113
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
6: .line 2116
StackMap locals:
StackMap stack:
iload 1 /* len */
iconst_2
imul
aload 2 /* z */
arraylength
if_icmple 10
7: .line 2117
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 2118
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 2117
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
10: .line 2120
StackMap locals:
StackMap stack:
iload 3 /* zlen */
iconst_1
if_icmpge 12
11: .line 2121
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 2123
StackMap locals:
StackMap stack:
iload 3 /* zlen */
aload 2 /* z */
arraylength
if_icmple 16
13: .line 2124
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 2125
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 2124
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
16: .line 2127
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 2170
iconst_0
istore 4 /* lastProductLowWord */
start local 4 // int lastProductLowWord
1: .line 2171
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 2172
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 2173
lload 7 /* piece */
lload 7 /* piece */
lmul
lstore 9 /* product */
start local 9 // long product
6: .line 2174
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 2175
aload 2 /* z */
iload 6 /* i */
iinc 6 /* i */ 1
lload 9 /* product */
iconst_1
lushr
l2i
iastore
8: .line 2176
lload 9 /* product */
l2i
istore 4 /* lastProductLowWord */
end local 9 // long product
end local 7 // long piece
9: .line 2171
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 2180
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 2181
StackMap locals:
StackMap stack:
aload 0 /* x */
iload 5 /* i */
iconst_1
isub
iaload
istore 7 /* t */
start local 7 // int t
15: .line 2182
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 2183
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 2180
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 2187
aload 2 /* z */
iload 3 /* zlen */
iconst_1
invokestatic java.math.BigInteger.primitiveLeftShift:([III)V
20: .line 2188
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 2190
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
RuntimeVisibleAnnotations:
jdk.internal.HotSpotIntrinsicCandidate()
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 2201
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 2203
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 2204
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 2206
aload 3 /* xh */
invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
astore 4 /* xhs */
start local 4 // java.math.BigInteger xhs
4: .line 2207
aload 2 /* xl */
invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
astore 5 /* xls */
start local 5 // java.math.BigInteger xls
5: .line 2210
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 2221
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 1 /* len */
start local 1 // int len
1: .line 2224
iload 1 /* len */
iconst_2
iadd
iconst_3
idiv
istore 2 /* k */
start local 2 // int k
2: .line 2227
iload 1 /* len */
iconst_2
iload 2 /* k */
imul
isub
istore 3 /* r */
start local 3 // int r
3: .line 2232
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 2233
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 2234
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 2237
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 2238
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 2239
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 2240
aload 15 /* da1 */
aload 5 /* a1 */
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 15 /* da1 */
10: .line 2241
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 2242
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 2243
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 2251
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 2252
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 2253
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 2254
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 2255
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 2256
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 2257
aload 14 /* tm1 */
aload 13 /* t2 */
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 14 /* tm1 */
20: .line 2260
iload 2 /* k */
bipush 32
imul
istore 16 /* ss */
start local 16 // int ss
21: .line 2262
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 2275
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
arraylength
bipush 80
if_icmplt 2
1: .line 2276
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 2277
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* val */
invokevirtual java.math.BigInteger.divideKnuth:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
areturn
3: .line 2279
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 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 */
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 2294
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 2296
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 2297
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 2312
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
arraylength
bipush 80
if_icmplt 2
1: .line 2313
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 2314
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* val */
invokevirtual java.math.BigInteger.divideAndRemainderKnuth:(Ljava/math/BigInteger;)[Ljava/math/BigInteger;
areturn
3: .line 2316
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 2322
iconst_2
anewarray java.math.BigInteger
astore 2 /* result */
start local 2 // java.math.BigInteger[] result
1: .line 2323
new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 3 /* q */
start local 3 // java.math.MutableBigInteger q
2: .line 2324
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 2325
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 2326
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 2327
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 2328
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 2329
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 2341
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
arraylength
bipush 80
if_icmplt 2
1: .line 2342
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 2343
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* val */
invokevirtual java.math.BigInteger.remainderKnuth:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
areturn
3: .line 2345
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 2351
new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 2 /* q */
start local 2 // java.math.MutableBigInteger q
1: .line 2352
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 2353
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 2355
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 2364
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 2373
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 2383
new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 2 /* q */
start local 2 // java.math.MutableBigInteger q
1: .line 2384
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 2385
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 2386
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 2387
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 2400
iload 1 /* exponent */
ifge 2
1: .line 2401
new java.lang.ArithmeticException
dup
ldc "Negative exponent"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 2403
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 6
3: .line 2404
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 2407
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 2413
aload 2 /* partToSquare */
invokevirtual java.math.BigInteger.getLowestSetBit:()I
istore 3 /* powersOfTwo */
start local 3 // int powersOfTwo
8: .line 2414
iload 3 /* powersOfTwo */
i2l
iload 1 /* exponent */
i2l
lmul
lstore 4 /* bitsToShiftLong */
start local 4 // long bitsToShiftLong
9: .line 2415
lload 4 /* bitsToShiftLong */
ldc 2147483647
lcmp
ifle 11
10: .line 2416
invokestatic java.math.BigInteger.reportOverflow:()V
11: .line 2418
StackMap locals: java.math.BigInteger int long
StackMap stack:
lload 4 /* bitsToShiftLong */
l2i
istore 6 /* bitsToShift */
start local 6 // int bitsToShift
12: .line 2423
iload 3 /* powersOfTwo */
ifle 19
13: .line 2424
aload 2 /* partToSquare */
iload 3 /* powersOfTwo */
invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
astore 2 /* partToSquare */
14: .line 2425
aload 2 /* partToSquare */
invokevirtual java.math.BigInteger.bitLength:()I
istore 7 /* remainingBits */
start local 7 // int remainingBits
15: .line 2426
iload 7 /* remainingBits */
iconst_1
if_icmpne 24
16: .line 2427
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifge 18
iload 1 /* exponent */
iconst_1
iand
iconst_1
if_icmpne 18
17: .line 2428
getstatic java.math.BigInteger.NEGATIVE_ONE:Ljava/math/BigInteger;
iload 6 /* bitsToShift */
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
areturn
18: .line 2430
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 2434
StackMap locals:
StackMap stack:
aload 2 /* partToSquare */
invokevirtual java.math.BigInteger.bitLength:()I
istore 7 /* remainingBits */
start local 7 // int remainingBits
20: .line 2435
iload 7 /* remainingBits */
iconst_1
if_icmpne 24
21: .line 2436
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifge 23
iload 1 /* exponent */
iconst_1
iand
iconst_1
if_icmpne 23
22: .line 2437
getstatic java.math.BigInteger.NEGATIVE_ONE:Ljava/math/BigInteger;
areturn
23: .line 2439
StackMap locals: int
StackMap stack:
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
areturn
24: .line 2447
StackMap locals:
StackMap stack:
iload 7 /* remainingBits */
i2l
iload 1 /* exponent */
i2l
lmul
lstore 8 /* scaleFactor */
start local 8 // long scaleFactor
25: .line 2451
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 2453
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 2454
lconst_1
lstore 11 /* result */
start local 11 // long result
30: .line 2455
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 2457
iload 1 /* exponent */
istore 15 /* workingExponent */
start local 15 // int workingExponent
32: .line 2460
goto 37
33: .line 2461
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 2462
lload 11 /* result */
lload 13 /* baseToPow2 */
lmul
lstore 11 /* result */
35: .line 2465
StackMap locals:
StackMap stack:
iload 15 /* workingExponent */
iconst_1
iushr
dup
istore 15 /* workingExponent */
ifeq 37
36: .line 2466
lload 13 /* baseToPow2 */
lload 13 /* baseToPow2 */
lmul
lstore 13 /* baseToPow2 */
37: .line 2460
StackMap locals:
StackMap stack:
iload 15 /* workingExponent */
ifne 33
38: .line 2471
iload 3 /* powersOfTwo */
ifle 42
39: .line 2472
iload 6 /* bitsToShift */
i2l
lload 8 /* scaleFactor */
ladd
ldc 62
lcmp
ifgt 41
40: .line 2473
lload 11 /* result */
iload 6 /* bitsToShift */
lshl
iload 10 /* newSign */
i2l
lmul
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
areturn
41: .line 2475
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 2478
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 2481
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 2482
invokestatic java.math.BigInteger.reportOverflow:()V
45: .line 2488
StackMap locals:
StackMap stack:
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
astore 10 /* answer */
start local 10 // java.math.BigInteger answer
46: .line 2490
iload 1 /* exponent */
istore 11 /* workingExponent */
start local 11 // int workingExponent
47: .line 2492
goto 52
48: .line 2493
StackMap locals: java.math.BigInteger int
StackMap stack:
iload 11 /* workingExponent */
iconst_1
iand
iconst_1
if_icmpne 50
49: .line 2494
aload 10 /* answer */
aload 2 /* partToSquare */
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 10 /* answer */
50: .line 2497
StackMap locals:
StackMap stack:
iload 11 /* workingExponent */
iconst_1
iushr
dup
istore 11 /* workingExponent */
ifeq 52
51: .line 2498
aload 2 /* partToSquare */
invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
astore 2 /* partToSquare */
52: .line 2492
StackMap locals:
StackMap stack:
iload 11 /* workingExponent */
ifne 48
53: .line 2503
iload 3 /* powersOfTwo */
ifle 55
54: .line 2504
aload 10 /* answer */
iload 6 /* bitsToShift */
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
astore 10 /* answer */
55: .line 2507
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 2508
aload 10 /* answer */
invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
areturn
57: .line 2510
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 sqrt();
descriptor: ()Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 // java.math.BigInteger this
0: .line 2533
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifge 2
1: .line 2534
new java.lang.ArithmeticException
dup
ldc "Negative BigInteger"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 2537
StackMap locals:
StackMap stack:
new java.math.MutableBigInteger
dup
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
invokespecial java.math.MutableBigInteger.<init>:([I)V
invokevirtual java.math.MutableBigInteger.sqrt:()Ljava/math/MutableBigInteger;
invokevirtual java.math.MutableBigInteger.toBigInteger:()Ljava/math/BigInteger;
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[] sqrtAndRemainder();
descriptor: ()[Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=1
start local 0 // java.math.BigInteger this
0: .line 2556
aload 0 /* this */
invokevirtual java.math.BigInteger.sqrt:()Ljava/math/BigInteger;
astore 1 /* s */
start local 1 // java.math.BigInteger s
1: .line 2557
aload 0 /* this */
aload 1 /* s */
invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 2 /* r */
start local 2 // java.math.BigInteger r
2: .line 2558
getstatic java.math.BigInteger.$assertionsDisabled:Z
ifne 3
aload 2 /* r */
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
ifge 3
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
3: .line 2559
StackMap locals: java.math.BigInteger java.math.BigInteger
StackMap stack:
iconst_2
anewarray java.math.BigInteger
dup
iconst_0
aload 1 /* s */
aastore
dup
iconst_1
aload 2 /* r */
aastore
areturn
end local 2 // java.math.BigInteger r
end local 1 // java.math.BigInteger s
end local 0 // java.math.BigInteger this
LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/math/BigInteger;
1 4 1 s Ljava/math/BigInteger;
2 4 2 r Ljava/math/BigInteger;
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 2571
aload 1 /* val */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 2572
aload 0 /* this */
invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
areturn
2: .line 2573
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 4
3: .line 2574
aload 1 /* val */
invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
areturn
4: .line 2576
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 2577
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 2579
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 2581
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 2588
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 2596
iload 2 /* n */
iconst_5
iushr
istore 3 /* nInts */
start local 3 // int nInts
1: .line 2597
iload 2 /* n */
bipush 31
iand
istore 4 /* nBits */
start local 4 // int nBits
2: .line 2598
aload 0 /* a */
iconst_0
iaload
invokestatic java.math.BigInteger.bitLengthForInt:(I)I
istore 5 /* bitsInHighWord */
start local 5 // int bitsInHighWord
3: .line 2601
iload 2 /* n */
bipush 32
iload 5 /* bitsInHighWord */
isub
if_icmpgt 6
4: .line 2602
aload 0 /* a */
iload 1 /* len */
iload 4 /* nBits */
invokestatic java.math.BigInteger.primitiveLeftShift:([III)V
5: .line 2603
aload 0 /* a */
areturn
6: .line 2605
StackMap locals: int int int
StackMap stack:
iload 4 /* nBits */
bipush 32
iload 5 /* bitsInHighWord */
isub
if_icmpgt 11
7: .line 2606
iload 3 /* nInts */
iload 1 /* len */
iadd
newarray 10
astore 6 /* result */
start local 6 // int[] result
8: .line 2607
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 2608
aload 6 /* result */
aload 6 /* result */
arraylength
iload 4 /* nBits */
invokestatic java.math.BigInteger.primitiveLeftShift:([III)V
10: .line 2609
aload 6 /* result */
areturn
end local 6 // int[] result
11: .line 2611
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 2612
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 2613
aload 6 /* result */
aload 6 /* result */
arraylength
bipush 32
iload 4 /* nBits */
isub
invokestatic java.math.BigInteger.primitiveRightShift:([III)V
14: .line 2614
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 2621
bipush 32
iload 2 /* n */
isub
istore 3 /* n2 */
start local 3 // int n2
1: .line 2622
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 2623
StackMap locals: int int int
StackMap stack:
iload 5 /* c */
istore 6 /* b */
start local 6 // int b
5: .line 2624
aload 0 /* a */
iload 4 /* i */
iconst_1
isub
iaload
istore 5 /* c */
6: .line 2625
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 2622
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 2627
aload 0 /* a */
iconst_0
dup2
iaload
iload 2 /* n */
iushr
iastore
10: .line 2628
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 2632
iload 1 /* len */
ifeq 1
iload 2 /* n */
ifne 2
1: .line 2633
StackMap locals:
StackMap stack:
return
2: .line 2635
StackMap locals:
StackMap stack:
bipush 32
iload 2 /* n */
isub
istore 3 /* n2 */
start local 3 // int n2
3: .line 2636
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 2637
StackMap locals: int[] int int int int int int
StackMap stack:
iload 5 /* c */
istore 7 /* b */
start local 7 // int b
8: .line 2638
aload 0 /* a */
iload 4 /* i */
iconst_1
iadd
iaload
istore 5 /* c */
9: .line 2639
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 2636
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 2641
aload 0 /* a */
iload 1 /* len */
iconst_1
isub
dup2
iaload
iload 2 /* n */
ishl
iastore
13: .line 2642
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 2649
iload 1 /* len */
ifne 2
1: .line 2650
iconst_0
ireturn
2: .line 2651
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 2661
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 2670
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 2680
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 2696
aload 1 /* m */
getfield java.math.BigInteger.signum:I
ifgt 2
1: .line 2697
new java.lang.ArithmeticException
dup
ldc "BigInteger: modulus not positive"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 2699
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 2700
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 2717
aload 2 /* m */
getfield java.math.BigInteger.signum:I
ifgt 2
1: .line 2718
new java.lang.ArithmeticException
dup
ldc "BigInteger: modulus not positive"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 2721
StackMap locals:
StackMap stack:
aload 1 /* exponent */
getfield java.math.BigInteger.signum:I
ifne 6
3: .line 2722
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 2724
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 2725
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 2727
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 2728
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
12: .line 2730
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 2731
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 2734
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 2735
aload 1 /* exponent */
invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
astore 1 /* exponent */
21: .line 2737
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 2738
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 2737
StackMap locals:
StackMap stack: java.math.BigInteger
astore 4 /* base */
start local 4 // java.math.BigInteger base
25: .line 2740
aload 2 /* m */
iconst_0
invokevirtual java.math.BigInteger.testBit:(I)Z
ifeq 28
26: .line 2741
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 2742
goto 51
end local 5 // java.math.BigInteger result
28: .line 2750
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 2752
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 2753
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 2756
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 2757
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 2756
StackMap locals:
StackMap stack: java.math.BigInteger
astore 9 /* base2 */
start local 9 // java.math.BigInteger base2
35: .line 2760
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 2761
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 2760
StackMap locals:
StackMap stack: java.math.BigInteger
astore 10 /* a1 */
start local 10 // java.math.BigInteger a1
38: .line 2764
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 2767
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 2768
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 2770
aload 2 /* m */
getfield java.math.BigInteger.mag:[I
arraylength
ldc 33554432
if_icmpge 44
42: .line 2771
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 2772
goto 51
end local 5 // java.math.BigInteger result
44: .line 2773
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 2774
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 2775
new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 15 /* t2 */
start local 15 // java.math.MutableBigInteger t2
47: .line 2776
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 2777
aload 14 /* t1 */
aload 15 /* t2 */
invokevirtual java.math.MutableBigInteger.add:(Ljava/math/MutableBigInteger;)V
49: .line 2778
new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 16 /* q */
start local 16 // java.math.MutableBigInteger q
50: .line 2779
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 2783
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 2793
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 2794
iload 3 /* len */
sipush 512
if_icmple 4
2: .line 2796
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 2797
aload 6 /* product */
aload 2 /* n */
iload 3 /* len */
lload 4 /* inv */
l2i
invokestatic java.math.BigInteger.montReduce:([I[III)[I
areturn
4: .line 2799
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 2804
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 2805
iload 2 /* len */
sipush 512
if_icmple 4
2: .line 2807
aload 0 /* a */
iload 2 /* len */
aload 5 /* product */
invokestatic java.math.BigInteger.squareToLen:([II[I)[I
astore 5 /* product */
3: .line 2808
aload 5 /* product */
aload 1 /* n */
iload 2 /* len */
lload 3 /* inv */
l2i
invokestatic java.math.BigInteger.montReduce:([I[III)[I
areturn
4: .line 2810
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 2817
iload 3 /* len */
iconst_2
irem
ifeq 2
1: .line 2818
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 2821
StackMap locals:
StackMap stack:
iload 3 /* len */
iconst_1
if_icmpge 4
3: .line 2822
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 2825
StackMap locals:
StackMap stack:
iload 3 /* len */
aload 0 /* a */
arraylength
if_icmpgt 8
5: .line 2826
iload 3 /* len */
aload 1 /* b */
arraylength
if_icmpgt 8
6: .line 2827
iload 3 /* len */
aload 2 /* n */
arraylength
if_icmpgt 8
7: .line 2828
aload 4 /* product */
ifnull 9
iload 3 /* len */
aload 4 /* product */
arraylength
if_icmple 9
8: .line 2829
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 2831
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 2837
aload 0 /* z */
ifnull 1
aload 0 /* z */
arraylength
iload 1 /* len */
if_icmpge 2
1: .line 2838
StackMap locals:
StackMap stack:
iload 1 /* len */
newarray 10
astore 0 /* z */
2: .line 2839
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 2847
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 2848
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
RuntimeVisibleAnnotations:
jdk.internal.HotSpotIntrinsicCandidate()
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 2853
aload 0 /* a */
iload 2 /* len */
aload 5 /* product */
invokestatic java.math.BigInteger.squareToLen:([II[I)[I
astore 5 /* product */
1: .line 2854
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
RuntimeVisibleAnnotations:
jdk.internal.HotSpotIntrinsicCandidate()
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 2923
aload 1 /* y */
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ifeq 2
1: .line 2924
aload 0 /* this */
areturn
2: .line 2927
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 4
3: .line 2928
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
4: .line 2930
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 2931
aload 1 /* y */
getfield java.math.BigInteger.mag:[I
astore 4 /* exp */
start local 4 // int[] exp
6: .line 2932
aload 2 /* z */
getfield java.math.BigInteger.mag:[I
astore 5 /* mod */
start local 5 // int[] mod
7: .line 2933
aload 5 /* mod */
arraylength
istore 6 /* modLen */
start local 6 // int modLen
8: .line 2939
iload 6 /* modLen */
iconst_1
iand
ifeq 13
9: .line 2940
iload 6 /* modLen */
iconst_1
iadd
newarray 10
astore 7 /* x */
start local 7 // int[] x
10: .line 2941
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 2942
aload 7 /* x */
astore 5 /* mod */
12: .line 2943
iinc 6 /* modLen */ 1
end local 7 // int[] x
13: .line 2947
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 2948
aload 4 /* exp */
aload 4 /* exp */
arraylength
invokestatic java.math.BigInteger.bitLength:([II)I
istore 8 /* ebits */
start local 8 // int ebits
15: .line 2950
iload 8 /* ebits */
bipush 17
if_icmpne 18
aload 4 /* exp */
iconst_0
iaload
ldc 65537
if_icmpeq 19
16: .line 2951
goto 18
17: .line 2952
StackMap locals: int int
StackMap stack:
iinc 7 /* wbits */ 1
18: .line 2951
StackMap locals:
StackMap stack:
iload 8 /* ebits */
getstatic java.math.BigInteger.bnExpModThreshTable:[I
iload 7 /* wbits */
iaload
if_icmpgt 17
19: .line 2957
StackMap locals:
StackMap stack:
iconst_1
iload 7 /* wbits */
ishl
istore 9 /* tblmask */
start local 9 // int tblmask
20: .line 2960
iload 9 /* tblmask */
anewarray int[]
astore 10 /* table */
start local 10 // int[][] table
21: .line 2961
iconst_0
istore 11 /* i */
start local 11 // int i
22: goto 25
23: .line 2962
StackMap locals: int int[][] int
StackMap stack:
aload 10 /* table */
iload 11 /* i */
iload 6 /* modLen */
newarray 10
aastore
24: .line 2961
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 2966
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 2967
lload 11 /* n0 */
invokestatic java.math.MutableBigInteger.inverseMod64:(J)J
lneg
lstore 13 /* inv */
start local 13 // long inv
28: .line 2970
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 2972
new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 16 /* q */
start local 16 // java.math.MutableBigInteger q
30: .line 2973
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 2974
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 2975
aload 18 /* b2 */
invokevirtual java.math.MutableBigInteger.normalize:()V
33: .line 2978
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 2979
aload 10 /* table */
iconst_0
aload 19 /* r */
invokevirtual java.math.MutableBigInteger.toIntArray:()[I
aastore
35: .line 2982
aload 10 /* table */
iconst_0
aaload
arraylength
iload 6 /* modLen */
if_icmpge 40
36: .line 2983
iload 6 /* modLen */
aload 10 /* table */
iconst_0
aaload
arraylength
isub
istore 20 /* offset */
start local 20 // int offset
37: .line 2984
iload 6 /* modLen */
newarray 10
astore 21 /* t2 */
start local 21 // int[] t2
38: .line 2985
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 2986
aload 10 /* table */
iconst_0
aload 21 /* t2 */
aastore
end local 21 // int[] t2
end local 20 // int offset
40: .line 2990
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 2993
aload 20 /* b */
iload 6 /* modLen */
invokestatic java.util.Arrays.copyOf:([II)[I
astore 21 /* t */
start local 21 // int[] t
42: .line 2996
iconst_1
istore 22 /* i */
start local 22 // int i
43: goto 46
44: .line 2997
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 2996
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 3001
iconst_1
iload 8 /* ebits */
iconst_1
isub
bipush 31
iand
ishl
istore 22 /* bitpos */
start local 22 // int bitpos
48: .line 3003
iconst_0
istore 23 /* buf */
start local 23 // int buf
49: .line 3004
aload 4 /* exp */
arraylength
istore 24 /* elen */
start local 24 // int elen
50: .line 3005
iconst_0
istore 25 /* eIndex */
start local 25 // int eIndex
51: .line 3006
iconst_0
istore 26 /* i */
start local 26 // int i
52: goto 62
53: .line 3007
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 3008
iload 22 /* bitpos */
iconst_1
iushr
istore 22 /* bitpos */
57: .line 3009
iload 22 /* bitpos */
ifne 61
58: .line 3010
iinc 25 /* eIndex */ 1
59: .line 3011
ldc -2147483648
istore 22 /* bitpos */
60: .line 3012
iinc 24 /* elen */ -1
61: .line 3006
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 3016
iload 8 /* ebits */
istore 26 /* multpos */
start local 26 // int multpos
64: .line 3019
iinc 8 /* ebits */ -1
65: .line 3020
iconst_1
istore 27 /* isone */
start local 27 // boolean isone
66: .line 3022
iload 8 /* ebits */
iload 7 /* wbits */
isub
istore 26 /* multpos */
67: .line 3023
goto 70
68: .line 3024
StackMap locals: int
StackMap stack:
iload 23 /* buf */
iconst_1
iushr
istore 23 /* buf */
69: .line 3025
iinc 26 /* multpos */ 1
70: .line 3023
StackMap locals:
StackMap stack:
iload 23 /* buf */
iconst_1
iand
ifeq 68
71: .line 3028
aload 10 /* table */
iload 23 /* buf */
iconst_1
iushr
aaload
astore 28 /* mult */
start local 28 // int[] mult
72: .line 3030
iconst_0
istore 23 /* buf */
73: .line 3031
iload 26 /* multpos */
iload 8 /* ebits */
if_icmpne 75
74: .line 3032
iconst_0
istore 27 /* isone */
75: .line 3036
StackMap locals: int[]
StackMap stack:
iinc 8 /* ebits */ -1
76: .line 3038
iload 23 /* buf */
iconst_1
ishl
istore 23 /* buf */
77: .line 3040
iload 24 /* elen */
ifeq 86
78: .line 3041
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 3042
iload 22 /* bitpos */
iconst_1
iushr
istore 22 /* bitpos */
82: .line 3043
iload 22 /* bitpos */
ifne 86
83: .line 3044
iinc 25 /* eIndex */ 1
84: .line 3045
ldc -2147483648
istore 22 /* bitpos */
85: .line 3046
iinc 24 /* elen */ -1
86: .line 3051
StackMap locals:
StackMap stack:
iload 23 /* buf */
iload 9 /* tblmask */
iand
ifeq 94
87: .line 3052
iload 8 /* ebits */
iload 7 /* wbits */
isub
istore 26 /* multpos */
88: .line 3053
goto 91
89: .line 3054
StackMap locals:
StackMap stack:
iload 23 /* buf */
iconst_1
iushr
istore 23 /* buf */
90: .line 3055
iinc 26 /* multpos */ 1
91: .line 3053
StackMap locals:
StackMap stack:
iload 23 /* buf */
iconst_1
iand
ifeq 89
92: .line 3057
aload 10 /* table */
iload 23 /* buf */
iconst_1
iushr
aaload
astore 28 /* mult */
93: .line 3058
iconst_0
istore 23 /* buf */
94: .line 3062
StackMap locals:
StackMap stack:
iload 8 /* ebits */
iload 26 /* multpos */
if_icmpne 102
95: .line 3063
iload 27 /* isone */
ifeq 99
96: .line 3064
aload 28 /* mult */
invokevirtual int[].clone:()Ljava/lang/Object;
checkcast int[]
astore 20 /* b */
97: .line 3065
iconst_0
istore 27 /* isone */
98: .line 3066
goto 102
99: .line 3067
StackMap locals:
StackMap stack:
aload 20 /* b */
astore 21 /* t */
100: .line 3068
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 3069
aload 15 /* a */
astore 21 /* t */
aload 20 /* b */
astore 15 /* a */
aload 21 /* t */
astore 20 /* b */
102: .line 3074
StackMap locals:
StackMap stack:
iload 8 /* ebits */
ifne 104
103: .line 3075
goto 109
104: .line 3078
StackMap locals:
StackMap stack:
iload 27 /* isone */
ifne 75
105: .line 3079
aload 20 /* b */
astore 21 /* t */
106: .line 3080
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 3081
aload 15 /* a */
astore 21 /* t */
aload 20 /* b */
astore 15 /* a */
aload 21 /* t */
astore 20 /* b */
108: .line 3035
goto 75
109: .line 3086
StackMap locals:
StackMap stack:
iconst_2
iload 6 /* modLen */
imul
newarray 10
astore 29 /* t2 */
start local 29 // int[] t2
110: .line 3087
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 3089
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 3091
aload 20 /* b */
iload 6 /* modLen */
invokestatic java.util.Arrays.copyOf:([II)[I
astore 29 /* t2 */
113: .line 3093
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 3101
iconst_0
istore 4 /* c */
start local 4 // int c
1: .line 3102
iload 2 /* mlen */
istore 5 /* len */
start local 5 // int len
2: .line 3103
iconst_0
istore 6 /* offset */
start local 6 // int offset
3: .line 3106
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 3107
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 3108
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 3109
iinc 6 /* offset */ 1
end local 8 // int carry
end local 7 // int nEnd
7: .line 3110
iinc 5 /* len */ -1
iload 5 /* len */
8: .line 3105
ifgt 3
9: .line 3112
goto 11
10: .line 3113
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 3112
StackMap locals:
StackMap stack:
iload 4 /* c */
ifgt 10
12: .line 3115
goto 14
13: .line 3116
StackMap locals:
StackMap stack:
aload 0 /* n */
aload 1 /* mod */
iload 2 /* mlen */
invokestatic java.math.BigInteger.subN:([I[II)I
pop
14: .line 3115
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 3118
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 3127
iconst_0
istore 3 /* i */
start local 3 // int i
1: goto 9
2: .line 3128
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 3129
aload 1 /* arg2 */
iload 3 /* i */
iaload
i2l
ldc 4294967295
land
lstore 6 /* b2 */
start local 6 // long b2
4: .line 3130
lload 4 /* b1 */
lload 6 /* b2 */
lcmp
ifge 6
5: .line 3131
iconst_m1
ireturn
6: .line 3132
StackMap locals: long long
StackMap stack:
lload 4 /* b1 */
lload 6 /* b2 */
lcmp
ifle 8
7: .line 3133
iconst_1
ireturn
end local 6 // long b2
end local 4 // long b1
8: .line 3127
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 3135
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 3142
lconst_0
lstore 3 /* sum */
start local 3 // long sum
1: .line 3144
goto 8
2: .line 3145
StackMap locals: long
StackMap stack:
aload 0 /* a */
iload 2 /* len */
iaload
i2l
ldc 4294967295
land
3: .line 3146
aload 1 /* b */
iload 2 /* len */
iaload
i2l
ldc 4294967295
land
4: .line 3145
lsub
5: .line 3146
lload 3 /* sum */
bipush 32
lshr
6: .line 3145
ladd
lstore 3 /* sum */
7: .line 3147
aload 0 /* a */
iload 2 /* len */
lload 3 /* sum */
l2i
iastore
8: .line 3144
StackMap locals:
StackMap stack:
iinc 2 /* len */ -1
iload 2 /* len */
ifge 2
9: .line 3150
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 3157
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 3158
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 3165
iload 3 /* len */
aload 1 /* in */
arraylength
if_icmple 2
1: .line 3166
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 3168
StackMap locals:
StackMap stack:
iload 2 /* offset */
ifge 4
3: .line 3169
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 3171
StackMap locals:
StackMap stack:
iload 2 /* offset */
aload 0 /* out */
arraylength
iconst_1
isub
if_icmple 6
5: .line 3172
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 3174
StackMap locals:
StackMap stack:
iload 3 /* len */
aload 0 /* out */
arraylength
iload 2 /* offset */
isub
if_icmple 8
7: .line 3175
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 3177
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 3184
iload 4 /* k */
i2l
ldc 4294967295
land
lstore 5 /* kLong */
start local 5 // long kLong
1: .line 3185
lconst_0
lstore 7 /* carry */
start local 7 // long carry
2: .line 3187
aload 0 /* out */
arraylength
iload 2 /* offset */
isub
iconst_1
isub
istore 2 /* offset */
3: .line 3188
iload 3 /* len */
iconst_1
isub
istore 9 /* j */
start local 9 // int j
4: goto 13
5: .line 3189
StackMap locals: long long int
StackMap stack:
aload 1 /* in */
iload 9 /* j */
iaload
i2l
ldc 4294967295
land
lload 5 /* kLong */
lmul
6: .line 3190
aload 0 /* out */
iload 2 /* offset */
iaload
i2l
ldc 4294967295
land
7: .line 3189
ladd
8: .line 3190
lload 7 /* carry */
9: .line 3189
ladd
lstore 10 /* product */
start local 10 // long product
10: .line 3191
aload 0 /* out */
iload 2 /* offset */
iinc 2 /* offset */ -1
lload 10 /* product */
l2i
iastore
11: .line 3192
lload 10 /* product */
bipush 32
lushr
lstore 7 /* carry */
end local 10 // long product
12: .line 3188
iinc 9 /* j */ -1
StackMap locals:
StackMap stack:
13: iload 9 /* j */
ifge 5
end local 9 // int j
14: .line 3194
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
RuntimeVisibleAnnotations:
jdk.internal.HotSpotIntrinsicCandidate()
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 3202
aload 0 /* a */
arraylength
iconst_1
isub
iload 2 /* mlen */
isub
iload 1 /* offset */
isub
istore 1 /* offset */
1: .line 3203
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 3205
aload 0 /* a */
iload 1 /* offset */
lload 4 /* t */
l2i
iastore
3: .line 3206
lload 4 /* t */
bipush 32
lushr
lconst_0
lcmp
ifne 10
4: .line 3207
iconst_0
ireturn
5: .line 3209
StackMap locals: long
StackMap stack:
iinc 1 /* offset */ -1
iload 1 /* offset */
ifge 7
6: .line 3210
iconst_1
ireturn
7: .line 3212
StackMap locals:
StackMap stack:
aload 0 /* a */
iload 1 /* offset */
dup2
iaload
iconst_1
iadd
iastore
8: .line 3213
aload 0 /* a */
iload 1 /* offset */
iaload
ifeq 10
9: .line 3214
iconst_0
ireturn
10: .line 3208
StackMap locals:
StackMap stack:
iinc 2 /* mlen */ -1
iload 2 /* mlen */
ifge 5
11: .line 3217
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 3228
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
astore 3 /* result */
start local 3 // java.math.BigInteger result
1: .line 3229
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 3230
iconst_0
istore 5 /* expOffset */
start local 5 // int expOffset
3: .line 3232
aload 1 /* exponent */
invokevirtual java.math.BigInteger.bitLength:()I
istore 6 /* limit */
start local 6 // int limit
4: .line 3234
aload 0 /* this */
iconst_0
invokevirtual java.math.BigInteger.testBit:(I)Z
ifeq 14
5: .line 3235
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 3237
goto 14
9: .line 3238
StackMap locals:
StackMap stack:
aload 1 /* exponent */
iload 5 /* expOffset */
invokevirtual java.math.BigInteger.testBit:(I)Z
ifeq 11
10: .line 3239
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 3240
StackMap locals:
StackMap stack:
iinc 5 /* expOffset */ 1
12: .line 3241
iload 5 /* expOffset */
iload 6 /* limit */
if_icmpge 14
13: .line 3242
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 3237
StackMap locals:
StackMap stack:
iload 5 /* expOffset */
iload 6 /* limit */
if_icmplt 9
15: .line 3245
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 3253
aload 0 /* this */
invokevirtual java.math.BigInteger.bitLength:()I
iload 1 /* p */
if_icmpgt 2
1: .line 3254
aload 0 /* this */
areturn
2: .line 3257
StackMap locals:
StackMap stack:
iload 1 /* p */
bipush 31
iadd
iconst_5
iushr
istore 2 /* numInts */
start local 2 // int numInts
3: .line 3258
iload 2 /* numInts */
newarray 10
astore 3 /* mag */
start local 3 // int[] mag
4: .line 3259
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 3262
iload 2 /* numInts */
iconst_5
ishl
iload 1 /* p */
isub
istore 4 /* excessBits */
start local 4 // int excessBits
6: .line 3263
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 3265
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 3278
aload 1 /* m */
getfield java.math.BigInteger.signum:I
iconst_1
if_icmpeq 2
1: .line 3279
new java.lang.ArithmeticException
dup
ldc "BigInteger: modulus not positive"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 3281
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 3282
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
4: .line 3285
StackMap locals:
StackMap stack:
aload 0 /* this */
astore 2 /* modVal */
start local 2 // java.math.BigInteger modVal
5: .line 3286
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 3287
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 3289
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 3290
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
areturn
9: .line 3292
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 3293
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 3295
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 3296
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 3312
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 3313
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
2: .line 3314
StackMap locals:
StackMap stack:
iload 1 /* n */
ifle 4
3: .line 3315
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 3316
StackMap locals:
StackMap stack:
iload 1 /* n */
ifne 6
5: .line 3317
aload 0 /* this */
areturn
6: .line 3321
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 3335
iload 1 /* n */
iconst_5
iushr
istore 2 /* nInts */
start local 2 // int nInts
1: .line 3336
iload 1 /* n */
bipush 31
iand
istore 3 /* nBits */
start local 3 // int nBits
2: .line 3337
aload 0 /* mag */
arraylength
istore 4 /* magLen */
start local 4 // int magLen
3: .line 3338
aconst_null
astore 5 /* newMag */
start local 5 // int[] newMag
4: .line 3340
iload 3 /* nBits */
ifne 8
5: .line 3341
iload 4 /* magLen */
iload 2 /* nInts */
iadd
newarray 10
astore 5 /* newMag */
6: .line 3342
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 3343
goto 21
8: .line 3344
StackMap locals: int[] int int int int int[]
StackMap stack:
iconst_0
istore 6 /* i */
start local 6 // int i
9: .line 3345
bipush 32
iload 3 /* nBits */
isub
istore 7 /* nBits2 */
start local 7 // int nBits2
10: .line 3346
aload 0 /* mag */
iconst_0
iaload
iload 7 /* nBits2 */
iushr
istore 8 /* highBits */
start local 8 // int highBits
11: .line 3347
iload 8 /* highBits */
ifeq 15
12: .line 3348
iload 4 /* magLen */
iload 2 /* nInts */
iadd
iconst_1
iadd
newarray 10
astore 5 /* newMag */
13: .line 3349
aload 5 /* newMag */
iload 6 /* i */
iinc 6 /* i */ 1
iload 8 /* highBits */
iastore
14: .line 3350
goto 16
15: .line 3351
StackMap locals: int int int
StackMap stack:
iload 4 /* magLen */
iload 2 /* nInts */
iadd
newarray 10
astore 5 /* newMag */
16: .line 3353
StackMap locals:
StackMap stack:
iconst_0
istore 9 /* j */
start local 9 // int j
17: .line 3354
goto 19
18: .line 3355
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 3354
StackMap locals:
StackMap stack:
iload 9 /* j */
iload 4 /* magLen */
iconst_1
isub
if_icmplt 18
20: .line 3356
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 3358
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 3372
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 3373
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
2: .line 3374
StackMap locals:
StackMap stack:
iload 1 /* n */
ifle 4
3: .line 3375
aload 0 /* this */
iload 1 /* n */
invokevirtual java.math.BigInteger.shiftRightImpl:(I)Ljava/math/BigInteger;
areturn
4: .line 3376
StackMap locals:
StackMap stack:
iload 1 /* n */
ifne 6
5: .line 3377
aload 0 /* this */
areturn
6: .line 3381
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 3394
iload 1 /* n */
iconst_5
iushr
istore 2 /* nInts */
start local 2 // int nInts
1: .line 3395
iload 1 /* n */
bipush 31
iand
istore 3 /* nBits */
start local 3 // int nBits
2: .line 3396
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 4 /* magLen */
start local 4 // int magLen
3: .line 3397
aconst_null
astore 5 /* newMag */
start local 5 // int[] newMag
4: .line 3400
iload 2 /* nInts */
iload 4 /* magLen */
if_icmplt 8
5: .line 3401
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 3403
StackMap locals:
StackMap stack:
iload 3 /* nBits */
ifne 12
9: .line 3404
iload 4 /* magLen */
iload 2 /* nInts */
isub
istore 6 /* newMagLen */
start local 6 // int newMagLen
10: .line 3405
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 3406
goto 24
12: .line 3407
StackMap locals:
StackMap stack:
iconst_0
istore 6 /* i */
start local 6 // int i
13: .line 3408
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 3409
iload 7 /* highBits */
ifeq 18
15: .line 3410
iload 4 /* magLen */
iload 2 /* nInts */
isub
newarray 10
astore 5 /* newMag */
16: .line 3411
aload 5 /* newMag */
iload 6 /* i */
iinc 6 /* i */ 1
iload 7 /* highBits */
iastore
17: .line 3412
goto 19
18: .line 3413
StackMap locals: int int
StackMap stack:
iload 4 /* magLen */
iload 2 /* nInts */
isub
iconst_1
isub
newarray 10
astore 5 /* newMag */
19: .line 3416
StackMap locals:
StackMap stack:
bipush 32
iload 3 /* nBits */
isub
istore 8 /* nBits2 */
start local 8 // int nBits2
20: .line 3417
iconst_0
istore 9 /* j */
start local 9 // int j
21: .line 3418
goto 23
22: .line 3419
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 3418
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 3422
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 3424
iconst_0
istore 6 /* onesLost */
start local 6 // boolean onesLost
26: .line 3425
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 3426
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 3425
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 3427
StackMap locals:
StackMap stack:
iload 6 /* onesLost */
ifne 38
iload 3 /* nBits */
ifeq 38
35: .line 3428
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 3430
StackMap locals:
StackMap stack:
iload 6 /* onesLost */
ifeq 40
39: .line 3431
aload 0 /* this */
aload 5 /* newMag */
invokevirtual java.math.BigInteger.javaIncrement:([I)[I
astore 5 /* newMag */
end local 6 // boolean onesLost
40: .line 3434
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 3438
iconst_0
istore 2 /* lastSum */
start local 2 // int lastSum
1: .line 3439
aload 1 /* val */
arraylength
iconst_1
isub
istore 3 /* i */
start local 3 // int i
2: goto 5
3: .line 3440
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 3439
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 3441
StackMap locals:
StackMap stack:
iload 2 /* lastSum */
ifne 9
7: .line 3442
aload 1 /* val */
arraylength
iconst_1
iadd
newarray 10
astore 1 /* val */
8: .line 3443
aload 1 /* val */
iconst_0
iconst_1
iastore
9: .line 3445
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 3459
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 3460
iconst_0
istore 3 /* i */
start local 3 // int i
2: goto 7
3: .line 3461
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 3462
aload 1 /* val */
aload 2 /* result */
arraylength
iload 3 /* i */
isub
iconst_1
isub
invokevirtual java.math.BigInteger.getInt:(I)I
iand
5: .line 3461
iastore
6: .line 3460
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 3464
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 3476
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 3477
iconst_0
istore 3 /* i */
start local 3 // int i
2: goto 7
3: .line 3478
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 3479
aload 1 /* val */
aload 2 /* result */
arraylength
iload 3 /* i */
isub
iconst_1
isub
invokevirtual java.math.BigInteger.getInt:(I)I
ior
5: .line 3478
iastore
6: .line 3477
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 3481
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 3493
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 3494
iconst_0
istore 3 /* i */
start local 3 // int i
2: goto 7
3: .line 3495
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 3496
aload 1 /* val */
aload 2 /* result */
arraylength
iload 3 /* i */
isub
iconst_1
isub
invokevirtual java.math.BigInteger.getInt:(I)I
ixor
5: .line 3495
iastore
6: .line 3494
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 3498
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 3509
aload 0 /* this */
invokevirtual java.math.BigInteger.intLength:()I
newarray 10
astore 1 /* result */
start local 1 // int[] result
1: .line 3510
iconst_0
istore 2 /* i */
start local 2 // int i
2: goto 5
3: .line 3511
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 3510
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 3513
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 3527
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 3528
iconst_0
istore 3 /* i */
start local 3 // int i
2: goto 7
3: .line 3529
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 3530
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 3529
iastore
6: .line 3528
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 3532
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 3547
iload 1 /* n */
ifge 2
1: .line 3548
new java.lang.ArithmeticException
dup
ldc "Negative bit address"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 3550
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 3562
iload 1 /* n */
ifge 2
1: .line 3563
new java.lang.ArithmeticException
dup
ldc "Negative bit address"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 3565
StackMap locals:
StackMap stack:
iload 1 /* n */
iconst_5
iushr
istore 2 /* intNum */
start local 2 // int intNum
3: .line 3566
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 3568
iconst_0
istore 4 /* i */
start local 4 // int i
5: goto 8
6: .line 3569
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 3568
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 3571
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 3573
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 3586
iload 1 /* n */
ifge 2
1: .line 3587
new java.lang.ArithmeticException
dup
ldc "Negative bit address"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 3589
StackMap locals:
StackMap stack:
iload 1 /* n */
iconst_5
iushr
istore 2 /* intNum */
start local 2 // int intNum
3: .line 3590
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 3592
iconst_0
istore 4 /* i */
start local 4 // int i
5: goto 8
6: .line 3593
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 3592
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 3595
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 3597
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 3610
iload 1 /* n */
ifge 2
1: .line 3611
new java.lang.ArithmeticException
dup
ldc "Negative bit address"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: .line 3613
StackMap locals:
StackMap stack:
iload 1 /* n */
iconst_5
iushr
istore 2 /* intNum */
start local 2 // int intNum
3: .line 3614
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 3616
iconst_0
istore 4 /* i */
start local 4 // int i
5: goto 8
6: .line 3617
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 3616
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 3619
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 3621
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 3633
aload 0 /* this */
getfield java.math.BigInteger.lowestSetBitPlusTwo:I
iconst_2
isub
istore 1 /* lsb */
start local 1 // int lsb
1: .line 3634
iload 1 /* lsb */
bipush -2
if_icmpne 13
2: .line 3635
iconst_0
istore 1 /* lsb */
3: .line 3636
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 6
4: .line 3637
iinc 1 /* lsb */ -1
5: .line 3638
goto 12
6: .line 3641
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 3643
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 3645
StackMap locals:
StackMap stack:
aload 0 /* this */
iload 1 /* lsb */
iconst_2
iadd
putfield java.math.BigInteger.lowestSetBitPlusTwo:I
13: .line 3647
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 3664
aload 0 /* this */
getfield java.math.BigInteger.bitLengthPlusOne:I
iconst_1
isub
istore 1 /* n */
start local 1 // int n
1: .line 3665
iload 1 /* n */
iconst_m1
if_icmpne 25
2: .line 3666
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
astore 2 /* m */
start local 2 // int[] m
3: .line 3667
aload 2 /* m */
arraylength
istore 3 /* len */
start local 3 // int len
4: .line 3668
iload 3 /* len */
ifne 7
5: .line 3669
iconst_0
istore 1 /* n */
6: .line 3670
goto 24
7: .line 3672
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 3673
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifge 23
9: .line 3675
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 3676
iconst_1
istore 6 /* i */
start local 6 // int i
13: goto 18
14: .line 3677
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 3676
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 3679
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 3680
goto 24
23: .line 3681
StackMap locals:
StackMap stack:
iload 4 /* magBitLength */
istore 1 /* n */
end local 4 // int magBitLength
24: .line 3684
StackMap locals:
StackMap stack:
aload 0 /* this */
iload 1 /* n */
iconst_1
iadd
putfield java.math.BigInteger.bitLengthPlusOne:I
end local 3 // int len
end local 2 // int[] m
25: .line 3686
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 3698
aload 0 /* this */
getfield java.math.BigInteger.bitCountPlusOne:I
iconst_1
isub
istore 1 /* bc */
start local 1 // int bc
1: .line 3699
iload 1 /* bc */
iconst_m1
if_icmpne 18
2: .line 3700
iconst_0
istore 1 /* bc */
3: .line 3702
iconst_0
istore 2 /* i */
start local 2 // int i
4: goto 7
5: .line 3703
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 3702
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 3704
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifge 17
9: .line 3706
iconst_0
istore 2 /* magTrailingZeroCount */
start local 2 // int magTrailingZeroCount
10: .line 3707
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 3708
StackMap locals: int
StackMap stack:
iinc 2 /* magTrailingZeroCount */ 32
13: .line 3707
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 3709
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 3710
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 3712
StackMap locals:
StackMap stack:
aload 0 /* this */
iload 1 /* bc */
iconst_1
iadd
putfield java.math.BigInteger.bitCountPlusOne:I
18: .line 3714
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 3734
iload 1 /* certainty */
ifgt 2
1: .line 3735
iconst_1
ireturn
2: .line 3736
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 3737
aload 2 /* w */
getstatic java.math.BigInteger.TWO:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ifeq 5
4: .line 3738
iconst_1
ireturn
5: .line 3739
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 3740
StackMap locals:
StackMap stack:
iconst_0
ireturn
7: .line 3742
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 3761
aload 0 /* this */
getfield java.math.BigInteger.signum:I
aload 1 /* val */
getfield java.math.BigInteger.signum:I
if_icmpne 5
1: .line 3762
aload 0 /* this */
getfield java.math.BigInteger.signum:I
tableswitch { // -1 - 1
-1: 3
0: 4
1: 2
default: 4
}
2: .line 3764
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* val */
invokevirtual java.math.BigInteger.compareMagnitude:(Ljava/math/BigInteger;)I
ireturn
3: .line 3766
StackMap locals:
StackMap stack:
aload 1 /* val */
aload 0 /* this */
invokevirtual java.math.BigInteger.compareMagnitude:(Ljava/math/BigInteger;)I
ireturn
4: .line 3768
StackMap locals:
StackMap stack:
iconst_0
ireturn
5: .line 3771
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 3783
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
astore 2 /* m1 */
start local 2 // int[] m1
1: .line 3784
aload 2 /* m1 */
arraylength
istore 3 /* len1 */
start local 3 // int len1
2: .line 3785
aload 1 /* val */
getfield java.math.BigInteger.mag:[I
astore 4 /* m2 */
start local 4 // int[] m2
3: .line 3786
aload 4 /* m2 */
arraylength
istore 5 /* len2 */
start local 5 // int len2
4: .line 3787
iload 3 /* len1 */
iload 5 /* len2 */
if_icmpge 6
5: .line 3788
iconst_m1
ireturn
6: .line 3789
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 3790
iconst_1
ireturn
8: .line 3791
StackMap locals:
StackMap stack:
iconst_0
istore 6 /* i */
start local 6 // int i
9: goto 17
10: .line 3792
StackMap locals: int
StackMap stack:
aload 2 /* m1 */
iload 6 /* i */
iaload
istore 7 /* a */
start local 7 // int a
11: .line 3793
aload 4 /* m2 */
iload 6 /* i */
iaload
istore 8 /* b */
start local 8 // int b
12: .line 3794
iload 7 /* a */
iload 8 /* b */
if_icmpeq 16
13: .line 3795
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 3791
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 3797
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 3805
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 3806
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
astore 3 /* m1 */
start local 3 // int[] m1
2: .line 3807
aload 3 /* m1 */
arraylength
istore 4 /* len */
start local 4 // int len
3: .line 3808
iload 4 /* len */
iconst_2
if_icmple 5
4: .line 3809
iconst_1
ireturn
5: .line 3811
StackMap locals: int[] int
StackMap stack:
lload 1 /* val */
lconst_0
lcmp
ifge 7
6: .line 3812
lload 1 /* val */
lneg
lstore 1 /* val */
7: .line 3814
StackMap locals:
StackMap stack:
lload 1 /* val */
bipush 32
lushr
l2i
istore 5 /* highWord */
start local 5 // int highWord
8: .line 3815
iload 5 /* highWord */
ifne 20
9: .line 3816
iload 4 /* len */
iconst_1
if_icmpge 11
10: .line 3817
iconst_m1
ireturn
11: .line 3818
StackMap locals: int
StackMap stack:
iload 4 /* len */
iconst_1
if_icmple 13
12: .line 3819
iconst_1
ireturn
13: .line 3820
StackMap locals:
StackMap stack:
aload 3 /* m1 */
iconst_0
iaload
istore 6 /* a */
start local 6 // int a
14: .line 3821
lload 1 /* val */
l2i
istore 7 /* b */
start local 7 // int b
15: .line 3822
iload 6 /* a */
iload 7 /* b */
if_icmpeq 19
16: .line 3823
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 3825
StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 7 // int b
end local 6 // int a
20: .line 3827
StackMap locals:
StackMap stack:
iload 4 /* len */
iconst_2
if_icmpge 22
21: .line 3828
iconst_m1
ireturn
22: .line 3829
StackMap locals:
StackMap stack:
aload 3 /* m1 */
iconst_0
iaload
istore 6 /* a */
start local 6 // int a
23: .line 3830
iload 5 /* highWord */
istore 7 /* b */
start local 7 // int b
24: .line 3831
iload 6 /* a */
iload 7 /* b */
if_icmpeq 28
25: .line 3832
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 3834
StackMap locals:
StackMap stack:
aload 3 /* m1 */
iconst_1
iaload
istore 6 /* a */
29: .line 3835
lload 1 /* val */
l2i
istore 7 /* b */
30: .line 3836
iload 6 /* a */
iload 7 /* b */
if_icmpeq 34
31: .line 3837
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 3839
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 3852
aload 1 /* x */
aload 0 /* this */
if_acmpne 2
1: .line 3853
iconst_1
ireturn
2: .line 3855
StackMap locals:
StackMap stack:
aload 1 /* x */
instanceof java.math.BigInteger
ifne 4
3: .line 3856
iconst_0
ireturn
4: .line 3858
StackMap locals:
StackMap stack:
aload 1 /* x */
checkcast java.math.BigInteger
astore 2 /* xInt */
start local 2 // java.math.BigInteger xInt
5: .line 3859
aload 2 /* xInt */
getfield java.math.BigInteger.signum:I
aload 0 /* this */
getfield java.math.BigInteger.signum:I
if_icmpeq 7
6: .line 3860
iconst_0
ireturn
7: .line 3862
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 3863
aload 3 /* m */
arraylength
istore 4 /* len */
start local 4 // int len
9: .line 3864
aload 2 /* xInt */
getfield java.math.BigInteger.mag:[I
astore 5 /* xm */
start local 5 // int[] xm
10: .line 3865
iload 4 /* len */
aload 5 /* xm */
arraylength
if_icmpeq 12
11: .line 3866
iconst_0
ireturn
12: .line 3868
StackMap locals: int[] int int[]
StackMap stack:
iconst_0
istore 6 /* i */
start local 6 // int i
13: goto 17
14: .line 3869
StackMap locals: int
StackMap stack:
aload 5 /* xm */
iload 6 /* i */
iaload
aload 3 /* m */
iload 6 /* i */
iaload
if_icmpeq 16
15: .line 3870
iconst_0
ireturn
16: .line 3868
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 3872
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 3883
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 3894
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 3906
iconst_0
istore 1 /* hashCode */
start local 1 // int hashCode
1: .line 3908
iconst_0
istore 2 /* i */
start local 2 // int i
2: goto 5
3: .line 3909
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 3908
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 3911
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 3932
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 3933
ldc "0"
areturn
2: .line 3934
StackMap locals:
StackMap stack:
iload 1 /* radix */
iconst_2
if_icmplt 3
iload 1 /* radix */
bipush 36
if_icmple 4
3: .line 3935
StackMap locals:
StackMap stack:
bipush 10
istore 1 /* radix */
4: .line 3938
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
bipush 20
if_icmpgt 6
5: .line 3939
aload 0 /* this */
iload 1 /* radix */
invokevirtual java.math.BigInteger.smallToString:(I)Ljava/lang/String;
areturn
6: .line 3943
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 3944
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifge 11
8: .line 3945
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 3946
aload 2 /* sb */
iconst_0
bipush 45
invokevirtual java.lang.StringBuilder.insert:(IC)Ljava/lang/StringBuilder;
pop
10: .line 3947
goto 12
11: .line 3949
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 3951
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 3956
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 3957
ldc "0"
areturn
2: .line 3961
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 3962
iload 2 /* maxNumDigitGroups */
anewarray java.lang.String
astore 3 /* digitGroup */
start local 3 // java.lang.String[] digitGroup
4: .line 3965
aload 0 /* this */
invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
astore 4 /* tmp */
start local 4 // java.math.BigInteger tmp
5: .line 3966
iconst_0
istore 5 /* numGroups */
start local 5 // int numGroups
6: .line 3967
goto 16
7: .line 3968
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 3970
new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 7 /* q */
start local 7 // java.math.MutableBigInteger q
9: .line 3971
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 3972
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 3973
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 3974
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 3975
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 3977
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 3978
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 3967
StackMap locals:
StackMap stack:
aload 4 /* tmp */
getfield java.math.BigInteger.signum:I
ifne 7
17: .line 3982
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 3983
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifge 20
19: .line 3984
aload 6 /* buf */
bipush 45
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
20: .line 3986
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 3989
iload 5 /* numGroups */
iconst_2
isub
istore 7 /* i */
start local 7 // int i
22: goto 28
23: .line 3991
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 3992
iload 8 /* numLeadingZeros */
ifeq 26
25: .line 3993
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 3995
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 3989
iinc 7 /* i */ -1
StackMap locals:
StackMap stack:
28: iload 7 /* i */
ifge 23
end local 7 // int i
29: .line 3997
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 4017
aload 0 /* u */
getfield java.math.BigInteger.mag:[I
arraylength
bipush 20
if_icmpgt 10
1: .line 4018
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 4022
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 4023
aload 4 /* s */
invokevirtual java.lang.String.length:()I
istore 5 /* i */
start local 5 // int i
4: goto 7
5: .line 4024
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 4023
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 4028
StackMap locals:
StackMap stack:
aload 1 /* sb */
aload 4 /* s */
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
9: .line 4029
return
end local 4 // java.lang.String s
10: .line 4033
StackMap locals:
StackMap stack:
aload 0 /* u */
invokevirtual java.math.BigInteger.bitLength:()I
istore 4 /* b */
start local 4 // int b
11: .line 4038
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 4039
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 4041
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 4043
iconst_1
iload 5 /* n */
ishl
istore 8 /* expectedDigits */
start local 8 // int expectedDigits
15: .line 4046
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 4047
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 4048
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 4058
getstatic java.math.BigInteger.powerCache:[[Ljava/math/BigInteger;
iload 0 /* radix */
aaload
astore 2 /* cacheLine */
start local 2 // java.math.BigInteger[] cacheLine
1: .line 4059
iload 1 /* exponent */
aload 2 /* cacheLine */
arraylength
if_icmpge 3
2: .line 4060
aload 2 /* cacheLine */
iload 1 /* exponent */
aaload
areturn
3: .line 4063
StackMap locals: java.math.BigInteger[]
StackMap stack:
aload 2 /* cacheLine */
arraylength
istore 3 /* oldLength */
start local 3 // int oldLength
4: .line 4064
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 4065
iload 3 /* oldLength */
istore 4 /* i */
start local 4 // int i
6: goto 9
7: .line 4066
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 4065
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 4069
getstatic java.math.BigInteger.powerCache:[[Ljava/math/BigInteger;
astore 4 /* pc */
start local 4 // java.math.BigInteger[][] pc
11: .line 4070
iload 1 /* exponent */
aload 4 /* pc */
iload 0 /* radix */
aaload
arraylength
if_icmplt 15
12: .line 4071
aload 4 /* pc */
invokevirtual java.math.BigInteger[][].clone:()Ljava/lang/Object;
checkcast java.math.BigInteger[][]
astore 4 /* pc */
13: .line 4072
aload 4 /* pc */
iload 0 /* radix */
aload 2 /* cacheLine */
aastore
14: .line 4073
aload 4 /* pc */
putstatic java.math.BigInteger.powerCache:[[Ljava/math/BigInteger;
15: .line 4075
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 4100
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 4118
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 4119
iload 1 /* byteLen */
newarray 8
astore 2 /* byteArray */
start local 2 // byte[] byteArray
2: .line 4121
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 4122
StackMap locals: java.math.BigInteger int byte[] int int int int
StackMap stack:
iload 4 /* bytesCopied */
iconst_4
if_icmpne 11
8: .line 4123
aload 0 /* this */
iload 6 /* intIndex */
iinc 6 /* intIndex */ 1
invokevirtual java.math.BigInteger.getInt:(I)I
istore 5 /* nextInt */
9: .line 4124
iconst_1
istore 4 /* bytesCopied */
10: .line 4125
goto 13
11: .line 4126
StackMap locals:
StackMap stack:
iload 5 /* nextInt */
bipush 8
iushr
istore 5 /* nextInt */
12: .line 4127
iinc 4 /* bytesCopied */ 1
13: .line 4129
StackMap locals:
StackMap stack:
aload 2 /* byteArray */
iload 3 /* i */
iload 5 /* nextInt */
i2b
bastore
14: .line 4121
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 4131
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 4151
iconst_0
istore 1 /* result */
start local 1 // int result
1: .line 4152
aload 0 /* this */
iconst_0
invokevirtual java.math.BigInteger.getInt:(I)I
istore 1 /* result */
2: .line 4153
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 4173
lconst_0
lstore 1 /* result */
start local 1 // long result
1: .line 4175
iconst_1
istore 3 /* i */
start local 3 // int i
2: goto 5
3: .line 4176
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 4175
iinc 3 /* i */ -1
StackMap locals:
StackMap stack:
5: iload 3 /* i */
ifge 3
end local 3 // int i
6: .line 4177
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 4197
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 4198
fconst_0
freturn
2: .line 4201
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 4204
iload 1 /* exponent */
bipush 63
if_icmpge 5
4: .line 4205
aload 0 /* this */
invokevirtual java.math.BigInteger.longValue:()J
l2f
freturn
5: .line 4206
StackMap locals: int
StackMap stack:
iload 1 /* exponent */
bipush 127
if_icmple 9
6: .line 4207
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 4220
StackMap locals:
StackMap stack:
iload 1 /* exponent */
bipush 24
isub
istore 2 /* shift */
start local 2 // int shift
10: .line 4226
iload 2 /* shift */
bipush 31
iand
istore 4 /* nBits */
start local 4 // int nBits
11: .line 4227
bipush 32
iload 4 /* nBits */
isub
istore 5 /* nBits2 */
start local 5 // int nBits2
12: .line 4229
iload 4 /* nBits */
ifne 15
13: .line 4230
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
iaload
istore 3 /* twiceSignifFloor */
start local 3 // int twiceSignifFloor
14: .line 4231
goto 18
end local 3 // int twiceSignifFloor
15: .line 4232
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 4233
iload 3 /* twiceSignifFloor */
ifne 18
17: .line 4234
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 4238
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 4239
iload 6 /* signifFloor */
ldc 8388607
iand
istore 6 /* signifFloor */
20: .line 4248
iload 3 /* twiceSignifFloor */
iconst_1
iand
ifeq 24
21: .line 4249
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 4248
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 4250
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 4251
iload 1 /* exponent */
bipush 127
iadd
30: .line 4252
bipush 23
31: .line 4251
ishl
istore 9 /* bits */
start local 9 // int bits
32: .line 4253
iload 9 /* bits */
iload 8 /* signifRounded */
iadd
istore 9 /* bits */
33: .line 4261
iload 9 /* bits */
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ldc -2147483648
iand
ior
istore 9 /* bits */
34: .line 4262
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 4282
aload 0 /* this */
getfield java.math.BigInteger.signum:I
ifne 2
1: .line 4283
dconst_0
dreturn
2: .line 4286
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 4289
iload 1 /* exponent */
bipush 63
if_icmpge 5
4: .line 4290
aload 0 /* this */
invokevirtual java.math.BigInteger.longValue:()J
l2d
dreturn
5: .line 4291
StackMap locals: int
StackMap stack:
iload 1 /* exponent */
sipush 1023
if_icmple 9
6: .line 4292
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 4305
StackMap locals:
StackMap stack:
iload 1 /* exponent */
bipush 53
isub
istore 2 /* shift */
start local 2 // int shift
10: .line 4311
iload 2 /* shift */
bipush 31
iand
istore 5 /* nBits */
start local 5 // int nBits
11: .line 4312
bipush 32
iload 5 /* nBits */
isub
istore 6 /* nBits2 */
start local 6 // int nBits2
12: .line 4316
iload 5 /* nBits */
ifne 16
13: .line 4317
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_0
iaload
istore 7 /* highBits */
start local 7 // int highBits
14: .line 4318
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iconst_1
iaload
istore 8 /* lowBits */
start local 8 // int lowBits
15: .line 4319
goto 21
end local 8 // int lowBits
end local 7 // int highBits
16: .line 4320
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 4321
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 4322
iload 7 /* highBits */
ifne 21
19: .line 4323
iload 8 /* lowBits */
istore 7 /* highBits */
20: .line 4324
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 4328
StackMap locals: int int
StackMap stack:
iload 7 /* highBits */
i2l
ldc 4294967295
land
bipush 32
lshl
22: .line 4329
iload 8 /* lowBits */
i2l
ldc 4294967295
land
23: .line 4328
lor
lstore 3 /* twiceSignifFloor */
start local 3 // long twiceSignifFloor
24: .line 4331
lload 3 /* twiceSignifFloor */
iconst_1
lshr
lstore 9 /* signifFloor */
start local 9 // long signifFloor
25: .line 4332
lload 9 /* signifFloor */
ldc 4503599627370495
land
lstore 9 /* signifFloor */
26: .line 4341
lload 3 /* twiceSignifFloor */
lconst_1
land
lconst_0
lcmp
ifeq 30
27: .line 4342
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 4341
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 4343
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 4344
iload 1 /* exponent */
sipush 1023
iadd
i2l
36: .line 4345
bipush 52
37: .line 4344
lshl
lstore 14 /* bits */
start local 14 // long bits
38: .line 4346
lload 14 /* bits */
lload 12 /* signifRounded */
ladd
lstore 14 /* bits */
39: .line 4354
lload 14 /* bits */
aload 0 /* this */
getfield java.math.BigInteger.signum:I
i2l
ldc -9223372036854775808
land
lor
lstore 14 /* bits */
40: .line 4355
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 4362
aload 0 /* val */
arraylength
istore 1 /* vlen */
start local 1 // int vlen
1: .line 4366
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 4368
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 4376
aload 0 /* val */
arraylength
istore 1 /* vlen */
start local 1 // int vlen
1: .line 4380
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 4382
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[], int, int);
descriptor: ([BII)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=12, args_size=3
start local 0 // byte[] a
start local 1 // int off
start local 2 // int len
0: .line 4389
iload 1 /* off */
iload 2 /* len */
iadd
istore 3 /* indexBound */
start local 3 // int indexBound
1: .line 4393
iload 1 /* off */
istore 4 /* keep */
start local 4 // int keep
2: goto 4
StackMap locals: int int
StackMap stack:
3: iinc 4 /* keep */ 1
StackMap locals:
StackMap stack:
4: iload 4 /* keep */
iload 3 /* indexBound */
if_icmpge 5
aload 0 /* a */
iload 4 /* keep */
baload
ifeq 3
5: .line 4397
StackMap locals:
StackMap stack:
iload 3 /* indexBound */
iload 4 /* keep */
isub
iconst_3
iadd
iconst_2
iushr
istore 5 /* intLength */
start local 5 // int intLength
6: .line 4398
iload 5 /* intLength */
newarray 10
astore 6 /* result */
start local 6 // int[] result
7: .line 4399
iload 3 /* indexBound */
iconst_1
isub
istore 7 /* b */
start local 7 // int b
8: .line 4400
iload 5 /* intLength */
iconst_1
isub
istore 8 /* i */
start local 8 // int i
9: goto 19
10: .line 4401
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
11: .line 4402
iload 7 /* b */
iload 4 /* keep */
isub
iconst_1
iadd
istore 9 /* bytesRemaining */
start local 9 // int bytesRemaining
12: .line 4403
iconst_3
iload 9 /* bytesRemaining */
invokestatic java.lang.Math.min:(II)I
istore 10 /* bytesToTransfer */
start local 10 // int bytesToTransfer
13: .line 4404
bipush 8
istore 11 /* j */
start local 11 // int j
14: goto 17
15: .line 4405
StackMap locals: int int 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 11 /* j */
ishl
ior
iastore
16: .line 4404
iinc 11 /* j */ 8
StackMap locals:
StackMap stack:
17: iload 11 /* j */
iload 10 /* bytesToTransfer */
iconst_3
ishl
if_icmple 15
end local 11 // int j
end local 10 // int bytesToTransfer
end local 9 // int bytesRemaining
18: .line 4400
iinc 8 /* i */ -1
StackMap locals:
StackMap stack:
19: iload 8 /* i */
ifge 10
end local 8 // int i
20: .line 4407
aload 6 /* result */
areturn
end local 7 // int b
end local 6 // int[] result
end local 5 // int intLength
end local 4 // int keep
end local 3 // int indexBound
end local 2 // int len
end local 1 // int off
end local 0 // byte[] a
LocalVariableTable:
Start End Slot Name Signature
0 21 0 a [B
0 21 1 off I
0 21 2 len I
1 21 3 indexBound I
2 21 4 keep I
6 21 5 intLength I
7 21 6 result [I
8 21 7 b I
9 20 8 i I
12 18 9 bytesRemaining I
13 18 10 bytesToTransfer I
14 18 11 j I
MethodParameters:
Name Flags
a
off
len
private static int[] makePositive(byte[], int, int);
descriptor: ([BII)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=13, args_size=3
start local 0 // byte[] a
start local 1 // int off
start local 2 // int len
0: .line 4416
iload 1 /* off */
iload 2 /* len */
iadd
istore 5 /* indexBound */
start local 5 // int indexBound
1: .line 4419
iload 1 /* off */
istore 3 /* keep */
start local 3 // int keep
2: goto 4
StackMap locals: byte[] int int int top int
StackMap stack:
3: iinc 3 /* keep */ 1
StackMap locals:
StackMap stack:
4: iload 3 /* keep */
iload 5 /* indexBound */
if_icmpge 5
aload 0 /* a */
iload 3 /* keep */
baload
iconst_m1
if_icmpeq 3
5: .line 4425
StackMap locals:
StackMap stack:
iload 3 /* keep */
istore 4 /* k */
start local 4 // int k
6: goto 8
StackMap locals: byte[] int int int int int
StackMap stack:
7: iinc 4 /* k */ 1
StackMap locals:
StackMap stack:
8: iload 4 /* k */
iload 5 /* indexBound */
if_icmpge 9
aload 0 /* a */
iload 4 /* k */
baload
ifeq 7
9: .line 4428
StackMap locals:
StackMap stack:
iload 4 /* k */
iload 5 /* indexBound */
if_icmpne 10
iconst_1
goto 11
StackMap locals:
StackMap stack:
10: iconst_0
StackMap locals:
StackMap stack: int
11: istore 6 /* extraByte */
start local 6 // int extraByte
12: .line 4429
iload 5 /* indexBound */
iload 3 /* keep */
isub
iload 6 /* extraByte */
iadd
iconst_3
iadd
iconst_2
iushr
istore 7 /* intLength */
start local 7 // int intLength
13: .line 4430
iload 7 /* intLength */
newarray 10
astore 8 /* result */
start local 8 // int[] result
14: .line 4434
iload 5 /* indexBound */
iconst_1
isub
istore 9 /* b */
start local 9 // int b
15: .line 4435
iload 7 /* intLength */
iconst_1
isub
istore 10 /* i */
start local 10 // int i
16: goto 29
17: .line 4436
StackMap locals: byte[] int int int int int int int int[] int int
StackMap stack:
aload 8 /* result */
iload 10 /* i */
aload 0 /* a */
iload 9 /* b */
iinc 9 /* b */ -1
baload
sipush 255
iand
iastore
18: .line 4437
iconst_3
iload 9 /* b */
iload 3 /* keep */
isub
iconst_1
iadd
invokestatic java.lang.Math.min:(II)I
istore 11 /* numBytesToTransfer */
start local 11 // int numBytesToTransfer
19: .line 4438
iload 11 /* numBytesToTransfer */
ifge 21
20: .line 4439
iconst_0
istore 11 /* numBytesToTransfer */
21: .line 4440
StackMap locals: int
StackMap stack:
bipush 8
istore 12 /* j */
start local 12 // int j
22: goto 25
23: .line 4441
StackMap locals: int
StackMap stack:
aload 8 /* result */
iload 10 /* i */
dup2
iaload
aload 0 /* a */
iload 9 /* b */
iinc 9 /* b */ -1
baload
sipush 255
iand
iload 12 /* j */
ishl
ior
iastore
24: .line 4440
iinc 12 /* j */ 8
StackMap locals:
StackMap stack:
25: iload 12 /* j */
bipush 8
iload 11 /* numBytesToTransfer */
imul
if_icmple 23
end local 12 // int j
26: .line 4444
iconst_m1
bipush 8
iconst_3
iload 11 /* numBytesToTransfer */
isub
imul
iushr
istore 12 /* mask */
start local 12 // int mask
27: .line 4445
aload 8 /* result */
iload 10 /* i */
aload 8 /* result */
iload 10 /* i */
iaload
iconst_m1
ixor
iload 12 /* mask */
iand
iastore
end local 12 // int mask
end local 11 // int numBytesToTransfer
28: .line 4435
iinc 10 /* i */ -1
StackMap locals:
StackMap stack:
29: iload 10 /* i */
ifge 17
end local 10 // int i
30: .line 4449
aload 8 /* result */
arraylength
iconst_1
isub
istore 10 /* i */
start local 10 // int i
31: goto 36
32: .line 4450
StackMap locals:
StackMap stack:
aload 8 /* result */
iload 10 /* i */
aload 8 /* result */
iload 10 /* i */
iaload
i2l
ldc 4294967295
land
lconst_1
ladd
l2i
iastore
33: .line 4451
aload 8 /* result */
iload 10 /* i */
iaload
ifeq 35
34: .line 4452
goto 37
35: .line 4449
StackMap locals:
StackMap stack:
iinc 10 /* i */ -1
StackMap locals:
StackMap stack:
36: iload 10 /* i */
ifge 32
end local 10 // int i
37: .line 4455
StackMap locals:
StackMap stack:
aload 8 /* result */
areturn
end local 9 // int b
end local 8 // int[] result
end local 7 // int intLength
end local 6 // int extraByte
end local 5 // int indexBound
end local 4 // int k
end local 3 // int keep
end local 2 // int len
end local 1 // int off
end local 0 // byte[] a
LocalVariableTable:
Start End Slot Name Signature
0 38 0 a [B
0 38 1 off I
0 38 2 len I
2 38 3 keep I
6 38 4 k I
1 38 5 indexBound I
12 38 6 extraByte I
13 38 7 intLength I
14 38 8 result [I
15 38 9 b I
16 30 10 i I
19 28 11 numBytesToTransfer I
22 26 12 j I
27 28 12 mask I
31 37 10 i I
MethodParameters:
Name Flags
a
off
len
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 4466
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 4471
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 4473
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 4474
aload 0 /* a */
arraylength
iload 1 /* keep */
isub
iload 3 /* extraInt */
iadd
newarray 10
astore 4 /* result */
start local 4 // int[] result
12: .line 4478
iload 1 /* keep */
istore 5 /* i */
start local 5 // int i
13: goto 16
14: .line 4479
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 4478
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 4482
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 4485
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 4550
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 4555
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 4560
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 4570
iload 1 /* n */
ifge 2
1: .line 4571
iconst_0
ireturn
2: .line 4572
StackMap locals:
StackMap stack:
iload 1 /* n */
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
if_icmplt 4
3: .line 4573
aload 0 /* this */
invokevirtual java.math.BigInteger.signInt:()I
ireturn
4: .line 4575
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 4577
aload 0 /* this */
getfield java.math.BigInteger.signum:I
iflt 6
iload 2 /* magInt */
goto 8
6: .line 4578
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 4577
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 4590
aload 0 /* this */
getfield java.math.BigInteger.firstNonzeroIntNumPlusTwo:I
iconst_2
isub
istore 1 /* fn */
start local 1 // int fn
1: .line 4591
iload 1 /* fn */
bipush -2
if_icmpne 9
2: .line 4594
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 3 /* mlen */
start local 3 // int mlen
3: .line 4595
iload 3 /* mlen */
iconst_1
isub
istore 2 /* i */
start local 2 // int i
4: goto 6
StackMap locals: int int int
StackMap stack:
5: iinc 2 /* i */ -1
StackMap locals:
StackMap stack:
6: iload 2 /* i */
iflt 7
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 2 /* i */
iaload
ifeq 5
7: .line 4597
StackMap locals:
StackMap stack:
iload 3 /* mlen */
iload 2 /* i */
isub
iconst_1
isub
istore 1 /* fn */
8: .line 4598
aload 0 /* this */
iload 1 /* fn */
iconst_2
iadd
putfield java.math.BigInteger.firstNonzeroIntNumPlusTwo:I
end local 3 // int mlen
end local 2 // int i
9: .line 4600
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 10 0 this Ljava/math/BigInteger;
1 10 1 fn I
4 9 2 i I
3 9 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 4646
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 4649
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 4650
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 4653
iload 3 /* sign */
iconst_m1
if_icmplt 4
iload 3 /* sign */
iconst_1
if_icmple 8
4: .line 4654
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 4655
aload 2 /* fields */
ldc "signum"
invokevirtual java.io.ObjectInputStream$GetField.defaulted:(Ljava/lang/String;)Z
ifeq 7
6: .line 4656
ldc "BigInteger: Signum not present in stream"
astore 5 /* message */
7: .line 4657
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 4659
StackMap locals:
StackMap stack:
aload 4 /* magnitude */
iconst_0
aload 4 /* magnitude */
arraylength
invokestatic java.math.BigInteger.stripLeadingZeroBytes:([BII)[I
astore 5 /* mag */
start local 5 // int[] mag
9: .line 4660
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 4661
ldc "BigInteger: signum-magnitude mismatch"
astore 6 /* message */
start local 6 // java.lang.String message
15: .line 4662
aload 2 /* fields */
ldc "magnitude"
invokevirtual java.io.ObjectInputStream$GetField.defaulted:(Ljava/lang/String;)Z
ifeq 17
16: .line 4663
ldc "BigInteger: Magnitude not present in stream"
astore 6 /* message */
17: .line 4664
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 4668
StackMap locals:
StackMap stack:
aload 0 /* this */
iload 3 /* sign */
invokestatic java.math.BigInteger$UnsafeHolder.putSign:(Ljava/math/BigInteger;I)V
19: .line 4671
aload 0 /* this */
aload 5 /* mag */
invokestatic java.math.BigInteger$UnsafeHolder.putMag:(Ljava/math/BigInteger;[I)V
20: .line 4672
aload 5 /* mag */
arraylength
ldc 67108864
if_icmplt 25
21: .line 4674
aload 0 /* this */
invokevirtual java.math.BigInteger.checkRange:()V
22: .line 4675
goto 25
StackMap locals:
StackMap stack: java.lang.ArithmeticException
23: pop
24: .line 4676
new java.io.StreamCorruptedException
dup
ldc "BigInteger: Out of the supported range"
invokespecial java.io.StreamCorruptedException.<init>:(Ljava/lang/String;)V
athrow
25: .line 4679
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 4711
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 4712
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 4713
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 4716
aload 2 /* fields */
ldc "bitCount"
iconst_m1
invokevirtual java.io.ObjectOutputStream$PutField.put:(Ljava/lang/String;I)V
4: .line 4717
aload 2 /* fields */
ldc "bitLength"
iconst_m1
invokevirtual java.io.ObjectOutputStream$PutField.put:(Ljava/lang/String;I)V
5: .line 4718
aload 2 /* fields */
ldc "lowestSetBit"
bipush -2
invokevirtual java.io.ObjectOutputStream$PutField.put:(Ljava/lang/String;I)V
6: .line 4719
aload 2 /* fields */
ldc "firstNonzeroByteNum"
bipush -2
invokevirtual java.io.ObjectOutputStream$PutField.put:(Ljava/lang/String;I)V
7: .line 4722
aload 1 /* s */
invokevirtual java.io.ObjectOutputStream.writeFields:()V
8: .line 4723
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 4729
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
arraylength
istore 1 /* len */
start local 1 // int len
1: .line 4731
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 4732
iload 2 /* bitLen */
bipush 7
iadd
iconst_3
iushr
istore 3 /* byteLen */
start local 3 // int byteLen
5: .line 4733
iload 3 /* byteLen */
newarray 8
astore 4 /* result */
start local 4 // byte[] result
6: .line 4735
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 4736
goto 19
11: .line 4737
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 4738
aload 0 /* this */
getfield java.math.BigInteger.mag:[I
iload 7 /* intIndex */
iinc 7 /* intIndex */ -1
iaload
istore 8 /* nextInt */
13: .line 4739
iconst_1
istore 6 /* bytesCopied */
14: .line 4740
goto 17
15: .line 4741
StackMap locals:
StackMap stack:
iload 8 /* nextInt */
bipush 8
iushr
istore 8 /* nextInt */
16: .line 4742
iinc 6 /* bytesCopied */ 1
17: .line 4744
StackMap locals:
StackMap stack:
aload 4 /* result */
iload 5 /* i */
iload 8 /* nextInt */
i2b
bastore
18: .line 4736
iinc 5 /* i */ -1
StackMap locals:
StackMap stack:
19: iload 5 /* i */
20: .line 4735
ifge 11
end local 8 // int nextInt
end local 7 // int intIndex
end local 6 // int bytesCopied
end local 5 // int i
21: .line 4746
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 4762
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 4763
aload 0 /* this */
invokevirtual java.math.BigInteger.longValue:()J
lreturn
2: .line 4765
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 4781
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 4782
aload 0 /* this */
invokevirtual java.math.BigInteger.intValue:()I
ireturn
2: .line 4784
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 4800
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 4801
aload 0 /* this */
invokevirtual java.math.BigInteger.intValue:()I
istore 1 /* value */
start local 1 // int value
2: .line 4802
iload 1 /* value */
sipush -32768
if_icmplt 4
iload 1 /* value */
sipush 32767
if_icmpgt 4
3: .line 4803
aload 0 /* this */
invokevirtual java.math.BigInteger.shortValue:()S
ireturn
end local 1 // int value
4: .line 4805
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 4821
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 4822
aload 0 /* this */
invokevirtual java.math.BigInteger.intValue:()I
istore 1 /* value */
start local 1 // int value
2: .line 4823
iload 1 /* value */
bipush -128
if_icmplt 4
iload 1 /* value */
bipush 127
if_icmpgt 4
3: .line 4824
aload 0 /* this */
invokevirtual java.math.BigInteger.byteValue:()B
ireturn
end local 1 // int value
4: .line 4826
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