Tnaf.smali
.class Lorg/spongycastle/math/ec/Tnaf;
.super Ljava/lang/Object;
.source "Tnaf.java"
# static fields
.field private static final MINUS_ONE:Ljava/math/BigInteger;
.field private static final MINUS_THREE:Ljava/math/BigInteger;
.field private static final MINUS_TWO:Ljava/math/BigInteger;
.field public static final POW_2_WIDTH:B = 0x10t
.field public static final WIDTH:B = 0x4t
.field public static final alpha0:[Lorg/spongycastle/math/ec/ZTauElement;
.field public static final alpha0Tnaf:[[B
.field public static final alpha1:[Lorg/spongycastle/math/ec/ZTauElement;
.field public static final alpha1Tnaf:[[B
# direct methods
.method static constructor <clinit>()V
.registers 10
.prologue
const/4 v9, 0x4
const/4 v8, 0x0
const/4 v7, 0x3
const/4 v6, 0x1
const/4 v5, 0x0
.line 14
sget-object v0, Lorg/spongycastle/math/ec/ECConstants;->ONE:Ljava/math/BigInteger;
invoke-virtual {v0}, Ljava/math/BigInteger;->negate()Ljava/math/BigInteger;
move-result-object v0
sput-object v0, Lorg/spongycastle/math/ec/Tnaf;->MINUS_ONE:Ljava/math/BigInteger;
.line 15
sget-object v0, Lorg/spongycastle/math/ec/ECConstants;->TWO:Ljava/math/BigInteger;
invoke-virtual {v0}, Ljava/math/BigInteger;->negate()Ljava/math/BigInteger;
move-result-object v0
sput-object v0, Lorg/spongycastle/math/ec/Tnaf;->MINUS_TWO:Ljava/math/BigInteger;
.line 16
sget-object v0, Lorg/spongycastle/math/ec/ECConstants;->THREE:Ljava/math/BigInteger;
invoke-virtual {v0}, Ljava/math/BigInteger;->negate()Ljava/math/BigInteger;
move-result-object v0
sput-object v0, Lorg/spongycastle/math/ec/Tnaf;->MINUS_THREE:Ljava/math/BigInteger;
.line 39
const/16 v0, 0x9
new-array v0, v0, [Lorg/spongycastle/math/ec/ZTauElement;
aput-object v5, v0, v8
new-instance v1, Lorg/spongycastle/math/ec/ZTauElement;
sget-object v2, Lorg/spongycastle/math/ec/ECConstants;->ONE:Ljava/math/BigInteger;
sget-object v3, Lorg/spongycastle/math/ec/ECConstants;->ZERO:Ljava/math/BigInteger;
invoke-direct {v1, v2, v3}, Lorg/spongycastle/math/ec/ZTauElement;-><init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
aput-object v1, v0, v6
const/4 v1, 0x2
aput-object v5, v0, v1
new-instance v1, Lorg/spongycastle/math/ec/ZTauElement;
sget-object v2, Lorg/spongycastle/math/ec/Tnaf;->MINUS_THREE:Ljava/math/BigInteger;
sget-object v3, Lorg/spongycastle/math/ec/Tnaf;->MINUS_ONE:Ljava/math/BigInteger;
invoke-direct {v1, v2, v3}, Lorg/spongycastle/math/ec/ZTauElement;-><init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
aput-object v1, v0, v7
aput-object v5, v0, v9
const/4 v1, 0x5
new-instance v2, Lorg/spongycastle/math/ec/ZTauElement;
sget-object v3, Lorg/spongycastle/math/ec/Tnaf;->MINUS_ONE:Ljava/math/BigInteger;
sget-object v4, Lorg/spongycastle/math/ec/Tnaf;->MINUS_ONE:Ljava/math/BigInteger;
invoke-direct {v2, v3, v4}, Lorg/spongycastle/math/ec/ZTauElement;-><init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
aput-object v2, v0, v1
const/4 v1, 0x6
aput-object v5, v0, v1
const/4 v1, 0x7
new-instance v2, Lorg/spongycastle/math/ec/ZTauElement;
sget-object v3, Lorg/spongycastle/math/ec/ECConstants;->ONE:Ljava/math/BigInteger;
sget-object v4, Lorg/spongycastle/math/ec/Tnaf;->MINUS_ONE:Ljava/math/BigInteger;
invoke-direct {v2, v3, v4}, Lorg/spongycastle/math/ec/ZTauElement;-><init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
aput-object v2, v0, v1
const/16 v1, 0x8
aput-object v5, v0, v1
sput-object v0, Lorg/spongycastle/math/ec/Tnaf;->alpha0:[Lorg/spongycastle/math/ec/ZTauElement;
.line 51
const/16 v0, 0x8
new-array v0, v0, [[B
aput-object v5, v0, v8
new-array v1, v6, [B
aput-byte v6, v1, v8
aput-object v1, v0, v6
const/4 v1, 0x2
aput-object v5, v0, v1
new-array v1, v7, [B
fill-array-data v1, :array_fc
aput-object v1, v0, v7
aput-object v5, v0, v9
const/4 v1, 0x5
new-array v2, v7, [B
fill-array-data v2, :array_102
aput-object v2, v0, v1
const/4 v1, 0x6
aput-object v5, v0, v1
const/4 v1, 0x7
new-array v2, v9, [B
fill-array-data v2, :array_108
aput-object v2, v0, v1
sput-object v0, Lorg/spongycastle/math/ec/Tnaf;->alpha0Tnaf:[[B
.line 59
const/16 v0, 0x9
new-array v0, v0, [Lorg/spongycastle/math/ec/ZTauElement;
aput-object v5, v0, v8
new-instance v1, Lorg/spongycastle/math/ec/ZTauElement;
sget-object v2, Lorg/spongycastle/math/ec/ECConstants;->ONE:Ljava/math/BigInteger;
sget-object v3, Lorg/spongycastle/math/ec/ECConstants;->ZERO:Ljava/math/BigInteger;
invoke-direct {v1, v2, v3}, Lorg/spongycastle/math/ec/ZTauElement;-><init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
aput-object v1, v0, v6
const/4 v1, 0x2
aput-object v5, v0, v1
new-instance v1, Lorg/spongycastle/math/ec/ZTauElement;
sget-object v2, Lorg/spongycastle/math/ec/Tnaf;->MINUS_THREE:Ljava/math/BigInteger;
sget-object v3, Lorg/spongycastle/math/ec/ECConstants;->ONE:Ljava/math/BigInteger;
invoke-direct {v1, v2, v3}, Lorg/spongycastle/math/ec/ZTauElement;-><init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
aput-object v1, v0, v7
aput-object v5, v0, v9
const/4 v1, 0x5
new-instance v2, Lorg/spongycastle/math/ec/ZTauElement;
sget-object v3, Lorg/spongycastle/math/ec/Tnaf;->MINUS_ONE:Ljava/math/BigInteger;
sget-object v4, Lorg/spongycastle/math/ec/ECConstants;->ONE:Ljava/math/BigInteger;
invoke-direct {v2, v3, v4}, Lorg/spongycastle/math/ec/ZTauElement;-><init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
aput-object v2, v0, v1
const/4 v1, 0x6
aput-object v5, v0, v1
const/4 v1, 0x7
new-instance v2, Lorg/spongycastle/math/ec/ZTauElement;
sget-object v3, Lorg/spongycastle/math/ec/ECConstants;->ONE:Ljava/math/BigInteger;
sget-object v4, Lorg/spongycastle/math/ec/ECConstants;->ONE:Ljava/math/BigInteger;
invoke-direct {v2, v3, v4}, Lorg/spongycastle/math/ec/ZTauElement;-><init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
aput-object v2, v0, v1
const/16 v1, 0x8
aput-object v5, v0, v1
sput-object v0, Lorg/spongycastle/math/ec/Tnaf;->alpha1:[Lorg/spongycastle/math/ec/ZTauElement;
.line 70
const/16 v0, 0x8
new-array v0, v0, [[B
aput-object v5, v0, v8
new-array v1, v6, [B
aput-byte v6, v1, v8
aput-object v1, v0, v6
const/4 v1, 0x2
aput-object v5, v0, v1
new-array v1, v7, [B
fill-array-data v1, :array_10e
aput-object v1, v0, v7
aput-object v5, v0, v9
const/4 v1, 0x5
new-array v2, v7, [B
fill-array-data v2, :array_114
aput-object v2, v0, v1
const/4 v1, 0x6
aput-object v5, v0, v1
const/4 v1, 0x7
new-array v2, v9, [B
fill-array-data v2, :array_11a
aput-object v2, v0, v1
sput-object v0, Lorg/spongycastle/math/ec/Tnaf;->alpha1Tnaf:[[B
return-void
.line 51
:array_fc
.array-data 1
-0x1t
0x0t
0x1t
.end array-data
:array_102
.array-data 1
0x1t
0x0t
0x1t
.end array-data
:array_108
.array-data 1
-0x1t
0x0t
0x0t
0x1t
.end array-data
.line 70
:array_10e
.array-data 1
-0x1t
0x0t
0x1t
.end array-data
:array_114
.array-data 1
0x1t
0x0t
0x1t
.end array-data
:array_11a
.array-data 1
-0x1t
0x0t
0x0t
-0x1t
.end array-data
.end method
.method constructor <init>()V
.registers 1
.prologue
.line 12
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static approximateDivisionByN(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;BII)Lorg/spongycastle/math/ec/SimpleBigDecimal;
.registers 9
.prologue
.line 286
add-int/lit8 v0, p4, 0x5
div-int/lit8 v0, v0, 0x2
add-int v1, v0, p5
.line 287
sub-int v0, p4, v1
add-int/lit8 v0, v0, -0x2
add-int/2addr v0, p3
invoke-virtual {p0, v0}, Ljava/math/BigInteger;->shiftRight(I)Ljava/math/BigInteger;
move-result-object v0
.line 289
invoke-virtual {p1, v0}, Ljava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
.line 291
invoke-virtual {v0, p4}, Ljava/math/BigInteger;->shiftRight(I)Ljava/math/BigInteger;
move-result-object v2
.line 293
invoke-virtual {p2, v2}, Ljava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v2
.line 295
invoke-virtual {v0, v2}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v2
.line 296
sub-int v0, v1, p5
invoke-virtual {v2, v0}, Ljava/math/BigInteger;->shiftRight(I)Ljava/math/BigInteger;
move-result-object v0
.line 297
sub-int/2addr v1, p5
add-int/lit8 v1, v1, -0x1
invoke-virtual {v2, v1}, Ljava/math/BigInteger;->testBit(I)Z
move-result v1
if-eqz v1, :cond_34
.line 300
sget-object v1, Lorg/spongycastle/math/ec/ECConstants;->ONE:Ljava/math/BigInteger;
invoke-virtual {v0, v1}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
.line 303
:cond_34
new-instance v1, Lorg/spongycastle/math/ec/SimpleBigDecimal;
invoke-direct {v1, v0, p5}, Lorg/spongycastle/math/ec/SimpleBigDecimal;-><init>(Ljava/math/BigInteger;I)V
return-object v1
.end method
.method public static getLucas(BIZ)[Ljava/math/BigInteger;
.registers 10
.prologue
const/4 v3, 0x1
.line 449
if-eq p0, v3, :cond_e
const/4 v0, -0x1
if-eq p0, v0, :cond_e
.line 451
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "mu must be 1 or -1"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 458
:cond_e
if-eqz p2, :cond_2e
.line 460
sget-object v1, Lorg/spongycastle/math/ec/ECConstants;->TWO:Ljava/math/BigInteger;
.line 461
int-to-long v4, p0
invoke-static {v4, v5}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v0
:goto_17
move v2, v3
move-object v4, v1
move-object v1, v0
.line 469
:goto_1a
if-ge v2, p1, :cond_38
.line 473
if-ne p0, v3, :cond_33
move-object v0, v1
.line 483
:goto_1f
invoke-virtual {v4, v3}, Ljava/math/BigInteger;->shiftLeft(I)Ljava/math/BigInteger;
move-result-object v4
invoke-virtual {v0, v4}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v4
.line 469
add-int/lit8 v0, v2, 0x1
move v2, v0
move-object v6, v4
move-object v4, v1
move-object v1, v6
goto :goto_1a
.line 465
:cond_2e
sget-object v1, Lorg/spongycastle/math/ec/ECConstants;->ZERO:Ljava/math/BigInteger;
.line 466
sget-object v0, Lorg/spongycastle/math/ec/ECConstants;->ONE:Ljava/math/BigInteger;
goto :goto_17
.line 480
:cond_33
invoke-virtual {v1}, Ljava/math/BigInteger;->negate()Ljava/math/BigInteger;
move-result-object v0
goto :goto_1f
.line 490
:cond_38
const/4 v0, 0x2
new-array v0, v0, [Ljava/math/BigInteger;
const/4 v2, 0x0
aput-object v4, v0, v2
aput-object v1, v0, v3
.line 491
return-object v0
.end method
.method public static getMu(I)B
.registers 2
.prologue
.line 430
if-nez p0, :cond_5
const/4 v0, -0x1
:goto_3
int-to-byte v0, v0
return v0
:cond_5
const/4 v0, 0x1
goto :goto_3
.end method
.method public static getMu(Lorg/spongycastle/math/ec/ECCurve$AbstractF2m;)B
.registers 3
.prologue
.line 410
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECCurve$AbstractF2m;->isKoblitz()Z
move-result v0
if-nez v0, :cond_e
.line 412
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "No Koblitz curve (ABC), TNAF multiplication not possible"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 415
:cond_e
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECCurve$AbstractF2m;->getA()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v0
if-eqz v0, :cond_1a
.line 417
const/4 v0, -0x1
.line 420
:goto_19
return v0
:cond_1a
const/4 v0, 0x1
goto :goto_19
.end method
.method public static getMu(Lorg/spongycastle/math/ec/ECFieldElement;)B
.registers 2
.prologue
.line 425
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECFieldElement;->isZero()Z
move-result v0
if-eqz v0, :cond_9
const/4 v0, -0x1
:goto_7
int-to-byte v0, v0
return v0
:cond_9
const/4 v0, 0x1
goto :goto_7
.end method
.method public static getPreComp(Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;B)[Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;
.registers 8
.prologue
.line 834
if-nez p1, :cond_1f
sget-object v0, Lorg/spongycastle/math/ec/Tnaf;->alpha0Tnaf:[[B
.line 836
:goto_4
array-length v1, v0
add-int/lit8 v1, v1, 0x1
ushr-int/lit8 v1, v1, 0x1
new-array v2, v1, [Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;
.line 837
const/4 v1, 0x0
aput-object p0, v2, v1
.line 839
array-length v3, v0
.line 840
const/4 v1, 0x3
:goto_10
if-ge v1, v3, :cond_22
.line 842
ushr-int/lit8 v4, v1, 0x1
aget-object v5, v0, v1
invoke-static {p0, v5}, Lorg/spongycastle/math/ec/Tnaf;->multiplyFromTnaf(Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;[B)Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;
move-result-object v5
aput-object v5, v2, v4
.line 840
add-int/lit8 v1, v1, 0x2
goto :goto_10
.line 834
:cond_1f
sget-object v0, Lorg/spongycastle/math/ec/Tnaf;->alpha1Tnaf:[[B
goto :goto_4
.line 845
:cond_22
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v0
invoke-virtual {v0, v2}, Lorg/spongycastle/math/ec/ECCurve;->normalizeAll([Lorg/spongycastle/math/ec/ECPoint;)V
.line 847
return-object v2
.end method
.method protected static getShiftsForCofactor(Ljava/math/BigInteger;)I
.registers 3
.prologue
.line 583
if-eqz p0, :cond_16
.line 585
sget-object v0, Lorg/spongycastle/math/ec/ECConstants;->TWO:Ljava/math/BigInteger;
invoke-virtual {p0, v0}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_c
.line 587
const/4 v0, 0x1
.line 591
:goto_b
return v0
.line 589
:cond_c
sget-object v0, Lorg/spongycastle/math/ec/ECConstants;->FOUR:Ljava/math/BigInteger;
invoke-virtual {p0, v0}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_16
.line 591
const/4 v0, 0x2
goto :goto_b
.line 595
:cond_16
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "h (Cofactor) must be 2 or 4"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static getSi(IILjava/math/BigInteger;)[Ljava/math/BigInteger;
.registers 9
.prologue
const/4 v5, 0x1
const/4 v4, 0x0
.line 565
invoke-static {p1}, Lorg/spongycastle/math/ec/Tnaf;->getMu(I)B
move-result v0
.line 566
invoke-static {p2}, Lorg/spongycastle/math/ec/Tnaf;->getShiftsForCofactor(Ljava/math/BigInteger;)I
move-result v1
.line 567
add-int/lit8 v2, p0, 0x3
sub-int/2addr v2, p1
.line 568
invoke-static {v0, v2, v4}, Lorg/spongycastle/math/ec/Tnaf;->getLucas(BIZ)[Ljava/math/BigInteger;
move-result-object v2
.line 569
if-ne v0, v5, :cond_23
.line 571
aget-object v0, v2, v4
invoke-virtual {v0}, Ljava/math/BigInteger;->negate()Ljava/math/BigInteger;
move-result-object v0
aput-object v0, v2, v4
.line 572
aget-object v0, v2, v5
invoke-virtual {v0}, Ljava/math/BigInteger;->negate()Ljava/math/BigInteger;
move-result-object v0
aput-object v0, v2, v5
.line 575
:cond_23
sget-object v0, Lorg/spongycastle/math/ec/ECConstants;->ONE:Ljava/math/BigInteger;
aget-object v3, v2, v5
invoke-virtual {v0, v3}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {v0, v1}, Ljava/math/BigInteger;->shiftRight(I)Ljava/math/BigInteger;
move-result-object v0
.line 576
sget-object v3, Lorg/spongycastle/math/ec/ECConstants;->ONE:Ljava/math/BigInteger;
aget-object v2, v2, v4
invoke-virtual {v3, v2}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v2
invoke-virtual {v2, v1}, Ljava/math/BigInteger;->shiftRight(I)Ljava/math/BigInteger;
move-result-object v1
invoke-virtual {v1}, Ljava/math/BigInteger;->negate()Ljava/math/BigInteger;
move-result-object v1
.line 578
const/4 v2, 0x2
new-array v2, v2, [Ljava/math/BigInteger;
aput-object v0, v2, v4
aput-object v1, v2, v5
return-object v2
.end method
.method public static getSi(Lorg/spongycastle/math/ec/ECCurve$AbstractF2m;)[Ljava/math/BigInteger;
.registers 7
.prologue
const/4 v5, 0x1
const/4 v4, 0x0
.line 540
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECCurve$AbstractF2m;->isKoblitz()Z
move-result v0
if-nez v0, :cond_10
.line 542
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "si is defined for Koblitz curves only"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 545
:cond_10
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECCurve$AbstractF2m;->getFieldSize()I
move-result v0
.line 546
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECCurve$AbstractF2m;->getA()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v1
invoke-virtual {v1}, Lorg/spongycastle/math/ec/ECFieldElement;->toBigInteger()Ljava/math/BigInteger;
move-result-object v1
invoke-virtual {v1}, Ljava/math/BigInteger;->intValue()I
move-result v1
.line 547
invoke-static {v1}, Lorg/spongycastle/math/ec/Tnaf;->getMu(I)B
move-result v2
.line 548
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECCurve$AbstractF2m;->getCofactor()Ljava/math/BigInteger;
move-result-object v3
invoke-static {v3}, Lorg/spongycastle/math/ec/Tnaf;->getShiftsForCofactor(Ljava/math/BigInteger;)I
move-result v3
.line 549
add-int/lit8 v0, v0, 0x3
sub-int/2addr v0, v1
.line 550
invoke-static {v2, v0, v4}, Lorg/spongycastle/math/ec/Tnaf;->getLucas(BIZ)[Ljava/math/BigInteger;
move-result-object v0
.line 551
if-ne v2, v5, :cond_45
.line 553
aget-object v1, v0, v4
invoke-virtual {v1}, Ljava/math/BigInteger;->negate()Ljava/math/BigInteger;
move-result-object v1
aput-object v1, v0, v4
.line 554
aget-object v1, v0, v5
invoke-virtual {v1}, Ljava/math/BigInteger;->negate()Ljava/math/BigInteger;
move-result-object v1
aput-object v1, v0, v5
.line 557
:cond_45
sget-object v1, Lorg/spongycastle/math/ec/ECConstants;->ONE:Ljava/math/BigInteger;
aget-object v2, v0, v5
invoke-virtual {v1, v2}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v1
invoke-virtual {v1, v3}, Ljava/math/BigInteger;->shiftRight(I)Ljava/math/BigInteger;
move-result-object v1
.line 558
sget-object v2, Lorg/spongycastle/math/ec/ECConstants;->ONE:Ljava/math/BigInteger;
aget-object v0, v0, v4
invoke-virtual {v2, v0}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {v0, v3}, Ljava/math/BigInteger;->shiftRight(I)Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {v0}, Ljava/math/BigInteger;->negate()Ljava/math/BigInteger;
move-result-object v0
.line 560
const/4 v2, 0x2
new-array v2, v2, [Ljava/math/BigInteger;
aput-object v1, v2, v4
aput-object v0, v2, v5
return-object v2
.end method
.method public static getTw(BI)Ljava/math/BigInteger;
.registers 7
.prologue
const/4 v2, 0x1
const/4 v4, 0x0
.line 504
const/4 v0, 0x4
if-ne p1, v0, :cond_15
.line 506
if-ne p0, v2, :cond_e
.line 508
const-wide/16 v0, 0x6
invoke-static {v0, v1}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v0
.line 526
:goto_d
return-object v0
.line 513
:cond_e
const-wide/16 v0, 0xa
invoke-static {v0, v1}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v0
goto :goto_d
.line 519
:cond_15
invoke-static {p0, p1, v4}, Lorg/spongycastle/math/ec/Tnaf;->getLucas(BIZ)[Ljava/math/BigInteger;
move-result-object v0
.line 520
sget-object v1, Lorg/spongycastle/math/ec/ECConstants;->ZERO:Ljava/math/BigInteger;
invoke-virtual {v1, p1}, Ljava/math/BigInteger;->setBit(I)Ljava/math/BigInteger;
move-result-object v1
.line 521
aget-object v2, v0, v2
invoke-virtual {v2, v1}, Ljava/math/BigInteger;->modInverse(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v2
.line 523
sget-object v3, Lorg/spongycastle/math/ec/ECConstants;->TWO:Ljava/math/BigInteger;
aget-object v0, v0, v4
invoke-virtual {v3, v0}, Ljava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {v0, v2}, Ljava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {v0, v1}, Ljava/math/BigInteger;->mod(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
goto :goto_d
.end method
.method public static multiplyFromTnaf(Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;[B)Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;
.registers 8
.prologue
const/4 v2, 0x0
.line 697
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v0
.line 698
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECCurve;->getInfinity()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v0
check-cast v0, Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;
.line 699
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;->negate()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v1
check-cast v1, Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;
.line 701
array-length v3, p1
add-int/lit8 v3, v3, -0x1
move v4, v3
move-object v3, v0
move v0, v2
:goto_17
if-ltz v4, :cond_33
.line 703
add-int/lit8 v0, v0, 0x1
.line 704
aget-byte v5, p1, v4
.line 705
if-eqz v5, :cond_2e
.line 707
invoke-virtual {v3, v0}, Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;->tauPow(I)Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;
move-result-object v3
.line 710
if-lez v5, :cond_31
move-object v0, p0
.line 711
:goto_26
invoke-virtual {v3, v0}, Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;->add(Lorg/spongycastle/math/ec/ECPoint;)Lorg/spongycastle/math/ec/ECPoint;
move-result-object v0
check-cast v0, Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;
move-object v3, v0
move v0, v2
.line 701
:cond_2e
add-int/lit8 v4, v4, -0x1
goto :goto_17
:cond_31
move-object v0, v1
.line 710
goto :goto_26
.line 714
:cond_33
if-lez v0, :cond_39
.line 716
invoke-virtual {v3, v0}, Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;->tauPow(I)Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;
move-result-object v3
.line 718
:cond_39
return-object v3
.end method
.method public static multiplyRTnaf(Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;Ljava/math/BigInteger;)Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;
.registers 8
.prologue
.line 656
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v0
check-cast v0, Lorg/spongycastle/math/ec/ECCurve$AbstractF2m;
.line 657
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECCurve$AbstractF2m;->getFieldSize()I
move-result v1
.line 658
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECCurve$AbstractF2m;->getA()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v2
invoke-virtual {v2}, Lorg/spongycastle/math/ec/ECFieldElement;->toBigInteger()Ljava/math/BigInteger;
move-result-object v2
invoke-virtual {v2}, Ljava/math/BigInteger;->intValue()I
move-result v2
.line 659
invoke-static {v2}, Lorg/spongycastle/math/ec/Tnaf;->getMu(I)B
move-result v4
.line 660
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECCurve$AbstractF2m;->getSi()[Ljava/math/BigInteger;
move-result-object v3
.line 661
int-to-byte v2, v2
const/16 v5, 0xa
move-object v0, p1
invoke-static/range {v0 .. v5}, Lorg/spongycastle/math/ec/Tnaf;->partModReduction(Ljava/math/BigInteger;IB[Ljava/math/BigInteger;BB)Lorg/spongycastle/math/ec/ZTauElement;
move-result-object v0
.line 663
invoke-static {p0, v0}, Lorg/spongycastle/math/ec/Tnaf;->multiplyTnaf(Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;Lorg/spongycastle/math/ec/ZTauElement;)Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;
move-result-object v0
return-object v0
.end method
.method public static multiplyTnaf(Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;Lorg/spongycastle/math/ec/ZTauElement;)Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;
.registers 3
.prologue
.line 677
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v0
check-cast v0, Lorg/spongycastle/math/ec/ECCurve$AbstractF2m;
.line 678
invoke-virtual {v0}, Lorg/spongycastle/math/ec/ECCurve$AbstractF2m;->getA()Lorg/spongycastle/math/ec/ECFieldElement;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/math/ec/Tnaf;->getMu(Lorg/spongycastle/math/ec/ECFieldElement;)B
move-result v0
.line 679
invoke-static {v0, p1}, Lorg/spongycastle/math/ec/Tnaf;->tauAdicNaf(BLorg/spongycastle/math/ec/ZTauElement;)[B
move-result-object v0
.line 681
invoke-static {p0, v0}, Lorg/spongycastle/math/ec/Tnaf;->multiplyFromTnaf(Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;[B)Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;
move-result-object v0
.line 683
return-object v0
.end method
.method public static norm(BLorg/spongycastle/math/ec/ZTauElement;)Ljava/math/BigInteger;
.registers 7
.prologue
const/4 v4, 0x1
.line 87
iget-object v0, p1, Lorg/spongycastle/math/ec/ZTauElement;->u:Ljava/math/BigInteger;
iget-object v1, p1, Lorg/spongycastle/math/ec/ZTauElement;->u:Ljava/math/BigInteger;
invoke-virtual {v0, v1}, Ljava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
.line 90
iget-object v1, p1, Lorg/spongycastle/math/ec/ZTauElement;->u:Ljava/math/BigInteger;
iget-object v2, p1, Lorg/spongycastle/math/ec/ZTauElement;->v:Ljava/math/BigInteger;
invoke-virtual {v1, v2}, Ljava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v1
.line 93
iget-object v2, p1, Lorg/spongycastle/math/ec/ZTauElement;->v:Ljava/math/BigInteger;
iget-object v3, p1, Lorg/spongycastle/math/ec/ZTauElement;->v:Ljava/math/BigInteger;
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v2
invoke-virtual {v2, v4}, Ljava/math/BigInteger;->shiftLeft(I)Ljava/math/BigInteger;
move-result-object v2
.line 95
if-ne p0, v4, :cond_28
.line 97
invoke-virtual {v0, v1}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {v0, v2}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
.line 108
:goto_27
return-object v0
.line 99
:cond_28
const/4 v3, -0x1
if-ne p0, v3, :cond_34
.line 101
invoke-virtual {v0, v1}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {v0, v2}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
goto :goto_27
.line 105
:cond_34
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "mu must be 1 or -1"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static norm(BLorg/spongycastle/math/ec/SimpleBigDecimal;Lorg/spongycastle/math/ec/SimpleBigDecimal;)Lorg/spongycastle/math/ec/SimpleBigDecimal;
.registers 7
.prologue
const/4 v3, 0x1
.line 129
invoke-virtual {p1, p1}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->multiply(Lorg/spongycastle/math/ec/SimpleBigDecimal;)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v0
.line 132
invoke-virtual {p1, p2}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->multiply(Lorg/spongycastle/math/ec/SimpleBigDecimal;)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v1
.line 135
invoke-virtual {p2, p2}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->multiply(Lorg/spongycastle/math/ec/SimpleBigDecimal;)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v2
invoke-virtual {v2, v3}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->shiftLeft(I)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v2
.line 137
if-ne p0, v3, :cond_1c
.line 139
invoke-virtual {v0, v1}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->add(Lorg/spongycastle/math/ec/SimpleBigDecimal;)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v0
invoke-virtual {v0, v2}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->add(Lorg/spongycastle/math/ec/SimpleBigDecimal;)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v0
.line 150
:goto_1b
return-object v0
.line 141
:cond_1c
const/4 v3, -0x1
if-ne p0, v3, :cond_28
.line 143
invoke-virtual {v0, v1}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->subtract(Lorg/spongycastle/math/ec/SimpleBigDecimal;)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v0
invoke-virtual {v0, v2}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->add(Lorg/spongycastle/math/ec/SimpleBigDecimal;)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v0
goto :goto_1b
.line 147
:cond_28
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "mu must be 1 or -1"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static partModReduction(Ljava/math/BigInteger;IB[Ljava/math/BigInteger;BB)Lorg/spongycastle/math/ec/ZTauElement;
.registers 16
.prologue
const/4 v9, 0x0
const/4 v8, 0x1
.line 616
if-ne p4, v8, :cond_65
.line 618
aget-object v0, p3, v9
aget-object v1, p3, v8
invoke-virtual {v0, v1}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
move-object v6, v0
.line 625
:goto_d
invoke-static {p4, p1, v8}, Lorg/spongycastle/math/ec/Tnaf;->getLucas(BIZ)[Ljava/math/BigInteger;
move-result-object v0
.line 626
aget-object v2, v0, v8
.line 628
aget-object v1, p3, v9
move-object v0, p0
move v3, p2
move v4, p1
move v5, p5
invoke-static/range {v0 .. v5}, Lorg/spongycastle/math/ec/Tnaf;->approximateDivisionByN(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;BII)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v7
.line 631
aget-object v1, p3, v8
move-object v0, p0
move v3, p2
move v4, p1
move v5, p5
invoke-static/range {v0 .. v5}, Lorg/spongycastle/math/ec/Tnaf;->approximateDivisionByN(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;BII)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v0
.line 634
invoke-static {v7, v0, p4}, Lorg/spongycastle/math/ec/Tnaf;->round(Lorg/spongycastle/math/ec/SimpleBigDecimal;Lorg/spongycastle/math/ec/SimpleBigDecimal;B)Lorg/spongycastle/math/ec/ZTauElement;
move-result-object v0
.line 637
iget-object v1, v0, Lorg/spongycastle/math/ec/ZTauElement;->u:Ljava/math/BigInteger;
invoke-virtual {v6, v1}, Ljava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v1
invoke-virtual {p0, v1}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v1
const-wide/16 v2, 0x2
.line 638
invoke-static {v2, v3}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v2
aget-object v3, p3, v8
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v2
iget-object v3, v0, Lorg/spongycastle/math/ec/ZTauElement;->v:Ljava/math/BigInteger;
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v2
.line 637
invoke-virtual {v1, v2}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v1
.line 641
aget-object v2, p3, v8
iget-object v3, v0, Lorg/spongycastle/math/ec/ZTauElement;->u:Ljava/math/BigInteger;
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v2
aget-object v3, p3, v9
iget-object v0, v0, Lorg/spongycastle/math/ec/ZTauElement;->v:Ljava/math/BigInteger;
invoke-virtual {v3, v0}, Ljava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
.line 643
new-instance v2, Lorg/spongycastle/math/ec/ZTauElement;
invoke-direct {v2, v1, v0}, Lorg/spongycastle/math/ec/ZTauElement;-><init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
return-object v2
.line 622
:cond_65
aget-object v0, p3, v9
aget-object v1, p3, v8
invoke-virtual {v0, v1}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
move-object v6, v0
goto :goto_d
.end method
.method public static round(Lorg/spongycastle/math/ec/SimpleBigDecimal;Lorg/spongycastle/math/ec/SimpleBigDecimal;B)Lorg/spongycastle/math/ec/ZTauElement;
.registers 13
.prologue
const/4 v3, 0x0
const/4 v5, -0x1
const/4 v4, 0x1
.line 169
invoke-virtual {p0}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->getScale()I
move-result v0
.line 170
invoke-virtual {p1}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->getScale()I
move-result v1
if-eq v1, v0, :cond_15
.line 172
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "lambda0 and lambda1 do not have same scale"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 176
:cond_15
if-eq p2, v4, :cond_21
if-eq p2, v5, :cond_21
.line 178
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "mu must be 1 or -1"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 181
:cond_21
invoke-virtual {p0}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->round()Ljava/math/BigInteger;
move-result-object v6
.line 182
invoke-virtual {p1}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->round()Ljava/math/BigInteger;
move-result-object v7
.line 184
invoke-virtual {p0, v6}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->subtract(Ljava/math/BigInteger;)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v2
.line 185
invoke-virtual {p1, v7}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->subtract(Ljava/math/BigInteger;)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v1
.line 188
invoke-virtual {v2, v2}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->add(Lorg/spongycastle/math/ec/SimpleBigDecimal;)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v0
.line 189
if-ne p2, v4, :cond_8d
.line 191
invoke-virtual {v0, v1}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->add(Lorg/spongycastle/math/ec/SimpleBigDecimal;)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v0
.line 201
:goto_3b
invoke-virtual {v1, v1}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->add(Lorg/spongycastle/math/ec/SimpleBigDecimal;)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v8
invoke-virtual {v8, v1}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->add(Lorg/spongycastle/math/ec/SimpleBigDecimal;)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v8
.line 202
invoke-virtual {v8, v1}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->add(Lorg/spongycastle/math/ec/SimpleBigDecimal;)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v9
.line 205
if-ne p2, v4, :cond_92
.line 207
invoke-virtual {v2, v8}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->subtract(Lorg/spongycastle/math/ec/SimpleBigDecimal;)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v1
.line 208
invoke-virtual {v2, v9}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->add(Lorg/spongycastle/math/ec/SimpleBigDecimal;)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v2
.line 221
:goto_51
sget-object v8, Lorg/spongycastle/math/ec/ECConstants;->ONE:Ljava/math/BigInteger;
invoke-virtual {v0, v8}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->compareTo(Ljava/math/BigInteger;)I
move-result v8
if-ltz v8, :cond_9b
.line 223
sget-object v8, Lorg/spongycastle/math/ec/Tnaf;->MINUS_ONE:Ljava/math/BigInteger;
invoke-virtual {v1, v8}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->compareTo(Ljava/math/BigInteger;)I
move-result v8
if-gez v8, :cond_63
move v4, v3
move v3, p2
.line 242
:cond_63
:goto_63
sget-object v8, Lorg/spongycastle/math/ec/Tnaf;->MINUS_ONE:Ljava/math/BigInteger;
invoke-virtual {v0, v8}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->compareTo(Ljava/math/BigInteger;)I
move-result v0
if-gez v0, :cond_a8
.line 244
sget-object v0, Lorg/spongycastle/math/ec/ECConstants;->ONE:Ljava/math/BigInteger;
invoke-virtual {v1, v0}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->compareTo(Ljava/math/BigInteger;)I
move-result v0
if-ltz v0, :cond_a6
.line 246
neg-int v0, p2
int-to-byte v3, v0
.line 262
:cond_75
:goto_75
int-to-long v0, v4
invoke-static {v0, v1}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {v6, v0}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
.line 263
int-to-long v2, v3
invoke-static {v2, v3}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v1
invoke-virtual {v7, v1}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v1
.line 264
new-instance v2, Lorg/spongycastle/math/ec/ZTauElement;
invoke-direct {v2, v0, v1}, Lorg/spongycastle/math/ec/ZTauElement;-><init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
return-object v2
.line 196
:cond_8d
invoke-virtual {v0, v1}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->subtract(Lorg/spongycastle/math/ec/SimpleBigDecimal;)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v0
goto :goto_3b
.line 213
:cond_92
invoke-virtual {v2, v8}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->add(Lorg/spongycastle/math/ec/SimpleBigDecimal;)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v1
.line 214
invoke-virtual {v2, v9}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->subtract(Lorg/spongycastle/math/ec/SimpleBigDecimal;)Lorg/spongycastle/math/ec/SimpleBigDecimal;
move-result-object v2
goto :goto_51
.line 235
:cond_9b
sget-object v4, Lorg/spongycastle/math/ec/ECConstants;->TWO:Ljava/math/BigInteger;
invoke-virtual {v2, v4}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->compareTo(Ljava/math/BigInteger;)I
move-result v4
if-ltz v4, :cond_b3
move v4, v3
move v3, p2
.line 237
goto :goto_63
:cond_a6
move v4, v5
.line 250
goto :goto_75
.line 256
:cond_a8
sget-object v0, Lorg/spongycastle/math/ec/Tnaf;->MINUS_TWO:Ljava/math/BigInteger;
invoke-virtual {v2, v0}, Lorg/spongycastle/math/ec/SimpleBigDecimal;->compareTo(Ljava/math/BigInteger;)I
move-result v0
if-gez v0, :cond_75
.line 258
neg-int v0, p2
int-to-byte v3, v0
goto :goto_75
:cond_b3
move v4, v3
goto :goto_63
.end method
.method public static tau(Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;)Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;
.registers 2
.prologue
.line 395
invoke-virtual {p0}, Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;->tau()Lorg/spongycastle/math/ec/ECPoint$AbstractF2m;
move-result-object v0
return-object v0
.end method
.method public static tauAdicNaf(BLorg/spongycastle/math/ec/ZTauElement;)[B
.registers 11
.prologue
const/4 v8, 0x1
const/4 v2, 0x0
.line 316
if-eq p0, v8, :cond_f
const/4 v0, -0x1
if-eq p0, v0, :cond_f
.line 318
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "mu must be 1 or -1"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 321
:cond_f
invoke-static {p0, p1}, Lorg/spongycastle/math/ec/Tnaf;->norm(BLorg/spongycastle/math/ec/ZTauElement;)Ljava/math/BigInteger;
move-result-object v0
.line 324
invoke-virtual {v0}, Ljava/math/BigInteger;->bitLength()I
move-result v0
.line 327
const/16 v1, 0x1e
if-le v0, v1, :cond_76
add-int/lit8 v0, v0, 0x4
.line 330
:goto_1d
new-array v6, v0, [B
.line 336
iget-object v0, p1, Lorg/spongycastle/math/ec/ZTauElement;->u:Ljava/math/BigInteger;
.line 337
iget-object v1, p1, Lorg/spongycastle/math/ec/ZTauElement;->v:Ljava/math/BigInteger;
move v3, v2
move-object v4, v1
move v1, v2
.line 339
:goto_26
sget-object v5, Lorg/spongycastle/math/ec/ECConstants;->ZERO:Ljava/math/BigInteger;
invoke-virtual {v0, v5}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_36
sget-object v5, Lorg/spongycastle/math/ec/ECConstants;->ZERO:Ljava/math/BigInteger;
invoke-virtual {v4, v5}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v5
if-nez v5, :cond_89
.line 342
:cond_36
invoke-virtual {v0, v2}, Ljava/math/BigInteger;->testBit(I)Z
move-result v5
if-eqz v5, :cond_80
.line 344
sget-object v1, Lorg/spongycastle/math/ec/ECConstants;->TWO:Ljava/math/BigInteger;
invoke-virtual {v4, v8}, Ljava/math/BigInteger;->shiftLeft(I)Ljava/math/BigInteger;
move-result-object v5
invoke-virtual {v0, v5}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v5
sget-object v7, Lorg/spongycastle/math/ec/ECConstants;->FOUR:Ljava/math/BigInteger;
invoke-virtual {v5, v7}, Ljava/math/BigInteger;->mod(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v5
invoke-virtual {v1, v5}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v1
invoke-virtual {v1}, Ljava/math/BigInteger;->intValue()I
move-result v1
int-to-byte v1, v1
aput-byte v1, v6, v3
.line 347
aget-byte v1, v6, v3
if-ne v1, v8, :cond_79
.line 349
invoke-virtual {v0, v2}, Ljava/math/BigInteger;->clearBit(I)Ljava/math/BigInteger;
move-result-object v0
:goto_5f
move-object v5, v0
move v1, v3
.line 364
:goto_61
invoke-virtual {v5, v8}, Ljava/math/BigInteger;->shiftRight(I)Ljava/math/BigInteger;
move-result-object v0
.line 365
if-ne p0, v8, :cond_84
.line 367
invoke-virtual {v4, v0}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
.line 375
:goto_6b
invoke-virtual {v5, v8}, Ljava/math/BigInteger;->shiftRight(I)Ljava/math/BigInteger;
move-result-object v4
invoke-virtual {v4}, Ljava/math/BigInteger;->negate()Ljava/math/BigInteger;
move-result-object v4
.line 376
add-int/lit8 v3, v3, 0x1
.line 377
goto :goto_26
.line 327
:cond_76
const/16 v0, 0x22
goto :goto_1d
.line 354
:cond_79
sget-object v1, Lorg/spongycastle/math/ec/ECConstants;->ONE:Ljava/math/BigInteger;
invoke-virtual {v0, v1}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
goto :goto_5f
.line 360
:cond_80
aput-byte v2, v6, v3
move-object v5, v0
goto :goto_61
.line 372
:cond_84
invoke-virtual {v4, v0}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
goto :goto_6b
.line 379
:cond_89
add-int/lit8 v0, v1, 0x1
.line 382
new-array v1, v0, [B
.line 383
invoke-static {v6, v2, v1, v2, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 384
return-object v1
.end method
.method public static tauAdicWNaf(BLorg/spongycastle/math/ec/ZTauElement;BLjava/math/BigInteger;Ljava/math/BigInteger;[Lorg/spongycastle/math/ec/ZTauElement;)[B
.registers 16
.prologue
const/4 v1, 0x0
const/4 v5, 0x1
.line 738
if-eq p0, v5, :cond_f
const/4 v0, -0x1
if-eq p0, v0, :cond_f
.line 740
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "mu must be 1 or -1"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 743
:cond_f
invoke-static {p0, p1}, Lorg/spongycastle/math/ec/Tnaf;->norm(BLorg/spongycastle/math/ec/ZTauElement;)Ljava/math/BigInteger;
move-result-object v0
.line 746
invoke-virtual {v0}, Ljava/math/BigInteger;->bitLength()I
move-result v0
.line 749
const/16 v2, 0x1e
if-le v0, v2, :cond_8e
add-int/lit8 v0, v0, 0x4
add-int/2addr v0, p2
.line 752
:goto_1e
new-array v7, v0, [B
.line 755
invoke-virtual {p3, v5}, Ljava/math/BigInteger;->shiftRight(I)Ljava/math/BigInteger;
move-result-object v8
.line 758
iget-object v0, p1, Lorg/spongycastle/math/ec/ZTauElement;->u:Ljava/math/BigInteger;
.line 759
iget-object v2, p1, Lorg/spongycastle/math/ec/ZTauElement;->v:Ljava/math/BigInteger;
move-object v3, v2
move-object v2, v0
move v0, v1
.line 763
:goto_2b
sget-object v4, Lorg/spongycastle/math/ec/ECConstants;->ZERO:Ljava/math/BigInteger;
invoke-virtual {v2, v4}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_3b
sget-object v4, Lorg/spongycastle/math/ec/ECConstants;->ZERO:Ljava/math/BigInteger;
invoke-virtual {v3, v4}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v4
if-nez v4, :cond_ba
.line 766
:cond_3b
invoke-virtual {v2, v1}, Ljava/math/BigInteger;->testBit(I)Z
move-result v4
if-eqz v4, :cond_ab
.line 770
invoke-virtual {v3, p4}, Ljava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v4
invoke-virtual {v2, v4}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v4
invoke-virtual {v4, p3}, Ljava/math/BigInteger;->mod(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v4
.line 774
invoke-virtual {v4, v8}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v6
if-ltz v6, :cond_91
.line 776
invoke-virtual {v4, p3}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v4
invoke-virtual {v4}, Ljava/math/BigInteger;->intValue()I
move-result v4
int-to-byte v4, v4
.line 784
:goto_5c
aput-byte v4, v7, v0
.line 786
if-gez v4, :cond_bb
.line 789
neg-int v4, v4
int-to-byte v4, v4
move v6, v4
move v4, v1
.line 793
:goto_64
if-eqz v4, :cond_97
.line 795
aget-object v4, p5, v6
iget-object v4, v4, Lorg/spongycastle/math/ec/ZTauElement;->u:Ljava/math/BigInteger;
invoke-virtual {v2, v4}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v2
.line 796
aget-object v4, p5, v6
iget-object v4, v4, Lorg/spongycastle/math/ec/ZTauElement;->v:Ljava/math/BigInteger;
invoke-virtual {v3, v4}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v3
move-object v9, v2
move-object v2, v3
move-object v3, v9
.line 811
:goto_79
if-ne p0, v5, :cond_b1
.line 813
invoke-virtual {v3, v5}, Ljava/math/BigInteger;->shiftRight(I)Ljava/math/BigInteger;
move-result-object v4
invoke-virtual {v2, v4}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v2
.line 820
:goto_83
invoke-virtual {v3, v5}, Ljava/math/BigInteger;->shiftRight(I)Ljava/math/BigInteger;
move-result-object v3
invoke-virtual {v3}, Ljava/math/BigInteger;->negate()Ljava/math/BigInteger;
move-result-object v3
.line 821
add-int/lit8 v0, v0, 0x1
.line 822
goto :goto_2b
.line 749
:cond_8e
add-int/lit8 v0, p2, 0x22
goto :goto_1e
.line 780
:cond_91
invoke-virtual {v4}, Ljava/math/BigInteger;->intValue()I
move-result v4
int-to-byte v4, v4
goto :goto_5c
.line 800
:cond_97
aget-object v4, p5, v6
iget-object v4, v4, Lorg/spongycastle/math/ec/ZTauElement;->u:Ljava/math/BigInteger;
invoke-virtual {v2, v4}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v2
.line 801
aget-object v4, p5, v6
iget-object v4, v4, Lorg/spongycastle/math/ec/ZTauElement;->v:Ljava/math/BigInteger;
invoke-virtual {v3, v4}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v3
move-object v9, v2
move-object v2, v3
move-object v3, v9
.line 803
goto :goto_79
.line 806
:cond_ab
aput-byte v1, v7, v0
move-object v9, v2
move-object v2, v3
move-object v3, v9
goto :goto_79
.line 818
:cond_b1
invoke-virtual {v3, v5}, Ljava/math/BigInteger;->shiftRight(I)Ljava/math/BigInteger;
move-result-object v4
invoke-virtual {v2, v4}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v2
goto :goto_83
.line 823
:cond_ba
return-object v7
:cond_bb
move v6, v4
move v4, v5
goto :goto_64
.end method