ECPoint$AbstractFp.smali
.class public abstract Lorg/spongycastle/math/ec/ECPoint$AbstractFp;
.super Lorg/spongycastle/math/ec/ECPoint;
.source "ECPoint.java"
# direct methods
.method protected constructor <init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;)V
.registers 4
.prologue
.line 532
invoke-direct {p0, p1, p2, p3}, Lorg/spongycastle/math/ec/ECPoint;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;)V
.line 533
return-void
.end method
.method protected constructor <init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;[Lorg/spongycastle/math/ec/ECFieldElement;)V
.registers 5
.prologue
.line 537
invoke-direct {p0, p1, p2, p3, p4}, Lorg/spongycastle/math/ec/ECPoint;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECFieldElement;Lorg/spongycastle/math/ec/ECFieldElement;[Lorg/spongycastle/math/ec/ECFieldElement;)V
.line 538
return-void
.end method
# virtual methods
.method protected getCompressionYTilde()Z
.registers 2
.prologue
.line 542
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$AbstractFp;->getAffineYCoord()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->testBitZero()Z
move-result v0
return v0
.end method
.method protected satisfiesCurveEquation()Z
.registers 8
.prologue
const/4 v5, 0x0
.line 547
iget-object v3, p0, Lorg/spongycastle/math/ec/ECPoint$AbstractFp;->x:Lorg/spongycastle/math/ec/ECFieldElement;
iget-object v2, p0, Lorg/spongycastle/math/ec/ECPoint$AbstractFp;->y:Lorg/spongycastle/math/ec/ECFieldElement;
iget-object v0, p0, Lorg/spongycastle/math/ec/ECPoint$AbstractFp;->curve:Lorg/spongycastle/math/ec/ECCurve;
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECCurve;->getA()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v1
iget-object v0, p0, Lorg/spongycastle/math/ec/ECPoint$AbstractFp;->curve:Lorg/spongycastle/math/ec/ECCurve;
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECCurve;->getB()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 548
invoke-virtual {v2}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
.line 550
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$AbstractFp;->getCurveCoordinateSystem()I
move-result v4
packed-switch v4, :pswitch_data_76
.line 580
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 556
:pswitch_24
iget-object v4, p0, Lorg/spongycastle/math/ec/ECPoint$AbstractFp;->zs:[Lorg/spongycastle/math/ec/ECFieldElement;
aget-object v4, v4, v5
.line 557
invoke-virtual {v4}, Lorg/spongycastle/math/ec/ECFieldElement;->isOne()Z
move-result v5
if-nez v5, :cond_42
.line 559
invoke-virtual {v4}, Lorg/spongycastle/math/ec/ECFieldElement;->square()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 v6
.line 560
invoke-virtual {v2, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
.line 561
invoke-virtual {v1, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v1
.line 562
invoke-virtual {v0, v6}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 583
:cond_42
:goto_42
:pswitch_42
invoke-virtual {v3}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
invoke-virtual {v4, v1}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v1
invoke-virtual {v1, v3}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v1
invoke-virtual {v1, v0}, Lorg/spongycastle/math/ec/ECFieldElement;->add(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
.line 584
invoke-virtual {v2, v0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v0
return v0
.line 570
:pswitch_57
iget-object v4, p0, Lorg/spongycastle/math/ec/ECPoint$AbstractFp;->zs:[Lorg/spongycastle/math/ec/ECFieldElement;
aget-object v4, v4, v5
.line 571
invoke-virtual {v4}, Lorg/spongycastle/math/ec/ECFieldElement;->isOne()Z
move-result v5
if-nez v5, :cond_42
.line 573
invoke-virtual {v4}, Lorg/spongycastle/math/ec/ECFieldElement;->square()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v4
invoke-virtual {v4}, Lorg/spongycastle/math/ec/ECFieldElement;->square()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
.line 574
invoke-virtual {v1, v5}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v1
.line 575
invoke-virtual {v0, v4}, Lorg/spongycastle/math/ec/ECFieldElement;->multiply(Lorg/spongycastle/math/ec/ECFieldElement;)Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
goto :goto_42
.line 550
:pswitch_data_76
.packed-switch 0x0
:pswitch_42
:pswitch_24
:pswitch_57
:pswitch_57
:pswitch_57
.end packed-switch
.end method
.method public subtract(Lorg/spongycastle/math/ec/ECPoint;)Lorg/spongycastle/math/ec/ECPoint;
.registers 3
.prologue
.line 589
invoke-virtual {p1}, Lorg/spongycastle/math/ec/ECPoint;->isInfinity()Z
move-result v0
if-eqz v0, :cond_7
.line 595
:goto_6
return-object p0
:cond_7
invoke-virtual {p1}, Lorg/spongycastle/math/ec/ECPoint;->negate()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v0
invoke-virtual {p0, v0}, Lorg/spongycastle/math/ec/ECPoint$AbstractFp;->add(Lorg/spongycastle/math/ec/ECPoint;)Lorg/spongycastle/math/ec/ECPoint;
move-result-object p0
goto :goto_6
.end method