public class org.bouncycastle.math.ec.GLVMultiplier 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.GLVMultiplier
  super_class: org.bouncycastle.math.ec.AbstractECMultiplier
{
  protected final org.bouncycastle.math.ec.ECCurve curve;
    descriptor: Lorg/bouncycastle/math/ec/ECCurve;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final org.bouncycastle.math.ec.endo.GLVEndomorphism glvEndomorphism;
    descriptor: Lorg/bouncycastle/math/ec/endo/GLVEndomorphism;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  public void <init>(org.bouncycastle.math.ec.ECCurve, org.bouncycastle.math.ec.endo.GLVEndomorphism);
    descriptor: (Lorg/bouncycastle/math/ec/ECCurve;Lorg/bouncycastle/math/ec/endo/GLVEndomorphism;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.bouncycastle.math.ec.GLVMultiplier this
        start local 1 // org.bouncycastle.math.ec.ECCurve curve
        start local 2 // org.bouncycastle.math.ec.endo.GLVEndomorphism glvEndomorphism
         0: .line 12
            aload 0 /* this */
            invokespecial org.bouncycastle.math.ec.AbstractECMultiplier.<init>:()V
         1: .line 14
            aload 1 /* curve */
            ifnull 2
            aload 1 /* curve */
            invokevirtual org.bouncycastle.math.ec.ECCurve.getOrder:()Ljava/math/BigInteger;
            ifnonnull 3
         2: .line 16
      StackMap locals: org.bouncycastle.math.ec.GLVMultiplier org.bouncycastle.math.ec.ECCurve org.bouncycastle.math.ec.endo.GLVEndomorphism
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "Need curve with known group order"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 19
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* curve */
            putfield org.bouncycastle.math.ec.GLVMultiplier.curve:Lorg/bouncycastle/math/ec/ECCurve;
         4: .line 20
            aload 0 /* this */
            aload 2 /* glvEndomorphism */
            putfield org.bouncycastle.math.ec.GLVMultiplier.glvEndomorphism:Lorg/bouncycastle/math/ec/endo/GLVEndomorphism;
         5: .line 21
            return
        end local 2 // org.bouncycastle.math.ec.endo.GLVEndomorphism glvEndomorphism
        end local 1 // org.bouncycastle.math.ec.ECCurve curve
        end local 0 // org.bouncycastle.math.ec.GLVMultiplier this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    6     0             this  Lorg/bouncycastle/math/ec/GLVMultiplier;
            0    6     1            curve  Lorg/bouncycastle/math/ec/ECCurve;
            0    6     2  glvEndomorphism  Lorg/bouncycastle/math/ec/endo/GLVEndomorphism;
    MethodParameters:
                 Name  Flags
      curve            
      glvEndomorphism  

  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=8, args_size=3
        start local 0 // org.bouncycastle.math.ec.GLVMultiplier this
        start local 1 // org.bouncycastle.math.ec.ECPoint p
        start local 2 // java.math.BigInteger k
         0: .line 25
            aload 0 /* this */
            getfield org.bouncycastle.math.ec.GLVMultiplier.curve:Lorg/bouncycastle/math/ec/ECCurve;
            aload 1 /* p */
            invokevirtual org.bouncycastle.math.ec.ECPoint.getCurve:()Lorg/bouncycastle/math/ec/ECCurve;
            invokevirtual org.bouncycastle.math.ec.ECCurve.equals:(Lorg/bouncycastle/math/ec/ECCurve;)Z
            ifne 2
         1: .line 27
            new java.lang.IllegalStateException
            dup
            invokespecial java.lang.IllegalStateException.<init>:()V
            athrow
         2: .line 30
      StackMap locals:
      StackMap stack:
            aload 1 /* p */
            invokevirtual org.bouncycastle.math.ec.ECPoint.getCurve:()Lorg/bouncycastle/math/ec/ECCurve;
            invokevirtual org.bouncycastle.math.ec.ECCurve.getOrder:()Ljava/math/BigInteger;
            astore 3 /* n */
        start local 3 // java.math.BigInteger n
         3: .line 31
            aload 0 /* this */
            getfield org.bouncycastle.math.ec.GLVMultiplier.glvEndomorphism:Lorg/bouncycastle/math/ec/endo/GLVEndomorphism;
            aload 2 /* k */
            aload 3 /* n */
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokeinterface org.bouncycastle.math.ec.endo.GLVEndomorphism.decomposeScalar:(Ljava/math/BigInteger;)[Ljava/math/BigInteger;
            astore 4 /* ab */
        start local 4 // java.math.BigInteger[] ab
         4: .line 32
            aload 4 /* ab */
            iconst_0
            aaload
            astore 5 /* a */
        start local 5 // java.math.BigInteger a
         5: aload 4 /* ab */
            iconst_1
            aaload
            astore 6 /* b */
        start local 6 // java.math.BigInteger b
         6: .line 34
            aload 0 /* this */
            getfield org.bouncycastle.math.ec.GLVMultiplier.glvEndomorphism:Lorg/bouncycastle/math/ec/endo/GLVEndomorphism;
            invokeinterface org.bouncycastle.math.ec.endo.GLVEndomorphism.getPointMap:()Lorg/bouncycastle/math/ec/ECPointMap;
            astore 7 /* pointMap */
        start local 7 // org.bouncycastle.math.ec.ECPointMap pointMap
         7: .line 35
            aload 0 /* this */
            getfield org.bouncycastle.math.ec.GLVMultiplier.glvEndomorphism:Lorg/bouncycastle/math/ec/endo/GLVEndomorphism;
            invokeinterface org.bouncycastle.math.ec.endo.GLVEndomorphism.hasEfficientPointMap:()Z
            ifeq 9
         8: .line 37
            aload 1 /* p */
            aload 5 /* a */
            aload 7 /* pointMap */
            aload 6 /* b */
            invokestatic org.bouncycastle.math.ec.ECAlgorithms.implShamirsTrickWNaf:(Lorg/bouncycastle/math/ec/ECPoint;Ljava/math/BigInteger;Lorg/bouncycastle/math/ec/ECPointMap;Ljava/math/BigInteger;)Lorg/bouncycastle/math/ec/ECPoint;
            areturn
         9: .line 40
      StackMap locals: org.bouncycastle.math.ec.GLVMultiplier org.bouncycastle.math.ec.ECPoint java.math.BigInteger java.math.BigInteger java.math.BigInteger[] java.math.BigInteger java.math.BigInteger org.bouncycastle.math.ec.ECPointMap
      StackMap stack:
            aload 1 /* p */
            aload 5 /* a */
            aload 7 /* pointMap */
            aload 1 /* p */
            invokeinterface org.bouncycastle.math.ec.ECPointMap.map:(Lorg/bouncycastle/math/ec/ECPoint;)Lorg/bouncycastle/math/ec/ECPoint;
            aload 6 /* b */
            invokestatic org.bouncycastle.math.ec.ECAlgorithms.implShamirsTrickWNaf:(Lorg/bouncycastle/math/ec/ECPoint;Ljava/math/BigInteger;Lorg/bouncycastle/math/ec/ECPoint;Ljava/math/BigInteger;)Lorg/bouncycastle/math/ec/ECPoint;
            areturn
        end local 7 // org.bouncycastle.math.ec.ECPointMap pointMap
        end local 6 // java.math.BigInteger b
        end local 5 // java.math.BigInteger a
        end local 4 // java.math.BigInteger[] ab
        end local 3 // java.math.BigInteger n
        end local 2 // java.math.BigInteger k
        end local 1 // org.bouncycastle.math.ec.ECPoint p
        end local 0 // org.bouncycastle.math.ec.GLVMultiplier this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0      this  Lorg/bouncycastle/math/ec/GLVMultiplier;
            0   10     1         p  Lorg/bouncycastle/math/ec/ECPoint;
            0   10     2         k  Ljava/math/BigInteger;
            3   10     3         n  Ljava/math/BigInteger;
            4   10     4        ab  [Ljava/math/BigInteger;
            5   10     5         a  Ljava/math/BigInteger;
            6   10     6         b  Ljava/math/BigInteger;
            7   10     7  pointMap  Lorg/bouncycastle/math/ec/ECPointMap;
    MethodParameters:
      Name  Flags
      p     
      k     
}
SourceFile: "GLVMultiplier.java"