public class org.bouncycastle.math.ec.WNafL2RMultiplier extends org.bouncycastle.math.ec.AbstractECMultiplier
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.math.ec.WNafL2RMultiplier
  super_class: org.bouncycastle.math.ec.AbstractECMultiplier
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.math.ec.WNafL2RMultiplier this
         0: .line 9
            aload 0 /* this */
            invokespecial org.bouncycastle.math.ec.AbstractECMultiplier.<init>:()V
            return
        end local 0 // org.bouncycastle.math.ec.WNafL2RMultiplier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/math/ec/WNafL2RMultiplier;

  protected org.bouncycastle.math.ec.ECPoint multiplyPositive(org.bouncycastle.math.ec.ECPoint, java.math.BigInteger);
    descriptor: (Lorg/bouncycastle/math/ec/ECPoint;Ljava/math/BigInteger;)Lorg/bouncycastle/math/ec/ECPoint;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=20, args_size=3
        start local 0 // org.bouncycastle.math.ec.WNafL2RMultiplier this
        start local 1 // org.bouncycastle.math.ec.ECPoint p
        start local 2 // java.math.BigInteger k
         0: .line 21
            iconst_2
            bipush 16
            aload 0 /* this */
            aload 2 /* k */
            invokevirtual java.math.BigInteger.bitLength:()I
            invokevirtual org.bouncycastle.math.ec.WNafL2RMultiplier.getWindowSize:(I)I
            invokestatic java.lang.Math.min:(II)I
            invokestatic java.lang.Math.max:(II)I
            istore 3 /* width */
        start local 3 // int width
         1: .line 23
            aload 1 /* p */
            iload 3 /* width */
            iconst_1
            invokestatic org.bouncycastle.math.ec.WNafUtil.precompute:(Lorg/bouncycastle/math/ec/ECPoint;IZ)Lorg/bouncycastle/math/ec/WNafPreCompInfo;
            astore 4 /* wnafPreCompInfo */
        start local 4 // org.bouncycastle.math.ec.WNafPreCompInfo wnafPreCompInfo
         2: .line 24
            aload 4 /* wnafPreCompInfo */
            invokevirtual org.bouncycastle.math.ec.WNafPreCompInfo.getPreComp:()[Lorg/bouncycastle/math/ec/ECPoint;
            astore 5 /* preComp */
        start local 5 // org.bouncycastle.math.ec.ECPoint[] preComp
         3: .line 25
            aload 4 /* wnafPreCompInfo */
            invokevirtual org.bouncycastle.math.ec.WNafPreCompInfo.getPreCompNeg:()[Lorg/bouncycastle/math/ec/ECPoint;
            astore 6 /* preCompNeg */
        start local 6 // org.bouncycastle.math.ec.ECPoint[] preCompNeg
         4: .line 27
            iload 3 /* width */
            aload 2 /* k */
            invokestatic org.bouncycastle.math.ec.WNafUtil.generateCompactWindowNaf:(ILjava/math/BigInteger;)[I
            astore 7 /* wnaf */
        start local 7 // int[] wnaf
         5: .line 29
            aload 1 /* p */
            invokevirtual org.bouncycastle.math.ec.ECPoint.getCurve:()Lorg/bouncycastle/math/ec/ECCurve;
            invokevirtual org.bouncycastle.math.ec.ECCurve.getInfinity:()Lorg/bouncycastle/math/ec/ECPoint;
            astore 8 /* R */
        start local 8 // org.bouncycastle.math.ec.ECPoint R
         6: .line 31
            aload 7 /* wnaf */
            arraylength
            istore 9 /* i */
        start local 9 // int i
         7: .line 37
            iload 9 /* i */
            iconst_1
            if_icmple 37
         8: .line 39
            aload 7 /* wnaf */
            iinc 9 /* i */ -1
            iload 9 /* i */
            iaload
            istore 10 /* wi */
        start local 10 // int wi
         9: .line 40
            iload 10 /* wi */
            bipush 16
            ishr
            istore 11 /* digit */
        start local 11 // int digit
        10: iload 10 /* wi */
            ldc 65535
            iand
            istore 12 /* zeroes */
        start local 12 // int zeroes
        11: .line 42
            iload 11 /* digit */
            invokestatic java.lang.Math.abs:(I)I
            istore 13 /* n */
        start local 13 // int n
        12: .line 43
            iload 11 /* digit */
            ifge 13
            aload 6 /* preCompNeg */
            goto 14
      StackMap locals: org.bouncycastle.math.ec.WNafL2RMultiplier org.bouncycastle.math.ec.ECPoint java.math.BigInteger int org.bouncycastle.math.ec.WNafPreCompInfo org.bouncycastle.math.ec.ECPoint[] org.bouncycastle.math.ec.ECPoint[] int[] org.bouncycastle.math.ec.ECPoint int int int int int
      StackMap stack:
        13: aload 5 /* preComp */
      StackMap locals:
      StackMap stack: org.bouncycastle.math.ec.ECPoint[]
        14: astore 14 /* table */
        start local 14 // org.bouncycastle.math.ec.ECPoint[] table
        15: .line 46
            iload 13 /* n */
            iconst_2
            ishl
            iconst_1
            iload 3 /* width */
            ishl
            if_icmpge 24
        16: .line 48
            getstatic org.bouncycastle.math.ec.LongArray.bitLengths:[B
            iload 13 /* n */
            baload
            istore 15 /* highest */
        start local 15 // int highest
        17: .line 51
            iload 3 /* width */
            iload 15 /* highest */
            isub
            istore 16 /* scale */
        start local 16 // int scale
        18: .line 52
            iload 13 /* n */
            iconst_1
            iload 15 /* highest */
            iconst_1
            isub
            ishl
            ixor
            istore 17 /* lowBits */
        start local 17 // int lowBits
        19: .line 54
            iconst_1
            iload 3 /* width */
            iconst_1
            isub
            ishl
            iconst_1
            isub
            istore 18 /* i1 */
        start local 18 // int i1
        20: .line 55
            iload 17 /* lowBits */
            iload 16 /* scale */
            ishl
            iconst_1
            iadd
            istore 19 /* i2 */
        start local 19 // int i2
        21: .line 56
            aload 14 /* table */
            iload 18 /* i1 */
            iconst_1
            iushr
            aaload
            aload 14 /* table */
            iload 19 /* i2 */
            iconst_1
            iushr
            aaload
            invokevirtual org.bouncycastle.math.ec.ECPoint.add:(Lorg/bouncycastle/math/ec/ECPoint;)Lorg/bouncycastle/math/ec/ECPoint;
            astore 8 /* R */
        22: .line 58
            iload 12 /* zeroes */
            iload 16 /* scale */
            isub
            istore 12 /* zeroes */
        end local 19 // int i2
        end local 18 // int i1
        end local 17 // int lowBits
        end local 16 // int scale
        end local 15 // int highest
        23: .line 61
            goto 25
        24: .line 64
      StackMap locals: org.bouncycastle.math.ec.ECPoint[]
      StackMap stack:
            aload 14 /* table */
            iload 13 /* n */
            iconst_1
            iushr
            aaload
            astore 8 /* R */
        25: .line 67
      StackMap locals:
      StackMap stack:
            aload 8 /* R */
            iload 12 /* zeroes */
            invokevirtual org.bouncycastle.math.ec.ECPoint.timesPow2:(I)Lorg/bouncycastle/math/ec/ECPoint;
            astore 8 /* R */
        end local 14 // org.bouncycastle.math.ec.ECPoint[] table
        end local 13 // int n
        end local 12 // int zeroes
        end local 11 // int digit
        end local 10 // int wi
        26: .line 70
            goto 37
        27: .line 72
      StackMap locals: org.bouncycastle.math.ec.WNafL2RMultiplier org.bouncycastle.math.ec.ECPoint java.math.BigInteger int org.bouncycastle.math.ec.WNafPreCompInfo org.bouncycastle.math.ec.ECPoint[] org.bouncycastle.math.ec.ECPoint[] int[] org.bouncycastle.math.ec.ECPoint int
      StackMap stack:
            aload 7 /* wnaf */
            iinc 9 /* i */ -1
            iload 9 /* i */
            iaload
            istore 10 /* wi */
        start local 10 // int wi
        28: .line 73
            iload 10 /* wi */
            bipush 16
            ishr
            istore 11 /* digit */
        start local 11 // int digit
        29: iload 10 /* wi */
            ldc 65535
            iand
            istore 12 /* zeroes */
        start local 12 // int zeroes
        30: .line 75
            iload 11 /* digit */
            invokestatic java.lang.Math.abs:(I)I
            istore 13 /* n */
        start local 13 // int n
        31: .line 76
            iload 11 /* digit */
            ifge 32
            aload 6 /* preCompNeg */
            goto 33
      StackMap locals: org.bouncycastle.math.ec.WNafL2RMultiplier org.bouncycastle.math.ec.ECPoint java.math.BigInteger int org.bouncycastle.math.ec.WNafPreCompInfo org.bouncycastle.math.ec.ECPoint[] org.bouncycastle.math.ec.ECPoint[] int[] org.bouncycastle.math.ec.ECPoint int int int int int
      StackMap stack:
        32: aload 5 /* preComp */
      StackMap locals:
      StackMap stack: org.bouncycastle.math.ec.ECPoint[]
        33: astore 14 /* table */
        start local 14 // org.bouncycastle.math.ec.ECPoint[] table
        34: .line 77
            aload 14 /* table */
            iload 13 /* n */
            iconst_1
            iushr
            aaload
            astore 15 /* r */
        start local 15 // org.bouncycastle.math.ec.ECPoint r
        35: .line 79
            aload 8 /* R */
            aload 15 /* r */
            invokevirtual org.bouncycastle.math.ec.ECPoint.twicePlus:(Lorg/bouncycastle/math/ec/ECPoint;)Lorg/bouncycastle/math/ec/ECPoint;
            astore 8 /* R */
        36: .line 80
            aload 8 /* R */
            iload 12 /* zeroes */
            invokevirtual org.bouncycastle.math.ec.ECPoint.timesPow2:(I)Lorg/bouncycastle/math/ec/ECPoint;
            astore 8 /* R */
        end local 15 // org.bouncycastle.math.ec.ECPoint r
        end local 14 // org.bouncycastle.math.ec.ECPoint[] table
        end local 13 // int n
        end local 12 // int zeroes
        end local 11 // int digit
        end local 10 // int wi
        37: .line 70
      StackMap locals: org.bouncycastle.math.ec.WNafL2RMultiplier org.bouncycastle.math.ec.ECPoint java.math.BigInteger int org.bouncycastle.math.ec.WNafPreCompInfo org.bouncycastle.math.ec.ECPoint[] org.bouncycastle.math.ec.ECPoint[] int[] org.bouncycastle.math.ec.ECPoint int
      StackMap stack:
            iload 9 /* i */
            ifgt 27
        38: .line 83
            aload 8 /* R */
            areturn
        end local 9 // int i
        end local 8 // org.bouncycastle.math.ec.ECPoint R
        end local 7 // int[] wnaf
        end local 6 // org.bouncycastle.math.ec.ECPoint[] preCompNeg
        end local 5 // org.bouncycastle.math.ec.ECPoint[] preComp
        end local 4 // org.bouncycastle.math.ec.WNafPreCompInfo wnafPreCompInfo
        end local 3 // int width
        end local 2 // java.math.BigInteger k
        end local 1 // org.bouncycastle.math.ec.ECPoint p
        end local 0 // org.bouncycastle.math.ec.WNafL2RMultiplier this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   39     0             this  Lorg/bouncycastle/math/ec/WNafL2RMultiplier;
            0   39     1                p  Lorg/bouncycastle/math/ec/ECPoint;
            0   39     2                k  Ljava/math/BigInteger;
            1   39     3            width  I
            2   39     4  wnafPreCompInfo  Lorg/bouncycastle/math/ec/WNafPreCompInfo;
            3   39     5          preComp  [Lorg/bouncycastle/math/ec/ECPoint;
            4   39     6       preCompNeg  [Lorg/bouncycastle/math/ec/ECPoint;
            5   39     7             wnaf  [I
            6   39     8                R  Lorg/bouncycastle/math/ec/ECPoint;
            7   39     9                i  I
            9   26    10               wi  I
           10   26    11            digit  I
           11   26    12           zeroes  I
           12   26    13                n  I
           15   26    14            table  [Lorg/bouncycastle/math/ec/ECPoint;
           17   23    15          highest  I
           18   23    16            scale  I
           19   23    17          lowBits  I
           20   23    18               i1  I
           21   23    19               i2  I
           28   37    10               wi  I
           29   37    11            digit  I
           30   37    12           zeroes  I
           31   37    13                n  I
           34   37    14            table  [Lorg/bouncycastle/math/ec/ECPoint;
           35   37    15                r  Lorg/bouncycastle/math/ec/ECPoint;
    MethodParameters:
      Name  Flags
      p     
      k     

  protected int getWindowSize(int);
    descriptor: (I)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.bouncycastle.math.ec.WNafL2RMultiplier this
        start local 1 // int bits
         0: .line 94
            iload 1 /* bits */
            invokestatic org.bouncycastle.math.ec.WNafUtil.getWindowSize:(I)I
            ireturn
        end local 1 // int bits
        end local 0 // org.bouncycastle.math.ec.WNafL2RMultiplier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/math/ec/WNafL2RMultiplier;
            0    1     1  bits  I
    MethodParameters:
      Name  Flags
      bits  
}
SourceFile: "WNafL2RMultiplier.java"