PolynomialGF2mSmallM.smali
.class public Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
.super Ljava/lang/Object;
.source "PolynomialGF2mSmallM.java"
# static fields
.field public static final RANDOM_IRREDUCIBLE_POLYNOMIAL:C = 'I'
# instance fields
.field private coefficients:[I
.field private degree:I
.field private field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
# direct methods
.method public constructor <init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;)V
.registers 3
.prologue
.line 50
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 51
iput-object p1, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
.line 52
const/4 v0, -0x1
iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->degree:I
.line 53
const/4 v0, 0x1
new-array v0, v0, [I
iput-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
.line 54
return-void
.end method
.method public constructor <init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;I)V
.registers 5
.prologue
.line 121
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 122
iput-object p1, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
.line 123
iput p2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->degree:I
.line 124
add-int/lit8 v0, p2, 0x1
new-array v0, v0, [I
iput-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
.line 125
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
const/4 v1, 0x1
aput v1, v0, p2
.line 126
return-void
.end method
.method public constructor <init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;ICLjava/security/SecureRandom;)V
.registers 8
.prologue
.line 66
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 67
iput-object p1, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
.line 69
packed-switch p3, :pswitch_data_2e
.line 75
new-instance v0, Ljava/lang/IllegalArgumentException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, " Error: type "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " is not defined for GF2smallmPolynomial"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 72
:pswitch_23
invoke-direct {p0, p2, p4}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->createRandomIrreduciblePolynomial(ILjava/security/SecureRandom;)[I
move-result-object v0
iput-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
.line 79
invoke-direct {p0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree()V
.line 80
return-void
.line 69
nop
:pswitch_data_2e
.packed-switch 0x49
:pswitch_23
.end packed-switch
.end method
.method public constructor <init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;[B)V
.registers 12
.prologue
const/4 v1, 0x1
const/4 v3, 0x0
.line 149
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 150
iput-object p1, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
.line 153
const/16 v0, 0x8
move v2, v0
move v0, v1
.line 155
:goto_b
invoke-virtual {p1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->getDegree()I
move-result v4
if-le v4, v2, :cond_16
.line 157
add-int/lit8 v0, v0, 0x1
.line 158
add-int/lit8 v2, v2, 0x8
goto :goto_b
.line 161
:cond_16
array-length v4, p2
rem-int/2addr v4, v0
if-eqz v4, :cond_22
.line 163
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, " Error: byte array is not encoded polynomial over given finite field GF2m"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 167
:cond_22
array-length v4, p2
div-int v0, v4, v0
new-array v0, v0, [I
iput-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
move v0, v3
move v4, v3
.line 169
:goto_2b
iget-object v5, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
array-length v5, v5
if-ge v4, v5, :cond_5d
move v5, v3
.line 171
:goto_31
if-ge v5, v2, :cond_46
.line 173
iget-object v7, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
aget v8, v7, v4
add-int/lit8 v6, v0, 0x1
aget-byte v0, p2, v0
and-int/lit16 v0, v0, 0xff
shl-int/2addr v0, v5
xor-int/2addr v0, v8
aput v0, v7, v4
.line 171
add-int/lit8 v0, v5, 0x8
move v5, v0
move v0, v6
goto :goto_31
.line 175
:cond_46
iget-object v5, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
iget-object v6, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
aget v6, v6, v4
invoke-virtual {v5, v6}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->isElementOfThisField(I)Z
move-result v5
if-nez v5, :cond_5a
.line 177
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, " Error: byte array is not encoded polynomial over given finite field GF2m"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 169
:cond_5a
add-int/lit8 v4, v4, 0x1
goto :goto_2b
.line 182
:cond_5d
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
array-length v0, v0
if-eq v0, v1, :cond_75
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
array-length v1, v1
add-int/lit8 v1, v1, -0x1
aget v0, v0, v1
if-nez v0, :cond_75
.line 185
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, " Error: byte array is not encoded polynomial over given finite field GF2m"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 188
:cond_75
invoke-direct {p0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree()V
.line 189
return-void
.end method
.method public constructor <init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;[I)V
.registers 4
.prologue
.line 136
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 137
iput-object p1, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
.line 138
invoke-static {p2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->normalForm([I)[I
move-result-object v0
iput-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
.line 139
invoke-direct {p0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree()V
.line 140
return-void
.end method
.method public constructor <init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mVector;)V
.registers 4
.prologue
.line 213
invoke-virtual {p1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mVector;->getField()Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
move-result-object v0
invoke-virtual {p1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mVector;->getIntArrayForm()[I
move-result-object v1
invoke-direct {p0, v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;[I)V
.line 214
return-void
.end method
.method public constructor <init>(Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;)V
.registers 3
.prologue
.line 197
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 199
iget-object v0, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
iput-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
.line 200
iget v0, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->degree:I
iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->degree:I
.line 201
iget-object v0, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-static {v0}, Lorg/spongycastle/pqc/math/linearalgebra/IntUtils;->clone([I)[I
move-result-object v0
iput-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
.line 202
return-void
.end method
.method private add([I[I)[I
.registers 8
.prologue
const/4 v2, 0x0
.line 358
array-length v0, p1
array-length v1, p2
if-ge v0, v1, :cond_20
.line 360
array-length v0, p2
new-array v0, v0, [I
.line 361
array-length v1, p2
invoke-static {p2, v2, v0, v2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 371
:goto_c
array-length v1, p1
add-int/lit8 v1, v1, -0x1
:goto_f
if-ltz v1, :cond_29
.line 373
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
aget v3, v0, v1
aget v4, p1, v1
invoke-virtual {v2, v3, v4}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->add(II)I
move-result v2
aput v2, v0, v1
.line 371
add-int/lit8 v1, v1, -0x1
goto :goto_f
.line 366
:cond_20
array-length v0, p1
new-array v0, v0, [I
.line 367
array-length v1, p1
invoke-static {p1, v2, v0, v2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
move-object p1, p2
.line 368
goto :goto_c
.line 376
:cond_29
return-object v0
.end method
.method private static computeDegree([I)I
.registers 3
.prologue
.line 1087
array-length v0, p0
add-int/lit8 v0, v0, -0x1
:goto_3
if-ltz v0, :cond_c
aget v1, p0, v0
if-nez v1, :cond_c
add-int/lit8 v0, v0, -0x1
goto :goto_3
.line 1091
:cond_c
return v0
.end method
.method private computeDegree()V
.registers 3
.prologue
.line 1070
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
array-length v0, v0
add-int/lit8 v0, v0, -0x1
iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->degree:I
.line 1071
:goto_7
iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->degree:I
if-ltz v0, :cond_1a
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->degree:I
aget v0, v0, v1
if-nez v0, :cond_1a
iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->degree:I
add-int/lit8 v0, v0, -0x1
iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->degree:I
goto :goto_7
.line 1075
:cond_1a
return-void
.end method
.method private createRandomIrreduciblePolynomial(ILjava/security/SecureRandom;)[I
.registers 7
.prologue
const/4 v0, 0x1
const/4 v3, 0x0
.line 92
add-int/lit8 v1, p1, 0x1
new-array v1, v1, [I
.line 93
aput v0, v1, p1
.line 94
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-virtual {v2, p2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->getRandomNonZeroElement(Ljava/security/SecureRandom;)I
move-result v2
aput v2, v1, v3
.line 95
:goto_10
if-ge v0, p1, :cond_1d
.line 97
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-virtual {v2, p2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->getRandomElement(Ljava/security/SecureRandom;)I
move-result v2
aput v2, v1, v0
.line 95
add-int/lit8 v0, v0, 0x1
goto :goto_10
.line 99
:cond_1d
:goto_1d
invoke-direct {p0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->isIrreducible([I)Z
move-result v0
if-nez v0, :cond_3b
.line 101
invoke-static {p2, p1}, Lorg/spongycastle/pqc/math/linearalgebra/RandUtils;->nextInt(Ljava/security/SecureRandom;I)I
move-result v0
.line 102
if-nez v0, :cond_32
.line 104
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-virtual {v0, p2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->getRandomNonZeroElement(Ljava/security/SecureRandom;)I
move-result v0
aput v0, v1, v3
goto :goto_1d
.line 108
:cond_32
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-virtual {v2, p2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->getRandomElement(Ljava/security/SecureRandom;)I
move-result v2
aput v2, v1, v0
goto :goto_1d
.line 111
:cond_3b
return-object v1
.end method
.method private div([I[I)[[I
.registers 11
.prologue
const/4 v7, 0x1
const/4 v6, 0x0
.line 516
invoke-static {p2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v0
.line 517
invoke-static {p1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v1
add-int/lit8 v1, v1, 0x1
.line 518
const/4 v2, -0x1
if-ne v0, v2, :cond_17
.line 520
new-instance v0, Ljava/lang/ArithmeticException;
const-string v1, "Division by zero."
invoke-direct {v0, v1}, Ljava/lang/ArithmeticException;-><init>(Ljava/lang/String;)V
throw v0
.line 522
:cond_17
const/4 v2, 0x2
new-array v2, v2, [[I
.line 523
new-array v3, v7, [I
aput-object v3, v2, v6
.line 524
new-array v1, v1, [I
aput-object v1, v2, v7
.line 525
invoke-static {p2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->headCoefficient([I)I
move-result v1
.line 526
iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-virtual {v3, v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->inverse(I)I
move-result v1
.line 527
aget-object v3, v2, v6
aput v6, v3, v6
.line 528
aget-object v3, v2, v7
aget-object v4, v2, v7
array-length v4, v4
invoke-static {p1, v6, v3, v6, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 529
:goto_38
aget-object v3, v2, v7
invoke-static {v3}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v3
if-gt v0, v3, :cond_76
.line 532
new-array v3, v7, [I
.line 533
iget-object v4, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
aget-object v5, v2, v7
invoke-static {v5}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->headCoefficient([I)I
move-result v5
invoke-virtual {v4, v5, v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->mult(II)I
move-result v4
aput v4, v3, v6
.line 534
aget v4, v3, v6
invoke-direct {p0, p2, v4}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multWithElement([II)[I
move-result-object v4
.line 535
aget-object v5, v2, v7
invoke-static {v5}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v5
sub-int/2addr v5, v0
.line 536
invoke-static {v4, v5}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multWithMonomial([II)[I
move-result-object v4
.line 537
invoke-static {v3, v5}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multWithMonomial([II)[I
move-result-object v3
.line 538
aget-object v5, v2, v6
invoke-direct {p0, v3, v5}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->add([I[I)[I
move-result-object v3
aput-object v3, v2, v6
.line 539
aget-object v3, v2, v7
invoke-direct {p0, v4, v3}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->add([I[I)[I
move-result-object v3
aput-object v3, v2, v7
goto :goto_38
.line 541
:cond_76
return-object v2
.end method
.method private gcd([I[I)[I
.registers 7
.prologue
const/4 v3, -0x1
const/4 v2, 0x0
.line 568
invoke-static {p1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v0
if-ne v0, v3, :cond_9
.line 581
:goto_8
return-object p2
.line 572
:cond_9
:goto_9
invoke-static {p2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v0
if-eq v0, v3, :cond_22
.line 574
invoke-direct {p0, p1, p2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->mod([I[I)[I
move-result-object v0
.line 575
array-length v1, p2
new-array p1, v1, [I
.line 576
array-length v1, p1
invoke-static {p2, v2, p1, v2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 577
array-length v1, v0
new-array p2, v1, [I
.line 578
array-length v1, p2
invoke-static {v0, v2, p2, v2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
goto :goto_9
.line 580
:cond_22
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-static {p1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->headCoefficient([I)I
move-result v1
invoke-virtual {v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->inverse(I)I
move-result v0
.line 581
invoke-direct {p0, p1, v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multWithElement([II)[I
move-result-object p2
goto :goto_8
.end method
.method private static headCoefficient([I)I
.registers 3
.prologue
.line 256
invoke-static {p0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v0
.line 257
const/4 v1, -0x1
if-ne v0, v1, :cond_9
.line 259
const/4 v0, 0x0
.line 261
:goto_8
return v0
:cond_9
aget v0, p0, v0
goto :goto_8
.end method
.method private static isEqual([I[I)Z
.registers 7
.prologue
const/4 v0, 0x0
.line 1017
invoke-static {p0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v2
.line 1018
invoke-static {p1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v1
.line 1019
if-eq v2, v1, :cond_c
.line 1030
:cond_b
:goto_b
return v0
:cond_c
move v1, v0
.line 1023
:goto_d
if-gt v1, v2, :cond_18
.line 1025
aget v3, p0, v1
aget v4, p1, v1
if-ne v3, v4, :cond_b
.line 1023
add-int/lit8 v1, v1, 0x1
goto :goto_d
.line 1030
:cond_18
const/4 v0, 0x1
goto :goto_b
.end method
.method private isIrreducible([I)Z
.registers 9
.prologue
const/4 v3, 0x2
const/4 v0, 0x0
.line 689
aget v1, p1, v0
if-nez v1, :cond_7
.line 710
:cond_6
:goto_6
return v0
.line 693
:cond_7
invoke-static {p1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v1
shr-int/lit8 v4, v1, 0x1
.line 694
new-array v2, v3, [I
fill-array-data v2, :array_44
.line 695
new-array v5, v3, [I
fill-array-data v5, :array_4c
.line 696
iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-virtual {v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->getDegree()I
move-result v6
move v3, v0
.line 697
:goto_1e
if-ge v3, v4, :cond_41
.line 699
add-int/lit8 v1, v6, -0x1
:goto_22
if-ltz v1, :cond_2b
.line 701
invoke-direct {p0, v2, v2, p1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->modMultiply([I[I[I)[I
move-result-object v2
.line 699
add-int/lit8 v1, v1, -0x1
goto :goto_22
.line 703
:cond_2b
invoke-static {v2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->normalForm([I)[I
move-result-object v2
.line 704
invoke-direct {p0, v2, v5}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->add([I[I)[I
move-result-object v1
invoke-direct {p0, v1, p1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->gcd([I[I)[I
move-result-object v1
.line 705
invoke-static {v1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v1
if-nez v1, :cond_6
.line 697
add-int/lit8 v1, v3, 0x1
move v3, v1
goto :goto_1e
.line 710
:cond_41
const/4 v0, 0x1
goto :goto_6
.line 694
nop
:array_44
.array-data 4
0x0
0x1
.end array-data
.line 695
:array_4c
.array-data 4
0x0
0x1
.end array-data
.end method
.method private mod([I[I)[I
.registers 8
.prologue
const/4 v4, 0x0
.line 734
invoke-static {p2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v1
.line 735
const/4 v0, -0x1
if-ne v1, v0, :cond_10
.line 737
new-instance v0, Ljava/lang/ArithmeticException;
const-string v1, "Division by zero"
invoke-direct {v0, v1}, Ljava/lang/ArithmeticException;-><init>(Ljava/lang/String;)V
throw v0
.line 739
:cond_10
array-length v0, p1
new-array v0, v0, [I
.line 740
invoke-static {p2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->headCoefficient([I)I
move-result v2
.line 741
iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-virtual {v3, v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->inverse(I)I
move-result v2
.line 742
array-length v3, v0
invoke-static {p1, v4, v0, v4, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 743
:goto_21
invoke-static {v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v3
if-gt v1, v3, :cond_43
.line 746
iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-static {v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->headCoefficient([I)I
move-result v4
invoke-virtual {v3, v4, v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->mult(II)I
move-result v3
.line 747
invoke-static {v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v4
sub-int/2addr v4, v1
invoke-static {p2, v4}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multWithMonomial([II)[I
move-result-object v4
.line 748
invoke-direct {p0, v4, v3}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multWithElement([II)[I
move-result-object v3
.line 749
invoke-direct {p0, v3, v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->add([I[I)[I
move-result-object v0
goto :goto_21
.line 751
:cond_43
return-object v0
.end method
.method private modDiv([I[I[I)[I
.registers 12
.prologue
const/4 v7, 0x1
const/4 v6, 0x0
.line 915
invoke-static {p3}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->normalForm([I)[I
move-result-object v1
.line 916
invoke-direct {p0, p2, p3}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->mod([I[I)[I
move-result-object v2
.line 917
new-array v0, v7, [I
aput v6, v0, v6
.line 918
invoke-direct {p0, p1, p3}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->mod([I[I)[I
move-result-object v3
.line 921
:goto_12
invoke-static {v2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v4
const/4 v5, -0x1
if-eq v4, v5, :cond_3a
.line 923
invoke-direct {p0, v1, v2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->div([I[I)[[I
move-result-object v4
.line 924
invoke-static {v2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->normalForm([I)[I
move-result-object v1
.line 925
aget-object v2, v4, v7
invoke-static {v2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->normalForm([I)[I
move-result-object v2
.line 926
aget-object v4, v4, v6
invoke-direct {p0, v4, v3, p3}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->modMultiply([I[I[I)[I
move-result-object v4
invoke-direct {p0, v0, v4}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->add([I[I)[I
move-result-object v4
.line 927
invoke-static {v3}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->normalForm([I)[I
move-result-object v0
.line 928
invoke-static {v4}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->normalForm([I)[I
move-result-object v3
goto :goto_12
.line 931
:cond_3a
invoke-static {v1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->headCoefficient([I)I
move-result v1
.line 932
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-virtual {v2, v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->inverse(I)I
move-result v1
invoke-direct {p0, v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multWithElement([II)[I
move-result-object v0
.line 933
return-object v0
.end method
.method private modMultiply([I[I[I)[I
.registers 5
.prologue
.line 821
invoke-direct {p0, p1, p2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multiply([I[I)[I
move-result-object v0
invoke-direct {p0, v0, p3}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->mod([I[I)[I
move-result-object v0
return-object v0
.end method
.method private multWithElement([II)[I
.registers 7
.prologue
const/4 v2, 0x1
.line 440
invoke-static {p1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v1
.line 441
const/4 v0, -0x1
if-eq v1, v0, :cond_a
if-nez p2, :cond_d
.line 443
:cond_a
new-array v0, v2, [I
.line 457
:cond_c
:goto_c
return-object v0
.line 446
:cond_d
if-ne p2, v2, :cond_14
.line 448
invoke-static {p1}, Lorg/spongycastle/pqc/math/linearalgebra/IntUtils;->clone([I)[I
move-result-object v0
goto :goto_c
.line 451
:cond_14
add-int/lit8 v0, v1, 0x1
new-array v0, v0, [I
.line 452
:goto_18
if-ltz v1, :cond_c
.line 454
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
aget v3, p1, v1
invoke-virtual {v2, v3, p2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->mult(II)I
move-result v2
aput v2, v0, v1
.line 452
add-int/lit8 v1, v1, -0x1
goto :goto_18
.end method
.method private static multWithMonomial([II)[I
.registers 5
.prologue
.line 481
invoke-static {p0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v1
.line 482
const/4 v0, -0x1
if-ne v1, v0, :cond_b
.line 484
const/4 v0, 0x1
new-array v0, v0, [I
.line 488
:goto_a
return-object v0
.line 486
:cond_b
add-int v0, v1, p1
add-int/lit8 v0, v0, 0x1
new-array v0, v0, [I
.line 487
const/4 v2, 0x0
add-int/lit8 v1, v1, 0x1
invoke-static {p0, v2, v0, p1, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
goto :goto_a
.end method
.method private multiply([I[I)[I
.registers 13
.prologue
const/4 v8, 0x0
.line 608
invoke-static {p1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v0
invoke-static {p2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v1
if-ge v0, v1, :cond_1e
.line 619
:goto_b
invoke-static {p2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->normalForm([I)[I
move-result-object v0
.line 620
invoke-static {p1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->normalForm([I)[I
move-result-object v1
.line 622
array-length v2, v1
const/4 v3, 0x1
if-ne v2, v3, :cond_22
.line 624
aget v1, v1, v8
invoke-direct {p0, v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multWithElement([II)[I
move-result-object v0
.line 673
:goto_1d
return-object v0
:cond_1e
move-object v9, p1
move-object p1, p2
move-object p2, v9
.line 616
goto :goto_b
.line 627
:cond_22
array-length v2, v0
.line 628
array-length v3, v1
.line 631
if-eq v3, v2, :cond_44
.line 633
new-array v4, v3, [I
.line 634
sub-int/2addr v2, v3
new-array v2, v2, [I
.line 635
array-length v5, v4
invoke-static {v0, v8, v4, v8, v5}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 636
array-length v5, v2
invoke-static {v0, v3, v2, v8, v5}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 637
invoke-direct {p0, v4, v1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multiply([I[I)[I
move-result-object v0
.line 638
invoke-direct {p0, v2, v1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multiply([I[I)[I
move-result-object v1
.line 639
invoke-static {v1, v3}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multWithMonomial([II)[I
move-result-object v1
.line 640
invoke-direct {p0, v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->add([I[I)[I
move-result-object v0
goto :goto_1d
.line 644
:cond_44
add-int/lit8 v3, v2, 0x1
ushr-int/lit8 v3, v3, 0x1
.line 645
sub-int/2addr v2, v3
.line 646
new-array v4, v3, [I
.line 647
new-array v5, v3, [I
.line 648
new-array v6, v2, [I
.line 649
new-array v2, v2, [I
.line 650
array-length v7, v4
.line 651
invoke-static {v0, v8, v4, v8, v7}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 653
array-length v7, v6
invoke-static {v0, v3, v6, v8, v7}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 655
array-length v0, v5
.line 656
invoke-static {v1, v8, v5, v8, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 658
array-length v0, v2
invoke-static {v1, v3, v2, v8, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 660
invoke-direct {p0, v4, v6}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->add([I[I)[I
move-result-object v0
.line 661
invoke-direct {p0, v5, v2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->add([I[I)[I
move-result-object v1
.line 662
invoke-direct {p0, v4, v5}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multiply([I[I)[I
move-result-object v4
.line 663
invoke-direct {p0, v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multiply([I[I)[I
move-result-object v0
.line 664
invoke-direct {p0, v6, v2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multiply([I[I)[I
move-result-object v1
.line 665
invoke-direct {p0, v0, v4}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->add([I[I)[I
move-result-object v0
.line 666
invoke-direct {p0, v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->add([I[I)[I
move-result-object v0
.line 667
invoke-static {v1, v3}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multWithMonomial([II)[I
move-result-object v1
.line 668
invoke-direct {p0, v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->add([I[I)[I
move-result-object v0
.line 669
invoke-static {v0, v3}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multWithMonomial([II)[I
move-result-object v0
.line 670
invoke-direct {p0, v0, v4}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->add([I[I)[I
move-result-object v0
goto :goto_1d
.end method
.method private static normalForm([I)[I
.registers 5
.prologue
const/4 v3, 0x0
.line 1102
invoke-static {p0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v1
.line 1105
const/4 v0, -0x1
if-ne v1, v0, :cond_c
.line 1108
const/4 v0, 0x1
new-array v0, v0, [I
.line 1121
:goto_b
return-object v0
.line 1112
:cond_c
array-length v0, p0
add-int/lit8 v2, v1, 0x1
if-ne v0, v2, :cond_16
.line 1115
invoke-static {p0}, Lorg/spongycastle/pqc/math/linearalgebra/IntUtils;->clone([I)[I
move-result-object v0
goto :goto_b
.line 1119
:cond_16
add-int/lit8 v0, v1, 0x1
new-array v0, v0, [I
.line 1120
add-int/lit8 v1, v1, 0x1
invoke-static {p0, v3, v0, v3, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
goto :goto_b
.end method
# virtual methods
.method public add(Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;)Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
.registers 5
.prologue
.line 332
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
iget-object v1, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-direct {p0, v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->add([I[I)[I
move-result-object v0
.line 333
new-instance v1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-direct {v1, v2, v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;[I)V
return-object v1
.end method
.method public addMonomial(I)Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
.registers 5
.prologue
.line 387
add-int/lit8 v0, p1, 0x1
new-array v0, v0, [I
.line 388
const/4 v1, 0x1
aput v1, v0, p1
.line 389
iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-direct {p0, v1, v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->add([I[I)[I
move-result-object v0
.line 390
new-instance v1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-direct {v1, v2, v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;[I)V
return-object v1
.end method
.method public addToThis(Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;)V
.registers 4
.prologue
.line 343
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
iget-object v1, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-direct {p0, v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->add([I[I)[I
move-result-object v0
iput-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
.line 344
invoke-direct {p0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree()V
.line 345
return-void
.end method
.method public div(Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;)[Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
.registers 9
.prologue
const/4 v6, 0x1
const/4 v5, 0x0
.line 500
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
iget-object v1, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-direct {p0, v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->div([I[I)[[I
move-result-object v0
.line 501
const/4 v1, 0x2
new-array v1, v1, [Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
new-instance v2, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
aget-object v4, v0, v5
invoke-direct {v2, v3, v4}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;[I)V
aput-object v2, v1, v5
new-instance v2, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
aget-object v0, v0, v6
invoke-direct {v2, v3, v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;[I)V
aput-object v2, v1, v6
return-object v1
.end method
.method public equals(Ljava/lang/Object;)Z
.registers 5
.prologue
const/4 v0, 0x0
.line 991
if-eqz p1, :cond_7
instance-of v1, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
if-nez v1, :cond_8
.line 1004
:cond_7
:goto_7
return v0
.line 996
:cond_8
check-cast p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
.line 998
iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
iget-object v2, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-virtual {v1, v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_7
iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->degree:I
iget v2, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->degree:I
if-ne v1, v2, :cond_7
iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
iget-object v2, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
.line 999
invoke-static {v1, v2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->isEqual([I[I)Z
move-result v1
if-eqz v1, :cond_7
.line 1001
const/4 v0, 0x1
goto :goto_7
.end method
.method public evaluateAt(I)I
.registers 5
.prologue
.line 316
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->degree:I
aget v1, v0, v1
.line 317
iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->degree:I
add-int/lit8 v0, v0, -0x1
:goto_a
if-ltz v0, :cond_1a
.line 319
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-virtual {v2, v1, p1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->mult(II)I
move-result v1
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
aget v2, v2, v0
xor-int/2addr v1, v2
.line 317
add-int/lit8 v0, v0, -0x1
goto :goto_a
.line 321
:cond_1a
return v1
.end method
.method public gcd(Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;)Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
.registers 5
.prologue
.line 552
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
iget-object v1, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-direct {p0, v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->gcd([I[I)[I
move-result-object v0
.line 553
new-instance v1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-direct {v1, v2, v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;[I)V
return-object v1
.end method
.method public getCoefficient(I)I
.registers 3
.prologue
.line 272
if-ltz p1, :cond_6
iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->degree:I
if-le p1, v0, :cond_8
.line 274
:cond_6
const/4 v0, 0x0
.line 276
:goto_7
return v0
:cond_8
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
aget v0, v0, p1
goto :goto_7
.end method
.method public getDegree()I
.registers 3
.prologue
.line 228
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
array-length v0, v0
add-int/lit8 v0, v0, -0x1
.line 229
iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
aget v1, v1, v0
if-nez v1, :cond_c
.line 231
const/4 v0, -0x1
.line 233
:cond_c
return v0
.end method
.method public getEncoded()[B
.registers 9
.prologue
const/4 v2, 0x0
.line 286
const/16 v1, 0x8
.line 287
const/4 v0, 0x1
.line 288
:goto_4
iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-virtual {v3}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->getDegree()I
move-result v3
if-le v3, v1, :cond_11
.line 290
add-int/lit8 v0, v0, 0x1
.line 291
add-int/lit8 v1, v1, 0x8
goto :goto_4
.line 294
:cond_11
iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
array-length v3, v3
mul-int/2addr v0, v3
new-array v6, v0, [B
move v0, v2
move v3, v2
.line 296
:goto_19
iget-object v4, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
array-length v4, v4
if-ge v0, v4, :cond_33
move v4, v2
.line 298
:goto_1f
if-ge v4, v1, :cond_30
.line 300
add-int/lit8 v5, v3, 0x1
iget-object v7, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
aget v7, v7, v0
ushr-int/2addr v7, v4
int-to-byte v7, v7
aput-byte v7, v6, v3
.line 298
add-int/lit8 v3, v4, 0x8
move v4, v3
move v3, v5
goto :goto_1f
.line 296
:cond_30
add-int/lit8 v0, v0, 0x1
goto :goto_19
.line 304
:cond_33
return-object v6
.end method
.method public getHeadCoefficient()I
.registers 3
.prologue
.line 241
iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->degree:I
const/4 v1, -0x1
if-ne v0, v1, :cond_7
.line 243
const/4 v0, 0x0
.line 245
:goto_6
return v0
:cond_7
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->degree:I
aget v0, v0, v1
goto :goto_6
.end method
.method public hashCode()I
.registers 4
.prologue
.line 1038
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-virtual {v0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->hashCode()I
move-result v1
.line 1039
const/4 v0, 0x0
:goto_7
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
array-length v2, v2
if-ge v0, v2, :cond_16
.line 1041
mul-int/lit8 v1, v1, 0x1f
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
aget v2, v2, v0
add-int/2addr v1, v2
.line 1039
add-int/lit8 v0, v0, 0x1
goto :goto_7
.line 1043
:cond_16
return v1
.end method
.method public mod(Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;)Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
.registers 5
.prologue
.line 721
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
iget-object v1, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-direct {p0, v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->mod([I[I)[I
move-result-object v0
.line 722
new-instance v1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-direct {v1, v2, v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;[I)V
return-object v1
.end method
.method public modDiv(Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;)Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
.registers 6
.prologue
.line 899
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
iget-object v1, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
iget-object v2, p2, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-direct {p0, v0, v1, v2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->modDiv([I[I[I)[I
move-result-object v0
.line 901
new-instance v1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-direct {v1, v2, v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;[I)V
return-object v1
.end method
.method public modInverse(Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;)Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
.registers 5
.prologue
const/4 v2, 0x1
.line 944
new-array v0, v2, [I
const/4 v1, 0x0
aput v2, v0, v1
.line 945
iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
iget-object v2, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-direct {p0, v0, v1, v2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->modDiv([I[I[I)[I
move-result-object v0
.line 946
new-instance v1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-direct {v1, v2, v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;[I)V
return-object v1
.end method
.method public modMultiply(Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;)Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
.registers 6
.prologue
.line 765
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
iget-object v1, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
iget-object v2, p2, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-direct {p0, v0, v1, v2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->modMultiply([I[I[I)[I
move-result-object v0
.line 767
new-instance v1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-direct {v1, v2, v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;[I)V
return-object v1
.end method
.method public modPolynomialToFracton(Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;)[Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
.registers 13
.prologue
const/4 v8, 0x1
const/4 v7, 0x0
.line 959
iget v0, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->degree:I
shr-int/lit8 v4, v0, 0x1
.line 960
iget-object v0, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-static {v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->normalForm([I)[I
move-result-object v3
.line 961
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
iget-object v1, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-direct {p0, v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->mod([I[I)[I
move-result-object v2
.line 962
new-array v1, v8, [I
aput v7, v1, v7
.line 963
new-array v0, v8, [I
aput v8, v0, v7
.line 964
:goto_1c
invoke-static {v2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree([I)I
move-result v5
if-le v5, v4, :cond_3b
.line 966
invoke-direct {p0, v3, v2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->div([I[I)[[I
move-result-object v5
.line 968
aget-object v3, v5, v8
.line 969
aget-object v5, v5, v7
iget-object v6, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-direct {p0, v5, v0, v6}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->modMultiply([I[I[I)[I
move-result-object v5
invoke-direct {p0, v1, v5}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->add([I[I)[I
move-result-object v1
move-object v9, v1
move-object v1, v0
move-object v0, v9
move-object v10, v3
move-object v3, v2
move-object v2, v10
.line 972
goto :goto_1c
.line 974
:cond_3b
const/4 v1, 0x2
new-array v1, v1, [Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
new-instance v3, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
iget-object v4, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-direct {v3, v4, v2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;[I)V
aput-object v3, v1, v7
new-instance v2, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-direct {v2, v3, v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;[I)V
aput-object v2, v1, v8
return-object v1
.end method
.method public modSquareMatrix([Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;)Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
.registers 11
.prologue
const/4 v1, 0x0
.line 780
array-length v3, p1
.line 782
new-array v4, v3, [I
.line 783
new-array v5, v3, [I
move v0, v1
.line 786
:goto_7
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
array-length v2, v2
if-ge v0, v2, :cond_1f
.line 788
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
iget-object v6, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
aget v6, v6, v0
iget-object v7, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
aget v7, v7, v0
invoke-virtual {v2, v6, v7}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->mult(II)I
move-result v2
aput v2, v5, v0
.line 786
add-int/lit8 v0, v0, 0x1
goto :goto_7
:cond_1f
move v2, v1
.line 792
:goto_20
if-ge v2, v3, :cond_4b
move v0, v1
.line 795
:goto_23
if-ge v0, v3, :cond_47
.line 797
aget-object v6, p1, v0
iget-object v6, v6, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
array-length v6, v6
if-ge v2, v6, :cond_44
.line 801
iget-object v6, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
aget-object v7, p1, v0
iget-object v7, v7, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
aget v7, v7, v2
aget v8, v5, v0
invoke-virtual {v6, v7, v8}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->mult(II)I
move-result v6
.line 803
iget-object v7, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
aget v8, v4, v2
invoke-virtual {v7, v8, v6}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->add(II)I
move-result v6
aput v6, v4, v2
.line 795
:cond_44
add-int/lit8 v0, v0, 0x1
goto :goto_23
.line 792
:cond_47
add-int/lit8 v0, v2, 0x1
move v2, v0
goto :goto_20
.line 807
:cond_4b
new-instance v0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-direct {v0, v1, v4}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;[I)V
return-object v0
.end method
.method public modSquareRoot(Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;)Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
.registers 5
.prologue
.line 832
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-static {v0}, Lorg/spongycastle/pqc/math/linearalgebra/IntUtils;->clone([I)[I
move-result-object v1
.line 833
iget-object v0, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-direct {p0, v1, v1, v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->modMultiply([I[I[I)[I
move-result-object v0
.line 834
:goto_c
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-static {v0, v2}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->isEqual([I[I)Z
move-result v2
if-nez v2, :cond_1f
.line 836
invoke-static {v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->normalForm([I)[I
move-result-object v1
.line 837
iget-object v0, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-direct {p0, v1, v1, v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->modMultiply([I[I[I)[I
move-result-object v0
goto :goto_c
.line 840
:cond_1f
new-instance v0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-direct {v0, v2, v1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;[I)V
return-object v0
.end method
.method public modSquareRootMatrix([Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;)Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
.registers 10
.prologue
const/4 v0, 0x0
.line 856
array-length v3, p1
.line 858
new-array v4, v3, [I
move v2, v0
.line 861
:goto_5
if-ge v2, v3, :cond_37
move v1, v0
.line 864
:goto_8
if-ge v1, v3, :cond_33
.line 866
aget-object v5, p1, v1
iget-object v5, v5, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
array-length v5, v5
if-ge v2, v5, :cond_30
.line 870
iget-object v5, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
array-length v5, v5
if-ge v1, v5, :cond_30
.line 872
iget-object v5, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
aget-object v6, p1, v1
iget-object v6, v6, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
aget v6, v6, v2
iget-object v7, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
aget v7, v7, v1
invoke-virtual {v5, v6, v7}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->mult(II)I
move-result v5
.line 874
iget-object v6, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
aget v7, v4, v2
invoke-virtual {v6, v7, v5}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->add(II)I
move-result v5
aput v5, v4, v2
.line 864
:cond_30
add-int/lit8 v1, v1, 0x1
goto :goto_8
.line 861
:cond_33
add-int/lit8 v1, v2, 0x1
move v2, v1
goto :goto_5
.line 880
:cond_37
:goto_37
if-ge v0, v3, :cond_46
.line 882
iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
aget v2, v4, v0
invoke-virtual {v1, v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->sqRoot(I)I
move-result v1
aput v1, v4, v0
.line 880
add-int/lit8 v0, v0, 0x1
goto :goto_37
.line 885
:cond_46
new-instance v0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-direct {v0, v1, v4}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;[I)V
return-object v0
.end method
.method public multThisWithElement(I)V
.registers 4
.prologue
.line 421
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-virtual {v0, p1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->isElementOfThisField(I)Z
move-result v0
if-nez v0, :cond_10
.line 423
new-instance v0, Ljava/lang/ArithmeticException;
const-string v1, "Not an element of the finite field this polynomial is defined over."
invoke-direct {v0, v1}, Ljava/lang/ArithmeticException;-><init>(Ljava/lang/String;)V
throw v0
.line 426
:cond_10
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-direct {p0, v0, p1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multWithElement([II)[I
move-result-object v0
iput-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
.line 427
invoke-direct {p0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->computeDegree()V
.line 428
return-void
.end method
.method public multWithElement(I)Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
.registers 5
.prologue
.line 403
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-virtual {v0, p1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->isElementOfThisField(I)Z
move-result v0
if-nez v0, :cond_10
.line 405
new-instance v0, Ljava/lang/ArithmeticException;
const-string v1, "Not an element of the finite field this polynomial is defined over."
invoke-direct {v0, v1}, Ljava/lang/ArithmeticException;-><init>(Ljava/lang/String;)V
throw v0
.line 408
:cond_10
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-direct {p0, v0, p1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multWithElement([II)[I
move-result-object v0
.line 409
new-instance v1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-direct {v1, v2, v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;[I)V
return-object v1
.end method
.method public multWithMonomial(I)Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
.registers 5
.prologue
.line 468
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-static {v0, p1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multWithMonomial([II)[I
move-result-object v0
.line 469
new-instance v1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-direct {v1, v2, v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;[I)V
return-object v1
.end method
.method public multiply(Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;)Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
.registers 5
.prologue
.line 593
iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
iget-object v1, p1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
invoke-direct {p0, v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->multiply([I[I)[I
move-result-object v0
.line 594
new-instance v1, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-direct {v1, v2, v0}, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;[I)V
return-object v1
.end method
.method public toString()Ljava/lang/String;
.registers 5
.prologue
.line 1053
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, " Polynomial over "
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
invoke-virtual {v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, ": \n"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
.line 1055
const/4 v0, 0x0
:goto_1c
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
array-length v2, v2
if-ge v0, v2, :cond_4f
.line 1057
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->field:Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;
iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM;->coefficients:[I
aget v3, v3, v0
invoke-virtual {v2, v3}, Lorg/spongycastle/pqc/math/linearalgebra/GF2mField;->elementToStr(I)Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, "Y^"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, "+"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
.line 1055
add-int/lit8 v0, v0, 0x1
goto :goto_1c
.line 1059
:cond_4f
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, ";"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
.line 1061
return-object v0
.end method