ECPoint$Fp.smali
.class public Lorg/spongycastle/math/ec/ECPoint$Fp;
.super Lorg/spongycastle/math/ec/ECPoint$AbstractFp;
.source "ECPoint.java"
# direct methods
.method public constructor <init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;)V
.registers 5
.prologue
.line 615
const/4 v0, 0x0
invoke-direct {p0, p1, p2, p3, v0}, Lorg/spongycastle/math/ec/ECPoint$Fp;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;Z)V
.line 616
return-void
.end method
.method public constructor <init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;Z)V
.registers 8
.prologue
const/4 v0, 0x1
const/4 v1, 0x0
.line 630
invoke-direct {p0, p1, p2, p3}, Lorg/spongycastle/math/ec/ECPoint$AbstractFp;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;)V
.line 632
if-nez p2, :cond_14
move v2, v0
:goto_8
if-nez p3, :cond_16
:goto_a
if-eq v2, v0, :cond_18
.line 634
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "Exactly one of the field elements is null"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
:cond_14
move v2, v1
.line 632
goto :goto_8
:cond_16
move v0, v1
goto :goto_a
.line 637
:cond_18
iput-boolean p4, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->withCompression:Z
.line 638
return-void
.end method
.method constructor <init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;[Lorg/spongycastle/math/ec/ECFieldElement;Z)V
.registers 6
.prologue
.line 642
invoke-direct {p0, p1, p2, p3, p4}, Lorg/spongycastle/math/ec/ECPoint$AbstractFp;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;[Lorg/spongycastle/math/ec/ECFieldElement;)V
.line 644
iput-boolean p5, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->withCompression:Z
.line 645
return-void
.end method
# virtual methods
.method public add(Lorg/spongycastle/math/ec/ECPoint;)Lorg/spongycastle/math/ec/ECPoint;
.registers 20
.prologue
.line 665
invoke-virtual/range {p0 .. p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->isInfinity()Z
move-result v2
if-eqz v2, :cond_9
move-object/from16 v2, p1
.line 871
:goto_8
return-object v2
.line 669
:cond_9
invoke-virtual/range {p1 .. p1}, Lorg/spongycastle/math/ec/ECPoint;->isInfinity()Z
move-result v2
if-eqz v2, :cond_12
move-object/from16 v2, p0
.line 671
goto :goto_8
.line 673
:cond_12
move-object/from16 v0, p0
move-object/from16 v1, p1
if-ne v0, v1, :cond_1d
.line 675
invoke-virtual/range {p0 .. p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->twice()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v2
goto :goto_8
.line 678
:cond_1d
invoke-virtual/range {p0 .. p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v3
.line 679
invoke-virtual {v3}, Lorg/spongycastle/math/ec/ECCurve;->getCoordinateSystem()I
move-result v10
.line 681
move-object/from16 v0, p0
iget-object v4, v0, Lorg/spongycastle/math/ec/ECPoint$Fp;->x:Lorg/spongycastle/math/ec/ECFieldElement;
move-object/from16 v0, p0
iget-object v2, v0, Lorg/spongycastle/math/ec/ECPoint$Fp;->y:Lorg/spongycastle/math/ec/ECFieldElement;
.line 682
move-object/from16 v0, p1
iget-object v7, v0, Lorg/spongycastle/math/ec/ECPoint;->x:Lorg/spongycastle/math/ec/ECFieldElement;
move-object/from16 v0, p1
iget-object v8, v0, Lorg/spongycastle/math/ec/ECPoint;->y:Lorg/spongycastle/math/ec/ECFieldElement;
.line 684
packed-switch v10, :pswitch_data_248
.line 876
:pswitch_38
new-instance v2, Ljava/lang/IllegalStateException;
const-string v3, "unsupported coordinate system"
invoke-direct {v2, v3}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v2
.line 688
:pswitch_40
invoke-virtual {v7, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
invoke-virtual {v8, v2}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
.line 690
invoke-virtual {v5}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v8
if-eqz v8, :cond_5e
.line 692
invoke-virtual {v6}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v2
if-eqz v2, :cond_59
.line 695
invoke-virtual/range {p0 .. p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->twice()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v2
goto :goto_8
.line 699
:cond_59
invoke-virtual {v3}, Lorg/spongycastle/math/ec/ECCurve;->getInfinity()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v2
goto :goto_8
.line 702
:cond_5e
invoke-virtual {v6, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->divide(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
.line 703
invoke-virtual {v5}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
invoke-virtual {v6, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
invoke-virtual {v6, v7}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
.line 704
invoke-virtual {v4, v6}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
invoke-virtual {v5, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
invoke-virtual {v4, v2}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
.line 706
new-instance v2, Lorg/spongycastle/math/ec/ECPoint$Fp;
move-object/from16 v0, p0
iget-boolean v5, v0, Lorg/spongycastle/math/ec/ECPoint$Fp;->withCompression:Z
invoke-direct {v2, v3, v6, v4, v5}, Lorg/spongycastle/math/ec/ECPoint$Fp;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;Z)V
goto :goto_8
.line 711
:pswitch_84
move-object/from16 v0, p0
iget-object v5, v0, Lorg/spongycastle/math/ec/ECPoint$Fp;->zs:[Lorg/spongycastle/math/ec/ECFieldElement;
const/4 v6, 0x0
aget-object v6, v5, v6
.line 712
move-object/from16 v0, p1
iget-object v5, v0, Lorg/spongycastle/math/ec/ECPoint;->zs:[Lorg/spongycastle/math/ec/ECFieldElement;
const/4 v9, 0x0
aget-object v5, v5, v9
.line 714
invoke-virtual {v6}, Lorg/spongycastle/math/ec/ECFieldElement;->isOne()Z
move-result v9
.line 715
invoke-virtual {v5}, Lorg/spongycastle/math/ec/ECFieldElement;->isOne()Z
move-result v10
.line 717
if-eqz v9, :cond_bc
.line 718
:goto_9c
if-eqz v10, :cond_c1
.line 719
:goto_9e
invoke-virtual {v8, v2}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v8
.line 720
if-eqz v9, :cond_c6
.line 721
:goto_a4
if-eqz v10, :cond_cb
.line 722
:goto_a6
invoke-virtual {v7, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v7
.line 725
invoke-virtual {v7}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v11
if-eqz v11, :cond_d6
.line 727
invoke-virtual {v8}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v2
if-eqz v2, :cond_d0
.line 730
invoke-virtual/range {p0 .. p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->twice()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v2
goto/16 :goto_8
.line 717
:cond_bc
invoke-virtual {v8, v6}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v8
goto :goto_9c
.line 718
:cond_c1
invoke-virtual {v2, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
goto :goto_9e
.line 720
:cond_c6
invoke-virtual {v7, v6}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v7
goto :goto_a4
.line 721
:cond_cb
invoke-virtual {v4, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
goto :goto_a6
.line 734
:cond_d0
invoke-virtual {v3}, Lorg/spongycastle/math/ec/ECCurve;->getInfinity()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v2
goto/16 :goto_8
.line 738
:cond_d6
if-eqz v9, :cond_11c
move-object v6, v5
.line 739
:cond_d9
:goto_d9
invoke-virtual {v7}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
.line 740
invoke-virtual {v5, v7}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v9
.line 741
invoke-virtual {v5, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
.line 742
invoke-virtual {v8}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
invoke-virtual {v4, v6}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
invoke-virtual {v4, v9}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
move-object/from16 v0, p0
invoke-virtual {v0, v5}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v10
invoke-virtual {v4, v10}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v10
.line 744
invoke-virtual {v7, v10}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
.line 745
invoke-virtual {v5, v10}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
invoke-virtual {v5, v8, v2, v9}, Lorg/spongycastle/math/ec/ECFieldElement;->multiplyMinusProduct(Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
.line 746
invoke-virtual {v9, v6}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v7
.line 748
new-instance v2, Lorg/spongycastle/math/ec/ECPoint$Fp;
const/4 v6, 0x1
new-array v6, v6, [Lorg/spongycastle/math/ec/ECFieldElement;
const/4 v8, 0x0
aput-object v7, v6, v8
move-object/from16 v0, p0
iget-boolean v7, v0, Lorg/spongycastle/math/ec/ECPoint$Fp;->withCompression:Z
invoke-direct/range {v2 .. v7}, Lorg/spongycastle/math/ec/ECPoint$Fp;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;[Lorg/spongycastle/math/ec/ECFieldElement;Z)V
goto/16 :goto_8
.line 738
:cond_11c
if-nez v10, :cond_d9
invoke-virtual {v6, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
move-object v6, v5
goto :goto_d9
.line 754
:pswitch_124
move-object/from16 v0, p0
iget-object v5, v0, Lorg/spongycastle/math/ec/ECPoint$Fp;->zs:[Lorg/spongycastle/math/ec/ECFieldElement;
const/4 v6, 0x0
aget-object v11, v5, v6
.line 755
move-object/from16 v0, p1
iget-object v5, v0, Lorg/spongycastle/math/ec/ECPoint;->zs:[Lorg/spongycastle/math/ec/ECFieldElement;
const/4 v6, 0x0
aget-object v12, v5, v6
.line 757
invoke-virtual {v11}, Lorg/spongycastle/math/ec/ECFieldElement;->isOne()Z
move-result v13
.line 759
const/4 v9, 0x0
.line 761
if-nez v13, :cond_1ae
invoke-virtual {v11, v12}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_1ae
.line 765
invoke-virtual {v4, v7}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
invoke-virtual {v2, v8}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
.line 766
invoke-virtual {v6}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v8
if-eqz v8, :cond_15f
.line 768
invoke-virtual {v5}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v2
if-eqz v2, :cond_159
.line 770
invoke-virtual/range {p0 .. p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->twice()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v2
goto/16 :goto_8
.line 772
:cond_159
invoke-virtual {v3}, Lorg/spongycastle/math/ec/ECCurve;->getInfinity()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v2
goto/16 :goto_8
.line 775
:cond_15f
invoke-virtual {v6}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v8
.line 776
invoke-virtual {v4, v8}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v12
invoke-virtual {v7, v8}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
.line 777
invoke-virtual {v12, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v7
invoke-virtual {v7, v2}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
.line 779
invoke-virtual {v5}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v7
invoke-virtual {v7, v12}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v7
invoke-virtual {v7, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
.line 780
invoke-virtual {v12, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v7
invoke-virtual {v7, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
invoke-virtual {v5, v2}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
.line 783
invoke-virtual {v6, v11}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
move-object v7, v2
move-object v2, v9
.line 859
:goto_191
const/4 v6, 0x4
if-ne v10, v6, :cond_238
.line 862
move-object/from16 v0, p0
invoke-virtual {v0, v7, v2}, Lorg/spongycastle/math/ec/ECPoint$Fp;->calculateJacobianModifiedW(Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
.line 864
const/4 v6, 0x2
new-array v6, v6, [Lorg/spongycastle/math/ec/ECFieldElement;
const/4 v8, 0x0
aput-object v7, v6, v8
const/4 v7, 0x1
aput-object v2, v6, v7
.line 871
:goto_1a3
new-instance v2, Lorg/spongycastle/math/ec/ECPoint$Fp;
move-object/from16 v0, p0
iget-boolean v7, v0, Lorg/spongycastle/math/ec/ECPoint$Fp;->withCompression:Z
invoke-direct/range {v2 .. v7}, Lorg/spongycastle/math/ec/ECPoint$Fp;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;[Lorg/spongycastle/math/ec/ECFieldElement;Z)V
goto/16 :goto_8
.line 788
:cond_1ae
if-eqz v13, :cond_1d2
move-object v5, v7
move-object v6, v8
.line 800
:goto_1b2
invoke-virtual {v12}, Lorg/spongycastle/math/ec/ECFieldElement;->isOne()Z
move-result v8
.line 802
if-eqz v8, :cond_1e3
.line 814
:goto_1b8
invoke-virtual {v4, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v7
.line 815
invoke-virtual {v2, v6}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
.line 818
invoke-virtual {v7}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v5
if-eqz v5, :cond_1fa
.line 820
invoke-virtual {v6}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v2
if-eqz v2, :cond_1f4
.line 823
invoke-virtual/range {p0 .. p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->twice()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v2
goto/16 :goto_8
.line 794
:cond_1d2
invoke-virtual {v11}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
.line 795
invoke-virtual {v6, v7}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
.line 796
invoke-virtual {v6, v11}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
.line 797
invoke-virtual {v6, v8}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
goto :goto_1b2
.line 808
:cond_1e3
invoke-virtual {v12}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v7
.line 809
invoke-virtual {v7, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
.line 810
invoke-virtual {v7, v12}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v7
.line 811
invoke-virtual {v7, v2}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
goto :goto_1b8
.line 827
:cond_1f4
invoke-virtual {v3}, Lorg/spongycastle/math/ec/ECCurve;->getInfinity()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v2
goto/16 :goto_8
.line 830
:cond_1fa
invoke-virtual {v7}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
.line 831
invoke-virtual {v5, v7}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v14
.line 832
invoke-virtual {v5, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v15
.line 834
invoke-virtual {v6}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
invoke-virtual {v4, v14}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
move-object/from16 v0, p0
invoke-virtual {v0, v15}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v16
move-object/from16 v0, v16
invoke-virtual {v4, v0}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
.line 835
invoke-virtual {v15, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v15
invoke-virtual {v15, v6, v14, v2}, Lorg/spongycastle/math/ec/ECFieldElement;->multiplyMinusProduct(Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
.line 838
if-nez v13, :cond_245
.line 840
invoke-virtual {v7, v11}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
.line 842
:goto_228
if-nez v8, :cond_22e
.line 844
invoke-virtual {v6, v12}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
.line 852
:cond_22e
if-ne v6, v7, :cond_240
move-object v7, v6
move-object/from16 v17, v2
move-object v2, v5
move-object/from16 v5, v17
.line 854
goto/16 :goto_191
.line 868
:cond_238
const/4 v2, 0x1
new-array v6, v2, [Lorg/spongycastle/math/ec/ECFieldElement;
const/4 v2, 0x0
aput-object v7, v6, v2
goto/16 :goto_1a3
:cond_240
move-object v5, v2
move-object v7, v6
move-object v2, v9
goto/16 :goto_191
:cond_245
move-object v6, v7
goto :goto_228
.line 684
nop
:pswitch_data_248
.packed-switch 0x0
:pswitch_40
:pswitch_84
:pswitch_124
:pswitch_38
:pswitch_124
.end packed-switch
.end method
.method protected calculateJacobianModifiedW(Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
.registers 8
.prologue
.line 1291
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECCurve;->getA()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 1292
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v1
if-nez v1, :cond_14
invoke-virtual {p1}, Lorg/spongycastle/math/ec/ECFieldElement;->isOne()Z
move-result v1
if-eqz v1, :cond_15
.line 1312
:cond_14
:goto_14
return-object v0
.line 1297
:cond_15
if-nez p2, :cond_1b
.line 1299
invoke-virtual {p1}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object p2
.line 1302
:cond_1b
invoke-virtual {p2}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v1
.line 1303
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->negate()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
.line 1304
invoke-virtual {v2}, Lorg/spongycastle/math/ec/ECFieldElement;->bitLength()I
move-result v3
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->bitLength()I
move-result v4
if-ge v3, v4, :cond_36
.line 1306
invoke-virtual {v1, v2}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->negate()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
goto :goto_14
.line 1310
:cond_36
invoke-virtual {v1, v0}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
goto :goto_14
.end method
.method protected detach()Lorg/spongycastle/math/ec/ECPoint;
.registers 5
.prologue
.line 649
new-instance v0, Lorg/spongycastle/math/ec/ECPoint$Fp;
const/4 v1, 0x0
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->getAffineXCoord()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->getAffineYCoord()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
invoke-direct {v0, v1, v2, v3}, Lorg/spongycastle/math/ec/ECPoint$Fp;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;)V
return-object v0
.end method
.method protected doubleProductFromSquares(Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
.registers 6
.prologue
.line 1268
invoke-virtual {p1, p2}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {v0, p3}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {v0, p4}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
return-object v0
.end method
.method protected eight(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
.registers 3
.prologue
.line 1258
invoke-virtual {p0, p1}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {p0, v0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->four(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
return-object v0
.end method
.method protected four(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
.registers 3
.prologue
.line 1253
invoke-virtual {p0, p1}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {p0, v0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
return-object v0
.end method
.method protected getJacobianModifiedW()Lorg/spongycastle/math/ec/ECFieldElement;
.registers 5
.prologue
const/4 v3, 0x1
.line 1317
iget-object v0, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->zs:[Lorg/spongycastle/math/ec/ECFieldElement;
aget-object v0, v0, v3
.line 1318
if-nez v0, :cond_15
.line 1321
iget-object v1, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->zs:[Lorg/spongycastle/math/ec/ECFieldElement;
iget-object v0, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->zs:[Lorg/spongycastle/math/ec/ECFieldElement;
const/4 v2, 0x0
aget-object v0, v0, v2
const/4 v2, 0x0
invoke-virtual {p0, v0, v2}, Lorg/spongycastle/math/ec/ECPoint$Fp;->calculateJacobianModifiedW(Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
aput-object v0, v1, v3
.line 1323
:cond_15
return-object v0
.end method
.method public getZCoord(I)Lorg/spongycastle/math/ec/ECFieldElement;
.registers 4
.prologue
.line 654
const/4 v0, 0x1
if-ne p1, v0, :cond_f
const/4 v0, 0x4
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->getCurveCoordinateSystem()I
move-result v1
if-ne v0, v1, :cond_f
.line 656
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->getJacobianModifiedW()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 659
:goto_e
return-object v0
:cond_f
invoke-super {p0, p1}, Lorg/spongycastle/math/ec/ECPoint$AbstractFp;->getZCoord(I)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
goto :goto_e
.end method
.method public negate()Lorg/spongycastle/math/ec/ECPoint;
.registers 7
.prologue
.line 1273
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->isInfinity()Z
move-result v0
if-eqz v0, :cond_7
.line 1286
:goto_6
return-object p0
.line 1278
:cond_7
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v1
.line 1279
invoke-virtual {v1}, Lorg/spongycastle/math/ec/ECCurve;->getCoordinateSystem()I
move-result v0
.line 1281
if-eqz v0, :cond_24
.line 1283
new-instance v0, Lorg/spongycastle/math/ec/ECPoint$Fp;
iget-object v2, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->x:Lorg/spongycastle/math/ec/ECFieldElement;
iget-object v3, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->y:Lorg/spongycastle/math/ec/ECFieldElement;
invoke-virtual {v3}, Lorg/spongycastle/math/ec/ECFieldElement;->negate()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
iget-object v4, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->zs:[Lorg/spongycastle/math/ec/ECFieldElement;
iget-boolean v5, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->withCompression:Z
invoke-direct/range {v0 .. v5}, Lorg/spongycastle/math/ec/ECPoint$Fp;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;[Lorg/spongycastle/math/ec/ECFieldElement;Z)V
move-object p0, v0
goto :goto_6
.line 1286
:cond_24
new-instance v0, Lorg/spongycastle/math/ec/ECPoint$Fp;
iget-object v2, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->x:Lorg/spongycastle/math/ec/ECFieldElement;
iget-object v3, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->y:Lorg/spongycastle/math/ec/ECFieldElement;
invoke-virtual {v3}, Lorg/spongycastle/math/ec/ECFieldElement;->negate()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
iget-boolean v4, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->withCompression:Z
invoke-direct {v0, v1, v2, v3, v4}, Lorg/spongycastle/math/ec/ECPoint$Fp;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;Z)V
move-object p0, v0
goto :goto_6
.end method
.method protected three(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
.registers 3
.prologue
.line 1248
invoke-virtual {p0, p1}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {v0, p1}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
return-object v0
.end method
.method public threeTimes()Lorg/spongycastle/math/ec/ECPoint;
.registers 9
.prologue
.line 1093
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->isInfinity()Z
move-result v0
if-eqz v0, :cond_7
.line 1140
:cond_6
:goto_6
return-object p0
.line 1098
:cond_7
iget-object v0, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->y:Lorg/spongycastle/math/ec/ECFieldElement;
.line 1099
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v1
if-nez v1, :cond_6
.line 1104
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v1
.line 1105
invoke-virtual {v1}, Lorg/spongycastle/math/ec/ECCurve;->getCoordinateSystem()I
move-result v2
.line 1107
sparse-switch v2, :sswitch_data_ae
.line 1140
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->twice()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v0
invoke-virtual {v0, p0}, Lorg/spongycastle/math/ec/ECPoint;->add(Lorg/spongycastle/math/ec/ECPoint;)Lorg/spongycastle/math/ec/ECPoint;
move-result-object p0
goto :goto_6
.line 1111
:sswitch_23
iget-object v2, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->x:Lorg/spongycastle/math/ec/ECFieldElement;
.line 1113
invoke-virtual {p0, v0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
.line 1114
invoke-virtual {v3}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
.line 1115
invoke-virtual {v2}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
invoke-virtual {p0, v5}, Lorg/spongycastle/math/ec/ECPoint$Fp;->three(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v6
invoke-virtual {v6}, Lorg/spongycastle/math/ec/ECCurve;->getA()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
invoke-virtual {v5, v6}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
.line 1116
invoke-virtual {v5}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
.line 1118
invoke-virtual {p0, v2}, Lorg/spongycastle/math/ec/ECPoint$Fp;->three(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v7
invoke-virtual {v7, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v7
invoke-virtual {v7, v6}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
.line 1119
invoke-virtual {v6}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v7
if-eqz v7, :cond_60
.line 1121
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECCurve;->getInfinity()Lorg/spongycastle/math/ec/ECPoint;
move-result-object p0
goto :goto_6
.line 1124
:cond_60
invoke-virtual {v6, v3}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
.line 1125
invoke-virtual {v3}, Lorg/spongycastle/math/ec/ECFieldElement;->invert()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
.line 1126
invoke-virtual {v6, v3}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
invoke-virtual {v6, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
.line 1127
invoke-virtual {v4}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
invoke-virtual {v4, v3}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
invoke-virtual {v3, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
.line 1129
invoke-virtual {v3, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
invoke-virtual {v5, v3}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
invoke-virtual {v4, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
invoke-virtual {v4, v2}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
.line 1130
invoke-virtual {v2, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
invoke-virtual {v2, v3}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
invoke-virtual {v2, v0}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
.line 1131
new-instance v0, Lorg/spongycastle/math/ec/ECPoint$Fp;
iget-boolean v3, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->withCompression:Z
invoke-direct {v0, v1, v4, v2, v3}, Lorg/spongycastle/math/ec/ECPoint$Fp;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;Z)V
move-object p0, v0
goto/16 :goto_6
.line 1135
:sswitch_a2
const/4 v0, 0x0
invoke-virtual {p0, v0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->twiceJacobianModified(Z)Lorg/spongycastle/math/ec/ECPoint$Fp;
move-result-object v0
invoke-virtual {v0, p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->add(Lorg/spongycastle/math/ec/ECPoint;)Lorg/spongycastle/math/ec/ECPoint;
move-result-object p0
goto/16 :goto_6
.line 1107
nop
:sswitch_data_ae
.sparse-switch
0x0 -> :sswitch_23
0x4 -> :sswitch_a2
.end sparse-switch
.end method
.method public timesPow2(I)Lorg/spongycastle/math/ec/ECPoint;
.registers 16
.prologue
const/4 v12, 0x1
const/4 v7, 0x0
.line 1147
if-gez p1, :cond_c
.line 1149
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "\'e\' cannot be negative"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 1151
:cond_c
if-eqz p1, :cond_14
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->isInfinity()Z
move-result v0
if-eqz v0, :cond_16
:cond_14
move-object v0, p0
.line 1235
:goto_15
return-object v0
.line 1155
:cond_16
if-ne p1, v12, :cond_1d
.line 1157
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->twice()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v0
goto :goto_15
.line 1160
:cond_1d
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v1
.line 1162
iget-object v4, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->y:Lorg/spongycastle/math/ec/ECFieldElement;
.line 1163
invoke-virtual {v4}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v0
if-eqz v0, :cond_2e
.line 1165
invoke-virtual {v1}, Lorg/spongycastle/math/ec/ECCurve;->getInfinity()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v0
goto :goto_15
.line 1168
:cond_2e
invoke-virtual {v1}, Lorg/spongycastle/math/ec/ECCurve;->getCoordinateSystem()I
move-result v10
.line 1170
invoke-virtual {v1}, Lorg/spongycastle/math/ec/ECCurve;->getA()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
.line 1171
iget-object v2, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->x:Lorg/spongycastle/math/ec/ECFieldElement;
.line 1172
iget-object v0, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->zs:[Lorg/spongycastle/math/ec/ECFieldElement;
array-length v0, v0
if-gtz v0, :cond_54
sget-object v0, Lorg/spongycastle/math/ec/ECConstants;->ONE:Ljava/math/BigInteger;
invoke-virtual {v1, v0}, Lorg/spongycastle/math/ec/ECCurve;->fromBigInteger(Ljava/math/BigInteger;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 1174
:goto_43
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->isOne()Z
move-result v5
if-nez v5, :cond_69
.line 1176
packed-switch v10, :pswitch_data_146
.line 1193
:pswitch_4c
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "unsupported coordinate system"
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
.line 1172
:cond_54
iget-object v0, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->zs:[Lorg/spongycastle/math/ec/ECFieldElement;
aget-object v0, v0, v7
goto :goto_43
.line 1181
:pswitch_59
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
.line 1182
invoke-virtual {v2, v0}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
.line 1183
invoke-virtual {v4, v3}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
.line 1184
invoke-virtual {p0, v0, v3}, Lorg/spongycastle/math/ec/ECPoint$Fp;->calculateJacobianModifiedW(Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
:cond_69
:goto_69
:pswitch_69
move v6, v7
move-object v8, v0
move-object v5, v3
move-object v3, v4
.line 1197
:goto_6d
if-ge v6, p1, :cond_e4
.line 1199
invoke-virtual {v3}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v0
if-eqz v0, :cond_85
.line 1201
invoke-virtual {v1}, Lorg/spongycastle/math/ec/ECCurve;->getInfinity()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v0
goto :goto_15
.line 1187
:pswitch_7a
const/4 v3, 0x0
invoke-virtual {p0, v0, v3}, Lorg/spongycastle/math/ec/ECPoint$Fp;->calculateJacobianModifiedW(Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
goto :goto_69
.line 1190
:pswitch_80
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->getJacobianModifiedW()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
goto :goto_69
.line 1204
:cond_85
invoke-virtual {v2}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 1205
invoke-virtual {p0, v0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->three(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 1206
invoke-virtual {p0, v3}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
.line 1207
invoke-virtual {v4, v3}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
.line 1208
invoke-virtual {v2, v3}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
invoke-virtual {p0, v2}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v9
.line 1209
invoke-virtual {v3}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
.line 1210
invoke-virtual {p0, v2}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
.line 1212
invoke-virtual {v5}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v2
if-nez v2, :cond_142
.line 1214
invoke-virtual {v0, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 1215
invoke-virtual {v3, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
invoke-virtual {p0, v2}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
.line 1218
:goto_b7
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
invoke-virtual {p0, v9}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v11
invoke-virtual {v5, v11}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
.line 1219
invoke-virtual {v9, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v9
invoke-virtual {v0, v9}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {v0, v3}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v9
.line 1220
invoke-virtual {v8}, Lorg/spongycastle/math/ec/ECFieldElement;->isOne()Z
move-result v0
if-eqz v0, :cond_df
move-object v0, v4
.line 1197
:goto_d6
add-int/lit8 v3, v6, 0x1
move v6, v3
move-object v8, v0
move-object v3, v9
move-object v13, v2
move-object v2, v5
move-object v5, v13
goto :goto_6d
.line 1220
:cond_df
invoke-virtual {v4, v8}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
goto :goto_d6
.line 1223
:cond_e4
packed-switch v10, :pswitch_data_154
.line 1237
:pswitch_e7
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "unsupported coordinate system"
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
.line 1226
:pswitch_ef
invoke-virtual {v8}, Lorg/spongycastle/math/ec/ECFieldElement;->invert()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
invoke-virtual {v4, v0}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
.line 1227
new-instance v0, Lorg/spongycastle/math/ec/ECPoint$Fp;
invoke-virtual {v2, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
invoke-virtual {v3, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
iget-boolean v4, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->withCompression:Z
invoke-direct {v0, v1, v2, v3, v4}, Lorg/spongycastle/math/ec/ECPoint$Fp;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;Z)V
goto/16 :goto_15
.line 1229
:pswitch_10c
invoke-virtual {v2, v8}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
.line 1230
invoke-virtual {v8}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {v8, v0}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
.line 1231
new-instance v0, Lorg/spongycastle/math/ec/ECPoint$Fp;
new-array v4, v12, [Lorg/spongycastle/math/ec/ECFieldElement;
aput-object v5, v4, v7
iget-boolean v5, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->withCompression:Z
invoke-direct/range {v0 .. v5}, Lorg/spongycastle/math/ec/ECPoint$Fp;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;[Lorg/spongycastle/math/ec/ECFieldElement;Z)V
goto/16 :goto_15
.line 1233
:pswitch_125
new-instance v0, Lorg/spongycastle/math/ec/ECPoint$Fp;
new-array v4, v12, [Lorg/spongycastle/math/ec/ECFieldElement;
aput-object v8, v4, v7
iget-boolean v5, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->withCompression:Z
invoke-direct/range {v0 .. v5}, Lorg/spongycastle/math/ec/ECPoint$Fp;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;[Lorg/spongycastle/math/ec/ECFieldElement;Z)V
goto/16 :goto_15
.line 1235
:pswitch_132
new-instance v0, Lorg/spongycastle/math/ec/ECPoint$Fp;
const/4 v4, 0x2
new-array v4, v4, [Lorg/spongycastle/math/ec/ECFieldElement;
aput-object v8, v4, v7
aput-object v5, v4, v12
iget-boolean v5, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->withCompression:Z
invoke-direct/range {v0 .. v5}, Lorg/spongycastle/math/ec/ECPoint$Fp;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;[Lorg/spongycastle/math/ec/ECFieldElement;Z)V
goto/16 :goto_15
:cond_142
move-object v2, v5
goto/16 :goto_b7
.line 1176
nop
:pswitch_data_146
.packed-switch 0x0
:pswitch_69
:pswitch_59
:pswitch_7a
:pswitch_4c
:pswitch_80
.end packed-switch
.line 1223
:pswitch_data_154
.packed-switch 0x0
:pswitch_ef
:pswitch_10c
:pswitch_125
:pswitch_e7
:pswitch_132
.end packed-switch
.end method
.method public twice()Lorg/spongycastle/math/ec/ECPoint;
.registers 16
.prologue
const/4 v14, 0x1
const/4 v13, 0x0
.line 884
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->isInfinity()Z
move-result v0
if-eqz v0, :cond_a
move-object v0, p0
.line 1004
:goto_9
return-object v0
.line 889
:cond_a
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v1
.line 891
iget-object v5, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->y:Lorg/spongycastle/math/ec/ECFieldElement;
.line 892
invoke-virtual {v5}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v0
if-eqz v0, :cond_1b
.line 894
invoke-virtual {v1}, Lorg/spongycastle/math/ec/ECCurve;->getInfinity()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v0
goto :goto_9
.line 897
:cond_1b
invoke-virtual {v1}, Lorg/spongycastle/math/ec/ECCurve;->getCoordinateSystem()I
move-result v0
.line 899
iget-object v2, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->x:Lorg/spongycastle/math/ec/ECFieldElement;
.line 901
packed-switch v0, :pswitch_data_1c0
.line 1009
:pswitch_24
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "unsupported coordinate system"
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
.line 905
:pswitch_2c
invoke-virtual {v2}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 906
invoke-virtual {p0, v0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->three(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v3
invoke-virtual {v3}, Lorg/spongycastle/math/ec/ECCurve;->getA()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
invoke-virtual {v0, v3}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {p0, v5}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
invoke-virtual {v0, v3}, Lorg/spongycastle/math/ec/ECFieldElement;->divide(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 907
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
invoke-virtual {p0, v2}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
invoke-virtual {v3, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
.line 908
invoke-virtual {v2, v3}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
invoke-virtual {v0, v2}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {v0, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
.line 910
new-instance v0, Lorg/spongycastle/math/ec/ECPoint$Fp;
iget-boolean v4, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->withCompression:Z
invoke-direct {v0, v1, v3, v2, v4}, Lorg/spongycastle/math/ec/ECPoint$Fp;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;Z)V
goto :goto_9
.line 915
:pswitch_68
iget-object v0, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->zs:[Lorg/spongycastle/math/ec/ECFieldElement;
aget-object v3, v0, v13
.line 917
invoke-virtual {v3}, Lorg/spongycastle/math/ec/ECFieldElement;->isOne()Z
move-result v6
.line 920
invoke-virtual {v1}, Lorg/spongycastle/math/ec/ECCurve;->getA()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 921
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v4
if-nez v4, :cond_84
if-nez v6, :cond_84
.line 923
invoke-virtual {v3}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
invoke-virtual {v0, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 925
:cond_84
invoke-virtual {v2}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
invoke-virtual {p0, v4}, Lorg/spongycastle/math/ec/ECPoint$Fp;->three(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
invoke-virtual {v0, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v7
.line 927
if-eqz v6, :cond_e8
move-object v4, v5
.line 928
:goto_93
if-eqz v6, :cond_ee
invoke-virtual {v5}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 929
:goto_99
invoke-virtual {v2, v0}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
.line 930
invoke-virtual {p0, v2}, Lorg/spongycastle/math/ec/ECPoint$Fp;->four(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
.line 931
invoke-virtual {v7}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
invoke-virtual {p0, v3}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
invoke-virtual {v2, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
.line 933
invoke-virtual {p0, v4}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v8
.line 934
invoke-virtual {v5, v8}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
.line 935
invoke-virtual {p0, v0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 936
invoke-virtual {v3, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
invoke-virtual {v3, v7}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
invoke-virtual {p0, v5}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
invoke-virtual {v3, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
.line 937
if-eqz v6, :cond_f3
invoke-virtual {p0, v0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 938
:goto_d3
invoke-virtual {p0, v0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {v0, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
.line 940
new-instance v0, Lorg/spongycastle/math/ec/ECPoint$Fp;
new-array v4, v14, [Lorg/spongycastle/math/ec/ECFieldElement;
aput-object v5, v4, v13
iget-boolean v5, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->withCompression:Z
invoke-direct/range {v0 .. v5}, Lorg/spongycastle/math/ec/ECPoint$Fp;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;[Lorg/spongycastle/math/ec/ECFieldElement;Z)V
goto/16 :goto_9
.line 927
:cond_e8
invoke-virtual {v5, v3}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
move-object v4, v0
goto :goto_93
.line 928
:cond_ee
invoke-virtual {v4, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
goto :goto_99
.line 937
:cond_f3
invoke-virtual {v8}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
goto :goto_d3
.line 945
:pswitch_f8
iget-object v0, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->zs:[Lorg/spongycastle/math/ec/ECFieldElement;
aget-object v4, v0, v13
.line 947
invoke-virtual {v4}, Lorg/spongycastle/math/ec/ECFieldElement;->isOne()Z
move-result v6
.line 949
invoke-virtual {v5}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
.line 950
invoke-virtual {v3}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v7
.line 952
invoke-virtual {v1}, Lorg/spongycastle/math/ec/ECCurve;->getA()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v8
.line 953
invoke-virtual {v8}, Lorg/spongycastle/math/ec/ECFieldElement;->negate()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v9
.line 956
invoke-virtual {v9}, Lorg/spongycastle/math/ec/ECFieldElement;->toBigInteger()Ljava/math/BigInteger;
move-result-object v0
const-wide/16 v10, 0x3
invoke-static {v10, v11}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v10
invoke-virtual {v0, v10}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_175
.line 958
if-eqz v6, :cond_170
move-object v0, v4
.line 959
:goto_123
invoke-virtual {v2, v0}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v8
invoke-virtual {v2, v0}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {v8, v0}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {p0, v0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->three(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 960
invoke-virtual {v3, v2}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
invoke-virtual {p0, v2}, Lorg/spongycastle/math/ec/ECPoint$Fp;->four(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
move-object v3, v2
.line 987
:goto_13c
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
invoke-virtual {p0, v3}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v8
invoke-virtual {v2, v8}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
.line 988
invoke-virtual {v3, v2}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
invoke-virtual {v3, v0}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {p0, v7}, Lorg/spongycastle/math/ec/ECPoint$Fp;->eight(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
invoke-virtual {v0, v3}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
.line 990
invoke-virtual {p0, v5}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 991
if-nez v6, :cond_1bd
.line 993
invoke-virtual {v0, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
move-object v5, v0
.line 999
:goto_163
new-instance v0, Lorg/spongycastle/math/ec/ECPoint$Fp;
new-array v4, v14, [Lorg/spongycastle/math/ec/ECFieldElement;
aput-object v5, v4, v13
iget-boolean v5, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->withCompression:Z
invoke-direct/range {v0 .. v5}, Lorg/spongycastle/math/ec/ECPoint$Fp;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;[Lorg/spongycastle/math/ec/ECFieldElement;Z)V
goto/16 :goto_9
.line 958
:cond_170
invoke-virtual {v4}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
goto :goto_123
.line 964
:cond_175
invoke-virtual {v2}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 965
invoke-virtual {p0, v0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->three(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 966
if-eqz v6, :cond_18d
.line 968
invoke-virtual {v0, v8}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 984
:cond_183
:goto_183
invoke-virtual {v2, v3}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
invoke-virtual {p0, v2}, Lorg/spongycastle/math/ec/ECPoint$Fp;->four(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
move-object v3, v2
goto :goto_13c
.line 970
:cond_18d
invoke-virtual {v8}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v10
if-nez v10, :cond_183
.line 972
invoke-virtual {v4}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v10
.line 973
invoke-virtual {v10}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v10
.line 974
invoke-virtual {v9}, Lorg/spongycastle/math/ec/ECFieldElement;->bitLength()I
move-result v11
invoke-virtual {v8}, Lorg/spongycastle/math/ec/ECFieldElement;->bitLength()I
move-result v12
if-ge v11, v12, :cond_1ae
.line 976
invoke-virtual {v10, v9}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v8
invoke-virtual {v0, v8}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
goto :goto_183
.line 980
:cond_1ae
invoke-virtual {v10, v8}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v8
invoke-virtual {v0, v8}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
goto :goto_183
.line 1004
:pswitch_1b7
invoke-virtual {p0, v14}, Lorg/spongycastle/math/ec/ECPoint$Fp;->twiceJacobianModified(Z)Lorg/spongycastle/math/ec/ECPoint$Fp;
move-result-object v0
goto/16 :goto_9
:cond_1bd
move-object v5, v0
goto :goto_163
.line 901
nop
:pswitch_data_1c0
.packed-switch 0x0
:pswitch_2c
:pswitch_68
:pswitch_f8
:pswitch_24
:pswitch_1b7
.end packed-switch
.end method
.method protected twiceJacobianModified(Z)Lorg/spongycastle/math/ec/ECPoint$Fp;
.registers 11
.prologue
const/4 v8, 0x0
.line 1328
iget-object v0, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->x:Lorg/spongycastle/math/ec/ECFieldElement;
iget-object v2, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->y:Lorg/spongycastle/math/ec/ECFieldElement;
iget-object v1, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->zs:[Lorg/spongycastle/math/ec/ECFieldElement;
aget-object v4, v1, v8
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->getJacobianModifiedW()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
.line 1330
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v1
.line 1331
invoke-virtual {p0, v1}, Lorg/spongycastle/math/ec/ECPoint$Fp;->three(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v1
invoke-virtual {v1, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
.line 1332
invoke-virtual {p0, v2}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v1
.line 1333
invoke-virtual {v1, v2}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
.line 1334
invoke-virtual {v0, v6}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {p0, v0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 1335
invoke-virtual {v3}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
invoke-virtual {p0, v0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v7
invoke-virtual {v2, v7}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
.line 1336
invoke-virtual {v6}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
.line 1337
invoke-virtual {p0, v6}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
.line 1338
invoke-virtual {v0, v2}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {v3, v0}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {v0, v6}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
.line 1339
if-eqz p1, :cond_6f
invoke-virtual {v6, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {p0, v0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
move-object v5, v0
.line 1340
:goto_54
invoke-virtual {v4}, Lorg/spongycastle/math/ec/ECFieldElement;->isOne()Z
move-result v0
if-eqz v0, :cond_72
move-object v6, v1
.line 1342
:goto_5b
new-instance v0, Lorg/spongycastle/math/ec/ECPoint$Fp;
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v1
const/4 v4, 0x2
new-array v4, v4, [Lorg/spongycastle/math/ec/ECFieldElement;
aput-object v6, v4, v8
const/4 v6, 0x1
aput-object v5, v4, v6
iget-boolean v5, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->withCompression:Z
invoke-direct/range {v0 .. v5}, Lorg/spongycastle/math/ec/ECPoint$Fp;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;[Lorg/spongycastle/math/ec/ECFieldElement;Z)V
return-object v0
.line 1339
:cond_6f
const/4 v0, 0x0
move-object v5, v0
goto :goto_54
.line 1340
:cond_72
invoke-virtual {v1, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
move-object v6, v0
goto :goto_5b
.end method
.method public twicePlus(Lorg/spongycastle/math/ec/ECPoint;)Lorg/spongycastle/math/ec/ECPoint;
.registers 11
.prologue
.line 1016
if-ne p0, p1, :cond_7
.line 1018
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->threeTimes()Lorg/spongycastle/math/ec/ECPoint;
move-result-object p1
.line 1086
:cond_6
:goto_6
return-object p1
.line 1020
:cond_7
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->isInfinity()Z
move-result v0
if-nez v0, :cond_6
.line 1024
invoke-virtual {p1}, Lorg/spongycastle/math/ec/ECPoint;->isInfinity()Z
move-result v0
if-eqz v0, :cond_18
.line 1026
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->twice()Lorg/spongycastle/math/ec/ECPoint;
move-result-object p1
goto :goto_6
.line 1029
:cond_18
iget-object v0, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->y:Lorg/spongycastle/math/ec/ECFieldElement;
.line 1030
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v1
if-nez v1, :cond_6
.line 1035
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v1
.line 1036
invoke-virtual {v1}, Lorg/spongycastle/math/ec/ECCurve;->getCoordinateSystem()I
move-result v2
.line 1038
sparse-switch v2, :sswitch_data_cc
.line 1086
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->twice()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v0
invoke-virtual {v0, p1}, Lorg/spongycastle/math/ec/ECPoint;->add(Lorg/spongycastle/math/ec/ECPoint;)Lorg/spongycastle/math/ec/ECPoint;
move-result-object p1
goto :goto_6
.line 1042
:sswitch_34
iget-object v2, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->x:Lorg/spongycastle/math/ec/ECFieldElement;
.line 1043
iget-object v3, p1, Lorg/spongycastle/math/ec/ECPoint;->x:Lorg/spongycastle/math/ec/ECFieldElement;
iget-object v4, p1, Lorg/spongycastle/math/ec/ECPoint;->y:Lorg/spongycastle/math/ec/ECFieldElement;
.line 1045
invoke-virtual {v3, v2}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
invoke-virtual {v4, v0}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
.line 1047
invoke-virtual {v5}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v6
if-eqz v6, :cond_55
.line 1049
invoke-virtual {v4}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v0
if-eqz v0, :cond_53
.line 1052
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->threeTimes()Lorg/spongycastle/math/ec/ECPoint;
move-result-object p1
goto :goto_6
:cond_53
move-object p1, p0
.line 1056
goto :goto_6
.line 1064
:cond_55
invoke-virtual {v5}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
invoke-virtual {v4}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v7
.line 1065
invoke-virtual {p0, v2}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v8
invoke-virtual {v8, v3}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v8
invoke-virtual {v6, v8}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v8
invoke-virtual {v8, v7}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v7
.line 1066
invoke-virtual {v7}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v8
if-eqz v8, :cond_78
.line 1068
invoke-virtual {v1}, Lorg/spongycastle/math/ec/ECCurve;->getInfinity()Lorg/spongycastle/math/ec/ECPoint;
move-result-object p1
goto :goto_6
.line 1071
:cond_78
invoke-virtual {v7, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v8
.line 1072
invoke-virtual {v8}, Lorg/spongycastle/math/ec/ECFieldElement;->invert()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v8
.line 1073
invoke-virtual {v7, v8}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v7
invoke-virtual {v7, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
.line 1074
invoke-virtual {p0, v0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v7
invoke-virtual {v7, v6}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
invoke-virtual {v6, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
invoke-virtual {v5, v8}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
invoke-virtual {v5, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v5
.line 1075
invoke-virtual {v5, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v6
invoke-virtual {v4, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
invoke-virtual {v6, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
invoke-virtual {v4, v3}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v3
.line 1076
invoke-virtual {v2, v3}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
invoke-virtual {v2, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
invoke-virtual {v2, v0}, Lorg/spongycastle/math/ec/ECFieldElement;->subtract(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 1078
new-instance p1, Lorg/spongycastle/math/ec/ECPoint$Fp;
iget-boolean v2, p0, Lorg/spongycastle/math/ec/ECPoint$Fp;->withCompression:Z
invoke-direct {p1, v1, v3, v0, v2}, Lorg/spongycastle/math/ec/ECPoint$Fp;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;Z)V
goto/16 :goto_6
.line 1082
:sswitch_c1
const/4 v0, 0x0
invoke-virtual {p0, v0}, Lorg/spongycastle/math/ec/ECPoint$Fp;->twiceJacobianModified(Z)Lorg/spongycastle/math/ec/ECPoint$Fp;
move-result-object v0
invoke-virtual {v0, p1}, Lorg/spongycastle/math/ec/ECPoint$Fp;->add(Lorg/spongycastle/math/ec/ECPoint;)Lorg/spongycastle/math/ec/ECPoint;
move-result-object p1
goto/16 :goto_6
.line 1038
:sswitch_data_cc
.sparse-switch
0x0 -> :sswitch_34
0x4 -> :sswitch_c1
.end sparse-switch
.end method
.method protected two(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
.registers 3
.prologue
.line 1243
invoke-virtual {p1, p1}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
return-object v0
.end method