public abstract class org.bouncycastle.math.ec.WNafUtil
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.bouncycastle.math.ec.WNafUtil
  super_class: java.lang.Object
{
  public static final java.lang.String PRECOMP_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "bc_wnaf"

  private static final int[] DEFAULT_WINDOW_SIZE_CUTOFFS;
    descriptor: [I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final byte[] EMPTY_BYTES;
    descriptor: [B
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final int[] EMPTY_INTS;
    descriptor: [I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.bouncycastle.math.ec.ECPoint[] EMPTY_POINTS;
    descriptor: [Lorg/bouncycastle/math/ec/ECPoint;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 9
            bipush 6
            newarray 10
            dup
            iconst_0
            bipush 13
            iastore
            dup
            iconst_1
            bipush 41
            iastore
            dup
            iconst_2
            bipush 121
            iastore
            dup
            iconst_3
            sipush 337
            iastore
            dup
            iconst_4
            sipush 897
            iastore
            dup
            iconst_5
            sipush 2305
            iastore
            putstatic org.bouncycastle.math.ec.WNafUtil.DEFAULT_WINDOW_SIZE_CUTOFFS:[I
         1: .line 11
            iconst_0
            newarray 8
            putstatic org.bouncycastle.math.ec.WNafUtil.EMPTY_BYTES:[B
         2: .line 12
            iconst_0
            newarray 10
            putstatic org.bouncycastle.math.ec.WNafUtil.EMPTY_INTS:[I
         3: .line 13
            iconst_0
            anewarray org.bouncycastle.math.ec.ECPoint
            putstatic org.bouncycastle.math.ec.WNafUtil.EMPTY_POINTS:[Lorg/bouncycastle/math/ec/ECPoint;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.math.ec.WNafUtil this
         0: .line 5
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.bouncycastle.math.ec.WNafUtil this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/math/ec/WNafUtil;

  public static int[] generateCompactNaf(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)[I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=10, args_size=1
        start local 0 // java.math.BigInteger k
         0: .line 17
            aload 0 /* k */
            invokevirtual java.math.BigInteger.bitLength:()I
            bipush 16
            iushr
            ifeq 2
         1: .line 19
            new java.lang.IllegalArgumentException
            dup
            ldc "'k' must have bitlength < 2^16"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 21
      StackMap locals:
      StackMap stack:
            aload 0 /* k */
            invokevirtual java.math.BigInteger.signum:()I
            ifne 4
         3: .line 23
            getstatic org.bouncycastle.math.ec.WNafUtil.EMPTY_INTS:[I
            areturn
         4: .line 26
      StackMap locals:
      StackMap stack:
            aload 0 /* k */
            iconst_1
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            aload 0 /* k */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 1 /* _3k */
        start local 1 // java.math.BigInteger _3k
         5: .line 28
            aload 1 /* _3k */
            invokevirtual java.math.BigInteger.bitLength:()I
            istore 2 /* bits */
        start local 2 // int bits
         6: .line 29
            iload 2 /* bits */
            iconst_1
            ishr
            newarray 10
            astore 3 /* naf */
        start local 3 // int[] naf
         7: .line 31
            aload 1 /* _3k */
            aload 0 /* k */
            invokevirtual java.math.BigInteger.xor:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 4 /* diff */
        start local 4 // java.math.BigInteger diff
         8: .line 33
            iload 2 /* bits */
            iconst_1
            isub
            istore 5 /* highBit */
        start local 5 // int highBit
         9: iconst_0
            istore 6 /* length */
        start local 6 // int length
        10: iconst_0
            istore 7 /* zeroes */
        start local 7 // int zeroes
        11: .line 34
            iconst_1
            istore 8 /* i */
        start local 8 // int i
        12: goto 23
        13: .line 36
      StackMap locals: java.math.BigInteger java.math.BigInteger int int[] java.math.BigInteger int int int int
      StackMap stack:
            aload 4 /* diff */
            iload 8 /* i */
            invokevirtual java.math.BigInteger.testBit:(I)Z
            ifne 16
        14: .line 38
            iinc 7 /* zeroes */ 1
        15: .line 39
            goto 22
        16: .line 42
      StackMap locals:
      StackMap stack:
            aload 0 /* k */
            iload 8 /* i */
            invokevirtual java.math.BigInteger.testBit:(I)Z
            ifeq 17
            iconst_m1
            goto 18
      StackMap locals:
      StackMap stack:
        17: iconst_1
      StackMap locals:
      StackMap stack: int
        18: istore 9 /* digit */
        start local 9 // int digit
        19: .line 43
            aload 3 /* naf */
            iload 6 /* length */
            iinc 6 /* length */ 1
            iload 9 /* digit */
            bipush 16
            ishl
            iload 7 /* zeroes */
            ior
            iastore
        20: .line 44
            iconst_1
            istore 7 /* zeroes */
        21: .line 45
            iinc 8 /* i */ 1
        end local 9 // int digit
        22: .line 34
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        23: iload 8 /* i */
            iload 5 /* highBit */
            if_icmplt 13
        end local 8 // int i
        24: .line 48
            aload 3 /* naf */
            iload 6 /* length */
            iinc 6 /* length */ 1
            ldc 65536
            iload 7 /* zeroes */
            ior
            iastore
        25: .line 50
            aload 3 /* naf */
            arraylength
            iload 6 /* length */
            if_icmple 27
        26: .line 52
            aload 3 /* naf */
            iload 6 /* length */
            invokestatic org.bouncycastle.math.ec.WNafUtil.trim:([II)[I
            astore 3 /* naf */
        27: .line 55
      StackMap locals:
      StackMap stack:
            aload 3 /* naf */
            areturn
        end local 7 // int zeroes
        end local 6 // int length
        end local 5 // int highBit
        end local 4 // java.math.BigInteger diff
        end local 3 // int[] naf
        end local 2 // int bits
        end local 1 // java.math.BigInteger _3k
        end local 0 // java.math.BigInteger k
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   28     0        k  Ljava/math/BigInteger;
            5   28     1      _3k  Ljava/math/BigInteger;
            6   28     2     bits  I
            7   28     3      naf  [I
            8   28     4     diff  Ljava/math/BigInteger;
            9   28     5  highBit  I
           10   28     6   length  I
           11   28     7   zeroes  I
           12   24     8        i  I
           19   22     9    digit  I
    MethodParameters:
      Name  Flags
      k     

  public static int[] generateCompactWindowNaf(int, java.math.BigInteger);
    descriptor: (ILjava/math/BigInteger;)[I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=11, args_size=2
        start local 0 // int width
        start local 1 // java.math.BigInteger k
         0: .line 60
            iload 0 /* width */
            iconst_2
            if_icmpne 2
         1: .line 62
            aload 1 /* k */
            invokestatic org.bouncycastle.math.ec.WNafUtil.generateCompactNaf:(Ljava/math/BigInteger;)[I
            areturn
         2: .line 65
      StackMap locals:
      StackMap stack:
            iload 0 /* width */
            iconst_2
            if_icmplt 3
            iload 0 /* width */
            bipush 16
            if_icmple 4
         3: .line 67
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "'width' must be in the range [2, 16]"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 69
      StackMap locals:
      StackMap stack:
            aload 1 /* k */
            invokevirtual java.math.BigInteger.bitLength:()I
            bipush 16
            iushr
            ifeq 6
         5: .line 71
            new java.lang.IllegalArgumentException
            dup
            ldc "'k' must have bitlength < 2^16"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 73
      StackMap locals:
      StackMap stack:
            aload 1 /* k */
            invokevirtual java.math.BigInteger.signum:()I
            ifne 8
         7: .line 75
            getstatic org.bouncycastle.math.ec.WNafUtil.EMPTY_INTS:[I
            areturn
         8: .line 78
      StackMap locals:
      StackMap stack:
            aload 1 /* k */
            invokevirtual java.math.BigInteger.bitLength:()I
            iload 0 /* width */
            idiv
            iconst_1
            iadd
            newarray 10
            astore 2 /* wnaf */
        start local 2 // int[] wnaf
         9: .line 81
            iconst_1
            iload 0 /* width */
            ishl
            istore 3 /* pow2 */
        start local 3 // int pow2
        10: .line 82
            iload 3 /* pow2 */
            iconst_1
            isub
            istore 4 /* mask */
        start local 4 // int mask
        11: .line 83
            iload 3 /* pow2 */
            iconst_1
            iushr
            istore 5 /* sign */
        start local 5 // int sign
        12: .line 85
            iconst_0
            istore 6 /* carry */
        start local 6 // boolean carry
        13: .line 86
            iconst_0
            istore 7 /* length */
        start local 7 // int length
        14: iconst_0
            istore 8 /* pos */
        start local 8 // int pos
        15: .line 88
            goto 33
        16: .line 90
      StackMap locals: int java.math.BigInteger int[] int int int int int int
      StackMap stack:
            aload 1 /* k */
            iload 8 /* pos */
            invokevirtual java.math.BigInteger.testBit:(I)Z
            iload 6 /* carry */
            if_icmpne 19
        17: .line 92
            iinc 8 /* pos */ 1
        18: .line 93
            goto 33
        19: .line 96
      StackMap locals:
      StackMap stack:
            aload 1 /* k */
            iload 8 /* pos */
            invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
            astore 1 /* k */
        20: .line 98
            aload 1 /* k */
            invokevirtual java.math.BigInteger.intValue:()I
            iload 4 /* mask */
            iand
            istore 9 /* digit */
        start local 9 // int digit
        21: .line 99
            iload 6 /* carry */
            ifeq 23
        22: .line 101
            iinc 9 /* digit */ 1
        23: .line 104
      StackMap locals: int
      StackMap stack:
            iload 9 /* digit */
            iload 5 /* sign */
            iand
            ifeq 24
            iconst_1
            goto 25
      StackMap locals:
      StackMap stack:
        24: iconst_0
      StackMap locals:
      StackMap stack: int
        25: istore 6 /* carry */
        26: .line 105
            iload 6 /* carry */
            ifeq 28
        27: .line 107
            iload 9 /* digit */
            iload 3 /* pow2 */
            isub
            istore 9 /* digit */
        28: .line 110
      StackMap locals:
      StackMap stack:
            iload 7 /* length */
            ifle 29
            iload 8 /* pos */
            iconst_1
            isub
            goto 30
      StackMap locals:
      StackMap stack:
        29: iload 8 /* pos */
      StackMap locals:
      StackMap stack: int
        30: istore 10 /* zeroes */
        start local 10 // int zeroes
        31: .line 111
            aload 2 /* wnaf */
            iload 7 /* length */
            iinc 7 /* length */ 1
            iload 9 /* digit */
            bipush 16
            ishl
            iload 10 /* zeroes */
            ior
            iastore
        32: .line 112
            iload 0 /* width */
            istore 8 /* pos */
        end local 10 // int zeroes
        end local 9 // int digit
        33: .line 88
      StackMap locals:
      StackMap stack:
            iload 8 /* pos */
            aload 1 /* k */
            invokevirtual java.math.BigInteger.bitLength:()I
            if_icmple 16
        34: .line 116
            aload 2 /* wnaf */
            arraylength
            iload 7 /* length */
            if_icmple 36
        35: .line 118
            aload 2 /* wnaf */
            iload 7 /* length */
            invokestatic org.bouncycastle.math.ec.WNafUtil.trim:([II)[I
            astore 2 /* wnaf */
        36: .line 121
      StackMap locals:
      StackMap stack:
            aload 2 /* wnaf */
            areturn
        end local 8 // int pos
        end local 7 // int length
        end local 6 // boolean carry
        end local 5 // int sign
        end local 4 // int mask
        end local 3 // int pow2
        end local 2 // int[] wnaf
        end local 1 // java.math.BigInteger k
        end local 0 // int width
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   37     0   width  I
            0   37     1       k  Ljava/math/BigInteger;
            9   37     2    wnaf  [I
           10   37     3    pow2  I
           11   37     4    mask  I
           12   37     5    sign  I
           13   37     6   carry  Z
           14   37     7  length  I
           15   37     8     pos  I
           21   33     9   digit  I
           31   33    10  zeroes  I
    MethodParameters:
       Name  Flags
      width  
      k      

  public static byte[] generateJSF(java.math.BigInteger, java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;Ljava/math/BigInteger;)[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=14, args_size=2
        start local 0 // java.math.BigInteger g
        start local 1 // java.math.BigInteger h
         0: .line 126
            aload 0 /* g */
            invokevirtual java.math.BigInteger.bitLength:()I
            aload 1 /* h */
            invokevirtual java.math.BigInteger.bitLength:()I
            invokestatic java.lang.Math.max:(II)I
            iconst_1
            iadd
            istore 2 /* digits */
        start local 2 // int digits
         1: .line 127
            iload 2 /* digits */
            newarray 8
            astore 3 /* jsf */
        start local 3 // byte[] jsf
         2: .line 129
            aload 0 /* g */
            astore 4 /* k0 */
        start local 4 // java.math.BigInteger k0
         3: aload 1 /* h */
            astore 5 /* k1 */
        start local 5 // java.math.BigInteger k1
         4: .line 130
            iconst_0
            istore 6 /* j */
        start local 6 // int j
         5: iconst_0
            istore 7 /* d0 */
        start local 7 // int d0
         6: iconst_0
            istore 8 /* d1 */
        start local 8 // int d1
         7: .line 132
            iconst_0
            istore 9 /* offset */
        start local 9 // int offset
         8: .line 133
            goto 30
         9: .line 135
      StackMap locals: java.math.BigInteger java.math.BigInteger int byte[] java.math.BigInteger java.math.BigInteger int int int int
      StackMap stack:
            aload 4 /* k0 */
            invokevirtual java.math.BigInteger.intValue:()I
            iload 9 /* offset */
            iushr
            iload 7 /* d0 */
            iadd
            bipush 7
            iand
            istore 10 /* n0 */
        start local 10 // int n0
        10: aload 5 /* k1 */
            invokevirtual java.math.BigInteger.intValue:()I
            iload 9 /* offset */
            iushr
            iload 8 /* d1 */
            iadd
            bipush 7
            iand
            istore 11 /* n1 */
        start local 11 // int n1
        11: .line 137
            iload 10 /* n0 */
            iconst_1
            iand
            istore 12 /* u0 */
        start local 12 // int u0
        12: .line 138
            iload 12 /* u0 */
            ifeq 16
        13: .line 140
            iload 12 /* u0 */
            iload 10 /* n0 */
            iconst_2
            iand
            isub
            istore 12 /* u0 */
        14: .line 141
            iload 10 /* n0 */
            iload 12 /* u0 */
            iadd
            iconst_4
            if_icmpne 16
            iload 11 /* n1 */
            iconst_3
            iand
            iconst_2
            if_icmpne 16
        15: .line 143
            iload 12 /* u0 */
            ineg
            istore 12 /* u0 */
        16: .line 147
      StackMap locals: int int int
      StackMap stack:
            iload 11 /* n1 */
            iconst_1
            iand
            istore 13 /* u1 */
        start local 13 // int u1
        17: .line 148
            iload 13 /* u1 */
            ifeq 21
        18: .line 150
            iload 13 /* u1 */
            iload 11 /* n1 */
            iconst_2
            iand
            isub
            istore 13 /* u1 */
        19: .line 151
            iload 11 /* n1 */
            iload 13 /* u1 */
            iadd
            iconst_4
            if_icmpne 21
            iload 10 /* n0 */
            iconst_3
            iand
            iconst_2
            if_icmpne 21
        20: .line 153
            iload 13 /* u1 */
            ineg
            istore 13 /* u1 */
        21: .line 157
      StackMap locals: int
      StackMap stack:
            iload 7 /* d0 */
            iconst_1
            ishl
            iconst_1
            iload 12 /* u0 */
            iadd
            if_icmpne 23
        22: .line 159
            iload 7 /* d0 */
            iconst_1
            ixor
            istore 7 /* d0 */
        23: .line 161
      StackMap locals:
      StackMap stack:
            iload 8 /* d1 */
            iconst_1
            ishl
            iconst_1
            iload 13 /* u1 */
            iadd
            if_icmpne 25
        24: .line 163
            iload 8 /* d1 */
            iconst_1
            ixor
            istore 8 /* d1 */
        25: .line 166
      StackMap locals:
      StackMap stack:
            iinc 9 /* offset */ 1
            iload 9 /* offset */
            bipush 30
            if_icmpne 29
        26: .line 168
            iconst_0
            istore 9 /* offset */
        27: .line 169
            aload 4 /* k0 */
            bipush 30
            invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
            astore 4 /* k0 */
        28: .line 170
            aload 5 /* k1 */
            bipush 30
            invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
            astore 5 /* k1 */
        29: .line 173
      StackMap locals:
      StackMap stack:
            aload 3 /* jsf */
            iload 6 /* j */
            iinc 6 /* j */ 1
            iload 12 /* u0 */
            iconst_4
            ishl
            iload 13 /* u1 */
            bipush 15
            iand
            ior
            i2b
            bastore
        end local 13 // int u1
        end local 12 // int u0
        end local 11 // int n1
        end local 10 // int n0
        30: .line 133
      StackMap locals: java.math.BigInteger java.math.BigInteger int byte[] java.math.BigInteger java.math.BigInteger int int int int
      StackMap stack:
            iload 7 /* d0 */
            iload 8 /* d1 */
            ior
            ifne 9
            aload 4 /* k0 */
            invokevirtual java.math.BigInteger.bitLength:()I
            iload 9 /* offset */
            if_icmpgt 9
            aload 5 /* k1 */
            invokevirtual java.math.BigInteger.bitLength:()I
            iload 9 /* offset */
            if_icmpgt 9
        31: .line 177
            aload 3 /* jsf */
            arraylength
            iload 6 /* j */
            if_icmple 33
        32: .line 179
            aload 3 /* jsf */
            iload 6 /* j */
            invokestatic org.bouncycastle.math.ec.WNafUtil.trim:([BI)[B
            astore 3 /* jsf */
        33: .line 182
      StackMap locals:
      StackMap stack:
            aload 3 /* jsf */
            areturn
        end local 9 // int offset
        end local 8 // int d1
        end local 7 // int d0
        end local 6 // int j
        end local 5 // java.math.BigInteger k1
        end local 4 // java.math.BigInteger k0
        end local 3 // byte[] jsf
        end local 2 // int digits
        end local 1 // java.math.BigInteger h
        end local 0 // java.math.BigInteger g
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   34     0       g  Ljava/math/BigInteger;
            0   34     1       h  Ljava/math/BigInteger;
            1   34     2  digits  I
            2   34     3     jsf  [B
            3   34     4      k0  Ljava/math/BigInteger;
            4   34     5      k1  Ljava/math/BigInteger;
            5   34     6       j  I
            6   34     7      d0  I
            7   34     8      d1  I
            8   34     9  offset  I
           10   30    10      n0  I
           11   30    11      n1  I
           12   30    12      u0  I
           17   30    13      u1  I
    MethodParameters:
      Name  Flags
      g     
      h     

  public static byte[] generateNaf(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // java.math.BigInteger k
         0: .line 187
            aload 0 /* k */
            invokevirtual java.math.BigInteger.signum:()I
            ifne 2
         1: .line 189
            getstatic org.bouncycastle.math.ec.WNafUtil.EMPTY_BYTES:[B
            areturn
         2: .line 192
      StackMap locals:
      StackMap stack:
            aload 0 /* k */
            iconst_1
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            aload 0 /* k */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 1 /* _3k */
        start local 1 // java.math.BigInteger _3k
         3: .line 194
            aload 1 /* _3k */
            invokevirtual java.math.BigInteger.bitLength:()I
            iconst_1
            isub
            istore 2 /* digits */
        start local 2 // int digits
         4: .line 195
            iload 2 /* digits */
            newarray 8
            astore 3 /* naf */
        start local 3 // byte[] naf
         5: .line 197
            aload 1 /* _3k */
            aload 0 /* k */
            invokevirtual java.math.BigInteger.xor:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 4 /* diff */
        start local 4 // java.math.BigInteger diff
         6: .line 199
            iconst_1
            istore 5 /* i */
        start local 5 // int i
         7: goto 14
         8: .line 201
      StackMap locals: java.math.BigInteger java.math.BigInteger int byte[] java.math.BigInteger int
      StackMap stack:
            aload 4 /* diff */
            iload 5 /* i */
            invokevirtual java.math.BigInteger.testBit:(I)Z
            ifeq 13
         9: .line 203
            aload 3 /* naf */
            iload 5 /* i */
            iconst_1
            isub
            aload 0 /* k */
            iload 5 /* i */
            invokevirtual java.math.BigInteger.testBit:(I)Z
            ifeq 10
            iconst_m1
            goto 11
      StackMap locals: java.math.BigInteger java.math.BigInteger int byte[] java.math.BigInteger int
      StackMap stack: byte[] int
        10: iconst_1
      StackMap locals: java.math.BigInteger java.math.BigInteger int byte[] java.math.BigInteger int
      StackMap stack: byte[] int int
        11: i2b
            bastore
        12: .line 204
            iinc 5 /* i */ 1
        13: .line 199
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        14: iload 5 /* i */
            iload 2 /* digits */
            if_icmplt 8
        end local 5 // int i
        15: .line 208
            aload 3 /* naf */
            iload 2 /* digits */
            iconst_1
            isub
            iconst_1
            bastore
        16: .line 210
            aload 3 /* naf */
            areturn
        end local 4 // java.math.BigInteger diff
        end local 3 // byte[] naf
        end local 2 // int digits
        end local 1 // java.math.BigInteger _3k
        end local 0 // java.math.BigInteger k
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   17     0       k  Ljava/math/BigInteger;
            3   17     1     _3k  Ljava/math/BigInteger;
            4   17     2  digits  I
            5   17     3     naf  [B
            6   17     4    diff  Ljava/math/BigInteger;
            7   15     5       i  I
    MethodParameters:
      Name  Flags
      k     

  public static byte[] generateWindowNaf(int, java.math.BigInteger);
    descriptor: (ILjava/math/BigInteger;)[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=10, args_size=2
        start local 0 // int width
        start local 1 // java.math.BigInteger k
         0: .line 227
            iload 0 /* width */
            iconst_2
            if_icmpne 2
         1: .line 229
            aload 1 /* k */
            invokestatic org.bouncycastle.math.ec.WNafUtil.generateNaf:(Ljava/math/BigInteger;)[B
            areturn
         2: .line 232
      StackMap locals:
      StackMap stack:
            iload 0 /* width */
            iconst_2
            if_icmplt 3
            iload 0 /* width */
            bipush 8
            if_icmple 4
         3: .line 234
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "'width' must be in the range [2, 8]"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 236
      StackMap locals:
      StackMap stack:
            aload 1 /* k */
            invokevirtual java.math.BigInteger.signum:()I
            ifne 6
         5: .line 238
            getstatic org.bouncycastle.math.ec.WNafUtil.EMPTY_BYTES:[B
            areturn
         6: .line 241
      StackMap locals:
      StackMap stack:
            aload 1 /* k */
            invokevirtual java.math.BigInteger.bitLength:()I
            iconst_1
            iadd
            newarray 8
            astore 2 /* wnaf */
        start local 2 // byte[] wnaf
         7: .line 244
            iconst_1
            iload 0 /* width */
            ishl
            istore 3 /* pow2 */
        start local 3 // int pow2
         8: .line 245
            iload 3 /* pow2 */
            iconst_1
            isub
            istore 4 /* mask */
        start local 4 // int mask
         9: .line 246
            iload 3 /* pow2 */
            iconst_1
            iushr
            istore 5 /* sign */
        start local 5 // int sign
        10: .line 248
            iconst_0
            istore 6 /* carry */
        start local 6 // boolean carry
        11: .line 249
            iconst_0
            istore 7 /* length */
        start local 7 // int length
        12: iconst_0
            istore 8 /* pos */
        start local 8 // int pos
        13: .line 251
            goto 31
        14: .line 253
      StackMap locals: int java.math.BigInteger byte[] int int int int int int
      StackMap stack:
            aload 1 /* k */
            iload 8 /* pos */
            invokevirtual java.math.BigInteger.testBit:(I)Z
            iload 6 /* carry */
            if_icmpne 17
        15: .line 255
            iinc 8 /* pos */ 1
        16: .line 256
            goto 31
        17: .line 259
      StackMap locals:
      StackMap stack:
            aload 1 /* k */
            iload 8 /* pos */
            invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
            astore 1 /* k */
        18: .line 261
            aload 1 /* k */
            invokevirtual java.math.BigInteger.intValue:()I
            iload 4 /* mask */
            iand
            istore 9 /* digit */
        start local 9 // int digit
        19: .line 262
            iload 6 /* carry */
            ifeq 21
        20: .line 264
            iinc 9 /* digit */ 1
        21: .line 267
      StackMap locals: int
      StackMap stack:
            iload 9 /* digit */
            iload 5 /* sign */
            iand
            ifeq 22
            iconst_1
            goto 23
      StackMap locals:
      StackMap stack:
        22: iconst_0
      StackMap locals:
      StackMap stack: int
        23: istore 6 /* carry */
        24: .line 268
            iload 6 /* carry */
            ifeq 26
        25: .line 270
            iload 9 /* digit */
            iload 3 /* pow2 */
            isub
            istore 9 /* digit */
        26: .line 273
      StackMap locals:
      StackMap stack:
            iload 7 /* length */
            iload 7 /* length */
            ifle 27
            iload 8 /* pos */
            iconst_1
            isub
            goto 28
      StackMap locals:
      StackMap stack: int
        27: iload 8 /* pos */
      StackMap locals: int java.math.BigInteger byte[] int int int int int int int
      StackMap stack: int int
        28: iadd
            istore 7 /* length */
        29: .line 274
            aload 2 /* wnaf */
            iload 7 /* length */
            iinc 7 /* length */ 1
            iload 9 /* digit */
            i2b
            bastore
        30: .line 275
            iload 0 /* width */
            istore 8 /* pos */
        end local 9 // int digit
        31: .line 251
      StackMap locals:
      StackMap stack:
            iload 8 /* pos */
            aload 1 /* k */
            invokevirtual java.math.BigInteger.bitLength:()I
            if_icmple 14
        32: .line 279
            aload 2 /* wnaf */
            arraylength
            iload 7 /* length */
            if_icmple 34
        33: .line 281
            aload 2 /* wnaf */
            iload 7 /* length */
            invokestatic org.bouncycastle.math.ec.WNafUtil.trim:([BI)[B
            astore 2 /* wnaf */
        34: .line 284
      StackMap locals:
      StackMap stack:
            aload 2 /* wnaf */
            areturn
        end local 8 // int pos
        end local 7 // int length
        end local 6 // boolean carry
        end local 5 // int sign
        end local 4 // int mask
        end local 3 // int pow2
        end local 2 // byte[] wnaf
        end local 1 // java.math.BigInteger k
        end local 0 // int width
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   35     0   width  I
            0   35     1       k  Ljava/math/BigInteger;
            7   35     2    wnaf  [B
            8   35     3    pow2  I
            9   35     4    mask  I
           10   35     5    sign  I
           11   35     6   carry  Z
           12   35     7  length  I
           13   35     8     pos  I
           19   31     9   digit  I
    MethodParameters:
       Name  Flags
      width  
      k      

  public static int getNafWeight(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.math.BigInteger k
         0: .line 289
            aload 0 /* k */
            invokevirtual java.math.BigInteger.signum:()I
            ifne 2
         1: .line 291
            iconst_0
            ireturn
         2: .line 294
      StackMap locals:
      StackMap stack:
            aload 0 /* k */
            iconst_1
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            aload 0 /* k */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 1 /* _3k */
        start local 1 // java.math.BigInteger _3k
         3: .line 295
            aload 1 /* _3k */
            aload 0 /* k */
            invokevirtual java.math.BigInteger.xor:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 2 /* diff */
        start local 2 // java.math.BigInteger diff
         4: .line 297
            aload 2 /* diff */
            invokevirtual java.math.BigInteger.bitCount:()I
            ireturn
        end local 2 // java.math.BigInteger diff
        end local 1 // java.math.BigInteger _3k
        end local 0 // java.math.BigInteger k
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0     k  Ljava/math/BigInteger;
            3    5     1   _3k  Ljava/math/BigInteger;
            4    5     2  diff  Ljava/math/BigInteger;
    MethodParameters:
      Name  Flags
      k     

  public static org.bouncycastle.math.ec.WNafPreCompInfo getWNafPreCompInfo(org.bouncycastle.math.ec.ECPoint);
    descriptor: (Lorg/bouncycastle/math/ec/ECPoint;)Lorg/bouncycastle/math/ec/WNafPreCompInfo;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bouncycastle.math.ec.ECPoint p
         0: .line 302
            aload 0 /* p */
            invokevirtual org.bouncycastle.math.ec.ECPoint.getCurve:()Lorg/bouncycastle/math/ec/ECCurve;
            aload 0 /* p */
            ldc "bc_wnaf"
            invokevirtual org.bouncycastle.math.ec.ECCurve.getPreCompInfo:(Lorg/bouncycastle/math/ec/ECPoint;Ljava/lang/String;)Lorg/bouncycastle/math/ec/PreCompInfo;
            invokestatic org.bouncycastle.math.ec.WNafUtil.getWNafPreCompInfo:(Lorg/bouncycastle/math/ec/PreCompInfo;)Lorg/bouncycastle/math/ec/WNafPreCompInfo;
            areturn
        end local 0 // org.bouncycastle.math.ec.ECPoint p
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     p  Lorg/bouncycastle/math/ec/ECPoint;
    MethodParameters:
      Name  Flags
      p     

  public static org.bouncycastle.math.ec.WNafPreCompInfo getWNafPreCompInfo(org.bouncycastle.math.ec.PreCompInfo);
    descriptor: (Lorg/bouncycastle/math/ec/PreCompInfo;)Lorg/bouncycastle/math/ec/WNafPreCompInfo;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.math.ec.PreCompInfo preCompInfo
         0: .line 307
            aload 0 /* preCompInfo */
            instanceof org.bouncycastle.math.ec.WNafPreCompInfo
            ifeq 1
            aload 0 /* preCompInfo */
            checkcast org.bouncycastle.math.ec.WNafPreCompInfo
            goto 2
      StackMap locals:
      StackMap stack:
         1: aconst_null
      StackMap locals:
      StackMap stack: org.bouncycastle.math.ec.WNafPreCompInfo
         2: areturn
        end local 0 // org.bouncycastle.math.ec.PreCompInfo preCompInfo
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0  preCompInfo  Lorg/bouncycastle/math/ec/PreCompInfo;
    MethodParameters:
             Name  Flags
      preCompInfo  

  public static int getWindowSize(int);
    descriptor: (I)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // int bits
         0: .line 318
            iload 0 /* bits */
            getstatic org.bouncycastle.math.ec.WNafUtil.DEFAULT_WINDOW_SIZE_CUTOFFS:[I
            invokestatic org.bouncycastle.math.ec.WNafUtil.getWindowSize:(I[I)I
            ireturn
        end local 0 // int bits
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  bits  I
    MethodParameters:
      Name  Flags
      bits  

  public static int getWindowSize(int, int[]);
    descriptor: (I[I)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // int bits
        start local 1 // int[] windowSizeCutoffs
         0: .line 330
            iconst_0
            istore 2 /* w */
        start local 2 // int w
         1: .line 331
            goto 5
         2: .line 333
      StackMap locals: int
      StackMap stack:
            iload 0 /* bits */
            aload 1 /* windowSizeCutoffs */
            iload 2 /* w */
            iaload
            if_icmpge 4
         3: .line 335
            goto 6
         4: .line 331
      StackMap locals:
      StackMap stack:
            iinc 2 /* w */ 1
      StackMap locals:
      StackMap stack:
         5: iload 2 /* w */
            aload 1 /* windowSizeCutoffs */
            arraylength
            if_icmplt 2
         6: .line 338
      StackMap locals:
      StackMap stack:
            iload 2 /* w */
            iconst_2
            iadd
            ireturn
        end local 2 // int w
        end local 1 // int[] windowSizeCutoffs
        end local 0 // int bits
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    7     0               bits  I
            0    7     1  windowSizeCutoffs  [I
            1    7     2                  w  I
    MethodParameters:
                   Name  Flags
      bits               
      windowSizeCutoffs  

  public static org.bouncycastle.math.ec.ECPoint mapPointWithPrecomp(org.bouncycastle.math.ec.ECPoint, int, boolean, org.bouncycastle.math.ec.ECPointMap);
    descriptor: (Lorg/bouncycastle/math/ec/ECPoint;IZLorg/bouncycastle/math/ec/ECPointMap;)Lorg/bouncycastle/math/ec/ECPoint;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=7, args_size=4
        start local 0 // org.bouncycastle.math.ec.ECPoint p
        start local 1 // int width
        start local 2 // boolean includeNegated
        start local 3 // org.bouncycastle.math.ec.ECPointMap pointMap
         0: .line 344
            aload 0 /* p */
            invokevirtual org.bouncycastle.math.ec.ECPoint.getCurve:()Lorg/bouncycastle/math/ec/ECCurve;
            astore 4 /* c */
        start local 4 // org.bouncycastle.math.ec.ECCurve c
         1: .line 345
            aload 0 /* p */
            iload 1 /* width */
            iload 2 /* includeNegated */
            invokestatic org.bouncycastle.math.ec.WNafUtil.precompute:(Lorg/bouncycastle/math/ec/ECPoint;IZ)Lorg/bouncycastle/math/ec/WNafPreCompInfo;
            astore 5 /* wnafPreCompP */
        start local 5 // org.bouncycastle.math.ec.WNafPreCompInfo wnafPreCompP
         2: .line 347
            aload 3 /* pointMap */
            aload 0 /* p */
            invokeinterface org.bouncycastle.math.ec.ECPointMap.map:(Lorg/bouncycastle/math/ec/ECPoint;)Lorg/bouncycastle/math/ec/ECPoint;
            astore 6 /* q */
        start local 6 // org.bouncycastle.math.ec.ECPoint q
         3: .line 348
            aload 4 /* c */
            aload 6 /* q */
            ldc "bc_wnaf"
            new org.bouncycastle.math.ec.WNafUtil$1
            dup
            aload 5 /* wnafPreCompP */
            aload 3 /* pointMap */
            iload 2 /* includeNegated */
            invokespecial org.bouncycastle.math.ec.WNafUtil$1.<init>:(Lorg/bouncycastle/math/ec/WNafPreCompInfo;Lorg/bouncycastle/math/ec/ECPointMap;Z)V
            invokevirtual org.bouncycastle.math.ec.ECCurve.precompute:(Lorg/bouncycastle/math/ec/ECPoint;Ljava/lang/String;Lorg/bouncycastle/math/ec/PreCompCallback;)Lorg/bouncycastle/math/ec/PreCompInfo;
            pop
         4: .line 383
            aload 6 /* q */
            areturn
        end local 6 // org.bouncycastle.math.ec.ECPoint q
        end local 5 // org.bouncycastle.math.ec.WNafPreCompInfo wnafPreCompP
        end local 4 // org.bouncycastle.math.ec.ECCurve c
        end local 3 // org.bouncycastle.math.ec.ECPointMap pointMap
        end local 2 // boolean includeNegated
        end local 1 // int width
        end local 0 // org.bouncycastle.math.ec.ECPoint p
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0               p  Lorg/bouncycastle/math/ec/ECPoint;
            0    5     1           width  I
            0    5     2  includeNegated  Z
            0    5     3        pointMap  Lorg/bouncycastle/math/ec/ECPointMap;
            1    5     4               c  Lorg/bouncycastle/math/ec/ECCurve;
            2    5     5    wnafPreCompP  Lorg/bouncycastle/math/ec/WNafPreCompInfo;
            3    5     6               q  Lorg/bouncycastle/math/ec/ECPoint;
    MethodParameters:
                Name  Flags
      p               
      width           final
      includeNegated  final
      pointMap        final

  public static org.bouncycastle.math.ec.WNafPreCompInfo precompute(org.bouncycastle.math.ec.ECPoint, int, boolean);
    descriptor: (Lorg/bouncycastle/math/ec/ECPoint;IZ)Lorg/bouncycastle/math/ec/WNafPreCompInfo;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=9, locals=4, args_size=3
        start local 0 // org.bouncycastle.math.ec.ECPoint p
        start local 1 // int width
        start local 2 // boolean includeNegated
         0: .line 388
            aload 0 /* p */
            invokevirtual org.bouncycastle.math.ec.ECPoint.getCurve:()Lorg/bouncycastle/math/ec/ECCurve;
            astore 3 /* c */
        start local 3 // org.bouncycastle.math.ec.ECCurve c
         1: .line 390
            aload 3 /* c */
            aload 0 /* p */
            ldc "bc_wnaf"
            new org.bouncycastle.math.ec.WNafUtil$2
            dup
            iload 1 /* width */
            iload 2 /* includeNegated */
            aload 0 /* p */
            aload 3 /* c */
            invokespecial org.bouncycastle.math.ec.WNafUtil$2.<init>:(IZLorg/bouncycastle/math/ec/ECPoint;Lorg/bouncycastle/math/ec/ECCurve;)V
            invokevirtual org.bouncycastle.math.ec.ECCurve.precompute:(Lorg/bouncycastle/math/ec/ECPoint;Ljava/lang/String;Lorg/bouncycastle/math/ec/PreCompCallback;)Lorg/bouncycastle/math/ec/PreCompInfo;
            checkcast org.bouncycastle.math.ec.WNafPreCompInfo
            areturn
        end local 3 // org.bouncycastle.math.ec.ECCurve c
        end local 2 // boolean includeNegated
        end local 1 // int width
        end local 0 // org.bouncycastle.math.ec.ECPoint p
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0               p  Lorg/bouncycastle/math/ec/ECPoint;
            0    2     1           width  I
            0    2     2  includeNegated  Z
            1    2     3               c  Lorg/bouncycastle/math/ec/ECCurve;
    MethodParameters:
                Name  Flags
      p               final
      width           final
      includeNegated  final

  private static byte[] trim(byte[], int);
    descriptor: ([BI)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // byte[] a
        start local 1 // int length
         0: .line 553
            iload 1 /* length */
            newarray 8
            astore 2 /* result */
        start local 2 // byte[] result
         1: .line 554
            aload 0 /* a */
            iconst_0
            aload 2 /* result */
            iconst_0
            aload 2 /* result */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         2: .line 555
            aload 2 /* result */
            areturn
        end local 2 // byte[] result
        end local 1 // int length
        end local 0 // byte[] a
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0       a  [B
            0    3     1  length  I
            1    3     2  result  [B
    MethodParameters:
        Name  Flags
      a       
      length  

  private static int[] trim(int[], int);
    descriptor: ([II)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // int[] a
        start local 1 // int length
         0: .line 560
            iload 1 /* length */
            newarray 10
            astore 2 /* result */
        start local 2 // int[] result
         1: .line 561
            aload 0 /* a */
            iconst_0
            aload 2 /* result */
            iconst_0
            aload 2 /* result */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         2: .line 562
            aload 2 /* result */
            areturn
        end local 2 // int[] result
        end local 1 // int length
        end local 0 // int[] a
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0       a  [I
            0    3     1  length  I
            1    3     2  result  [I
    MethodParameters:
        Name  Flags
      a       
      length  

  private static org.bouncycastle.math.ec.ECPoint[] resizeTable(org.bouncycastle.math.ec.ECPoint[], int);
    descriptor: ([Lorg/bouncycastle/math/ec/ECPoint;I)[Lorg/bouncycastle/math/ec/ECPoint;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.bouncycastle.math.ec.ECPoint[] a
        start local 1 // int length
         0: .line 567
            iload 1 /* length */
            anewarray org.bouncycastle.math.ec.ECPoint
            astore 2 /* result */
        start local 2 // org.bouncycastle.math.ec.ECPoint[] result
         1: .line 568
            aload 0 /* a */
            iconst_0
            aload 2 /* result */
            iconst_0
            aload 0 /* a */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         2: .line 569
            aload 2 /* result */
            areturn
        end local 2 // org.bouncycastle.math.ec.ECPoint[] result
        end local 1 // int length
        end local 0 // org.bouncycastle.math.ec.ECPoint[] a
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0       a  [Lorg/bouncycastle/math/ec/ECPoint;
            0    3     1  length  I
            1    3     2  result  [Lorg/bouncycastle/math/ec/ECPoint;
    MethodParameters:
        Name  Flags
      a       
      length  
}
SourceFile: "WNafUtil.java"
NestMembers:
  org.bouncycastle.math.ec.WNafUtil$1  org.bouncycastle.math.ec.WNafUtil$2
InnerClasses:
  org.bouncycastle.math.ec.WNafUtil$1
  org.bouncycastle.math.ec.WNafUtil$2