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