public class java.math.BigInteger extends java.lang.Number implements java.lang.Comparable<java.math.BigInteger>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: java.math.BigInteger
  super_class: java.lang.Number
{
  final int signum;
    descriptor: I
    flags: (0x0010) ACC_FINAL

  final int[] mag;
    descriptor: [I
    flags: (0x0010) ACC_FINAL

  private int bitCount;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  private int bitLength;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  private int lowestSetBit;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  private int firstNonzeroIntNum;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  static final long LONG_MASK;
    descriptor: J
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 4294967295

  private static final int MAX_MAG_LENGTH;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 67108864

  private static final int PRIME_SEARCH_BIT_LENGTH_LIMIT;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 500000000

  private static final int KARATSUBA_THRESHOLD;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 80

  private static final int TOOM_COOK_THRESHOLD;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 240

  private static final int KARATSUBA_SQUARE_THRESHOLD;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 128

  private static final int TOOM_COOK_SQUARE_THRESHOLD;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 216

  static final int BURNIKEL_ZIEGLER_THRESHOLD;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 80

  static final int BURNIKEL_ZIEGLER_OFFSET;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 40

  private static final int SCHOENHAGE_BASE_CONVERSION_THRESHOLD;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 20

  private static final int MULTIPLY_SQUARE_THRESHOLD;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 20

  private static final int MONTGOMERY_INTRINSIC_THRESHOLD;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 512

  private static long[] bitsPerDigit;
    descriptor: [J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static final int SMALL_PRIME_THRESHOLD;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 95

  private static final int DEFAULT_PRIME_CERTAINTY;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 100

  private static final java.math.BigInteger SMALL_PRIME_PRODUCT;
    descriptor: Ljava/math/BigInteger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final int MAX_CONSTANT;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 16

  private static java.math.BigInteger[] posConst;
    descriptor: [Ljava/math/BigInteger;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static java.math.BigInteger[] negConst;
    descriptor: [Ljava/math/BigInteger;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static volatile java.math.BigInteger[][] powerCache;
    descriptor: [[Ljava/math/BigInteger;
    flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE

  private static final double[] logCache;
    descriptor: [D
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final double LOG_TWO;
    descriptor: D
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  public static final java.math.BigInteger ZERO;
    descriptor: Ljava/math/BigInteger;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final java.math.BigInteger ONE;
    descriptor: Ljava/math/BigInteger;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private static final java.math.BigInteger TWO;
    descriptor: Ljava/math/BigInteger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.math.BigInteger NEGATIVE_ONE;
    descriptor: Ljava/math/BigInteger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  public static final java.math.BigInteger TEN;
    descriptor: Ljava/math/BigInteger;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  static int[] bnExpModThreshTable;
    descriptor: [I
    flags: (0x0008) ACC_STATIC

  private static java.lang.String[] zeros;
    descriptor: [Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static int[] digitsPerLong;
    descriptor: [I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static java.math.BigInteger[] longRadix;
    descriptor: [Ljava/math/BigInteger;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static int[] digitsPerInt;
    descriptor: [I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static int[] intRadix;
    descriptor: [I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static final long serialVersionUID;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -8287574255936472291

  private static final java.io.ObjectStreamField[] serialPersistentFields;
    descriptor: [Ljava/io/ObjectStreamField;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=7, locals=2, args_size=0
         0: .line 123
            ldc Ljava/math/BigInteger;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic java.math.BigInteger.$assertionsDisabled:Z
         3: .line 560
            bipush 37
            newarray 11
            dup
            iconst_2
         4: .line 561
            ldc 1024
            lastore
            dup
            iconst_3
            ldc 1624
            lastore
            dup
            iconst_4
            ldc 2048
            lastore
            dup
            iconst_5
            ldc 2378
            lastore
            dup
            bipush 6
            ldc 2648
            lastore
            dup
            bipush 7
            ldc 2875
            lastore
            dup
            bipush 8
            ldc 3072
            lastore
            dup
            bipush 9
            ldc 3247
            lastore
            dup
            bipush 10
            ldc 3402
            lastore
            dup
            bipush 11
            ldc 3543
            lastore
            dup
            bipush 12
            ldc 3672
            lastore
            dup
            bipush 13
         5: .line 562
            ldc 3790
            lastore
            dup
            bipush 14
            ldc 3899
            lastore
            dup
            bipush 15
            ldc 4001
            lastore
            dup
            bipush 16
            ldc 4096
            lastore
            dup
            bipush 17
            ldc 4186
            lastore
            dup
            bipush 18
            ldc 4271
            lastore
            dup
            bipush 19
            ldc 4350
            lastore
            dup
            bipush 20
            ldc 4426
            lastore
            dup
            bipush 21
            ldc 4498
            lastore
            dup
            bipush 22
            ldc 4567
            lastore
            dup
            bipush 23
            ldc 4633
            lastore
            dup
            bipush 24
         6: .line 563
            ldc 4696
            lastore
            dup
            bipush 25
            ldc 4756
            lastore
            dup
            bipush 26
            ldc 4814
            lastore
            dup
            bipush 27
            ldc 4870
            lastore
            dup
            bipush 28
            ldc 4923
            lastore
            dup
            bipush 29
            ldc 4975
            lastore
            dup
            bipush 30
            ldc 5025
            lastore
            dup
            bipush 31
            ldc 5074
            lastore
            dup
            bipush 32
            ldc 5120
            lastore
            dup
            bipush 33
            ldc 5166
            lastore
            dup
            bipush 34
            ldc 5210
            lastore
            dup
            bipush 35
         7: .line 564
            ldc 5253
            lastore
            dup
            bipush 36
            ldc 5295
            lastore
         8: .line 560
            putstatic java.math.BigInteger.bitsPerDigit:[J
         9: .line 745
            ldc 152125131763605
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
        10: .line 744
            putstatic java.math.BigInteger.SMALL_PRIME_PRODUCT:Ljava/math/BigInteger;
        11: .line 1147
            bipush 17
            anewarray java.math.BigInteger
            putstatic java.math.BigInteger.posConst:[Ljava/math/BigInteger;
        12: .line 1148
            bipush 17
            anewarray java.math.BigInteger
            putstatic java.math.BigInteger.negConst:[Ljava/math/BigInteger;
        13: .line 1161
            ldc 2.0
            invokestatic java.lang.Math.log:(D)D
            putstatic java.math.BigInteger.LOG_TWO:D
        14: .line 1172
            iconst_1
            istore 0 /* i */
        start local 0 // int i
        15: goto 21
        16: .line 1173
      StackMap locals: int
      StackMap stack:
            iconst_1
            newarray 10
            astore 1 /* magnitude */
        start local 1 // int[] magnitude
        17: .line 1174
            aload 1 /* magnitude */
            iconst_0
            iload 0 /* i */
            iastore
        18: .line 1175
            getstatic java.math.BigInteger.posConst:[Ljava/math/BigInteger;
            iload 0 /* i */
            new java.math.BigInteger
            dup
            aload 1 /* magnitude */
            iconst_1
            invokespecial java.math.BigInteger.<init>:([II)V
            aastore
        19: .line 1176
            getstatic java.math.BigInteger.negConst:[Ljava/math/BigInteger;
            iload 0 /* i */
            new java.math.BigInteger
            dup
            aload 1 /* magnitude */
            iconst_m1
            invokespecial java.math.BigInteger.<init>:([II)V
            aastore
        end local 1 // int[] magnitude
        20: .line 1172
            iinc 0 /* i */ 1
      StackMap locals:
      StackMap stack:
        21: iload 0 /* i */
            bipush 16
            if_icmple 16
        end local 0 // int i
        22: .line 1184
            bipush 37
            anewarray java.math.BigInteger[]
            putstatic java.math.BigInteger.powerCache:[[Ljava/math/BigInteger;
        23: .line 1185
            bipush 37
            newarray 7
            putstatic java.math.BigInteger.logCache:[D
        24: .line 1187
            iconst_2
            istore 0 /* i */
        start local 0 // int i
        25: goto 29
        26: .line 1188
      StackMap locals:
      StackMap stack:
            getstatic java.math.BigInteger.powerCache:[[Ljava/math/BigInteger;
            iload 0 /* i */
            iconst_1
            anewarray java.math.BigInteger
            dup
            iconst_0
            iload 0 /* i */
            i2l
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            aastore
        27: .line 1189
            getstatic java.math.BigInteger.logCache:[D
            iload 0 /* i */
            iload 0 /* i */
            i2d
            invokestatic java.lang.Math.log:(D)D
            dastore
        28: .line 1187
            iinc 0 /* i */ 1
      StackMap locals:
      StackMap stack:
        29: iload 0 /* i */
            bipush 36
            if_icmple 26
        end local 0 // int i
        30: .line 1198
            new java.math.BigInteger
            dup
            iconst_0
            newarray 10
            iconst_0
            invokespecial java.math.BigInteger.<init>:([II)V
            putstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
        31: .line 1205
            lconst_1
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            putstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
        32: .line 1210
            ldc 2
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            putstatic java.math.BigInteger.TWO:Ljava/math/BigInteger;
        33: .line 1215
            ldc -1
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            putstatic java.math.BigInteger.NEGATIVE_ONE:Ljava/math/BigInteger;
        34: .line 1222
            ldc 10
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            putstatic java.math.BigInteger.TEN:Ljava/math/BigInteger;
        35: .line 2717
            bipush 7
            newarray 10
            dup
            iconst_0
            bipush 7
            iastore
            dup
            iconst_1
            bipush 25
            iastore
            dup
            iconst_2
            bipush 81
            iastore
            dup
            iconst_3
            sipush 241
            iastore
            dup
            iconst_4
            sipush 673
            iastore
            dup
            iconst_5
            sipush 1793
            iastore
            dup
            bipush 6
        36: .line 2718
            ldc 2147483647
            iastore
        37: .line 2717
            putstatic java.math.BigInteger.bnExpModThreshTable:[I
        38: .line 3938
            bipush 64
            anewarray java.lang.String
            putstatic java.math.BigInteger.zeros:[Ljava/lang/String;
        39: .line 3940
            getstatic java.math.BigInteger.zeros:[Ljava/lang/String;
            bipush 63
        40: .line 3941
            ldc "000000000000000000000000000000000000000000000000000000000000000"
        41: .line 3940
            aastore
        42: .line 3942
            iconst_0
            istore 0 /* i */
        start local 0 // int i
        43: goto 46
        44: .line 3943
      StackMap locals:
      StackMap stack:
            getstatic java.math.BigInteger.zeros:[Ljava/lang/String;
            iload 0 /* i */
            getstatic java.math.BigInteger.zeros:[Ljava/lang/String;
            bipush 63
            aaload
            iconst_0
            iload 0 /* i */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            aastore
        45: .line 3942
            iinc 0 /* i */ 1
      StackMap locals:
      StackMap stack:
        46: iload 0 /* i */
            bipush 63
            if_icmplt 44
        end local 0 // int i
        47: .line 4354
            bipush 37
            newarray 10
            dup
            iconst_2
        48: .line 4355
            bipush 62
            iastore
            dup
            iconst_3
            bipush 39
            iastore
            dup
            iconst_4
            bipush 31
            iastore
            dup
            iconst_5
            bipush 27
            iastore
            dup
            bipush 6
            bipush 24
            iastore
            dup
            bipush 7
            bipush 22
            iastore
            dup
            bipush 8
            bipush 20
            iastore
            dup
            bipush 9
            bipush 19
            iastore
            dup
            bipush 10
            bipush 18
            iastore
            dup
            bipush 11
            bipush 18
            iastore
            dup
            bipush 12
            bipush 17
            iastore
            dup
            bipush 13
            bipush 17
            iastore
            dup
            bipush 14
            bipush 16
            iastore
            dup
            bipush 15
            bipush 16
            iastore
            dup
            bipush 16
            bipush 15
            iastore
            dup
            bipush 17
            bipush 15
            iastore
            dup
            bipush 18
            bipush 15
            iastore
            dup
            bipush 19
            bipush 14
            iastore
            dup
            bipush 20
        49: .line 4356
            bipush 14
            iastore
            dup
            bipush 21
            bipush 14
            iastore
            dup
            bipush 22
            bipush 14
            iastore
            dup
            bipush 23
            bipush 13
            iastore
            dup
            bipush 24
            bipush 13
            iastore
            dup
            bipush 25
            bipush 13
            iastore
            dup
            bipush 26
            bipush 13
            iastore
            dup
            bipush 27
            bipush 13
            iastore
            dup
            bipush 28
            bipush 13
            iastore
            dup
            bipush 29
            bipush 12
            iastore
            dup
            bipush 30
            bipush 12
            iastore
            dup
            bipush 31
            bipush 12
            iastore
            dup
            bipush 32
            bipush 12
            iastore
            dup
            bipush 33
            bipush 12
            iastore
            dup
            bipush 34
            bipush 12
            iastore
            dup
            bipush 35
            bipush 12
            iastore
            dup
            bipush 36
            bipush 12
            iastore
        50: .line 4354
            putstatic java.math.BigInteger.digitsPerLong:[I
        51: .line 4358
            bipush 37
            anewarray java.math.BigInteger
            dup
            iconst_2
        52: .line 4359
            ldc 4611686018427387904
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            iconst_3
            ldc 4052555153018976267
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            iconst_4
        53: .line 4360
            ldc 4611686018427387904
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            iconst_5
            ldc 7450580596923828125
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 6
        54: .line 4361
            ldc 4738381338321616896
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 7
            ldc 3909821048582988049
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 8
        55: .line 4362
            ldc 1152921504606846976
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 9
            ldc 1350851717672992089
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 10
        56: .line 4363
            ldc 1000000000000000000
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 11
            ldc 5559917313492231481
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 12
        57: .line 4364
            ldc 2218611106740436992
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 13
            ldc 8650415919381337933
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 14
        58: .line 4365
            ldc 2177953337809371136
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 15
            ldc 6568408355712890625
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 16
        59: .line 4366
            ldc 1152921504606846976
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 17
            ldc 2862423051509815793
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 18
        60: .line 4367
            ldc 6746640616477458432
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 19
            ldc 799006685782884121
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 20
        61: .line 4368
            ldc 1638400000000000000
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 21
            ldc 3243919932521508681
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 22
        62: .line 4369
            ldc 6221821273427820544
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 23
            ldc 504036361936467383
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 24
        63: .line 4370
            ldc 876488338465357824
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 25
            ldc 1490116119384765625
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 26
        64: .line 4371
            ldc 2481152873203736576
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 27
            ldc 4052555153018976267
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 28
        65: .line 4372
            ldc 6502111422497947648
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 29
            ldc 353814783205469041
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 30
        66: .line 4373
            ldc 531441000000000000
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 31
            ldc 787662783788549761
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 32
        67: .line 4374
            ldc 1152921504606846976
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 33
            ldc 1667889514952984961
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 34
        68: .line 4375
            ldc 2386420683693101056
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 35
            ldc 3379220508056640625
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
            dup
            bipush 36
        69: .line 4376
            ldc 4738381338321616896
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
        70: .line 4358
            putstatic java.math.BigInteger.longRadix:[Ljava/math/BigInteger;
        71: .line 4381
            bipush 37
            newarray 10
            dup
            iconst_2
            bipush 30
            iastore
            dup
            iconst_3
            bipush 19
            iastore
            dup
            iconst_4
            bipush 15
            iastore
            dup
            iconst_5
            bipush 13
            iastore
            dup
            bipush 6
            bipush 11
            iastore
            dup
            bipush 7
        72: .line 4382
            bipush 11
            iastore
            dup
            bipush 8
            bipush 10
            iastore
            dup
            bipush 9
            bipush 9
            iastore
            dup
            bipush 10
            bipush 9
            iastore
            dup
            bipush 11
            bipush 8
            iastore
            dup
            bipush 12
            bipush 8
            iastore
            dup
            bipush 13
            bipush 8
            iastore
            dup
            bipush 14
            bipush 8
            iastore
            dup
            bipush 15
            bipush 7
            iastore
            dup
            bipush 16
            bipush 7
            iastore
            dup
            bipush 17
            bipush 7
            iastore
            dup
            bipush 18
            bipush 7
            iastore
            dup
            bipush 19
            bipush 7
            iastore
            dup
            bipush 20
            bipush 7
            iastore
            dup
            bipush 21
            bipush 7
            iastore
            dup
            bipush 22
            bipush 6
            iastore
            dup
            bipush 23
            bipush 6
            iastore
            dup
            bipush 24
            bipush 6
            iastore
            dup
            bipush 25
            bipush 6
            iastore
            dup
            bipush 26
        73: .line 4383
            bipush 6
            iastore
            dup
            bipush 27
            bipush 6
            iastore
            dup
            bipush 28
            bipush 6
            iastore
            dup
            bipush 29
            bipush 6
            iastore
            dup
            bipush 30
            bipush 6
            iastore
            dup
            bipush 31
            bipush 6
            iastore
            dup
            bipush 32
            bipush 6
            iastore
            dup
            bipush 33
            bipush 6
            iastore
            dup
            bipush 34
            bipush 6
            iastore
            dup
            bipush 35
            bipush 6
            iastore
            dup
            bipush 36
            iconst_5
            iastore
        74: .line 4381
            putstatic java.math.BigInteger.digitsPerInt:[I
        75: .line 4385
            bipush 37
            newarray 10
            dup
            iconst_2
        76: .line 4386
            ldc 1073741824
            iastore
            dup
            iconst_3
            ldc 1162261467
            iastore
            dup
            iconst_4
            ldc 1073741824
            iastore
            dup
            iconst_5
            ldc 1220703125
            iastore
            dup
            bipush 6
            ldc 362797056
            iastore
            dup
            bipush 7
        77: .line 4387
            ldc 1977326743
            iastore
            dup
            bipush 8
            ldc 1073741824
            iastore
            dup
            bipush 9
            ldc 387420489
            iastore
            dup
            bipush 10
            ldc 1000000000
            iastore
            dup
            bipush 11
            ldc 214358881
            iastore
            dup
            bipush 12
        78: .line 4388
            ldc 429981696
            iastore
            dup
            bipush 13
            ldc 815730721
            iastore
            dup
            bipush 14
            ldc 1475789056
            iastore
            dup
            bipush 15
            ldc 170859375
            iastore
            dup
            bipush 16
            ldc 268435456
            iastore
            dup
            bipush 17
        79: .line 4389
            ldc 410338673
            iastore
            dup
            bipush 18
            ldc 612220032
            iastore
            dup
            bipush 19
            ldc 893871739
            iastore
            dup
            bipush 20
            ldc 1280000000
            iastore
            dup
            bipush 21
            ldc 1801088541
            iastore
            dup
            bipush 22
        80: .line 4390
            ldc 113379904
            iastore
            dup
            bipush 23
            ldc 148035889
            iastore
            dup
            bipush 24
            ldc 191102976
            iastore
            dup
            bipush 25
            ldc 244140625
            iastore
            dup
            bipush 26
            ldc 308915776
            iastore
            dup
            bipush 27
        81: .line 4391
            ldc 387420489
            iastore
            dup
            bipush 28
            ldc 481890304
            iastore
            dup
            bipush 29
            ldc 594823321
            iastore
            dup
            bipush 30
            ldc 729000000
            iastore
            dup
            bipush 31
            ldc 887503681
            iastore
            dup
            bipush 32
        82: .line 4392
            ldc 1073741824
            iastore
            dup
            bipush 33
            ldc 1291467969
            iastore
            dup
            bipush 34
            ldc 1544804416
            iastore
            dup
            bipush 35
            ldc 1838265625
            iastore
            dup
            bipush 36
            ldc 60466176
            iastore
        83: .line 4385
            putstatic java.math.BigInteger.intRadix:[I
        84: .line 4475
            bipush 6
            anewarray java.io.ObjectStreamField
            dup
            iconst_0
        85: .line 4476
            new java.io.ObjectStreamField
            dup
            ldc "signum"
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            invokespecial java.io.ObjectStreamField.<init>:(Ljava/lang/String;Ljava/lang/Class;)V
            aastore
            dup
            iconst_1
        86: .line 4477
            new java.io.ObjectStreamField
            dup
            ldc "magnitude"
            ldc [B
            invokespecial java.io.ObjectStreamField.<init>:(Ljava/lang/String;Ljava/lang/Class;)V
            aastore
            dup
            iconst_2
        87: .line 4478
            new java.io.ObjectStreamField
            dup
            ldc "bitCount"
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            invokespecial java.io.ObjectStreamField.<init>:(Ljava/lang/String;Ljava/lang/Class;)V
            aastore
            dup
            iconst_3
        88: .line 4479
            new java.io.ObjectStreamField
            dup
            ldc "bitLength"
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            invokespecial java.io.ObjectStreamField.<init>:(Ljava/lang/String;Ljava/lang/Class;)V
            aastore
            dup
            iconst_4
        89: .line 4480
            new java.io.ObjectStreamField
            dup
            ldc "firstNonzeroByteNum"
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            invokespecial java.io.ObjectStreamField.<init>:(Ljava/lang/String;Ljava/lang/Class;)V
            aastore
            dup
            iconst_5
        90: .line 4481
            new java.io.ObjectStreamField
            dup
            ldc "lowestSetBit"
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            invokespecial java.io.ObjectStreamField.<init>:(Ljava/lang/String;Ljava/lang/Class;)V
            aastore
        91: .line 4475
            putstatic java.math.BigInteger.serialPersistentFields:[Ljava/io/ObjectStreamField;
        92: .line 4482
            return
      LocalVariableTable:
        Start  End  Slot       Name  Signature
           15   22     0          i  I
           17   20     1  magnitude  [I
           25   30     0          i  I
           43   47     0          i  I

  public void <init>(byte[]);
    descriptor: ([B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // byte[] val
         0: .line 300
            aload 0 /* this */
            invokespecial java.lang.Number.<init>:()V
         1: .line 301
            aload 1 /* val */
            arraylength
            ifne 3
         2: .line 302
            new java.lang.NumberFormatException
            dup
            ldc "Zero length BigInteger"
            invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 304
      StackMap locals: java.math.BigInteger byte[]
      StackMap stack:
            aload 1 /* val */
            iconst_0
            baload
            ifge 7
         4: .line 305
            aload 0 /* this */
            aload 1 /* val */
            invokestatic java.math.BigInteger.makePositive:([B)[I
            putfield java.math.BigInteger.mag:[I
         5: .line 306
            aload 0 /* this */
            iconst_m1
            putfield java.math.BigInteger.signum:I
         6: .line 307
            goto 11
         7: .line 308
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* val */
            invokestatic java.math.BigInteger.stripLeadingZeroBytes:([B)[I
            putfield java.math.BigInteger.mag:[I
         8: .line 309
            aload 0 /* this */
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            ifne 9
            iconst_0
            goto 10
      StackMap locals:
      StackMap stack: java.math.BigInteger
         9: iconst_1
      StackMap locals: java.math.BigInteger byte[]
      StackMap stack: java.math.BigInteger int
        10: putfield java.math.BigInteger.signum:I
        11: .line 311
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            ldc 67108864
            if_icmplt 13
        12: .line 312
            aload 0 /* this */
            invokevirtual java.math.BigInteger.checkRange:()V
        13: .line 314
      StackMap locals:
      StackMap stack:
            return
        end local 1 // byte[] val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Ljava/math/BigInteger;
            0   14     1   val  [B
    MethodParameters:
      Name  Flags
      val   

  private void <init>(int[]);
    descriptor: ([I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // int[] val
         0: .line 322
            aload 0 /* this */
            invokespecial java.lang.Number.<init>:()V
         1: .line 323
            aload 1 /* val */
            arraylength
            ifne 3
         2: .line 324
            new java.lang.NumberFormatException
            dup
            ldc "Zero length BigInteger"
            invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 326
      StackMap locals: java.math.BigInteger int[]
      StackMap stack:
            aload 1 /* val */
            iconst_0
            iaload
            ifge 7
         4: .line 327
            aload 0 /* this */
            aload 1 /* val */
            invokestatic java.math.BigInteger.makePositive:([I)[I
            putfield java.math.BigInteger.mag:[I
         5: .line 328
            aload 0 /* this */
            iconst_m1
            putfield java.math.BigInteger.signum:I
         6: .line 329
            goto 11
         7: .line 330
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* val */
            invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
            putfield java.math.BigInteger.mag:[I
         8: .line 331
            aload 0 /* this */
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            ifne 9
            iconst_0
            goto 10
      StackMap locals:
      StackMap stack: java.math.BigInteger
         9: iconst_1
      StackMap locals: java.math.BigInteger int[]
      StackMap stack: java.math.BigInteger int
        10: putfield java.math.BigInteger.signum:I
        11: .line 333
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            ldc 67108864
            if_icmplt 13
        12: .line 334
            aload 0 /* this */
            invokevirtual java.math.BigInteger.checkRange:()V
        13: .line 336
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int[] val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Ljava/math/BigInteger;
            0   14     1   val  [I
    MethodParameters:
      Name  Flags
      val   

  public void <init>(int, byte[]);
    descriptor: (I[B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // java.math.BigInteger this
        start local 1 // int signum
        start local 2 // byte[] magnitude
         0: .line 354
            aload 0 /* this */
            invokespecial java.lang.Number.<init>:()V
         1: .line 355
            aload 0 /* this */
            aload 2 /* magnitude */
            invokestatic java.math.BigInteger.stripLeadingZeroBytes:([B)[I
            putfield java.math.BigInteger.mag:[I
         2: .line 357
            iload 1 /* signum */
            iconst_m1
            if_icmplt 3
            iload 1 /* signum */
            iconst_1
            if_icmple 4
         3: .line 358
      StackMap locals: java.math.BigInteger int byte[]
      StackMap stack:
            new java.lang.NumberFormatException
            dup
            ldc "Invalid signum value"
            invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 360
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            ifne 7
         5: .line 361
            aload 0 /* this */
            iconst_0
            putfield java.math.BigInteger.signum:I
         6: .line 362
            goto 10
         7: .line 363
      StackMap locals:
      StackMap stack:
            iload 1 /* signum */
            ifne 9
         8: .line 364
            new java.lang.NumberFormatException
            dup
            ldc "signum-magnitude mismatch"
            invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 365
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* signum */
            putfield java.math.BigInteger.signum:I
        10: .line 367
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            ldc 67108864
            if_icmplt 12
        11: .line 368
            aload 0 /* this */
            invokevirtual java.math.BigInteger.checkRange:()V
        12: .line 370
      StackMap locals:
      StackMap stack:
            return
        end local 2 // byte[] magnitude
        end local 1 // int signum
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0       this  Ljava/math/BigInteger;
            0   13     1     signum  I
            0   13     2  magnitude  [B
    MethodParameters:
           Name  Flags
      signum     
      magnitude  

  private void <init>(int, int[]);
    descriptor: (I[I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // java.math.BigInteger this
        start local 1 // int signum
        start local 2 // int[] magnitude
         0: .line 378
            aload 0 /* this */
            invokespecial java.lang.Number.<init>:()V
         1: .line 379
            aload 0 /* this */
            aload 2 /* magnitude */
            invokestatic java.math.BigInteger.stripLeadingZeroInts:([I)[I
            putfield java.math.BigInteger.mag:[I
         2: .line 381
            iload 1 /* signum */
            iconst_m1
            if_icmplt 3
            iload 1 /* signum */
            iconst_1
            if_icmple 4
         3: .line 382
      StackMap locals: java.math.BigInteger int int[]
      StackMap stack:
            new java.lang.NumberFormatException
            dup
            ldc "Invalid signum value"
            invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 384
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            ifne 7
         5: .line 385
            aload 0 /* this */
            iconst_0
            putfield java.math.BigInteger.signum:I
         6: .line 386
            goto 10
         7: .line 387
      StackMap locals:
      StackMap stack:
            iload 1 /* signum */
            ifne 9
         8: .line 388
            new java.lang.NumberFormatException
            dup
            ldc "signum-magnitude mismatch"
            invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 389
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* signum */
            putfield java.math.BigInteger.signum:I
        10: .line 391
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            ldc 67108864
            if_icmplt 12
        11: .line 392
            aload 0 /* this */
            invokevirtual java.math.BigInteger.checkRange:()V
        12: .line 394
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int[] magnitude
        end local 1 // int signum
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0       this  Ljava/math/BigInteger;
            0   13     1     signum  I
            0   13     2  magnitude  [I
    MethodParameters:
           Name  Flags
      signum     
      magnitude  

  public void <init>(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=17, args_size=3
        start local 0 // java.math.BigInteger this
        start local 1 // java.lang.String val
        start local 2 // int radix
         0: .line 413
            aload 0 /* this */
            invokespecial java.lang.Number.<init>:()V
         1: .line 414
            iconst_0
            istore 3 /* cursor */
        start local 3 // int cursor
         2: .line 415
            aload 1 /* val */
            invokevirtual java.lang.String.length:()I
            istore 5 /* len */
        start local 5 // int len
         3: .line 417
            iload 2 /* radix */
            iconst_2
            if_icmplt 4
            iload 2 /* radix */
            bipush 36
            if_icmple 5
         4: .line 418
      StackMap locals: java.math.BigInteger java.lang.String int int top int
      StackMap stack:
            new java.lang.NumberFormatException
            dup
            ldc "Radix out of range"
            invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 419
      StackMap locals:
      StackMap stack:
            iload 5 /* len */
            ifne 7
         6: .line 420
            new java.lang.NumberFormatException
            dup
            ldc "Zero length BigInteger"
            invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 423
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 6 /* sign */
        start local 6 // int sign
         8: .line 424
            aload 1 /* val */
            bipush 45
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 7 /* index1 */
        start local 7 // int index1
         9: .line 425
            aload 1 /* val */
            bipush 43
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 8 /* index2 */
        start local 8 // int index2
        10: .line 426
            iload 7 /* index1 */
            iflt 16
        11: .line 427
            iload 7 /* index1 */
            ifne 12
            iload 8 /* index2 */
            iflt 13
        12: .line 428
      StackMap locals: int int int
      StackMap stack:
            new java.lang.NumberFormatException
            dup
            ldc "Illegal embedded sign character"
            invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 430
      StackMap locals:
      StackMap stack:
            iconst_m1
            istore 6 /* sign */
        14: .line 431
            iconst_1
            istore 3 /* cursor */
        15: .line 432
            goto 20
      StackMap locals:
      StackMap stack:
        16: iload 8 /* index2 */
            iflt 20
        17: .line 433
            iload 8 /* index2 */
            ifeq 19
        18: .line 434
            new java.lang.NumberFormatException
            dup
            ldc "Illegal embedded sign character"
            invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
            athrow
        19: .line 436
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 3 /* cursor */
        20: .line 438
      StackMap locals:
      StackMap stack:
            iload 3 /* cursor */
            iload 5 /* len */
            if_icmpne 23
        21: .line 439
            new java.lang.NumberFormatException
            dup
            ldc "Zero length BigInteger"
            invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
            athrow
        22: .line 444
      StackMap locals:
      StackMap stack:
            iinc 3 /* cursor */ 1
        23: .line 442
      StackMap locals:
      StackMap stack:
            iload 3 /* cursor */
            iload 5 /* len */
            if_icmpge 25
        24: .line 443
            aload 1 /* val */
            iload 3 /* cursor */
            invokevirtual java.lang.String.charAt:(I)C
            iload 2 /* radix */
            invokestatic java.lang.Character.digit:(CI)I
            ifeq 22
        25: .line 447
      StackMap locals:
      StackMap stack:
            iload 3 /* cursor */
            iload 5 /* len */
            if_icmpne 29
        26: .line 448
            aload 0 /* this */
            iconst_0
            putfield java.math.BigInteger.signum:I
        27: .line 449
            aload 0 /* this */
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            getfield java.math.BigInteger.mag:[I
            putfield java.math.BigInteger.mag:[I
        28: .line 450
            return
        29: .line 453
      StackMap locals:
      StackMap stack:
            iload 5 /* len */
            iload 3 /* cursor */
            isub
            istore 4 /* numDigits */
        start local 4 // int numDigits
        30: .line 454
            aload 0 /* this */
            iload 6 /* sign */
            putfield java.math.BigInteger.signum:I
        31: .line 458
            iload 4 /* numDigits */
            i2l
            getstatic java.math.BigInteger.bitsPerDigit:[J
            iload 2 /* radix */
            laload
            lmul
            bipush 10
            lushr
            lconst_1
            ladd
            lstore 9 /* numBits */
        start local 9 // long numBits
        32: .line 459
            lload 9 /* numBits */
            ldc 31
            ladd
            ldc 4294967296
            lcmp
            iflt 34
        33: .line 460
            invokestatic java.math.BigInteger.reportOverflow:()V
        34: .line 462
      StackMap locals: java.math.BigInteger java.lang.String int int int int int int int long
      StackMap stack:
            lload 9 /* numBits */
            ldc 31
            ladd
            l2i
            iconst_5
            iushr
            istore 11 /* numWords */
        start local 11 // int numWords
        35: .line 463
            iload 11 /* numWords */
            newarray 10
            astore 12 /* magnitude */
        start local 12 // int[] magnitude
        36: .line 466
            iload 4 /* numDigits */
            getstatic java.math.BigInteger.digitsPerInt:[I
            iload 2 /* radix */
            iaload
            irem
            istore 13 /* firstGroupLen */
        start local 13 // int firstGroupLen
        37: .line 467
            iload 13 /* firstGroupLen */
            ifne 39
        38: .line 468
            getstatic java.math.BigInteger.digitsPerInt:[I
            iload 2 /* radix */
            iaload
            istore 13 /* firstGroupLen */
        39: .line 469
      StackMap locals: int int[] int
      StackMap stack:
            aload 1 /* val */
            iload 3 /* cursor */
            iload 3 /* cursor */
            iload 13 /* firstGroupLen */
            iadd
            dup
            istore 3 /* cursor */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 14 /* group */
        start local 14 // java.lang.String group
        40: .line 470
            aload 12 /* magnitude */
            iload 11 /* numWords */
            iconst_1
            isub
            aload 14 /* group */
            iload 2 /* radix */
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;I)I
            iastore
        41: .line 471
            aload 12 /* magnitude */
            iload 11 /* numWords */
            iconst_1
            isub
            iaload
            ifge 43
        42: .line 472
            new java.lang.NumberFormatException
            dup
            ldc "Illegal digit"
            invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
            athrow
        43: .line 475
      StackMap locals: java.lang.String
      StackMap stack:
            getstatic java.math.BigInteger.intRadix:[I
            iload 2 /* radix */
            iaload
            istore 15 /* superRadix */
        start local 15 // int superRadix
        44: .line 476
            iconst_0
            istore 16 /* groupVal */
        start local 16 // int groupVal
        45: .line 477
            goto 51
        46: .line 478
      StackMap locals: int int
      StackMap stack:
            aload 1 /* val */
            iload 3 /* cursor */
            iload 3 /* cursor */
            getstatic java.math.BigInteger.digitsPerInt:[I
            iload 2 /* radix */
            iaload
            iadd
            dup
            istore 3 /* cursor */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 14 /* group */
        47: .line 479
            aload 14 /* group */
            iload 2 /* radix */
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;I)I
            istore 16 /* groupVal */
        48: .line 480
            iload 16 /* groupVal */
            ifge 50
        49: .line 481
            new java.lang.NumberFormatException
            dup
            ldc "Illegal digit"
            invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
            athrow
        50: .line 482
      StackMap locals:
      StackMap stack:
            aload 12 /* magnitude */
            iload 15 /* superRadix */
            iload 16 /* groupVal */
            invokestatic java.math.BigInteger.destructiveMulAdd:([III)V
        51: .line 477
      StackMap locals:
      StackMap stack:
            iload 3 /* cursor */
            iload 5 /* len */
            if_icmplt 46
        52: .line 485
            aload 0 /* this */
            aload 12 /* magnitude */
            invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
            putfield java.math.BigInteger.mag:[I
        53: .line 486
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            ldc 67108864
            if_icmplt 55
        54: .line 487
            aload 0 /* this */
            invokevirtual java.math.BigInteger.checkRange:()V
        55: .line 489
      StackMap locals:
      StackMap stack:
            return
        end local 16 // int groupVal
        end local 15 // int superRadix
        end local 14 // java.lang.String group
        end local 13 // int firstGroupLen
        end local 12 // int[] magnitude
        end local 11 // int numWords
        end local 9 // long numBits
        end local 8 // int index2
        end local 7 // int index1
        end local 6 // int sign
        end local 5 // int len
        end local 4 // int numDigits
        end local 3 // int cursor
        end local 2 // int radix
        end local 1 // java.lang.String val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   56     0           this  Ljava/math/BigInteger;
            0   56     1            val  Ljava/lang/String;
            0   56     2          radix  I
            2   56     3         cursor  I
           30   56     4      numDigits  I
            3   56     5            len  I
            8   56     6           sign  I
            9   56     7         index1  I
           10   56     8         index2  I
           32   56     9        numBits  J
           35   56    11       numWords  I
           36   56    12      magnitude  [I
           37   56    13  firstGroupLen  I
           40   56    14          group  Ljava/lang/String;
           44   56    15     superRadix  I
           45   56    16       groupVal  I
    MethodParameters:
       Name  Flags
      val    
      radix  

  void <init>(char[], int, int);
    descriptor: ([CII)V
    flags: (0x0000) 
    Code:
      stack=7, locals=10, args_size=4
        start local 0 // java.math.BigInteger this
        start local 1 // char[] val
        start local 2 // int sign
        start local 3 // int len
         0: .line 495
            aload 0 /* this */
            invokespecial java.lang.Number.<init>:()V
         1: .line 496
            iconst_0
            istore 4 /* cursor */
        start local 4 // int cursor
         2: .line 499
            goto 4
         3: .line 500
      StackMap locals: java.math.BigInteger char[] int int int
      StackMap stack:
            iinc 4 /* cursor */ 1
         4: .line 499
      StackMap locals:
      StackMap stack:
            iload 4 /* cursor */
            iload 3 /* len */
            if_icmpge 5
            aload 1 /* val */
            iload 4 /* cursor */
            caload
            bipush 10
            invokestatic java.lang.Character.digit:(CI)I
            ifeq 3
         5: .line 502
      StackMap locals:
      StackMap stack:
            iload 4 /* cursor */
            iload 3 /* len */
            if_icmpne 9
         6: .line 503
            aload 0 /* this */
            iconst_0
            putfield java.math.BigInteger.signum:I
         7: .line 504
            aload 0 /* this */
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            getfield java.math.BigInteger.mag:[I
            putfield java.math.BigInteger.mag:[I
         8: .line 505
            return
         9: .line 508
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            iload 4 /* cursor */
            isub
            istore 5 /* numDigits */
        start local 5 // int numDigits
        10: .line 509
            aload 0 /* this */
            iload 2 /* sign */
            putfield java.math.BigInteger.signum:I
        11: .line 512
            iload 3 /* len */
            bipush 10
            if_icmpge 14
        12: .line 513
            iconst_1
            istore 6 /* numWords */
        start local 6 // int numWords
        13: .line 514
            goto 18
        end local 6 // int numWords
        14: .line 515
      StackMap locals: int
      StackMap stack:
            iload 5 /* numDigits */
            i2l
            getstatic java.math.BigInteger.bitsPerDigit:[J
            bipush 10
            laload
            lmul
            bipush 10
            lushr
            lconst_1
            ladd
            lstore 7 /* numBits */
        start local 7 // long numBits
        15: .line 516
            lload 7 /* numBits */
            ldc 31
            ladd
            ldc 4294967296
            lcmp
            iflt 17
        16: .line 517
            invokestatic java.math.BigInteger.reportOverflow:()V
        17: .line 519
      StackMap locals: java.math.BigInteger char[] int int int int top long
      StackMap stack:
            lload 7 /* numBits */
            ldc 31
            ladd
            l2i
            iconst_5
            iushr
            istore 6 /* numWords */
        end local 7 // long numBits
        start local 6 // int numWords
        18: .line 521
      StackMap locals: java.math.BigInteger char[] int int int int int
      StackMap stack:
            iload 6 /* numWords */
            newarray 10
            astore 7 /* magnitude */
        start local 7 // int[] magnitude
        19: .line 524
            iload 5 /* numDigits */
            getstatic java.math.BigInteger.digitsPerInt:[I
            bipush 10
            iaload
            irem
            istore 8 /* firstGroupLen */
        start local 8 // int firstGroupLen
        20: .line 525
            iload 8 /* firstGroupLen */
            ifne 22
        21: .line 526
            getstatic java.math.BigInteger.digitsPerInt:[I
            bipush 10
            iaload
            istore 8 /* firstGroupLen */
        22: .line 527
      StackMap locals: int[] int
      StackMap stack:
            aload 7 /* magnitude */
            iload 6 /* numWords */
            iconst_1
            isub
            aload 0 /* this */
            aload 1 /* val */
            iload 4 /* cursor */
            iload 4 /* cursor */
            iload 8 /* firstGroupLen */
            iadd
            dup
            istore 4 /* cursor */
            invokevirtual java.math.BigInteger.parseInt:([CII)I
            iastore
        23: .line 530
            goto 26
        24: .line 531
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* val */
            iload 4 /* cursor */
            iload 4 /* cursor */
            getstatic java.math.BigInteger.digitsPerInt:[I
            bipush 10
            iaload
            iadd
            dup
            istore 4 /* cursor */
            invokevirtual java.math.BigInteger.parseInt:([CII)I
            istore 9 /* groupVal */
        start local 9 // int groupVal
        25: .line 532
            aload 7 /* magnitude */
            getstatic java.math.BigInteger.intRadix:[I
            bipush 10
            iaload
            iload 9 /* groupVal */
            invokestatic java.math.BigInteger.destructiveMulAdd:([III)V
        end local 9 // int groupVal
        26: .line 530
      StackMap locals:
      StackMap stack:
            iload 4 /* cursor */
            iload 3 /* len */
            if_icmplt 24
        27: .line 534
            aload 0 /* this */
            aload 7 /* magnitude */
            invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
            putfield java.math.BigInteger.mag:[I
        28: .line 535
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            ldc 67108864
            if_icmplt 30
        29: .line 536
            aload 0 /* this */
            invokevirtual java.math.BigInteger.checkRange:()V
        30: .line 538
      StackMap locals:
      StackMap stack:
            return
        end local 8 // int firstGroupLen
        end local 7 // int[] magnitude
        end local 6 // int numWords
        end local 5 // int numDigits
        end local 4 // int cursor
        end local 3 // int len
        end local 2 // int sign
        end local 1 // char[] val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   31     0           this  Ljava/math/BigInteger;
            0   31     1            val  [C
            0   31     2           sign  I
            0   31     3            len  I
            2   31     4         cursor  I
           10   31     5      numDigits  I
           13   14     6       numWords  I
           18   31     6       numWords  I
           15   18     7        numBits  J
           19   31     7      magnitude  [I
           20   31     8  firstGroupLen  I
           25   26     9       groupVal  I
    MethodParameters:
      Name  Flags
      val   
      sign  
      len   

  private int parseInt(char[], int, int);
    descriptor: ([CII)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // java.math.BigInteger this
        start local 1 // char[] source
        start local 2 // int start
        start local 3 // int end
         0: .line 544
            aload 1 /* source */
            iload 2 /* start */
            iinc 2 /* start */ 1
            caload
            bipush 10
            invokestatic java.lang.Character.digit:(CI)I
            istore 4 /* result */
        start local 4 // int result
         1: .line 545
            iload 4 /* result */
            iconst_m1
            if_icmpne 3
         2: .line 546
            new java.lang.NumberFormatException
            dup
            new java.lang.String
            dup
            aload 1 /* source */
            invokespecial java.lang.String.<init>:([C)V
            invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 548
      StackMap locals: int
      StackMap stack:
            iload 2 /* start */
            istore 5 /* index */
        start local 5 // int index
         4: goto 10
         5: .line 549
      StackMap locals: int
      StackMap stack:
            aload 1 /* source */
            iload 5 /* index */
            caload
            bipush 10
            invokestatic java.lang.Character.digit:(CI)I
            istore 6 /* nextVal */
        start local 6 // int nextVal
         6: .line 550
            iload 6 /* nextVal */
            iconst_m1
            if_icmpne 8
         7: .line 551
            new java.lang.NumberFormatException
            dup
            new java.lang.String
            dup
            aload 1 /* source */
            invokespecial java.lang.String.<init>:([C)V
            invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 552
      StackMap locals: int
      StackMap stack:
            bipush 10
            iload 4 /* result */
            imul
            iload 6 /* nextVal */
            iadd
            istore 4 /* result */
        end local 6 // int nextVal
         9: .line 548
            iinc 5 /* index */ 1
      StackMap locals:
      StackMap stack:
        10: iload 5 /* index */
            iload 3 /* end */
            if_icmplt 5
        end local 5 // int index
        11: .line 555
            iload 4 /* result */
            ireturn
        end local 4 // int result
        end local 3 // int end
        end local 2 // int start
        end local 1 // char[] source
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0     this  Ljava/math/BigInteger;
            0   12     1   source  [C
            0   12     2    start  I
            0   12     3      end  I
            1   12     4   result  I
            4   11     5    index  I
            6    9     6  nextVal  I
    MethodParameters:
        Name  Flags
      source  
      start   
      end     

  private static void destructiveMulAdd(int[], int, int);
    descriptor: ([III)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=15, args_size=3
        start local 0 // int[] x
        start local 1 // int y
        start local 2 // int z
         0: .line 569
            iload 1 /* y */
            i2l
            ldc 4294967295
            land
            lstore 3 /* ylong */
        start local 3 // long ylong
         1: .line 570
            iload 2 /* z */
            i2l
            ldc 4294967295
            land
            lstore 5 /* zlong */
        start local 5 // long zlong
         2: .line 571
            aload 0 /* x */
            arraylength
            istore 7 /* len */
        start local 7 // int len
         3: .line 573
            lconst_0
            lstore 8 /* product */
        start local 8 // long product
         4: .line 574
            lconst_0
            lstore 10 /* carry */
        start local 10 // long carry
         5: .line 575
            iload 7 /* len */
            iconst_1
            isub
            istore 12 /* i */
        start local 12 // int i
         6: goto 11
         7: .line 576
      StackMap locals: int[] int int long long int long long int
      StackMap stack:
            lload 3 /* ylong */
            aload 0 /* x */
            iload 12 /* i */
            iaload
            i2l
            ldc 4294967295
            land
            lmul
            lload 10 /* carry */
            ladd
            lstore 8 /* product */
         8: .line 577
            aload 0 /* x */
            iload 12 /* i */
            lload 8 /* product */
            l2i
            iastore
         9: .line 578
            lload 8 /* product */
            bipush 32
            lushr
            lstore 10 /* carry */
        10: .line 575
            iinc 12 /* i */ -1
      StackMap locals:
      StackMap stack:
        11: iload 12 /* i */
            ifge 7
        end local 12 // int i
        12: .line 582
            aload 0 /* x */
            iload 7 /* len */
            iconst_1
            isub
            iaload
            i2l
            ldc 4294967295
            land
            lload 5 /* zlong */
            ladd
            lstore 12 /* sum */
        start local 12 // long sum
        13: .line 583
            aload 0 /* x */
            iload 7 /* len */
            iconst_1
            isub
            lload 12 /* sum */
            l2i
            iastore
        14: .line 584
            lload 12 /* sum */
            bipush 32
            lushr
            lstore 10 /* carry */
        15: .line 585
            iload 7 /* len */
            iconst_2
            isub
            istore 14 /* i */
        start local 14 // int i
        16: goto 21
        17: .line 586
      StackMap locals: int[] int int long long int long long long int
      StackMap stack:
            aload 0 /* x */
            iload 14 /* i */
            iaload
            i2l
            ldc 4294967295
            land
            lload 10 /* carry */
            ladd
            lstore 12 /* sum */
        18: .line 587
            aload 0 /* x */
            iload 14 /* i */
            lload 12 /* sum */
            l2i
            iastore
        19: .line 588
            lload 12 /* sum */
            bipush 32
            lushr
            lstore 10 /* carry */
        20: .line 585
            iinc 14 /* i */ -1
      StackMap locals:
      StackMap stack:
        21: iload 14 /* i */
            ifge 17
        end local 14 // int i
        22: .line 590
            return
        end local 12 // long sum
        end local 10 // long carry
        end local 8 // long product
        end local 7 // int len
        end local 5 // long zlong
        end local 3 // long ylong
        end local 2 // int z
        end local 1 // int y
        end local 0 // int[] x
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   23     0        x  [I
            0   23     1        y  I
            0   23     2        z  I
            1   23     3    ylong  J
            2   23     5    zlong  J
            3   23     7      len  I
            4   23     8  product  J
            5   23    10    carry  J
            6   12    12        i  I
           13   23    12      sum  J
           16   22    14        i  I
    MethodParameters:
      Name  Flags
      x     
      y     
      z     

  public void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.lang.String val
         0: .line 606
            aload 0 /* this */
            aload 1 /* val */
            bipush 10
            invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
         1: .line 607
            return
        end local 1 // java.lang.String val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljava/math/BigInteger;
            0    2     1   val  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      val   

  public void <init>(int, java.util.Random);
    descriptor: (ILjava/util/Random;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // java.math.BigInteger this
        start local 1 // int numBits
        start local 2 // java.util.Random rnd
         0: .line 623
            aload 0 /* this */
            iconst_1
            iload 1 /* numBits */
            aload 2 /* rnd */
            invokestatic java.math.BigInteger.randomBits:(ILjava/util/Random;)[B
            invokespecial java.math.BigInteger.<init>:(I[B)V
         1: .line 624
            return
        end local 2 // java.util.Random rnd
        end local 1 // int numBits
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Ljava/math/BigInteger;
            0    2     1  numBits  I
            0    2     2      rnd  Ljava/util/Random;
    MethodParameters:
         Name  Flags
      numBits  
      rnd      

  private static byte[] randomBits(int, java.util.Random);
    descriptor: (ILjava/util/Random;)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=5, args_size=2
        start local 0 // int numBits
        start local 1 // java.util.Random rnd
         0: .line 627
            iload 0 /* numBits */
            ifge 2
         1: .line 628
            new java.lang.IllegalArgumentException
            dup
            ldc "numBits must be non-negative"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 629
      StackMap locals:
      StackMap stack:
            iload 0 /* numBits */
            i2l
            ldc 7
            ladd
            ldc 8
            ldiv
            l2i
            istore 2 /* numBytes */
        start local 2 // int numBytes
         3: .line 630
            iload 2 /* numBytes */
            newarray 8
            astore 3 /* randomBits */
        start local 3 // byte[] randomBits
         4: .line 633
            iload 2 /* numBytes */
            ifle 8
         5: .line 634
            aload 1 /* rnd */
            aload 3 /* randomBits */
            invokevirtual java.util.Random.nextBytes:([B)V
         6: .line 635
            bipush 8
            iload 2 /* numBytes */
            imul
            iload 0 /* numBits */
            isub
            istore 4 /* excessBits */
        start local 4 // int excessBits
         7: .line 636
            aload 3 /* randomBits */
            iconst_0
            dup2
            baload
            iconst_1
            bipush 8
            iload 4 /* excessBits */
            isub
            ishl
            iconst_1
            isub
            iand
            i2b
            bastore
        end local 4 // int excessBits
         8: .line 638
      StackMap locals: int byte[]
      StackMap stack:
            aload 3 /* randomBits */
            areturn
        end local 3 // byte[] randomBits
        end local 2 // int numBytes
        end local 1 // java.util.Random rnd
        end local 0 // int numBits
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0     numBits  I
            0    9     1         rnd  Ljava/util/Random;
            3    9     2    numBytes  I
            4    9     3  randomBits  [B
            7    8     4  excessBits  I
    MethodParameters:
         Name  Flags
      numBits  
      rnd      

  public void <init>(int, int, java.util.Random);
    descriptor: (IILjava/util/Random;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // java.math.BigInteger this
        start local 1 // int bitLength
        start local 2 // int certainty
        start local 3 // java.util.Random rnd
         0: .line 660
            aload 0 /* this */
            invokespecial java.lang.Number.<init>:()V
         1: .line 663
            iload 1 /* bitLength */
            iconst_2
            if_icmpge 3
         2: .line 664
            new java.lang.ArithmeticException
            dup
            ldc "bitLength < 2"
            invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 665
      StackMap locals: java.math.BigInteger int int java.util.Random
      StackMap stack:
            iload 1 /* bitLength */
            bipush 95
            if_icmpge 5
         4: .line 666
            iload 1 /* bitLength */
            iload 2 /* certainty */
            aload 3 /* rnd */
            invokestatic java.math.BigInteger.smallPrime:(IILjava/util/Random;)Ljava/math/BigInteger;
            goto 6
         5: .line 667
      StackMap locals:
      StackMap stack:
            iload 1 /* bitLength */
            iload 2 /* certainty */
            aload 3 /* rnd */
            invokestatic java.math.BigInteger.largePrime:(IILjava/util/Random;)Ljava/math/BigInteger;
         6: .line 665
      StackMap locals:
      StackMap stack: java.math.BigInteger
            astore 4 /* prime */
        start local 4 // java.math.BigInteger prime
         7: .line 668
            aload 0 /* this */
            iconst_1
            putfield java.math.BigInteger.signum:I
         8: .line 669
            aload 0 /* this */
            aload 4 /* prime */
            getfield java.math.BigInteger.mag:[I
            putfield java.math.BigInteger.mag:[I
         9: .line 670
            return
        end local 4 // java.math.BigInteger prime
        end local 3 // java.util.Random rnd
        end local 2 // int certainty
        end local 1 // int bitLength
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0       this  Ljava/math/BigInteger;
            0   10     1  bitLength  I
            0   10     2  certainty  I
            0   10     3        rnd  Ljava/util/Random;
            7   10     4      prime  Ljava/math/BigInteger;
    MethodParameters:
           Name  Flags
      bitLength  
      certainty  
      rnd        

  public static java.math.BigInteger probablePrime(int, java.util.Random);
    descriptor: (ILjava/util/Random;)Ljava/math/BigInteger;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // int bitLength
        start local 1 // java.util.Random rnd
         0: .line 694
            iload 0 /* bitLength */
            iconst_2
            if_icmpge 2
         1: .line 695
            new java.lang.ArithmeticException
            dup
            ldc "bitLength < 2"
            invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 697
      StackMap locals:
      StackMap stack:
            iload 0 /* bitLength */
            bipush 95
            if_icmpge 4
         3: .line 698
            iload 0 /* bitLength */
            bipush 100
            aload 1 /* rnd */
            invokestatic java.math.BigInteger.smallPrime:(IILjava/util/Random;)Ljava/math/BigInteger;
            goto 5
         4: .line 699
      StackMap locals:
      StackMap stack:
            iload 0 /* bitLength */
            bipush 100
            aload 1 /* rnd */
            invokestatic java.math.BigInteger.largePrime:(IILjava/util/Random;)Ljava/math/BigInteger;
         5: .line 697
      StackMap locals:
      StackMap stack: java.math.BigInteger
            areturn
        end local 1 // java.util.Random rnd
        end local 0 // int bitLength
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0  bitLength  I
            0    6     1        rnd  Ljava/util/Random;
    MethodParameters:
           Name  Flags
      bitLength  
      rnd        

  private static java.math.BigInteger smallPrime(int, int, java.util.Random);
    descriptor: (IILjava/util/Random;)Ljava/math/BigInteger;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=10, args_size=3
        start local 0 // int bitLength
        start local 1 // int certainty
        start local 2 // java.util.Random rnd
         0: .line 710
            iload 0 /* bitLength */
            bipush 31
            iadd
            iconst_5
            iushr
            istore 3 /* magLen */
        start local 3 // int magLen
         1: .line 711
            iload 3 /* magLen */
            newarray 10
            astore 4 /* temp */
        start local 4 // int[] temp
         2: .line 712
            iconst_1
            iload 0 /* bitLength */
            bipush 31
            iadd
            bipush 31
            iand
            ishl
            istore 5 /* highBit */
        start local 5 // int highBit
         3: .line 713
            iload 5 /* highBit */
            iconst_1
            ishl
            iconst_1
            isub
            istore 6 /* highMask */
        start local 6 // int highMask
         4: .line 717
      StackMap locals: int int java.util.Random int int[] int int
      StackMap stack:
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         5: goto 8
         6: .line 718
      StackMap locals: int
      StackMap stack:
            aload 4 /* temp */
            iload 7 /* i */
            aload 2 /* rnd */
            invokevirtual java.util.Random.nextInt:()I
            iastore
         7: .line 717
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 7 /* i */
            iload 3 /* magLen */
            if_icmplt 6
        end local 7 // int i
         9: .line 719
            aload 4 /* temp */
            iconst_0
            aload 4 /* temp */
            iconst_0
            iaload
            iload 6 /* highMask */
            iand
            iload 5 /* highBit */
            ior
            iastore
        10: .line 720
            iload 0 /* bitLength */
            iconst_2
            if_icmple 12
        11: .line 721
            aload 4 /* temp */
            iload 3 /* magLen */
            iconst_1
            isub
            dup2
            iaload
            iconst_1
            ior
            iastore
        12: .line 723
      StackMap locals:
      StackMap stack:
            new java.math.BigInteger
            dup
            aload 4 /* temp */
            iconst_1
            invokespecial java.math.BigInteger.<init>:([II)V
            astore 7 /* p */
        start local 7 // java.math.BigInteger p
        13: .line 726
            iload 0 /* bitLength */
            bipush 6
            if_icmple 19
        14: .line 727
            aload 7 /* p */
            getstatic java.math.BigInteger.SMALL_PRIME_PRODUCT:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.remainder:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.longValue:()J
            lstore 8 /* r */
        start local 8 // long r
        15: .line 728
            lload 8 /* r */
            ldc 3
            lrem
            lconst_0
            lcmp
            ifeq 4
            lload 8 /* r */
            ldc 5
            lrem
            lconst_0
            lcmp
            ifeq 4
            lload 8 /* r */
            ldc 7
            lrem
            lconst_0
            lcmp
            ifeq 4
            lload 8 /* r */
            ldc 11
            lrem
            lconst_0
            lcmp
            ifeq 4
        16: .line 729
            lload 8 /* r */
            ldc 13
            lrem
            lconst_0
            lcmp
            ifeq 4
            lload 8 /* r */
            ldc 17
            lrem
            lconst_0
            lcmp
            ifeq 4
            lload 8 /* r */
            ldc 19
            lrem
            lconst_0
            lcmp
            ifeq 4
            lload 8 /* r */
            ldc 23
            lrem
            lconst_0
            lcmp
            ifeq 4
        17: .line 730
            lload 8 /* r */
            ldc 29
            lrem
            lconst_0
            lcmp
            ifeq 4
            lload 8 /* r */
            ldc 31
            lrem
            lconst_0
            lcmp
            ifeq 4
            lload 8 /* r */
            ldc 37
            lrem
            lconst_0
            lcmp
            ifeq 4
            lload 8 /* r */
            ldc 41
            lrem
            lconst_0
            lcmp
            ifne 19
        18: .line 731
            goto 4
        end local 8 // long r
        19: .line 735
      StackMap locals: java.math.BigInteger
      StackMap stack:
            iload 0 /* bitLength */
            iconst_4
            if_icmpge 21
        20: .line 736
            aload 7 /* p */
            areturn
        21: .line 739
      StackMap locals:
      StackMap stack:
            aload 7 /* p */
            iload 1 /* certainty */
            aload 2 /* rnd */
            invokevirtual java.math.BigInteger.primeToCertainty:(ILjava/util/Random;)Z
            ifeq 4
        22: .line 740
            aload 7 /* p */
            areturn
        end local 7 // java.math.BigInteger p
        end local 6 // int highMask
        end local 5 // int highBit
        end local 4 // int[] temp
        end local 3 // int magLen
        end local 2 // java.util.Random rnd
        end local 1 // int certainty
        end local 0 // int bitLength
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   23     0  bitLength  I
            0   23     1  certainty  I
            0   23     2        rnd  Ljava/util/Random;
            1   23     3     magLen  I
            2   23     4       temp  [I
            3   23     5    highBit  I
            4   23     6   highMask  I
            5    9     7          i  I
           13   23     7          p  Ljava/math/BigInteger;
           15   19     8          r  J
    MethodParameters:
           Name  Flags
      bitLength  
      certainty  
      rnd        

  private static java.math.BigInteger largePrime(int, int, java.util.Random);
    descriptor: (IILjava/util/Random;)Ljava/math/BigInteger;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // int bitLength
        start local 1 // int certainty
        start local 2 // java.util.Random rnd
         0: .line 755
            new java.math.BigInteger
            dup
            iload 0 /* bitLength */
            aload 2 /* rnd */
            invokespecial java.math.BigInteger.<init>:(ILjava/util/Random;)V
            iload 0 /* bitLength */
            iconst_1
            isub
            invokevirtual java.math.BigInteger.setBit:(I)Ljava/math/BigInteger;
            astore 3 /* p */
        start local 3 // java.math.BigInteger p
         1: .line 756
            aload 3 /* p */
            getfield java.math.BigInteger.mag:[I
            aload 3 /* p */
            getfield java.math.BigInteger.mag:[I
            arraylength
            iconst_1
            isub
            dup2
            iaload
            bipush -2
            iand
            iastore
         2: .line 759
            iload 0 /* bitLength */
            invokestatic java.math.BigInteger.getPrimeSearchLen:(I)I
            istore 4 /* searchLen */
        start local 4 // int searchLen
         3: .line 760
            new java.math.BitSieve
            dup
            aload 3 /* p */
            iload 4 /* searchLen */
            invokespecial java.math.BitSieve.<init>:(Ljava/math/BigInteger;I)V
            astore 5 /* searchSieve */
        start local 5 // java.math.BitSieve searchSieve
         4: .line 761
            aload 5 /* searchSieve */
            aload 3 /* p */
            iload 1 /* certainty */
            aload 2 /* rnd */
            invokevirtual java.math.BitSieve.retrieve:(Ljava/math/BigInteger;ILjava/util/Random;)Ljava/math/BigInteger;
            astore 6 /* candidate */
        start local 6 // java.math.BigInteger candidate
         5: .line 763
            goto 12
         6: .line 764
      StackMap locals: int int java.util.Random java.math.BigInteger int java.math.BitSieve java.math.BigInteger
      StackMap stack:
            aload 3 /* p */
            iconst_2
            iload 4 /* searchLen */
            imul
            i2l
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 3 /* p */
         7: .line 765
            aload 3 /* p */
            invokevirtual java.math.BigInteger.bitLength:()I
            iload 0 /* bitLength */
            if_icmpeq 9
         8: .line 766
            new java.math.BigInteger
            dup
            iload 0 /* bitLength */
            aload 2 /* rnd */
            invokespecial java.math.BigInteger.<init>:(ILjava/util/Random;)V
            iload 0 /* bitLength */
            iconst_1
            isub
            invokevirtual java.math.BigInteger.setBit:(I)Ljava/math/BigInteger;
            astore 3 /* p */
         9: .line 767
      StackMap locals:
      StackMap stack:
            aload 3 /* p */
            getfield java.math.BigInteger.mag:[I
            aload 3 /* p */
            getfield java.math.BigInteger.mag:[I
            arraylength
            iconst_1
            isub
            dup2
            iaload
            bipush -2
            iand
            iastore
        10: .line 768
            new java.math.BitSieve
            dup
            aload 3 /* p */
            iload 4 /* searchLen */
            invokespecial java.math.BitSieve.<init>:(Ljava/math/BigInteger;I)V
            astore 5 /* searchSieve */
        11: .line 769
            aload 5 /* searchSieve */
            aload 3 /* p */
            iload 1 /* certainty */
            aload 2 /* rnd */
            invokevirtual java.math.BitSieve.retrieve:(Ljava/math/BigInteger;ILjava/util/Random;)Ljava/math/BigInteger;
            astore 6 /* candidate */
        12: .line 763
      StackMap locals:
      StackMap stack:
            aload 6 /* candidate */
            ifnull 6
            aload 6 /* candidate */
            invokevirtual java.math.BigInteger.bitLength:()I
            iload 0 /* bitLength */
            if_icmpne 6
        13: .line 771
            aload 6 /* candidate */
            areturn
        end local 6 // java.math.BigInteger candidate
        end local 5 // java.math.BitSieve searchSieve
        end local 4 // int searchLen
        end local 3 // java.math.BigInteger p
        end local 2 // java.util.Random rnd
        end local 1 // int certainty
        end local 0 // int bitLength
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   14     0    bitLength  I
            0   14     1    certainty  I
            0   14     2          rnd  Ljava/util/Random;
            1   14     3            p  Ljava/math/BigInteger;
            3   14     4    searchLen  I
            4   14     5  searchSieve  Ljava/math/BitSieve;
            5   14     6    candidate  Ljava/math/BigInteger;
    MethodParameters:
           Name  Flags
      bitLength  
      certainty  
      rnd        

  public java.math.BigInteger nextProbablePrime();
    descriptor: ()Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 787
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifge 2
         1: .line 788
            new java.lang.ArithmeticException
            dup
            new java.lang.StringBuilder
            dup
            ldc "start < 0: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 791
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifeq 3
            aload 0 /* this */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 792
      StackMap locals:
      StackMap stack:
            getstatic java.math.BigInteger.TWO:Ljava/math/BigInteger;
            areturn
         4: .line 794
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 1 /* result */
        start local 1 // java.math.BigInteger result
         5: .line 797
            aload 1 /* result */
            invokevirtual java.math.BigInteger.bitLength:()I
            bipush 95
            if_icmpge 21
         6: .line 800
            aload 1 /* result */
            iconst_0
            invokevirtual java.math.BigInteger.testBit:(I)Z
            ifne 8
         7: .line 801
            aload 1 /* result */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 1 /* result */
         8: .line 805
      StackMap locals: java.math.BigInteger
      StackMap stack:
            aload 1 /* result */
            invokevirtual java.math.BigInteger.bitLength:()I
            bipush 6
            if_icmple 15
         9: .line 806
            aload 1 /* result */
            getstatic java.math.BigInteger.SMALL_PRIME_PRODUCT:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.remainder:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.longValue:()J
            lstore 2 /* r */
        start local 2 // long r
        10: .line 807
            lload 2 /* r */
            ldc 3
            lrem
            lconst_0
            lcmp
            ifeq 13
            lload 2 /* r */
            ldc 5
            lrem
            lconst_0
            lcmp
            ifeq 13
            lload 2 /* r */
            ldc 7
            lrem
            lconst_0
            lcmp
            ifeq 13
            lload 2 /* r */
            ldc 11
            lrem
            lconst_0
            lcmp
            ifeq 13
        11: .line 808
            lload 2 /* r */
            ldc 13
            lrem
            lconst_0
            lcmp
            ifeq 13
            lload 2 /* r */
            ldc 17
            lrem
            lconst_0
            lcmp
            ifeq 13
            lload 2 /* r */
            ldc 19
            lrem
            lconst_0
            lcmp
            ifeq 13
            lload 2 /* r */
            ldc 23
            lrem
            lconst_0
            lcmp
            ifeq 13
        12: .line 809
            lload 2 /* r */
            ldc 29
            lrem
            lconst_0
            lcmp
            ifeq 13
            lload 2 /* r */
            ldc 31
            lrem
            lconst_0
            lcmp
            ifeq 13
            lload 2 /* r */
            ldc 37
            lrem
            lconst_0
            lcmp
            ifeq 13
            lload 2 /* r */
            ldc 41
            lrem
            lconst_0
            lcmp
            ifne 15
        13: .line 810
      StackMap locals: long
      StackMap stack:
            aload 1 /* result */
            getstatic java.math.BigInteger.TWO:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 1 /* result */
        14: .line 811
            goto 8
        end local 2 // long r
        15: .line 816
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            invokevirtual java.math.BigInteger.bitLength:()I
            iconst_4
            if_icmpge 17
        16: .line 817
            aload 1 /* result */
            areturn
        17: .line 820
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            bipush 100
            aconst_null
            invokevirtual java.math.BigInteger.primeToCertainty:(ILjava/util/Random;)Z
            ifeq 19
        18: .line 821
            aload 1 /* result */
            areturn
        19: .line 823
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            getstatic java.math.BigInteger.TWO:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 1 /* result */
        20: .line 803
            goto 8
        21: .line 828
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            iconst_0
            invokevirtual java.math.BigInteger.testBit:(I)Z
            ifeq 23
        22: .line 829
            aload 1 /* result */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 1 /* result */
        23: .line 832
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            invokevirtual java.math.BigInteger.bitLength:()I
            invokestatic java.math.BigInteger.getPrimeSearchLen:(I)I
            istore 2 /* searchLen */
        start local 2 // int searchLen
        24: .line 835
      StackMap locals: int
      StackMap stack:
            new java.math.BitSieve
            dup
            aload 1 /* result */
            iload 2 /* searchLen */
            invokespecial java.math.BitSieve.<init>:(Ljava/math/BigInteger;I)V
            astore 3 /* searchSieve */
        start local 3 // java.math.BitSieve searchSieve
        25: .line 836
            aload 3 /* searchSieve */
            aload 1 /* result */
        26: .line 837
            bipush 100
            aconst_null
        27: .line 836
            invokevirtual java.math.BitSieve.retrieve:(Ljava/math/BigInteger;ILjava/util/Random;)Ljava/math/BigInteger;
            astore 4 /* candidate */
        start local 4 // java.math.BigInteger candidate
        28: .line 838
            aload 4 /* candidate */
            ifnull 30
        29: .line 839
            aload 4 /* candidate */
            areturn
        30: .line 840
      StackMap locals: java.math.BitSieve java.math.BigInteger
      StackMap stack:
            aload 1 /* result */
            iconst_2
            iload 2 /* searchLen */
            imul
            i2l
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 1 /* result */
        end local 4 // java.math.BigInteger candidate
        end local 3 // java.math.BitSieve searchSieve
        31: .line 834
            goto 24
        end local 2 // int searchLen
        end local 1 // java.math.BigInteger result
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   32     0         this  Ljava/math/BigInteger;
            5   32     1       result  Ljava/math/BigInteger;
           10   15     2            r  J
           24   32     2    searchLen  I
           25   31     3  searchSieve  Ljava/math/BitSieve;
           28   31     4    candidate  Ljava/math/BigInteger;

  private static int getPrimeSearchLen(int);
    descriptor: (I)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // int bitLength
         0: .line 845
            iload 0 /* bitLength */
            ldc 500000001
            if_icmple 2
         1: .line 846
            new java.lang.ArithmeticException
            dup
            ldc "Prime search implementation restriction on bitLength"
            invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 848
      StackMap locals:
      StackMap stack:
            iload 0 /* bitLength */
            bipush 20
            idiv
            bipush 64
            imul
            ireturn
        end local 0 // int bitLength
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0  bitLength  I
    MethodParameters:
           Name  Flags
      bitLength  

  boolean primeToCertainty(int, java.util.Random);
    descriptor: (ILjava/util/Random;)Z
    flags: (0x0000) 
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // java.math.BigInteger this
        start local 1 // int certainty
        start local 2 // java.util.Random random
         0: .line 866
            iconst_0
            istore 3 /* rounds */
        start local 3 // int rounds
         1: .line 867
            iload 1 /* certainty */
            ldc 2147483646
            invokestatic java.lang.Math.min:(II)I
            iconst_1
            iadd
            iconst_2
            idiv
            istore 4 /* n */
        start local 4 // int n
         2: .line 872
            aload 0 /* this */
            invokevirtual java.math.BigInteger.bitLength:()I
            istore 5 /* sizeInBits */
        start local 5 // int sizeInBits
         3: .line 873
            iload 5 /* sizeInBits */
            bipush 100
            if_icmpge 9
         4: .line 874
            bipush 50
            istore 3 /* rounds */
         5: .line 875
            iload 4 /* n */
            iload 3 /* rounds */
            if_icmpge 6
            iload 4 /* n */
            goto 7
      StackMap locals: int int int
      StackMap stack:
         6: iload 3 /* rounds */
      StackMap locals:
      StackMap stack: int
         7: istore 3 /* rounds */
         8: .line 876
            aload 0 /* this */
            iload 3 /* rounds */
            aload 2 /* random */
            invokevirtual java.math.BigInteger.passesMillerRabin:(ILjava/util/Random;)Z
            ireturn
         9: .line 879
      StackMap locals:
      StackMap stack:
            iload 5 /* sizeInBits */
            sipush 256
            if_icmpge 12
        10: .line 880
            bipush 27
            istore 3 /* rounds */
        11: .line 881
            goto 22
      StackMap locals:
      StackMap stack:
        12: iload 5 /* sizeInBits */
            sipush 512
            if_icmpge 15
        13: .line 882
            bipush 15
            istore 3 /* rounds */
        14: .line 883
            goto 22
      StackMap locals:
      StackMap stack:
        15: iload 5 /* sizeInBits */
            sipush 768
            if_icmpge 18
        16: .line 884
            bipush 8
            istore 3 /* rounds */
        17: .line 885
            goto 22
      StackMap locals:
      StackMap stack:
        18: iload 5 /* sizeInBits */
            sipush 1024
            if_icmpge 21
        19: .line 886
            iconst_4
            istore 3 /* rounds */
        20: .line 887
            goto 22
        21: .line 888
      StackMap locals:
      StackMap stack:
            iconst_2
            istore 3 /* rounds */
        22: .line 890
      StackMap locals:
      StackMap stack:
            iload 4 /* n */
            iload 3 /* rounds */
            if_icmpge 23
            iload 4 /* n */
            goto 24
      StackMap locals:
      StackMap stack:
        23: iload 3 /* rounds */
      StackMap locals:
      StackMap stack: int
        24: istore 3 /* rounds */
        25: .line 892
            aload 0 /* this */
            iload 3 /* rounds */
            aload 2 /* random */
            invokevirtual java.math.BigInteger.passesMillerRabin:(ILjava/util/Random;)Z
            ifeq 26
            aload 0 /* this */
            invokevirtual java.math.BigInteger.passesLucasLehmer:()Z
            ifeq 26
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
        26: iconst_0
            ireturn
        end local 5 // int sizeInBits
        end local 4 // int n
        end local 3 // int rounds
        end local 2 // java.util.Random random
        end local 1 // int certainty
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   27     0        this  Ljava/math/BigInteger;
            0   27     1   certainty  I
            0   27     2      random  Ljava/util/Random;
            1   27     3      rounds  I
            2   27     4           n  I
            3   27     5  sizeInBits  I
    MethodParameters:
           Name  Flags
      certainty  
      random     

  private boolean passesLucasLehmer();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 902
            aload 0 /* this */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 1 /* thisPlusOne */
        start local 1 // java.math.BigInteger thisPlusOne
         1: .line 905
            iconst_5
            istore 2 /* d */
        start local 2 // int d
         2: .line 906
            goto 6
         3: .line 908
      StackMap locals: java.math.BigInteger int
      StackMap stack:
            iload 2 /* d */
            ifge 4
            iload 2 /* d */
            invokestatic java.lang.Math.abs:(I)I
            iconst_2
            iadd
            goto 5
      StackMap locals:
      StackMap stack:
         4: iload 2 /* d */
            iconst_2
            iadd
            ineg
      StackMap locals:
      StackMap stack: int
         5: istore 2 /* d */
         6: .line 906
      StackMap locals:
      StackMap stack:
            iload 2 /* d */
            aload 0 /* this */
            invokestatic java.math.BigInteger.jacobiSymbol:(ILjava/math/BigInteger;)I
            iconst_m1
            if_icmpne 3
         7: .line 912
            iload 2 /* d */
            aload 1 /* thisPlusOne */
            aload 0 /* this */
            invokestatic java.math.BigInteger.lucasLehmerSequence:(ILjava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 3 /* u */
        start local 3 // java.math.BigInteger u
         8: .line 915
            aload 3 /* u */
            aload 0 /* this */
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ireturn
        end local 3 // java.math.BigInteger u
        end local 2 // int d
        end local 1 // java.math.BigInteger thisPlusOne
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    9     0         this  Ljava/math/BigInteger;
            1    9     1  thisPlusOne  Ljava/math/BigInteger;
            2    9     2            d  I
            8    9     3            u  Ljava/math/BigInteger;

  private static int jacobiSymbol(int, java.math.BigInteger);
    descriptor: (ILjava/math/BigInteger;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // int p
        start local 1 // java.math.BigInteger n
         0: .line 923
            iload 0 /* p */
            ifne 2
         1: .line 924
            iconst_0
            ireturn
         2: .line 927
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 2 /* j */
        start local 2 // int j
         3: .line 928
            aload 1 /* n */
            getfield java.math.BigInteger.mag:[I
            aload 1 /* n */
            getfield java.math.BigInteger.mag:[I
            arraylength
            iconst_1
            isub
            iaload
            istore 3 /* u */
        start local 3 // int u
         4: .line 931
            iload 0 /* p */
            ifge 11
         5: .line 932
            iload 0 /* p */
            ineg
            istore 0 /* p */
         6: .line 933
            iload 3 /* u */
            bipush 7
            iand
            istore 4 /* n8 */
        start local 4 // int n8
         7: .line 934
            iload 4 /* n8 */
            iconst_3
            if_icmpeq 8
            iload 4 /* n8 */
            bipush 7
            if_icmpne 11
         8: .line 935
      StackMap locals: int int int
      StackMap stack:
            iload 2 /* j */
            ineg
            istore 2 /* j */
        end local 4 // int n8
         9: .line 939
            goto 11
        10: .line 940
      StackMap locals:
      StackMap stack:
            iload 0 /* p */
            iconst_2
            ishr
            istore 0 /* p */
        11: .line 939
      StackMap locals:
      StackMap stack:
            iload 0 /* p */
            iconst_3
            iand
            ifeq 10
        12: .line 941
            iload 0 /* p */
            iconst_1
            iand
            ifne 16
        13: .line 942
            iload 0 /* p */
            iconst_1
            ishr
            istore 0 /* p */
        14: .line 943
            iload 3 /* u */
            iload 3 /* u */
            iconst_1
            ishr
            ixor
            iconst_2
            iand
            ifeq 16
        15: .line 944
            iload 2 /* j */
            ineg
            istore 2 /* j */
        16: .line 946
      StackMap locals:
      StackMap stack:
            iload 0 /* p */
            iconst_1
            if_icmpne 18
        17: .line 947
            iload 2 /* j */
            ireturn
        18: .line 949
      StackMap locals:
      StackMap stack:
            iload 0 /* p */
            iload 3 /* u */
            iand
            iconst_2
            iand
            ifeq 20
        19: .line 950
            iload 2 /* j */
            ineg
            istore 2 /* j */
        20: .line 952
      StackMap locals:
      StackMap stack:
            aload 1 /* n */
            iload 0 /* p */
            i2l
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.intValue:()I
            istore 3 /* u */
        21: .line 955
            goto 36
        22: .line 957
      StackMap locals:
      StackMap stack:
            iload 3 /* u */
            iconst_2
            ishr
            istore 3 /* u */
        23: .line 956
      StackMap locals:
      StackMap stack:
            iload 3 /* u */
            iconst_3
            iand
            ifeq 22
        24: .line 958
            iload 3 /* u */
            iconst_1
            iand
            ifne 28
        25: .line 959
            iload 3 /* u */
            iconst_1
            ishr
            istore 3 /* u */
        26: .line 960
            iload 0 /* p */
            iload 0 /* p */
            iconst_1
            ishr
            ixor
            iconst_2
            iand
            ifeq 28
        27: .line 961
            iload 2 /* j */
            ineg
            istore 2 /* j */
        28: .line 963
      StackMap locals:
      StackMap stack:
            iload 3 /* u */
            iconst_1
            if_icmpne 30
        29: .line 964
            iload 2 /* j */
            ireturn
        30: .line 966
      StackMap locals:
      StackMap stack:
            getstatic java.math.BigInteger.$assertionsDisabled:Z
            ifne 31
            iload 3 /* u */
            iload 0 /* p */
            if_icmplt 31
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        31: .line 967
      StackMap locals:
      StackMap stack:
            iload 3 /* u */
            istore 4 /* t */
        start local 4 // int t
        32: iload 0 /* p */
            istore 3 /* u */
            iload 4 /* t */
            istore 0 /* p */
        33: .line 968
            iload 3 /* u */
            iload 0 /* p */
            iand
            iconst_2
            iand
            ifeq 35
        34: .line 969
            iload 2 /* j */
            ineg
            istore 2 /* j */
        35: .line 971
      StackMap locals: int
      StackMap stack:
            iload 3 /* u */
            iload 0 /* p */
            irem
            istore 3 /* u */
        end local 4 // int t
        36: .line 955
      StackMap locals:
      StackMap stack:
            iload 3 /* u */
            ifne 23
        37: .line 973
            iconst_0
            ireturn
        end local 3 // int u
        end local 2 // int j
        end local 1 // java.math.BigInteger n
        end local 0 // int p
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   38     0     p  I
            0   38     1     n  Ljava/math/BigInteger;
            3   38     2     j  I
            4   38     3     u  I
            7    9     4    n8  I
           32   36     4     t  I
    MethodParameters:
      Name  Flags
      p     
      n     

  private static java.math.BigInteger lucasLehmerSequence(int, java.math.BigInteger, java.math.BigInteger);
    descriptor: (ILjava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=9, args_size=3
        start local 0 // int z
        start local 1 // java.math.BigInteger k
        start local 2 // java.math.BigInteger n
         0: .line 977
            iload 0 /* z */
            i2l
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            astore 3 /* d */
        start local 3 // java.math.BigInteger d
         1: .line 978
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            astore 4 /* u */
        start local 4 // java.math.BigInteger u
         2: .line 979
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            astore 6 /* v */
        start local 6 // java.math.BigInteger v
         3: .line 981
            aload 1 /* k */
            invokevirtual java.math.BigInteger.bitLength:()I
            iconst_2
            isub
            istore 8 /* i */
        start local 8 // int i
         4: goto 22
         5: .line 982
      StackMap locals: int java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger top java.math.BigInteger top int
      StackMap stack:
            aload 4 /* u */
            aload 6 /* v */
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 2 /* n */
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 5 /* u2 */
        start local 5 // java.math.BigInteger u2
         6: .line 984
            aload 6 /* v */
            invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
            aload 3 /* d */
            aload 4 /* u */
            invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 2 /* n */
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 7 /* v2 */
        start local 7 // java.math.BigInteger v2
         7: .line 985
            aload 7 /* v2 */
            iconst_0
            invokevirtual java.math.BigInteger.testBit:(I)Z
            ifeq 9
         8: .line 986
            aload 7 /* v2 */
            aload 2 /* n */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 7 /* v2 */
         9: .line 988
      StackMap locals: int java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger int
      StackMap stack:
            aload 7 /* v2 */
            iconst_1
            invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
            astore 7 /* v2 */
        10: .line 990
            aload 5 /* u2 */
            astore 4 /* u */
            aload 7 /* v2 */
            astore 6 /* v */
        11: .line 991
            aload 1 /* k */
            iload 8 /* i */
            invokevirtual java.math.BigInteger.testBit:(I)Z
            ifeq 21
        12: .line 992
            aload 4 /* u */
            aload 6 /* v */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 2 /* n */
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 5 /* u2 */
        13: .line 993
            aload 5 /* u2 */
            iconst_0
            invokevirtual java.math.BigInteger.testBit:(I)Z
            ifeq 15
        14: .line 994
            aload 5 /* u2 */
            aload 2 /* n */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 5 /* u2 */
        15: .line 996
      StackMap locals:
      StackMap stack:
            aload 5 /* u2 */
            iconst_1
            invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
            astore 5 /* u2 */
        16: .line 997
            aload 6 /* v */
            aload 3 /* d */
            aload 4 /* u */
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 2 /* n */
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 7 /* v2 */
        17: .line 998
            aload 7 /* v2 */
            iconst_0
            invokevirtual java.math.BigInteger.testBit:(I)Z
            ifeq 19
        18: .line 999
            aload 7 /* v2 */
            aload 2 /* n */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 7 /* v2 */
        19: .line 1000
      StackMap locals:
      StackMap stack:
            aload 7 /* v2 */
            iconst_1
            invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
            astore 7 /* v2 */
        20: .line 1002
            aload 5 /* u2 */
            astore 4 /* u */
            aload 7 /* v2 */
            astore 6 /* v */
        21: .line 981
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ -1
        end local 7 // java.math.BigInteger v2
        end local 5 // java.math.BigInteger u2
      StackMap locals: int java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger top java.math.BigInteger top int
      StackMap stack:
        22: iload 8 /* i */
            ifge 5
        end local 8 // int i
        23: .line 1005
            aload 4 /* u */
            areturn
        end local 6 // java.math.BigInteger v
        end local 4 // java.math.BigInteger u
        end local 3 // java.math.BigInteger d
        end local 2 // java.math.BigInteger n
        end local 1 // java.math.BigInteger k
        end local 0 // int z
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   24     0     z  I
            0   24     1     k  Ljava/math/BigInteger;
            0   24     2     n  Ljava/math/BigInteger;
            1   24     3     d  Ljava/math/BigInteger;
            2   24     4     u  Ljava/math/BigInteger;
            6   22     5    u2  Ljava/math/BigInteger;
            3   24     6     v  Ljava/math/BigInteger;
            7   22     7    v2  Ljava/math/BigInteger;
            4   23     8     i  I
    MethodParameters:
      Name  Flags
      z     
      k     
      n     

  private boolean passesMillerRabin(int, java.util.Random);
    descriptor: (ILjava/util/Random;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=10, args_size=3
        start local 0 // java.math.BigInteger this
        start local 1 // int iterations
        start local 2 // java.util.Random rnd
         0: .line 1019
            aload 0 /* this */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 3 /* thisMinusOne */
        start local 3 // java.math.BigInteger thisMinusOne
         1: .line 1020
            aload 3 /* thisMinusOne */
            astore 4 /* m */
        start local 4 // java.math.BigInteger m
         2: .line 1021
            aload 4 /* m */
            invokevirtual java.math.BigInteger.getLowestSetBit:()I
            istore 5 /* a */
        start local 5 // int a
         3: .line 1022
            aload 4 /* m */
            iload 5 /* a */
            invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
            astore 4 /* m */
         4: .line 1025
            aload 2 /* rnd */
            ifnonnull 6
         5: .line 1026
            invokestatic java.util.concurrent.ThreadLocalRandom.current:()Ljava/util/concurrent/ThreadLocalRandom;
            astore 2 /* rnd */
         6: .line 1028
      StackMap locals: java.math.BigInteger java.math.BigInteger int
      StackMap stack:
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         7: goto 21
         8: .line 1032
      StackMap locals: int
      StackMap stack:
            new java.math.BigInteger
            dup
            aload 0 /* this */
            invokevirtual java.math.BigInteger.bitLength:()I
            aload 2 /* rnd */
            invokespecial java.math.BigInteger.<init>:(ILjava/util/Random;)V
            astore 7 /* b */
        start local 7 // java.math.BigInteger b
         9: .line 1033
            aload 7 /* b */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
            ifle 8
            aload 7 /* b */
            aload 0 /* this */
            invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
        10: .line 1031
            ifge 8
        11: .line 1035
            iconst_0
            istore 8 /* j */
        start local 8 // int j
        12: .line 1036
            aload 7 /* b */
            aload 4 /* m */
            aload 0 /* this */
            invokevirtual java.math.BigInteger.modPow:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 9 /* z */
        start local 9 // java.math.BigInteger z
        13: .line 1037
            goto 18
        14: .line 1038
      StackMap locals: java.math.BigInteger int java.math.BigInteger
      StackMap stack:
            iload 8 /* j */
            ifle 15
            aload 9 /* z */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifne 16
      StackMap locals:
      StackMap stack:
        15: iinc 8 /* j */ 1
            iload 8 /* j */
            iload 5 /* a */
            if_icmpne 17
        16: .line 1039
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        17: .line 1040
      StackMap locals:
      StackMap stack:
            aload 9 /* z */
            getstatic java.math.BigInteger.TWO:Ljava/math/BigInteger;
            aload 0 /* this */
            invokevirtual java.math.BigInteger.modPow:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 9 /* z */
        18: .line 1037
      StackMap locals:
      StackMap stack:
            iload 8 /* j */
            ifne 19
            aload 9 /* z */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifne 20
      StackMap locals:
      StackMap stack:
        19: aload 9 /* z */
            aload 3 /* thisMinusOne */
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifeq 14
        end local 9 // java.math.BigInteger z
        end local 8 // int j
        end local 7 // java.math.BigInteger b
        20: .line 1028
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        21: iload 6 /* i */
            iload 1 /* iterations */
            if_icmplt 8
        end local 6 // int i
        22: .line 1043
            iconst_1
            ireturn
        end local 5 // int a
        end local 4 // java.math.BigInteger m
        end local 3 // java.math.BigInteger thisMinusOne
        end local 2 // java.util.Random rnd
        end local 1 // int iterations
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   23     0          this  Ljava/math/BigInteger;
            0   23     1    iterations  I
            0   23     2           rnd  Ljava/util/Random;
            1   23     3  thisMinusOne  Ljava/math/BigInteger;
            2   23     4             m  Ljava/math/BigInteger;
            3   23     5             a  I
            7   22     6             i  I
            9   20     7             b  Ljava/math/BigInteger;
           12   20     8             j  I
           13   20     9             z  Ljava/math/BigInteger;
    MethodParameters:
            Name  Flags
      iterations  
      rnd         

  void <init>(int[], int);
    descriptor: ([II)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // java.math.BigInteger this
        start local 1 // int[] magnitude
        start local 2 // int signum
         0: .line 1051
            aload 0 /* this */
            invokespecial java.lang.Number.<init>:()V
         1: .line 1052
            aload 0 /* this */
            aload 1 /* magnitude */
            arraylength
            ifne 2
            iconst_0
            goto 3
      StackMap locals: java.math.BigInteger int[] int
      StackMap stack: java.math.BigInteger
         2: iload 2 /* signum */
      StackMap locals: java.math.BigInteger int[] int
      StackMap stack: java.math.BigInteger int
         3: putfield java.math.BigInteger.signum:I
         4: .line 1053
            aload 0 /* this */
            aload 1 /* magnitude */
            putfield java.math.BigInteger.mag:[I
         5: .line 1054
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            ldc 67108864
            if_icmplt 7
         6: .line 1055
            aload 0 /* this */
            invokevirtual java.math.BigInteger.checkRange:()V
         7: .line 1057
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int signum
        end local 1 // int[] magnitude
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Ljava/math/BigInteger;
            0    8     1  magnitude  [I
            0    8     2     signum  I
    MethodParameters:
           Name  Flags
      magnitude  
      signum     

  private void <init>(byte[], int);
    descriptor: ([BI)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // java.math.BigInteger this
        start local 1 // byte[] magnitude
        start local 2 // int signum
         0: .line 1063
            aload 0 /* this */
            invokespecial java.lang.Number.<init>:()V
         1: .line 1064
            aload 0 /* this */
            aload 1 /* magnitude */
            arraylength
            ifne 2
            iconst_0
            goto 3
      StackMap locals: java.math.BigInteger byte[] int
      StackMap stack: java.math.BigInteger
         2: iload 2 /* signum */
      StackMap locals: java.math.BigInteger byte[] int
      StackMap stack: java.math.BigInteger int
         3: putfield java.math.BigInteger.signum:I
         4: .line 1065
            aload 0 /* this */
            aload 1 /* magnitude */
            invokestatic java.math.BigInteger.stripLeadingZeroBytes:([B)[I
            putfield java.math.BigInteger.mag:[I
         5: .line 1066
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            ldc 67108864
            if_icmplt 7
         6: .line 1067
            aload 0 /* this */
            invokevirtual java.math.BigInteger.checkRange:()V
         7: .line 1069
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int signum
        end local 1 // byte[] magnitude
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Ljava/math/BigInteger;
            0    8     1  magnitude  [B
            0    8     2     signum  I
    MethodParameters:
           Name  Flags
      magnitude  
      signum     

  private void checkRange();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 1078
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            ldc 67108864
            if_icmpgt 1
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            ldc 67108864
            if_icmpne 2
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_0
            iaload
            ifge 2
         1: .line 1079
      StackMap locals:
      StackMap stack:
            invokestatic java.math.BigInteger.reportOverflow:()V
         2: .line 1081
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljava/math/BigInteger;

  private static void reportOverflow();
    descriptor: ()V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 1084
            new java.lang.ArithmeticException
            dup
            ldc "BigInteger would overflow supported range"
            invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static java.math.BigInteger valueOf(long);
    descriptor: (J)Ljava/math/BigInteger;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // long val
         0: .line 1100
            lload 0 /* val */
            lconst_0
            lcmp
            ifne 2
         1: .line 1101
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            areturn
         2: .line 1102
      StackMap locals:
      StackMap stack:
            lload 0 /* val */
            lconst_0
            lcmp
            ifle 4
            lload 0 /* val */
            ldc 16
            lcmp
            ifgt 4
         3: .line 1103
            getstatic java.math.BigInteger.posConst:[Ljava/math/BigInteger;
            lload 0 /* val */
            l2i
            aaload
            areturn
         4: .line 1104
      StackMap locals:
      StackMap stack:
            lload 0 /* val */
            lconst_0
            lcmp
            ifge 6
            lload 0 /* val */
            ldc -16
            lcmp
            iflt 6
         5: .line 1105
            getstatic java.math.BigInteger.negConst:[Ljava/math/BigInteger;
            lload 0 /* val */
            lneg
            l2i
            aaload
            areturn
         6: .line 1107
      StackMap locals:
      StackMap stack:
            new java.math.BigInteger
            dup
            lload 0 /* val */
            invokespecial java.math.BigInteger.<init>:(J)V
            areturn
        end local 0 // long val
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0   val  J
    MethodParameters:
      Name  Flags
      val   

  private void <init>(long);
    descriptor: (J)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // long val
         0: .line 1113
            aload 0 /* this */
            invokespecial java.lang.Number.<init>:()V
         1: .line 1114
            lload 1 /* val */
            lconst_0
            lcmp
            ifge 5
         2: .line 1115
            lload 1 /* val */
            lneg
            lstore 1 /* val */
         3: .line 1116
            aload 0 /* this */
            iconst_m1
            putfield java.math.BigInteger.signum:I
         4: .line 1117
            goto 6
         5: .line 1118
      StackMap locals: java.math.BigInteger long
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield java.math.BigInteger.signum:I
         6: .line 1121
      StackMap locals:
      StackMap stack:
            lload 1 /* val */
            bipush 32
            lushr
            l2i
            istore 3 /* highWord */
        start local 3 // int highWord
         7: .line 1122
            iload 3 /* highWord */
            ifne 11
         8: .line 1123
            aload 0 /* this */
            iconst_1
            newarray 10
            putfield java.math.BigInteger.mag:[I
         9: .line 1124
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_0
            lload 1 /* val */
            l2i
            iastore
        10: .line 1125
            goto 14
        11: .line 1126
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iconst_2
            newarray 10
            putfield java.math.BigInteger.mag:[I
        12: .line 1127
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_0
            iload 3 /* highWord */
            iastore
        13: .line 1128
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_1
            lload 1 /* val */
            l2i
            iastore
        14: .line 1130
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int highWord
        end local 1 // long val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   15     0      this  Ljava/math/BigInteger;
            0   15     1       val  J
            7   15     3  highWord  I
    MethodParameters:
      Name  Flags
      val   

  private static java.math.BigInteger valueOf(int[]);
    descriptor: ([I)Ljava/math/BigInteger;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // int[] val
         0: .line 1138
            aload 0 /* val */
            iconst_0
            iaload
            ifle 1
            new java.math.BigInteger
            dup
            aload 0 /* val */
            iconst_1
            invokespecial java.math.BigInteger.<init>:([II)V
            goto 2
      StackMap locals:
      StackMap stack:
         1: new java.math.BigInteger
            dup
            aload 0 /* val */
            invokespecial java.math.BigInteger.<init>:([I)V
      StackMap locals:
      StackMap stack: java.math.BigInteger
         2: areturn
        end local 0 // int[] val
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0   val  [I
    MethodParameters:
      Name  Flags
      val   

  public java.math.BigInteger add(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 1233
            aload 1 /* val */
            getfield java.math.BigInteger.signum:I
            ifne 2
         1: .line 1234
            aload 0 /* this */
            areturn
         2: .line 1235
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifne 4
         3: .line 1236
            aload 1 /* val */
            areturn
         4: .line 1237
      StackMap locals:
      StackMap stack:
            aload 1 /* val */
            getfield java.math.BigInteger.signum:I
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            if_icmpne 6
         5: .line 1238
            new java.math.BigInteger
            dup
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            invokestatic java.math.BigInteger.add:([I[I)[I
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            invokespecial java.math.BigInteger.<init>:([II)V
            areturn
         6: .line 1240
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* val */
            invokevirtual java.math.BigInteger.compareMagnitude:(Ljava/math/BigInteger;)I
            istore 2 /* cmp */
        start local 2 // int cmp
         7: .line 1241
            iload 2 /* cmp */
            ifne 9
         8: .line 1242
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            areturn
         9: .line 1243
      StackMap locals: int
      StackMap stack:
            iload 2 /* cmp */
            ifle 10
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            invokestatic java.math.BigInteger.subtract:([I[I)[I
            goto 11
        10: .line 1244
      StackMap locals:
      StackMap stack:
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            invokestatic java.math.BigInteger.subtract:([I[I)[I
        11: .line 1243
      StackMap locals:
      StackMap stack: int[]
            astore 3 /* resultMag */
        start local 3 // int[] resultMag
        12: .line 1245
            aload 3 /* resultMag */
            invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
            astore 3 /* resultMag */
        13: .line 1247
            new java.math.BigInteger
            dup
            aload 3 /* resultMag */
            iload 2 /* cmp */
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            if_icmpne 14
            iconst_1
            goto 15
      StackMap locals: java.math.BigInteger java.math.BigInteger int int[]
      StackMap stack: new 13 new 13 int[]
        14: iconst_m1
      StackMap locals: java.math.BigInteger java.math.BigInteger int int[]
      StackMap stack: new 13 new 13 int[] int
        15: invokespecial java.math.BigInteger.<init>:([II)V
            areturn
        end local 3 // int[] resultMag
        end local 2 // int cmp
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   16     0       this  Ljava/math/BigInteger;
            0   16     1        val  Ljava/math/BigInteger;
            7   16     2        cmp  I
           12   16     3  resultMag  [I
    MethodParameters:
      Name  Flags
      val   

  java.math.BigInteger add(long);
    descriptor: (J)Ljava/math/BigInteger;
    flags: (0x0000) 
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // long val
         0: .line 1255
            lload 1 /* val */
            lconst_0
            lcmp
            ifne 2
         1: .line 1256
            aload 0 /* this */
            areturn
         2: .line 1257
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifne 4
         3: .line 1258
            lload 1 /* val */
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            areturn
         4: .line 1259
      StackMap locals:
      StackMap stack:
            lload 1 /* val */
            invokestatic java.lang.Long.signum:(J)I
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            if_icmpne 6
         5: .line 1260
            new java.math.BigInteger
            dup
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            lload 1 /* val */
            invokestatic java.lang.Math.abs:(J)J
            invokestatic java.math.BigInteger.add:([IJ)[I
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            invokespecial java.math.BigInteger.<init>:([II)V
            areturn
         6: .line 1261
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lload 1 /* val */
            invokevirtual java.math.BigInteger.compareMagnitude:(J)I
            istore 3 /* cmp */
        start local 3 // int cmp
         7: .line 1262
            iload 3 /* cmp */
            ifne 9
         8: .line 1263
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            areturn
         9: .line 1264
      StackMap locals: int
      StackMap stack:
            iload 3 /* cmp */
            ifle 10
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            lload 1 /* val */
            invokestatic java.lang.Math.abs:(J)J
            invokestatic java.math.BigInteger.subtract:([IJ)[I
            goto 11
      StackMap locals:
      StackMap stack:
        10: lload 1 /* val */
            invokestatic java.lang.Math.abs:(J)J
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            invokestatic java.math.BigInteger.subtract:(J[I)[I
      StackMap locals:
      StackMap stack: int[]
        11: astore 4 /* resultMag */
        start local 4 // int[] resultMag
        12: .line 1265
            aload 4 /* resultMag */
            invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
            astore 4 /* resultMag */
        13: .line 1266
            new java.math.BigInteger
            dup
            aload 4 /* resultMag */
            iload 3 /* cmp */
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            if_icmpne 14
            iconst_1
            goto 15
      StackMap locals: java.math.BigInteger long int int[]
      StackMap stack: new 13 new 13 int[]
        14: iconst_m1
      StackMap locals: java.math.BigInteger long int int[]
      StackMap stack: new 13 new 13 int[] int
        15: invokespecial java.math.BigInteger.<init>:([II)V
            areturn
        end local 4 // int[] resultMag
        end local 3 // int cmp
        end local 1 // long val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   16     0       this  Ljava/math/BigInteger;
            0   16     1        val  J
            7   16     3        cmp  I
           12   16     4  resultMag  [I
    MethodParameters:
      Name  Flags
      val   

  private static int[] add(int[], long);
    descriptor: ([IJ)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=10, args_size=2
        start local 0 // int[] x
        start local 1 // long val
         0: .line 1277
            lconst_0
            lstore 3 /* sum */
        start local 3 // long sum
         1: .line 1278
            aload 0 /* x */
            arraylength
            istore 5 /* xIndex */
        start local 5 // int xIndex
         2: .line 1280
            lload 1 /* val */
            bipush 32
            lushr
            l2i
            istore 7 /* highWord */
        start local 7 // int highWord
         3: .line 1281
            iload 7 /* highWord */
            ifne 8
         4: .line 1282
            iload 5 /* xIndex */
            newarray 10
            astore 6 /* result */
        start local 6 // int[] result
         5: .line 1283
            aload 0 /* x */
            iinc 5 /* xIndex */ -1
            iload 5 /* xIndex */
            iaload
            i2l
            ldc 4294967295
            land
            lload 1 /* val */
            ladd
            lstore 3 /* sum */
         6: .line 1284
            aload 6 /* result */
            iload 5 /* xIndex */
            lload 3 /* sum */
            l2i
            iastore
         7: .line 1285
            goto 19
        end local 6 // int[] result
         8: .line 1286
      StackMap locals: int[] long long int top int
      StackMap stack:
            iload 5 /* xIndex */
            iconst_1
            if_icmpne 14
         9: .line 1287
            iconst_2
            newarray 10
            astore 6 /* result */
        start local 6 // int[] result
        10: .line 1288
            lload 1 /* val */
            aload 0 /* x */
            iconst_0
            iaload
            i2l
            ldc 4294967295
            land
            ladd
            lstore 3 /* sum */
        11: .line 1289
            aload 6 /* result */
            iconst_1
            lload 3 /* sum */
            l2i
            iastore
        12: .line 1290
            aload 6 /* result */
            iconst_0
            lload 3 /* sum */
            bipush 32
            lushr
            l2i
            iastore
        13: .line 1291
            aload 6 /* result */
            areturn
        end local 6 // int[] result
        14: .line 1293
      StackMap locals:
      StackMap stack:
            iload 5 /* xIndex */
            newarray 10
            astore 6 /* result */
        start local 6 // int[] result
        15: .line 1294
            aload 0 /* x */
            iinc 5 /* xIndex */ -1
            iload 5 /* xIndex */
            iaload
            i2l
            ldc 4294967295
            land
            lload 1 /* val */
            ldc 4294967295
            land
            ladd
            lstore 3 /* sum */
        16: .line 1295
            aload 6 /* result */
            iload 5 /* xIndex */
            lload 3 /* sum */
            l2i
            iastore
        17: .line 1296
            aload 0 /* x */
            iinc 5 /* xIndex */ -1
            iload 5 /* xIndex */
            iaload
            i2l
            ldc 4294967295
            land
            iload 7 /* highWord */
            i2l
            ldc 4294967295
            land
            ladd
            lload 3 /* sum */
            bipush 32
            lushr
            ladd
            lstore 3 /* sum */
        18: .line 1297
            aload 6 /* result */
            iload 5 /* xIndex */
            lload 3 /* sum */
            l2i
            iastore
        19: .line 1301
      StackMap locals: int[] long long int int[] int
      StackMap stack:
            lload 3 /* sum */
            bipush 32
            lushr
            lconst_0
            lcmp
            ifeq 20
            iconst_1
            goto 21
      StackMap locals:
      StackMap stack:
        20: iconst_0
      StackMap locals:
      StackMap stack: int
        21: istore 8 /* carry */
        start local 8 // boolean carry
        22: .line 1302
            goto 26
        23: .line 1303
      StackMap locals: int
      StackMap stack:
            aload 6 /* result */
            iinc 5 /* xIndex */ -1
            iload 5 /* xIndex */
            aload 0 /* x */
            iload 5 /* xIndex */
            iaload
            iconst_1
            iadd
            dup_x2
            iastore
            ifne 24
            iconst_1
            goto 25
      StackMap locals:
      StackMap stack:
        24: iconst_0
      StackMap locals:
      StackMap stack: int
        25: istore 8 /* carry */
        26: .line 1302
      StackMap locals:
      StackMap stack:
            iload 5 /* xIndex */
            ifle 29
            iload 8 /* carry */
            ifne 23
        27: .line 1305
            goto 29
        28: .line 1306
      StackMap locals:
      StackMap stack:
            aload 6 /* result */
            iinc 5 /* xIndex */ -1
            iload 5 /* xIndex */
            aload 0 /* x */
            iload 5 /* xIndex */
            iaload
            iastore
        29: .line 1305
      StackMap locals:
      StackMap stack:
            iload 5 /* xIndex */
            ifgt 28
        30: .line 1308
            iload 8 /* carry */
            ifeq 35
        31: .line 1309
            aload 6 /* result */
            arraylength
            iconst_1
            iadd
            newarray 10
            astore 9 /* bigger */
        start local 9 // int[] bigger
        32: .line 1310
            aload 6 /* result */
            iconst_0
            aload 9 /* bigger */
            iconst_1
            aload 6 /* result */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        33: .line 1311
            aload 9 /* bigger */
            iconst_0
            iconst_1
            iastore
        34: .line 1312
            aload 9 /* bigger */
            areturn
        end local 9 // int[] bigger
        35: .line 1314
      StackMap locals:
      StackMap stack:
            aload 6 /* result */
            areturn
        end local 8 // boolean carry
        end local 7 // int highWord
        end local 6 // int[] result
        end local 5 // int xIndex
        end local 3 // long sum
        end local 1 // long val
        end local 0 // int[] x
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   36     0         x  [I
            0   36     1       val  J
            1   36     3       sum  J
            2   36     5    xIndex  I
            5    8     6    result  [I
           10   14     6    result  [I
           15   36     6    result  [I
            3   36     7  highWord  I
           22   36     8     carry  Z
           32   35     9    bigger  [I
    MethodParameters:
      Name  Flags
      x     
      val   

  private static int[] add(int[], int[]);
    descriptor: ([I[I)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=9, args_size=2
        start local 0 // int[] x
        start local 1 // int[] y
         0: .line 1324
            aload 0 /* x */
            arraylength
            aload 1 /* y */
            arraylength
            if_icmpge 4
         1: .line 1325
            aload 0 /* x */
            astore 2 /* tmp */
        start local 2 // int[] tmp
         2: .line 1326
            aload 1 /* y */
            astore 0 /* x */
         3: .line 1327
            aload 2 /* tmp */
            astore 1 /* y */
        end local 2 // int[] tmp
         4: .line 1330
      StackMap locals:
      StackMap stack:
            aload 0 /* x */
            arraylength
            istore 2 /* xIndex */
        start local 2 // int xIndex
         5: .line 1331
            aload 1 /* y */
            arraylength
            istore 3 /* yIndex */
        start local 3 // int yIndex
         6: .line 1332
            iload 2 /* xIndex */
            newarray 10
            astore 4 /* result */
        start local 4 // int[] result
         7: .line 1333
            lconst_0
            lstore 5 /* sum */
        start local 5 // long sum
         8: .line 1334
            iload 3 /* yIndex */
            iconst_1
            if_icmpne 18
         9: .line 1335
            aload 0 /* x */
            iinc 2 /* xIndex */ -1
            iload 2 /* xIndex */
            iaload
            i2l
            ldc 4294967295
            land
            aload 1 /* y */
            iconst_0
            iaload
            i2l
            ldc 4294967295
            land
            ladd
            lstore 5 /* sum */
        10: .line 1336
            aload 4 /* result */
            iload 2 /* xIndex */
            lload 5 /* sum */
            l2i
            iastore
        11: .line 1337
            goto 19
        12: .line 1340
      StackMap locals: int[] int[] int int int[] long
      StackMap stack:
            aload 0 /* x */
            iinc 2 /* xIndex */ -1
            iload 2 /* xIndex */
            iaload
            i2l
            ldc 4294967295
            land
        13: .line 1341
            aload 1 /* y */
            iinc 3 /* yIndex */ -1
            iload 3 /* yIndex */
            iaload
            i2l
            ldc 4294967295
            land
        14: .line 1340
            ladd
        15: .line 1341
            lload 5 /* sum */
            bipush 32
            lushr
        16: .line 1340
            ladd
            lstore 5 /* sum */
        17: .line 1342
            aload 4 /* result */
            iload 2 /* xIndex */
            lload 5 /* sum */
            l2i
            iastore
        18: .line 1339
      StackMap locals:
      StackMap stack:
            iload 3 /* yIndex */
            ifgt 12
        19: .line 1346
      StackMap locals:
      StackMap stack:
            lload 5 /* sum */
            bipush 32
            lushr
            lconst_0
            lcmp
            ifeq 20
            iconst_1
            goto 21
      StackMap locals:
      StackMap stack:
        20: iconst_0
      StackMap locals:
      StackMap stack: int
        21: istore 7 /* carry */
        start local 7 // boolean carry
        22: .line 1347
            goto 26
        23: .line 1348
      StackMap locals: int
      StackMap stack:
            aload 4 /* result */
            iinc 2 /* xIndex */ -1
            iload 2 /* xIndex */
            aload 0 /* x */
            iload 2 /* xIndex */
            iaload
            iconst_1
            iadd
            dup_x2
            iastore
            ifne 24
            iconst_1
            goto 25
      StackMap locals:
      StackMap stack:
        24: iconst_0
      StackMap locals:
      StackMap stack: int
        25: istore 7 /* carry */
        26: .line 1347
      StackMap locals:
      StackMap stack:
            iload 2 /* xIndex */
            ifle 29
            iload 7 /* carry */
            ifne 23
        27: .line 1351
            goto 29
        28: .line 1352
      StackMap locals:
      StackMap stack:
            aload 4 /* result */
            iinc 2 /* xIndex */ -1
            iload 2 /* xIndex */
            aload 0 /* x */
            iload 2 /* xIndex */
            iaload
            iastore
        29: .line 1351
      StackMap locals:
      StackMap stack:
            iload 2 /* xIndex */
            ifgt 28
        30: .line 1355
            iload 7 /* carry */
            ifeq 35
        31: .line 1356
            aload 4 /* result */
            arraylength
            iconst_1
            iadd
            newarray 10
            astore 8 /* bigger */
        start local 8 // int[] bigger
        32: .line 1357
            aload 4 /* result */
            iconst_0
            aload 8 /* bigger */
            iconst_1
            aload 4 /* result */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        33: .line 1358
            aload 8 /* bigger */
            iconst_0
            iconst_1
            iastore
        34: .line 1359
            aload 8 /* bigger */
            areturn
        end local 8 // int[] bigger
        35: .line 1361
      StackMap locals:
      StackMap stack:
            aload 4 /* result */
            areturn
        end local 7 // boolean carry
        end local 5 // long sum
        end local 4 // int[] result
        end local 3 // int yIndex
        end local 2 // int xIndex
        end local 1 // int[] y
        end local 0 // int[] x
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   36     0       x  [I
            0   36     1       y  [I
            2    4     2     tmp  [I
            5   36     2  xIndex  I
            6   36     3  yIndex  I
            7   36     4  result  [I
            8   36     5     sum  J
           22   36     7   carry  Z
           32   35     8  bigger  [I
    MethodParameters:
      Name  Flags
      x     
      y     

  private static int[] subtract(long, int[]);
    descriptor: (J[I)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=8, args_size=2
        start local 0 // long val
        start local 2 // int[] little
         0: .line 1365
            lload 0 /* val */
            bipush 32
            lushr
            l2i
            istore 3 /* highWord */
        start local 3 // int highWord
         1: .line 1366
            iload 3 /* highWord */
            ifne 5
         2: .line 1367
            iconst_1
            newarray 10
            astore 4 /* result */
        start local 4 // int[] result
         3: .line 1368
            aload 4 /* result */
            iconst_0
            lload 0 /* val */
            aload 2 /* little */
            iconst_0
            iaload
            i2l
            ldc 4294967295
            land
            lsub
            l2i
            iastore
         4: .line 1369
            aload 4 /* result */
            areturn
        end local 4 // int[] result
         5: .line 1371
      StackMap locals: int
      StackMap stack:
            iconst_2
            newarray 10
            astore 4 /* result */
        start local 4 // int[] result
         6: .line 1372
            aload 2 /* little */
            arraylength
            iconst_1
            if_icmpne 17
         7: .line 1373
            lload 0 /* val */
            l2i
            i2l
            ldc 4294967295
            land
            aload 2 /* little */
            iconst_0
            iaload
            i2l
            ldc 4294967295
            land
            lsub
            lstore 5 /* difference */
        start local 5 // long difference
         8: .line 1374
            aload 4 /* result */
            iconst_1
            lload 5 /* difference */
            l2i
            iastore
         9: .line 1376
            lload 5 /* difference */
            bipush 32
            lshr
            lconst_0
            lcmp
            ifeq 10
            iconst_1
            goto 11
      StackMap locals: int[] long
      StackMap stack:
        10: iconst_0
      StackMap locals:
      StackMap stack: int
        11: istore 7 /* borrow */
        start local 7 // boolean borrow
        12: .line 1377
            iload 7 /* borrow */
            ifeq 15
        13: .line 1378
            aload 4 /* result */
            iconst_0
            iload 3 /* highWord */
            iconst_1
            isub
            iastore
        14: .line 1379
            goto 16
        15: .line 1380
      StackMap locals: int
      StackMap stack:
            aload 4 /* result */
            iconst_0
            iload 3 /* highWord */
            iastore
        16: .line 1382
      StackMap locals:
      StackMap stack:
            aload 4 /* result */
            areturn
        end local 7 // boolean borrow
        end local 5 // long difference
        17: .line 1384
      StackMap locals:
      StackMap stack:
            lload 0 /* val */
            l2i
            i2l
            ldc 4294967295
            land
            aload 2 /* little */
            iconst_1
            iaload
            i2l
            ldc 4294967295
            land
            lsub
            lstore 5 /* difference */
        start local 5 // long difference
        18: .line 1385
            aload 4 /* result */
            iconst_1
            lload 5 /* difference */
            l2i
            iastore
        19: .line 1386
            iload 3 /* highWord */
            i2l
            ldc 4294967295
            land
            aload 2 /* little */
            iconst_0
            iaload
            i2l
            ldc 4294967295
            land
            lsub
            lload 5 /* difference */
            bipush 32
            lshr
            ladd
            lstore 5 /* difference */
        20: .line 1387
            aload 4 /* result */
            iconst_0
            lload 5 /* difference */
            l2i
            iastore
        21: .line 1388
            aload 4 /* result */
            areturn
        end local 5 // long difference
        end local 4 // int[] result
        end local 3 // int highWord
        end local 2 // int[] little
        end local 0 // long val
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   22     0         val  J
            0   22     2      little  [I
            1   22     3    highWord  I
            3    5     4      result  [I
            6   22     4      result  [I
            8   17     5  difference  J
           12   17     7      borrow  Z
           18   22     5  difference  J
    MethodParameters:
        Name  Flags
      val     
      little  

  private static int[] subtract(int[], long);
    descriptor: ([IJ)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=9, args_size=2
        start local 0 // int[] big
        start local 1 // long val
         0: .line 1401
            lload 1 /* val */
            bipush 32
            lushr
            l2i
            istore 3 /* highWord */
        start local 3 // int highWord
         1: .line 1402
            aload 0 /* big */
            arraylength
            istore 4 /* bigIndex */
        start local 4 // int bigIndex
         2: .line 1403
            iload 4 /* bigIndex */
            newarray 10
            astore 5 /* result */
        start local 5 // int[] result
         3: .line 1404
            lconst_0
            lstore 6 /* difference */
        start local 6 // long difference
         4: .line 1406
            iload 3 /* highWord */
            ifne 8
         5: .line 1407
            aload 0 /* big */
            iinc 4 /* bigIndex */ -1
            iload 4 /* bigIndex */
            iaload
            i2l
            ldc 4294967295
            land
            lload 1 /* val */
            lsub
            lstore 6 /* difference */
         6: .line 1408
            aload 5 /* result */
            iload 4 /* bigIndex */
            lload 6 /* difference */
            l2i
            iastore
         7: .line 1409
            goto 12
         8: .line 1410
      StackMap locals: int[] long int int int[] long
      StackMap stack:
            aload 0 /* big */
            iinc 4 /* bigIndex */ -1
            iload 4 /* bigIndex */
            iaload
            i2l
            ldc 4294967295
            land
            lload 1 /* val */
            ldc 4294967295
            land
            lsub
            lstore 6 /* difference */
         9: .line 1411
            aload 5 /* result */
            iload 4 /* bigIndex */
            lload 6 /* difference */
            l2i
            iastore
        10: .line 1412
            aload 0 /* big */
            iinc 4 /* bigIndex */ -1
            iload 4 /* bigIndex */
            iaload
            i2l
            ldc 4294967295
            land
            iload 3 /* highWord */
            i2l
            ldc 4294967295
            land
            lsub
            lload 6 /* difference */
            bipush 32
            lshr
            ladd
            lstore 6 /* difference */
        11: .line 1413
            aload 5 /* result */
            iload 4 /* bigIndex */
            lload 6 /* difference */
            l2i
            iastore
        12: .line 1417
      StackMap locals:
      StackMap stack:
            lload 6 /* difference */
            bipush 32
            lshr
            lconst_0
            lcmp
            ifeq 13
            iconst_1
            goto 14
      StackMap locals:
      StackMap stack:
        13: iconst_0
      StackMap locals:
      StackMap stack: int
        14: istore 8 /* borrow */
        start local 8 // boolean borrow
        15: .line 1418
            goto 19
        16: .line 1419
      StackMap locals: int
      StackMap stack:
            aload 5 /* result */
            iinc 4 /* bigIndex */ -1
            iload 4 /* bigIndex */
            aload 0 /* big */
            iload 4 /* bigIndex */
            iaload
            iconst_1
            isub
            dup_x2
            iastore
            iconst_m1
            if_icmpne 17
            iconst_1
            goto 18
      StackMap locals:
      StackMap stack:
        17: iconst_0
      StackMap locals:
      StackMap stack: int
        18: istore 8 /* borrow */
        19: .line 1418
      StackMap locals:
      StackMap stack:
            iload 4 /* bigIndex */
            ifle 22
            iload 8 /* borrow */
            ifne 16
        20: .line 1422
            goto 22
        21: .line 1423
      StackMap locals:
      StackMap stack:
            aload 5 /* result */
            iinc 4 /* bigIndex */ -1
            iload 4 /* bigIndex */
            aload 0 /* big */
            iload 4 /* bigIndex */
            iaload
            iastore
        22: .line 1422
      StackMap locals:
      StackMap stack:
            iload 4 /* bigIndex */
            ifgt 21
        23: .line 1425
            aload 5 /* result */
            areturn
        end local 8 // boolean borrow
        end local 6 // long difference
        end local 5 // int[] result
        end local 4 // int bigIndex
        end local 3 // int highWord
        end local 1 // long val
        end local 0 // int[] big
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   24     0         big  [I
            0   24     1         val  J
            1   24     3    highWord  I
            2   24     4    bigIndex  I
            3   24     5      result  [I
            4   24     6  difference  J
           15   24     8      borrow  Z
    MethodParameters:
      Name  Flags
      big   
      val   

  public java.math.BigInteger subtract(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 1435
            aload 1 /* val */
            getfield java.math.BigInteger.signum:I
            ifne 2
         1: .line 1436
            aload 0 /* this */
            areturn
         2: .line 1437
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifne 4
         3: .line 1438
            aload 1 /* val */
            invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
            areturn
         4: .line 1439
      StackMap locals:
      StackMap stack:
            aload 1 /* val */
            getfield java.math.BigInteger.signum:I
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            if_icmpeq 6
         5: .line 1440
            new java.math.BigInteger
            dup
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            invokestatic java.math.BigInteger.add:([I[I)[I
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            invokespecial java.math.BigInteger.<init>:([II)V
            areturn
         6: .line 1442
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* val */
            invokevirtual java.math.BigInteger.compareMagnitude:(Ljava/math/BigInteger;)I
            istore 2 /* cmp */
        start local 2 // int cmp
         7: .line 1443
            iload 2 /* cmp */
            ifne 9
         8: .line 1444
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            areturn
         9: .line 1445
      StackMap locals: int
      StackMap stack:
            iload 2 /* cmp */
            ifle 10
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            invokestatic java.math.BigInteger.subtract:([I[I)[I
            goto 11
        10: .line 1446
      StackMap locals:
      StackMap stack:
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            invokestatic java.math.BigInteger.subtract:([I[I)[I
        11: .line 1445
      StackMap locals:
      StackMap stack: int[]
            astore 3 /* resultMag */
        start local 3 // int[] resultMag
        12: .line 1447
            aload 3 /* resultMag */
            invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
            astore 3 /* resultMag */
        13: .line 1448
            new java.math.BigInteger
            dup
            aload 3 /* resultMag */
            iload 2 /* cmp */
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            if_icmpne 14
            iconst_1
            goto 15
      StackMap locals: java.math.BigInteger java.math.BigInteger int int[]
      StackMap stack: new 13 new 13 int[]
        14: iconst_m1
      StackMap locals: java.math.BigInteger java.math.BigInteger int int[]
      StackMap stack: new 13 new 13 int[] int
        15: invokespecial java.math.BigInteger.<init>:([II)V
            areturn
        end local 3 // int[] resultMag
        end local 2 // int cmp
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   16     0       this  Ljava/math/BigInteger;
            0   16     1        val  Ljava/math/BigInteger;
            7   16     2        cmp  I
           12   16     3  resultMag  [I
    MethodParameters:
      Name  Flags
      val   

  private static int[] subtract(int[], int[]);
    descriptor: ([I[I)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=8, args_size=2
        start local 0 // int[] big
        start local 1 // int[] little
         0: .line 1458
            aload 0 /* big */
            arraylength
            istore 2 /* bigIndex */
        start local 2 // int bigIndex
         1: .line 1459
            iload 2 /* bigIndex */
            newarray 10
            astore 3 /* result */
        start local 3 // int[] result
         2: .line 1460
            aload 1 /* little */
            arraylength
            istore 4 /* littleIndex */
        start local 4 // int littleIndex
         3: .line 1461
            lconst_0
            lstore 5 /* difference */
        start local 5 // long difference
         4: .line 1464
            goto 11
         5: .line 1465
      StackMap locals: int[] int[] int int[] int long
      StackMap stack:
            aload 0 /* big */
            iinc 2 /* bigIndex */ -1
            iload 2 /* bigIndex */
            iaload
            i2l
            ldc 4294967295
            land
         6: .line 1466
            aload 1 /* little */
            iinc 4 /* littleIndex */ -1
            iload 4 /* littleIndex */
            iaload
            i2l
            ldc 4294967295
            land
         7: .line 1465
            lsub
         8: .line 1467
            lload 5 /* difference */
            bipush 32
            lshr
         9: .line 1465
            ladd
            lstore 5 /* difference */
        10: .line 1468
            aload 3 /* result */
            iload 2 /* bigIndex */
            lload 5 /* difference */
            l2i
            iastore
        11: .line 1464
      StackMap locals:
      StackMap stack:
            iload 4 /* littleIndex */
            ifgt 5
        12: .line 1472
            lload 5 /* difference */
            bipush 32
            lshr
            lconst_0
            lcmp
            ifeq 13
            iconst_1
            goto 14
      StackMap locals:
      StackMap stack:
        13: iconst_0
      StackMap locals:
      StackMap stack: int
        14: istore 7 /* borrow */
        start local 7 // boolean borrow
        15: .line 1473
            goto 19
        16: .line 1474
      StackMap locals: int
      StackMap stack:
            aload 3 /* result */
            iinc 2 /* bigIndex */ -1
            iload 2 /* bigIndex */
            aload 0 /* big */
            iload 2 /* bigIndex */
            iaload
            iconst_1
            isub
            dup_x2
            iastore
            iconst_m1
            if_icmpne 17
            iconst_1
            goto 18
      StackMap locals:
      StackMap stack:
        17: iconst_0
      StackMap locals:
      StackMap stack: int
        18: istore 7 /* borrow */
        19: .line 1473
      StackMap locals:
      StackMap stack:
            iload 2 /* bigIndex */
            ifle 22
            iload 7 /* borrow */
            ifne 16
        20: .line 1477
            goto 22
        21: .line 1478
      StackMap locals:
      StackMap stack:
            aload 3 /* result */
            iinc 2 /* bigIndex */ -1
            iload 2 /* bigIndex */
            aload 0 /* big */
            iload 2 /* bigIndex */
            iaload
            iastore
        22: .line 1477
      StackMap locals:
      StackMap stack:
            iload 2 /* bigIndex */
            ifgt 21
        23: .line 1480
            aload 3 /* result */
            areturn
        end local 7 // boolean borrow
        end local 5 // long difference
        end local 4 // int littleIndex
        end local 3 // int[] result
        end local 2 // int bigIndex
        end local 1 // int[] little
        end local 0 // int[] big
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   24     0          big  [I
            0   24     1       little  [I
            1   24     2     bigIndex  I
            2   24     3       result  [I
            3   24     4  littleIndex  I
            4   24     5   difference  J
           15   24     7       borrow  Z
    MethodParameters:
        Name  Flags
      big     
      little  

  public java.math.BigInteger multiply(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 1493
            aload 0 /* this */
            aload 1 /* val */
            iconst_0
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;Z)Ljava/math/BigInteger;
            areturn
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/math/BigInteger;
            0    1     1   val  Ljava/math/BigInteger;
    MethodParameters:
      Name  Flags
      val   

  private java.math.BigInteger multiply(java.math.BigInteger, boolean);
    descriptor: (Ljava/math/BigInteger;Z)Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
        start local 2 // boolean isRecursion
         0: .line 1505
            aload 1 /* val */
            getfield java.math.BigInteger.signum:I
            ifeq 1
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifne 2
         1: .line 1506
      StackMap locals:
      StackMap stack:
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            areturn
         2: .line 1508
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            istore 3 /* xlen */
        start local 3 // int xlen
         3: .line 1510
            aload 1 /* val */
            aload 0 /* this */
            if_acmpne 5
            iload 3 /* xlen */
            bipush 20
            if_icmple 5
         4: .line 1511
            aload 0 /* this */
            invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
            areturn
         5: .line 1514
      StackMap locals: int
      StackMap stack:
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            arraylength
            istore 4 /* ylen */
        start local 4 // int ylen
         6: .line 1516
            iload 3 /* xlen */
            bipush 80
            if_icmplt 7
            iload 4 /* ylen */
            bipush 80
            if_icmpge 19
         7: .line 1517
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            aload 1 /* val */
            getfield java.math.BigInteger.signum:I
            if_icmpne 8
            iconst_1
            goto 9
      StackMap locals:
      StackMap stack:
         8: iconst_m1
      StackMap locals:
      StackMap stack: int
         9: istore 5 /* resultSign */
        start local 5 // int resultSign
        10: .line 1518
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            arraylength
            iconst_1
            if_icmpne 12
        11: .line 1519
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            iconst_0
            iaload
            iload 5 /* resultSign */
            invokestatic java.math.BigInteger.multiplyByInt:([III)Ljava/math/BigInteger;
            areturn
        12: .line 1521
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            iconst_1
            if_icmpne 14
        13: .line 1522
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_0
            iaload
            iload 5 /* resultSign */
            invokestatic java.math.BigInteger.multiplyByInt:([III)Ljava/math/BigInteger;
            areturn
        14: .line 1524
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iload 3 /* xlen */
        15: .line 1525
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            iload 4 /* ylen */
            aconst_null
        16: .line 1524
            invokestatic java.math.BigInteger.multiplyToLen:([II[II[I)[I
            astore 6 /* result */
        start local 6 // int[] result
        17: .line 1526
            aload 6 /* result */
            invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
            astore 6 /* result */
        18: .line 1527
            new java.math.BigInteger
            dup
            aload 6 /* result */
            iload 5 /* resultSign */
            invokespecial java.math.BigInteger.<init>:([II)V
            areturn
        end local 6 // int[] result
        end local 5 // int resultSign
        19: .line 1529
      StackMap locals:
      StackMap stack:
            iload 3 /* xlen */
            sipush 240
            if_icmpge 21
            iload 4 /* ylen */
            sipush 240
            if_icmpge 21
        20: .line 1530
            aload 0 /* this */
            aload 1 /* val */
            invokestatic java.math.BigInteger.multiplyKaratsuba:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
            areturn
        21: .line 1577
      StackMap locals:
      StackMap stack:
            iload 2 /* isRecursion */
            ifne 27
        22: .line 1582
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            invokestatic java.math.BigInteger.bitLength:([II)I
        23: .line 1583
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            arraylength
            invokestatic java.math.BigInteger.bitLength:([II)I
        24: .line 1582
            iadd
            i2l
        25: .line 1584
            ldc 2147483648
            lcmp
            ifle 27
        26: .line 1585
            invokestatic java.math.BigInteger.reportOverflow:()V
        27: .line 1589
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* val */
            invokestatic java.math.BigInteger.multiplyToomCook3:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
            areturn
        end local 4 // int ylen
        end local 3 // int xlen
        end local 2 // boolean isRecursion
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   28     0         this  Ljava/math/BigInteger;
            0   28     1          val  Ljava/math/BigInteger;
            0   28     2  isRecursion  Z
            3   28     3         xlen  I
            6   28     4         ylen  I
           10   19     5   resultSign  I
           17   19     6       result  [I
    MethodParameters:
             Name  Flags
      val          
      isRecursion  

  private static java.math.BigInteger multiplyByInt(int[], int, int);
    descriptor: ([III)Ljava/math/BigInteger;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=13, args_size=3
        start local 0 // int[] x
        start local 1 // int y
        start local 2 // int sign
         0: .line 1595
            iload 1 /* y */
            invokestatic java.lang.Integer.bitCount:(I)I
            iconst_1
            if_icmpne 2
         1: .line 1596
            new java.math.BigInteger
            dup
            aload 0 /* x */
            iload 1 /* y */
            invokestatic java.lang.Integer.numberOfTrailingZeros:(I)I
            invokestatic java.math.BigInteger.shiftLeft:([II)[I
            iload 2 /* sign */
            invokespecial java.math.BigInteger.<init>:([II)V
            areturn
         2: .line 1598
      StackMap locals:
      StackMap stack:
            aload 0 /* x */
            arraylength
            istore 3 /* xlen */
        start local 3 // int xlen
         3: .line 1599
            iload 3 /* xlen */
            iconst_1
            iadd
            newarray 10
            astore 4 /* rmag */
        start local 4 // int[] rmag
         4: .line 1600
            lconst_0
            lstore 5 /* carry */
        start local 5 // long carry
         5: .line 1601
            iload 1 /* y */
            i2l
            ldc 4294967295
            land
            lstore 7 /* yl */
        start local 7 // long yl
         6: .line 1602
            aload 4 /* rmag */
            arraylength
            iconst_1
            isub
            istore 9 /* rstart */
        start local 9 // int rstart
         7: .line 1603
            iload 3 /* xlen */
            iconst_1
            isub
            istore 10 /* i */
        start local 10 // int i
         8: goto 13
         9: .line 1604
      StackMap locals: int[] int int int int[] long long int int
      StackMap stack:
            aload 0 /* x */
            iload 10 /* i */
            iaload
            i2l
            ldc 4294967295
            land
            lload 7 /* yl */
            lmul
            lload 5 /* carry */
            ladd
            lstore 11 /* product */
        start local 11 // long product
        10: .line 1605
            aload 4 /* rmag */
            iload 9 /* rstart */
            iinc 9 /* rstart */ -1
            lload 11 /* product */
            l2i
            iastore
        11: .line 1606
            lload 11 /* product */
            bipush 32
            lushr
            lstore 5 /* carry */
        end local 11 // long product
        12: .line 1603
            iinc 10 /* i */ -1
      StackMap locals:
      StackMap stack:
        13: iload 10 /* i */
            ifge 9
        end local 10 // int i
        14: .line 1608
            lload 5 /* carry */
            lconst_0
            lcmp
            ifne 17
        15: .line 1609
            aload 4 /* rmag */
            iconst_1
            aload 4 /* rmag */
            arraylength
            invokestatic java.util.Arrays.copyOfRange:([III)[I
            astore 4 /* rmag */
        16: .line 1610
            goto 18
        17: .line 1611
      StackMap locals:
      StackMap stack:
            aload 4 /* rmag */
            iload 9 /* rstart */
            lload 5 /* carry */
            l2i
            iastore
        18: .line 1613
      StackMap locals:
      StackMap stack:
            new java.math.BigInteger
            dup
            aload 4 /* rmag */
            iload 2 /* sign */
            invokespecial java.math.BigInteger.<init>:([II)V
            areturn
        end local 9 // int rstart
        end local 7 // long yl
        end local 5 // long carry
        end local 4 // int[] rmag
        end local 3 // int xlen
        end local 2 // int sign
        end local 1 // int y
        end local 0 // int[] x
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   19     0        x  [I
            0   19     1        y  I
            0   19     2     sign  I
            3   19     3     xlen  I
            4   19     4     rmag  [I
            5   19     5    carry  J
            6   19     7       yl  J
            7   19     9   rstart  I
            8   14    10        i  I
           10   12    11  product  J
    MethodParameters:
      Name  Flags
      x     
      y     
      sign  

  java.math.BigInteger multiply(long);
    descriptor: (J)Ljava/math/BigInteger;
    flags: (0x0000) 
    Code:
      stack=6, locals=17, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // long v
         0: .line 1621
            lload 1 /* v */
            lconst_0
            lcmp
            ifeq 1
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifne 2
         1: .line 1622
      StackMap locals:
      StackMap stack:
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            areturn
         2: .line 1623
      StackMap locals:
      StackMap stack:
            lload 1 /* v */
            ldc -9223372036854775808
            lcmp
            ifne 4
         3: .line 1624
            aload 0 /* this */
            lload 1 /* v */
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            areturn
         4: .line 1625
      StackMap locals:
      StackMap stack:
            lload 1 /* v */
            lconst_0
            lcmp
            ifle 5
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            goto 6
      StackMap locals:
      StackMap stack:
         5: aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ineg
      StackMap locals:
      StackMap stack: int
         6: istore 3 /* rsign */
        start local 3 // int rsign
         7: .line 1626
            lload 1 /* v */
            lconst_0
            lcmp
            ifge 9
         8: .line 1627
            lload 1 /* v */
            lneg
            lstore 1 /* v */
         9: .line 1628
      StackMap locals: int
      StackMap stack:
            lload 1 /* v */
            bipush 32
            lushr
            lstore 4 /* dh */
        start local 4 // long dh
        10: .line 1629
            lload 1 /* v */
            ldc 4294967295
            land
            lstore 6 /* dl */
        start local 6 // long dl
        11: .line 1631
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            istore 8 /* xlen */
        start local 8 // int xlen
        12: .line 1632
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            astore 9 /* value */
        start local 9 // int[] value
        13: .line 1633
            lload 4 /* dh */
            lconst_0
            lcmp
            ifne 14
            iload 8 /* xlen */
            iconst_1
            iadd
            newarray 10
            goto 15
      StackMap locals: java.math.BigInteger long int long long int int[]
      StackMap stack:
        14: iload 8 /* xlen */
            iconst_2
            iadd
            newarray 10
      StackMap locals:
      StackMap stack: int[]
        15: astore 10 /* rmag */
        start local 10 // int[] rmag
        16: .line 1634
            lconst_0
            lstore 11 /* carry */
        start local 11 // long carry
        17: .line 1635
            aload 10 /* rmag */
            arraylength
            iconst_1
            isub
            istore 13 /* rstart */
        start local 13 // int rstart
        18: .line 1636
            iload 8 /* xlen */
            iconst_1
            isub
            istore 14 /* i */
        start local 14 // int i
        19: goto 24
        20: .line 1637
      StackMap locals: java.math.BigInteger long int long long int int[] int[] long int int
      StackMap stack:
            aload 9 /* value */
            iload 14 /* i */
            iaload
            i2l
            ldc 4294967295
            land
            lload 6 /* dl */
            lmul
            lload 11 /* carry */
            ladd
            lstore 15 /* product */
        start local 15 // long product
        21: .line 1638
            aload 10 /* rmag */
            iload 13 /* rstart */
            iinc 13 /* rstart */ -1
            lload 15 /* product */
            l2i
            iastore
        22: .line 1639
            lload 15 /* product */
            bipush 32
            lushr
            lstore 11 /* carry */
        end local 15 // long product
        23: .line 1636
            iinc 14 /* i */ -1
      StackMap locals:
      StackMap stack:
        24: iload 14 /* i */
            ifge 20
        end local 14 // int i
        25: .line 1641
            aload 10 /* rmag */
            iload 13 /* rstart */
            lload 11 /* carry */
            l2i
            iastore
        26: .line 1642
            lload 4 /* dh */
            lconst_0
            lcmp
            ifeq 41
        27: .line 1643
            lconst_0
            lstore 11 /* carry */
        28: .line 1644
            aload 10 /* rmag */
            arraylength
            iconst_2
            isub
            istore 13 /* rstart */
        29: .line 1645
            iload 8 /* xlen */
            iconst_1
            isub
            istore 14 /* i */
        start local 14 // int i
        30: goto 39
        31: .line 1646
      StackMap locals:
      StackMap stack:
            aload 9 /* value */
            iload 14 /* i */
            iaload
            i2l
            ldc 4294967295
            land
            lload 4 /* dh */
            lmul
        32: .line 1647
            aload 10 /* rmag */
            iload 13 /* rstart */
            iaload
            i2l
            ldc 4294967295
            land
        33: .line 1646
            ladd
        34: .line 1647
            lload 11 /* carry */
        35: .line 1646
            ladd
            lstore 15 /* product */
        start local 15 // long product
        36: .line 1648
            aload 10 /* rmag */
            iload 13 /* rstart */
            iinc 13 /* rstart */ -1
            lload 15 /* product */
            l2i
            iastore
        37: .line 1649
            lload 15 /* product */
            bipush 32
            lushr
            lstore 11 /* carry */
        end local 15 // long product
        38: .line 1645
            iinc 14 /* i */ -1
      StackMap locals:
      StackMap stack:
        39: iload 14 /* i */
            ifge 31
        end local 14 // int i
        40: .line 1651
            aload 10 /* rmag */
            iconst_0
            lload 11 /* carry */
            l2i
            iastore
        41: .line 1653
      StackMap locals:
      StackMap stack:
            lload 11 /* carry */
            lconst_0
            lcmp
            ifne 43
        42: .line 1654
            aload 10 /* rmag */
            iconst_1
            aload 10 /* rmag */
            arraylength
            invokestatic java.util.Arrays.copyOfRange:([III)[I
            astore 10 /* rmag */
        43: .line 1655
      StackMap locals:
      StackMap stack:
            new java.math.BigInteger
            dup
            aload 10 /* rmag */
            iload 3 /* rsign */
            invokespecial java.math.BigInteger.<init>:([II)V
            areturn
        end local 13 // int rstart
        end local 11 // long carry
        end local 10 // int[] rmag
        end local 9 // int[] value
        end local 8 // int xlen
        end local 6 // long dl
        end local 4 // long dh
        end local 3 // int rsign
        end local 1 // long v
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   44     0     this  Ljava/math/BigInteger;
            0   44     1        v  J
            7   44     3    rsign  I
           10   44     4       dh  J
           11   44     6       dl  J
           12   44     8     xlen  I
           13   44     9    value  [I
           16   44    10     rmag  [I
           17   44    11    carry  J
           18   44    13   rstart  I
           19   25    14        i  I
           21   23    15  product  J
           30   40    14        i  I
           36   38    15  product  J
    MethodParameters:
      Name  Flags
      v     

  private static int[] multiplyToLen(int[], int, int[], int, int[]);
    descriptor: ([II[II[I)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=14, args_size=5
        start local 0 // int[] x
        start local 1 // int xlen
        start local 2 // int[] y
        start local 3 // int ylen
        start local 4 // int[] z
         0: .line 1663
            iload 1 /* xlen */
            iconst_1
            isub
            istore 5 /* xstart */
        start local 5 // int xstart
         1: .line 1664
            iload 3 /* ylen */
            iconst_1
            isub
            istore 6 /* ystart */
        start local 6 // int ystart
         2: .line 1666
            aload 4 /* z */
            ifnull 3
            aload 4 /* z */
            arraylength
            iload 1 /* xlen */
            iload 3 /* ylen */
            iadd
            if_icmpge 4
         3: .line 1667
      StackMap locals: int int
      StackMap stack:
            iload 1 /* xlen */
            iload 3 /* ylen */
            iadd
            newarray 10
            astore 4 /* z */
         4: .line 1669
      StackMap locals:
      StackMap stack:
            lconst_0
            lstore 7 /* carry */
        start local 7 // long carry
         5: .line 1670
            iload 6 /* ystart */
            istore 9 /* j */
        start local 9 // int j
         6: iload 6 /* ystart */
            iconst_1
            iadd
            iload 5 /* xstart */
            iadd
            istore 10 /* k */
        start local 10 // int k
         7: goto 16
         8: .line 1671
      StackMap locals: long int int
      StackMap stack:
            aload 2 /* y */
            iload 9 /* j */
            iaload
            i2l
            ldc 4294967295
            land
         9: .line 1672
            aload 0 /* x */
            iload 5 /* xstart */
            iaload
            i2l
            ldc 4294967295
            land
        10: .line 1671
            lmul
        11: .line 1672
            lload 7 /* carry */
        12: .line 1671
            ladd
            lstore 11 /* product */
        start local 11 // long product
        13: .line 1673
            aload 4 /* z */
            iload 10 /* k */
            lload 11 /* product */
            l2i
            iastore
        14: .line 1674
            lload 11 /* product */
            bipush 32
            lushr
            lstore 7 /* carry */
        end local 11 // long product
        15: .line 1670
            iinc 9 /* j */ -1
            iinc 10 /* k */ -1
      StackMap locals:
      StackMap stack:
        16: iload 9 /* j */
            ifge 8
        end local 10 // int k
        end local 9 // int j
        17: .line 1676
            aload 4 /* z */
            iload 5 /* xstart */
            lload 7 /* carry */
            l2i
            iastore
        18: .line 1678
            iload 5 /* xstart */
            iconst_1
            isub
            istore 9 /* i */
        start local 9 // int i
        19: goto 37
        20: .line 1679
      StackMap locals:
      StackMap stack:
            lconst_0
            lstore 7 /* carry */
        21: .line 1680
            iload 6 /* ystart */
            istore 10 /* j */
        start local 10 // int j
        22: iload 6 /* ystart */
            iconst_1
            iadd
            iload 9 /* i */
            iadd
            istore 11 /* k */
        start local 11 // int k
        23: goto 34
        24: .line 1681
      StackMap locals: int int
      StackMap stack:
            aload 2 /* y */
            iload 10 /* j */
            iaload
            i2l
            ldc 4294967295
            land
        25: .line 1682
            aload 0 /* x */
            iload 9 /* i */
            iaload
            i2l
            ldc 4294967295
            land
        26: .line 1681
            lmul
        27: .line 1683
            aload 4 /* z */
            iload 11 /* k */
            iaload
            i2l
            ldc 4294967295
            land
        28: .line 1681
            ladd
        29: .line 1683
            lload 7 /* carry */
        30: .line 1681
            ladd
            lstore 12 /* product */
        start local 12 // long product
        31: .line 1684
            aload 4 /* z */
            iload 11 /* k */
            lload 12 /* product */
            l2i
            iastore
        32: .line 1685
            lload 12 /* product */
            bipush 32
            lushr
            lstore 7 /* carry */
        end local 12 // long product
        33: .line 1680
            iinc 10 /* j */ -1
            iinc 11 /* k */ -1
      StackMap locals:
      StackMap stack:
        34: iload 10 /* j */
            ifge 24
        end local 11 // int k
        end local 10 // int j
        35: .line 1687
            aload 4 /* z */
            iload 9 /* i */
            lload 7 /* carry */
            l2i
            iastore
        36: .line 1678
            iinc 9 /* i */ -1
      StackMap locals:
      StackMap stack:
        37: iload 9 /* i */
            ifge 20
        end local 9 // int i
        38: .line 1689
            aload 4 /* z */
            areturn
        end local 7 // long carry
        end local 6 // int ystart
        end local 5 // int xstart
        end local 4 // int[] z
        end local 3 // int ylen
        end local 2 // int[] y
        end local 1 // int xlen
        end local 0 // int[] x
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   39     0        x  [I
            0   39     1     xlen  I
            0   39     2        y  [I
            0   39     3     ylen  I
            0   39     4        z  [I
            1   39     5   xstart  I
            2   39     6   ystart  I
            5   39     7    carry  J
            6   17     9        j  I
            7   17    10        k  I
           13   15    11  product  J
           19   38     9        i  I
           22   35    10        j  I
           23   35    11        k  I
           31   33    12  product  J
    MethodParameters:
      Name  Flags
      x     
      xlen  
      y     
      ylen  
      z     

  private static java.math.BigInteger multiplyKaratsuba(java.math.BigInteger, java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=13, args_size=2
        start local 0 // java.math.BigInteger x
        start local 1 // java.math.BigInteger y
         0: .line 1708
            aload 0 /* x */
            getfield java.math.BigInteger.mag:[I
            arraylength
            istore 2 /* xlen */
        start local 2 // int xlen
         1: .line 1709
            aload 1 /* y */
            getfield java.math.BigInteger.mag:[I
            arraylength
            istore 3 /* ylen */
        start local 3 // int ylen
         2: .line 1712
            iload 2 /* xlen */
            iload 3 /* ylen */
            invokestatic java.lang.Math.max:(II)I
            iconst_1
            iadd
            iconst_2
            idiv
            istore 4 /* half */
        start local 4 // int half
         3: .line 1716
            aload 0 /* x */
            iload 4 /* half */
            invokevirtual java.math.BigInteger.getLower:(I)Ljava/math/BigInteger;
            astore 5 /* xl */
        start local 5 // java.math.BigInteger xl
         4: .line 1717
            aload 0 /* x */
            iload 4 /* half */
            invokevirtual java.math.BigInteger.getUpper:(I)Ljava/math/BigInteger;
            astore 6 /* xh */
        start local 6 // java.math.BigInteger xh
         5: .line 1718
            aload 1 /* y */
            iload 4 /* half */
            invokevirtual java.math.BigInteger.getLower:(I)Ljava/math/BigInteger;
            astore 7 /* yl */
        start local 7 // java.math.BigInteger yl
         6: .line 1719
            aload 1 /* y */
            iload 4 /* half */
            invokevirtual java.math.BigInteger.getUpper:(I)Ljava/math/BigInteger;
            astore 8 /* yh */
        start local 8 // java.math.BigInteger yh
         7: .line 1721
            aload 6 /* xh */
            aload 8 /* yh */
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 9 /* p1 */
        start local 9 // java.math.BigInteger p1
         8: .line 1722
            aload 5 /* xl */
            aload 7 /* yl */
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 10 /* p2 */
        start local 10 // java.math.BigInteger p2
         9: .line 1725
            aload 6 /* xh */
            aload 5 /* xl */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 8 /* yh */
            aload 7 /* yl */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 11 /* p3 */
        start local 11 // java.math.BigInteger p3
        10: .line 1728
            aload 9 /* p1 */
            bipush 32
            iload 4 /* half */
            imul
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            aload 11 /* p3 */
            aload 9 /* p1 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 10 /* p2 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            bipush 32
            iload 4 /* half */
            imul
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            aload 10 /* p2 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 12 /* result */
        start local 12 // java.math.BigInteger result
        11: .line 1730
            aload 0 /* x */
            getfield java.math.BigInteger.signum:I
            aload 1 /* y */
            getfield java.math.BigInteger.signum:I
            if_icmpeq 13
        12: .line 1731
            aload 12 /* result */
            invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
            areturn
        13: .line 1733
      StackMap locals: java.math.BigInteger java.math.BigInteger int int int java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger
      StackMap stack:
            aload 12 /* result */
            areturn
        end local 12 // java.math.BigInteger result
        end local 11 // java.math.BigInteger p3
        end local 10 // java.math.BigInteger p2
        end local 9 // java.math.BigInteger p1
        end local 8 // java.math.BigInteger yh
        end local 7 // java.math.BigInteger yl
        end local 6 // java.math.BigInteger xh
        end local 5 // java.math.BigInteger xl
        end local 4 // int half
        end local 3 // int ylen
        end local 2 // int xlen
        end local 1 // java.math.BigInteger y
        end local 0 // java.math.BigInteger x
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   14     0       x  Ljava/math/BigInteger;
            0   14     1       y  Ljava/math/BigInteger;
            1   14     2    xlen  I
            2   14     3    ylen  I
            3   14     4    half  I
            4   14     5      xl  Ljava/math/BigInteger;
            5   14     6      xh  Ljava/math/BigInteger;
            6   14     7      yl  Ljava/math/BigInteger;
            7   14     8      yh  Ljava/math/BigInteger;
            8   14     9      p1  Ljava/math/BigInteger;
            9   14    10      p2  Ljava/math/BigInteger;
           10   14    11      p3  Ljava/math/BigInteger;
           11   14    12  result  Ljava/math/BigInteger;
    MethodParameters:
      Name  Flags
      x     
      y     

  private static java.math.BigInteger multiplyToomCook3(java.math.BigInteger, java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=25, args_size=2
        start local 0 // java.math.BigInteger a
        start local 1 // java.math.BigInteger b
         0: .line 1766
            aload 0 /* a */
            getfield java.math.BigInteger.mag:[I
            arraylength
            istore 2 /* alen */
        start local 2 // int alen
         1: .line 1767
            aload 1 /* b */
            getfield java.math.BigInteger.mag:[I
            arraylength
            istore 3 /* blen */
        start local 3 // int blen
         2: .line 1769
            iload 2 /* alen */
            iload 3 /* blen */
            invokestatic java.lang.Math.max:(II)I
            istore 4 /* largest */
        start local 4 // int largest
         3: .line 1772
            iload 4 /* largest */
            iconst_2
            iadd
            iconst_3
            idiv
            istore 5 /* k */
        start local 5 // int k
         4: .line 1775
            iload 4 /* largest */
            iconst_2
            iload 5 /* k */
            imul
            isub
            istore 6 /* r */
        start local 6 // int r
         5: .line 1780
            aload 0 /* a */
            iload 5 /* k */
            iload 6 /* r */
            iconst_0
            iload 4 /* largest */
            invokevirtual java.math.BigInteger.getToomSlice:(IIII)Ljava/math/BigInteger;
            astore 9 /* a2 */
        start local 9 // java.math.BigInteger a2
         6: .line 1781
            aload 0 /* a */
            iload 5 /* k */
            iload 6 /* r */
            iconst_1
            iload 4 /* largest */
            invokevirtual java.math.BigInteger.getToomSlice:(IIII)Ljava/math/BigInteger;
            astore 8 /* a1 */
        start local 8 // java.math.BigInteger a1
         7: .line 1782
            aload 0 /* a */
            iload 5 /* k */
            iload 6 /* r */
            iconst_2
            iload 4 /* largest */
            invokevirtual java.math.BigInteger.getToomSlice:(IIII)Ljava/math/BigInteger;
            astore 7 /* a0 */
        start local 7 // java.math.BigInteger a0
         8: .line 1783
            aload 1 /* b */
            iload 5 /* k */
            iload 6 /* r */
            iconst_0
            iload 4 /* largest */
            invokevirtual java.math.BigInteger.getToomSlice:(IIII)Ljava/math/BigInteger;
            astore 12 /* b2 */
        start local 12 // java.math.BigInteger b2
         9: .line 1784
            aload 1 /* b */
            iload 5 /* k */
            iload 6 /* r */
            iconst_1
            iload 4 /* largest */
            invokevirtual java.math.BigInteger.getToomSlice:(IIII)Ljava/math/BigInteger;
            astore 11 /* b1 */
        start local 11 // java.math.BigInteger b1
        10: .line 1785
            aload 1 /* b */
            iload 5 /* k */
            iload 6 /* r */
            iconst_2
            iload 4 /* largest */
            invokevirtual java.math.BigInteger.getToomSlice:(IIII)Ljava/math/BigInteger;
            astore 10 /* b0 */
        start local 10 // java.math.BigInteger b0
        11: .line 1789
            aload 7 /* a0 */
            aload 10 /* b0 */
            iconst_1
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;Z)Ljava/math/BigInteger;
            astore 13 /* v0 */
        start local 13 // java.math.BigInteger v0
        12: .line 1790
            aload 9 /* a2 */
            aload 7 /* a0 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 21 /* da1 */
        start local 21 // java.math.BigInteger da1
        13: .line 1791
            aload 12 /* b2 */
            aload 10 /* b0 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 22 /* db1 */
        start local 22 // java.math.BigInteger db1
        14: .line 1792
            aload 21 /* da1 */
            aload 8 /* a1 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 22 /* db1 */
            aload 11 /* b1 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            iconst_1
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;Z)Ljava/math/BigInteger;
            astore 16 /* vm1 */
        start local 16 // java.math.BigInteger vm1
        15: .line 1793
            aload 21 /* da1 */
            aload 8 /* a1 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 21 /* da1 */
        16: .line 1794
            aload 22 /* db1 */
            aload 11 /* b1 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 22 /* db1 */
        17: .line 1795
            aload 21 /* da1 */
            aload 22 /* db1 */
            iconst_1
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;Z)Ljava/math/BigInteger;
            astore 14 /* v1 */
        start local 14 // java.math.BigInteger v1
        18: .line 1796
            aload 21 /* da1 */
            aload 9 /* a2 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            iconst_1
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            aload 7 /* a0 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
        19: .line 1797
            aload 22 /* db1 */
            aload 12 /* b2 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            iconst_1
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            aload 10 /* b0 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            iconst_1
        20: .line 1796
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;Z)Ljava/math/BigInteger;
            astore 15 /* v2 */
        start local 15 // java.math.BigInteger v2
        21: .line 1798
            aload 9 /* a2 */
            aload 12 /* b2 */
            iconst_1
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;Z)Ljava/math/BigInteger;
            astore 17 /* vinf */
        start local 17 // java.math.BigInteger vinf
        22: .line 1806
            aload 15 /* v2 */
            aload 16 /* vm1 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.exactDivideBy3:()Ljava/math/BigInteger;
            astore 19 /* t2 */
        start local 19 // java.math.BigInteger t2
        23: .line 1807
            aload 14 /* v1 */
            aload 16 /* vm1 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            iconst_1
            invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
            astore 20 /* tm1 */
        start local 20 // java.math.BigInteger tm1
        24: .line 1808
            aload 14 /* v1 */
            aload 13 /* v0 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 18 /* t1 */
        start local 18 // java.math.BigInteger t1
        25: .line 1809
            aload 19 /* t2 */
            aload 18 /* t1 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            iconst_1
            invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
            astore 19 /* t2 */
        26: .line 1810
            aload 18 /* t1 */
            aload 20 /* tm1 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 17 /* vinf */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 18 /* t1 */
        27: .line 1811
            aload 19 /* t2 */
            aload 17 /* vinf */
            iconst_1
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 19 /* t2 */
        28: .line 1812
            aload 20 /* tm1 */
            aload 19 /* t2 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 20 /* tm1 */
        29: .line 1815
            iload 5 /* k */
            bipush 32
            imul
            istore 23 /* ss */
        start local 23 // int ss
        30: .line 1817
            aload 17 /* vinf */
            iload 23 /* ss */
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            aload 19 /* t2 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            iload 23 /* ss */
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            aload 18 /* t1 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            iload 23 /* ss */
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            aload 20 /* tm1 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            iload 23 /* ss */
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            aload 13 /* v0 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 24 /* result */
        start local 24 // java.math.BigInteger result
        31: .line 1819
            aload 0 /* a */
            getfield java.math.BigInteger.signum:I
            aload 1 /* b */
            getfield java.math.BigInteger.signum:I
            if_icmpeq 33
        32: .line 1820
            aload 24 /* result */
            invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
            areturn
        33: .line 1822
      StackMap locals: java.math.BigInteger java.math.BigInteger int int int int int java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger int java.math.BigInteger
      StackMap stack:
            aload 24 /* result */
            areturn
        end local 24 // java.math.BigInteger result
        end local 23 // int ss
        end local 22 // java.math.BigInteger db1
        end local 21 // java.math.BigInteger da1
        end local 20 // java.math.BigInteger tm1
        end local 19 // java.math.BigInteger t2
        end local 18 // java.math.BigInteger t1
        end local 17 // java.math.BigInteger vinf
        end local 16 // java.math.BigInteger vm1
        end local 15 // java.math.BigInteger v2
        end local 14 // java.math.BigInteger v1
        end local 13 // java.math.BigInteger v0
        end local 12 // java.math.BigInteger b2
        end local 11 // java.math.BigInteger b1
        end local 10 // java.math.BigInteger b0
        end local 9 // java.math.BigInteger a2
        end local 8 // java.math.BigInteger a1
        end local 7 // java.math.BigInteger a0
        end local 6 // int r
        end local 5 // int k
        end local 4 // int largest
        end local 3 // int blen
        end local 2 // int alen
        end local 1 // java.math.BigInteger b
        end local 0 // java.math.BigInteger a
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   34     0        a  Ljava/math/BigInteger;
            0   34     1        b  Ljava/math/BigInteger;
            1   34     2     alen  I
            2   34     3     blen  I
            3   34     4  largest  I
            4   34     5        k  I
            5   34     6        r  I
            8   34     7       a0  Ljava/math/BigInteger;
            7   34     8       a1  Ljava/math/BigInteger;
            6   34     9       a2  Ljava/math/BigInteger;
           11   34    10       b0  Ljava/math/BigInteger;
           10   34    11       b1  Ljava/math/BigInteger;
            9   34    12       b2  Ljava/math/BigInteger;
           12   34    13       v0  Ljava/math/BigInteger;
           18   34    14       v1  Ljava/math/BigInteger;
           21   34    15       v2  Ljava/math/BigInteger;
           15   34    16      vm1  Ljava/math/BigInteger;
           22   34    17     vinf  Ljava/math/BigInteger;
           25   34    18       t1  Ljava/math/BigInteger;
           23   34    19       t2  Ljava/math/BigInteger;
           24   34    20      tm1  Ljava/math/BigInteger;
           13   34    21      da1  Ljava/math/BigInteger;
           14   34    22      db1  Ljava/math/BigInteger;
           30   34    23       ss  I
           31   34    24   result  Ljava/math/BigInteger;
    MethodParameters:
      Name  Flags
      a     
      b     

  private java.math.BigInteger getToomSlice(int, int, int, int);
    descriptor: (IIII)Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=11, args_size=5
        start local 0 // java.math.BigInteger this
        start local 1 // int lowerSize
        start local 2 // int upperSize
        start local 3 // int slice
        start local 4 // int fullsize
         0: .line 1844
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            istore 8 /* len */
        start local 8 // int len
         1: .line 1845
            iload 4 /* fullsize */
            iload 8 /* len */
            isub
            istore 9 /* offset */
        start local 9 // int offset
         2: .line 1847
            iload 3 /* slice */
            ifne 6
         3: .line 1848
            iconst_0
            iload 9 /* offset */
            isub
            istore 5 /* start */
        start local 5 // int start
         4: .line 1849
            iload 2 /* upperSize */
            iconst_1
            isub
            iload 9 /* offset */
            isub
            istore 6 /* end */
        start local 6 // int end
         5: .line 1850
            goto 8
        end local 6 // int end
        end local 5 // int start
         6: .line 1851
      StackMap locals: java.math.BigInteger int int int int top top top int int
      StackMap stack:
            iload 2 /* upperSize */
            iload 3 /* slice */
            iconst_1
            isub
            iload 1 /* lowerSize */
            imul
            iadd
            iload 9 /* offset */
            isub
            istore 5 /* start */
        start local 5 // int start
         7: .line 1852
            iload 5 /* start */
            iload 1 /* lowerSize */
            iadd
            iconst_1
            isub
            istore 6 /* end */
        start local 6 // int end
         8: .line 1855
      StackMap locals: java.math.BigInteger int int int int int int top int int
      StackMap stack:
            iload 5 /* start */
            ifge 10
         9: .line 1856
            iconst_0
            istore 5 /* start */
        10: .line 1858
      StackMap locals:
      StackMap stack:
            iload 6 /* end */
            ifge 12
        11: .line 1859
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            areturn
        12: .line 1862
      StackMap locals:
      StackMap stack:
            iload 6 /* end */
            iload 5 /* start */
            isub
            iconst_1
            iadd
            istore 7 /* sliceSize */
        start local 7 // int sliceSize
        13: .line 1864
            iload 7 /* sliceSize */
            ifgt 15
        14: .line 1865
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            areturn
        15: .line 1870
      StackMap locals: java.math.BigInteger int int int int int int int int int
      StackMap stack:
            iload 5 /* start */
            ifne 17
            iload 7 /* sliceSize */
            iload 8 /* len */
            if_icmplt 17
        16: .line 1871
            aload 0 /* this */
            invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
            areturn
        17: .line 1874
      StackMap locals:
      StackMap stack:
            iload 7 /* sliceSize */
            newarray 10
            astore 10 /* intSlice */
        start local 10 // int[] intSlice
        18: .line 1875
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iload 5 /* start */
            aload 10 /* intSlice */
            iconst_0
            iload 7 /* sliceSize */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        19: .line 1877
            new java.math.BigInteger
            dup
            aload 10 /* intSlice */
            invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
            iconst_1
            invokespecial java.math.BigInteger.<init>:([II)V
            areturn
        end local 10 // int[] intSlice
        end local 9 // int offset
        end local 8 // int len
        end local 7 // int sliceSize
        end local 6 // int end
        end local 5 // int start
        end local 4 // int fullsize
        end local 3 // int slice
        end local 2 // int upperSize
        end local 1 // int lowerSize
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   20     0       this  Ljava/math/BigInteger;
            0   20     1  lowerSize  I
            0   20     2  upperSize  I
            0   20     3      slice  I
            0   20     4   fullsize  I
            4    6     5      start  I
            7   20     5      start  I
            5    6     6        end  I
            8   20     6        end  I
           13   20     7  sliceSize  I
            1   20     8        len  I
            2   20     9     offset  I
           18   20    10   intSlice  [I
    MethodParameters:
           Name  Flags
      lowerSize  
      upperSize  
      slice      
      fullsize   

  private java.math.BigInteger exactDivideBy3();
    descriptor: ()Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=12, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 1889
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            istore 1 /* len */
        start local 1 // int len
         1: .line 1890
            iload 1 /* len */
            newarray 10
            astore 2 /* result */
        start local 2 // int[] result
         2: .line 1892
            lconst_0
            lstore 9 /* borrow */
        start local 9 // long borrow
         3: .line 1893
            iload 1 /* len */
            iconst_1
            isub
            istore 11 /* i */
        start local 11 // int i
         4: goto 18
         5: .line 1894
      StackMap locals: java.math.BigInteger int int[] top top top top top top long int
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iload 11 /* i */
            iaload
            i2l
            ldc 4294967295
            land
            lstore 3 /* x */
        start local 3 // long x
         6: .line 1895
            lload 3 /* x */
            lload 9 /* borrow */
            lsub
            lstore 5 /* w */
        start local 5 // long w
         7: .line 1896
            lload 9 /* borrow */
            lload 3 /* x */
            lcmp
            ifle 10
         8: .line 1897
            lconst_1
            lstore 9 /* borrow */
         9: .line 1898
            goto 11
        10: .line 1899
      StackMap locals: java.math.BigInteger int int[] long long top top long int
      StackMap stack:
            lconst_0
            lstore 9 /* borrow */
        11: .line 1905
      StackMap locals:
      StackMap stack:
            lload 5 /* w */
            ldc 2863311531
            lmul
            ldc 4294967295
            land
            lstore 7 /* q */
        start local 7 // long q
        12: .line 1906
            aload 2 /* result */
            iload 11 /* i */
            lload 7 /* q */
            l2i
            iastore
        13: .line 1910
            lload 7 /* q */
            ldc 1431655766
            lcmp
            iflt 17
        14: .line 1911
            lload 9 /* borrow */
            lconst_1
            ladd
            lstore 9 /* borrow */
        15: .line 1912
            lload 7 /* q */
            ldc 2863311531
            lcmp
            iflt 17
        16: .line 1913
            lload 9 /* borrow */
            lconst_1
            ladd
            lstore 9 /* borrow */
        17: .line 1893
      StackMap locals: java.math.BigInteger int int[] long long long long int
      StackMap stack:
            iinc 11 /* i */ -1
        end local 7 // long q
        end local 5 // long w
        end local 3 // long x
      StackMap locals: java.math.BigInteger int int[] top top top top top top long int
      StackMap stack:
        18: iload 11 /* i */
            ifge 5
        end local 11 // int i
        19: .line 1916
            aload 2 /* result */
            invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
            astore 2 /* result */
        20: .line 1917
            new java.math.BigInteger
            dup
            aload 2 /* result */
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            invokespecial java.math.BigInteger.<init>:([II)V
            areturn
        end local 9 // long borrow
        end local 2 // int[] result
        end local 1 // int len
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   21     0    this  Ljava/math/BigInteger;
            1   21     1     len  I
            2   21     2  result  [I
            6   18     3       x  J
            7   18     5       w  J
           12   18     7       q  J
            3   21     9  borrow  J
            4   19    11       i  I

  private java.math.BigInteger getLower(int);
    descriptor: (I)Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // int n
         0: .line 1925
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            istore 2 /* len */
        start local 2 // int len
         1: .line 1927
            iload 2 /* len */
            iload 1 /* n */
            if_icmpgt 3
         2: .line 1928
            aload 0 /* this */
            invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
            areturn
         3: .line 1931
      StackMap locals: int
      StackMap stack:
            iload 1 /* n */
            newarray 10
            astore 3 /* lowerInts */
        start local 3 // int[] lowerInts
         4: .line 1932
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iload 2 /* len */
            iload 1 /* n */
            isub
            aload 3 /* lowerInts */
            iconst_0
            iload 1 /* n */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         5: .line 1934
            new java.math.BigInteger
            dup
            aload 3 /* lowerInts */
            invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
            iconst_1
            invokespecial java.math.BigInteger.<init>:([II)V
            areturn
        end local 3 // int[] lowerInts
        end local 2 // int len
        end local 1 // int n
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Ljava/math/BigInteger;
            0    6     1          n  I
            1    6     2        len  I
            4    6     3  lowerInts  [I
    MethodParameters:
      Name  Flags
      n     

  private java.math.BigInteger getUpper(int);
    descriptor: (I)Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // int n
         0: .line 1943
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            istore 2 /* len */
        start local 2 // int len
         1: .line 1945
            iload 2 /* len */
            iload 1 /* n */
            if_icmpgt 3
         2: .line 1946
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            areturn
         3: .line 1949
      StackMap locals: int
      StackMap stack:
            iload 2 /* len */
            iload 1 /* n */
            isub
            istore 3 /* upperLen */
        start local 3 // int upperLen
         4: .line 1950
            iload 3 /* upperLen */
            newarray 10
            astore 4 /* upperInts */
        start local 4 // int[] upperInts
         5: .line 1951
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_0
            aload 4 /* upperInts */
            iconst_0
            iload 3 /* upperLen */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         6: .line 1953
            new java.math.BigInteger
            dup
            aload 4 /* upperInts */
            invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
            iconst_1
            invokespecial java.math.BigInteger.<init>:([II)V
            areturn
        end local 4 // int[] upperInts
        end local 3 // int upperLen
        end local 2 // int len
        end local 1 // int n
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Ljava/math/BigInteger;
            0    7     1          n  I
            1    7     2        len  I
            4    7     3   upperLen  I
            5    7     4  upperInts  [I
    MethodParameters:
      Name  Flags
      n     

  private java.math.BigInteger square();
    descriptor: ()Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 1964
            aload 0 /* this */
            iconst_0
            invokevirtual java.math.BigInteger.square:(Z)Ljava/math/BigInteger;
            areturn
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/math/BigInteger;

  private java.math.BigInteger square(boolean);
    descriptor: (Z)Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // boolean isRecursion
         0: .line 1975
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifne 2
         1: .line 1976
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            areturn
         2: .line 1978
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            istore 2 /* len */
        start local 2 // int len
         3: .line 1980
            iload 2 /* len */
            sipush 128
            if_icmpge 6
         4: .line 1981
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iload 2 /* len */
            aconst_null
            invokestatic java.math.BigInteger.squareToLen:([II[I)[I
            astore 3 /* z */
        start local 3 // int[] z
         5: .line 1982
            new java.math.BigInteger
            dup
            aload 3 /* z */
            invokestatic java.math.BigInteger.trustedStripLeadingZeroInts:([I)[I
            iconst_1
            invokespecial java.math.BigInteger.<init>:([II)V
            areturn
        end local 3 // int[] z
         6: .line 1984
      StackMap locals: int
      StackMap stack:
            iload 2 /* len */
            sipush 216
            if_icmpge 8
         7: .line 1985
            aload 0 /* this */
            invokevirtual java.math.BigInteger.squareKaratsuba:()Ljava/math/BigInteger;
            areturn
         8: .line 1990
      StackMap locals:
      StackMap stack:
            iload 1 /* isRecursion */
            ifne 11
         9: .line 1991
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            invokestatic java.math.BigInteger.bitLength:([II)I
            i2l
            ldc 1073741824
            lcmp
            ifle 11
        10: .line 1992
            invokestatic java.math.BigInteger.reportOverflow:()V
        11: .line 1996
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.math.BigInteger.squareToomCook3:()Ljava/math/BigInteger;
            areturn
        end local 2 // int len
        end local 1 // boolean isRecursion
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   12     0         this  Ljava/math/BigInteger;
            0   12     1  isRecursion  Z
            3   12     2          len  I
            5    6     3            z  [I
    MethodParameters:
             Name  Flags
      isRecursion  

  private static final int[] squareToLen(int[], int, int[]);
    descriptor: ([II[I)[I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // int[] x
        start local 1 // int len
        start local 2 // int[] z
         0: .line 2006
            iload 1 /* len */
            iconst_1
            ishl
            istore 3 /* zlen */
        start local 3 // int zlen
         1: .line 2007
            aload 2 /* z */
            ifnull 2
            aload 2 /* z */
            arraylength
            iload 3 /* zlen */
            if_icmpge 3
         2: .line 2008
      StackMap locals: int
      StackMap stack:
            iload 3 /* zlen */
            newarray 10
            astore 2 /* z */
         3: .line 2011
      StackMap locals:
      StackMap stack:
            aload 0 /* x */
            iload 1 /* len */
            aload 2 /* z */
            iload 3 /* zlen */
            invokestatic java.math.BigInteger.implSquareToLenChecks:([II[II)V
         4: .line 2012
            aload 0 /* x */
            iload 1 /* len */
            aload 2 /* z */
            iload 3 /* zlen */
            invokestatic java.math.BigInteger.implSquareToLen:([II[II)[I
            areturn
        end local 3 // int zlen
        end local 2 // int[] z
        end local 1 // int len
        end local 0 // int[] x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0     x  [I
            0    5     1   len  I
            0    5     2     z  [I
            1    5     3  zlen  I
    MethodParameters:
      Name  Flags
      x     
      len   
      z     

  private static void implSquareToLenChecks(int[], int, int[], int);
    descriptor: ([II[II)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // int[] x
        start local 1 // int len
        start local 2 // int[] z
        start local 3 // int zlen
         0: .line 2019
            iload 1 /* len */
            iconst_1
            if_icmpge 2
         1: .line 2020
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "invalid input length: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* len */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 2022
      StackMap locals:
      StackMap stack:
            iload 1 /* len */
            aload 0 /* x */
            arraylength
            if_icmple 6
         3: .line 2023
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "input length out of bound: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         4: .line 2024
            iload 1 /* len */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " > "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* x */
            arraylength
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         5: .line 2023
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 2026
      StackMap locals:
      StackMap stack:
            iload 1 /* len */
            iconst_2
            imul
            aload 2 /* z */
            arraylength
            if_icmple 10
         7: .line 2027
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "input length out of bound: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         8: .line 2028
            iload 1 /* len */
            iconst_2
            imul
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " > "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* z */
            arraylength
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 2027
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 2030
      StackMap locals:
      StackMap stack:
            iload 3 /* zlen */
            iconst_1
            if_icmpge 12
        11: .line 2031
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "invalid input length: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 3 /* zlen */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 2033
      StackMap locals:
      StackMap stack:
            iload 3 /* zlen */
            aload 2 /* z */
            arraylength
            if_icmple 16
        13: .line 2034
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "input length out of bound: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        14: .line 2035
            iload 1 /* len */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " > "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* z */
            arraylength
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        15: .line 2034
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        16: .line 2037
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int zlen
        end local 2 // int[] z
        end local 1 // int len
        end local 0 // int[] x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   17     0     x  [I
            0   17     1   len  I
            0   17     2     z  [I
            0   17     3  zlen  I
    Exceptions:
      throws java.lang.RuntimeException
    MethodParameters:
      Name  Flags
      x     
      len   
      z     
      zlen  

  private static final int[] implSquareToLen(int[], int, int[], int);
    descriptor: ([II[II)[I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Code:
      stack=6, locals=11, args_size=4
        start local 0 // int[] x
        start local 1 // int len
        start local 2 // int[] z
        start local 3 // int zlen
         0: .line 2079
            iconst_0
            istore 4 /* lastProductLowWord */
        start local 4 // int lastProductLowWord
         1: .line 2080
            iconst_0
            istore 5 /* j */
        start local 5 // int j
         2: iconst_0
            istore 6 /* i */
        start local 6 // int i
         3: goto 10
         4: .line 2081
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* x */
            iload 5 /* j */
            iaload
            i2l
            ldc 4294967295
            land
            lstore 7 /* piece */
        start local 7 // long piece
         5: .line 2082
            lload 7 /* piece */
            lload 7 /* piece */
            lmul
            lstore 9 /* product */
        start local 9 // long product
         6: .line 2083
            aload 2 /* z */
            iload 6 /* i */
            iinc 6 /* i */ 1
            iload 4 /* lastProductLowWord */
            bipush 31
            ishl
            lload 9 /* product */
            bipush 33
            lushr
            l2i
            ior
            iastore
         7: .line 2084
            aload 2 /* z */
            iload 6 /* i */
            iinc 6 /* i */ 1
            lload 9 /* product */
            iconst_1
            lushr
            l2i
            iastore
         8: .line 2085
            lload 9 /* product */
            l2i
            istore 4 /* lastProductLowWord */
        end local 9 // long product
        end local 7 // long piece
         9: .line 2080
            iinc 5 /* j */ 1
      StackMap locals:
      StackMap stack:
        10: iload 5 /* j */
            iload 1 /* len */
            if_icmplt 4
        end local 6 // int i
        end local 5 // int j
        11: .line 2089
            iload 1 /* len */
            istore 5 /* i */
        start local 5 // int i
        12: iconst_1
            istore 6 /* offset */
        start local 6 // int offset
        13: goto 18
        14: .line 2090
      StackMap locals:
      StackMap stack:
            aload 0 /* x */
            iload 5 /* i */
            iconst_1
            isub
            iaload
            istore 7 /* t */
        start local 7 // int t
        15: .line 2091
            aload 2 /* z */
            aload 0 /* x */
            iload 6 /* offset */
            iload 5 /* i */
            iconst_1
            isub
            iload 7 /* t */
            invokestatic java.math.BigInteger.mulAdd:([I[IIII)I
            istore 7 /* t */
        16: .line 2092
            aload 2 /* z */
            iload 6 /* offset */
            iconst_1
            isub
            iload 5 /* i */
            iload 7 /* t */
            invokestatic java.math.BigInteger.addOne:([IIII)I
            pop
        end local 7 // int t
        17: .line 2089
            iinc 5 /* i */ -1
            iinc 6 /* offset */ 2
      StackMap locals:
      StackMap stack:
        18: iload 5 /* i */
            ifgt 14
        end local 6 // int offset
        end local 5 // int i
        19: .line 2096
            aload 2 /* z */
            iload 3 /* zlen */
            iconst_1
            invokestatic java.math.BigInteger.primitiveLeftShift:([III)V
        20: .line 2097
            aload 2 /* z */
            iload 3 /* zlen */
            iconst_1
            isub
            dup2
            iaload
            aload 0 /* x */
            iload 1 /* len */
            iconst_1
            isub
            iaload
            iconst_1
            iand
            ior
            iastore
        21: .line 2099
            aload 2 /* z */
            areturn
        end local 4 // int lastProductLowWord
        end local 3 // int zlen
        end local 2 // int[] z
        end local 1 // int len
        end local 0 // int[] x
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   22     0                   x  [I
            0   22     1                 len  I
            0   22     2                   z  [I
            0   22     3                zlen  I
            1   22     4  lastProductLowWord  I
            2   11     5                   j  I
            3   11     6                   i  I
            5    9     7               piece  J
            6    9     9             product  J
           12   19     5                   i  I
           13   19     6              offset  I
           15   17     7                   t  I
    MethodParameters:
      Name  Flags
      x     
      len   
      z     
      zlen  

  private java.math.BigInteger squareKaratsuba();
    descriptor: ()Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 2110
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            iconst_1
            iadd
            iconst_2
            idiv
            istore 1 /* half */
        start local 1 // int half
         1: .line 2112
            aload 0 /* this */
            iload 1 /* half */
            invokevirtual java.math.BigInteger.getLower:(I)Ljava/math/BigInteger;
            astore 2 /* xl */
        start local 2 // java.math.BigInteger xl
         2: .line 2113
            aload 0 /* this */
            iload 1 /* half */
            invokevirtual java.math.BigInteger.getUpper:(I)Ljava/math/BigInteger;
            astore 3 /* xh */
        start local 3 // java.math.BigInteger xh
         3: .line 2115
            aload 3 /* xh */
            invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
            astore 4 /* xhs */
        start local 4 // java.math.BigInteger xhs
         4: .line 2116
            aload 2 /* xl */
            invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
            astore 5 /* xls */
        start local 5 // java.math.BigInteger xls
         5: .line 2119
            aload 4 /* xhs */
            iload 1 /* half */
            bipush 32
            imul
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            aload 2 /* xl */
            aload 3 /* xh */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
            aload 4 /* xhs */
            aload 5 /* xls */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            iload 1 /* half */
            bipush 32
            imul
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            aload 5 /* xls */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            areturn
        end local 5 // java.math.BigInteger xls
        end local 4 // java.math.BigInteger xhs
        end local 3 // java.math.BigInteger xh
        end local 2 // java.math.BigInteger xl
        end local 1 // int half
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Ljava/math/BigInteger;
            1    6     1  half  I
            2    6     2    xl  Ljava/math/BigInteger;
            3    6     3    xh  Ljava/math/BigInteger;
            4    6     4   xhs  Ljava/math/BigInteger;
            5    6     5   xls  Ljava/math/BigInteger;

  private java.math.BigInteger squareToomCook3();
    descriptor: ()Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=17, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 2130
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            istore 1 /* len */
        start local 1 // int len
         1: .line 2133
            iload 1 /* len */
            iconst_2
            iadd
            iconst_3
            idiv
            istore 2 /* k */
        start local 2 // int k
         2: .line 2136
            iload 1 /* len */
            iconst_2
            iload 2 /* k */
            imul
            isub
            istore 3 /* r */
        start local 3 // int r
         3: .line 2141
            aload 0 /* this */
            iload 2 /* k */
            iload 3 /* r */
            iconst_0
            iload 1 /* len */
            invokevirtual java.math.BigInteger.getToomSlice:(IIII)Ljava/math/BigInteger;
            astore 6 /* a2 */
        start local 6 // java.math.BigInteger a2
         4: .line 2142
            aload 0 /* this */
            iload 2 /* k */
            iload 3 /* r */
            iconst_1
            iload 1 /* len */
            invokevirtual java.math.BigInteger.getToomSlice:(IIII)Ljava/math/BigInteger;
            astore 5 /* a1 */
        start local 5 // java.math.BigInteger a1
         5: .line 2143
            aload 0 /* this */
            iload 2 /* k */
            iload 3 /* r */
            iconst_2
            iload 1 /* len */
            invokevirtual java.math.BigInteger.getToomSlice:(IIII)Ljava/math/BigInteger;
            astore 4 /* a0 */
        start local 4 // java.math.BigInteger a0
         6: .line 2146
            aload 4 /* a0 */
            iconst_1
            invokevirtual java.math.BigInteger.square:(Z)Ljava/math/BigInteger;
            astore 7 /* v0 */
        start local 7 // java.math.BigInteger v0
         7: .line 2147
            aload 6 /* a2 */
            aload 4 /* a0 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 15 /* da1 */
        start local 15 // java.math.BigInteger da1
         8: .line 2148
            aload 15 /* da1 */
            aload 5 /* a1 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            iconst_1
            invokevirtual java.math.BigInteger.square:(Z)Ljava/math/BigInteger;
            astore 10 /* vm1 */
        start local 10 // java.math.BigInteger vm1
         9: .line 2149
            aload 15 /* da1 */
            aload 5 /* a1 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 15 /* da1 */
        10: .line 2150
            aload 15 /* da1 */
            iconst_1
            invokevirtual java.math.BigInteger.square:(Z)Ljava/math/BigInteger;
            astore 8 /* v1 */
        start local 8 // java.math.BigInteger v1
        11: .line 2151
            aload 6 /* a2 */
            iconst_1
            invokevirtual java.math.BigInteger.square:(Z)Ljava/math/BigInteger;
            astore 11 /* vinf */
        start local 11 // java.math.BigInteger vinf
        12: .line 2152
            aload 15 /* da1 */
            aload 6 /* a2 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            iconst_1
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            aload 4 /* a0 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            iconst_1
            invokevirtual java.math.BigInteger.square:(Z)Ljava/math/BigInteger;
            astore 9 /* v2 */
        start local 9 // java.math.BigInteger v2
        13: .line 2160
            aload 9 /* v2 */
            aload 10 /* vm1 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.exactDivideBy3:()Ljava/math/BigInteger;
            astore 13 /* t2 */
        start local 13 // java.math.BigInteger t2
        14: .line 2161
            aload 8 /* v1 */
            aload 10 /* vm1 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            iconst_1
            invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
            astore 14 /* tm1 */
        start local 14 // java.math.BigInteger tm1
        15: .line 2162
            aload 8 /* v1 */
            aload 7 /* v0 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 12 /* t1 */
        start local 12 // java.math.BigInteger t1
        16: .line 2163
            aload 13 /* t2 */
            aload 12 /* t1 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            iconst_1
            invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
            astore 13 /* t2 */
        17: .line 2164
            aload 12 /* t1 */
            aload 14 /* tm1 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 11 /* vinf */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 12 /* t1 */
        18: .line 2165
            aload 13 /* t2 */
            aload 11 /* vinf */
            iconst_1
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 13 /* t2 */
        19: .line 2166
            aload 14 /* tm1 */
            aload 13 /* t2 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 14 /* tm1 */
        20: .line 2169
            iload 2 /* k */
            bipush 32
            imul
            istore 16 /* ss */
        start local 16 // int ss
        21: .line 2171
            aload 11 /* vinf */
            iload 16 /* ss */
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            aload 13 /* t2 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            iload 16 /* ss */
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            aload 12 /* t1 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            iload 16 /* ss */
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            aload 14 /* tm1 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            iload 16 /* ss */
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            aload 7 /* v0 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            areturn
        end local 16 // int ss
        end local 15 // java.math.BigInteger da1
        end local 14 // java.math.BigInteger tm1
        end local 13 // java.math.BigInteger t2
        end local 12 // java.math.BigInteger t1
        end local 11 // java.math.BigInteger vinf
        end local 10 // java.math.BigInteger vm1
        end local 9 // java.math.BigInteger v2
        end local 8 // java.math.BigInteger v1
        end local 7 // java.math.BigInteger v0
        end local 6 // java.math.BigInteger a2
        end local 5 // java.math.BigInteger a1
        end local 4 // java.math.BigInteger a0
        end local 3 // int r
        end local 2 // int k
        end local 1 // int len
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   22     0  this  Ljava/math/BigInteger;
            1   22     1   len  I
            2   22     2     k  I
            3   22     3     r  I
            6   22     4    a0  Ljava/math/BigInteger;
            5   22     5    a1  Ljava/math/BigInteger;
            4   22     6    a2  Ljava/math/BigInteger;
            7   22     7    v0  Ljava/math/BigInteger;
           11   22     8    v1  Ljava/math/BigInteger;
           13   22     9    v2  Ljava/math/BigInteger;
            9   22    10   vm1  Ljava/math/BigInteger;
           12   22    11  vinf  Ljava/math/BigInteger;
           16   22    12    t1  Ljava/math/BigInteger;
           14   22    13    t2  Ljava/math/BigInteger;
           15   22    14   tm1  Ljava/math/BigInteger;
            8   22    15   da1  Ljava/math/BigInteger;
           21   22    16    ss  I

  public java.math.BigInteger divide(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 2184
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            arraylength
            bipush 80
            if_icmplt 2
         1: .line 2185
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            arraylength
            isub
            bipush 40
            if_icmpge 3
         2: .line 2186
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* val */
            invokevirtual java.math.BigInteger.divideKnuth:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            areturn
         3: .line 2188
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* val */
            invokevirtual java.math.BigInteger.divideBurnikelZiegler:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            areturn
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljava/math/BigInteger;
            0    4     1   val  Ljava/math/BigInteger;
    MethodParameters:
      Name  Flags
      val   

  private java.math.BigInteger divideKnuth(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 2201
            new java.math.MutableBigInteger
            dup
            invokespecial java.math.MutableBigInteger.<init>:()V
            astore 2 /* q */
        start local 2 // java.math.MutableBigInteger q
         1: .line 2202
            new java.math.MutableBigInteger
            dup
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            invokespecial java.math.MutableBigInteger.<init>:([I)V
            astore 3 /* a */
        start local 3 // java.math.MutableBigInteger a
         2: .line 2203
            new java.math.MutableBigInteger
            dup
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            invokespecial java.math.MutableBigInteger.<init>:([I)V
            astore 4 /* b */
        start local 4 // java.math.MutableBigInteger b
         3: .line 2205
            aload 3 /* a */
            aload 4 /* b */
            aload 2 /* q */
            iconst_0
            invokevirtual java.math.MutableBigInteger.divideKnuth:(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;Z)Ljava/math/MutableBigInteger;
            pop
         4: .line 2206
            aload 2 /* q */
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            aload 1 /* val */
            getfield java.math.BigInteger.signum:I
            imul
            invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
            areturn
        end local 4 // java.math.MutableBigInteger b
        end local 3 // java.math.MutableBigInteger a
        end local 2 // java.math.MutableBigInteger q
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Ljava/math/BigInteger;
            0    5     1   val  Ljava/math/BigInteger;
            1    5     2     q  Ljava/math/MutableBigInteger;
            2    5     3     a  Ljava/math/MutableBigInteger;
            3    5     4     b  Ljava/math/MutableBigInteger;
    MethodParameters:
      Name  Flags
      val   

  public java.math.BigInteger[] divideAndRemainder(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)[Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 2221
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            arraylength
            bipush 80
            if_icmplt 2
         1: .line 2222
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            arraylength
            isub
            bipush 40
            if_icmpge 3
         2: .line 2223
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* val */
            invokevirtual java.math.BigInteger.divideAndRemainderKnuth:(Ljava/math/BigInteger;)[Ljava/math/BigInteger;
            areturn
         3: .line 2225
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* val */
            invokevirtual java.math.BigInteger.divideAndRemainderBurnikelZiegler:(Ljava/math/BigInteger;)[Ljava/math/BigInteger;
            areturn
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljava/math/BigInteger;
            0    4     1   val  Ljava/math/BigInteger;
    MethodParameters:
      Name  Flags
      val   

  private java.math.BigInteger[] divideAndRemainderKnuth(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)[Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=7, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 2231
            iconst_2
            anewarray java.math.BigInteger
            astore 2 /* result */
        start local 2 // java.math.BigInteger[] result
         1: .line 2232
            new java.math.MutableBigInteger
            dup
            invokespecial java.math.MutableBigInteger.<init>:()V
            astore 3 /* q */
        start local 3 // java.math.MutableBigInteger q
         2: .line 2233
            new java.math.MutableBigInteger
            dup
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            invokespecial java.math.MutableBigInteger.<init>:([I)V
            astore 4 /* a */
        start local 4 // java.math.MutableBigInteger a
         3: .line 2234
            new java.math.MutableBigInteger
            dup
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            invokespecial java.math.MutableBigInteger.<init>:([I)V
            astore 5 /* b */
        start local 5 // java.math.MutableBigInteger b
         4: .line 2235
            aload 4 /* a */
            aload 5 /* b */
            aload 3 /* q */
            invokevirtual java.math.MutableBigInteger.divideKnuth:(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger;
            astore 6 /* r */
        start local 6 // java.math.MutableBigInteger r
         5: .line 2236
            aload 2 /* result */
            iconst_0
            aload 3 /* q */
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            aload 1 /* val */
            getfield java.math.BigInteger.signum:I
            if_icmpne 6
            iconst_1
            goto 7
      StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger[] java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger
      StackMap stack: java.math.BigInteger[] int java.math.MutableBigInteger
         6: iconst_m1
      StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger[] java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger
      StackMap stack: java.math.BigInteger[] int java.math.MutableBigInteger int
         7: invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
            aastore
         8: .line 2237
            aload 2 /* result */
            iconst_1
            aload 6 /* r */
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
            aastore
         9: .line 2238
            aload 2 /* result */
            areturn
        end local 6 // java.math.MutableBigInteger r
        end local 5 // java.math.MutableBigInteger b
        end local 4 // java.math.MutableBigInteger a
        end local 3 // java.math.MutableBigInteger q
        end local 2 // java.math.BigInteger[] result
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   10     0    this  Ljava/math/BigInteger;
            0   10     1     val  Ljava/math/BigInteger;
            1   10     2  result  [Ljava/math/BigInteger;
            2   10     3       q  Ljava/math/MutableBigInteger;
            3   10     4       a  Ljava/math/MutableBigInteger;
            4   10     5       b  Ljava/math/MutableBigInteger;
            5   10     6       r  Ljava/math/MutableBigInteger;
    MethodParameters:
      Name  Flags
      val   

  public java.math.BigInteger remainder(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 2250
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            arraylength
            bipush 80
            if_icmplt 2
         1: .line 2251
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            arraylength
            isub
            bipush 40
            if_icmpge 3
         2: .line 2252
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* val */
            invokevirtual java.math.BigInteger.remainderKnuth:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            areturn
         3: .line 2254
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* val */
            invokevirtual java.math.BigInteger.remainderBurnikelZiegler:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            areturn
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljava/math/BigInteger;
            0    4     1   val  Ljava/math/BigInteger;
    MethodParameters:
      Name  Flags
      val   

  private java.math.BigInteger remainderKnuth(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 2260
            new java.math.MutableBigInteger
            dup
            invokespecial java.math.MutableBigInteger.<init>:()V
            astore 2 /* q */
        start local 2 // java.math.MutableBigInteger q
         1: .line 2261
            new java.math.MutableBigInteger
            dup
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            invokespecial java.math.MutableBigInteger.<init>:([I)V
            astore 3 /* a */
        start local 3 // java.math.MutableBigInteger a
         2: .line 2262
            new java.math.MutableBigInteger
            dup
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            invokespecial java.math.MutableBigInteger.<init>:([I)V
            astore 4 /* b */
        start local 4 // java.math.MutableBigInteger b
         3: .line 2264
            aload 3 /* a */
            aload 4 /* b */
            aload 2 /* q */
            invokevirtual java.math.MutableBigInteger.divideKnuth:(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger;
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
            areturn
        end local 4 // java.math.MutableBigInteger b
        end local 3 // java.math.MutableBigInteger a
        end local 2 // java.math.MutableBigInteger q
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljava/math/BigInteger;
            0    4     1   val  Ljava/math/BigInteger;
            1    4     2     q  Ljava/math/MutableBigInteger;
            2    4     3     a  Ljava/math/MutableBigInteger;
            3    4     4     b  Ljava/math/MutableBigInteger;
    MethodParameters:
      Name  Flags
      val   

  private java.math.BigInteger divideBurnikelZiegler(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 2273
            aload 0 /* this */
            aload 1 /* val */
            invokevirtual java.math.BigInteger.divideAndRemainderBurnikelZiegler:(Ljava/math/BigInteger;)[Ljava/math/BigInteger;
            iconst_0
            aaload
            areturn
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/math/BigInteger;
            0    1     1   val  Ljava/math/BigInteger;
    MethodParameters:
      Name  Flags
      val   

  private java.math.BigInteger remainderBurnikelZiegler(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 2282
            aload 0 /* this */
            aload 1 /* val */
            invokevirtual java.math.BigInteger.divideAndRemainderBurnikelZiegler:(Ljava/math/BigInteger;)[Ljava/math/BigInteger;
            iconst_1
            aaload
            areturn
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/math/BigInteger;
            0    1     1   val  Ljava/math/BigInteger;
    MethodParameters:
      Name  Flags
      val   

  private java.math.BigInteger[] divideAndRemainderBurnikelZiegler(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)[Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 2292
            new java.math.MutableBigInteger
            dup
            invokespecial java.math.MutableBigInteger.<init>:()V
            astore 2 /* q */
        start local 2 // java.math.MutableBigInteger q
         1: .line 2293
            new java.math.MutableBigInteger
            dup
            aload 0 /* this */
            invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
            new java.math.MutableBigInteger
            dup
            aload 1 /* val */
            invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
            aload 2 /* q */
            invokevirtual java.math.MutableBigInteger.divideAndRemainderBurnikelZiegler:(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger;
            astore 3 /* r */
        start local 3 // java.math.MutableBigInteger r
         2: .line 2294
            aload 2 /* q */
            invokevirtual java.math.MutableBigInteger.isZero:()Z
            ifeq 3
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            goto 4
      StackMap locals: java.math.MutableBigInteger java.math.MutableBigInteger
      StackMap stack:
         3: aload 2 /* q */
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            aload 1 /* val */
            getfield java.math.BigInteger.signum:I
            imul
            invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
      StackMap locals:
      StackMap stack: java.math.BigInteger
         4: astore 4 /* qBigInt */
        start local 4 // java.math.BigInteger qBigInt
         5: .line 2295
            aload 3 /* r */
            invokevirtual java.math.MutableBigInteger.isZero:()Z
            ifeq 6
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            goto 7
      StackMap locals: java.math.BigInteger
      StackMap stack:
         6: aload 3 /* r */
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
      StackMap locals:
      StackMap stack: java.math.BigInteger
         7: astore 5 /* rBigInt */
        start local 5 // java.math.BigInteger rBigInt
         8: .line 2296
            iconst_2
            anewarray java.math.BigInteger
            dup
            iconst_0
            aload 4 /* qBigInt */
            aastore
            dup
            iconst_1
            aload 5 /* rBigInt */
            aastore
            areturn
        end local 5 // java.math.BigInteger rBigInt
        end local 4 // java.math.BigInteger qBigInt
        end local 3 // java.math.MutableBigInteger r
        end local 2 // java.math.MutableBigInteger q
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0     this  Ljava/math/BigInteger;
            0    9     1      val  Ljava/math/BigInteger;
            1    9     2        q  Ljava/math/MutableBigInteger;
            2    9     3        r  Ljava/math/MutableBigInteger;
            5    9     4  qBigInt  Ljava/math/BigInteger;
            8    9     5  rBigInt  Ljava/math/BigInteger;
    MethodParameters:
      Name  Flags
      val   

  public java.math.BigInteger pow(int);
    descriptor: (I)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=16, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // int exponent
         0: .line 2309
            iload 1 /* exponent */
            ifge 2
         1: .line 2310
            new java.lang.ArithmeticException
            dup
            ldc "Negative exponent"
            invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 2312
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifne 6
         3: .line 2313
            iload 1 /* exponent */
            ifne 4
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            goto 5
      StackMap locals:
      StackMap stack:
         4: aload 0 /* this */
      StackMap locals:
      StackMap stack: java.math.BigInteger
         5: areturn
         6: .line 2316
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
            astore 2 /* partToSquare */
        start local 2 // java.math.BigInteger partToSquare
         7: .line 2322
            aload 2 /* partToSquare */
            invokevirtual java.math.BigInteger.getLowestSetBit:()I
            istore 3 /* powersOfTwo */
        start local 3 // int powersOfTwo
         8: .line 2323
            iload 3 /* powersOfTwo */
            i2l
            iload 1 /* exponent */
            i2l
            lmul
            lstore 4 /* bitsToShiftLong */
        start local 4 // long bitsToShiftLong
         9: .line 2324
            lload 4 /* bitsToShiftLong */
            ldc 2147483647
            lcmp
            ifle 11
        10: .line 2325
            invokestatic java.math.BigInteger.reportOverflow:()V
        11: .line 2327
      StackMap locals: java.math.BigInteger int long
      StackMap stack:
            lload 4 /* bitsToShiftLong */
            l2i
            istore 6 /* bitsToShift */
        start local 6 // int bitsToShift
        12: .line 2332
            iload 3 /* powersOfTwo */
            ifle 19
        13: .line 2333
            aload 2 /* partToSquare */
            iload 3 /* powersOfTwo */
            invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
            astore 2 /* partToSquare */
        14: .line 2334
            aload 2 /* partToSquare */
            invokevirtual java.math.BigInteger.bitLength:()I
            istore 7 /* remainingBits */
        start local 7 // int remainingBits
        15: .line 2335
            iload 7 /* remainingBits */
            iconst_1
            if_icmpne 24
        16: .line 2336
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifge 18
            iload 1 /* exponent */
            iconst_1
            iand
            iconst_1
            if_icmpne 18
        17: .line 2337
            getstatic java.math.BigInteger.NEGATIVE_ONE:Ljava/math/BigInteger;
            iload 6 /* bitsToShift */
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            areturn
        18: .line 2339
      StackMap locals: int int
      StackMap stack:
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            iload 6 /* bitsToShift */
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            areturn
        end local 7 // int remainingBits
        19: .line 2343
      StackMap locals:
      StackMap stack:
            aload 2 /* partToSquare */
            invokevirtual java.math.BigInteger.bitLength:()I
            istore 7 /* remainingBits */
        start local 7 // int remainingBits
        20: .line 2344
            iload 7 /* remainingBits */
            iconst_1
            if_icmpne 24
        21: .line 2345
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifge 23
            iload 1 /* exponent */
            iconst_1
            iand
            iconst_1
            if_icmpne 23
        22: .line 2346
            getstatic java.math.BigInteger.NEGATIVE_ONE:Ljava/math/BigInteger;
            areturn
        23: .line 2348
      StackMap locals: int
      StackMap stack:
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            areturn
        24: .line 2356
      StackMap locals:
      StackMap stack:
            iload 7 /* remainingBits */
            i2l
            iload 1 /* exponent */
            i2l
            lmul
            lstore 8 /* scaleFactor */
        start local 8 // long scaleFactor
        25: .line 2360
            aload 2 /* partToSquare */
            getfield java.math.BigInteger.mag:[I
            arraylength
            iconst_1
            if_icmpne 43
            lload 8 /* scaleFactor */
            ldc 62
            lcmp
            ifgt 43
        26: .line 2362
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifge 27
            iload 1 /* exponent */
            iconst_1
            iand
            iconst_1
            if_icmpne 27
            iconst_m1
            goto 28
      StackMap locals: long
      StackMap stack:
        27: iconst_1
      StackMap locals:
      StackMap stack: int
        28: istore 10 /* newSign */
        start local 10 // int newSign
        29: .line 2363
            lconst_1
            lstore 11 /* result */
        start local 11 // long result
        30: .line 2364
            aload 2 /* partToSquare */
            getfield java.math.BigInteger.mag:[I
            iconst_0
            iaload
            i2l
            ldc 4294967295
            land
            lstore 13 /* baseToPow2 */
        start local 13 // long baseToPow2
        31: .line 2366
            iload 1 /* exponent */
            istore 15 /* workingExponent */
        start local 15 // int workingExponent
        32: .line 2369
            goto 37
        33: .line 2370
      StackMap locals: java.math.BigInteger int java.math.BigInteger int long int int long int long long int
      StackMap stack:
            iload 15 /* workingExponent */
            iconst_1
            iand
            iconst_1
            if_icmpne 35
        34: .line 2371
            lload 11 /* result */
            lload 13 /* baseToPow2 */
            lmul
            lstore 11 /* result */
        35: .line 2374
      StackMap locals:
      StackMap stack:
            iload 15 /* workingExponent */
            iconst_1
            iushr
            dup
            istore 15 /* workingExponent */
            ifeq 37
        36: .line 2375
            lload 13 /* baseToPow2 */
            lload 13 /* baseToPow2 */
            lmul
            lstore 13 /* baseToPow2 */
        37: .line 2369
      StackMap locals:
      StackMap stack:
            iload 15 /* workingExponent */
            ifne 33
        38: .line 2380
            iload 3 /* powersOfTwo */
            ifle 42
        39: .line 2381
            iload 6 /* bitsToShift */
            i2l
            lload 8 /* scaleFactor */
            ladd
            ldc 62
            lcmp
            ifgt 41
        40: .line 2382
            lload 11 /* result */
            iload 6 /* bitsToShift */
            lshl
            iload 10 /* newSign */
            i2l
            lmul
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            areturn
        41: .line 2384
      StackMap locals:
      StackMap stack:
            lload 11 /* result */
            iload 10 /* newSign */
            i2l
            lmul
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            iload 6 /* bitsToShift */
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            areturn
        42: .line 2387
      StackMap locals:
      StackMap stack:
            lload 11 /* result */
            iload 10 /* newSign */
            i2l
            lmul
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            areturn
        end local 15 // int workingExponent
        end local 13 // long baseToPow2
        end local 11 // long result
        end local 10 // int newSign
        43: .line 2390
      StackMap locals: java.math.BigInteger int java.math.BigInteger int long int int long
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.math.BigInteger.bitLength:()I
            i2l
            iload 1 /* exponent */
            i2l
            lmul
            ldc 32
            ldiv
            ldc 67108864
            lcmp
            ifle 45
        44: .line 2391
            invokestatic java.math.BigInteger.reportOverflow:()V
        45: .line 2397
      StackMap locals:
      StackMap stack:
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            astore 10 /* answer */
        start local 10 // java.math.BigInteger answer
        46: .line 2399
            iload 1 /* exponent */
            istore 11 /* workingExponent */
        start local 11 // int workingExponent
        47: .line 2401
            goto 52
        48: .line 2402
      StackMap locals: java.math.BigInteger int
      StackMap stack:
            iload 11 /* workingExponent */
            iconst_1
            iand
            iconst_1
            if_icmpne 50
        49: .line 2403
            aload 10 /* answer */
            aload 2 /* partToSquare */
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 10 /* answer */
        50: .line 2406
      StackMap locals:
      StackMap stack:
            iload 11 /* workingExponent */
            iconst_1
            iushr
            dup
            istore 11 /* workingExponent */
            ifeq 52
        51: .line 2407
            aload 2 /* partToSquare */
            invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
            astore 2 /* partToSquare */
        52: .line 2401
      StackMap locals:
      StackMap stack:
            iload 11 /* workingExponent */
            ifne 48
        53: .line 2412
            iload 3 /* powersOfTwo */
            ifle 55
        54: .line 2413
            aload 10 /* answer */
            iload 6 /* bitsToShift */
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            astore 10 /* answer */
        55: .line 2416
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifge 57
            iload 1 /* exponent */
            iconst_1
            iand
            iconst_1
            if_icmpne 57
        56: .line 2417
            aload 10 /* answer */
            invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
            areturn
        57: .line 2419
      StackMap locals:
      StackMap stack:
            aload 10 /* answer */
            areturn
        end local 11 // int workingExponent
        end local 10 // java.math.BigInteger answer
        end local 8 // long scaleFactor
        end local 7 // int remainingBits
        end local 6 // int bitsToShift
        end local 4 // long bitsToShiftLong
        end local 3 // int powersOfTwo
        end local 2 // java.math.BigInteger partToSquare
        end local 1 // int exponent
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   58     0             this  Ljava/math/BigInteger;
            0   58     1         exponent  I
            7   58     2     partToSquare  Ljava/math/BigInteger;
            8   58     3      powersOfTwo  I
            9   58     4  bitsToShiftLong  J
           12   58     6      bitsToShift  I
           15   19     7    remainingBits  I
           20   58     7    remainingBits  I
           25   58     8      scaleFactor  J
           29   43    10          newSign  I
           30   43    11           result  J
           31   43    13       baseToPow2  J
           32   43    15  workingExponent  I
           46   58    10           answer  Ljava/math/BigInteger;
           47   58    11  workingExponent  I
    MethodParameters:
          Name  Flags
      exponent  

  public java.math.BigInteger gcd(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 2433
            aload 1 /* val */
            getfield java.math.BigInteger.signum:I
            ifne 2
         1: .line 2434
            aload 0 /* this */
            invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
            areturn
         2: .line 2435
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifne 4
         3: .line 2436
            aload 1 /* val */
            invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
            areturn
         4: .line 2438
      StackMap locals:
      StackMap stack:
            new java.math.MutableBigInteger
            dup
            aload 0 /* this */
            invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
            astore 2 /* a */
        start local 2 // java.math.MutableBigInteger a
         5: .line 2439
            new java.math.MutableBigInteger
            dup
            aload 1 /* val */
            invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
            astore 3 /* b */
        start local 3 // java.math.MutableBigInteger b
         6: .line 2441
            aload 2 /* a */
            aload 3 /* b */
            invokevirtual java.math.MutableBigInteger.hybridGCD:(Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger;
            astore 4 /* result */
        start local 4 // java.math.MutableBigInteger result
         7: .line 2443
            aload 4 /* result */
            iconst_1
            invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
            areturn
        end local 4 // java.math.MutableBigInteger result
        end local 3 // java.math.MutableBigInteger b
        end local 2 // java.math.MutableBigInteger a
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Ljava/math/BigInteger;
            0    8     1     val  Ljava/math/BigInteger;
            5    8     2       a  Ljava/math/MutableBigInteger;
            6    8     3       b  Ljava/math/MutableBigInteger;
            7    8     4  result  Ljava/math/MutableBigInteger;
    MethodParameters:
      Name  Flags
      val   

  static int bitLengthForInt(int);
    descriptor: (I)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // int n
         0: .line 2450
            bipush 32
            iload 0 /* n */
            invokestatic java.lang.Integer.numberOfLeadingZeros:(I)I
            isub
            ireturn
        end local 0 // int n
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     n  I
    MethodParameters:
      Name  Flags
      n     

  private static int[] leftShift(int[], int, int);
    descriptor: ([III)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // int[] a
        start local 1 // int len
        start local 2 // int n
         0: .line 2458
            iload 2 /* n */
            iconst_5
            iushr
            istore 3 /* nInts */
        start local 3 // int nInts
         1: .line 2459
            iload 2 /* n */
            bipush 31
            iand
            istore 4 /* nBits */
        start local 4 // int nBits
         2: .line 2460
            aload 0 /* a */
            iconst_0
            iaload
            invokestatic java.math.BigInteger.bitLengthForInt:(I)I
            istore 5 /* bitsInHighWord */
        start local 5 // int bitsInHighWord
         3: .line 2463
            iload 2 /* n */
            bipush 32
            iload 5 /* bitsInHighWord */
            isub
            if_icmpgt 6
         4: .line 2464
            aload 0 /* a */
            iload 1 /* len */
            iload 4 /* nBits */
            invokestatic java.math.BigInteger.primitiveLeftShift:([III)V
         5: .line 2465
            aload 0 /* a */
            areturn
         6: .line 2467
      StackMap locals: int int int
      StackMap stack:
            iload 4 /* nBits */
            bipush 32
            iload 5 /* bitsInHighWord */
            isub
            if_icmpgt 11
         7: .line 2468
            iload 3 /* nInts */
            iload 1 /* len */
            iadd
            newarray 10
            astore 6 /* result */
        start local 6 // int[] result
         8: .line 2469
            aload 0 /* a */
            iconst_0
            aload 6 /* result */
            iconst_0
            iload 1 /* len */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         9: .line 2470
            aload 6 /* result */
            aload 6 /* result */
            arraylength
            iload 4 /* nBits */
            invokestatic java.math.BigInteger.primitiveLeftShift:([III)V
        10: .line 2471
            aload 6 /* result */
            areturn
        end local 6 // int[] result
        11: .line 2473
      StackMap locals:
      StackMap stack:
            iload 3 /* nInts */
            iload 1 /* len */
            iadd
            iconst_1
            iadd
            newarray 10
            astore 6 /* result */
        start local 6 // int[] result
        12: .line 2474
            aload 0 /* a */
            iconst_0
            aload 6 /* result */
            iconst_0
            iload 1 /* len */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        13: .line 2475
            aload 6 /* result */
            aload 6 /* result */
            arraylength
            bipush 32
            iload 4 /* nBits */
            isub
            invokestatic java.math.BigInteger.primitiveRightShift:([III)V
        14: .line 2476
            aload 6 /* result */
            areturn
        end local 6 // int[] result
        end local 5 // int bitsInHighWord
        end local 4 // int nBits
        end local 3 // int nInts
        end local 2 // int n
        end local 1 // int len
        end local 0 // int[] a
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   15     0               a  [I
            0   15     1             len  I
            0   15     2               n  I
            1   15     3           nInts  I
            2   15     4           nBits  I
            3   15     5  bitsInHighWord  I
            8   11     6          result  [I
           12   15     6          result  [I
    MethodParameters:
      Name  Flags
      a     
      len   
      n     

  static void primitiveRightShift(int[], int, int);
    descriptor: ([III)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // int[] a
        start local 1 // int len
        start local 2 // int n
         0: .line 2483
            bipush 32
            iload 2 /* n */
            isub
            istore 3 /* n2 */
        start local 3 // int n2
         1: .line 2484
            iload 1 /* len */
            iconst_1
            isub
            istore 4 /* i */
        start local 4 // int i
         2: aload 0 /* a */
            iload 4 /* i */
            iaload
            istore 5 /* c */
        start local 5 // int c
         3: goto 8
         4: .line 2485
      StackMap locals: int int int
      StackMap stack:
            iload 5 /* c */
            istore 6 /* b */
        start local 6 // int b
         5: .line 2486
            aload 0 /* a */
            iload 4 /* i */
            iconst_1
            isub
            iaload
            istore 5 /* c */
         6: .line 2487
            aload 0 /* a */
            iload 4 /* i */
            iload 5 /* c */
            iload 3 /* n2 */
            ishl
            iload 6 /* b */
            iload 2 /* n */
            iushr
            ior
            iastore
        end local 6 // int b
         7: .line 2484
            iinc 4 /* i */ -1
      StackMap locals:
      StackMap stack:
         8: iload 4 /* i */
            ifgt 4
        end local 5 // int c
        end local 4 // int i
         9: .line 2489
            aload 0 /* a */
            iconst_0
            dup2
            iaload
            iload 2 /* n */
            iushr
            iastore
        10: .line 2490
            return
        end local 3 // int n2
        end local 2 // int n
        end local 1 // int len
        end local 0 // int[] a
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0     a  [I
            0   11     1   len  I
            0   11     2     n  I
            1   11     3    n2  I
            2    9     4     i  I
            3    9     5     c  I
            5    7     6     b  I
    MethodParameters:
      Name  Flags
      a     
      len   
      n     

  static void primitiveLeftShift(int[], int, int);
    descriptor: ([III)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=8, args_size=3
        start local 0 // int[] a
        start local 1 // int len
        start local 2 // int n
         0: .line 2494
            iload 1 /* len */
            ifeq 1
            iload 2 /* n */
            ifne 2
         1: .line 2495
      StackMap locals:
      StackMap stack:
            return
         2: .line 2497
      StackMap locals:
      StackMap stack:
            bipush 32
            iload 2 /* n */
            isub
            istore 3 /* n2 */
        start local 3 // int n2
         3: .line 2498
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         4: aload 0 /* a */
            iload 4 /* i */
            iaload
            istore 5 /* c */
        start local 5 // int c
         5: iload 4 /* i */
            iload 1 /* len */
            iadd
            iconst_1
            isub
            istore 6 /* m */
        start local 6 // int m
         6: goto 11
         7: .line 2499
      StackMap locals: int[] int int int int int int
      StackMap stack:
            iload 5 /* c */
            istore 7 /* b */
        start local 7 // int b
         8: .line 2500
            aload 0 /* a */
            iload 4 /* i */
            iconst_1
            iadd
            iaload
            istore 5 /* c */
         9: .line 2501
            aload 0 /* a */
            iload 4 /* i */
            iload 7 /* b */
            iload 2 /* n */
            ishl
            iload 5 /* c */
            iload 3 /* n2 */
            iushr
            ior
            iastore
        end local 7 // int b
        10: .line 2498
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 4 /* i */
            iload 6 /* m */
            if_icmplt 7
        end local 6 // int m
        end local 5 // int c
        end local 4 // int i
        12: .line 2503
            aload 0 /* a */
            iload 1 /* len */
            iconst_1
            isub
            dup2
            iaload
            iload 2 /* n */
            ishl
            iastore
        13: .line 2504
            return
        end local 3 // int n2
        end local 2 // int n
        end local 1 // int len
        end local 0 // int[] a
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0     a  [I
            0   14     1   len  I
            0   14     2     n  I
            3   14     3    n2  I
            4   12     4     i  I
            5   12     5     c  I
            6   12     6     m  I
            8   10     7     b  I
    MethodParameters:
      Name  Flags
      a     
      len   
      n     

  private static int bitLength(int[], int);
    descriptor: ([II)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // int[] val
        start local 1 // int len
         0: .line 2511
            iload 1 /* len */
            ifne 2
         1: .line 2512
            iconst_0
            ireturn
         2: .line 2513
      StackMap locals:
      StackMap stack:
            iload 1 /* len */
            iconst_1
            isub
            iconst_5
            ishl
            aload 0 /* val */
            iconst_0
            iaload
            invokestatic java.math.BigInteger.bitLengthForInt:(I)I
            iadd
            ireturn
        end local 1 // int len
        end local 0 // int[] val
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0   val  [I
            0    3     1   len  I
    MethodParameters:
      Name  Flags
      val   
      len   

  public java.math.BigInteger abs();
    descriptor: ()Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 2523
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            iflt 1
            aload 0 /* this */
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* this */
            invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
      StackMap locals:
      StackMap stack: java.math.BigInteger
         2: areturn
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljava/math/BigInteger;

  public java.math.BigInteger negate();
    descriptor: ()Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 2532
            new java.math.BigInteger
            dup
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ineg
            invokespecial java.math.BigInteger.<init>:([II)V
            areturn
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/math/BigInteger;

  public int signum();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 2542
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ireturn
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/math/BigInteger;

  public java.math.BigInteger mod(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger m
         0: .line 2558
            aload 1 /* m */
            getfield java.math.BigInteger.signum:I
            ifgt 2
         1: .line 2559
            new java.lang.ArithmeticException
            dup
            ldc "BigInteger: modulus not positive"
            invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 2561
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* m */
            invokevirtual java.math.BigInteger.remainder:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 2 /* result */
        start local 2 // java.math.BigInteger result
         3: .line 2562
            aload 2 /* result */
            getfield java.math.BigInteger.signum:I
            iflt 4
            aload 2 /* result */
            goto 5
      StackMap locals: java.math.BigInteger
      StackMap stack:
         4: aload 2 /* result */
            aload 1 /* m */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
      StackMap locals:
      StackMap stack: java.math.BigInteger
         5: areturn
        end local 2 // java.math.BigInteger result
        end local 1 // java.math.BigInteger m
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Ljava/math/BigInteger;
            0    6     1       m  Ljava/math/BigInteger;
            3    6     2  result  Ljava/math/BigInteger;
    MethodParameters:
      Name  Flags
      m     

  public java.math.BigInteger modPow(java.math.BigInteger, java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=17, args_size=3
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger exponent
        start local 2 // java.math.BigInteger m
         0: .line 2579
            aload 2 /* m */
            getfield java.math.BigInteger.signum:I
            ifgt 2
         1: .line 2580
            new java.lang.ArithmeticException
            dup
            ldc "BigInteger: modulus not positive"
            invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 2583
      StackMap locals:
      StackMap stack:
            aload 1 /* exponent */
            getfield java.math.BigInteger.signum:I
            ifne 6
         3: .line 2584
            aload 2 /* m */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifeq 4
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            goto 5
      StackMap locals:
      StackMap stack:
         4: getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
      StackMap locals:
      StackMap stack: java.math.BigInteger
         5: areturn
         6: .line 2586
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifeq 10
         7: .line 2587
            aload 2 /* m */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifeq 8
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            goto 9
      StackMap locals:
      StackMap stack:
         8: getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
      StackMap locals:
      StackMap stack: java.math.BigInteger
         9: areturn
        10: .line 2589
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifeq 12
            aload 1 /* exponent */
            getfield java.math.BigInteger.signum:I
            iflt 12
        11: .line 2590
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            areturn
        12: .line 2592
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic java.math.BigInteger.negConst:[Ljava/math/BigInteger;
            iconst_1
            aaload
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifeq 16
            aload 1 /* exponent */
            iconst_0
            invokevirtual java.math.BigInteger.testBit:(I)Z
            ifne 16
        13: .line 2593
            aload 2 /* m */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifeq 14
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            goto 15
      StackMap locals:
      StackMap stack:
        14: getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
      StackMap locals:
      StackMap stack: java.math.BigInteger
        15: areturn
        16: .line 2596
      StackMap locals:
      StackMap stack:
            aload 1 /* exponent */
            getfield java.math.BigInteger.signum:I
            ifge 17
            iconst_1
            goto 18
      StackMap locals:
      StackMap stack:
        17: iconst_0
      StackMap locals:
      StackMap stack: int
        18: dup
            istore 3 /* invertResult */
        start local 3 // boolean invertResult
        19: ifeq 21
        20: .line 2597
            aload 1 /* exponent */
            invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
            astore 1 /* exponent */
        21: .line 2599
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            iflt 22
            aload 0 /* this */
            aload 2 /* m */
            invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
            iflt 23
        22: .line 2600
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* m */
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            goto 24
      StackMap locals:
      StackMap stack:
        23: aload 0 /* this */
        24: .line 2599
      StackMap locals:
      StackMap stack: java.math.BigInteger
            astore 4 /* base */
        start local 4 // java.math.BigInteger base
        25: .line 2602
            aload 2 /* m */
            iconst_0
            invokevirtual java.math.BigInteger.testBit:(I)Z
            ifeq 28
        26: .line 2603
            aload 4 /* base */
            aload 1 /* exponent */
            aload 2 /* m */
            invokevirtual java.math.BigInteger.oddModPow:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 5 /* result */
        start local 5 // java.math.BigInteger result
        27: .line 2604
            goto 51
        end local 5 // java.math.BigInteger result
        28: .line 2612
      StackMap locals: java.math.BigInteger
      StackMap stack:
            aload 2 /* m */
            invokevirtual java.math.BigInteger.getLowestSetBit:()I
            istore 6 /* p */
        start local 6 // int p
        29: .line 2614
            aload 2 /* m */
            iload 6 /* p */
            invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
            astore 7 /* m1 */
        start local 7 // java.math.BigInteger m1
        30: .line 2615
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            iload 6 /* p */
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            astore 8 /* m2 */
        start local 8 // java.math.BigInteger m2
        31: .line 2618
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            iflt 32
            aload 0 /* this */
            aload 7 /* m1 */
            invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
            iflt 33
        32: .line 2619
      StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger int java.math.BigInteger top int java.math.BigInteger java.math.BigInteger
      StackMap stack:
            aload 0 /* this */
            aload 7 /* m1 */
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            goto 34
      StackMap locals:
      StackMap stack:
        33: aload 0 /* this */
        34: .line 2618
      StackMap locals:
      StackMap stack: java.math.BigInteger
            astore 9 /* base2 */
        start local 9 // java.math.BigInteger base2
        35: .line 2622
            aload 7 /* m1 */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifeq 36
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            goto 37
        36: .line 2623
      StackMap locals: java.math.BigInteger
      StackMap stack:
            aload 9 /* base2 */
            aload 1 /* exponent */
            aload 7 /* m1 */
            invokevirtual java.math.BigInteger.oddModPow:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
        37: .line 2622
      StackMap locals:
      StackMap stack: java.math.BigInteger
            astore 10 /* a1 */
        start local 10 // java.math.BigInteger a1
        38: .line 2626
            aload 4 /* base */
            aload 1 /* exponent */
            iload 6 /* p */
            invokevirtual java.math.BigInteger.modPow2:(Ljava/math/BigInteger;I)Ljava/math/BigInteger;
            astore 11 /* a2 */
        start local 11 // java.math.BigInteger a2
        39: .line 2629
            aload 8 /* m2 */
            aload 7 /* m1 */
            invokevirtual java.math.BigInteger.modInverse:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 12 /* y1 */
        start local 12 // java.math.BigInteger y1
        40: .line 2630
            aload 7 /* m1 */
            aload 8 /* m2 */
            invokevirtual java.math.BigInteger.modInverse:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 13 /* y2 */
        start local 13 // java.math.BigInteger y2
        41: .line 2632
            aload 2 /* m */
            getfield java.math.BigInteger.mag:[I
            arraylength
            ldc 33554432
            if_icmpge 44
        42: .line 2633
            aload 10 /* a1 */
            aload 8 /* m2 */
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 12 /* y1 */
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 11 /* a2 */
            aload 7 /* m1 */
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 13 /* y2 */
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 2 /* m */
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 5 /* result */
        start local 5 // java.math.BigInteger result
        43: .line 2634
            goto 51
        end local 5 // java.math.BigInteger result
        44: .line 2635
      StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger int java.math.BigInteger top int java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger
      StackMap stack:
            new java.math.MutableBigInteger
            dup
            invokespecial java.math.MutableBigInteger.<init>:()V
            astore 14 /* t1 */
        start local 14 // java.math.MutableBigInteger t1
        45: .line 2636
            new java.math.MutableBigInteger
            dup
            aload 10 /* a1 */
            aload 8 /* m2 */
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
            new java.math.MutableBigInteger
            dup
            aload 12 /* y1 */
            invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
            aload 14 /* t1 */
            invokevirtual java.math.MutableBigInteger.multiply:(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)V
        46: .line 2637
            new java.math.MutableBigInteger
            dup
            invokespecial java.math.MutableBigInteger.<init>:()V
            astore 15 /* t2 */
        start local 15 // java.math.MutableBigInteger t2
        47: .line 2638
            new java.math.MutableBigInteger
            dup
            aload 11 /* a2 */
            aload 7 /* m1 */
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
            new java.math.MutableBigInteger
            dup
            aload 13 /* y2 */
            invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
            aload 15 /* t2 */
            invokevirtual java.math.MutableBigInteger.multiply:(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)V
        48: .line 2639
            aload 14 /* t1 */
            aload 15 /* t2 */
            invokevirtual java.math.MutableBigInteger.add:(Ljava/math/MutableBigInteger;)V
        49: .line 2640
            new java.math.MutableBigInteger
            dup
            invokespecial java.math.MutableBigInteger.<init>:()V
            astore 16 /* q */
        start local 16 // java.math.MutableBigInteger q
        50: .line 2641
            aload 14 /* t1 */
            new java.math.MutableBigInteger
            dup
            aload 2 /* m */
            invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
            aload 16 /* q */
            invokevirtual java.math.MutableBigInteger.divide:(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger;
            invokevirtual java.math.MutableBigInteger.toBigInteger:()Ljava/math/BigInteger;
            astore 5 /* result */
        end local 16 // java.math.MutableBigInteger q
        end local 15 // java.math.MutableBigInteger t2
        end local 14 // java.math.MutableBigInteger t1
        end local 13 // java.math.BigInteger y2
        end local 12 // java.math.BigInteger y1
        end local 11 // java.math.BigInteger a2
        end local 10 // java.math.BigInteger a1
        end local 9 // java.math.BigInteger base2
        end local 8 // java.math.BigInteger m2
        end local 7 // java.math.BigInteger m1
        end local 6 // int p
        start local 5 // java.math.BigInteger result
        51: .line 2645
      StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger int java.math.BigInteger java.math.BigInteger
      StackMap stack:
            iload 3 /* invertResult */
            ifeq 52
            aload 5 /* result */
            aload 2 /* m */
            invokevirtual java.math.BigInteger.modInverse:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            goto 53
      StackMap locals:
      StackMap stack:
        52: aload 5 /* result */
      StackMap locals:
      StackMap stack: java.math.BigInteger
        53: areturn
        end local 5 // java.math.BigInteger result
        end local 4 // java.math.BigInteger base
        end local 3 // boolean invertResult
        end local 2 // java.math.BigInteger m
        end local 1 // java.math.BigInteger exponent
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   54     0          this  Ljava/math/BigInteger;
            0   54     1      exponent  Ljava/math/BigInteger;
            0   54     2             m  Ljava/math/BigInteger;
           19   54     3  invertResult  Z
           25   54     4          base  Ljava/math/BigInteger;
           27   28     5        result  Ljava/math/BigInteger;
           43   44     5        result  Ljava/math/BigInteger;
           51   54     5        result  Ljava/math/BigInteger;
           29   51     6             p  I
           30   51     7            m1  Ljava/math/BigInteger;
           31   51     8            m2  Ljava/math/BigInteger;
           35   51     9         base2  Ljava/math/BigInteger;
           38   51    10            a1  Ljava/math/BigInteger;
           39   51    11            a2  Ljava/math/BigInteger;
           40   51    12            y1  Ljava/math/BigInteger;
           41   51    13            y2  Ljava/math/BigInteger;
           45   51    14            t1  Ljava/math/MutableBigInteger;
           47   51    15            t2  Ljava/math/MutableBigInteger;
           50   51    16             q  Ljava/math/MutableBigInteger;
    MethodParameters:
          Name  Flags
      exponent  
      m         

  private static int[] montgomeryMultiply(int[], int[], int[], int, long, int[]);
    descriptor: ([I[I[IIJ[I)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=7, args_size=6
        start local 0 // int[] a
        start local 1 // int[] b
        start local 2 // int[] n
        start local 3 // int len
        start local 4 // long inv
        start local 6 // int[] product
         0: .line 2655
            aload 0 /* a */
            aload 1 /* b */
            aload 2 /* n */
            iload 3 /* len */
            aload 6 /* product */
            invokestatic java.math.BigInteger.implMontgomeryMultiplyChecks:([I[I[II[I)V
         1: .line 2656
            iload 3 /* len */
            sipush 512
            if_icmple 4
         2: .line 2658
            aload 0 /* a */
            iload 3 /* len */
            aload 1 /* b */
            iload 3 /* len */
            aload 6 /* product */
            invokestatic java.math.BigInteger.multiplyToLen:([II[II[I)[I
            astore 6 /* product */
         3: .line 2659
            aload 6 /* product */
            aload 2 /* n */
            iload 3 /* len */
            lload 4 /* inv */
            l2i
            invokestatic java.math.BigInteger.montReduce:([I[III)[I
            areturn
         4: .line 2661
      StackMap locals:
      StackMap stack:
            aload 0 /* a */
            aload 1 /* b */
            aload 2 /* n */
            iload 3 /* len */
            lload 4 /* inv */
            aload 6 /* product */
            iload 3 /* len */
            invokestatic java.math.BigInteger.materialize:([II)[I
            invokestatic java.math.BigInteger.implMontgomeryMultiply:([I[I[IIJ[I)[I
            areturn
        end local 6 // int[] product
        end local 4 // long inv
        end local 3 // int len
        end local 2 // int[] n
        end local 1 // int[] b
        end local 0 // int[] a
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0        a  [I
            0    5     1        b  [I
            0    5     2        n  [I
            0    5     3      len  I
            0    5     4      inv  J
            0    5     6  product  [I
    MethodParameters:
         Name  Flags
      a        
      b        
      n        
      len      
      inv      
      product  

  private static int[] montgomerySquare(int[], int[], int, long, int[]);
    descriptor: ([I[IIJ[I)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=6, args_size=5
        start local 0 // int[] a
        start local 1 // int[] n
        start local 2 // int len
        start local 3 // long inv
        start local 5 // int[] product
         0: .line 2666
            aload 0 /* a */
            aload 0 /* a */
            aload 1 /* n */
            iload 2 /* len */
            aload 5 /* product */
            invokestatic java.math.BigInteger.implMontgomeryMultiplyChecks:([I[I[II[I)V
         1: .line 2667
            iload 2 /* len */
            sipush 512
            if_icmple 4
         2: .line 2669
            aload 0 /* a */
            iload 2 /* len */
            aload 5 /* product */
            invokestatic java.math.BigInteger.squareToLen:([II[I)[I
            astore 5 /* product */
         3: .line 2670
            aload 5 /* product */
            aload 1 /* n */
            iload 2 /* len */
            lload 3 /* inv */
            l2i
            invokestatic java.math.BigInteger.montReduce:([I[III)[I
            areturn
         4: .line 2672
      StackMap locals:
      StackMap stack:
            aload 0 /* a */
            aload 1 /* n */
            iload 2 /* len */
            lload 3 /* inv */
            aload 5 /* product */
            iload 2 /* len */
            invokestatic java.math.BigInteger.materialize:([II)[I
            invokestatic java.math.BigInteger.implMontgomerySquare:([I[IIJ[I)[I
            areturn
        end local 5 // int[] product
        end local 3 // long inv
        end local 2 // int len
        end local 1 // int[] n
        end local 0 // int[] a
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0        a  [I
            0    5     1        n  [I
            0    5     2      len  I
            0    5     3      inv  J
            0    5     5  product  [I
    MethodParameters:
         Name  Flags
      a        
      n        
      len      
      inv      
      product  

  private static void implMontgomeryMultiplyChecks(int[], int[], int[], int, int[]);
    descriptor: ([I[I[II[I)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // int[] a
        start local 1 // int[] b
        start local 2 // int[] n
        start local 3 // int len
        start local 4 // int[] product
         0: .line 2679
            iload 3 /* len */
            iconst_2
            irem
            ifeq 2
         1: .line 2680
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "input array length must be even: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 3 /* len */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 2683
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            iconst_1
            if_icmpge 4
         3: .line 2684
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "invalid input length: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 3 /* len */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 2687
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            aload 0 /* a */
            arraylength
            if_icmpgt 8
         5: .line 2688
            iload 3 /* len */
            aload 1 /* b */
            arraylength
            if_icmpgt 8
         6: .line 2689
            iload 3 /* len */
            aload 2 /* n */
            arraylength
            if_icmpgt 8
         7: .line 2690
            aload 4 /* product */
            ifnull 9
            iload 3 /* len */
            aload 4 /* product */
            arraylength
            if_icmple 9
         8: .line 2691
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "input array length out of bound: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 3 /* len */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 2693
      StackMap locals:
      StackMap stack:
            return
        end local 4 // int[] product
        end local 3 // int len
        end local 2 // int[] n
        end local 1 // int[] b
        end local 0 // int[] a
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   10     0        a  [I
            0   10     1        b  [I
            0   10     2        n  [I
            0   10     3      len  I
            0   10     4  product  [I
    Exceptions:
      throws java.lang.RuntimeException
    MethodParameters:
         Name  Flags
      a        
      b        
      n        
      len      
      product  

  private static int[] materialize(int[], int);
    descriptor: ([II)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // int[] z
        start local 1 // int len
         0: .line 2699
            aload 0 /* z */
            ifnull 1
            aload 0 /* z */
            arraylength
            iload 1 /* len */
            if_icmpge 2
         1: .line 2700
      StackMap locals:
      StackMap stack:
            iload 1 /* len */
            newarray 10
            astore 0 /* z */
         2: .line 2701
      StackMap locals:
      StackMap stack:
            aload 0 /* z */
            areturn
        end local 1 // int len
        end local 0 // int[] z
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     z  [I
            0    3     1   len  I
    MethodParameters:
      Name  Flags
      z     
      len   

  private static int[] implMontgomeryMultiply(int[], int[], int[], int, long, int[]);
    descriptor: ([I[I[IIJ[I)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=6
        start local 0 // int[] a
        start local 1 // int[] b
        start local 2 // int[] n
        start local 3 // int len
        start local 4 // long inv
        start local 6 // int[] product
         0: .line 2708
            aload 0 /* a */
            iload 3 /* len */
            aload 1 /* b */
            iload 3 /* len */
            aload 6 /* product */
            invokestatic java.math.BigInteger.multiplyToLen:([II[II[I)[I
            astore 6 /* product */
         1: .line 2709
            aload 6 /* product */
            aload 2 /* n */
            iload 3 /* len */
            lload 4 /* inv */
            l2i
            invokestatic java.math.BigInteger.montReduce:([I[III)[I
            areturn
        end local 6 // int[] product
        end local 4 // long inv
        end local 3 // int len
        end local 2 // int[] n
        end local 1 // int[] b
        end local 0 // int[] a
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0        a  [I
            0    2     1        b  [I
            0    2     2        n  [I
            0    2     3      len  I
            0    2     4      inv  J
            0    2     6  product  [I
    MethodParameters:
         Name  Flags
      a        
      b        
      n        
      len      
      inv      
      product  

  private static int[] implMontgomerySquare(int[], int[], int, long, int[]);
    descriptor: ([I[IIJ[I)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=5
        start local 0 // int[] a
        start local 1 // int[] n
        start local 2 // int len
        start local 3 // long inv
        start local 5 // int[] product
         0: .line 2713
            aload 0 /* a */
            iload 2 /* len */
            aload 5 /* product */
            invokestatic java.math.BigInteger.squareToLen:([II[I)[I
            astore 5 /* product */
         1: .line 2714
            aload 5 /* product */
            aload 1 /* n */
            iload 2 /* len */
            lload 3 /* inv */
            l2i
            invokestatic java.math.BigInteger.montReduce:([I[III)[I
            areturn
        end local 5 // int[] product
        end local 3 // long inv
        end local 2 // int len
        end local 1 // int[] n
        end local 0 // int[] a
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0        a  [I
            0    2     1        n  [I
            0    2     2      len  I
            0    2     3      inv  J
            0    2     5  product  [I
    MethodParameters:
         Name  Flags
      a        
      n        
      len      
      inv      
      product  

  private java.math.BigInteger oddModPow(java.math.BigInteger, java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=9, locals=30, args_size=3
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger y
        start local 2 // java.math.BigInteger z
         0: .line 2783
            aload 1 /* y */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 2784
            aload 0 /* this */
            areturn
         2: .line 2787
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifne 4
         3: .line 2788
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            areturn
         4: .line 2790
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            invokevirtual int[].clone:()Ljava/lang/Object;
            checkcast int[]
            astore 3 /* base */
        start local 3 // int[] base
         5: .line 2791
            aload 1 /* y */
            getfield java.math.BigInteger.mag:[I
            astore 4 /* exp */
        start local 4 // int[] exp
         6: .line 2792
            aload 2 /* z */
            getfield java.math.BigInteger.mag:[I
            astore 5 /* mod */
        start local 5 // int[] mod
         7: .line 2793
            aload 5 /* mod */
            arraylength
            istore 6 /* modLen */
        start local 6 // int modLen
         8: .line 2799
            iload 6 /* modLen */
            iconst_1
            iand
            ifeq 13
         9: .line 2800
            iload 6 /* modLen */
            iconst_1
            iadd
            newarray 10
            astore 7 /* x */
        start local 7 // int[] x
        10: .line 2801
            aload 5 /* mod */
            iconst_0
            aload 7 /* x */
            iconst_1
            iload 6 /* modLen */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        11: .line 2802
            aload 7 /* x */
            astore 5 /* mod */
        12: .line 2803
            iinc 6 /* modLen */ 1
        end local 7 // int[] x
        13: .line 2807
      StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger int[] int[] int[] int
      StackMap stack:
            iconst_0
            istore 7 /* wbits */
        start local 7 // int wbits
        14: .line 2808
            aload 4 /* exp */
            aload 4 /* exp */
            arraylength
            invokestatic java.math.BigInteger.bitLength:([II)I
            istore 8 /* ebits */
        start local 8 // int ebits
        15: .line 2810
            iload 8 /* ebits */
            bipush 17
            if_icmpne 18
            aload 4 /* exp */
            iconst_0
            iaload
            ldc 65537
            if_icmpeq 19
        16: .line 2811
            goto 18
        17: .line 2812
      StackMap locals: int int
      StackMap stack:
            iinc 7 /* wbits */ 1
        18: .line 2811
      StackMap locals:
      StackMap stack:
            iload 8 /* ebits */
            getstatic java.math.BigInteger.bnExpModThreshTable:[I
            iload 7 /* wbits */
            iaload
            if_icmpgt 17
        19: .line 2817
      StackMap locals:
      StackMap stack:
            iconst_1
            iload 7 /* wbits */
            ishl
            istore 9 /* tblmask */
        start local 9 // int tblmask
        20: .line 2820
            iload 9 /* tblmask */
            anewarray int[]
            astore 10 /* table */
        start local 10 // int[][] table
        21: .line 2821
            iconst_0
            istore 11 /* i */
        start local 11 // int i
        22: goto 25
        23: .line 2822
      StackMap locals: int int[][] int
      StackMap stack:
            aload 10 /* table */
            iload 11 /* i */
            iload 6 /* modLen */
            newarray 10
            aastore
        24: .line 2821
            iinc 11 /* i */ 1
      StackMap locals:
      StackMap stack:
        25: iload 11 /* i */
            iload 9 /* tblmask */
            if_icmplt 23
        end local 11 // int i
        26: .line 2826
            aload 5 /* mod */
            iload 6 /* modLen */
            iconst_1
            isub
            iaload
            i2l
            ldc 4294967295
            land
            aload 5 /* mod */
            iload 6 /* modLen */
            iconst_2
            isub
            iaload
            i2l
            ldc 4294967295
            land
            bipush 32
            lshl
            ladd
            lstore 11 /* n0 */
        start local 11 // long n0
        27: .line 2827
            lload 11 /* n0 */
            invokestatic java.math.MutableBigInteger.inverseMod64:(J)J
            lneg
            lstore 13 /* inv */
        start local 13 // long inv
        28: .line 2830
            aload 3 /* base */
            aload 3 /* base */
            arraylength
            iload 6 /* modLen */
            iconst_5
            ishl
            invokestatic java.math.BigInteger.leftShift:([III)[I
            astore 15 /* a */
        start local 15 // int[] a
        29: .line 2832
            new java.math.MutableBigInteger
            dup
            invokespecial java.math.MutableBigInteger.<init>:()V
            astore 16 /* q */
        start local 16 // java.math.MutableBigInteger q
        30: .line 2833
            new java.math.MutableBigInteger
            dup
            aload 15 /* a */
            invokespecial java.math.MutableBigInteger.<init>:([I)V
            astore 17 /* a2 */
        start local 17 // java.math.MutableBigInteger a2
        31: .line 2834
            new java.math.MutableBigInteger
            dup
            aload 5 /* mod */
            invokespecial java.math.MutableBigInteger.<init>:([I)V
            astore 18 /* b2 */
        start local 18 // java.math.MutableBigInteger b2
        32: .line 2835
            aload 18 /* b2 */
            invokevirtual java.math.MutableBigInteger.normalize:()V
        33: .line 2838
            aload 17 /* a2 */
            aload 18 /* b2 */
            aload 16 /* q */
            invokevirtual java.math.MutableBigInteger.divide:(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger;
            astore 19 /* r */
        start local 19 // java.math.MutableBigInteger r
        34: .line 2839
            aload 10 /* table */
            iconst_0
            aload 19 /* r */
            invokevirtual java.math.MutableBigInteger.toIntArray:()[I
            aastore
        35: .line 2842
            aload 10 /* table */
            iconst_0
            aaload
            arraylength
            iload 6 /* modLen */
            if_icmpge 40
        36: .line 2843
            iload 6 /* modLen */
            aload 10 /* table */
            iconst_0
            aaload
            arraylength
            isub
            istore 20 /* offset */
        start local 20 // int offset
        37: .line 2844
            iload 6 /* modLen */
            newarray 10
            astore 21 /* t2 */
        start local 21 // int[] t2
        38: .line 2845
            aload 10 /* table */
            iconst_0
            aaload
            iconst_0
            aload 21 /* t2 */
            iload 20 /* offset */
            aload 10 /* table */
            iconst_0
            aaload
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        39: .line 2846
            aload 10 /* table */
            iconst_0
            aload 21 /* t2 */
            aastore
        end local 21 // int[] t2
        end local 20 // int offset
        40: .line 2850
      StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger int[] int[] int[] int int int int int[][] long long int[] java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger
      StackMap stack:
            aload 10 /* table */
            iconst_0
            aaload
            aload 5 /* mod */
            iload 6 /* modLen */
            lload 13 /* inv */
            aconst_null
            invokestatic java.math.BigInteger.montgomerySquare:([I[IIJ[I)[I
            astore 20 /* b */
        start local 20 // int[] b
        41: .line 2853
            aload 20 /* b */
            iload 6 /* modLen */
            invokestatic java.util.Arrays.copyOf:([II)[I
            astore 21 /* t */
        start local 21 // int[] t
        42: .line 2856
            iconst_1
            istore 22 /* i */
        start local 22 // int i
        43: goto 46
        44: .line 2857
      StackMap locals: int[] int[] int
      StackMap stack:
            aload 10 /* table */
            iload 22 /* i */
            aload 21 /* t */
            aload 10 /* table */
            iload 22 /* i */
            iconst_1
            isub
            aaload
            aload 5 /* mod */
            iload 6 /* modLen */
            lload 13 /* inv */
            aconst_null
            invokestatic java.math.BigInteger.montgomeryMultiply:([I[I[IIJ[I)[I
            aastore
        45: .line 2856
            iinc 22 /* i */ 1
      StackMap locals:
      StackMap stack:
        46: iload 22 /* i */
            iload 9 /* tblmask */
            if_icmplt 44
        end local 22 // int i
        47: .line 2861
            iconst_1
            iload 8 /* ebits */
            iconst_1
            isub
            bipush 31
            iand
            ishl
            istore 22 /* bitpos */
        start local 22 // int bitpos
        48: .line 2863
            iconst_0
            istore 23 /* buf */
        start local 23 // int buf
        49: .line 2864
            aload 4 /* exp */
            arraylength
            istore 24 /* elen */
        start local 24 // int elen
        50: .line 2865
            iconst_0
            istore 25 /* eIndex */
        start local 25 // int eIndex
        51: .line 2866
            iconst_0
            istore 26 /* i */
        start local 26 // int i
        52: goto 62
        53: .line 2867
      StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger int[] int[] int[] int int int int int[][] long long int[] java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger int[] int[] int int int int int
      StackMap stack:
            iload 23 /* buf */
            iconst_1
            ishl
            aload 4 /* exp */
            iload 25 /* eIndex */
            iaload
            iload 22 /* bitpos */
            iand
            ifeq 54
            iconst_1
            goto 55
      StackMap locals:
      StackMap stack: int
        54: iconst_0
      StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger int[] int[] int[] int int int int int[][] long long int[] java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger int[] int[] int int int int int
      StackMap stack: int int
        55: ior
            istore 23 /* buf */
        56: .line 2868
            iload 22 /* bitpos */
            iconst_1
            iushr
            istore 22 /* bitpos */
        57: .line 2869
            iload 22 /* bitpos */
            ifne 61
        58: .line 2870
            iinc 25 /* eIndex */ 1
        59: .line 2871
            ldc -2147483648
            istore 22 /* bitpos */
        60: .line 2872
            iinc 24 /* elen */ -1
        61: .line 2866
      StackMap locals:
      StackMap stack:
            iinc 26 /* i */ 1
      StackMap locals:
      StackMap stack:
        62: iload 26 /* i */
            iload 7 /* wbits */
            if_icmple 53
        end local 26 // int i
        63: .line 2876
            iload 8 /* ebits */
            istore 26 /* multpos */
        start local 26 // int multpos
        64: .line 2879
            iinc 8 /* ebits */ -1
        65: .line 2880
            iconst_1
            istore 27 /* isone */
        start local 27 // boolean isone
        66: .line 2882
            iload 8 /* ebits */
            iload 7 /* wbits */
            isub
            istore 26 /* multpos */
        67: .line 2883
            goto 70
        68: .line 2884
      StackMap locals: int
      StackMap stack:
            iload 23 /* buf */
            iconst_1
            iushr
            istore 23 /* buf */
        69: .line 2885
            iinc 26 /* multpos */ 1
        70: .line 2883
      StackMap locals:
      StackMap stack:
            iload 23 /* buf */
            iconst_1
            iand
            ifeq 68
        71: .line 2888
            aload 10 /* table */
            iload 23 /* buf */
            iconst_1
            iushr
            aaload
            astore 28 /* mult */
        start local 28 // int[] mult
        72: .line 2890
            iconst_0
            istore 23 /* buf */
        73: .line 2891
            iload 26 /* multpos */
            iload 8 /* ebits */
            if_icmpne 75
        74: .line 2892
            iconst_0
            istore 27 /* isone */
        75: .line 2896
      StackMap locals: int[]
      StackMap stack:
            iinc 8 /* ebits */ -1
        76: .line 2898
            iload 23 /* buf */
            iconst_1
            ishl
            istore 23 /* buf */
        77: .line 2900
            iload 24 /* elen */
            ifeq 86
        78: .line 2901
            iload 23 /* buf */
            aload 4 /* exp */
            iload 25 /* eIndex */
            iaload
            iload 22 /* bitpos */
            iand
            ifeq 79
            iconst_1
            goto 80
      StackMap locals:
      StackMap stack: int
        79: iconst_0
      StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger int[] int[] int[] int int int int int[][] long long int[] java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger int[] int[] int int int int int int int[]
      StackMap stack: int int
        80: ior
            istore 23 /* buf */
        81: .line 2902
            iload 22 /* bitpos */
            iconst_1
            iushr
            istore 22 /* bitpos */
        82: .line 2903
            iload 22 /* bitpos */
            ifne 86
        83: .line 2904
            iinc 25 /* eIndex */ 1
        84: .line 2905
            ldc -2147483648
            istore 22 /* bitpos */
        85: .line 2906
            iinc 24 /* elen */ -1
        86: .line 2911
      StackMap locals:
      StackMap stack:
            iload 23 /* buf */
            iload 9 /* tblmask */
            iand
            ifeq 94
        87: .line 2912
            iload 8 /* ebits */
            iload 7 /* wbits */
            isub
            istore 26 /* multpos */
        88: .line 2913
            goto 91
        89: .line 2914
      StackMap locals:
      StackMap stack:
            iload 23 /* buf */
            iconst_1
            iushr
            istore 23 /* buf */
        90: .line 2915
            iinc 26 /* multpos */ 1
        91: .line 2913
      StackMap locals:
      StackMap stack:
            iload 23 /* buf */
            iconst_1
            iand
            ifeq 89
        92: .line 2917
            aload 10 /* table */
            iload 23 /* buf */
            iconst_1
            iushr
            aaload
            astore 28 /* mult */
        93: .line 2918
            iconst_0
            istore 23 /* buf */
        94: .line 2922
      StackMap locals:
      StackMap stack:
            iload 8 /* ebits */
            iload 26 /* multpos */
            if_icmpne 102
        95: .line 2923
            iload 27 /* isone */
            ifeq 99
        96: .line 2924
            aload 28 /* mult */
            invokevirtual int[].clone:()Ljava/lang/Object;
            checkcast int[]
            astore 20 /* b */
        97: .line 2925
            iconst_0
            istore 27 /* isone */
        98: .line 2926
            goto 102
        99: .line 2927
      StackMap locals:
      StackMap stack:
            aload 20 /* b */
            astore 21 /* t */
       100: .line 2928
            aload 21 /* t */
            aload 28 /* mult */
            aload 5 /* mod */
            iload 6 /* modLen */
            lload 13 /* inv */
            aload 15 /* a */
            invokestatic java.math.BigInteger.montgomeryMultiply:([I[I[IIJ[I)[I
            astore 15 /* a */
       101: .line 2929
            aload 15 /* a */
            astore 21 /* t */
            aload 20 /* b */
            astore 15 /* a */
            aload 21 /* t */
            astore 20 /* b */
       102: .line 2934
      StackMap locals:
      StackMap stack:
            iload 8 /* ebits */
            ifne 104
       103: .line 2935
            goto 109
       104: .line 2938
      StackMap locals:
      StackMap stack:
            iload 27 /* isone */
            ifne 75
       105: .line 2939
            aload 20 /* b */
            astore 21 /* t */
       106: .line 2940
            aload 21 /* t */
            aload 5 /* mod */
            iload 6 /* modLen */
            lload 13 /* inv */
            aload 15 /* a */
            invokestatic java.math.BigInteger.montgomerySquare:([I[IIJ[I)[I
            astore 15 /* a */
       107: .line 2941
            aload 15 /* a */
            astore 21 /* t */
            aload 20 /* b */
            astore 15 /* a */
            aload 21 /* t */
            astore 20 /* b */
       108: .line 2895
            goto 75
       109: .line 2946
      StackMap locals:
      StackMap stack:
            iconst_2
            iload 6 /* modLen */
            imul
            newarray 10
            astore 29 /* t2 */
        start local 29 // int[] t2
       110: .line 2947
            aload 20 /* b */
            iconst_0
            aload 29 /* t2 */
            iload 6 /* modLen */
            iload 6 /* modLen */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
       111: .line 2949
            aload 29 /* t2 */
            aload 5 /* mod */
            iload 6 /* modLen */
            lload 13 /* inv */
            l2i
            invokestatic java.math.BigInteger.montReduce:([I[III)[I
            astore 20 /* b */
       112: .line 2951
            aload 20 /* b */
            iload 6 /* modLen */
            invokestatic java.util.Arrays.copyOf:([II)[I
            astore 29 /* t2 */
       113: .line 2953
            new java.math.BigInteger
            dup
            iconst_1
            aload 29 /* t2 */
            invokespecial java.math.BigInteger.<init>:(I[I)V
            areturn
        end local 29 // int[] t2
        end local 28 // int[] mult
        end local 27 // boolean isone
        end local 26 // int multpos
        end local 25 // int eIndex
        end local 24 // int elen
        end local 23 // int buf
        end local 22 // int bitpos
        end local 21 // int[] t
        end local 20 // int[] b
        end local 19 // java.math.MutableBigInteger r
        end local 18 // java.math.MutableBigInteger b2
        end local 17 // java.math.MutableBigInteger a2
        end local 16 // java.math.MutableBigInteger q
        end local 15 // int[] a
        end local 13 // long inv
        end local 11 // long n0
        end local 10 // int[][] table
        end local 9 // int tblmask
        end local 8 // int ebits
        end local 7 // int wbits
        end local 6 // int modLen
        end local 5 // int[] mod
        end local 4 // int[] exp
        end local 3 // int[] base
        end local 2 // java.math.BigInteger z
        end local 1 // java.math.BigInteger y
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0  114     0     this  Ljava/math/BigInteger;
            0  114     1        y  Ljava/math/BigInteger;
            0  114     2        z  Ljava/math/BigInteger;
            5  114     3     base  [I
            6  114     4      exp  [I
            7  114     5      mod  [I
            8  114     6   modLen  I
           10   13     7        x  [I
           14  114     7    wbits  I
           15  114     8    ebits  I
           20  114     9  tblmask  I
           21  114    10    table  [[I
           22   26    11        i  I
           27  114    11       n0  J
           28  114    13      inv  J
           29  114    15        a  [I
           30  114    16        q  Ljava/math/MutableBigInteger;
           31  114    17       a2  Ljava/math/MutableBigInteger;
           32  114    18       b2  Ljava/math/MutableBigInteger;
           34  114    19        r  Ljava/math/MutableBigInteger;
           37   40    20   offset  I
           38   40    21       t2  [I
           41  114    20        b  [I
           42  114    21        t  [I
           43   47    22        i  I
           48  114    22   bitpos  I
           49  114    23      buf  I
           50  114    24     elen  I
           51  114    25   eIndex  I
           52   63    26        i  I
           64  114    26  multpos  I
           66  114    27    isone  Z
           72  114    28     mult  [I
          110  114    29       t2  [I
    MethodParameters:
      Name  Flags
      y     
      z     

  private static int[] montReduce(int[], int[], int, int);
    descriptor: ([I[III)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=9, args_size=4
        start local 0 // int[] n
        start local 1 // int[] mod
        start local 2 // int mlen
        start local 3 // int inv
         0: .line 2961
            iconst_0
            istore 4 /* c */
        start local 4 // int c
         1: .line 2962
            iload 2 /* mlen */
            istore 5 /* len */
        start local 5 // int len
         2: .line 2963
            iconst_0
            istore 6 /* offset */
        start local 6 // int offset
         3: .line 2966
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* n */
            aload 0 /* n */
            arraylength
            iconst_1
            isub
            iload 6 /* offset */
            isub
            iaload
            istore 7 /* nEnd */
        start local 7 // int nEnd
         4: .line 2967
            aload 0 /* n */
            aload 1 /* mod */
            iload 6 /* offset */
            iload 2 /* mlen */
            iload 3 /* inv */
            iload 7 /* nEnd */
            imul
            invokestatic java.math.BigInteger.mulAdd:([I[IIII)I
            istore 8 /* carry */
        start local 8 // int carry
         5: .line 2968
            iload 4 /* c */
            aload 0 /* n */
            iload 6 /* offset */
            iload 2 /* mlen */
            iload 8 /* carry */
            invokestatic java.math.BigInteger.addOne:([IIII)I
            iadd
            istore 4 /* c */
         6: .line 2969
            iinc 6 /* offset */ 1
        end local 8 // int carry
        end local 7 // int nEnd
         7: .line 2970
            iinc 5 /* len */ -1
            iload 5 /* len */
         8: .line 2965
            ifgt 3
         9: .line 2972
            goto 11
        10: .line 2973
      StackMap locals:
      StackMap stack:
            iload 4 /* c */
            aload 0 /* n */
            aload 1 /* mod */
            iload 2 /* mlen */
            invokestatic java.math.BigInteger.subN:([I[II)I
            iadd
            istore 4 /* c */
        11: .line 2972
      StackMap locals:
      StackMap stack:
            iload 4 /* c */
            ifgt 10
        12: .line 2975
            goto 14
        13: .line 2976
      StackMap locals:
      StackMap stack:
            aload 0 /* n */
            aload 1 /* mod */
            iload 2 /* mlen */
            invokestatic java.math.BigInteger.subN:([I[II)I
            pop
        14: .line 2975
      StackMap locals:
      StackMap stack:
            aload 0 /* n */
            aload 1 /* mod */
            iload 2 /* mlen */
            invokestatic java.math.BigInteger.intArrayCmpToLen:([I[II)I
            ifge 13
        15: .line 2978
            aload 0 /* n */
            areturn
        end local 6 // int offset
        end local 5 // int len
        end local 4 // int c
        end local 3 // int inv
        end local 2 // int mlen
        end local 1 // int[] mod
        end local 0 // int[] n
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   16     0       n  [I
            0   16     1     mod  [I
            0   16     2    mlen  I
            0   16     3     inv  I
            1   16     4       c  I
            2   16     5     len  I
            3   16     6  offset  I
            4    7     7    nEnd  I
            5    7     8   carry  I
    MethodParameters:
      Name  Flags
      n     
      mod   
      mlen  
      inv   

  private static int intArrayCmpToLen(int[], int[], int);
    descriptor: ([I[II)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // int[] arg1
        start local 1 // int[] arg2
        start local 2 // int len
         0: .line 2987
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         1: goto 9
         2: .line 2988
      StackMap locals: int
      StackMap stack:
            aload 0 /* arg1 */
            iload 3 /* i */
            iaload
            i2l
            ldc 4294967295
            land
            lstore 4 /* b1 */
        start local 4 // long b1
         3: .line 2989
            aload 1 /* arg2 */
            iload 3 /* i */
            iaload
            i2l
            ldc 4294967295
            land
            lstore 6 /* b2 */
        start local 6 // long b2
         4: .line 2990
            lload 4 /* b1 */
            lload 6 /* b2 */
            lcmp
            ifge 6
         5: .line 2991
            iconst_m1
            ireturn
         6: .line 2992
      StackMap locals: long long
      StackMap stack:
            lload 4 /* b1 */
            lload 6 /* b2 */
            lcmp
            ifle 8
         7: .line 2993
            iconst_1
            ireturn
        end local 6 // long b2
        end local 4 // long b1
         8: .line 2987
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 3 /* i */
            iload 2 /* len */
            if_icmplt 2
        end local 3 // int i
        10: .line 2995
            iconst_0
            ireturn
        end local 2 // int len
        end local 1 // int[] arg2
        end local 0 // int[] arg1
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  arg1  [I
            0   11     1  arg2  [I
            0   11     2   len  I
            1   10     3     i  I
            3    8     4    b1  J
            4    8     6    b2  J
    MethodParameters:
      Name  Flags
      arg1  
      arg2  
      len   

  private static int subN(int[], int[], int);
    descriptor: ([I[II)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=5, args_size=3
        start local 0 // int[] a
        start local 1 // int[] b
        start local 2 // int len
         0: .line 3002
            lconst_0
            lstore 3 /* sum */
        start local 3 // long sum
         1: .line 3004
            goto 8
         2: .line 3005
      StackMap locals: long
      StackMap stack:
            aload 0 /* a */
            iload 2 /* len */
            iaload
            i2l
            ldc 4294967295
            land
         3: .line 3006
            aload 1 /* b */
            iload 2 /* len */
            iaload
            i2l
            ldc 4294967295
            land
         4: .line 3005
            lsub
         5: .line 3006
            lload 3 /* sum */
            bipush 32
            lshr
         6: .line 3005
            ladd
            lstore 3 /* sum */
         7: .line 3007
            aload 0 /* a */
            iload 2 /* len */
            lload 3 /* sum */
            l2i
            iastore
         8: .line 3004
      StackMap locals:
      StackMap stack:
            iinc 2 /* len */ -1
            iload 2 /* len */
            ifge 2
         9: .line 3010
            lload 3 /* sum */
            bipush 32
            lshr
            l2i
            ireturn
        end local 3 // long sum
        end local 2 // int len
        end local 1 // int[] b
        end local 0 // int[] a
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0     a  [I
            0   10     1     b  [I
            0   10     2   len  I
            1   10     3   sum  J
    MethodParameters:
      Name  Flags
      a     
      b     
      len   

  static int mulAdd(int[], int[], int, int, int);
    descriptor: ([I[IIII)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // int[] out
        start local 1 // int[] in
        start local 2 // int offset
        start local 3 // int len
        start local 4 // int k
         0: .line 3017
            aload 0 /* out */
            aload 1 /* in */
            iload 2 /* offset */
            iload 3 /* len */
            iload 4 /* k */
            invokestatic java.math.BigInteger.implMulAddCheck:([I[IIII)V
         1: .line 3018
            aload 0 /* out */
            aload 1 /* in */
            iload 2 /* offset */
            iload 3 /* len */
            iload 4 /* k */
            invokestatic java.math.BigInteger.implMulAdd:([I[IIII)I
            ireturn
        end local 4 // int k
        end local 3 // int len
        end local 2 // int offset
        end local 1 // int[] in
        end local 0 // int[] out
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0     out  [I
            0    2     1      in  [I
            0    2     2  offset  I
            0    2     3     len  I
            0    2     4       k  I
    MethodParameters:
        Name  Flags
      out     
      in      
      offset  
      len     
      k       

  private static void implMulAddCheck(int[], int[], int, int, int);
    descriptor: ([I[IIII)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // int[] out
        start local 1 // int[] in
        start local 2 // int offset
        start local 3 // int len
        start local 4 // int k
         0: .line 3025
            iload 3 /* len */
            aload 1 /* in */
            arraylength
            if_icmple 2
         1: .line 3026
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "input length is out of bound: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 3 /* len */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " > "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* in */
            arraylength
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 3028
      StackMap locals:
      StackMap stack:
            iload 2 /* offset */
            ifge 4
         3: .line 3029
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "input offset is invalid: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* offset */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 3031
      StackMap locals:
      StackMap stack:
            iload 2 /* offset */
            aload 0 /* out */
            arraylength
            iconst_1
            isub
            if_icmple 6
         5: .line 3032
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "input offset is out of bound: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* offset */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " > "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* out */
            arraylength
            iconst_1
            isub
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 3034
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            aload 0 /* out */
            arraylength
            iload 2 /* offset */
            isub
            if_icmple 8
         7: .line 3035
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "input len is out of bound: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 3 /* len */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " > "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* out */
            arraylength
            iload 2 /* offset */
            isub
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 3037
      StackMap locals:
      StackMap stack:
            return
        end local 4 // int k
        end local 3 // int len
        end local 2 // int offset
        end local 1 // int[] in
        end local 0 // int[] out
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0     out  [I
            0    9     1      in  [I
            0    9     2  offset  I
            0    9     3     len  I
            0    9     4       k  I
    MethodParameters:
        Name  Flags
      out     
      in      
      offset  
      len     
      k       

  private static int implMulAdd(int[], int[], int, int, int);
    descriptor: ([I[IIII)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=12, args_size=5
        start local 0 // int[] out
        start local 1 // int[] in
        start local 2 // int offset
        start local 3 // int len
        start local 4 // int k
         0: .line 3043
            iload 4 /* k */
            i2l
            ldc 4294967295
            land
            lstore 5 /* kLong */
        start local 5 // long kLong
         1: .line 3044
            lconst_0
            lstore 7 /* carry */
        start local 7 // long carry
         2: .line 3046
            aload 0 /* out */
            arraylength
            iload 2 /* offset */
            isub
            iconst_1
            isub
            istore 2 /* offset */
         3: .line 3047
            iload 3 /* len */
            iconst_1
            isub
            istore 9 /* j */
        start local 9 // int j
         4: goto 13
         5: .line 3048
      StackMap locals: long long int
      StackMap stack:
            aload 1 /* in */
            iload 9 /* j */
            iaload
            i2l
            ldc 4294967295
            land
            lload 5 /* kLong */
            lmul
         6: .line 3049
            aload 0 /* out */
            iload 2 /* offset */
            iaload
            i2l
            ldc 4294967295
            land
         7: .line 3048
            ladd
         8: .line 3049
            lload 7 /* carry */
         9: .line 3048
            ladd
            lstore 10 /* product */
        start local 10 // long product
        10: .line 3050
            aload 0 /* out */
            iload 2 /* offset */
            iinc 2 /* offset */ -1
            lload 10 /* product */
            l2i
            iastore
        11: .line 3051
            lload 10 /* product */
            bipush 32
            lushr
            lstore 7 /* carry */
        end local 10 // long product
        12: .line 3047
            iinc 9 /* j */ -1
      StackMap locals:
      StackMap stack:
        13: iload 9 /* j */
            ifge 5
        end local 9 // int j
        14: .line 3053
            lload 7 /* carry */
            l2i
            ireturn
        end local 7 // long carry
        end local 5 // long kLong
        end local 4 // int k
        end local 3 // int len
        end local 2 // int offset
        end local 1 // int[] in
        end local 0 // int[] out
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   15     0      out  [I
            0   15     1       in  [I
            0   15     2   offset  I
            0   15     3      len  I
            0   15     4        k  I
            1   15     5    kLong  J
            2   15     7    carry  J
            4   14     9        j  I
           10   12    10  product  J
    MethodParameters:
        Name  Flags
      out     
      in      
      offset  
      len     
      k       

  static int addOne(int[], int, int, int);
    descriptor: ([IIII)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // int[] a
        start local 1 // int offset
        start local 2 // int mlen
        start local 3 // int carry
         0: .line 3061
            aload 0 /* a */
            arraylength
            iconst_1
            isub
            iload 2 /* mlen */
            isub
            iload 1 /* offset */
            isub
            istore 1 /* offset */
         1: .line 3062
            aload 0 /* a */
            iload 1 /* offset */
            iaload
            i2l
            ldc 4294967295
            land
            iload 3 /* carry */
            i2l
            ldc 4294967295
            land
            ladd
            lstore 4 /* t */
        start local 4 // long t
         2: .line 3064
            aload 0 /* a */
            iload 1 /* offset */
            lload 4 /* t */
            l2i
            iastore
         3: .line 3065
            lload 4 /* t */
            bipush 32
            lushr
            lconst_0
            lcmp
            ifne 10
         4: .line 3066
            iconst_0
            ireturn
         5: .line 3068
      StackMap locals: long
      StackMap stack:
            iinc 1 /* offset */ -1
            iload 1 /* offset */
            ifge 7
         6: .line 3069
            iconst_1
            ireturn
         7: .line 3071
      StackMap locals:
      StackMap stack:
            aload 0 /* a */
            iload 1 /* offset */
            dup2
            iaload
            iconst_1
            iadd
            iastore
         8: .line 3072
            aload 0 /* a */
            iload 1 /* offset */
            iaload
            ifeq 10
         9: .line 3073
            iconst_0
            ireturn
        10: .line 3067
      StackMap locals:
      StackMap stack:
            iinc 2 /* mlen */ -1
            iload 2 /* mlen */
            ifge 5
        11: .line 3076
            iconst_1
            ireturn
        end local 4 // long t
        end local 3 // int carry
        end local 2 // int mlen
        end local 1 // int offset
        end local 0 // int[] a
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   12     0       a  [I
            0   12     1  offset  I
            0   12     2    mlen  I
            0   12     3   carry  I
            2   12     4       t  J
    MethodParameters:
        Name  Flags
      a       
      offset  
      mlen    
      carry   

  private java.math.BigInteger modPow2(java.math.BigInteger, int);
    descriptor: (Ljava/math/BigInteger;I)Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=7, args_size=3
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger exponent
        start local 2 // int p
         0: .line 3087
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            astore 3 /* result */
        start local 3 // java.math.BigInteger result
         1: .line 3088
            aload 0 /* this */
            iload 2 /* p */
            invokevirtual java.math.BigInteger.mod2:(I)Ljava/math/BigInteger;
            astore 4 /* baseToPow2 */
        start local 4 // java.math.BigInteger baseToPow2
         2: .line 3089
            iconst_0
            istore 5 /* expOffset */
        start local 5 // int expOffset
         3: .line 3091
            aload 1 /* exponent */
            invokevirtual java.math.BigInteger.bitLength:()I
            istore 6 /* limit */
        start local 6 // int limit
         4: .line 3093
            aload 0 /* this */
            iconst_0
            invokevirtual java.math.BigInteger.testBit:(I)Z
            ifeq 14
         5: .line 3094
            iload 2 /* p */
            iconst_1
            isub
            iload 6 /* limit */
            if_icmpge 6
            iload 2 /* p */
            iconst_1
            isub
            goto 7
      StackMap locals: java.math.BigInteger java.math.BigInteger int java.math.BigInteger java.math.BigInteger int int
      StackMap stack:
         6: iload 6 /* limit */
      StackMap locals:
      StackMap stack: int
         7: istore 6 /* limit */
         8: .line 3096
            goto 14
         9: .line 3097
      StackMap locals:
      StackMap stack:
            aload 1 /* exponent */
            iload 5 /* expOffset */
            invokevirtual java.math.BigInteger.testBit:(I)Z
            ifeq 11
        10: .line 3098
            aload 3 /* result */
            aload 4 /* baseToPow2 */
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            iload 2 /* p */
            invokevirtual java.math.BigInteger.mod2:(I)Ljava/math/BigInteger;
            astore 3 /* result */
        11: .line 3099
      StackMap locals:
      StackMap stack:
            iinc 5 /* expOffset */ 1
        12: .line 3100
            iload 5 /* expOffset */
            iload 6 /* limit */
            if_icmpge 14
        13: .line 3101
            aload 4 /* baseToPow2 */
            invokevirtual java.math.BigInteger.square:()Ljava/math/BigInteger;
            iload 2 /* p */
            invokevirtual java.math.BigInteger.mod2:(I)Ljava/math/BigInteger;
            astore 4 /* baseToPow2 */
        14: .line 3096
      StackMap locals:
      StackMap stack:
            iload 5 /* expOffset */
            iload 6 /* limit */
            if_icmplt 9
        15: .line 3104
            aload 3 /* result */
            areturn
        end local 6 // int limit
        end local 5 // int expOffset
        end local 4 // java.math.BigInteger baseToPow2
        end local 3 // java.math.BigInteger result
        end local 2 // int p
        end local 1 // java.math.BigInteger exponent
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   16     0        this  Ljava/math/BigInteger;
            0   16     1    exponent  Ljava/math/BigInteger;
            0   16     2           p  I
            1   16     3      result  Ljava/math/BigInteger;
            2   16     4  baseToPow2  Ljava/math/BigInteger;
            3   16     5   expOffset  I
            4   16     6       limit  I
    MethodParameters:
          Name  Flags
      exponent  
      p         

  private java.math.BigInteger mod2(int);
    descriptor: (I)Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=5, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // int p
         0: .line 3112
            aload 0 /* this */
            invokevirtual java.math.BigInteger.bitLength:()I
            iload 1 /* p */
            if_icmpgt 2
         1: .line 3113
            aload 0 /* this */
            areturn
         2: .line 3116
      StackMap locals:
      StackMap stack:
            iload 1 /* p */
            bipush 31
            iadd
            iconst_5
            iushr
            istore 2 /* numInts */
        start local 2 // int numInts
         3: .line 3117
            iload 2 /* numInts */
            newarray 10
            astore 3 /* mag */
        start local 3 // int[] mag
         4: .line 3118
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            iload 2 /* numInts */
            isub
            aload 3 /* mag */
            iconst_0
            iload 2 /* numInts */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         5: .line 3121
            iload 2 /* numInts */
            iconst_5
            ishl
            iload 1 /* p */
            isub
            istore 4 /* excessBits */
        start local 4 // int excessBits
         6: .line 3122
            aload 3 /* mag */
            iconst_0
            dup2
            iaload
            i2l
            lconst_1
            bipush 32
            iload 4 /* excessBits */
            isub
            lshl
            lconst_1
            lsub
            land
            l2i
            iastore
         7: .line 3124
            aload 3 /* mag */
            iconst_0
            iaload
            ifne 8
            new java.math.BigInteger
            dup
            iconst_1
            aload 3 /* mag */
            invokespecial java.math.BigInteger.<init>:(I[I)V
            goto 9
      StackMap locals: int int[] int
      StackMap stack:
         8: new java.math.BigInteger
            dup
            aload 3 /* mag */
            iconst_1
            invokespecial java.math.BigInteger.<init>:([II)V
      StackMap locals:
      StackMap stack: java.math.BigInteger
         9: areturn
        end local 4 // int excessBits
        end local 3 // int[] mag
        end local 2 // int numInts
        end local 1 // int p
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Ljava/math/BigInteger;
            0   10     1           p  I
            3   10     2     numInts  I
            4   10     3         mag  [I
            6   10     4  excessBits  I
    MethodParameters:
      Name  Flags
      p     

  public java.math.BigInteger modInverse(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger m
         0: .line 3137
            aload 1 /* m */
            getfield java.math.BigInteger.signum:I
            iconst_1
            if_icmpeq 2
         1: .line 3138
            new java.lang.ArithmeticException
            dup
            ldc "BigInteger: modulus not positive"
            invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 3140
      StackMap locals:
      StackMap stack:
            aload 1 /* m */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 3141
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            areturn
         4: .line 3144
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            astore 2 /* modVal */
        start local 2 // java.math.BigInteger modVal
         5: .line 3145
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            iflt 6
            aload 0 /* this */
            aload 1 /* m */
            invokevirtual java.math.BigInteger.compareMagnitude:(Ljava/math/BigInteger;)I
            iflt 7
         6: .line 3146
      StackMap locals: java.math.BigInteger
      StackMap stack:
            aload 0 /* this */
            aload 1 /* m */
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 2 /* modVal */
         7: .line 3148
      StackMap locals:
      StackMap stack:
            aload 2 /* modVal */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifeq 9
         8: .line 3149
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            areturn
         9: .line 3151
      StackMap locals:
      StackMap stack:
            new java.math.MutableBigInteger
            dup
            aload 2 /* modVal */
            invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
            astore 3 /* a */
        start local 3 // java.math.MutableBigInteger a
        10: .line 3152
            new java.math.MutableBigInteger
            dup
            aload 1 /* m */
            invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
            astore 4 /* b */
        start local 4 // java.math.MutableBigInteger b
        11: .line 3154
            aload 3 /* a */
            aload 4 /* b */
            invokevirtual java.math.MutableBigInteger.mutableModInverse:(Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger;
            astore 5 /* result */
        start local 5 // java.math.MutableBigInteger result
        12: .line 3155
            aload 5 /* result */
            iconst_1
            invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
            areturn
        end local 5 // java.math.MutableBigInteger result
        end local 4 // java.math.MutableBigInteger b
        end local 3 // java.math.MutableBigInteger a
        end local 2 // java.math.BigInteger modVal
        end local 1 // java.math.BigInteger m
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   13     0    this  Ljava/math/BigInteger;
            0   13     1       m  Ljava/math/BigInteger;
            5   13     2  modVal  Ljava/math/BigInteger;
           10   13     3       a  Ljava/math/MutableBigInteger;
           11   13     4       b  Ljava/math/MutableBigInteger;
           12   13     5  result  Ljava/math/MutableBigInteger;
    MethodParameters:
      Name  Flags
      m     

  public java.math.BigInteger shiftLeft(int);
    descriptor: (I)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // int n
         0: .line 3171
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifne 2
         1: .line 3172
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            areturn
         2: .line 3173
      StackMap locals:
      StackMap stack:
            iload 1 /* n */
            ifle 4
         3: .line 3174
            new java.math.BigInteger
            dup
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iload 1 /* n */
            invokestatic java.math.BigInteger.shiftLeft:([II)[I
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            invokespecial java.math.BigInteger.<init>:([II)V
            areturn
         4: .line 3175
      StackMap locals:
      StackMap stack:
            iload 1 /* n */
            ifne 6
         5: .line 3176
            aload 0 /* this */
            areturn
         6: .line 3180
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* n */
            ineg
            invokevirtual java.math.BigInteger.shiftRightImpl:(I)Ljava/math/BigInteger;
            areturn
        end local 1 // int n
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Ljava/math/BigInteger;
            0    7     1     n  I
    MethodParameters:
      Name  Flags
      n     

  private static int[] shiftLeft(int[], int);
    descriptor: ([II)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=10, args_size=2
        start local 0 // int[] mag
        start local 1 // int n
         0: .line 3194
            iload 1 /* n */
            iconst_5
            iushr
            istore 2 /* nInts */
        start local 2 // int nInts
         1: .line 3195
            iload 1 /* n */
            bipush 31
            iand
            istore 3 /* nBits */
        start local 3 // int nBits
         2: .line 3196
            aload 0 /* mag */
            arraylength
            istore 4 /* magLen */
        start local 4 // int magLen
         3: .line 3197
            aconst_null
            astore 5 /* newMag */
        start local 5 // int[] newMag
         4: .line 3199
            iload 3 /* nBits */
            ifne 8
         5: .line 3200
            iload 4 /* magLen */
            iload 2 /* nInts */
            iadd
            newarray 10
            astore 5 /* newMag */
         6: .line 3201
            aload 0 /* mag */
            iconst_0
            aload 5 /* newMag */
            iconst_0
            iload 4 /* magLen */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         7: .line 3202
            goto 21
         8: .line 3203
      StackMap locals: int[] int int int int int[]
      StackMap stack:
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         9: .line 3204
            bipush 32
            iload 3 /* nBits */
            isub
            istore 7 /* nBits2 */
        start local 7 // int nBits2
        10: .line 3205
            aload 0 /* mag */
            iconst_0
            iaload
            iload 7 /* nBits2 */
            iushr
            istore 8 /* highBits */
        start local 8 // int highBits
        11: .line 3206
            iload 8 /* highBits */
            ifeq 15
        12: .line 3207
            iload 4 /* magLen */
            iload 2 /* nInts */
            iadd
            iconst_1
            iadd
            newarray 10
            astore 5 /* newMag */
        13: .line 3208
            aload 5 /* newMag */
            iload 6 /* i */
            iinc 6 /* i */ 1
            iload 8 /* highBits */
            iastore
        14: .line 3209
            goto 16
        15: .line 3210
      StackMap locals: int int int
      StackMap stack:
            iload 4 /* magLen */
            iload 2 /* nInts */
            iadd
            newarray 10
            astore 5 /* newMag */
        16: .line 3212
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 9 /* j */
        start local 9 // int j
        17: .line 3213
            goto 19
        18: .line 3214
      StackMap locals: int
      StackMap stack:
            aload 5 /* newMag */
            iload 6 /* i */
            iinc 6 /* i */ 1
            aload 0 /* mag */
            iload 9 /* j */
            iinc 9 /* j */ 1
            iaload
            iload 3 /* nBits */
            ishl
            aload 0 /* mag */
            iload 9 /* j */
            iaload
            iload 7 /* nBits2 */
            iushr
            ior
            iastore
        19: .line 3213
      StackMap locals:
      StackMap stack:
            iload 9 /* j */
            iload 4 /* magLen */
            iconst_1
            isub
            if_icmplt 18
        20: .line 3215
            aload 5 /* newMag */
            iload 6 /* i */
            aload 0 /* mag */
            iload 9 /* j */
            iaload
            iload 3 /* nBits */
            ishl
            iastore
        end local 9 // int j
        end local 8 // int highBits
        end local 7 // int nBits2
        end local 6 // int i
        21: .line 3217
      StackMap locals: int[] int int int int int[]
      StackMap stack:
            aload 5 /* newMag */
            areturn
        end local 5 // int[] newMag
        end local 4 // int magLen
        end local 3 // int nBits
        end local 2 // int nInts
        end local 1 // int n
        end local 0 // int[] mag
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   22     0       mag  [I
            0   22     1         n  I
            1   22     2     nInts  I
            2   22     3     nBits  I
            3   22     4    magLen  I
            4   22     5    newMag  [I
            9   21     6         i  I
           10   21     7    nBits2  I
           11   21     8  highBits  I
           17   21     9         j  I
    MethodParameters:
      Name  Flags
      mag   
      n     

  public java.math.BigInteger shiftRight(int);
    descriptor: (I)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // int n
         0: .line 3231
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifne 2
         1: .line 3232
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            areturn
         2: .line 3233
      StackMap locals:
      StackMap stack:
            iload 1 /* n */
            ifle 4
         3: .line 3234
            aload 0 /* this */
            iload 1 /* n */
            invokevirtual java.math.BigInteger.shiftRightImpl:(I)Ljava/math/BigInteger;
            areturn
         4: .line 3235
      StackMap locals:
      StackMap stack:
            iload 1 /* n */
            ifne 6
         5: .line 3236
            aload 0 /* this */
            areturn
         6: .line 3240
      StackMap locals:
      StackMap stack:
            new java.math.BigInteger
            dup
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iload 1 /* n */
            ineg
            invokestatic java.math.BigInteger.shiftLeft:([II)[I
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            invokespecial java.math.BigInteger.<init>:([II)V
            areturn
        end local 1 // int n
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Ljava/math/BigInteger;
            0    7     1     n  I
    MethodParameters:
      Name  Flags
      n     

  private java.math.BigInteger shiftRightImpl(int);
    descriptor: (I)Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=10, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // int n
         0: .line 3253
            iload 1 /* n */
            iconst_5
            iushr
            istore 2 /* nInts */
        start local 2 // int nInts
         1: .line 3254
            iload 1 /* n */
            bipush 31
            iand
            istore 3 /* nBits */
        start local 3 // int nBits
         2: .line 3255
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            istore 4 /* magLen */
        start local 4 // int magLen
         3: .line 3256
            aconst_null
            astore 5 /* newMag */
        start local 5 // int[] newMag
         4: .line 3259
            iload 2 /* nInts */
            iload 4 /* magLen */
            if_icmplt 8
         5: .line 3260
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            iflt 6
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            goto 7
      StackMap locals: java.math.BigInteger int int int int int[]
      StackMap stack:
         6: getstatic java.math.BigInteger.negConst:[Ljava/math/BigInteger;
            iconst_1
            aaload
      StackMap locals:
      StackMap stack: java.math.BigInteger
         7: areturn
         8: .line 3262
      StackMap locals:
      StackMap stack:
            iload 3 /* nBits */
            ifne 12
         9: .line 3263
            iload 4 /* magLen */
            iload 2 /* nInts */
            isub
            istore 6 /* newMagLen */
        start local 6 // int newMagLen
        10: .line 3264
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iload 6 /* newMagLen */
            invokestatic java.util.Arrays.copyOf:([II)[I
            astore 5 /* newMag */
        end local 6 // int newMagLen
        11: .line 3265
            goto 24
        12: .line 3266
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        13: .line 3267
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_0
            iaload
            iload 3 /* nBits */
            iushr
            istore 7 /* highBits */
        start local 7 // int highBits
        14: .line 3268
            iload 7 /* highBits */
            ifeq 18
        15: .line 3269
            iload 4 /* magLen */
            iload 2 /* nInts */
            isub
            newarray 10
            astore 5 /* newMag */
        16: .line 3270
            aload 5 /* newMag */
            iload 6 /* i */
            iinc 6 /* i */ 1
            iload 7 /* highBits */
            iastore
        17: .line 3271
            goto 19
        18: .line 3272
      StackMap locals: int int
      StackMap stack:
            iload 4 /* magLen */
            iload 2 /* nInts */
            isub
            iconst_1
            isub
            newarray 10
            astore 5 /* newMag */
        19: .line 3275
      StackMap locals:
      StackMap stack:
            bipush 32
            iload 3 /* nBits */
            isub
            istore 8 /* nBits2 */
        start local 8 // int nBits2
        20: .line 3276
            iconst_0
            istore 9 /* j */
        start local 9 // int j
        21: .line 3277
            goto 23
        22: .line 3278
      StackMap locals: int int
      StackMap stack:
            aload 5 /* newMag */
            iload 6 /* i */
            iinc 6 /* i */ 1
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iload 9 /* j */
            iinc 9 /* j */ 1
            iaload
            iload 8 /* nBits2 */
            ishl
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iload 9 /* j */
            iaload
            iload 3 /* nBits */
            iushr
            ior
            iastore
        23: .line 3277
      StackMap locals:
      StackMap stack:
            iload 9 /* j */
            iload 4 /* magLen */
            iload 2 /* nInts */
            isub
            iconst_1
            isub
            if_icmplt 22
        end local 9 // int j
        end local 8 // int nBits2
        end local 7 // int highBits
        end local 6 // int i
        24: .line 3281
      StackMap locals: java.math.BigInteger int int int int int[]
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifge 40
        25: .line 3283
            iconst_0
            istore 6 /* onesLost */
        start local 6 // boolean onesLost
        26: .line 3284
            iload 4 /* magLen */
            iconst_1
            isub
            istore 7 /* i */
        start local 7 // int i
        27: iload 4 /* magLen */
            iload 2 /* nInts */
            isub
            istore 8 /* j */
        start local 8 // int j
        28: goto 33
        29: .line 3285
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iload 7 /* i */
            iaload
            ifeq 30
            iconst_1
            goto 31
      StackMap locals:
      StackMap stack:
        30: iconst_0
      StackMap locals:
      StackMap stack: int
        31: istore 6 /* onesLost */
        32: .line 3284
            iinc 7 /* i */ -1
      StackMap locals:
      StackMap stack:
        33: iload 7 /* i */
            iload 8 /* j */
            if_icmplt 34
            iload 6 /* onesLost */
            ifeq 29
        end local 8 // int j
        end local 7 // int i
        34: .line 3286
      StackMap locals:
      StackMap stack:
            iload 6 /* onesLost */
            ifne 38
            iload 3 /* nBits */
            ifeq 38
        35: .line 3287
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iload 4 /* magLen */
            iload 2 /* nInts */
            isub
            iconst_1
            isub
            iaload
            bipush 32
            iload 3 /* nBits */
            isub
            ishl
            ifeq 36
            iconst_1
            goto 37
      StackMap locals:
      StackMap stack:
        36: iconst_0
      StackMap locals:
      StackMap stack: int
        37: istore 6 /* onesLost */
        38: .line 3289
      StackMap locals:
      StackMap stack:
            iload 6 /* onesLost */
            ifeq 40
        39: .line 3290
            aload 0 /* this */
            aload 5 /* newMag */
            invokevirtual java.math.BigInteger.javaIncrement:([I)[I
            astore 5 /* newMag */
        end local 6 // boolean onesLost
        40: .line 3293
      StackMap locals:
      StackMap stack:
            new java.math.BigInteger
            dup
            aload 5 /* newMag */
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            invokespecial java.math.BigInteger.<init>:([II)V
            areturn
        end local 5 // int[] newMag
        end local 4 // int magLen
        end local 3 // int nBits
        end local 2 // int nInts
        end local 1 // int n
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   41     0       this  Ljava/math/BigInteger;
            0   41     1          n  I
            1   41     2      nInts  I
            2   41     3      nBits  I
            3   41     4     magLen  I
            4   41     5     newMag  [I
           10   11     6  newMagLen  I
           13   24     6          i  I
           14   24     7   highBits  I
           20   24     8     nBits2  I
           21   24     9          j  I
           26   40     6   onesLost  Z
           27   34     7          i  I
           28   34     8          j  I
    MethodParameters:
      Name  Flags
      n     

  int[] javaIncrement(int[]);
    descriptor: ([I)[I
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // int[] val
         0: .line 3297
            iconst_0
            istore 2 /* lastSum */
        start local 2 // int lastSum
         1: .line 3298
            aload 1 /* val */
            arraylength
            iconst_1
            isub
            istore 3 /* i */
        start local 3 // int i
         2: goto 5
         3: .line 3299
      StackMap locals: int int
      StackMap stack:
            aload 1 /* val */
            iload 3 /* i */
            dup2
            iaload
            iconst_1
            iadd
            dup_x2
            iastore
            istore 2 /* lastSum */
         4: .line 3298
            iinc 3 /* i */ -1
      StackMap locals:
      StackMap stack:
         5: iload 3 /* i */
            iflt 6
            iload 2 /* lastSum */
            ifeq 3
        end local 3 // int i
         6: .line 3300
      StackMap locals:
      StackMap stack:
            iload 2 /* lastSum */
            ifne 9
         7: .line 3301
            aload 1 /* val */
            arraylength
            iconst_1
            iadd
            newarray 10
            astore 1 /* val */
         8: .line 3302
            aload 1 /* val */
            iconst_0
            iconst_1
            iastore
         9: .line 3304
      StackMap locals:
      StackMap stack:
            aload 1 /* val */
            areturn
        end local 2 // int lastSum
        end local 1 // int[] val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   10     0     this  Ljava/math/BigInteger;
            0   10     1      val  [I
            1   10     2  lastSum  I
            2    6     3        i  I
    MethodParameters:
      Name  Flags
      val   

  public java.math.BigInteger and(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 3318
            aload 0 /* this */
            invokevirtual java.math.BigInteger.intLength:()I
            aload 1 /* val */
            invokevirtual java.math.BigInteger.intLength:()I
            invokestatic java.lang.Math.max:(II)I
            newarray 10
            astore 2 /* result */
        start local 2 // int[] result
         1: .line 3319
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 7
         3: .line 3320
      StackMap locals: int[] int
      StackMap stack:
            aload 2 /* result */
            iload 3 /* i */
            aload 0 /* this */
            aload 2 /* result */
            arraylength
            iload 3 /* i */
            isub
            iconst_1
            isub
            invokevirtual java.math.BigInteger.getInt:(I)I
         4: .line 3321
            aload 1 /* val */
            aload 2 /* result */
            arraylength
            iload 3 /* i */
            isub
            iconst_1
            isub
            invokevirtual java.math.BigInteger.getInt:(I)I
            iand
         5: .line 3320
            iastore
         6: .line 3319
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 3 /* i */
            aload 2 /* result */
            arraylength
            if_icmplt 3
        end local 3 // int i
         8: .line 3323
            aload 2 /* result */
            invokestatic java.math.BigInteger.valueOf:([I)Ljava/math/BigInteger;
            areturn
        end local 2 // int[] result
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Ljava/math/BigInteger;
            0    9     1     val  Ljava/math/BigInteger;
            1    9     2  result  [I
            2    8     3       i  I
    MethodParameters:
      Name  Flags
      val   

  public java.math.BigInteger or(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 3335
            aload 0 /* this */
            invokevirtual java.math.BigInteger.intLength:()I
            aload 1 /* val */
            invokevirtual java.math.BigInteger.intLength:()I
            invokestatic java.lang.Math.max:(II)I
            newarray 10
            astore 2 /* result */
        start local 2 // int[] result
         1: .line 3336
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 7
         3: .line 3337
      StackMap locals: int[] int
      StackMap stack:
            aload 2 /* result */
            iload 3 /* i */
            aload 0 /* this */
            aload 2 /* result */
            arraylength
            iload 3 /* i */
            isub
            iconst_1
            isub
            invokevirtual java.math.BigInteger.getInt:(I)I
         4: .line 3338
            aload 1 /* val */
            aload 2 /* result */
            arraylength
            iload 3 /* i */
            isub
            iconst_1
            isub
            invokevirtual java.math.BigInteger.getInt:(I)I
            ior
         5: .line 3337
            iastore
         6: .line 3336
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 3 /* i */
            aload 2 /* result */
            arraylength
            if_icmplt 3
        end local 3 // int i
         8: .line 3340
            aload 2 /* result */
            invokestatic java.math.BigInteger.valueOf:([I)Ljava/math/BigInteger;
            areturn
        end local 2 // int[] result
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Ljava/math/BigInteger;
            0    9     1     val  Ljava/math/BigInteger;
            1    9     2  result  [I
            2    8     3       i  I
    MethodParameters:
      Name  Flags
      val   

  public java.math.BigInteger xor(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 3352
            aload 0 /* this */
            invokevirtual java.math.BigInteger.intLength:()I
            aload 1 /* val */
            invokevirtual java.math.BigInteger.intLength:()I
            invokestatic java.lang.Math.max:(II)I
            newarray 10
            astore 2 /* result */
        start local 2 // int[] result
         1: .line 3353
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 7
         3: .line 3354
      StackMap locals: int[] int
      StackMap stack:
            aload 2 /* result */
            iload 3 /* i */
            aload 0 /* this */
            aload 2 /* result */
            arraylength
            iload 3 /* i */
            isub
            iconst_1
            isub
            invokevirtual java.math.BigInteger.getInt:(I)I
         4: .line 3355
            aload 1 /* val */
            aload 2 /* result */
            arraylength
            iload 3 /* i */
            isub
            iconst_1
            isub
            invokevirtual java.math.BigInteger.getInt:(I)I
            ixor
         5: .line 3354
            iastore
         6: .line 3353
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 3 /* i */
            aload 2 /* result */
            arraylength
            if_icmplt 3
        end local 3 // int i
         8: .line 3357
            aload 2 /* result */
            invokestatic java.math.BigInteger.valueOf:([I)Ljava/math/BigInteger;
            areturn
        end local 2 // int[] result
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Ljava/math/BigInteger;
            0    9     1     val  Ljava/math/BigInteger;
            1    9     2  result  [I
            2    8     3       i  I
    MethodParameters:
      Name  Flags
      val   

  public java.math.BigInteger not();
    descriptor: ()Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 3368
            aload 0 /* this */
            invokevirtual java.math.BigInteger.intLength:()I
            newarray 10
            astore 1 /* result */
        start local 1 // int[] result
         1: .line 3369
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 5
         3: .line 3370
      StackMap locals: int[] int
      StackMap stack:
            aload 1 /* result */
            iload 2 /* i */
            aload 0 /* this */
            aload 1 /* result */
            arraylength
            iload 2 /* i */
            isub
            iconst_1
            isub
            invokevirtual java.math.BigInteger.getInt:(I)I
            iconst_m1
            ixor
            iastore
         4: .line 3369
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 2 /* i */
            aload 1 /* result */
            arraylength
            if_icmplt 3
        end local 2 // int i
         6: .line 3372
            aload 1 /* result */
            invokestatic java.math.BigInteger.valueOf:([I)Ljava/math/BigInteger;
            areturn
        end local 1 // int[] result
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Ljava/math/BigInteger;
            1    7     1  result  [I
            2    6     2       i  I

  public java.math.BigInteger andNot(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 3386
            aload 0 /* this */
            invokevirtual java.math.BigInteger.intLength:()I
            aload 1 /* val */
            invokevirtual java.math.BigInteger.intLength:()I
            invokestatic java.lang.Math.max:(II)I
            newarray 10
            astore 2 /* result */
        start local 2 // int[] result
         1: .line 3387
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 7
         3: .line 3388
      StackMap locals: int[] int
      StackMap stack:
            aload 2 /* result */
            iload 3 /* i */
            aload 0 /* this */
            aload 2 /* result */
            arraylength
            iload 3 /* i */
            isub
            iconst_1
            isub
            invokevirtual java.math.BigInteger.getInt:(I)I
         4: .line 3389
            aload 1 /* val */
            aload 2 /* result */
            arraylength
            iload 3 /* i */
            isub
            iconst_1
            isub
            invokevirtual java.math.BigInteger.getInt:(I)I
            iconst_m1
            ixor
            iand
         5: .line 3388
            iastore
         6: .line 3387
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 3 /* i */
            aload 2 /* result */
            arraylength
            if_icmplt 3
        end local 3 // int i
         8: .line 3391
            aload 2 /* result */
            invokestatic java.math.BigInteger.valueOf:([I)Ljava/math/BigInteger;
            areturn
        end local 2 // int[] result
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Ljava/math/BigInteger;
            0    9     1     val  Ljava/math/BigInteger;
            1    9     2  result  [I
            2    8     3       i  I
    MethodParameters:
      Name  Flags
      val   

  public boolean testBit(int);
    descriptor: (I)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // int n
         0: .line 3406
            iload 1 /* n */
            ifge 2
         1: .line 3407
            new java.lang.ArithmeticException
            dup
            ldc "Negative bit address"
            invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 3409
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* n */
            iconst_5
            iushr
            invokevirtual java.math.BigInteger.getInt:(I)I
            iconst_1
            iload 1 /* n */
            bipush 31
            iand
            ishl
            iand
            ifeq 3
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_0
            ireturn
        end local 1 // int n
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljava/math/BigInteger;
            0    4     1     n  I
    MethodParameters:
      Name  Flags
      n     

  public java.math.BigInteger setBit(int);
    descriptor: (I)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // int n
         0: .line 3421
            iload 1 /* n */
            ifge 2
         1: .line 3422
            new java.lang.ArithmeticException
            dup
            ldc "Negative bit address"
            invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 3424
      StackMap locals:
      StackMap stack:
            iload 1 /* n */
            iconst_5
            iushr
            istore 2 /* intNum */
        start local 2 // int intNum
         3: .line 3425
            aload 0 /* this */
            invokevirtual java.math.BigInteger.intLength:()I
            iload 2 /* intNum */
            iconst_2
            iadd
            invokestatic java.lang.Math.max:(II)I
            newarray 10
            astore 3 /* result */
        start local 3 // int[] result
         4: .line 3427
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         5: goto 8
         6: .line 3428
      StackMap locals: int int[] int
      StackMap stack:
            aload 3 /* result */
            aload 3 /* result */
            arraylength
            iload 4 /* i */
            isub
            iconst_1
            isub
            aload 0 /* this */
            iload 4 /* i */
            invokevirtual java.math.BigInteger.getInt:(I)I
            iastore
         7: .line 3427
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 4 /* i */
            aload 3 /* result */
            arraylength
            if_icmplt 6
        end local 4 // int i
         9: .line 3430
            aload 3 /* result */
            aload 3 /* result */
            arraylength
            iload 2 /* intNum */
            isub
            iconst_1
            isub
            dup2
            iaload
            iconst_1
            iload 1 /* n */
            bipush 31
            iand
            ishl
            ior
            iastore
        10: .line 3432
            aload 3 /* result */
            invokestatic java.math.BigInteger.valueOf:([I)Ljava/math/BigInteger;
            areturn
        end local 3 // int[] result
        end local 2 // int intNum
        end local 1 // int n
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Ljava/math/BigInteger;
            0   11     1       n  I
            3   11     2  intNum  I
            4   11     3  result  [I
            5    9     4       i  I
    MethodParameters:
      Name  Flags
      n     

  public java.math.BigInteger clearBit(int);
    descriptor: (I)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // int n
         0: .line 3445
            iload 1 /* n */
            ifge 2
         1: .line 3446
            new java.lang.ArithmeticException
            dup
            ldc "Negative bit address"
            invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 3448
      StackMap locals:
      StackMap stack:
            iload 1 /* n */
            iconst_5
            iushr
            istore 2 /* intNum */
        start local 2 // int intNum
         3: .line 3449
            aload 0 /* this */
            invokevirtual java.math.BigInteger.intLength:()I
            iload 1 /* n */
            iconst_1
            iadd
            iconst_5
            iushr
            iconst_1
            iadd
            invokestatic java.lang.Math.max:(II)I
            newarray 10
            astore 3 /* result */
        start local 3 // int[] result
         4: .line 3451
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         5: goto 8
         6: .line 3452
      StackMap locals: int int[] int
      StackMap stack:
            aload 3 /* result */
            aload 3 /* result */
            arraylength
            iload 4 /* i */
            isub
            iconst_1
            isub
            aload 0 /* this */
            iload 4 /* i */
            invokevirtual java.math.BigInteger.getInt:(I)I
            iastore
         7: .line 3451
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 4 /* i */
            aload 3 /* result */
            arraylength
            if_icmplt 6
        end local 4 // int i
         9: .line 3454
            aload 3 /* result */
            aload 3 /* result */
            arraylength
            iload 2 /* intNum */
            isub
            iconst_1
            isub
            dup2
            iaload
            iconst_1
            iload 1 /* n */
            bipush 31
            iand
            ishl
            iconst_m1
            ixor
            iand
            iastore
        10: .line 3456
            aload 3 /* result */
            invokestatic java.math.BigInteger.valueOf:([I)Ljava/math/BigInteger;
            areturn
        end local 3 // int[] result
        end local 2 // int intNum
        end local 1 // int n
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Ljava/math/BigInteger;
            0   11     1       n  I
            3   11     2  intNum  I
            4   11     3  result  [I
            5    9     4       i  I
    MethodParameters:
      Name  Flags
      n     

  public java.math.BigInteger flipBit(int);
    descriptor: (I)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // int n
         0: .line 3469
            iload 1 /* n */
            ifge 2
         1: .line 3470
            new java.lang.ArithmeticException
            dup
            ldc "Negative bit address"
            invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 3472
      StackMap locals:
      StackMap stack:
            iload 1 /* n */
            iconst_5
            iushr
            istore 2 /* intNum */
        start local 2 // int intNum
         3: .line 3473
            aload 0 /* this */
            invokevirtual java.math.BigInteger.intLength:()I
            iload 2 /* intNum */
            iconst_2
            iadd
            invokestatic java.lang.Math.max:(II)I
            newarray 10
            astore 3 /* result */
        start local 3 // int[] result
         4: .line 3475
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         5: goto 8
         6: .line 3476
      StackMap locals: int int[] int
      StackMap stack:
            aload 3 /* result */
            aload 3 /* result */
            arraylength
            iload 4 /* i */
            isub
            iconst_1
            isub
            aload 0 /* this */
            iload 4 /* i */
            invokevirtual java.math.BigInteger.getInt:(I)I
            iastore
         7: .line 3475
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 4 /* i */
            aload 3 /* result */
            arraylength
            if_icmplt 6
        end local 4 // int i
         9: .line 3478
            aload 3 /* result */
            aload 3 /* result */
            arraylength
            iload 2 /* intNum */
            isub
            iconst_1
            isub
            dup2
            iaload
            iconst_1
            iload 1 /* n */
            bipush 31
            iand
            ishl
            ixor
            iastore
        10: .line 3480
            aload 3 /* result */
            invokestatic java.math.BigInteger.valueOf:([I)Ljava/math/BigInteger;
            areturn
        end local 3 // int[] result
        end local 2 // int intNum
        end local 1 // int n
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Ljava/math/BigInteger;
            0   11     1       n  I
            3   11     2  intNum  I
            4   11     3  result  [I
            5    9     4       i  I
    MethodParameters:
      Name  Flags
      n     

  public int getLowestSetBit();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 3492
            aload 0 /* this */
            getfield java.math.BigInteger.lowestSetBit:I
            iconst_2
            isub
            istore 1 /* lsb */
        start local 1 // int lsb
         1: .line 3493
            iload 1 /* lsb */
            bipush -2
            if_icmpne 13
         2: .line 3494
            iconst_0
            istore 1 /* lsb */
         3: .line 3495
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifne 6
         4: .line 3496
            iinc 1 /* lsb */ -1
         5: .line 3497
            goto 12
         6: .line 3500
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         7: goto 9
        start local 3 // int b
      StackMap locals: int int
      StackMap stack:
         8: iinc 2 /* i */ 1
        end local 3 // int b
      StackMap locals:
      StackMap stack:
         9: aload 0 /* this */
            iload 2 /* i */
            invokevirtual java.math.BigInteger.getInt:(I)I
            dup
            istore 3 /* b */
        start local 3 // int b
        10: ifeq 8
        11: .line 3502
            iload 1 /* lsb */
            iload 2 /* i */
            iconst_5
            ishl
            iload 3 /* b */
            invokestatic java.lang.Integer.numberOfTrailingZeros:(I)I
            iadd
            iadd
            istore 1 /* lsb */
        end local 3 // int b
        end local 2 // int i
        12: .line 3504
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* lsb */
            iconst_2
            iadd
            putfield java.math.BigInteger.lowestSetBit:I
        13: .line 3506
      StackMap locals:
      StackMap stack:
            iload 1 /* lsb */
            ireturn
        end local 1 // int lsb
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Ljava/math/BigInteger;
            1   14     1   lsb  I
            7   12     2     i  I
            8    9     3     b  I
           10   12     3     b  I

  public int bitLength();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 3523
            aload 0 /* this */
            getfield java.math.BigInteger.bitLength:I
            iconst_1
            isub
            istore 1 /* n */
        start local 1 // int n
         1: .line 3524
            iload 1 /* n */
            iconst_m1
            if_icmpne 25
         2: .line 3525
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            astore 2 /* m */
        start local 2 // int[] m
         3: .line 3526
            aload 2 /* m */
            arraylength
            istore 3 /* len */
        start local 3 // int len
         4: .line 3527
            iload 3 /* len */
            ifne 7
         5: .line 3528
            iconst_0
            istore 1 /* n */
         6: .line 3529
            goto 24
         7: .line 3531
      StackMap locals: int int[] int
      StackMap stack:
            iload 3 /* len */
            iconst_1
            isub
            iconst_5
            ishl
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_0
            iaload
            invokestatic java.math.BigInteger.bitLengthForInt:(I)I
            iadd
            istore 4 /* magBitLength */
        start local 4 // int magBitLength
         8: .line 3532
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifge 23
         9: .line 3534
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_0
            iaload
            invokestatic java.lang.Integer.bitCount:(I)I
            iconst_1
            if_icmpne 10
            iconst_1
            goto 11
      StackMap locals: int
      StackMap stack:
        10: iconst_0
      StackMap locals:
      StackMap stack: int
        11: istore 5 /* pow2 */
        start local 5 // boolean pow2
        12: .line 3535
            iconst_1
            istore 6 /* i */
        start local 6 // int i
        13: goto 18
        14: .line 3536
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iload 6 /* i */
            iaload
            ifne 15
            iconst_1
            goto 16
      StackMap locals:
      StackMap stack:
        15: iconst_0
      StackMap locals:
      StackMap stack: int
        16: istore 5 /* pow2 */
        17: .line 3535
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        18: iload 6 /* i */
            iload 3 /* len */
            if_icmpge 19
            iload 5 /* pow2 */
            ifne 14
        end local 6 // int i
        19: .line 3538
      StackMap locals:
      StackMap stack:
            iload 5 /* pow2 */
            ifeq 20
            iload 4 /* magBitLength */
            iconst_1
            isub
            goto 21
      StackMap locals:
      StackMap stack:
        20: iload 4 /* magBitLength */
      StackMap locals:
      StackMap stack: int
        21: istore 1 /* n */
        end local 5 // boolean pow2
        22: .line 3539
            goto 24
        23: .line 3540
      StackMap locals:
      StackMap stack:
            iload 4 /* magBitLength */
            istore 1 /* n */
        end local 4 // int magBitLength
        24: .line 3543
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* n */
            iconst_1
            iadd
            putfield java.math.BigInteger.bitLength:I
        end local 3 // int len
        end local 2 // int[] m
        25: .line 3545
      StackMap locals:
      StackMap stack:
            iload 1 /* n */
            ireturn
        end local 1 // int n
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   26     0          this  Ljava/math/BigInteger;
            1   26     1             n  I
            3   25     2             m  [I
            4   25     3           len  I
            8   24     4  magBitLength  I
           12   22     5          pow2  Z
           13   19     6             i  I

  public int bitCount();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 3557
            aload 0 /* this */
            getfield java.math.BigInteger.bitCount:I
            iconst_1
            isub
            istore 1 /* bc */
        start local 1 // int bc
         1: .line 3558
            iload 1 /* bc */
            iconst_m1
            if_icmpne 18
         2: .line 3559
            iconst_0
            istore 1 /* bc */
         3: .line 3561
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         4: goto 7
         5: .line 3562
      StackMap locals: int int
      StackMap stack:
            iload 1 /* bc */
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iload 2 /* i */
            iaload
            invokestatic java.lang.Integer.bitCount:(I)I
            iadd
            istore 1 /* bc */
         6: .line 3561
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 2 /* i */
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            if_icmplt 5
        end local 2 // int i
         8: .line 3563
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifge 17
         9: .line 3565
            iconst_0
            istore 2 /* magTrailingZeroCount */
        start local 2 // int magTrailingZeroCount
        10: .line 3566
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            iconst_1
            isub
            istore 3 /* j */
        start local 3 // int j
        11: goto 14
        12: .line 3567
      StackMap locals: int
      StackMap stack:
            iinc 2 /* magTrailingZeroCount */ 32
        13: .line 3566
            iinc 3 /* j */ -1
      StackMap locals:
      StackMap stack:
        14: aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iload 3 /* j */
            iaload
            ifeq 12
        15: .line 3568
            iload 2 /* magTrailingZeroCount */
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iload 3 /* j */
            iaload
            invokestatic java.lang.Integer.numberOfTrailingZeros:(I)I
            iadd
            istore 2 /* magTrailingZeroCount */
        16: .line 3569
            iload 1 /* bc */
            iload 2 /* magTrailingZeroCount */
            iconst_1
            isub
            iadd
            istore 1 /* bc */
        end local 3 // int j
        end local 2 // int magTrailingZeroCount
        17: .line 3571
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* bc */
            iconst_1
            iadd
            putfield java.math.BigInteger.bitCount:I
        18: .line 3573
      StackMap locals:
      StackMap stack:
            iload 1 /* bc */
            ireturn
        end local 1 // int bc
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   19     0                  this  Ljava/math/BigInteger;
            1   19     1                    bc  I
            4    8     2                     i  I
           10   17     2  magTrailingZeroCount  I
           11   17     3                     j  I

  public boolean isProbablePrime(int);
    descriptor: (I)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // int certainty
         0: .line 3593
            iload 1 /* certainty */
            ifgt 2
         1: .line 3594
            iconst_1
            ireturn
         2: .line 3595
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
            astore 2 /* w */
        start local 2 // java.math.BigInteger w
         3: .line 3596
            aload 2 /* w */
            getstatic java.math.BigInteger.TWO:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifeq 5
         4: .line 3597
            iconst_1
            ireturn
         5: .line 3598
      StackMap locals: java.math.BigInteger
      StackMap stack:
            aload 2 /* w */
            iconst_0
            invokevirtual java.math.BigInteger.testBit:(I)Z
            ifeq 6
            aload 2 /* w */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifeq 7
         6: .line 3599
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         7: .line 3601
      StackMap locals:
      StackMap stack:
            aload 2 /* w */
            iload 1 /* certainty */
            aconst_null
            invokevirtual java.math.BigInteger.primeToCertainty:(ILjava/util/Random;)Z
            ireturn
        end local 2 // java.math.BigInteger w
        end local 1 // int certainty
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Ljava/math/BigInteger;
            0    8     1  certainty  I
            3    8     2          w  Ljava/math/BigInteger;
    MethodParameters:
           Name  Flags
      certainty  

  public int compareTo(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 3620
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            aload 1 /* val */
            getfield java.math.BigInteger.signum:I
            if_icmpne 5
         1: .line 3621
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            tableswitch { // -1 - 1
                   -1: 3
                    0: 4
                    1: 2
              default: 4
          }
         2: .line 3623
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* val */
            invokevirtual java.math.BigInteger.compareMagnitude:(Ljava/math/BigInteger;)I
            ireturn
         3: .line 3625
      StackMap locals:
      StackMap stack:
            aload 1 /* val */
            aload 0 /* this */
            invokevirtual java.math.BigInteger.compareMagnitude:(Ljava/math/BigInteger;)I
            ireturn
         4: .line 3627
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         5: .line 3630
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            aload 1 /* val */
            getfield java.math.BigInteger.signum:I
            if_icmple 6
            iconst_1
            goto 7
      StackMap locals:
      StackMap stack:
         6: iconst_m1
      StackMap locals:
      StackMap stack: int
         7: ireturn
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Ljava/math/BigInteger;
            0    8     1   val  Ljava/math/BigInteger;
    MethodParameters:
      Name  Flags
      val   

  final int compareMagnitude(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)I
    flags: (0x0010) ACC_FINAL
    Code:
      stack=6, locals=9, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 3642
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            astore 2 /* m1 */
        start local 2 // int[] m1
         1: .line 3643
            aload 2 /* m1 */
            arraylength
            istore 3 /* len1 */
        start local 3 // int len1
         2: .line 3644
            aload 1 /* val */
            getfield java.math.BigInteger.mag:[I
            astore 4 /* m2 */
        start local 4 // int[] m2
         3: .line 3645
            aload 4 /* m2 */
            arraylength
            istore 5 /* len2 */
        start local 5 // int len2
         4: .line 3646
            iload 3 /* len1 */
            iload 5 /* len2 */
            if_icmpge 6
         5: .line 3647
            iconst_m1
            ireturn
         6: .line 3648
      StackMap locals: java.math.BigInteger java.math.BigInteger int[] int int[] int
      StackMap stack:
            iload 3 /* len1 */
            iload 5 /* len2 */
            if_icmple 8
         7: .line 3649
            iconst_1
            ireturn
         8: .line 3650
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         9: goto 17
        10: .line 3651
      StackMap locals: int
      StackMap stack:
            aload 2 /* m1 */
            iload 6 /* i */
            iaload
            istore 7 /* a */
        start local 7 // int a
        11: .line 3652
            aload 4 /* m2 */
            iload 6 /* i */
            iaload
            istore 8 /* b */
        start local 8 // int b
        12: .line 3653
            iload 7 /* a */
            iload 8 /* b */
            if_icmpeq 16
        13: .line 3654
            iload 7 /* a */
            i2l
            ldc 4294967295
            land
            iload 8 /* b */
            i2l
            ldc 4294967295
            land
            lcmp
            ifge 14
            iconst_m1
            goto 15
      StackMap locals: int int
      StackMap stack:
        14: iconst_1
      StackMap locals:
      StackMap stack: int
        15: ireturn
        end local 8 // int b
        end local 7 // int a
        16: .line 3650
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        17: iload 6 /* i */
            iload 3 /* len1 */
            if_icmplt 10
        end local 6 // int i
        18: .line 3656
            iconst_0
            ireturn
        end local 5 // int len2
        end local 4 // int[] m2
        end local 3 // int len1
        end local 2 // int[] m1
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   19     0  this  Ljava/math/BigInteger;
            0   19     1   val  Ljava/math/BigInteger;
            1   19     2    m1  [I
            2   19     3  len1  I
            3   19     4    m2  [I
            4   19     5  len2  I
            9   18     6     i  I
           11   16     7     a  I
           12   16     8     b  I
    MethodParameters:
      Name  Flags
      val   

  final int compareMagnitude(long);
    descriptor: (J)I
    flags: (0x0010) ACC_FINAL
    Code:
      stack=6, locals=8, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // long val
         0: .line 3664
            getstatic java.math.BigInteger.$assertionsDisabled:Z
            ifne 1
            lload 1 /* val */
            ldc -9223372036854775808
            lcmp
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 3665
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            astore 3 /* m1 */
        start local 3 // int[] m1
         2: .line 3666
            aload 3 /* m1 */
            arraylength
            istore 4 /* len */
        start local 4 // int len
         3: .line 3667
            iload 4 /* len */
            iconst_2
            if_icmple 5
         4: .line 3668
            iconst_1
            ireturn
         5: .line 3670
      StackMap locals: int[] int
      StackMap stack:
            lload 1 /* val */
            lconst_0
            lcmp
            ifge 7
         6: .line 3671
            lload 1 /* val */
            lneg
            lstore 1 /* val */
         7: .line 3673
      StackMap locals:
      StackMap stack:
            lload 1 /* val */
            bipush 32
            lushr
            l2i
            istore 5 /* highWord */
        start local 5 // int highWord
         8: .line 3674
            iload 5 /* highWord */
            ifne 20
         9: .line 3675
            iload 4 /* len */
            iconst_1
            if_icmpge 11
        10: .line 3676
            iconst_m1
            ireturn
        11: .line 3677
      StackMap locals: int
      StackMap stack:
            iload 4 /* len */
            iconst_1
            if_icmple 13
        12: .line 3678
            iconst_1
            ireturn
        13: .line 3679
      StackMap locals:
      StackMap stack:
            aload 3 /* m1 */
            iconst_0
            iaload
            istore 6 /* a */
        start local 6 // int a
        14: .line 3680
            lload 1 /* val */
            l2i
            istore 7 /* b */
        start local 7 // int b
        15: .line 3681
            iload 6 /* a */
            iload 7 /* b */
            if_icmpeq 19
        16: .line 3682
            iload 6 /* a */
            i2l
            ldc 4294967295
            land
            iload 7 /* b */
            i2l
            ldc 4294967295
            land
            lcmp
            ifge 17
            iconst_m1
            goto 18
      StackMap locals: int int
      StackMap stack:
        17: iconst_1
      StackMap locals:
      StackMap stack: int
        18: ireturn
        19: .line 3684
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 7 // int b
        end local 6 // int a
        20: .line 3686
      StackMap locals:
      StackMap stack:
            iload 4 /* len */
            iconst_2
            if_icmpge 22
        21: .line 3687
            iconst_m1
            ireturn
        22: .line 3688
      StackMap locals:
      StackMap stack:
            aload 3 /* m1 */
            iconst_0
            iaload
            istore 6 /* a */
        start local 6 // int a
        23: .line 3689
            iload 5 /* highWord */
            istore 7 /* b */
        start local 7 // int b
        24: .line 3690
            iload 6 /* a */
            iload 7 /* b */
            if_icmpeq 28
        25: .line 3691
            iload 6 /* a */
            i2l
            ldc 4294967295
            land
            iload 7 /* b */
            i2l
            ldc 4294967295
            land
            lcmp
            ifge 26
            iconst_m1
            goto 27
      StackMap locals: int int
      StackMap stack:
        26: iconst_1
      StackMap locals:
      StackMap stack: int
        27: ireturn
        28: .line 3693
      StackMap locals:
      StackMap stack:
            aload 3 /* m1 */
            iconst_1
            iaload
            istore 6 /* a */
        29: .line 3694
            lload 1 /* val */
            l2i
            istore 7 /* b */
        30: .line 3695
            iload 6 /* a */
            iload 7 /* b */
            if_icmpeq 34
        31: .line 3696
            iload 6 /* a */
            i2l
            ldc 4294967295
            land
            iload 7 /* b */
            i2l
            ldc 4294967295
            land
            lcmp
            ifge 32
            iconst_m1
            goto 33
      StackMap locals:
      StackMap stack:
        32: iconst_1
      StackMap locals:
      StackMap stack: int
        33: ireturn
        34: .line 3698
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 7 // int b
        end local 6 // int a
        end local 5 // int highWord
        end local 4 // int len
        end local 3 // int[] m1
        end local 1 // long val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   35     0      this  Ljava/math/BigInteger;
            0   35     1       val  J
            2   35     3        m1  [I
            3   35     4       len  I
            8   35     5  highWord  I
           14   20     6         a  I
           15   20     7         b  I
           23   35     6         a  I
           24   35     7         b  I
    MethodParameters:
      Name  Flags
      val   

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.lang.Object x
         0: .line 3711
            aload 1 /* x */
            aload 0 /* this */
            if_acmpne 2
         1: .line 3712
            iconst_1
            ireturn
         2: .line 3714
      StackMap locals:
      StackMap stack:
            aload 1 /* x */
            instanceof java.math.BigInteger
            ifne 4
         3: .line 3715
            iconst_0
            ireturn
         4: .line 3717
      StackMap locals:
      StackMap stack:
            aload 1 /* x */
            checkcast java.math.BigInteger
            astore 2 /* xInt */
        start local 2 // java.math.BigInteger xInt
         5: .line 3718
            aload 2 /* xInt */
            getfield java.math.BigInteger.signum:I
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            if_icmpeq 7
         6: .line 3719
            iconst_0
            ireturn
         7: .line 3721
      StackMap locals: java.math.BigInteger
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            astore 3 /* m */
        start local 3 // int[] m
         8: .line 3722
            aload 3 /* m */
            arraylength
            istore 4 /* len */
        start local 4 // int len
         9: .line 3723
            aload 2 /* xInt */
            getfield java.math.BigInteger.mag:[I
            astore 5 /* xm */
        start local 5 // int[] xm
        10: .line 3724
            iload 4 /* len */
            aload 5 /* xm */
            arraylength
            if_icmpeq 12
        11: .line 3725
            iconst_0
            ireturn
        12: .line 3727
      StackMap locals: int[] int int[]
      StackMap stack:
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        13: goto 17
        14: .line 3728
      StackMap locals: int
      StackMap stack:
            aload 5 /* xm */
            iload 6 /* i */
            iaload
            aload 3 /* m */
            iload 6 /* i */
            iaload
            if_icmpeq 16
        15: .line 3729
            iconst_0
            ireturn
        16: .line 3727
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        17: iload 6 /* i */
            iload 4 /* len */
            if_icmplt 14
        end local 6 // int i
        18: .line 3731
            iconst_1
            ireturn
        end local 5 // int[] xm
        end local 4 // int len
        end local 3 // int[] m
        end local 2 // java.math.BigInteger xInt
        end local 1 // java.lang.Object x
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   19     0  this  Ljava/math/BigInteger;
            0   19     1     x  Ljava/lang/Object;
            5   19     2  xInt  Ljava/math/BigInteger;
            8   19     3     m  [I
            9   19     4   len  I
           10   19     5    xm  [I
           13   18     6     i  I
    MethodParameters:
      Name  Flags
      x     

  public java.math.BigInteger min(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 3742
            aload 0 /* this */
            aload 1 /* val */
            invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
            ifge 1
            aload 0 /* this */
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 1 /* val */
      StackMap locals:
      StackMap stack: java.math.BigInteger
         2: areturn
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljava/math/BigInteger;
            0    3     1   val  Ljava/math/BigInteger;
    MethodParameters:
      Name  Flags
      val   

  public java.math.BigInteger max(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.math.BigInteger val
         0: .line 3753
            aload 0 /* this */
            aload 1 /* val */
            invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
            ifle 1
            aload 0 /* this */
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 1 /* val */
      StackMap locals:
      StackMap stack: java.math.BigInteger
         2: areturn
        end local 1 // java.math.BigInteger val
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljava/math/BigInteger;
            0    3     1   val  Ljava/math/BigInteger;
    MethodParameters:
      Name  Flags
      val   

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 3765
            iconst_0
            istore 1 /* hashCode */
        start local 1 // int hashCode
         1: .line 3767
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 5
         3: .line 3768
      StackMap locals: int int
      StackMap stack:
            bipush 31
            iload 1 /* hashCode */
            imul
            i2l
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iload 2 /* i */
            iaload
            i2l
            ldc 4294967295
            land
            ladd
            l2i
            istore 1 /* hashCode */
         4: .line 3767
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 2 /* i */
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            if_icmplt 3
        end local 2 // int i
         6: .line 3770
            iload 1 /* hashCode */
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            imul
            ireturn
        end local 1 // int hashCode
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Ljava/math/BigInteger;
            1    7     1  hashCode  I
            2    6     2         i  I

  public java.lang.String toString(int);
    descriptor: (I)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // int radix
         0: .line 3791
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifne 2
         1: .line 3792
            ldc "0"
            areturn
         2: .line 3793
      StackMap locals:
      StackMap stack:
            iload 1 /* radix */
            iconst_2
            if_icmplt 3
            iload 1 /* radix */
            bipush 36
            if_icmple 4
         3: .line 3794
      StackMap locals:
      StackMap stack:
            bipush 10
            istore 1 /* radix */
         4: .line 3797
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            bipush 20
            if_icmpgt 6
         5: .line 3798
            aload 0 /* this */
            iload 1 /* radix */
            invokevirtual java.math.BigInteger.smallToString:(I)Ljava/lang/String;
            areturn
         6: .line 3802
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* sb */
        start local 2 // java.lang.StringBuilder sb
         7: .line 3803
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifge 11
         8: .line 3804
            aload 0 /* this */
            invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
            aload 2 /* sb */
            iload 1 /* radix */
            iconst_0
            invokestatic java.math.BigInteger.toString:(Ljava/math/BigInteger;Ljava/lang/StringBuilder;II)V
         9: .line 3805
            aload 2 /* sb */
            iconst_0
            bipush 45
            invokevirtual java.lang.StringBuilder.insert:(IC)Ljava/lang/StringBuilder;
            pop
        10: .line 3806
            goto 12
        11: .line 3808
      StackMap locals: java.lang.StringBuilder
      StackMap stack:
            aload 0 /* this */
            aload 2 /* sb */
            iload 1 /* radix */
            iconst_0
            invokestatic java.math.BigInteger.toString:(Ljava/math/BigInteger;Ljava/lang/StringBuilder;II)V
        12: .line 3810
      StackMap locals:
      StackMap stack:
            aload 2 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.lang.StringBuilder sb
        end local 1 // int radix
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   13     0   this  Ljava/math/BigInteger;
            0   13     1  radix  I
            7   13     2     sb  Ljava/lang/StringBuilder;
    MethodParameters:
       Name  Flags
      radix  

  private java.lang.String smallToString(int);
    descriptor: (I)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=13, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // int radix
         0: .line 3815
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifne 2
         1: .line 3816
            ldc "0"
            areturn
         2: .line 3820
      StackMap locals:
      StackMap stack:
            iconst_4
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            imul
            bipush 6
            iadd
            bipush 7
            idiv
            istore 2 /* maxNumDigitGroups */
        start local 2 // int maxNumDigitGroups
         3: .line 3821
            iload 2 /* maxNumDigitGroups */
            anewarray java.lang.String
            astore 3 /* digitGroup */
        start local 3 // java.lang.String[] digitGroup
         4: .line 3824
            aload 0 /* this */
            invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
            astore 4 /* tmp */
        start local 4 // java.math.BigInteger tmp
         5: .line 3825
            iconst_0
            istore 5 /* numGroups */
        start local 5 // int numGroups
         6: .line 3826
            goto 16
         7: .line 3827
      StackMap locals: java.math.BigInteger int int java.lang.String[] java.math.BigInteger int
      StackMap stack:
            getstatic java.math.BigInteger.longRadix:[Ljava/math/BigInteger;
            iload 1 /* radix */
            aaload
            astore 6 /* d */
        start local 6 // java.math.BigInteger d
         8: .line 3829
            new java.math.MutableBigInteger
            dup
            invokespecial java.math.MutableBigInteger.<init>:()V
            astore 7 /* q */
        start local 7 // java.math.MutableBigInteger q
         9: .line 3830
            new java.math.MutableBigInteger
            dup
            aload 4 /* tmp */
            getfield java.math.BigInteger.mag:[I
            invokespecial java.math.MutableBigInteger.<init>:([I)V
            astore 8 /* a */
        start local 8 // java.math.MutableBigInteger a
        10: .line 3831
            new java.math.MutableBigInteger
            dup
            aload 6 /* d */
            getfield java.math.BigInteger.mag:[I
            invokespecial java.math.MutableBigInteger.<init>:([I)V
            astore 9 /* b */
        start local 9 // java.math.MutableBigInteger b
        11: .line 3832
            aload 8 /* a */
            aload 9 /* b */
            aload 7 /* q */
            invokevirtual java.math.MutableBigInteger.divide:(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger;
            astore 10 /* r */
        start local 10 // java.math.MutableBigInteger r
        12: .line 3833
            aload 7 /* q */
            aload 4 /* tmp */
            getfield java.math.BigInteger.signum:I
            aload 6 /* d */
            getfield java.math.BigInteger.signum:I
            imul
            invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
            astore 11 /* q2 */
        start local 11 // java.math.BigInteger q2
        13: .line 3834
            aload 10 /* r */
            aload 4 /* tmp */
            getfield java.math.BigInteger.signum:I
            aload 6 /* d */
            getfield java.math.BigInteger.signum:I
            imul
            invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
            astore 12 /* r2 */
        start local 12 // java.math.BigInteger r2
        14: .line 3836
            aload 3 /* digitGroup */
            iload 5 /* numGroups */
            iinc 5 /* numGroups */ 1
            aload 12 /* r2 */
            invokevirtual java.math.BigInteger.longValue:()J
            iload 1 /* radix */
            invokestatic java.lang.Long.toString:(JI)Ljava/lang/String;
            aastore
        15: .line 3837
            aload 11 /* q2 */
            astore 4 /* tmp */
        end local 12 // java.math.BigInteger r2
        end local 11 // java.math.BigInteger q2
        end local 10 // java.math.MutableBigInteger r
        end local 9 // java.math.MutableBigInteger b
        end local 8 // java.math.MutableBigInteger a
        end local 7 // java.math.MutableBigInteger q
        end local 6 // java.math.BigInteger d
        16: .line 3826
      StackMap locals:
      StackMap stack:
            aload 4 /* tmp */
            getfield java.math.BigInteger.signum:I
            ifne 7
        17: .line 3841
            new java.lang.StringBuilder
            dup
            iload 5 /* numGroups */
            getstatic java.math.BigInteger.digitsPerLong:[I
            iload 1 /* radix */
            iaload
            imul
            iconst_1
            iadd
            invokespecial java.lang.StringBuilder.<init>:(I)V
            astore 6 /* buf */
        start local 6 // java.lang.StringBuilder buf
        18: .line 3842
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifge 20
        19: .line 3843
            aload 6 /* buf */
            bipush 45
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        20: .line 3845
      StackMap locals: java.lang.StringBuilder
      StackMap stack:
            aload 6 /* buf */
            aload 3 /* digitGroup */
            iload 5 /* numGroups */
            iconst_1
            isub
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        21: .line 3848
            iload 5 /* numGroups */
            iconst_2
            isub
            istore 7 /* i */
        start local 7 // int i
        22: goto 28
        23: .line 3850
      StackMap locals: int
      StackMap stack:
            getstatic java.math.BigInteger.digitsPerLong:[I
            iload 1 /* radix */
            iaload
            aload 3 /* digitGroup */
            iload 7 /* i */
            aaload
            invokevirtual java.lang.String.length:()I
            isub
            istore 8 /* numLeadingZeros */
        start local 8 // int numLeadingZeros
        24: .line 3851
            iload 8 /* numLeadingZeros */
            ifeq 26
        25: .line 3852
            aload 6 /* buf */
            getstatic java.math.BigInteger.zeros:[Ljava/lang/String;
            iload 8 /* numLeadingZeros */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        26: .line 3854
      StackMap locals: int
      StackMap stack:
            aload 6 /* buf */
            aload 3 /* digitGroup */
            iload 7 /* i */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 8 // int numLeadingZeros
        27: .line 3848
            iinc 7 /* i */ -1
      StackMap locals:
      StackMap stack:
        28: iload 7 /* i */
            ifge 23
        end local 7 // int i
        29: .line 3856
            aload 6 /* buf */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 6 // java.lang.StringBuilder buf
        end local 5 // int numGroups
        end local 4 // java.math.BigInteger tmp
        end local 3 // java.lang.String[] digitGroup
        end local 2 // int maxNumDigitGroups
        end local 1 // int radix
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   30     0               this  Ljava/math/BigInteger;
            0   30     1              radix  I
            3   30     2  maxNumDigitGroups  I
            4   30     3         digitGroup  [Ljava/lang/String;
            5   30     4                tmp  Ljava/math/BigInteger;
            6   30     5          numGroups  I
            8   16     6                  d  Ljava/math/BigInteger;
            9   16     7                  q  Ljava/math/MutableBigInteger;
           10   16     8                  a  Ljava/math/MutableBigInteger;
           11   16     9                  b  Ljava/math/MutableBigInteger;
           12   16    10                  r  Ljava/math/MutableBigInteger;
           13   16    11                 q2  Ljava/math/BigInteger;
           14   16    12                 r2  Ljava/math/BigInteger;
           18   30     6                buf  Ljava/lang/StringBuilder;
           22   29     7                  i  I
           24   27     8    numLeadingZeros  I
    MethodParameters:
       Name  Flags
      radix  

  private static void toString(java.math.BigInteger, java.lang.StringBuilder, int, int);
    descriptor: (Ljava/math/BigInteger;Ljava/lang/StringBuilder;II)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=9, args_size=4
        start local 0 // java.math.BigInteger u
        start local 1 // java.lang.StringBuilder sb
        start local 2 // int radix
        start local 3 // int digits
         0: .line 3876
            aload 0 /* u */
            getfield java.math.BigInteger.mag:[I
            arraylength
            bipush 20
            if_icmpgt 10
         1: .line 3877
            aload 0 /* u */
            iload 2 /* radix */
            invokevirtual java.math.BigInteger.smallToString:(I)Ljava/lang/String;
            astore 4 /* s */
        start local 4 // java.lang.String s
         2: .line 3881
            aload 4 /* s */
            invokevirtual java.lang.String.length:()I
            iload 3 /* digits */
            if_icmpge 8
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.length:()I
            ifle 8
         3: .line 3882
            aload 4 /* s */
            invokevirtual java.lang.String.length:()I
            istore 5 /* i */
        start local 5 // int i
         4: goto 7
         5: .line 3883
      StackMap locals: java.lang.String int
      StackMap stack:
            aload 1 /* sb */
            bipush 48
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         6: .line 3882
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 5 /* i */
            iload 3 /* digits */
            if_icmplt 5
        end local 5 // int i
         8: .line 3887
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            aload 4 /* s */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         9: .line 3888
            return
        end local 4 // java.lang.String s
        10: .line 3892
      StackMap locals:
      StackMap stack:
            aload 0 /* u */
            invokevirtual java.math.BigInteger.bitLength:()I
            istore 4 /* b */
        start local 4 // int b
        11: .line 3897
            iload 4 /* b */
            i2d
            getstatic java.math.BigInteger.LOG_TWO:D
            dmul
            getstatic java.math.BigInteger.logCache:[D
            iload 2 /* radix */
            daload
            ddiv
            invokestatic java.lang.Math.log:(D)D
            getstatic java.math.BigInteger.LOG_TWO:D
            ddiv
            dconst_1
            dsub
            invokestatic java.lang.Math.round:(D)J
            l2i
            istore 5 /* n */
        start local 5 // int n
        12: .line 3898
            iload 2 /* radix */
            iload 5 /* n */
            invokestatic java.math.BigInteger.getRadixConversionCache:(II)Ljava/math/BigInteger;
            astore 6 /* v */
        start local 6 // java.math.BigInteger v
        13: .line 3900
            aload 0 /* u */
            aload 6 /* v */
            invokevirtual java.math.BigInteger.divideAndRemainder:(Ljava/math/BigInteger;)[Ljava/math/BigInteger;
            astore 7 /* results */
        start local 7 // java.math.BigInteger[] results
        14: .line 3902
            iconst_1
            iload 5 /* n */
            ishl
            istore 8 /* expectedDigits */
        start local 8 // int expectedDigits
        15: .line 3905
            aload 7 /* results */
            iconst_0
            aaload
            aload 1 /* sb */
            iload 2 /* radix */
            iload 3 /* digits */
            iload 8 /* expectedDigits */
            isub
            invokestatic java.math.BigInteger.toString:(Ljava/math/BigInteger;Ljava/lang/StringBuilder;II)V
        16: .line 3906
            aload 7 /* results */
            iconst_1
            aaload
            aload 1 /* sb */
            iload 2 /* radix */
            iload 8 /* expectedDigits */
            invokestatic java.math.BigInteger.toString:(Ljava/math/BigInteger;Ljava/lang/StringBuilder;II)V
        17: .line 3907
            return
        end local 8 // int expectedDigits
        end local 7 // java.math.BigInteger[] results
        end local 6 // java.math.BigInteger v
        end local 5 // int n
        end local 4 // int b
        end local 3 // int digits
        end local 2 // int radix
        end local 1 // java.lang.StringBuilder sb
        end local 0 // java.math.BigInteger u
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   18     0               u  Ljava/math/BigInteger;
            0   18     1              sb  Ljava/lang/StringBuilder;
            0   18     2           radix  I
            0   18     3          digits  I
            2   10     4               s  Ljava/lang/String;
            4    8     5               i  I
           11   18     4               b  I
           12   18     5               n  I
           13   18     6               v  Ljava/math/BigInteger;
           14   18     7         results  [Ljava/math/BigInteger;
           15   18     8  expectedDigits  I
    MethodParameters:
        Name  Flags
      u       
      sb      
      radix   
      digits  

  private static java.math.BigInteger getRadixConversionCache(int, int);
    descriptor: (II)Ljava/math/BigInteger;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // int radix
        start local 1 // int exponent
         0: .line 3917
            getstatic java.math.BigInteger.powerCache:[[Ljava/math/BigInteger;
            iload 0 /* radix */
            aaload
            astore 2 /* cacheLine */
        start local 2 // java.math.BigInteger[] cacheLine
         1: .line 3918
            iload 1 /* exponent */
            aload 2 /* cacheLine */
            arraylength
            if_icmpge 3
         2: .line 3919
            aload 2 /* cacheLine */
            iload 1 /* exponent */
            aaload
            areturn
         3: .line 3922
      StackMap locals: java.math.BigInteger[]
      StackMap stack:
            aload 2 /* cacheLine */
            arraylength
            istore 3 /* oldLength */
        start local 3 // int oldLength
         4: .line 3923
            aload 2 /* cacheLine */
            iload 1 /* exponent */
            iconst_1
            iadd
            invokestatic java.util.Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
            checkcast java.math.BigInteger[]
            astore 2 /* cacheLine */
         5: .line 3924
            iload 3 /* oldLength */
            istore 4 /* i */
        start local 4 // int i
         6: goto 9
         7: .line 3925
      StackMap locals: int int
      StackMap stack:
            aload 2 /* cacheLine */
            iload 4 /* i */
            aload 2 /* cacheLine */
            iload 4 /* i */
            iconst_1
            isub
            aaload
            iconst_2
            invokevirtual java.math.BigInteger.pow:(I)Ljava/math/BigInteger;
            aastore
         8: .line 3924
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 4 /* i */
            iload 1 /* exponent */
            if_icmple 7
        end local 4 // int i
        10: .line 3928
            getstatic java.math.BigInteger.powerCache:[[Ljava/math/BigInteger;
            astore 4 /* pc */
        start local 4 // java.math.BigInteger[][] pc
        11: .line 3929
            iload 1 /* exponent */
            aload 4 /* pc */
            iload 0 /* radix */
            aaload
            arraylength
            if_icmplt 15
        12: .line 3930
            aload 4 /* pc */
            invokevirtual java.math.BigInteger[][].clone:()Ljava/lang/Object;
            checkcast java.math.BigInteger[][]
            astore 4 /* pc */
        13: .line 3931
            aload 4 /* pc */
            iload 0 /* radix */
            aload 2 /* cacheLine */
            aastore
        14: .line 3932
            aload 4 /* pc */
            putstatic java.math.BigInteger.powerCache:[[Ljava/math/BigInteger;
        15: .line 3934
      StackMap locals: int int java.math.BigInteger[] int java.math.BigInteger[][]
      StackMap stack:
            aload 2 /* cacheLine */
            iload 1 /* exponent */
            aaload
            areturn
        end local 4 // java.math.BigInteger[][] pc
        end local 3 // int oldLength
        end local 2 // java.math.BigInteger[] cacheLine
        end local 1 // int exponent
        end local 0 // int radix
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   16     0      radix  I
            0   16     1   exponent  I
            1   16     2  cacheLine  [Ljava/math/BigInteger;
            4   16     3  oldLength  I
            6   10     4          i  I
           11   16     4         pc  [[Ljava/math/BigInteger;
    MethodParameters:
          Name  Flags
      radix     
      exponent  

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 3959
            aload 0 /* this */
            bipush 10
            invokevirtual java.math.BigInteger.toString:(I)Ljava/lang/String;
            areturn
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/math/BigInteger;

  public byte[] toByteArray();
    descriptor: ()[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 3977
            aload 0 /* this */
            invokevirtual java.math.BigInteger.bitLength:()I
            bipush 8
            idiv
            iconst_1
            iadd
            istore 1 /* byteLen */
        start local 1 // int byteLen
         1: .line 3978
            iload 1 /* byteLen */
            newarray 8
            astore 2 /* byteArray */
        start local 2 // byte[] byteArray
         2: .line 3980
            iload 1 /* byteLen */
            iconst_1
            isub
            istore 3 /* i */
        start local 3 // int i
         3: iconst_4
            istore 4 /* bytesCopied */
        start local 4 // int bytesCopied
         4: iconst_0
            istore 5 /* nextInt */
        start local 5 // int nextInt
         5: iconst_0
            istore 6 /* intIndex */
        start local 6 // int intIndex
         6: goto 15
         7: .line 3981
      StackMap locals: java.math.BigInteger int byte[] int int int int
      StackMap stack:
            iload 4 /* bytesCopied */
            iconst_4
            if_icmpne 11
         8: .line 3982
            aload 0 /* this */
            iload 6 /* intIndex */
            iinc 6 /* intIndex */ 1
            invokevirtual java.math.BigInteger.getInt:(I)I
            istore 5 /* nextInt */
         9: .line 3983
            iconst_1
            istore 4 /* bytesCopied */
        10: .line 3984
            goto 13
        11: .line 3985
      StackMap locals:
      StackMap stack:
            iload 5 /* nextInt */
            bipush 8
            iushr
            istore 5 /* nextInt */
        12: .line 3986
            iinc 4 /* bytesCopied */ 1
        13: .line 3988
      StackMap locals:
      StackMap stack:
            aload 2 /* byteArray */
            iload 3 /* i */
            iload 5 /* nextInt */
            i2b
            bastore
        14: .line 3980
            iinc 3 /* i */ -1
      StackMap locals:
      StackMap stack:
        15: iload 3 /* i */
            ifge 7
        end local 6 // int intIndex
        end local 5 // int nextInt
        end local 4 // int bytesCopied
        end local 3 // int i
        16: .line 3990
            aload 2 /* byteArray */
            areturn
        end local 2 // byte[] byteArray
        end local 1 // int byteLen
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   17     0         this  Ljava/math/BigInteger;
            1   17     1      byteLen  I
            2   17     2    byteArray  [B
            3   16     3            i  I
            4   16     4  bytesCopied  I
            5   16     5      nextInt  I
            6   16     6     intIndex  I

  public int intValue();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 4009
            iconst_0
            istore 1 /* result */
        start local 1 // int result
         1: .line 4010
            aload 0 /* this */
            iconst_0
            invokevirtual java.math.BigInteger.getInt:(I)I
            istore 1 /* result */
         2: .line 4011
            iload 1 /* result */
            ireturn
        end local 1 // int result
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Ljava/math/BigInteger;
            1    3     1  result  I

  public long longValue();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 4030
            lconst_0
            lstore 1 /* result */
        start local 1 // long result
         1: .line 4032
            iconst_1
            istore 3 /* i */
        start local 3 // int i
         2: goto 5
         3: .line 4033
      StackMap locals: long int
      StackMap stack:
            lload 1 /* result */
            bipush 32
            lshl
            aload 0 /* this */
            iload 3 /* i */
            invokevirtual java.math.BigInteger.getInt:(I)I
            i2l
            ldc 4294967295
            land
            ladd
            lstore 1 /* result */
         4: .line 4032
            iinc 3 /* i */ -1
      StackMap locals:
      StackMap stack:
         5: iload 3 /* i */
            ifge 3
        end local 3 // int i
         6: .line 4034
            lload 1 /* result */
            lreturn
        end local 1 // long result
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Ljava/math/BigInteger;
            1    7     1  result  J
            2    6     3       i  I

  public float floatValue();
    descriptor: ()F
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=10, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 4053
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifne 2
         1: .line 4054
            fconst_0
            freturn
         2: .line 4057
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            iconst_1
            isub
            iconst_5
            ishl
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_0
            iaload
            invokestatic java.math.BigInteger.bitLengthForInt:(I)I
            iadd
            iconst_1
            isub
            istore 1 /* exponent */
        start local 1 // int exponent
         3: .line 4060
            iload 1 /* exponent */
            bipush 63
            if_icmpge 5
         4: .line 4061
            aload 0 /* this */
            invokevirtual java.math.BigInteger.longValue:()J
            l2f
            freturn
         5: .line 4062
      StackMap locals: int
      StackMap stack:
            iload 1 /* exponent */
            bipush 127
            if_icmple 9
         6: .line 4063
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifle 7
            ldc Infinity
            goto 8
      StackMap locals:
      StackMap stack:
         7: ldc -Infinity
      StackMap locals:
      StackMap stack: float
         8: freturn
         9: .line 4076
      StackMap locals:
      StackMap stack:
            iload 1 /* exponent */
            bipush 24
            isub
            istore 2 /* shift */
        start local 2 // int shift
        10: .line 4082
            iload 2 /* shift */
            bipush 31
            iand
            istore 4 /* nBits */
        start local 4 // int nBits
        11: .line 4083
            bipush 32
            iload 4 /* nBits */
            isub
            istore 5 /* nBits2 */
        start local 5 // int nBits2
        12: .line 4085
            iload 4 /* nBits */
            ifne 15
        13: .line 4086
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_0
            iaload
            istore 3 /* twiceSignifFloor */
        start local 3 // int twiceSignifFloor
        14: .line 4087
            goto 18
        end local 3 // int twiceSignifFloor
        15: .line 4088
      StackMap locals: java.math.BigInteger int int top int int
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_0
            iaload
            iload 4 /* nBits */
            iushr
            istore 3 /* twiceSignifFloor */
        start local 3 // int twiceSignifFloor
        16: .line 4089
            iload 3 /* twiceSignifFloor */
            ifne 18
        17: .line 4090
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_0
            iaload
            iload 5 /* nBits2 */
            ishl
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_1
            iaload
            iload 4 /* nBits */
            iushr
            ior
            istore 3 /* twiceSignifFloor */
        18: .line 4094
      StackMap locals: java.math.BigInteger int int int int int
      StackMap stack:
            iload 3 /* twiceSignifFloor */
            iconst_1
            ishr
            istore 6 /* signifFloor */
        start local 6 // int signifFloor
        19: .line 4095
            iload 6 /* signifFloor */
            ldc 8388607
            iand
            istore 6 /* signifFloor */
        20: .line 4104
            iload 3 /* twiceSignifFloor */
            iconst_1
            iand
            ifeq 24
        21: .line 4105
            iload 6 /* signifFloor */
            iconst_1
            iand
            ifne 23
            aload 0 /* this */
            invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.getLowestSetBit:()I
            iload 2 /* shift */
        22: .line 4104
            if_icmpge 24
      StackMap locals: int
      StackMap stack:
        23: iconst_1
            goto 25
      StackMap locals:
      StackMap stack:
        24: iconst_0
      StackMap locals:
      StackMap stack: int
        25: istore 7 /* increment */
        start local 7 // boolean increment
        26: .line 4106
            iload 7 /* increment */
            ifeq 27
            iload 6 /* signifFloor */
            iconst_1
            iadd
            goto 28
      StackMap locals: int
      StackMap stack:
        27: iload 6 /* signifFloor */
      StackMap locals:
      StackMap stack: int
        28: istore 8 /* signifRounded */
        start local 8 // int signifRounded
        29: .line 4107
            iload 1 /* exponent */
            bipush 127
            iadd
        30: .line 4108
            bipush 23
        31: .line 4107
            ishl
            istore 9 /* bits */
        start local 9 // int bits
        32: .line 4109
            iload 9 /* bits */
            iload 8 /* signifRounded */
            iadd
            istore 9 /* bits */
        33: .line 4117
            iload 9 /* bits */
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ldc -2147483648
            iand
            ior
            istore 9 /* bits */
        34: .line 4118
            iload 9 /* bits */
            invokestatic java.lang.Float.intBitsToFloat:(I)F
            freturn
        end local 9 // int bits
        end local 8 // int signifRounded
        end local 7 // boolean increment
        end local 6 // int signifFloor
        end local 5 // int nBits2
        end local 4 // int nBits
        end local 3 // int twiceSignifFloor
        end local 2 // int shift
        end local 1 // int exponent
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   35     0              this  Ljava/math/BigInteger;
            3   35     1          exponent  I
           10   35     2             shift  I
           14   15     3  twiceSignifFloor  I
           16   35     3  twiceSignifFloor  I
           11   35     4             nBits  I
           12   35     5            nBits2  I
           19   35     6       signifFloor  I
           26   35     7         increment  Z
           29   35     8     signifRounded  I
           32   35     9              bits  I

  public double doubleValue();
    descriptor: ()D
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=16, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 4137
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifne 2
         1: .line 4138
            dconst_0
            dreturn
         2: .line 4141
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            iconst_1
            isub
            iconst_5
            ishl
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_0
            iaload
            invokestatic java.math.BigInteger.bitLengthForInt:(I)I
            iadd
            iconst_1
            isub
            istore 1 /* exponent */
        start local 1 // int exponent
         3: .line 4144
            iload 1 /* exponent */
            bipush 63
            if_icmpge 5
         4: .line 4145
            aload 0 /* this */
            invokevirtual java.math.BigInteger.longValue:()J
            l2d
            dreturn
         5: .line 4146
      StackMap locals: int
      StackMap stack:
            iload 1 /* exponent */
            sipush 1023
            if_icmple 9
         6: .line 4147
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifle 7
            ldc Infinity
            goto 8
      StackMap locals:
      StackMap stack:
         7: ldc -Infinity
      StackMap locals:
      StackMap stack: double
         8: dreturn
         9: .line 4160
      StackMap locals:
      StackMap stack:
            iload 1 /* exponent */
            bipush 53
            isub
            istore 2 /* shift */
        start local 2 // int shift
        10: .line 4166
            iload 2 /* shift */
            bipush 31
            iand
            istore 5 /* nBits */
        start local 5 // int nBits
        11: .line 4167
            bipush 32
            iload 5 /* nBits */
            isub
            istore 6 /* nBits2 */
        start local 6 // int nBits2
        12: .line 4171
            iload 5 /* nBits */
            ifne 16
        13: .line 4172
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_0
            iaload
            istore 7 /* highBits */
        start local 7 // int highBits
        14: .line 4173
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_1
            iaload
            istore 8 /* lowBits */
        start local 8 // int lowBits
        15: .line 4174
            goto 21
        end local 8 // int lowBits
        end local 7 // int highBits
        16: .line 4175
      StackMap locals: java.math.BigInteger int int top top int int
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_0
            iaload
            iload 5 /* nBits */
            iushr
            istore 7 /* highBits */
        start local 7 // int highBits
        17: .line 4176
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_0
            iaload
            iload 6 /* nBits2 */
            ishl
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_1
            iaload
            iload 5 /* nBits */
            iushr
            ior
            istore 8 /* lowBits */
        start local 8 // int lowBits
        18: .line 4177
            iload 7 /* highBits */
            ifne 21
        19: .line 4178
            iload 8 /* lowBits */
            istore 7 /* highBits */
        20: .line 4179
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_1
            iaload
            iload 6 /* nBits2 */
            ishl
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_2
            iaload
            iload 5 /* nBits */
            iushr
            ior
            istore 8 /* lowBits */
        21: .line 4183
      StackMap locals: int int
      StackMap stack:
            iload 7 /* highBits */
            i2l
            ldc 4294967295
            land
            bipush 32
            lshl
        22: .line 4184
            iload 8 /* lowBits */
            i2l
            ldc 4294967295
            land
        23: .line 4183
            lor
            lstore 3 /* twiceSignifFloor */
        start local 3 // long twiceSignifFloor
        24: .line 4186
            lload 3 /* twiceSignifFloor */
            iconst_1
            lshr
            lstore 9 /* signifFloor */
        start local 9 // long signifFloor
        25: .line 4187
            lload 9 /* signifFloor */
            ldc 4503599627370495
            land
            lstore 9 /* signifFloor */
        26: .line 4196
            lload 3 /* twiceSignifFloor */
            lconst_1
            land
            lconst_0
            lcmp
            ifeq 30
        27: .line 4197
            lload 9 /* signifFloor */
            lconst_1
            land
            lconst_0
            lcmp
            ifne 29
            aload 0 /* this */
            invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.getLowestSetBit:()I
            iload 2 /* shift */
        28: .line 4196
            if_icmpge 30
      StackMap locals: java.math.BigInteger int int long int int int int long
      StackMap stack:
        29: iconst_1
            goto 31
      StackMap locals:
      StackMap stack:
        30: iconst_0
      StackMap locals:
      StackMap stack: int
        31: istore 11 /* increment */
        start local 11 // boolean increment
        32: .line 4198
            iload 11 /* increment */
            ifeq 33
            lload 9 /* signifFloor */
            lconst_1
            ladd
            goto 34
      StackMap locals: int
      StackMap stack:
        33: lload 9 /* signifFloor */
      StackMap locals:
      StackMap stack: long
        34: lstore 12 /* signifRounded */
        start local 12 // long signifRounded
        35: .line 4199
            iload 1 /* exponent */
            sipush 1023
            iadd
            i2l
        36: .line 4200
            bipush 52
        37: .line 4199
            lshl
            lstore 14 /* bits */
        start local 14 // long bits
        38: .line 4201
            lload 14 /* bits */
            lload 12 /* signifRounded */
            ladd
            lstore 14 /* bits */
        39: .line 4209
            lload 14 /* bits */
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            i2l
            ldc -9223372036854775808
            land
            lor
            lstore 14 /* bits */
        40: .line 4210
            lload 14 /* bits */
            invokestatic java.lang.Double.longBitsToDouble:(J)D
            dreturn
        end local 14 // long bits
        end local 12 // long signifRounded
        end local 11 // boolean increment
        end local 9 // long signifFloor
        end local 8 // int lowBits
        end local 7 // int highBits
        end local 6 // int nBits2
        end local 5 // int nBits
        end local 3 // long twiceSignifFloor
        end local 2 // int shift
        end local 1 // int exponent
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   41     0              this  Ljava/math/BigInteger;
            3   41     1          exponent  I
           10   41     2             shift  I
           24   41     3  twiceSignifFloor  J
           11   41     5             nBits  I
           12   41     6            nBits2  I
           14   16     7          highBits  I
           17   41     7          highBits  I
           15   16     8           lowBits  I
           18   41     8           lowBits  I
           25   41     9       signifFloor  J
           32   41    11         increment  Z
           35   41    12     signifRounded  J
           38   41    14              bits  J

  private static int[] stripLeadingZeroInts(int[]);
    descriptor: ([I)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // int[] val
         0: .line 4217
            aload 0 /* val */
            arraylength
            istore 1 /* vlen */
        start local 1 // int vlen
         1: .line 4221
            iconst_0
            istore 2 /* keep */
        start local 2 // int keep
         2: goto 4
      StackMap locals: int int
      StackMap stack:
         3: iinc 2 /* keep */ 1
      StackMap locals:
      StackMap stack:
         4: iload 2 /* keep */
            iload 1 /* vlen */
            if_icmpge 5
            aload 0 /* val */
            iload 2 /* keep */
            iaload
            ifeq 3
         5: .line 4223
      StackMap locals:
      StackMap stack:
            aload 0 /* val */
            iload 2 /* keep */
            iload 1 /* vlen */
            invokestatic java.util.Arrays.copyOfRange:([III)[I
            areturn
        end local 2 // int keep
        end local 1 // int vlen
        end local 0 // int[] val
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0   val  [I
            1    6     1  vlen  I
            2    6     2  keep  I
    MethodParameters:
      Name  Flags
      val   

  private static int[] trustedStripLeadingZeroInts(int[]);
    descriptor: ([I)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // int[] val
         0: .line 4231
            aload 0 /* val */
            arraylength
            istore 1 /* vlen */
        start local 1 // int vlen
         1: .line 4235
            iconst_0
            istore 2 /* keep */
        start local 2 // int keep
         2: goto 4
      StackMap locals: int int
      StackMap stack:
         3: iinc 2 /* keep */ 1
      StackMap locals:
      StackMap stack:
         4: iload 2 /* keep */
            iload 1 /* vlen */
            if_icmpge 5
            aload 0 /* val */
            iload 2 /* keep */
            iaload
            ifeq 3
         5: .line 4237
      StackMap locals:
      StackMap stack:
            iload 2 /* keep */
            ifne 6
            aload 0 /* val */
            goto 7
      StackMap locals:
      StackMap stack:
         6: aload 0 /* val */
            iload 2 /* keep */
            iload 1 /* vlen */
            invokestatic java.util.Arrays.copyOfRange:([III)[I
      StackMap locals:
      StackMap stack: int[]
         7: areturn
        end local 2 // int keep
        end local 1 // int vlen
        end local 0 // int[] val
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0   val  [I
            1    8     1  vlen  I
            2    8     2  keep  I
    MethodParameters:
      Name  Flags
      val   

  private static int[] stripLeadingZeroBytes(byte[]);
    descriptor: ([B)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=10, args_size=1
        start local 0 // byte[] a
         0: .line 4244
            aload 0 /* a */
            arraylength
            istore 1 /* byteLength */
        start local 1 // int byteLength
         1: .line 4248
            iconst_0
            istore 2 /* keep */
        start local 2 // int keep
         2: goto 4
      StackMap locals: int int
      StackMap stack:
         3: iinc 2 /* keep */ 1
      StackMap locals:
      StackMap stack:
         4: iload 2 /* keep */
            iload 1 /* byteLength */
            if_icmpge 5
            aload 0 /* a */
            iload 2 /* keep */
            baload
            ifeq 3
         5: .line 4252
      StackMap locals:
      StackMap stack:
            iload 1 /* byteLength */
            iload 2 /* keep */
            isub
            iconst_3
            iadd
            iconst_2
            iushr
            istore 3 /* intLength */
        start local 3 // int intLength
         6: .line 4253
            iload 3 /* intLength */
            newarray 10
            astore 4 /* result */
        start local 4 // int[] result
         7: .line 4254
            iload 1 /* byteLength */
            iconst_1
            isub
            istore 5 /* b */
        start local 5 // int b
         8: .line 4255
            iload 3 /* intLength */
            iconst_1
            isub
            istore 6 /* i */
        start local 6 // int i
         9: goto 19
        10: .line 4256
      StackMap locals: byte[] int int int int[] int int
      StackMap stack:
            aload 4 /* result */
            iload 6 /* i */
            aload 0 /* a */
            iload 5 /* b */
            iinc 5 /* b */ -1
            baload
            sipush 255
            iand
            iastore
        11: .line 4257
            iload 5 /* b */
            iload 2 /* keep */
            isub
            iconst_1
            iadd
            istore 7 /* bytesRemaining */
        start local 7 // int bytesRemaining
        12: .line 4258
            iconst_3
            iload 7 /* bytesRemaining */
            invokestatic java.lang.Math.min:(II)I
            istore 8 /* bytesToTransfer */
        start local 8 // int bytesToTransfer
        13: .line 4259
            bipush 8
            istore 9 /* j */
        start local 9 // int j
        14: goto 17
        15: .line 4260
      StackMap locals: int int int
      StackMap stack:
            aload 4 /* result */
            iload 6 /* i */
            dup2
            iaload
            aload 0 /* a */
            iload 5 /* b */
            iinc 5 /* b */ -1
            baload
            sipush 255
            iand
            iload 9 /* j */
            ishl
            ior
            iastore
        16: .line 4259
            iinc 9 /* j */ 8
      StackMap locals:
      StackMap stack:
        17: iload 9 /* j */
            iload 8 /* bytesToTransfer */
            iconst_3
            ishl
            if_icmple 15
        end local 9 // int j
        end local 8 // int bytesToTransfer
        end local 7 // int bytesRemaining
        18: .line 4255
            iinc 6 /* i */ -1
      StackMap locals:
      StackMap stack:
        19: iload 6 /* i */
            ifge 10
        end local 6 // int i
        20: .line 4262
            aload 4 /* result */
            areturn
        end local 5 // int b
        end local 4 // int[] result
        end local 3 // int intLength
        end local 2 // int keep
        end local 1 // int byteLength
        end local 0 // byte[] a
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   21     0                a  [B
            1   21     1       byteLength  I
            2   21     2             keep  I
            6   21     3        intLength  I
            7   21     4           result  [I
            8   21     5                b  I
            9   20     6                i  I
           12   18     7   bytesRemaining  I
           13   18     8  bytesToTransfer  I
           14   18     9                j  I
    MethodParameters:
      Name  Flags
      a     

  private static int[] makePositive(byte[]);
    descriptor: ([B)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=11, args_size=1
        start local 0 // byte[] a
         0: .line 4271
            aload 0 /* a */
            arraylength
            istore 3 /* byteLength */
        start local 3 // int byteLength
         1: .line 4274
            iconst_0
            istore 1 /* keep */
        start local 1 // int keep
         2: goto 4
      StackMap locals: byte[] int top int
      StackMap stack:
         3: iinc 1 /* keep */ 1
      StackMap locals:
      StackMap stack:
         4: iload 1 /* keep */
            iload 3 /* byteLength */
            if_icmpge 5
            aload 0 /* a */
            iload 1 /* keep */
            baload
            iconst_m1
            if_icmpeq 3
         5: .line 4280
      StackMap locals:
      StackMap stack:
            iload 1 /* keep */
            istore 2 /* k */
        start local 2 // int k
         6: goto 8
      StackMap locals: byte[] int int int
      StackMap stack:
         7: iinc 2 /* k */ 1
      StackMap locals:
      StackMap stack:
         8: iload 2 /* k */
            iload 3 /* byteLength */
            if_icmpge 9
            aload 0 /* a */
            iload 2 /* k */
            baload
            ifeq 7
         9: .line 4283
      StackMap locals:
      StackMap stack:
            iload 2 /* k */
            iload 3 /* byteLength */
            if_icmpne 10
            iconst_1
            goto 11
      StackMap locals:
      StackMap stack:
        10: iconst_0
      StackMap locals:
      StackMap stack: int
        11: istore 4 /* extraByte */
        start local 4 // int extraByte
        12: .line 4284
            iload 3 /* byteLength */
            iload 1 /* keep */
            isub
            iload 4 /* extraByte */
            iadd
            iconst_3
            iadd
            iconst_2
            iushr
            istore 5 /* intLength */
        start local 5 // int intLength
        13: .line 4285
            iload 5 /* intLength */
            newarray 10
            astore 6 /* result */
        start local 6 // int[] result
        14: .line 4289
            iload 3 /* byteLength */
            iconst_1
            isub
            istore 7 /* b */
        start local 7 // int b
        15: .line 4290
            iload 5 /* intLength */
            iconst_1
            isub
            istore 8 /* i */
        start local 8 // int i
        16: goto 29
        17: .line 4291
      StackMap locals: byte[] int int int int int int[] int int
      StackMap stack:
            aload 6 /* result */
            iload 8 /* i */
            aload 0 /* a */
            iload 7 /* b */
            iinc 7 /* b */ -1
            baload
            sipush 255
            iand
            iastore
        18: .line 4292
            iconst_3
            iload 7 /* b */
            iload 1 /* keep */
            isub
            iconst_1
            iadd
            invokestatic java.lang.Math.min:(II)I
            istore 9 /* numBytesToTransfer */
        start local 9 // int numBytesToTransfer
        19: .line 4293
            iload 9 /* numBytesToTransfer */
            ifge 21
        20: .line 4294
            iconst_0
            istore 9 /* numBytesToTransfer */
        21: .line 4295
      StackMap locals: int
      StackMap stack:
            bipush 8
            istore 10 /* j */
        start local 10 // int j
        22: goto 25
        23: .line 4296
      StackMap locals: int
      StackMap stack:
            aload 6 /* result */
            iload 8 /* i */
            dup2
            iaload
            aload 0 /* a */
            iload 7 /* b */
            iinc 7 /* b */ -1
            baload
            sipush 255
            iand
            iload 10 /* j */
            ishl
            ior
            iastore
        24: .line 4295
            iinc 10 /* j */ 8
      StackMap locals:
      StackMap stack:
        25: iload 10 /* j */
            bipush 8
            iload 9 /* numBytesToTransfer */
            imul
            if_icmple 23
        end local 10 // int j
        26: .line 4299
            iconst_m1
            bipush 8
            iconst_3
            iload 9 /* numBytesToTransfer */
            isub
            imul
            iushr
            istore 10 /* mask */
        start local 10 // int mask
        27: .line 4300
            aload 6 /* result */
            iload 8 /* i */
            aload 6 /* result */
            iload 8 /* i */
            iaload
            iconst_m1
            ixor
            iload 10 /* mask */
            iand
            iastore
        end local 10 // int mask
        end local 9 // int numBytesToTransfer
        28: .line 4290
            iinc 8 /* i */ -1
      StackMap locals:
      StackMap stack:
        29: iload 8 /* i */
            ifge 17
        end local 8 // int i
        30: .line 4304
            aload 6 /* result */
            arraylength
            iconst_1
            isub
            istore 8 /* i */
        start local 8 // int i
        31: goto 36
        32: .line 4305
      StackMap locals:
      StackMap stack:
            aload 6 /* result */
            iload 8 /* i */
            aload 6 /* result */
            iload 8 /* i */
            iaload
            i2l
            ldc 4294967295
            land
            lconst_1
            ladd
            l2i
            iastore
        33: .line 4306
            aload 6 /* result */
            iload 8 /* i */
            iaload
            ifeq 35
        34: .line 4307
            goto 37
        35: .line 4304
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ -1
      StackMap locals:
      StackMap stack:
        36: iload 8 /* i */
            ifge 32
        end local 8 // int i
        37: .line 4310
      StackMap locals:
      StackMap stack:
            aload 6 /* result */
            areturn
        end local 7 // int b
        end local 6 // int[] result
        end local 5 // int intLength
        end local 4 // int extraByte
        end local 3 // int byteLength
        end local 2 // int k
        end local 1 // int keep
        end local 0 // byte[] a
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   38     0                   a  [B
            2   38     1                keep  I
            6   38     2                   k  I
            1   38     3          byteLength  I
           12   38     4           extraByte  I
           13   38     5           intLength  I
           14   38     6              result  [I
           15   38     7                   b  I
           16   30     8                   i  I
           19   28     9  numBytesToTransfer  I
           22   26    10                   j  I
           27   28    10                mask  I
           31   37     8                   i  I
    MethodParameters:
      Name  Flags
      a     

  private static int[] makePositive(int[]);
    descriptor: ([I)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // int[] a
         0: .line 4321
            iconst_0
            istore 1 /* keep */
        start local 1 // int keep
         1: goto 3
      StackMap locals: int
      StackMap stack:
         2: iinc 1 /* keep */ 1
      StackMap locals:
      StackMap stack:
         3: iload 1 /* keep */
            aload 0 /* a */
            arraylength
            if_icmpge 4
            aload 0 /* a */
            iload 1 /* keep */
            iaload
            iconst_m1
            if_icmpeq 2
         4: .line 4326
      StackMap locals:
      StackMap stack:
            iload 1 /* keep */
            istore 2 /* j */
        start local 2 // int j
         5: goto 7
      StackMap locals: int
      StackMap stack:
         6: iinc 2 /* j */ 1
      StackMap locals:
      StackMap stack:
         7: iload 2 /* j */
            aload 0 /* a */
            arraylength
            if_icmpge 8
            aload 0 /* a */
            iload 2 /* j */
            iaload
            ifeq 6
         8: .line 4328
      StackMap locals:
      StackMap stack:
            iload 2 /* j */
            aload 0 /* a */
            arraylength
            if_icmpne 9
            iconst_1
            goto 10
      StackMap locals:
      StackMap stack:
         9: iconst_0
      StackMap locals:
      StackMap stack: int
        10: istore 3 /* extraInt */
        start local 3 // int extraInt
        11: .line 4329
            aload 0 /* a */
            arraylength
            iload 1 /* keep */
            isub
            iload 3 /* extraInt */
            iadd
            newarray 10
            astore 4 /* result */
        start local 4 // int[] result
        12: .line 4333
            iload 1 /* keep */
            istore 5 /* i */
        start local 5 // int i
        13: goto 16
        14: .line 4334
      StackMap locals: int int[] int
      StackMap stack:
            aload 4 /* result */
            iload 5 /* i */
            iload 1 /* keep */
            isub
            iload 3 /* extraInt */
            iadd
            aload 0 /* a */
            iload 5 /* i */
            iaload
            iconst_m1
            ixor
            iastore
        15: .line 4333
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        16: iload 5 /* i */
            aload 0 /* a */
            arraylength
            if_icmplt 14
        end local 5 // int i
        17: .line 4337
            aload 4 /* result */
            arraylength
            iconst_1
            isub
            istore 5 /* i */
        start local 5 // int i
        18: goto 20
      StackMap locals:
      StackMap stack:
        19: iinc 5 /* i */ -1
      StackMap locals:
      StackMap stack:
        20: aload 4 /* result */
            iload 5 /* i */
            dup2
            iaload
            iconst_1
            iadd
            dup_x2
            iastore
            ifeq 19
        end local 5 // int i
        21: .line 4340
            aload 4 /* result */
            areturn
        end local 4 // int[] result
        end local 3 // int extraInt
        end local 2 // int j
        end local 1 // int keep
        end local 0 // int[] a
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   22     0         a  [I
            1   22     1      keep  I
            5   22     2         j  I
           11   22     3  extraInt  I
           12   22     4    result  [I
           13   17     5         i  I
           18   21     5         i  I
    MethodParameters:
      Name  Flags
      a     

  private int intLength();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 4405
            aload 0 /* this */
            invokevirtual java.math.BigInteger.bitLength:()I
            iconst_5
            iushr
            iconst_1
            iadd
            ireturn
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/math/BigInteger;

  private int signBit();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 4410
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifge 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljava/math/BigInteger;

  private int signInt();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 4415
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            ifge 1
            iconst_m1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljava/math/BigInteger;

  private int getInt(int);
    descriptor: (I)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // int n
         0: .line 4425
            iload 1 /* n */
            ifge 2
         1: .line 4426
            iconst_0
            ireturn
         2: .line 4427
      StackMap locals:
      StackMap stack:
            iload 1 /* n */
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            if_icmplt 4
         3: .line 4428
            aload 0 /* this */
            invokevirtual java.math.BigInteger.signInt:()I
            ireturn
         4: .line 4430
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            iload 1 /* n */
            isub
            iconst_1
            isub
            iaload
            istore 2 /* magInt */
        start local 2 // int magInt
         5: .line 4432
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            iflt 6
            iload 2 /* magInt */
            goto 8
         6: .line 4433
      StackMap locals: int
      StackMap stack:
            iload 1 /* n */
            aload 0 /* this */
            invokevirtual java.math.BigInteger.firstNonzeroIntNum:()I
            if_icmpgt 7
            iload 2 /* magInt */
            ineg
            goto 8
      StackMap locals:
      StackMap stack:
         7: iload 2 /* magInt */
            iconst_m1
            ixor
         8: .line 4432
      StackMap locals:
      StackMap stack: int
            ireturn
        end local 2 // int magInt
        end local 1 // int n
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Ljava/math/BigInteger;
            0    9     1       n  I
            5    9     2  magInt  I
    MethodParameters:
      Name  Flags
      n     

  private int firstNonzeroIntNum();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 4442
            aload 0 /* this */
            getfield java.math.BigInteger.firstNonzeroIntNum:I
            iconst_2
            isub
            istore 1 /* fn */
        start local 1 // int fn
         1: .line 4443
            iload 1 /* fn */
            bipush -2
            if_icmpne 10
         2: .line 4444
            iconst_0
            istore 1 /* fn */
         3: .line 4448
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            istore 3 /* mlen */
        start local 3 // int mlen
         4: .line 4449
            iload 3 /* mlen */
            iconst_1
            isub
            istore 2 /* i */
        start local 2 // int i
         5: goto 7
      StackMap locals: int int int
      StackMap stack:
         6: iinc 2 /* i */ -1
      StackMap locals:
      StackMap stack:
         7: iload 2 /* i */
            iflt 8
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iload 2 /* i */
            iaload
            ifeq 6
         8: .line 4451
      StackMap locals:
      StackMap stack:
            iload 3 /* mlen */
            iload 2 /* i */
            isub
            iconst_1
            isub
            istore 1 /* fn */
         9: .line 4452
            aload 0 /* this */
            iload 1 /* fn */
            iconst_2
            iadd
            putfield java.math.BigInteger.firstNonzeroIntNum:I
        end local 3 // int mlen
        end local 2 // int i
        10: .line 4454
      StackMap locals:
      StackMap stack:
            iload 1 /* fn */
            ireturn
        end local 1 // int fn
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Ljava/math/BigInteger;
            1   11     1    fn  I
            5   10     2     i  I
            4   10     3  mlen  I

  private void readObject(java.io.ObjectInputStream);
    descriptor: (Ljava/io/ObjectInputStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.io.ObjectInputStream s
         0: .line 4507
            aload 1 /* s */
            invokevirtual java.io.ObjectInputStream.readFields:()Ljava/io/ObjectInputStream$GetField;
            astore 2 /* fields */
        start local 2 // java.io.ObjectInputStream$GetField fields
         1: .line 4510
            aload 2 /* fields */
            ldc "signum"
            bipush -2
            invokevirtual java.io.ObjectInputStream$GetField.get:(Ljava/lang/String;I)I
            istore 3 /* sign */
        start local 3 // int sign
         2: .line 4511
            aload 2 /* fields */
            ldc "magnitude"
            aconst_null
            invokevirtual java.io.ObjectInputStream$GetField.get:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast byte[]
            astore 4 /* magnitude */
        start local 4 // byte[] magnitude
         3: .line 4514
            iload 3 /* sign */
            iconst_m1
            if_icmplt 4
            iload 3 /* sign */
            iconst_1
            if_icmple 8
         4: .line 4515
      StackMap locals: java.io.ObjectInputStream$GetField int byte[]
      StackMap stack:
            ldc "BigInteger: Invalid signum value"
            astore 5 /* message */
        start local 5 // java.lang.String message
         5: .line 4516
            aload 2 /* fields */
            ldc "signum"
            invokevirtual java.io.ObjectInputStream$GetField.defaulted:(Ljava/lang/String;)Z
            ifeq 7
         6: .line 4517
            ldc "BigInteger: Signum not present in stream"
            astore 5 /* message */
         7: .line 4518
      StackMap locals: java.lang.String
      StackMap stack:
            new java.io.StreamCorruptedException
            dup
            aload 5 /* message */
            invokespecial java.io.StreamCorruptedException.<init>:(Ljava/lang/String;)V
            athrow
        end local 5 // java.lang.String message
         8: .line 4520
      StackMap locals:
      StackMap stack:
            aload 4 /* magnitude */
            invokestatic java.math.BigInteger.stripLeadingZeroBytes:([B)[I
            astore 5 /* mag */
        start local 5 // int[] mag
         9: .line 4521
            aload 5 /* mag */
            arraylength
            ifne 10
            iconst_1
            goto 11
      StackMap locals: int[]
      StackMap stack:
        10: iconst_0
      StackMap locals:
      StackMap stack: int
        11: iload 3 /* sign */
            ifne 12
            iconst_1
            goto 13
      StackMap locals:
      StackMap stack: int
        12: iconst_0
      StackMap locals: java.math.BigInteger java.io.ObjectInputStream java.io.ObjectInputStream$GetField int byte[] int[]
      StackMap stack: int int
        13: if_icmpeq 18
        14: .line 4522
            ldc "BigInteger: signum-magnitude mismatch"
            astore 6 /* message */
        start local 6 // java.lang.String message
        15: .line 4523
            aload 2 /* fields */
            ldc "magnitude"
            invokevirtual java.io.ObjectInputStream$GetField.defaulted:(Ljava/lang/String;)Z
            ifeq 17
        16: .line 4524
            ldc "BigInteger: Magnitude not present in stream"
            astore 6 /* message */
        17: .line 4525
      StackMap locals: java.lang.String
      StackMap stack:
            new java.io.StreamCorruptedException
            dup
            aload 6 /* message */
            invokespecial java.io.StreamCorruptedException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // java.lang.String message
        18: .line 4529
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 3 /* sign */
            invokestatic java.math.BigInteger$UnsafeHolder.putSign:(Ljava/math/BigInteger;I)V
        19: .line 4532
            aload 0 /* this */
            aload 5 /* mag */
            invokestatic java.math.BigInteger$UnsafeHolder.putMag:(Ljava/math/BigInteger;[I)V
        20: .line 4533
            aload 5 /* mag */
            arraylength
            ldc 67108864
            if_icmplt 25
        21: .line 4535
            aload 0 /* this */
            invokevirtual java.math.BigInteger.checkRange:()V
        22: .line 4536
            goto 25
      StackMap locals:
      StackMap stack: java.lang.ArithmeticException
        23: pop
        24: .line 4537
            new java.io.StreamCorruptedException
            dup
            ldc "BigInteger: Out of the supported range"
            invokespecial java.io.StreamCorruptedException.<init>:(Ljava/lang/String;)V
            athrow
        25: .line 4540
      StackMap locals:
      StackMap stack:
            return
        end local 5 // int[] mag
        end local 4 // byte[] magnitude
        end local 3 // int sign
        end local 2 // java.io.ObjectInputStream$GetField fields
        end local 1 // java.io.ObjectInputStream s
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   26     0       this  Ljava/math/BigInteger;
            0   26     1          s  Ljava/io/ObjectInputStream;
            1   26     2     fields  Ljava/io/ObjectInputStream$GetField;
            2   26     3       sign  I
            3   26     4  magnitude  [B
            5    8     5    message  Ljava/lang/String;
            9   26     5        mag  [I
           15   18     6    message  Ljava/lang/String;
      Exception table:
        from    to  target  type
          21    22      23  Class java.lang.ArithmeticException
    Exceptions:
      throws java.io.IOException, java.lang.ClassNotFoundException
    MethodParameters:
      Name  Flags
      s     

  private void writeObject(java.io.ObjectOutputStream);
    descriptor: (Ljava/io/ObjectOutputStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.math.BigInteger this
        start local 1 // java.io.ObjectOutputStream s
         0: .line 4578
            aload 1 /* s */
            invokevirtual java.io.ObjectOutputStream.putFields:()Ljava/io/ObjectOutputStream$PutField;
            astore 2 /* fields */
        start local 2 // java.io.ObjectOutputStream$PutField fields
         1: .line 4579
            aload 2 /* fields */
            ldc "signum"
            aload 0 /* this */
            getfield java.math.BigInteger.signum:I
            invokevirtual java.io.ObjectOutputStream$PutField.put:(Ljava/lang/String;I)V
         2: .line 4580
            aload 2 /* fields */
            ldc "magnitude"
            aload 0 /* this */
            invokevirtual java.math.BigInteger.magSerializedForm:()[B
            invokevirtual java.io.ObjectOutputStream$PutField.put:(Ljava/lang/String;Ljava/lang/Object;)V
         3: .line 4583
            aload 2 /* fields */
            ldc "bitCount"
            iconst_m1
            invokevirtual java.io.ObjectOutputStream$PutField.put:(Ljava/lang/String;I)V
         4: .line 4584
            aload 2 /* fields */
            ldc "bitLength"
            iconst_m1
            invokevirtual java.io.ObjectOutputStream$PutField.put:(Ljava/lang/String;I)V
         5: .line 4585
            aload 2 /* fields */
            ldc "lowestSetBit"
            bipush -2
            invokevirtual java.io.ObjectOutputStream$PutField.put:(Ljava/lang/String;I)V
         6: .line 4586
            aload 2 /* fields */
            ldc "firstNonzeroByteNum"
            bipush -2
            invokevirtual java.io.ObjectOutputStream$PutField.put:(Ljava/lang/String;I)V
         7: .line 4589
            aload 1 /* s */
            invokevirtual java.io.ObjectOutputStream.writeFields:()V
         8: .line 4590
            return
        end local 2 // java.io.ObjectOutputStream$PutField fields
        end local 1 // java.io.ObjectOutputStream s
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Ljava/math/BigInteger;
            0    9     1       s  Ljava/io/ObjectOutputStream;
            1    9     2  fields  Ljava/io/ObjectOutputStream$PutField;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      s     

  private byte[] magSerializedForm();
    descriptor: ()[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=9, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 4596
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            istore 1 /* len */
        start local 1 // int len
         1: .line 4598
            iload 1 /* len */
            ifne 2
            iconst_0
            goto 3
      StackMap locals: int
      StackMap stack:
         2: iload 1 /* len */
            iconst_1
            isub
            iconst_5
            ishl
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iconst_0
            iaload
            invokestatic java.math.BigInteger.bitLengthForInt:(I)I
            iadd
      StackMap locals:
      StackMap stack: int
         3: istore 2 /* bitLen */
        start local 2 // int bitLen
         4: .line 4599
            iload 2 /* bitLen */
            bipush 7
            iadd
            iconst_3
            iushr
            istore 3 /* byteLen */
        start local 3 // int byteLen
         5: .line 4600
            iload 3 /* byteLen */
            newarray 8
            astore 4 /* result */
        start local 4 // byte[] result
         6: .line 4602
            iload 3 /* byteLen */
            iconst_1
            isub
            istore 5 /* i */
        start local 5 // int i
         7: iconst_4
            istore 6 /* bytesCopied */
        start local 6 // int bytesCopied
         8: iload 1 /* len */
            iconst_1
            isub
            istore 7 /* intIndex */
        start local 7 // int intIndex
         9: iconst_0
            istore 8 /* nextInt */
        start local 8 // int nextInt
        10: .line 4603
            goto 19
        11: .line 4604
      StackMap locals: java.math.BigInteger int int int byte[] int int int int
      StackMap stack:
            iload 6 /* bytesCopied */
            iconst_4
            if_icmpne 15
        12: .line 4605
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            iload 7 /* intIndex */
            iinc 7 /* intIndex */ -1
            iaload
            istore 8 /* nextInt */
        13: .line 4606
            iconst_1
            istore 6 /* bytesCopied */
        14: .line 4607
            goto 17
        15: .line 4608
      StackMap locals:
      StackMap stack:
            iload 8 /* nextInt */
            bipush 8
            iushr
            istore 8 /* nextInt */
        16: .line 4609
            iinc 6 /* bytesCopied */ 1
        17: .line 4611
      StackMap locals:
      StackMap stack:
            aload 4 /* result */
            iload 5 /* i */
            iload 8 /* nextInt */
            i2b
            bastore
        18: .line 4603
            iinc 5 /* i */ -1
      StackMap locals:
      StackMap stack:
        19: iload 5 /* i */
        20: .line 4602
            ifge 11
        end local 8 // int nextInt
        end local 7 // int intIndex
        end local 6 // int bytesCopied
        end local 5 // int i
        21: .line 4613
            aload 4 /* result */
            areturn
        end local 4 // byte[] result
        end local 3 // int byteLen
        end local 2 // int bitLen
        end local 1 // int len
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   22     0         this  Ljava/math/BigInteger;
            1   22     1          len  I
            4   22     2       bitLen  I
            5   22     3      byteLen  I
            6   22     4       result  [B
            7   21     5            i  I
            8   21     6  bytesCopied  I
            9   21     7     intIndex  I
           10   21     8      nextInt  I

  public long longValueExact();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 4629
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            iconst_2
            if_icmpgt 2
            aload 0 /* this */
            invokevirtual java.math.BigInteger.bitLength:()I
            bipush 63
            if_icmpgt 2
         1: .line 4630
            aload 0 /* this */
            invokevirtual java.math.BigInteger.longValue:()J
            lreturn
         2: .line 4632
      StackMap locals:
      StackMap stack:
            new java.lang.ArithmeticException
            dup
            ldc "BigInteger out of long range"
            invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljava/math/BigInteger;

  public int intValueExact();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 4648
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            iconst_1
            if_icmpgt 2
            aload 0 /* this */
            invokevirtual java.math.BigInteger.bitLength:()I
            bipush 31
            if_icmpgt 2
         1: .line 4649
            aload 0 /* this */
            invokevirtual java.math.BigInteger.intValue:()I
            ireturn
         2: .line 4651
      StackMap locals:
      StackMap stack:
            new java.lang.ArithmeticException
            dup
            ldc "BigInteger out of int range"
            invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljava/math/BigInteger;

  public short shortValueExact();
    descriptor: ()S
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 4667
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            iconst_1
            if_icmpgt 4
            aload 0 /* this */
            invokevirtual java.math.BigInteger.bitLength:()I
            bipush 31
            if_icmpgt 4
         1: .line 4668
            aload 0 /* this */
            invokevirtual java.math.BigInteger.intValue:()I
            istore 1 /* value */
        start local 1 // int value
         2: .line 4669
            iload 1 /* value */
            sipush -32768
            if_icmplt 4
            iload 1 /* value */
            sipush 32767
            if_icmpgt 4
         3: .line 4670
            aload 0 /* this */
            invokevirtual java.math.BigInteger.shortValue:()S
            ireturn
        end local 1 // int value
         4: .line 4672
      StackMap locals:
      StackMap stack:
            new java.lang.ArithmeticException
            dup
            ldc "BigInteger out of short range"
            invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Ljava/math/BigInteger;
            2    4     1  value  I

  public byte byteValueExact();
    descriptor: ()B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.math.BigInteger this
         0: .line 4688
            aload 0 /* this */
            getfield java.math.BigInteger.mag:[I
            arraylength
            iconst_1
            if_icmpgt 4
            aload 0 /* this */
            invokevirtual java.math.BigInteger.bitLength:()I
            bipush 31
            if_icmpgt 4
         1: .line 4689
            aload 0 /* this */
            invokevirtual java.math.BigInteger.intValue:()I
            istore 1 /* value */
        start local 1 // int value
         2: .line 4690
            iload 1 /* value */
            bipush -128
            if_icmplt 4
            iload 1 /* value */
            bipush 127
            if_icmpgt 4
         3: .line 4691
            aload 0 /* this */
            invokevirtual java.math.BigInteger.byteValue:()B
            ireturn
        end local 1 // int value
         4: .line 4693
      StackMap locals:
      StackMap stack:
            new java.lang.ArithmeticException
            dup
            ldc "BigInteger out of byte range"
            invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.math.BigInteger this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Ljava/math/BigInteger;
            2    4     1  value  I

  public int compareTo(java.lang.Object);
    descriptor: (Ljava/lang/Object;)I
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            checkcast java.math.BigInteger
            invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Ljava/lang/Number;Ljava/lang/Comparable<Ljava/math/BigInteger;>;
SourceFile: "BigInteger.java"
NestMembers:
  java.math.BigInteger$UnsafeHolder
InnerClasses:
  public abstract GetField = java.io.ObjectInputStream$GetField of java.io.ObjectInputStream
  public abstract PutField = java.io.ObjectOutputStream$PutField of java.io.ObjectOutputStream
  private UnsafeHolder = java.math.BigInteger$UnsafeHolder of java.math.BigInteger