GF2Polynomial.smali

.class public Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;
.super Ljava/lang/Object;
.source "GF2Polynomial.java"


# static fields
.field private static final bitMask:[I

.field private static final parity:[Z

.field private static rand:Ljava/util/Random;

.field private static final reverseRightMask:[I

.field private static final squaringTable:[S


# instance fields
.field private blocks:I

.field private len:I

.field private value:[I


# direct methods
.method static constructor <clinit>()V
    .registers 3

    .prologue
    const/16 v2, 0x100

    const/16 v1, 0x21

    .line 29
    new-instance v0, Ljava/util/Random;

    invoke-direct {v0}, Ljava/util/Random;-><init>()V

    sput-object v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->rand:Ljava/util/Random;

    .line 32
    new-array v0, v2, [Z

    fill-array-data v0, :array_28

    sput-object v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->parity:[Z

    .line 61
    new-array v0, v2, [S

    fill-array-data v0, :array_ac

    sput-object v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->squaringTable:[S

    .line 96
    new-array v0, v1, [I

    fill-array-data v0, :array_1b0

    sput-object v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->bitMask:[I

    .line 105
    new-array v0, v1, [I

    fill-array-data v0, :array_1f6

    sput-object v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->reverseRightMask:[I

    return-void

    .line 32
    :array_28
    .array-data 1
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
        0x1t
        0x0t
        0x0t
        0x1t
        0x1t
        0x0t
        0x0t
        0x1t
        0x0t
        0x1t
        0x1t
        0x0t
    .end array-data

    .line 61
    :array_ac
    .array-data 2
        0x0s
        0x1s
        0x4s
        0x5s
        0x10s
        0x11s
        0x14s
        0x15s
        0x40s
        0x41s
        0x44s
        0x45s
        0x50s
        0x51s
        0x54s
        0x55s
        0x100s
        0x101s
        0x104s
        0x105s
        0x110s
        0x111s
        0x114s
        0x115s
        0x140s
        0x141s
        0x144s
        0x145s
        0x150s
        0x151s
        0x154s
        0x155s
        0x400s
        0x401s
        0x404s
        0x405s
        0x410s
        0x411s
        0x414s
        0x415s
        0x440s
        0x441s
        0x444s
        0x445s
        0x450s
        0x451s
        0x454s
        0x455s
        0x500s
        0x501s
        0x504s
        0x505s
        0x510s
        0x511s
        0x514s
        0x515s
        0x540s
        0x541s
        0x544s
        0x545s
        0x550s
        0x551s
        0x554s
        0x555s
        0x1000s
        0x1001s
        0x1004s
        0x1005s
        0x1010s
        0x1011s
        0x1014s
        0x1015s
        0x1040s
        0x1041s
        0x1044s
        0x1045s
        0x1050s
        0x1051s
        0x1054s
        0x1055s
        0x1100s
        0x1101s
        0x1104s
        0x1105s
        0x1110s
        0x1111s
        0x1114s
        0x1115s
        0x1140s
        0x1141s
        0x1144s
        0x1145s
        0x1150s
        0x1151s
        0x1154s
        0x1155s
        0x1400s
        0x1401s
        0x1404s
        0x1405s
        0x1410s
        0x1411s
        0x1414s
        0x1415s
        0x1440s
        0x1441s
        0x1444s
        0x1445s
        0x1450s
        0x1451s
        0x1454s
        0x1455s
        0x1500s
        0x1501s
        0x1504s
        0x1505s
        0x1510s
        0x1511s
        0x1514s
        0x1515s
        0x1540s
        0x1541s
        0x1544s
        0x1545s
        0x1550s
        0x1551s
        0x1554s
        0x1555s
        0x4000s
        0x4001s
        0x4004s
        0x4005s
        0x4010s
        0x4011s
        0x4014s
        0x4015s
        0x4040s
        0x4041s
        0x4044s
        0x4045s
        0x4050s
        0x4051s
        0x4054s
        0x4055s
        0x4100s
        0x4101s
        0x4104s
        0x4105s
        0x4110s
        0x4111s
        0x4114s
        0x4115s
        0x4140s
        0x4141s
        0x4144s
        0x4145s
        0x4150s
        0x4151s
        0x4154s
        0x4155s
        0x4400s
        0x4401s
        0x4404s
        0x4405s
        0x4410s
        0x4411s
        0x4414s
        0x4415s
        0x4440s
        0x4441s
        0x4444s
        0x4445s
        0x4450s
        0x4451s
        0x4454s
        0x4455s
        0x4500s
        0x4501s
        0x4504s
        0x4505s
        0x4510s
        0x4511s
        0x4514s
        0x4515s
        0x4540s
        0x4541s
        0x4544s
        0x4545s
        0x4550s
        0x4551s
        0x4554s
        0x4555s
        0x5000s
        0x5001s
        0x5004s
        0x5005s
        0x5010s
        0x5011s
        0x5014s
        0x5015s
        0x5040s
        0x5041s
        0x5044s
        0x5045s
        0x5050s
        0x5051s
        0x5054s
        0x5055s
        0x5100s
        0x5101s
        0x5104s
        0x5105s
        0x5110s
        0x5111s
        0x5114s
        0x5115s
        0x5140s
        0x5141s
        0x5144s
        0x5145s
        0x5150s
        0x5151s
        0x5154s
        0x5155s
        0x5400s
        0x5401s
        0x5404s
        0x5405s
        0x5410s
        0x5411s
        0x5414s
        0x5415s
        0x5440s
        0x5441s
        0x5444s
        0x5445s
        0x5450s
        0x5451s
        0x5454s
        0x5455s
        0x5500s
        0x5501s
        0x5504s
        0x5505s
        0x5510s
        0x5511s
        0x5514s
        0x5515s
        0x5540s
        0x5541s
        0x5544s
        0x5545s
        0x5550s
        0x5551s
        0x5554s
        0x5555s
    .end array-data

    .line 96
    :array_1b0
    .array-data 4
        0x1
        0x2
        0x4
        0x8
        0x10
        0x20
        0x40
        0x80
        0x100
        0x200
        0x400
        0x800
        0x1000
        0x2000
        0x4000
        0x8000
        0x10000
        0x20000
        0x40000
        0x80000
        0x100000
        0x200000
        0x400000
        0x800000
        0x1000000
        0x2000000
        0x4000000
        0x8000000
        0x10000000
        0x20000000
        0x40000000    # 2.0f
        -0x80000000
        0x0
    .end array-data

    .line 105
    :array_1f6
    .array-data 4
        0x0
        0x1
        0x3
        0x7
        0xf
        0x1f
        0x3f
        0x7f
        0xff
        0x1ff
        0x3ff
        0x7ff
        0xfff
        0x1fff
        0x3fff
        0x7fff
        0xffff
        0x1ffff
        0x3ffff
        0x7ffff
        0xfffff
        0x1fffff
        0x3fffff
        0x7fffff
        0xffffff
        0x1ffffff
        0x3ffffff
        0x7ffffff
        0xfffffff
        0x1fffffff
        0x3fffffff    # 1.9999999f
        0x7fffffff
        -0x1
    .end array-data
.end method

.method public constructor <init>(I)V
    .registers 3

    .prologue
    .line 120
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 122
    if-gtz p1, :cond_6

    .line 124
    const/4 p1, 0x1

    .line 126
    :cond_6
    add-int/lit8 v0, p1, -0x1

    shr-int/lit8 v0, v0, 0x5

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    .line 127
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    new-array v0, v0, [I

    iput-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    .line 128
    iput p1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    .line 129
    return-void
.end method

.method public constructor <init>(ILjava/lang/String;)V
    .registers 6

    .prologue
    .line 165
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 167
    if-gtz p1, :cond_6

    .line 169
    const/4 p1, 0x1

    .line 171
    :cond_6
    add-int/lit8 v0, p1, -0x1

    shr-int/lit8 v0, v0, 0x5

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    .line 172
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    new-array v0, v0, [I

    iput-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    .line 173
    iput p1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    .line 174
    const-string v0, "ZERO"

    invoke-virtual {p2, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_22

    .line 176
    invoke-virtual {p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->assignZero()V

    .line 192
    :goto_21
    return-void

    .line 178
    :cond_22
    const-string v0, "ONE"

    invoke-virtual {p2, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_2e

    .line 180
    invoke-virtual {p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->assignOne()V

    goto :goto_21

    .line 182
    :cond_2e
    const-string v0, "RANDOM"

    invoke-virtual {p2, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_3a

    .line 184
    invoke-virtual {p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->randomize()V

    goto :goto_21

    .line 186
    :cond_3a
    const-string v0, "X"

    invoke-virtual {p2, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_46

    .line 188
    invoke-virtual {p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->assignX()V

    goto :goto_21

    .line 190
    :cond_46
    const-string v0, "ALL"

    invoke-virtual {p2, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_52

    .line 192
    invoke-virtual {p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->assignAll()V

    goto :goto_21

    .line 196
    :cond_52
    new-instance v0, Ljava/lang/IllegalArgumentException;

    new-instance v1, Ljava/lang/StringBuilder;

    const-string v2, "Error: GF2Polynomial was called using "

    invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    const-string v2, " as value!"

    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
.end method

.method public constructor <init>(ILjava/math/BigInteger;)V
    .registers 13

    .prologue
    const/4 v0, 0x1

    const/4 v3, 0x0

    .line 281
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 283
    if-gtz p1, :cond_8

    move p1, v0

    .line 287
    :cond_8
    add-int/lit8 v1, p1, -0x1

    shr-int/lit8 v1, v1, 0x5

    add-int/lit8 v1, v1, 0x1

    iput v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    .line 288
    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    new-array v1, v1, [I

    iput-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    .line 289
    iput p1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    .line 291
    invoke-virtual {p2}, Ljava/math/BigInteger;->toByteArray()[B

    move-result-object v2

    .line 292
    aget-byte v1, v2, v3

    if-nez v1, :cond_b4

    .line 294
    array-length v1, v2

    add-int/lit8 v1, v1, -0x1

    new-array v1, v1, [B

    .line 295
    array-length v4, v1

    invoke-static {v2, v0, v1, v3, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    move-object v0, v1

    .line 298
    :goto_2a
    array-length v1, v0

    and-int/lit8 v2, v1, 0x3

    .line 299
    array-length v1, v0

    add-int/lit8 v1, v1, -0x1

    shr-int/lit8 v1, v1, 0x2

    add-int/lit8 v4, v1, 0x1

    move v1, v3

    .line 300
    :goto_35
    if-ge v1, v2, :cond_4d

    .line 302
    iget-object v5, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    add-int/lit8 v6, v4, -0x1

    aget v7, v5, v6

    aget-byte v8, v0, v1

    and-int/lit16 v8, v8, 0xff

    add-int/lit8 v9, v2, -0x1

    sub-int/2addr v9, v1

    shl-int/lit8 v9, v9, 0x3

    shl-int/2addr v8, v9

    or-int/2addr v7, v8

    aput v7, v5, v6

    .line 300
    add-int/lit8 v1, v1, 0x1

    goto :goto_35

    :cond_4d
    move v1, v3

    .line 305
    :goto_4e
    array-length v2, v0

    add-int/lit8 v2, v2, -0x4

    shr-int/lit8 v2, v2, 0x2

    if-gt v1, v2, :cond_97

    .line 307
    array-length v2, v0

    add-int/lit8 v2, v2, -0x1

    shl-int/lit8 v3, v1, 0x2

    sub-int/2addr v2, v3

    .line 308
    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget-byte v4, v0, v2

    and-int/lit16 v4, v4, 0xff

    aput v4, v3, v1

    .line 309
    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v4, v3, v1

    add-int/lit8 v5, v2, -0x1

    aget-byte v5, v0, v5

    shl-int/lit8 v5, v5, 0x8

    const v6, 0xff00

    and-int/2addr v5, v6

    or-int/2addr v4, v5

    aput v4, v3, v1

    .line 310
    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v4, v3, v1

    add-int/lit8 v5, v2, -0x2

    aget-byte v5, v0, v5

    shl-int/lit8 v5, v5, 0x10

    const/high16 v6, 0xff0000

    and-int/2addr v5, v6

    or-int/2addr v4, v5

    aput v4, v3, v1

    .line 311
    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v4, v3, v1

    add-int/lit8 v2, v2, -0x3

    aget-byte v2, v0, v2

    shl-int/lit8 v2, v2, 0x18

    const/high16 v5, -0x1000000

    and-int/2addr v2, v5

    or-int/2addr v2, v4

    aput v2, v3, v1

    .line 305
    add-int/lit8 v1, v1, 0x1

    goto :goto_4e

    .line 313
    :cond_97
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    and-int/lit8 v0, v0, 0x1f

    if-eqz v0, :cond_b0

    .line 315
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v1, v1, -0x1

    aget v2, v0, v1

    sget-object v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->reverseRightMask:[I

    iget v4, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    and-int/lit8 v4, v4, 0x1f

    aget v3, v3, v4

    and-int/2addr v2, v3

    aput v2, v0, v1

    .line 317
    :cond_b0
    invoke-virtual {p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->reduceN()V

    .line 318
    return-void

    :cond_b4
    move-object v0, v2

    goto/16 :goto_2a
.end method

.method public constructor <init>(ILjava/util/Random;)V
    .registers 4

    .prologue
    .line 138
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 140
    if-gtz p1, :cond_6

    .line 142
    const/4 p1, 0x1

    .line 144
    :cond_6
    add-int/lit8 v0, p1, -0x1

    shr-int/lit8 v0, v0, 0x5

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    .line 145
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    new-array v0, v0, [I

    iput-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    .line 146
    iput p1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    .line 147
    invoke-virtual {p0, p2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->randomize(Ljava/util/Random;)V

    .line 148
    return-void
.end method

.method public constructor <init>(I[B)V
    .registers 13

    .prologue
    const/high16 v9, 0xff0000

    const v8, 0xff00

    const/4 v0, 0x1

    const/high16 v7, -0x1000000

    .line 234
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 236
    if-gtz p1, :cond_e

    move p1, v0

    .line 240
    :cond_e
    add-int/lit8 v1, p1, -0x1

    shr-int/lit8 v1, v1, 0x5

    add-int/lit8 v1, v1, 0x1

    iput v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    .line 241
    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    new-array v1, v1, [I

    iput-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    .line 242
    iput p1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    .line 244
    array-length v1, p2

    add-int/lit8 v1, v1, -0x1

    shr-int/lit8 v1, v1, 0x2

    add-int/lit8 v1, v1, 0x1

    iget v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    invoke-static {v1, v2}, Ljava/lang/Math;->min(II)I

    move-result v2

    .line 245
    const/4 v1, 0x0

    :goto_2c
    add-int/lit8 v3, v2, -0x1

    if-ge v1, v3, :cond_6b

    .line 247
    array-length v3, p2

    shl-int/lit8 v4, v1, 0x2

    sub-int/2addr v3, v4

    add-int/lit8 v3, v3, -0x1

    .line 248
    iget-object v4, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget-byte v5, p2, v3

    and-int/lit16 v5, v5, 0xff

    aput v5, v4, v1

    .line 249
    iget-object v4, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v5, v4, v1

    add-int/lit8 v6, v3, -0x1

    aget-byte v6, p2, v6

    shl-int/lit8 v6, v6, 0x8

    and-int/2addr v6, v8

    or-int/2addr v5, v6

    aput v5, v4, v1

    .line 250
    iget-object v4, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v5, v4, v1

    add-int/lit8 v6, v3, -0x2

    aget-byte v6, p2, v6

    shl-int/lit8 v6, v6, 0x10

    and-int/2addr v6, v9

    or-int/2addr v5, v6

    aput v5, v4, v1

    .line 251
    iget-object v4, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v5, v4, v1

    add-int/lit8 v3, v3, -0x3

    aget-byte v3, p2, v3

    shl-int/lit8 v3, v3, 0x18

    and-int/2addr v3, v7

    or-int/2addr v3, v5

    aput v3, v4, v1

    .line 245
    add-int/lit8 v1, v1, 0x1

    goto :goto_2c

    .line 253
    :cond_6b
    add-int/lit8 v1, v2, -0x1

    .line 254
    array-length v2, p2

    shl-int/lit8 v3, v1, 0x2

    sub-int/2addr v2, v3

    add-int/lit8 v2, v2, -0x1

    .line 255
    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget-byte v4, p2, v2

    and-int/lit16 v4, v4, 0xff

    aput v4, v3, v1

    .line 256
    if-lez v2, :cond_8b

    .line 258
    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v4, v3, v1

    add-int/lit8 v5, v2, -0x1

    aget-byte v5, p2, v5

    shl-int/lit8 v5, v5, 0x8

    and-int/2addr v5, v8

    or-int/2addr v4, v5

    aput v4, v3, v1

    .line 260
    :cond_8b
    if-le v2, v0, :cond_9b

    .line 262
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v3, v0, v1

    add-int/lit8 v4, v2, -0x2

    aget-byte v4, p2, v4

    shl-int/lit8 v4, v4, 0x10

    and-int/2addr v4, v9

    or-int/2addr v3, v4

    aput v3, v0, v1

    .line 264
    :cond_9b
    const/4 v0, 0x2

    if-le v2, v0, :cond_ac

    .line 266
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v3, v0, v1

    add-int/lit8 v2, v2, -0x3

    aget-byte v2, p2, v2

    shl-int/lit8 v2, v2, 0x18

    and-int/2addr v2, v7

    or-int/2addr v2, v3

    aput v2, v0, v1

    .line 268
    :cond_ac
    invoke-direct {p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->zeroUnusedBits()V

    .line 269
    invoke-virtual {p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->reduceN()V

    .line 270
    return-void
.end method

.method public constructor <init>(I[I)V
    .registers 6

    .prologue
    const/4 v2, 0x0

    .line 211
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 213
    if-gtz p1, :cond_7

    .line 215
    const/4 p1, 0x1

    .line 217
    :cond_7
    add-int/lit8 v0, p1, -0x1

    shr-int/lit8 v0, v0, 0x5

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    .line 218
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    new-array v0, v0, [I

    iput-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    .line 219
    iput p1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    .line 220
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    array-length v1, p2

    invoke-static {v0, v1}, Ljava/lang/Math;->min(II)I

    move-result v0

    .line 221
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    invoke-static {p2, v2, v1, v2, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 222
    invoke-direct {p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->zeroUnusedBits()V

    .line 223
    return-void
.end method

.method public constructor <init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V
    .registers 3

    .prologue
    .line 326
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 327
    iget v0, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    .line 328
    iget v0, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    .line 329
    iget-object v0, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[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/GF2Polynomial;->value:[I

    .line 330
    return-void
.end method

.method private doShiftBlocksLeft(I)V
    .registers 7

    .prologue
    const/4 v1, 0x0

    .line 1969
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    array-length v2, v2

    if-gt v0, v2, :cond_25

    .line 1972
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v0, v0, -0x1

    :goto_c
    if-lt v0, p1, :cond_1b

    .line 1974
    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v4, v0, p1

    aget v3, v3, v4

    aput v3, v2, v0

    .line 1972
    add-int/lit8 v0, v0, -0x1

    goto :goto_c

    :cond_1b
    move v0, v1

    .line 1976
    :goto_1c
    if-ge v0, p1, :cond_36

    .line 1978
    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aput v1, v2, v0

    .line 1976
    add-int/lit8 v0, v0, 0x1

    goto :goto_1c

    .line 1983
    :cond_25
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    new-array v0, v0, [I

    .line 1984
    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    sub-int/2addr v3, p1

    invoke-static {v2, v1, v0, p1, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 1985
    const/4 v1, 0x0

    iput-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    .line 1986
    iput-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    .line 1988
    :cond_36
    return-void
.end method

.method private karaMult(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;
    .registers 10

    .prologue
    const/4 v3, 0x0

    .line 748
    new-instance v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    shl-int/lit8 v1, v1, 0x1

    invoke-direct {v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(I)V

    .line 749
    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    const/16 v2, 0x20

    if-gt v1, v2, :cond_1f

    .line 751
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v1, v1, v3

    iget-object v2, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v2, v2, v3

    invoke-static {v1, v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult32(II)[I

    move-result-object v1

    iput-object v1, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    .line 794
    :goto_1e
    return-object v0

    .line 754
    :cond_1f
    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    const/16 v2, 0x40

    if-gt v1, v2, :cond_30

    .line 756
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget-object v2, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    invoke-static {v1, v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult64([I[I)[I

    move-result-object v1

    iput-object v1, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    goto :goto_1e

    .line 759
    :cond_30
    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    const/16 v2, 0x80

    if-gt v1, v2, :cond_41

    .line 761
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget-object v2, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    invoke-static {v1, v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult128([I[I)[I

    move-result-object v1

    iput-object v1, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    goto :goto_1e

    .line 764
    :cond_41
    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    const/16 v2, 0x100

    if-gt v1, v2, :cond_52

    .line 766
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget-object v2, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    invoke-static {v1, v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult256([I[I)[I

    move-result-object v1

    iput-object v1, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    goto :goto_1e

    .line 769
    :cond_52
    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    const/16 v2, 0x200

    if-gt v1, v2, :cond_63

    .line 771
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget-object v2, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    invoke-static {v1, v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult512([I[I)[I

    move-result-object v1

    iput-object v1, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    goto :goto_1e

    .line 775
    :cond_63
    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    add-int/lit8 v1, v1, -0x1

    invoke-static {v1}, Lorg/spongycastle/pqc/math/linearalgebra/IntegerFunctions;->floorLog(I)I

    move-result v1

    .line 776
    sget-object v2, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->bitMask:[I

    aget v1, v2, v1

    .line 778
    add-int/lit8 v2, v1, -0x1

    shr-int/lit8 v2, v2, 0x5

    add-int/lit8 v2, v2, 0x1

    invoke-direct {p0, v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->lower(I)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    move-result-object v2

    .line 779
    add-int/lit8 v3, v1, -0x1

    shr-int/lit8 v3, v3, 0x5

    add-int/lit8 v3, v3, 0x1

    invoke-direct {p0, v3}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->upper(I)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    move-result-object v3

    .line 780
    add-int/lit8 v4, v1, -0x1

    shr-int/lit8 v4, v4, 0x5

    add-int/lit8 v4, v4, 0x1

    invoke-direct {p1, v4}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->lower(I)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    move-result-object v4

    .line 781
    add-int/lit8 v5, v1, -0x1

    shr-int/lit8 v5, v5, 0x5

    add-int/lit8 v5, v5, 0x1

    invoke-direct {p1, v5}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->upper(I)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    move-result-object v5

    .line 783
    invoke-direct {v3, v5}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->karaMult(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    move-result-object v6

    .line 784
    invoke-direct {v2, v4}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->karaMult(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    move-result-object v7

    .line 785
    invoke-virtual {v2, v3}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->addToThis(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 786
    invoke-virtual {v4, v5}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->addToThis(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 787
    invoke-direct {v2, v4}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->karaMult(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    move-result-object v2

    .line 789
    shl-int/lit8 v3, v1, 0x1

    invoke-virtual {v0, v6, v3}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->shiftLeftAddThis(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;I)V

    .line 790
    invoke-virtual {v0, v6, v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->shiftLeftAddThis(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;I)V

    .line 791
    invoke-virtual {v0, v2, v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->shiftLeftAddThis(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;I)V

    .line 792
    invoke-virtual {v0, v7, v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->shiftLeftAddThis(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;I)V

    .line 793
    invoke-virtual {v0, v7}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->addToThis(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    goto/16 :goto_1e
.end method

.method private lower(I)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;
    .registers 7

    .prologue
    const/4 v4, 0x0

    .line 1171
    new-instance v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    shl-int/lit8 v1, p1, 0x5

    invoke-direct {v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(I)V

    .line 1172
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget-object v2, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    invoke-static {p1, v3}, Ljava/lang/Math;->min(II)I

    move-result v3

    invoke-static {v1, v4, v2, v4, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 1173
    return-object v0
.end method

.method private static mult128([I[I)[I
    .registers 12

    .prologue
    .line 1003
    const/16 v0, 0x8

    new-array v0, v0, [I

    .line 1004
    const/4 v1, 0x2

    new-array v1, v1, [I

    .line 1005
    const/4 v2, 0x0

    const/4 v3, 0x0

    const/4 v4, 0x2

    array-length v5, p0

    invoke-static {v4, v5}, Ljava/lang/Math;->min(II)I

    move-result v4

    invoke-static {p0, v2, v1, v3, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 1006
    const/4 v2, 0x2

    new-array v2, v2, [I

    .line 1007
    array-length v3, p0

    const/4 v4, 0x2

    if-le v3, v4, :cond_26

    .line 1009
    const/4 v3, 0x2

    const/4 v4, 0x0

    const/4 v5, 0x2

    array-length v6, p0

    add-int/lit8 v6, v6, -0x2

    invoke-static {v5, v6}, Ljava/lang/Math;->min(II)I

    move-result v5

    invoke-static {p0, v3, v2, v4, v5}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 1011
    :cond_26
    const/4 v3, 0x2

    new-array v3, v3, [I

    .line 1012
    const/4 v4, 0x0

    const/4 v5, 0x0

    const/4 v6, 0x2

    array-length v7, p1

    invoke-static {v6, v7}, Ljava/lang/Math;->min(II)I

    move-result v6

    invoke-static {p1, v4, v3, v5, v6}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 1013
    const/4 v4, 0x2

    new-array v4, v4, [I

    .line 1014
    array-length v5, p1

    const/4 v6, 0x2

    if-le v5, v6, :cond_48

    .line 1016
    const/4 v5, 0x2

    const/4 v6, 0x0

    const/4 v7, 0x2

    array-length v8, p1

    add-int/lit8 v8, v8, -0x2

    invoke-static {v7, v8}, Ljava/lang/Math;->min(II)I

    move-result v7

    invoke-static {p1, v5, v4, v6, v7}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 1018
    :cond_48
    const/4 v5, 0x1

    aget v5, v2, v5

    if-nez v5, :cond_10d

    const/4 v5, 0x1

    aget v5, v4, v5

    if-nez v5, :cond_10d

    .line 1020
    const/4 v5, 0x0

    aget v5, v2, v5

    if-nez v5, :cond_5c

    const/4 v5, 0x0

    aget v5, v4, v5

    if-eqz v5, :cond_8a

    .line 1022
    :cond_5c
    const/4 v5, 0x0

    aget v5, v2, v5

    const/4 v6, 0x0

    aget v6, v4, v6

    invoke-static {v5, v6}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult32(II)[I

    move-result-object v5

    .line 1023
    const/4 v6, 0x5

    aget v7, v0, v6

    const/4 v8, 0x1

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 1024
    const/4 v6, 0x4

    aget v7, v0, v6

    const/4 v8, 0x0

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 1025
    const/4 v6, 0x3

    aget v7, v0, v6

    const/4 v8, 0x1

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 1026
    const/4 v6, 0x2

    aget v7, v0, v6

    const/4 v8, 0x0

    aget v5, v5, v8

    xor-int/2addr v5, v7

    aput v5, v0, v6

    .line 1039
    :cond_8a
    :goto_8a
    const/4 v5, 0x0

    aget v6, v2, v5

    const/4 v7, 0x0

    aget v7, v1, v7

    xor-int/2addr v6, v7

    aput v6, v2, v5

    .line 1040
    const/4 v5, 0x1

    aget v6, v2, v5

    const/4 v7, 0x1

    aget v7, v1, v7

    xor-int/2addr v6, v7

    aput v6, v2, v5

    .line 1041
    const/4 v5, 0x0

    aget v6, v4, v5

    const/4 v7, 0x0

    aget v7, v3, v7

    xor-int/2addr v6, v7

    aput v6, v4, v5

    .line 1042
    const/4 v5, 0x1

    aget v6, v4, v5

    const/4 v7, 0x1

    aget v7, v3, v7

    xor-int/2addr v6, v7

    aput v6, v4, v5

    .line 1043
    const/4 v5, 0x1

    aget v5, v2, v5

    if-nez v5, :cond_151

    const/4 v5, 0x1

    aget v5, v4, v5

    if-nez v5, :cond_151

    .line 1045
    const/4 v5, 0x0

    aget v2, v2, v5

    const/4 v5, 0x0

    aget v4, v4, v5

    invoke-static {v2, v4}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult32(II)[I

    move-result-object v2

    .line 1046
    const/4 v4, 0x3

    aget v5, v0, v4

    const/4 v6, 0x1

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 1047
    const/4 v4, 0x2

    aget v5, v0, v4

    const/4 v6, 0x0

    aget v2, v2, v6

    xor-int/2addr v2, v5

    aput v2, v0, v4

    .line 1057
    :goto_d4
    const/4 v2, 0x1

    aget v2, v1, v2

    if-nez v2, :cond_17b

    const/4 v2, 0x1

    aget v2, v3, v2

    if-nez v2, :cond_17b

    .line 1059
    const/4 v2, 0x0

    aget v1, v1, v2

    const/4 v2, 0x0

    aget v2, v3, v2

    invoke-static {v1, v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult32(II)[I

    move-result-object v1

    .line 1060
    const/4 v2, 0x3

    aget v3, v0, v2

    const/4 v4, 0x1

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 1061
    const/4 v2, 0x2

    aget v3, v0, v2

    const/4 v4, 0x0

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 1062
    const/4 v2, 0x1

    aget v3, v0, v2

    const/4 v4, 0x1

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 1063
    const/4 v2, 0x0

    aget v3, v0, v2

    const/4 v4, 0x0

    aget v1, v1, v4

    xor-int/2addr v1, v3

    aput v1, v0, v2

    .line 1075
    :goto_10c
    return-object v0

    .line 1031
    :cond_10d
    invoke-static {v2, v4}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult64([I[I)[I

    move-result-object v5

    .line 1032
    const/4 v6, 0x7

    aget v7, v0, v6

    const/4 v8, 0x3

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 1033
    const/4 v6, 0x6

    aget v7, v0, v6

    const/4 v8, 0x2

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 1034
    const/4 v6, 0x5

    aget v7, v0, v6

    const/4 v8, 0x1

    aget v8, v5, v8

    const/4 v9, 0x3

    aget v9, v5, v9

    xor-int/2addr v8, v9

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 1035
    const/4 v6, 0x4

    aget v7, v0, v6

    const/4 v8, 0x0

    aget v8, v5, v8

    const/4 v9, 0x2

    aget v9, v5, v9

    xor-int/2addr v8, v9

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 1036
    const/4 v6, 0x3

    aget v7, v0, v6

    const/4 v8, 0x1

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 1037
    const/4 v6, 0x2

    aget v7, v0, v6

    const/4 v8, 0x0

    aget v5, v5, v8

    xor-int/2addr v5, v7

    aput v5, v0, v6

    goto/16 :goto_8a

    .line 1051
    :cond_151
    invoke-static {v2, v4}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult64([I[I)[I

    move-result-object v2

    .line 1052
    const/4 v4, 0x5

    aget v5, v0, v4

    const/4 v6, 0x3

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 1053
    const/4 v4, 0x4

    aget v5, v0, v4

    const/4 v6, 0x2

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 1054
    const/4 v4, 0x3

    aget v5, v0, v4

    const/4 v6, 0x1

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 1055
    const/4 v4, 0x2

    aget v5, v0, v4

    const/4 v6, 0x0

    aget v2, v2, v6

    xor-int/2addr v2, v5

    aput v2, v0, v4

    goto/16 :goto_d4

    .line 1067
    :cond_17b
    invoke-static {v1, v3}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult64([I[I)[I

    move-result-object v1

    .line 1068
    const/4 v2, 0x5

    aget v3, v0, v2

    const/4 v4, 0x3

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 1069
    const/4 v2, 0x4

    aget v3, v0, v2

    const/4 v4, 0x2

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 1070
    const/4 v2, 0x3

    aget v3, v0, v2

    const/4 v4, 0x1

    aget v4, v1, v4

    const/4 v5, 0x3

    aget v5, v1, v5

    xor-int/2addr v4, v5

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 1071
    const/4 v2, 0x2

    aget v3, v0, v2

    const/4 v4, 0x0

    aget v4, v1, v4

    const/4 v5, 0x2

    aget v5, v1, v5

    xor-int/2addr v4, v5

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 1072
    const/4 v2, 0x1

    aget v3, v0, v2

    const/4 v4, 0x1

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 1073
    const/4 v2, 0x0

    aget v3, v0, v2

    const/4 v4, 0x0

    aget v1, v1, v4

    xor-int/2addr v1, v3

    aput v1, v0, v2

    goto/16 :goto_10c
.end method

.method private static mult256([I[I)[I
    .registers 12

    .prologue
    .line 908
    const/16 v0, 0x10

    new-array v0, v0, [I

    .line 909
    const/4 v1, 0x4

    new-array v1, v1, [I

    .line 910
    const/4 v2, 0x0

    const/4 v3, 0x0

    const/4 v4, 0x4

    array-length v5, p0

    invoke-static {v4, v5}, Ljava/lang/Math;->min(II)I

    move-result v4

    invoke-static {p0, v2, v1, v3, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 911
    const/4 v2, 0x4

    new-array v2, v2, [I

    .line 912
    array-length v3, p0

    const/4 v4, 0x4

    if-le v3, v4, :cond_26

    .line 914
    const/4 v3, 0x4

    const/4 v4, 0x0

    const/4 v5, 0x4

    array-length v6, p0

    add-int/lit8 v6, v6, -0x4

    invoke-static {v5, v6}, Ljava/lang/Math;->min(II)I

    move-result v5

    invoke-static {p0, v3, v2, v4, v5}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 916
    :cond_26
    const/4 v3, 0x4

    new-array v3, v3, [I

    .line 917
    const/4 v4, 0x0

    const/4 v5, 0x0

    const/4 v6, 0x4

    array-length v7, p1

    invoke-static {v6, v7}, Ljava/lang/Math;->min(II)I

    move-result v6

    invoke-static {p1, v4, v3, v5, v6}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 918
    const/4 v4, 0x4

    new-array v4, v4, [I

    .line 919
    array-length v5, p1

    const/4 v6, 0x4

    if-le v5, v6, :cond_48

    .line 921
    const/4 v5, 0x4

    const/4 v6, 0x0

    const/4 v7, 0x4

    array-length v8, p1

    add-int/lit8 v8, v8, -0x4

    invoke-static {v7, v8}, Ljava/lang/Math;->min(II)I

    move-result v7

    invoke-static {p1, v5, v4, v6, v7}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 923
    :cond_48
    const/4 v5, 0x3

    aget v5, v2, v5

    if-nez v5, :cond_20f

    const/4 v5, 0x2

    aget v5, v2, v5

    if-nez v5, :cond_20f

    const/4 v5, 0x3

    aget v5, v4, v5

    if-nez v5, :cond_20f

    const/4 v5, 0x2

    aget v5, v4, v5

    if-nez v5, :cond_20f

    .line 925
    const/4 v5, 0x1

    aget v5, v2, v5

    if-nez v5, :cond_1bd

    const/4 v5, 0x1

    aget v5, v4, v5

    if-nez v5, :cond_1bd

    .line 927
    const/4 v5, 0x0

    aget v5, v2, v5

    if-nez v5, :cond_70

    const/4 v5, 0x0

    aget v5, v4, v5

    if-eqz v5, :cond_a0

    .line 929
    :cond_70
    const/4 v5, 0x0

    aget v5, v2, v5

    const/4 v6, 0x0

    aget v6, v4, v6

    invoke-static {v5, v6}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult32(II)[I

    move-result-object v5

    .line 930
    const/16 v6, 0x9

    aget v7, v0, v6

    const/4 v8, 0x1

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 931
    const/16 v6, 0x8

    aget v7, v0, v6

    const/4 v8, 0x0

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 932
    const/4 v6, 0x5

    aget v7, v0, v6

    const/4 v8, 0x1

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 933
    const/4 v6, 0x4

    aget v7, v0, v6

    const/4 v8, 0x0

    aget v5, v5, v8

    xor-int/2addr v5, v7

    aput v5, v0, v6

    .line 965
    :cond_a0
    :goto_a0
    const/4 v5, 0x0

    aget v6, v2, v5

    const/4 v7, 0x0

    aget v7, v1, v7

    xor-int/2addr v6, v7

    aput v6, v2, v5

    .line 966
    const/4 v5, 0x1

    aget v6, v2, v5

    const/4 v7, 0x1

    aget v7, v1, v7

    xor-int/2addr v6, v7

    aput v6, v2, v5

    .line 967
    const/4 v5, 0x2

    aget v6, v2, v5

    const/4 v7, 0x2

    aget v7, v1, v7

    xor-int/2addr v6, v7

    aput v6, v2, v5

    .line 968
    const/4 v5, 0x3

    aget v6, v2, v5

    const/4 v7, 0x3

    aget v7, v1, v7

    xor-int/2addr v6, v7

    aput v6, v2, v5

    .line 969
    const/4 v5, 0x0

    aget v6, v4, v5

    const/4 v7, 0x0

    aget v7, v3, v7

    xor-int/2addr v6, v7

    aput v6, v4, v5

    .line 970
    const/4 v5, 0x1

    aget v6, v4, v5

    const/4 v7, 0x1

    aget v7, v3, v7

    xor-int/2addr v6, v7

    aput v6, v4, v5

    .line 971
    const/4 v5, 0x2

    aget v6, v4, v5

    const/4 v7, 0x2

    aget v7, v3, v7

    xor-int/2addr v6, v7

    aput v6, v4, v5

    .line 972
    const/4 v5, 0x3

    aget v6, v4, v5

    const/4 v7, 0x3

    aget v7, v3, v7

    xor-int/2addr v6, v7

    aput v6, v4, v5

    .line 973
    invoke-static {v2, v4}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult128([I[I)[I

    move-result-object v2

    .line 974
    const/16 v4, 0xb

    aget v5, v0, v4

    const/4 v6, 0x7

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 975
    const/16 v4, 0xa

    aget v5, v0, v4

    const/4 v6, 0x6

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 976
    const/16 v4, 0x9

    aget v5, v0, v4

    const/4 v6, 0x5

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 977
    const/16 v4, 0x8

    aget v5, v0, v4

    const/4 v6, 0x4

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 978
    const/4 v4, 0x7

    aget v5, v0, v4

    const/4 v6, 0x3

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 979
    const/4 v4, 0x6

    aget v5, v0, v4

    const/4 v6, 0x2

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 980
    const/4 v4, 0x5

    aget v5, v0, v4

    const/4 v6, 0x1

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 981
    const/4 v4, 0x4

    aget v5, v0, v4

    const/4 v6, 0x0

    aget v2, v2, v6

    xor-int/2addr v2, v5

    aput v2, v0, v4

    .line 982
    invoke-static {v1, v3}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult128([I[I)[I

    move-result-object v1

    .line 983
    const/16 v2, 0xb

    aget v3, v0, v2

    const/4 v4, 0x7

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 984
    const/16 v2, 0xa

    aget v3, v0, v2

    const/4 v4, 0x6

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 985
    const/16 v2, 0x9

    aget v3, v0, v2

    const/4 v4, 0x5

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 986
    const/16 v2, 0x8

    aget v3, v0, v2

    const/4 v4, 0x4

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 987
    const/4 v2, 0x7

    aget v3, v0, v2

    const/4 v4, 0x3

    aget v4, v1, v4

    const/4 v5, 0x7

    aget v5, v1, v5

    xor-int/2addr v4, v5

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 988
    const/4 v2, 0x6

    aget v3, v0, v2

    const/4 v4, 0x2

    aget v4, v1, v4

    const/4 v5, 0x6

    aget v5, v1, v5

    xor-int/2addr v4, v5

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 989
    const/4 v2, 0x5

    aget v3, v0, v2

    const/4 v4, 0x1

    aget v4, v1, v4

    const/4 v5, 0x5

    aget v5, v1, v5

    xor-int/2addr v4, v5

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 990
    const/4 v2, 0x4

    aget v3, v0, v2

    const/4 v4, 0x0

    aget v4, v1, v4

    const/4 v5, 0x4

    aget v5, v1, v5

    xor-int/2addr v4, v5

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 991
    const/4 v2, 0x3

    aget v3, v0, v2

    const/4 v4, 0x3

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 992
    const/4 v2, 0x2

    aget v3, v0, v2

    const/4 v4, 0x2

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 993
    const/4 v2, 0x1

    aget v3, v0, v2

    const/4 v4, 0x1

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 994
    const/4 v2, 0x0

    aget v3, v0, v2

    const/4 v4, 0x0

    aget v1, v1, v4

    xor-int/2addr v1, v3

    aput v1, v0, v2

    .line 995
    return-object v0

    .line 938
    :cond_1bd
    invoke-static {v2, v4}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult64([I[I)[I

    move-result-object v5

    .line 939
    const/16 v6, 0xb

    aget v7, v0, v6

    const/4 v8, 0x3

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 940
    const/16 v6, 0xa

    aget v7, v0, v6

    const/4 v8, 0x2

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 941
    const/16 v6, 0x9

    aget v7, v0, v6

    const/4 v8, 0x1

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 942
    const/16 v6, 0x8

    aget v7, v0, v6

    const/4 v8, 0x0

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 943
    const/4 v6, 0x7

    aget v7, v0, v6

    const/4 v8, 0x3

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 944
    const/4 v6, 0x6

    aget v7, v0, v6

    const/4 v8, 0x2

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 945
    const/4 v6, 0x5

    aget v7, v0, v6

    const/4 v8, 0x1

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 946
    const/4 v6, 0x4

    aget v7, v0, v6

    const/4 v8, 0x0

    aget v5, v5, v8

    xor-int/2addr v5, v7

    aput v5, v0, v6

    goto/16 :goto_a0

    .line 951
    :cond_20f
    invoke-static {v2, v4}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult128([I[I)[I

    move-result-object v5

    .line 952
    const/16 v6, 0xf

    aget v7, v0, v6

    const/4 v8, 0x7

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 953
    const/16 v6, 0xe

    aget v7, v0, v6

    const/4 v8, 0x6

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 954
    const/16 v6, 0xd

    aget v7, v0, v6

    const/4 v8, 0x5

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 955
    const/16 v6, 0xc

    aget v7, v0, v6

    const/4 v8, 0x4

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 956
    const/16 v6, 0xb

    aget v7, v0, v6

    const/4 v8, 0x3

    aget v8, v5, v8

    const/4 v9, 0x7

    aget v9, v5, v9

    xor-int/2addr v8, v9

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 957
    const/16 v6, 0xa

    aget v7, v0, v6

    const/4 v8, 0x2

    aget v8, v5, v8

    const/4 v9, 0x6

    aget v9, v5, v9

    xor-int/2addr v8, v9

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 958
    const/16 v6, 0x9

    aget v7, v0, v6

    const/4 v8, 0x1

    aget v8, v5, v8

    const/4 v9, 0x5

    aget v9, v5, v9

    xor-int/2addr v8, v9

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 959
    const/16 v6, 0x8

    aget v7, v0, v6

    const/4 v8, 0x0

    aget v8, v5, v8

    const/4 v9, 0x4

    aget v9, v5, v9

    xor-int/2addr v8, v9

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 960
    const/4 v6, 0x7

    aget v7, v0, v6

    const/4 v8, 0x3

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 961
    const/4 v6, 0x6

    aget v7, v0, v6

    const/4 v8, 0x2

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 962
    const/4 v6, 0x5

    aget v7, v0, v6

    const/4 v8, 0x1

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 963
    const/4 v6, 0x4

    aget v7, v0, v6

    const/4 v8, 0x0

    aget v5, v5, v8

    xor-int/2addr v5, v7

    aput v5, v0, v6

    goto/16 :goto_a0
.end method

.method private static mult32(II)[I
    .registers 12

    .prologue
    const/16 v9, 0x20

    const/4 v6, 0x1

    .line 1118
    const/4 v0, 0x2

    new-array v2, v0, [I

    .line 1119
    if-eqz p0, :cond_a

    if-nez p1, :cond_c

    :cond_a
    move-object v0, v2

    .line 1137
    :goto_b
    return-object v0

    .line 1123
    :cond_c
    int-to-long v0, p1

    .line 1124
    const-wide v4, 0xffffffffL

    and-long/2addr v4, v0

    .line 1126
    const-wide/16 v0, 0x0

    move v3, v6

    .line 1127
    :goto_16
    if-gt v3, v9, :cond_26

    .line 1129
    sget-object v7, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->bitMask:[I

    add-int/lit8 v8, v3, -0x1

    aget v7, v7, v8

    and-int/2addr v7, p0

    if-eqz v7, :cond_22

    .line 1131
    xor-long/2addr v0, v4

    .line 1133
    :cond_22
    shl-long/2addr v4, v6

    .line 1127
    add-int/lit8 v3, v3, 0x1

    goto :goto_16

    .line 1135
    :cond_26
    ushr-long v4, v0, v9

    long-to-int v3, v4

    aput v3, v2, v6

    .line 1136
    const/4 v3, 0x0

    long-to-int v0, v0

    aput v0, v2, v3

    move-object v0, v2

    .line 1137
    goto :goto_b
.end method

.method private static mult512([I[I)[I
    .registers 12

    .prologue
    .line 802
    const/16 v0, 0x20

    new-array v0, v0, [I

    .line 803
    const/16 v1, 0x8

    new-array v1, v1, [I

    .line 804
    const/4 v2, 0x0

    const/4 v3, 0x0

    const/16 v4, 0x8

    array-length v5, p0

    invoke-static {v4, v5}, Ljava/lang/Math;->min(II)I

    move-result v4

    invoke-static {p0, v2, v1, v3, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 805
    const/16 v2, 0x8

    new-array v2, v2, [I

    .line 806
    array-length v3, p0

    const/16 v4, 0x8

    if-le v3, v4, :cond_2c

    .line 808
    const/16 v3, 0x8

    const/4 v4, 0x0

    const/16 v5, 0x8

    array-length v6, p0

    add-int/lit8 v6, v6, -0x8

    invoke-static {v5, v6}, Ljava/lang/Math;->min(II)I

    move-result v5

    invoke-static {p0, v3, v2, v4, v5}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 810
    :cond_2c
    const/16 v3, 0x8

    new-array v3, v3, [I

    .line 811
    const/4 v4, 0x0

    const/4 v5, 0x0

    const/16 v6, 0x8

    array-length v7, p1

    invoke-static {v6, v7}, Ljava/lang/Math;->min(II)I

    move-result v6

    invoke-static {p1, v4, v3, v5, v6}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 812
    const/16 v4, 0x8

    new-array v4, v4, [I

    .line 813
    array-length v5, p1

    const/16 v6, 0x8

    if-le v5, v6, :cond_54

    .line 815
    const/16 v5, 0x8

    const/4 v6, 0x0

    const/16 v7, 0x8

    array-length v8, p1

    add-int/lit8 v8, v8, -0x8

    invoke-static {v7, v8}, Ljava/lang/Math;->min(II)I

    move-result v7

    invoke-static {p1, v5, v4, v6, v7}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 817
    :cond_54
    invoke-static {v2, v4}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult256([I[I)[I

    move-result-object v5

    .line 818
    const/16 v6, 0x1f

    aget v7, v0, v6

    const/16 v8, 0xf

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 819
    const/16 v6, 0x1e

    aget v7, v0, v6

    const/16 v8, 0xe

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 820
    const/16 v6, 0x1d

    aget v7, v0, v6

    const/16 v8, 0xd

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 821
    const/16 v6, 0x1c

    aget v7, v0, v6

    const/16 v8, 0xc

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 822
    const/16 v6, 0x1b

    aget v7, v0, v6

    const/16 v8, 0xb

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 823
    const/16 v6, 0x1a

    aget v7, v0, v6

    const/16 v8, 0xa

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 824
    const/16 v6, 0x19

    aget v7, v0, v6

    const/16 v8, 0x9

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 825
    const/16 v6, 0x18

    aget v7, v0, v6

    const/16 v8, 0x8

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 826
    const/16 v6, 0x17

    aget v7, v0, v6

    const/4 v8, 0x7

    aget v8, v5, v8

    const/16 v9, 0xf

    aget v9, v5, v9

    xor-int/2addr v8, v9

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 827
    const/16 v6, 0x16

    aget v7, v0, v6

    const/4 v8, 0x6

    aget v8, v5, v8

    const/16 v9, 0xe

    aget v9, v5, v9

    xor-int/2addr v8, v9

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 828
    const/16 v6, 0x15

    aget v7, v0, v6

    const/4 v8, 0x5

    aget v8, v5, v8

    const/16 v9, 0xd

    aget v9, v5, v9

    xor-int/2addr v8, v9

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 829
    const/16 v6, 0x14

    aget v7, v0, v6

    const/4 v8, 0x4

    aget v8, v5, v8

    const/16 v9, 0xc

    aget v9, v5, v9

    xor-int/2addr v8, v9

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 830
    const/16 v6, 0x13

    aget v7, v0, v6

    const/4 v8, 0x3

    aget v8, v5, v8

    const/16 v9, 0xb

    aget v9, v5, v9

    xor-int/2addr v8, v9

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 831
    const/16 v6, 0x12

    aget v7, v0, v6

    const/4 v8, 0x2

    aget v8, v5, v8

    const/16 v9, 0xa

    aget v9, v5, v9

    xor-int/2addr v8, v9

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 832
    const/16 v6, 0x11

    aget v7, v0, v6

    const/4 v8, 0x1

    aget v8, v5, v8

    const/16 v9, 0x9

    aget v9, v5, v9

    xor-int/2addr v8, v9

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 833
    const/16 v6, 0x10

    aget v7, v0, v6

    const/4 v8, 0x0

    aget v8, v5, v8

    const/16 v9, 0x8

    aget v9, v5, v9

    xor-int/2addr v8, v9

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 834
    const/16 v6, 0xf

    aget v7, v0, v6

    const/4 v8, 0x7

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 835
    const/16 v6, 0xe

    aget v7, v0, v6

    const/4 v8, 0x6

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 836
    const/16 v6, 0xd

    aget v7, v0, v6

    const/4 v8, 0x5

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 837
    const/16 v6, 0xc

    aget v7, v0, v6

    const/4 v8, 0x4

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 838
    const/16 v6, 0xb

    aget v7, v0, v6

    const/4 v8, 0x3

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 839
    const/16 v6, 0xa

    aget v7, v0, v6

    const/4 v8, 0x2

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 840
    const/16 v6, 0x9

    aget v7, v0, v6

    const/4 v8, 0x1

    aget v8, v5, v8

    xor-int/2addr v7, v8

    aput v7, v0, v6

    .line 841
    const/16 v6, 0x8

    aget v7, v0, v6

    const/4 v8, 0x0

    aget v5, v5, v8

    xor-int/2addr v5, v7

    aput v5, v0, v6

    .line 842
    const/4 v5, 0x0

    aget v6, v2, v5

    const/4 v7, 0x0

    aget v7, v1, v7

    xor-int/2addr v6, v7

    aput v6, v2, v5

    .line 843
    const/4 v5, 0x1

    aget v6, v2, v5

    const/4 v7, 0x1

    aget v7, v1, v7

    xor-int/2addr v6, v7

    aput v6, v2, v5

    .line 844
    const/4 v5, 0x2

    aget v6, v2, v5

    const/4 v7, 0x2

    aget v7, v1, v7

    xor-int/2addr v6, v7

    aput v6, v2, v5

    .line 845
    const/4 v5, 0x3

    aget v6, v2, v5

    const/4 v7, 0x3

    aget v7, v1, v7

    xor-int/2addr v6, v7

    aput v6, v2, v5

    .line 846
    const/4 v5, 0x4

    aget v6, v2, v5

    const/4 v7, 0x4

    aget v7, v1, v7

    xor-int/2addr v6, v7

    aput v6, v2, v5

    .line 847
    const/4 v5, 0x5

    aget v6, v2, v5

    const/4 v7, 0x5

    aget v7, v1, v7

    xor-int/2addr v6, v7

    aput v6, v2, v5

    .line 848
    const/4 v5, 0x6

    aget v6, v2, v5

    const/4 v7, 0x6

    aget v7, v1, v7

    xor-int/2addr v6, v7

    aput v6, v2, v5

    .line 849
    const/4 v5, 0x7

    aget v6, v2, v5

    const/4 v7, 0x7

    aget v7, v1, v7

    xor-int/2addr v6, v7

    aput v6, v2, v5

    .line 850
    const/4 v5, 0x0

    aget v6, v4, v5

    const/4 v7, 0x0

    aget v7, v3, v7

    xor-int/2addr v6, v7

    aput v6, v4, v5

    .line 851
    const/4 v5, 0x1

    aget v6, v4, v5

    const/4 v7, 0x1

    aget v7, v3, v7

    xor-int/2addr v6, v7

    aput v6, v4, v5

    .line 852
    const/4 v5, 0x2

    aget v6, v4, v5

    const/4 v7, 0x2

    aget v7, v3, v7

    xor-int/2addr v6, v7

    aput v6, v4, v5

    .line 853
    const/4 v5, 0x3

    aget v6, v4, v5

    const/4 v7, 0x3

    aget v7, v3, v7

    xor-int/2addr v6, v7

    aput v6, v4, v5

    .line 854
    const/4 v5, 0x4

    aget v6, v4, v5

    const/4 v7, 0x4

    aget v7, v3, v7

    xor-int/2addr v6, v7

    aput v6, v4, v5

    .line 855
    const/4 v5, 0x5

    aget v6, v4, v5

    const/4 v7, 0x5

    aget v7, v3, v7

    xor-int/2addr v6, v7

    aput v6, v4, v5

    .line 856
    const/4 v5, 0x6

    aget v6, v4, v5

    const/4 v7, 0x6

    aget v7, v3, v7

    xor-int/2addr v6, v7

    aput v6, v4, v5

    .line 857
    const/4 v5, 0x7

    aget v6, v4, v5

    const/4 v7, 0x7

    aget v7, v3, v7

    xor-int/2addr v6, v7

    aput v6, v4, v5

    .line 858
    invoke-static {v2, v4}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult256([I[I)[I

    move-result-object v2

    .line 859
    const/16 v4, 0x17

    aget v5, v0, v4

    const/16 v6, 0xf

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 860
    const/16 v4, 0x16

    aget v5, v0, v4

    const/16 v6, 0xe

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 861
    const/16 v4, 0x15

    aget v5, v0, v4

    const/16 v6, 0xd

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 862
    const/16 v4, 0x14

    aget v5, v0, v4

    const/16 v6, 0xc

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 863
    const/16 v4, 0x13

    aget v5, v0, v4

    const/16 v6, 0xb

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 864
    const/16 v4, 0x12

    aget v5, v0, v4

    const/16 v6, 0xa

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 865
    const/16 v4, 0x11

    aget v5, v0, v4

    const/16 v6, 0x9

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 866
    const/16 v4, 0x10

    aget v5, v0, v4

    const/16 v6, 0x8

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 867
    const/16 v4, 0xf

    aget v5, v0, v4

    const/4 v6, 0x7

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 868
    const/16 v4, 0xe

    aget v5, v0, v4

    const/4 v6, 0x6

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 869
    const/16 v4, 0xd

    aget v5, v0, v4

    const/4 v6, 0x5

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 870
    const/16 v4, 0xc

    aget v5, v0, v4

    const/4 v6, 0x4

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 871
    const/16 v4, 0xb

    aget v5, v0, v4

    const/4 v6, 0x3

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 872
    const/16 v4, 0xa

    aget v5, v0, v4

    const/4 v6, 0x2

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 873
    const/16 v4, 0x9

    aget v5, v0, v4

    const/4 v6, 0x1

    aget v6, v2, v6

    xor-int/2addr v5, v6

    aput v5, v0, v4

    .line 874
    const/16 v4, 0x8

    aget v5, v0, v4

    const/4 v6, 0x0

    aget v2, v2, v6

    xor-int/2addr v2, v5

    aput v2, v0, v4

    .line 875
    invoke-static {v1, v3}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult256([I[I)[I

    move-result-object v1

    .line 876
    const/16 v2, 0x17

    aget v3, v0, v2

    const/16 v4, 0xf

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 877
    const/16 v2, 0x16

    aget v3, v0, v2

    const/16 v4, 0xe

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 878
    const/16 v2, 0x15

    aget v3, v0, v2

    const/16 v4, 0xd

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 879
    const/16 v2, 0x14

    aget v3, v0, v2

    const/16 v4, 0xc

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 880
    const/16 v2, 0x13

    aget v3, v0, v2

    const/16 v4, 0xb

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 881
    const/16 v2, 0x12

    aget v3, v0, v2

    const/16 v4, 0xa

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 882
    const/16 v2, 0x11

    aget v3, v0, v2

    const/16 v4, 0x9

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 883
    const/16 v2, 0x10

    aget v3, v0, v2

    const/16 v4, 0x8

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 884
    const/16 v2, 0xf

    aget v3, v0, v2

    const/4 v4, 0x7

    aget v4, v1, v4

    const/16 v5, 0xf

    aget v5, v1, v5

    xor-int/2addr v4, v5

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 885
    const/16 v2, 0xe

    aget v3, v0, v2

    const/4 v4, 0x6

    aget v4, v1, v4

    const/16 v5, 0xe

    aget v5, v1, v5

    xor-int/2addr v4, v5

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 886
    const/16 v2, 0xd

    aget v3, v0, v2

    const/4 v4, 0x5

    aget v4, v1, v4

    const/16 v5, 0xd

    aget v5, v1, v5

    xor-int/2addr v4, v5

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 887
    const/16 v2, 0xc

    aget v3, v0, v2

    const/4 v4, 0x4

    aget v4, v1, v4

    const/16 v5, 0xc

    aget v5, v1, v5

    xor-int/2addr v4, v5

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 888
    const/16 v2, 0xb

    aget v3, v0, v2

    const/4 v4, 0x3

    aget v4, v1, v4

    const/16 v5, 0xb

    aget v5, v1, v5

    xor-int/2addr v4, v5

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 889
    const/16 v2, 0xa

    aget v3, v0, v2

    const/4 v4, 0x2

    aget v4, v1, v4

    const/16 v5, 0xa

    aget v5, v1, v5

    xor-int/2addr v4, v5

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 890
    const/16 v2, 0x9

    aget v3, v0, v2

    const/4 v4, 0x1

    aget v4, v1, v4

    const/16 v5, 0x9

    aget v5, v1, v5

    xor-int/2addr v4, v5

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 891
    const/16 v2, 0x8

    aget v3, v0, v2

    const/4 v4, 0x0

    aget v4, v1, v4

    const/16 v5, 0x8

    aget v5, v1, v5

    xor-int/2addr v4, v5

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 892
    const/4 v2, 0x7

    aget v3, v0, v2

    const/4 v4, 0x7

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 893
    const/4 v2, 0x6

    aget v3, v0, v2

    const/4 v4, 0x6

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 894
    const/4 v2, 0x5

    aget v3, v0, v2

    const/4 v4, 0x5

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 895
    const/4 v2, 0x4

    aget v3, v0, v2

    const/4 v4, 0x4

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 896
    const/4 v2, 0x3

    aget v3, v0, v2

    const/4 v4, 0x3

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 897
    const/4 v2, 0x2

    aget v3, v0, v2

    const/4 v4, 0x2

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 898
    const/4 v2, 0x1

    aget v3, v0, v2

    const/4 v4, 0x1

    aget v4, v1, v4

    xor-int/2addr v3, v4

    aput v3, v0, v2

    .line 899
    const/4 v2, 0x0

    aget v3, v0, v2

    const/4 v4, 0x0

    aget v1, v1, v4

    xor-int/2addr v1, v3

    aput v1, v0, v2

    .line 900
    return-object v0
.end method

.method private static mult64([I[I)[I
    .registers 14

    .prologue
    const/4 v11, 0x2

    const/4 v1, 0x0

    const/4 v10, 0x1

    .line 1083
    const/4 v0, 0x4

    new-array v3, v0, [I

    .line 1084
    aget v4, p0, v1

    .line 1086
    array-length v0, p0

    if-le v0, v10, :cond_68

    .line 1088
    aget v0, p0, v10

    .line 1090
    :goto_d
    aget v5, p1, v1

    .line 1092
    array-length v2, p1

    if-le v2, v10, :cond_66

    .line 1094
    aget v2, p1, v10

    .line 1096
    :goto_14
    if-nez v0, :cond_18

    if-eqz v2, :cond_35

    .line 1098
    :cond_18
    invoke-static {v0, v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult32(II)[I

    move-result-object v6

    .line 1099
    const/4 v7, 0x3

    aget v8, v3, v7

    aget v9, v6, v10

    xor-int/2addr v8, v9

    aput v8, v3, v7

    .line 1100
    aget v7, v3, v11

    aget v8, v6, v1

    aget v9, v6, v10

    xor-int/2addr v8, v9

    xor-int/2addr v7, v8

    aput v7, v3, v11

    .line 1101
    aget v7, v3, v10

    aget v6, v6, v1

    xor-int/2addr v6, v7

    aput v6, v3, v10

    .line 1103
    :cond_35
    xor-int/2addr v0, v4

    xor-int/2addr v2, v5

    invoke-static {v0, v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult32(II)[I

    move-result-object v0

    .line 1104
    aget v2, v3, v11

    aget v6, v0, v10

    xor-int/2addr v2, v6

    aput v2, v3, v11

    .line 1105
    aget v2, v3, v10

    aget v0, v0, v1

    xor-int/2addr v0, v2

    aput v0, v3, v10

    .line 1106
    invoke-static {v4, v5}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->mult32(II)[I

    move-result-object v0

    .line 1107
    aget v2, v3, v11

    aget v4, v0, v10

    xor-int/2addr v2, v4

    aput v2, v3, v11

    .line 1108
    aget v2, v3, v10

    aget v4, v0, v1

    aget v5, v0, v10

    xor-int/2addr v4, v5

    xor-int/2addr v2, v4

    aput v2, v3, v10

    .line 1109
    aget v2, v3, v1

    aget v0, v0, v1

    xor-int/2addr v0, v2

    aput v0, v3, v1

    .line 1110
    return-object v3

    :cond_66
    move v2, v1

    goto :goto_14

    :cond_68
    move v0, v1

    goto :goto_d
.end method

.method private upper(I)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;
    .registers 7

    .prologue
    .line 1151
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    sub-int/2addr v0, p1

    invoke-static {p1, v0}, Ljava/lang/Math;->min(II)I

    move-result v0

    .line 1152
    new-instance v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    shl-int/lit8 v2, v0, 0x5

    invoke-direct {v1, v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(I)V

    .line 1153
    iget v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    if-lt v2, p1, :cond_1a

    .line 1155
    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget-object v3, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    const/4 v4, 0x0

    invoke-static {v2, p1, v3, v4, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 1157
    :cond_1a
    return-object v1
.end method

.method private zeroUnusedBits()V
    .registers 6

    .prologue
    .line 1717
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    and-int/lit8 v0, v0, 0x1f

    if-eqz v0, :cond_19

    .line 1719
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v1, v1, -0x1

    aget v2, v0, v1

    sget-object v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->reverseRightMask:[I

    iget v4, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    and-int/lit8 v4, v4, 0x1f

    aget v3, v3, v4

    and-int/2addr v2, v3

    aput v2, v0, v1

    .line 1721
    :cond_19
    return-void
.end method


# virtual methods
.method public add(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;
    .registers 3

    .prologue
    .line 643
    invoke-virtual {p0, p1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->xor(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    move-result-object v0

    return-object v0
.end method

.method public addToThis(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V
    .registers 3

    .prologue
    .line 630
    iget v0, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    invoke-virtual {p0, v0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->expandN(I)V

    .line 631
    invoke-virtual {p0, p1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->xorThisBy(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 632
    return-void
.end method

.method public assignAll()V
    .registers 4

    .prologue
    .line 491
    const/4 v0, 0x0

    :goto_1
    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    if-ge v0, v1, :cond_d

    .line 493
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    const/4 v2, -0x1

    aput v2, v1, v0

    .line 491
    add-int/lit8 v0, v0, 0x1

    goto :goto_1

    .line 495
    :cond_d
    invoke-direct {p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->zeroUnusedBits()V

    .line 496
    return-void
.end method

.method public assignOne()V
    .registers 5

    .prologue
    const/4 v1, 0x1

    const/4 v3, 0x0

    .line 465
    move v0, v1

    :goto_3
    iget v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    if-ge v0, v2, :cond_e

    .line 467
    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aput v3, v2, v0

    .line 465
    add-int/lit8 v0, v0, 0x1

    goto :goto_3

    .line 469
    :cond_e
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aput v1, v0, v3

    .line 470
    return-void
.end method

.method public assignX()V
    .registers 4

    .prologue
    const/4 v2, 0x0

    .line 478
    const/4 v0, 0x1

    :goto_2
    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    if-ge v0, v1, :cond_d

    .line 480
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aput v2, v1, v0

    .line 478
    add-int/lit8 v0, v0, 0x1

    goto :goto_2

    .line 482
    :cond_d
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    const/4 v1, 0x2

    aput v1, v0, v2

    .line 483
    return-void
.end method

.method public assignZero()V
    .registers 4

    .prologue
    const/4 v1, 0x0

    .line 504
    move v0, v1

    :goto_2
    iget v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    if-ge v0, v2, :cond_d

    .line 506
    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aput v1, v2, v0

    .line 504
    add-int/lit8 v0, v0, 0x1

    goto :goto_2

    .line 508
    :cond_d
    return-void
.end method

.method public clone()Ljava/lang/Object;
    .registers 2

    .prologue
    .line 337
    new-instance v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    invoke-direct {v0, p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    return-object v0
.end method

.method public divide(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)[Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;
    .registers 10

    .prologue
    const/4 v7, 0x1

    const/4 v6, 0x0

    .line 1264
    const/4 v0, 0x2

    new-array v0, v0, [Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    .line 1265
    new-instance v2, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    invoke-direct {v2, v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(I)V

    .line 1266
    new-instance v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    invoke-direct {v3, p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 1267
    new-instance v4, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    invoke-direct {v4, p1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 1270
    invoke-virtual {v4}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->isZero()Z

    move-result v1

    if-eqz v1, :cond_22

    .line 1272
    new-instance v0, Ljava/lang/RuntimeException;

    invoke-direct {v0}, Ljava/lang/RuntimeException;-><init>()V

    throw v0

    .line 1274
    :cond_22
    invoke-virtual {v3}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->reduceN()V

    .line 1275
    invoke-virtual {v4}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->reduceN()V

    .line 1276
    iget v1, v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    iget v5, v4, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    if-ge v1, v5, :cond_38

    .line 1278
    new-instance v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    invoke-direct {v1, v6}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(I)V

    aput-object v1, v0, v6

    .line 1279
    aput-object v3, v0, v7

    .line 1296
    :goto_37
    return-object v0

    .line 1282
    :cond_38
    iget v1, v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    iget v5, v4, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    sub-int/2addr v1, v5

    .line 1283
    add-int/lit8 v5, v1, 0x1

    invoke-virtual {v2, v5}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->expandN(I)V

    .line 1285
    :goto_42
    if-ltz v1, :cond_57

    .line 1287
    invoke-virtual {v4, v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->shiftLeft(I)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    move-result-object v5

    .line 1288
    invoke-virtual {v3, v5}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->subtractFromThis(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 1289
    invoke-virtual {v3}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->reduceN()V

    .line 1290
    invoke-virtual {v2, v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->xorBit(I)V

    .line 1291
    iget v1, v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    iget v5, v4, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    sub-int/2addr v1, v5

    goto :goto_42

    .line 1294
    :cond_57
    aput-object v2, v0, v6

    .line 1295
    aput-object v3, v0, v7

    goto :goto_37
.end method

.method public equals(Ljava/lang/Object;)Z
    .registers 6

    .prologue
    const/4 v1, 0x0

    .line 549
    if-eqz p1, :cond_7

    instance-of v0, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    if-nez v0, :cond_8

    .line 567
    :cond_7
    :goto_7
    return v1

    .line 554
    :cond_8
    check-cast p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    .line 556
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    iget v2, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    if-ne v0, v2, :cond_7

    move v0, v1

    .line 560
    :goto_11
    iget v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    if-ge v0, v2, :cond_22

    .line 562
    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v2, v2, v0

    iget-object v3, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v3, v3, v0

    if-ne v2, v3, :cond_7

    .line 560
    add-int/lit8 v0, v0, 0x1

    goto :goto_11

    .line 567
    :cond_22
    const/4 v1, 0x1

    goto :goto_7
.end method

.method public expandN(I)V
    .registers 7

    .prologue
    const/4 v4, 0x0

    .line 1524
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    if-lt v0, p1, :cond_6

    .line 1549
    :cond_5
    :goto_5
    return-void

    .line 1528
    :cond_6
    iput p1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    .line 1529
    add-int/lit8 v0, p1, -0x1

    ushr-int/lit8 v0, v0, 0x5

    add-int/lit8 v1, v0, 0x1

    .line 1530
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    if-ge v0, v1, :cond_5

    .line 1534
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    array-length v0, v0

    if-lt v0, v1, :cond_25

    .line 1537
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    :goto_19
    if-ge v0, v1, :cond_22

    .line 1539
    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aput v4, v2, v0

    .line 1537
    add-int/lit8 v0, v0, 0x1

    goto :goto_19

    .line 1541
    :cond_22
    iput v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    goto :goto_5

    .line 1544
    :cond_25
    new-array v0, v1, [I

    .line 1545
    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    invoke-static {v2, v4, v0, v4, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 1546
    iput v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    .line 1547
    const/4 v1, 0x0

    iput-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    .line 1548
    iput-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    goto :goto_5
.end method

.method public gcd(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;
    .registers 6

    .prologue
    .line 1310
    invoke-virtual {p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->isZero()Z

    move-result v0

    if-eqz v0, :cond_14

    invoke-virtual {p1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->isZero()Z

    move-result v0

    if-eqz v0, :cond_14

    .line 1312
    new-instance v0, Ljava/lang/ArithmeticException;

    const-string v1, "Both operands of gcd equal zero."

    invoke-direct {v0, v1}, Ljava/lang/ArithmeticException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 1314
    :cond_14
    invoke-virtual {p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->isZero()Z

    move-result v0

    if-eqz v0, :cond_20

    .line 1316
    new-instance v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    invoke-direct {v0, p1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 1333
    :cond_1f
    :goto_1f
    return-object v0

    .line 1318
    :cond_20
    invoke-virtual {p1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->isZero()Z

    move-result v0

    if-eqz v0, :cond_2c

    .line 1320
    new-instance v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    invoke-direct {v0, p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    goto :goto_1f

    .line 1322
    :cond_2c
    new-instance v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    invoke-direct {v0, p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 1323
    new-instance v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    invoke-direct {v1, p1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 1326
    :goto_36
    invoke-virtual {v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->isZero()Z

    move-result v2

    if-nez v2, :cond_1f

    .line 1328
    invoke-virtual {v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->remainder(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    move-result-object v0

    move-object v3, v1

    move-object v1, v0

    move-object v0, v3

    .line 1330
    goto :goto_36
.end method

.method public getBit(I)I
    .registers 6

    .prologue
    const/4 v0, 0x0

    .line 1749
    if-gez p1, :cond_9

    .line 1751
    new-instance v0, Ljava/lang/RuntimeException;

    invoke-direct {v0}, Ljava/lang/RuntimeException;-><init>()V

    throw v0

    .line 1753
    :cond_9
    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    add-int/lit8 v1, v1, -0x1

    if-le p1, v1, :cond_10

    .line 1757
    :cond_f
    :goto_f
    return v0

    :cond_10
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    ushr-int/lit8 v2, p1, 0x5

    aget v1, v1, v2

    sget-object v2, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->bitMask:[I

    and-int/lit8 v3, p1, 0x1f

    aget v2, v2, v3

    and-int/2addr v1, v2

    if-eqz v1, :cond_f

    const/4 v0, 0x1

    goto :goto_f
.end method

.method public getLength()I
    .registers 2

    .prologue
    .line 348
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    return v0
.end method

.method public hashCode()I
    .registers 3

    .prologue
    .line 575
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    invoke-virtual {v1}, Ljava/lang/Object;->hashCode()I

    move-result v1

    add-int/2addr v0, v1

    return v0
.end method

.method public increase()Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;
    .registers 2

    .prologue
    .line 687
    new-instance v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    invoke-direct {v0, p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 688
    invoke-virtual {v0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->increaseThis()V

    .line 689
    return-object v0
.end method

.method public increaseThis()V
    .registers 2

    .prologue
    .line 676
    const/4 v0, 0x0

    invoke-virtual {p0, v0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->xorBit(I)V

    .line 677
    return-void
.end method

.method public isIrreducible()Z
    .registers 10

    .prologue
    const/4 v1, 0x1

    const/4 v0, 0x0

    .line 1349
    invoke-virtual {p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->isZero()Z

    move-result v2

    if-eqz v2, :cond_9

    .line 1380
    :cond_8
    :goto_8
    return v0

    .line 1353
    :cond_9
    new-instance v4, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    invoke-direct {v4, p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 1357
    invoke-virtual {v4}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->reduceN()V

    .line 1358
    iget v2, v4, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    add-int/lit8 v5, v2, -0x1

    .line 1359
    new-instance v2, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    iget v3, v4, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    const-string v6, "X"

    invoke-direct {v2, v3, v6}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(ILjava/lang/String;)V

    move v3, v1

    .line 1361
    :goto_1f
    shr-int/lit8 v6, v5, 0x1

    if-gt v3, v6, :cond_4a

    .line 1363
    invoke-virtual {v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->squareThisPreCalc()V

    .line 1364
    invoke-virtual {v2, v4}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->remainder(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    move-result-object v2

    .line 1365
    new-instance v6, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    const/16 v7, 0x20

    const-string v8, "X"

    invoke-direct {v6, v7, v8}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(ILjava/lang/String;)V

    invoke-virtual {v2, v6}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->add(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    move-result-object v6

    .line 1366
    invoke-virtual {v6}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->isZero()Z

    move-result v7

    if-nez v7, :cond_8

    .line 1368
    invoke-virtual {v4, v6}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->gcd(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    move-result-object v6

    .line 1369
    invoke-virtual {v6}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->isOne()Z

    move-result v6

    if-eqz v6, :cond_8

    .line 1361
    add-int/lit8 v3, v3, 0x1

    goto :goto_1f

    :cond_4a
    move v0, v1

    .line 1380
    goto :goto_8
.end method

.method public isOne()Z
    .registers 5

    .prologue
    const/4 v1, 0x1

    const/4 v2, 0x0

    .line 608
    move v0, v1

    :goto_3
    iget v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    if-ge v0, v3, :cond_12

    .line 610
    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v3, v3, v0

    if-eqz v3, :cond_f

    move v1, v2

    .line 619
    :cond_e
    :goto_e
    return v1

    .line 608
    :cond_f
    add-int/lit8 v0, v0, 0x1

    goto :goto_3

    .line 615
    :cond_12
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v0, v0, v2

    if-eq v0, v1, :cond_e

    move v1, v2

    .line 617
    goto :goto_e
.end method

.method public isZero()Z
    .registers 5

    .prologue
    const/4 v2, 0x1

    const/4 v1, 0x0

    .line 586
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    if-nez v0, :cond_8

    move v1, v2

    .line 597
    :cond_7
    :goto_7
    return v1

    :cond_8
    move v0, v1

    .line 590
    :goto_9
    iget v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    if-ge v0, v3, :cond_16

    .line 592
    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v3, v3, v0

    if-nez v3, :cond_7

    .line 590
    add-int/lit8 v0, v0, 0x1

    goto :goto_9

    :cond_16
    move v1, v2

    .line 597
    goto :goto_7
.end method

.method public multiply(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;
    .registers 4

    .prologue
    .line 737
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    iget v1, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    invoke-static {v0, v1}, Ljava/lang/Math;->max(II)I

    move-result v0

    .line 738
    invoke-virtual {p0, v0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->expandN(I)V

    .line 739
    invoke-virtual {p1, v0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->expandN(I)V

    .line 740
    invoke-direct {p0, p1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->karaMult(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    move-result-object v0

    return-object v0
.end method

.method public multiplyClassic(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;
    .registers 10

    .prologue
    const/16 v7, 0x1f

    const/4 v1, 0x0

    .line 702
    new-instance v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    iget v2, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    invoke-static {v0, v2}, Ljava/lang/Math;->max(II)I

    move-result v0

    shl-int/lit8 v0, v0, 0x1

    invoke-direct {v3, v0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(I)V

    .line 703
    const/16 v0, 0x20

    new-array v4, v0, [Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    .line 705
    new-instance v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    invoke-direct {v0, p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    aput-object v0, v4, v1

    .line 706
    const/4 v0, 0x1

    :goto_1e
    if-gt v0, v7, :cond_2d

    .line 708
    add-int/lit8 v2, v0, -0x1

    aget-object v2, v4, v2

    invoke-virtual {v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->shiftLeft()Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    move-result-object v2

    aput-object v2, v4, v0

    .line 706
    add-int/lit8 v0, v0, 0x1

    goto :goto_1e

    :cond_2d
    move v0, v1

    .line 710
    :goto_2e
    iget v2, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    if-ge v0, v2, :cond_56

    move v2, v1

    .line 712
    :goto_33
    if-gt v2, v7, :cond_48

    .line 714
    iget-object v5, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v5, v5, v0

    sget-object v6, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->bitMask:[I

    aget v6, v6, v2

    and-int/2addr v5, v6

    if-eqz v5, :cond_45

    .line 716
    aget-object v5, v4, v2

    invoke-virtual {v3, v5}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->xorThisBy(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 712
    :cond_45
    add-int/lit8 v2, v2, 0x1

    goto :goto_33

    :cond_48
    move v2, v1

    .line 719
    :goto_49
    if-gt v2, v7, :cond_53

    .line 721
    aget-object v5, v4, v2

    invoke-virtual {v5}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->shiftBlocksLeft()V

    .line 719
    add-int/lit8 v2, v2, 0x1

    goto :goto_49

    .line 710
    :cond_53
    add-int/lit8 v0, v0, 0x1

    goto :goto_2e

    .line 724
    :cond_56
    return-object v3
.end method

.method public quotient(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;
    .registers 7

    .prologue
    .line 1223
    new-instance v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    invoke-direct {v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(I)V

    .line 1224
    new-instance v2, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    invoke-direct {v2, p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 1225
    new-instance v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    invoke-direct {v3, p1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 1228
    invoke-virtual {v3}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->isZero()Z

    move-result v1

    if-eqz v1, :cond_1d

    .line 1230
    new-instance v0, Ljava/lang/RuntimeException;

    invoke-direct {v0}, Ljava/lang/RuntimeException;-><init>()V

    throw v0

    .line 1232
    :cond_1d
    invoke-virtual {v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->reduceN()V

    .line 1233
    invoke-virtual {v3}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->reduceN()V

    .line 1234
    iget v1, v2, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    iget v4, v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    if-ge v1, v4, :cond_30

    .line 1236
    new-instance v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    const/4 v1, 0x0

    invoke-direct {v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(I)V

    .line 1250
    :cond_2f
    return-object v0

    .line 1238
    :cond_30
    iget v1, v2, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    iget v4, v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    sub-int/2addr v1, v4

    .line 1239
    add-int/lit8 v4, v1, 0x1

    invoke-virtual {v0, v4}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->expandN(I)V

    .line 1241
    :goto_3a
    if-ltz v1, :cond_2f

    .line 1243
    invoke-virtual {v3, v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->shiftLeft(I)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    move-result-object v4

    .line 1244
    invoke-virtual {v2, v4}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->subtractFromThis(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 1245
    invoke-virtual {v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->reduceN()V

    .line 1246
    invoke-virtual {v0, v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->xorBit(I)V

    .line 1247
    iget v1, v2, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    iget v4, v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    sub-int/2addr v1, v4

    goto :goto_3a
.end method

.method public randomize()V
    .registers 4

    .prologue
    .line 516
    const/4 v0, 0x0

    :goto_1
    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    if-ge v0, v1, :cond_12

    .line 518
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sget-object v2, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->rand:Ljava/util/Random;

    invoke-virtual {v2}, Ljava/util/Random;->nextInt()I

    move-result v2

    aput v2, v1, v0

    .line 516
    add-int/lit8 v0, v0, 0x1

    goto :goto_1

    .line 520
    :cond_12
    invoke-direct {p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->zeroUnusedBits()V

    .line 521
    return-void
.end method

.method public randomize(Ljava/util/Random;)V
    .registers 5

    .prologue
    .line 532
    const/4 v0, 0x0

    :goto_1
    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    if-ge v0, v1, :cond_10

    .line 534
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    invoke-virtual {p1}, Ljava/util/Random;->nextInt()I

    move-result v2

    aput v2, v1, v0

    .line 532
    add-int/lit8 v0, v0, 0x1

    goto :goto_1

    .line 536
    :cond_10
    invoke-direct {p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->zeroUnusedBits()V

    .line 537
    return-void
.end method

.method public reduceN()V
    .registers 4

    .prologue
    .line 1498
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v0, v0, -0x1

    .line 1499
    :goto_4
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v1, v1, v0

    if-nez v1, :cond_f

    if-lez v0, :cond_f

    .line 1501
    add-int/lit8 v0, v0, -0x1

    goto :goto_4

    .line 1503
    :cond_f
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v1, v1, v0

    .line 1504
    const/4 v2, 0x0

    .line 1505
    :goto_14
    if-eqz v1, :cond_1b

    .line 1507
    ushr-int/lit8 v1, v1, 0x1

    .line 1508
    add-int/lit8 v2, v2, 0x1

    goto :goto_14

    .line 1510
    :cond_1b
    shl-int/lit8 v1, v0, 0x5

    add-int/2addr v1, v2

    iput v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    .line 1511
    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    .line 1512
    return-void
.end method

.method reducePentanomial(I[I)V
    .registers 23

    .prologue
    .line 1445
    ushr-int/lit8 v3, p1, 0x5

    .line 1446
    and-int/lit8 v2, p1, 0x1f

    rsub-int/lit8 v4, v2, 0x20

    .line 1447
    const/4 v2, 0x0

    aget v2, p2, v2

    sub-int v2, p1, v2

    ushr-int/lit8 v5, v2, 0x5

    .line 1448
    const/4 v2, 0x0

    aget v2, p2, v2

    sub-int v2, p1, v2

    and-int/lit8 v2, v2, 0x1f

    rsub-int/lit8 v6, v2, 0x20

    .line 1449
    const/4 v2, 0x1

    aget v2, p2, v2

    sub-int v2, p1, v2

    ushr-int/lit8 v7, v2, 0x5

    .line 1450
    const/4 v2, 0x1

    aget v2, p2, v2

    sub-int v2, p1, v2

    and-int/lit8 v2, v2, 0x1f

    rsub-int/lit8 v8, v2, 0x20

    .line 1451
    const/4 v2, 0x2

    aget v2, p2, v2

    sub-int v2, p1, v2

    ushr-int/lit8 v9, v2, 0x5

    .line 1452
    const/4 v2, 0x2

    aget v2, p2, v2

    sub-int v2, p1, v2

    and-int/lit8 v2, v2, 0x1f

    rsub-int/lit8 v10, v2, 0x20

    .line 1453
    shl-int/lit8 v2, p1, 0x1

    add-int/lit8 v2, v2, -0x2

    ushr-int/lit8 v2, v2, 0x5

    .line 1455
    :goto_3c
    if-le v2, v3, :cond_ff

    .line 1457
    move-object/from16 v0, p0

    iget-object v11, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v11, v11, v2

    int-to-long v12, v11

    const-wide v14, 0xffffffffL

    and-long/2addr v12, v14

    .line 1458
    move-object/from16 v0, p0

    iget-object v11, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v14, v2, v3

    add-int/lit8 v14, v14, -0x1

    aget v15, v11, v14

    shl-long v16, v12, v4

    move-wide/from16 v0, v16

    long-to-int v0, v0

    move/from16 v16, v0

    xor-int v15, v15, v16

    aput v15, v11, v14

    .line 1459
    move-object/from16 v0, p0

    iget-object v11, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v14, v2, v3

    aget v15, v11, v14

    int-to-long v0, v15

    move-wide/from16 v16, v0

    rsub-int/lit8 v15, v4, 0x20

    ushr-long v18, v12, v15

    xor-long v16, v16, v18

    move-wide/from16 v0, v16

    long-to-int v15, v0

    aput v15, v11, v14

    .line 1460
    move-object/from16 v0, p0

    iget-object v11, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v14, v2, v5

    add-int/lit8 v14, v14, -0x1

    aget v15, v11, v14

    shl-long v16, v12, v6

    move-wide/from16 v0, v16

    long-to-int v0, v0

    move/from16 v16, v0

    xor-int v15, v15, v16

    aput v15, v11, v14

    .line 1461
    move-object/from16 v0, p0

    iget-object v11, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v14, v2, v5

    aget v15, v11, v14

    int-to-long v0, v15

    move-wide/from16 v16, v0

    rsub-int/lit8 v15, v6, 0x20

    ushr-long v18, v12, v15

    xor-long v16, v16, v18

    move-wide/from16 v0, v16

    long-to-int v15, v0

    aput v15, v11, v14

    .line 1462
    move-object/from16 v0, p0

    iget-object v11, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v14, v2, v7

    add-int/lit8 v14, v14, -0x1

    aget v15, v11, v14

    shl-long v16, v12, v8

    move-wide/from16 v0, v16

    long-to-int v0, v0

    move/from16 v16, v0

    xor-int v15, v15, v16

    aput v15, v11, v14

    .line 1463
    move-object/from16 v0, p0

    iget-object v11, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v14, v2, v7

    aget v15, v11, v14

    int-to-long v0, v15

    move-wide/from16 v16, v0

    rsub-int/lit8 v15, v8, 0x20

    ushr-long v18, v12, v15

    xor-long v16, v16, v18

    move-wide/from16 v0, v16

    long-to-int v15, v0

    aput v15, v11, v14

    .line 1464
    move-object/from16 v0, p0

    iget-object v11, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v14, v2, v9

    add-int/lit8 v14, v14, -0x1

    aget v15, v11, v14

    shl-long v16, v12, v10

    move-wide/from16 v0, v16

    long-to-int v0, v0

    move/from16 v16, v0

    xor-int v15, v15, v16

    aput v15, v11, v14

    .line 1465
    move-object/from16 v0, p0

    iget-object v11, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v14, v2, v9

    aget v15, v11, v14

    int-to-long v0, v15

    move-wide/from16 v16, v0

    rsub-int/lit8 v15, v10, 0x20

    ushr-long/2addr v12, v15

    xor-long v12, v12, v16

    long-to-int v12, v12

    aput v12, v11, v14

    .line 1466
    move-object/from16 v0, p0

    iget-object v11, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    const/4 v12, 0x0

    aput v12, v11, v2

    .line 1455
    add-int/lit8 v2, v2, -0x1

    goto/16 :goto_3c

    .line 1468
    :cond_ff
    move-object/from16 v0, p0

    iget-object v2, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v2, v2, v3

    int-to-long v12, v2

    const-wide v14, 0xffffffffL

    and-long/2addr v12, v14

    const-wide v14, 0xffffffffL

    and-int/lit8 v2, p1, 0x1f

    shl-long/2addr v14, v2

    and-long/2addr v12, v14

    .line 1469
    move-object/from16 v0, p0

    iget-object v2, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    const/4 v11, 0x0

    aget v14, v2, v11

    int-to-long v14, v14

    rsub-int/lit8 v4, v4, 0x20

    ushr-long v16, v12, v4

    xor-long v14, v14, v16

    long-to-int v4, v14

    aput v4, v2, v11

    .line 1470
    sub-int v2, v3, v5

    add-int/lit8 v2, v2, -0x1

    if-ltz v2, :cond_13c

    .line 1472
    move-object/from16 v0, p0

    iget-object v2, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v4, v3, v5

    add-int/lit8 v4, v4, -0x1

    aget v11, v2, v4

    shl-long v14, v12, v6

    long-to-int v14, v14

    xor-int/2addr v11, v14

    aput v11, v2, v4

    .line 1474
    :cond_13c
    move-object/from16 v0, p0

    iget-object v2, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v4, v3, v5

    aget v5, v2, v4

    int-to-long v14, v5

    rsub-int/lit8 v5, v6, 0x20

    ushr-long v16, v12, v5

    xor-long v14, v14, v16

    long-to-int v5, v14

    aput v5, v2, v4

    .line 1475
    sub-int v2, v3, v7

    add-int/lit8 v2, v2, -0x1

    if-ltz v2, :cond_164

    .line 1477
    move-object/from16 v0, p0

    iget-object v2, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v4, v3, v7

    add-int/lit8 v4, v4, -0x1

    aget v5, v2, v4

    shl-long v14, v12, v8

    long-to-int v6, v14

    xor-int/2addr v5, v6

    aput v5, v2, v4

    .line 1479
    :cond_164
    move-object/from16 v0, p0

    iget-object v2, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v4, v3, v7

    aget v5, v2, v4

    int-to-long v6, v5

    rsub-int/lit8 v5, v8, 0x20

    ushr-long v14, v12, v5

    xor-long/2addr v6, v14

    long-to-int v5, v6

    aput v5, v2, v4

    .line 1480
    sub-int v2, v3, v9

    add-int/lit8 v2, v2, -0x1

    if-ltz v2, :cond_18b

    .line 1482
    move-object/from16 v0, p0

    iget-object v2, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v4, v3, v9

    add-int/lit8 v4, v4, -0x1

    aget v5, v2, v4

    shl-long v6, v12, v10

    long-to-int v6, v6

    xor-int/2addr v5, v6

    aput v5, v2, v4

    .line 1484
    :cond_18b
    move-object/from16 v0, p0

    iget-object v2, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v4, v3, v9

    aget v5, v2, v4

    int-to-long v6, v5

    rsub-int/lit8 v5, v10, 0x20

    ushr-long v8, v12, v5

    xor-long/2addr v6, v8

    long-to-int v5, v6

    aput v5, v2, v4

    .line 1485
    move-object/from16 v0, p0

    iget-object v2, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v4, v2, v3

    sget-object v5, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->reverseRightMask:[I

    and-int/lit8 v6, p1, 0x1f

    aget v5, v5, v6

    and-int/2addr v4, v5

    aput v4, v2, v3

    .line 1487
    add-int/lit8 v2, p1, -0x1

    ushr-int/lit8 v2, v2, 0x5

    add-int/lit8 v2, v2, 0x1

    move-object/from16 v0, p0

    iput v2, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    .line 1488
    move/from16 v0, p1

    move-object/from16 v1, p0

    iput v0, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    .line 1489
    return-void
.end method

.method reduceTrinomial(II)V
    .registers 17

    .prologue
    .line 1396
    ushr-int/lit8 v1, p1, 0x5

    .line 1397
    and-int/lit8 v0, p1, 0x1f

    rsub-int/lit8 v2, v0, 0x20

    .line 1398
    sub-int v0, p1, p2

    ushr-int/lit8 v3, v0, 0x5

    .line 1399
    sub-int v0, p1, p2

    and-int/lit8 v0, v0, 0x1f

    rsub-int/lit8 v4, v0, 0x20

    .line 1400
    shl-int/lit8 v0, p1, 0x1

    add-int/lit8 v0, v0, -0x2

    ushr-int/lit8 v0, v0, 0x5

    .line 1402
    :goto_16
    if-le v0, v1, :cond_64

    .line 1406
    iget-object v5, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v5, v5, v0

    int-to-long v6, v5

    const-wide v8, 0xffffffffL

    and-long/2addr v6, v8

    .line 1408
    iget-object v5, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v8, v0, v1

    add-int/lit8 v8, v8, -0x1

    aget v9, v5, v8

    shl-long v10, v6, v2

    long-to-int v10, v10

    xor-int/2addr v9, v10

    aput v9, v5, v8

    .line 1410
    iget-object v5, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v8, v0, v1

    aget v9, v5, v8

    int-to-long v10, v9

    rsub-int/lit8 v9, v2, 0x20

    ushr-long v12, v6, v9

    xor-long/2addr v10, v12

    long-to-int v9, v10

    aput v9, v5, v8

    .line 1412
    iget-object v5, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v8, v0, v3

    add-int/lit8 v8, v8, -0x1

    aget v9, v5, v8

    shl-long v10, v6, v4

    long-to-int v10, v10

    xor-int/2addr v9, v10

    aput v9, v5, v8

    .line 1414
    iget-object v5, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v8, v0, v3

    aget v9, v5, v8

    int-to-long v10, v9

    rsub-int/lit8 v9, v4, 0x20

    ushr-long/2addr v6, v9

    xor-long/2addr v6, v10

    long-to-int v6, v6

    aput v6, v5, v8

    .line 1415
    iget-object v5, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    const/4 v6, 0x0

    aput v6, v5, v0

    .line 1402
    add-int/lit8 v0, v0, -0x1

    goto :goto_16

    .line 1418
    :cond_64
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v0, v0, v1

    int-to-long v6, v0

    const-wide v8, 0xffffffffL

    and-long/2addr v6, v8

    const-wide v8, 0xffffffffL

    and-int/lit8 v0, p1, 0x1f

    shl-long/2addr v8, v0

    and-long/2addr v6, v8

    .line 1420
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    const/4 v5, 0x0

    aget v8, v0, v5

    int-to-long v8, v8

    rsub-int/lit8 v2, v2, 0x20

    ushr-long v10, v6, v2

    xor-long/2addr v8, v10

    long-to-int v2, v8

    aput v2, v0, v5

    .line 1421
    sub-int v0, v1, v3

    add-int/lit8 v0, v0, -0x1

    if-ltz v0, :cond_9a

    .line 1423
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v2, v1, v3

    add-int/lit8 v2, v2, -0x1

    aget v5, v0, v2

    shl-long v8, v6, v4

    long-to-int v8, v8

    xor-int/2addr v5, v8

    aput v5, v0, v2

    .line 1425
    :cond_9a
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    sub-int v2, v1, v3

    aget v3, v0, v2

    int-to-long v8, v3

    rsub-int/lit8 v3, v4, 0x20

    ushr-long v4, v6, v3

    xor-long/2addr v4, v8

    long-to-int v3, v4

    aput v3, v0, v2

    .line 1427
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v2, v0, v1

    sget-object v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->reverseRightMask:[I

    and-int/lit8 v4, p1, 0x1f

    aget v3, v3, v4

    and-int/2addr v2, v3

    aput v2, v0, v1

    .line 1428
    add-int/lit8 v0, p1, -0x1

    ushr-int/lit8 v0, v0, 0x5

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    .line 1429
    iput p1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    .line 1430
    return-void
.end method

.method public remainder(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;
    .registers 6

    .prologue
    .line 1187
    new-instance v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    invoke-direct {v0, p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 1188
    new-instance v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    invoke-direct {v1, p1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 1191
    invoke-virtual {v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->isZero()Z

    move-result v2

    if-eqz v2, :cond_16

    .line 1193
    new-instance v0, Ljava/lang/RuntimeException;

    invoke-direct {v0}, Ljava/lang/RuntimeException;-><init>()V

    throw v0

    .line 1195
    :cond_16
    invoke-virtual {v0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->reduceN()V

    .line 1196
    invoke-virtual {v1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->reduceN()V

    .line 1197
    iget v2, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    iget v3, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    if-ge v2, v3, :cond_23

    .line 1209
    :cond_22
    return-object v0

    .line 1201
    :cond_23
    :goto_23
    iget v2, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    iget v3, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    sub-int/2addr v2, v3

    .line 1202
    if-ltz v2, :cond_22

    .line 1204
    invoke-virtual {v1, v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->shiftLeft(I)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    move-result-object v2

    .line 1205
    invoke-virtual {v0, v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->subtractFromThis(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 1206
    invoke-virtual {v0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->reduceN()V

    goto :goto_23
.end method

.method public resetBit(I)V
    .registers 7

    .prologue
    .line 1769
    if-gez p1, :cond_8

    .line 1771
    new-instance v0, Ljava/lang/RuntimeException;

    invoke-direct {v0}, Ljava/lang/RuntimeException;-><init>()V

    throw v0

    .line 1773
    :cond_8
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    add-int/lit8 v0, v0, -0x1

    if-le p1, v0, :cond_f

    .line 1778
    :goto_e
    return-void

    .line 1777
    :cond_f
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    ushr-int/lit8 v1, p1, 0x5

    aget v2, v0, v1

    sget-object v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->bitMask:[I

    and-int/lit8 v4, p1, 0x1f

    aget v3, v3, v4

    xor-int/lit8 v3, v3, -0x1

    and-int/2addr v2, v3

    aput v2, v0, v1

    goto :goto_e
.end method

.method public setBit(I)V
    .registers 7

    .prologue
    .line 1732
    if-ltz p1, :cond_8

    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    add-int/lit8 v0, v0, -0x1

    if-le p1, v0, :cond_e

    .line 1734
    :cond_8
    new-instance v0, Ljava/lang/RuntimeException;

    invoke-direct {v0}, Ljava/lang/RuntimeException;-><init>()V

    throw v0

    .line 1736
    :cond_e
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    ushr-int/lit8 v1, p1, 0x5

    aget v2, v0, v1

    sget-object v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->bitMask:[I

    and-int/lit8 v4, p1, 0x1f

    aget v3, v3, v4

    or-int/2addr v2, v3

    aput v2, v0, v1

    .line 1737
    return-void
.end method

.method shiftBlocksLeft()V
    .registers 6

    .prologue
    const/4 v4, 0x0

    .line 1940
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    .line 1941
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    add-int/lit8 v0, v0, 0x20

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    .line 1942
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    array-length v1, v1

    if-gt v0, v1, :cond_2c

    .line 1945
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v0, v0, -0x1

    :goto_18
    if-lez v0, :cond_27

    .line 1947
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    add-int/lit8 v3, v0, -0x1

    aget v2, v2, v3

    aput v2, v1, v0

    .line 1945
    add-int/lit8 v0, v0, -0x1

    goto :goto_18

    .line 1949
    :cond_27
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aput v4, v0, v4

    .line 1958
    :goto_2b
    return-void

    .line 1953
    :cond_2c
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    new-array v0, v0, [I

    .line 1954
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    const/4 v2, 0x1

    iget v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v3, v3, -0x1

    invoke-static {v1, v4, v0, v2, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 1955
    const/4 v1, 0x0

    iput-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    .line 1956
    iput-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    goto :goto_2b
.end method

.method public shiftLeft()Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;
    .registers 7

    .prologue
    .line 1823
    new-instance v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    add-int/lit8 v0, v0, 0x1

    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    invoke-direct {v1, v0, v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(I[I)V

    .line 1825
    iget v0, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v0, v0, -0x1

    :goto_f
    if-lez v0, :cond_2b

    .line 1827
    iget-object v2, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v3, v2, v0

    shl-int/lit8 v3, v3, 0x1

    aput v3, v2, v0

    .line 1828
    iget-object v2, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v3, v2, v0

    iget-object v4, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    add-int/lit8 v5, v0, -0x1

    aget v4, v4, v5

    ushr-int/lit8 v4, v4, 0x1f

    or-int/2addr v3, v4

    aput v3, v2, v0

    .line 1825
    add-int/lit8 v0, v0, -0x1

    goto :goto_f

    .line 1830
    :cond_2b
    iget-object v0, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    const/4 v2, 0x0

    aget v3, v0, v2

    shl-int/lit8 v3, v3, 0x1

    aput v3, v0, v2

    .line 1831
    return-object v1
.end method

.method public shiftLeft(I)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;
    .registers 9

    .prologue
    .line 1884
    new-instance v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    add-int/2addr v0, p1

    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    invoke-direct {v1, v0, v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(I[I)V

    .line 1886
    const/16 v0, 0x20

    if-lt p1, v0, :cond_13

    .line 1888
    ushr-int/lit8 v0, p1, 0x5

    invoke-direct {v1, v0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->doShiftBlocksLeft(I)V

    .line 1891
    :cond_13
    and-int/lit8 v2, p1, 0x1f

    .line 1892
    if-eqz v2, :cond_40

    .line 1894
    iget v0, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v0, v0, -0x1

    :goto_1b
    if-lez v0, :cond_37

    .line 1896
    iget-object v3, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v4, v3, v0

    shl-int/2addr v4, v2

    aput v4, v3, v0

    .line 1897
    iget-object v3, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v4, v3, v0

    iget-object v5, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    add-int/lit8 v6, v0, -0x1

    aget v5, v5, v6

    rsub-int/lit8 v6, v2, 0x20

    ushr-int/2addr v5, v6

    or-int/2addr v4, v5

    aput v4, v3, v0

    .line 1894
    add-int/lit8 v0, v0, -0x1

    goto :goto_1b

    .line 1899
    :cond_37
    iget-object v0, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    const/4 v3, 0x0

    aget v4, v0, v3

    shl-int v2, v4, v2

    aput v2, v0, v3

    .line 1901
    :cond_40
    return-object v1
.end method

.method public shiftLeftAddThis(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;I)V
    .registers 10

    .prologue
    .line 1914
    if-nez p2, :cond_6

    .line 1916
    invoke-virtual {p0, p1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->addToThis(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 1930
    :cond_5
    return-void

    .line 1920
    :cond_6
    iget v0, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    add-int/2addr v0, p2

    invoke-virtual {p0, v0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->expandN(I)V

    .line 1921
    ushr-int/lit8 v1, p2, 0x5

    .line 1922
    iget v0, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v0, v0, -0x1

    :goto_12
    if-ltz v0, :cond_5

    .line 1924
    add-int v2, v0, v1

    add-int/lit8 v2, v2, 0x1

    iget v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    if-ge v2, v3, :cond_34

    and-int/lit8 v2, p2, 0x1f

    if-eqz v2, :cond_34

    .line 1926
    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    add-int v3, v0, v1

    add-int/lit8 v3, v3, 0x1

    aget v4, v2, v3

    iget-object v5, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v5, v5, v0

    and-int/lit8 v6, p2, 0x1f

    rsub-int/lit8 v6, v6, 0x20

    ushr-int/2addr v5, v6

    xor-int/2addr v4, v5

    aput v4, v2, v3

    .line 1928
    :cond_34
    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    add-int v3, v0, v1

    aget v4, v2, v3

    iget-object v5, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v5, v5, v0

    and-int/lit8 v6, p2, 0x1f

    shl-int/2addr v5, v6

    xor-int/2addr v4, v5

    aput v4, v2, v3

    .line 1922
    add-int/lit8 v0, v0, -0x1

    goto :goto_12
.end method

.method public shiftLeftThis()V
    .registers 7

    .prologue
    const/4 v5, 0x0

    .line 1841
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    and-int/lit8 v0, v0, 0x1f

    if-nez v0, :cond_4d

    .line 1843
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    .line 1844
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    .line 1845
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    array-length v1, v1

    if-le v0, v1, :cond_2b

    .line 1847
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    new-array v0, v0, [I

    .line 1848
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    array-length v2, v2

    invoke-static {v1, v5, v0, v5, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 1849
    const/4 v1, 0x0

    iput-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    .line 1850
    iput-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    .line 1852
    :cond_2b
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v0, v0, -0x1

    :goto_2f
    if-lez v0, :cond_7b

    .line 1854
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v2, v1, v0

    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    add-int/lit8 v4, v0, -0x1

    aget v3, v3, v4

    ushr-int/lit8 v3, v3, 0x1f

    or-int/2addr v2, v3

    aput v2, v1, v0

    .line 1855
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    add-int/lit8 v2, v0, -0x1

    aget v3, v1, v2

    shl-int/lit8 v3, v3, 0x1

    aput v3, v1, v2

    .line 1852
    add-int/lit8 v0, v0, -0x1

    goto :goto_2f

    .line 1860
    :cond_4d
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    .line 1861
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v0, v0, -0x1

    :goto_57
    if-lez v0, :cond_73

    .line 1863
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v2, v1, v0

    shl-int/lit8 v2, v2, 0x1

    aput v2, v1, v0

    .line 1864
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v2, v1, v0

    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    add-int/lit8 v4, v0, -0x1

    aget v3, v3, v4

    ushr-int/lit8 v3, v3, 0x1f

    or-int/2addr v2, v3

    aput v2, v1, v0

    .line 1861
    add-int/lit8 v0, v0, -0x1

    goto :goto_57

    .line 1866
    :cond_73
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v1, v0, v5

    shl-int/lit8 v1, v1, 0x1

    aput v1, v0, v5

    .line 1868
    :cond_7b
    return-void
.end method

.method public shiftRight()Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;
    .registers 7

    .prologue
    const/4 v0, 0x0

    .line 1997
    new-instance v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    iget v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    add-int/lit8 v2, v2, -0x1

    invoke-direct {v1, v2}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(I)V

    .line 1999
    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget-object v3, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget v4, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    invoke-static {v2, v0, v3, v0, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 2000
    :goto_13
    iget v2, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v2, v2, -0x2

    if-gt v0, v2, :cond_33

    .line 2002
    iget-object v2, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v3, v2, v0

    ushr-int/lit8 v3, v3, 0x1

    aput v3, v2, v0

    .line 2003
    iget-object v2, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v3, v2, v0

    iget-object v4, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    add-int/lit8 v5, v0, 0x1

    aget v4, v4, v5

    shl-int/lit8 v4, v4, 0x1f

    or-int/2addr v3, v4

    aput v3, v2, v0

    .line 2000
    add-int/lit8 v0, v0, 0x1

    goto :goto_13

    .line 2005
    :cond_33
    iget-object v0, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget v2, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v2, v2, -0x1

    aget v3, v0, v2

    ushr-int/lit8 v3, v3, 0x1

    aput v3, v0, v2

    .line 2006
    iget v0, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    iget v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    if-ge v0, v2, :cond_58

    .line 2008
    iget-object v0, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget v2, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v2, v2, -0x1

    aget v3, v0, v2

    iget-object v4, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget v5, v1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    aget v4, v4, v5

    shl-int/lit8 v4, v4, 0x1f

    or-int/2addr v3, v4

    aput v3, v0, v2

    .line 2010
    :cond_58
    return-object v1
.end method

.method public shiftRightThis()V
    .registers 6

    .prologue
    .line 2019
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    add-int/lit8 v0, v0, -0x1

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    .line 2020
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    add-int/lit8 v0, v0, -0x1

    ushr-int/lit8 v0, v0, 0x5

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    .line 2021
    const/4 v0, 0x0

    :goto_11
    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v1, v1, -0x2

    if-gt v0, v1, :cond_31

    .line 2023
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v2, v1, v0

    ushr-int/lit8 v2, v2, 0x1

    aput v2, v1, v0

    .line 2024
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v2, v1, v0

    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    add-int/lit8 v4, v0, 0x1

    aget v3, v3, v4

    shl-int/lit8 v3, v3, 0x1f

    or-int/2addr v2, v3

    aput v2, v1, v0

    .line 2021
    add-int/lit8 v0, v0, 0x1

    goto :goto_11

    .line 2026
    :cond_31
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v1, v1, -0x1

    aget v2, v0, v1

    ushr-int/lit8 v2, v2, 0x1

    aput v2, v0, v1

    .line 2027
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    and-int/lit8 v0, v0, 0x1f

    if-nez v0, :cond_56

    .line 2029
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v1, v1, -0x1

    aget v2, v0, v1

    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget v4, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    aget v3, v3, v4

    shl-int/lit8 v3, v3, 0x1f

    or-int/2addr v2, v3

    aput v2, v0, v1

    .line 2031
    :cond_56
    return-void
.end method

.method public squareThisBitwise()V
    .registers 8

    .prologue
    .line 1561
    invoke-virtual {p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->isZero()Z

    move-result v0

    if-eqz v0, :cond_7

    .line 1588
    :goto_6
    return-void

    .line 1565
    :cond_7
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    shl-int/lit8 v0, v0, 0x1

    new-array v4, v0, [I

    .line 1566
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v0, v0, -0x1

    move v3, v0

    :goto_12
    if-ltz v3, :cond_42

    .line 1568
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v2, v0, v3

    .line 1569
    const/4 v1, 0x1

    .line 1570
    const/4 v0, 0x0

    :goto_1a
    const/16 v5, 0x10

    if-ge v0, v5, :cond_3e

    .line 1572
    and-int/lit8 v5, v2, 0x1

    if-eqz v5, :cond_29

    .line 1574
    shl-int/lit8 v5, v3, 0x1

    aget v6, v4, v5

    or-int/2addr v6, v1

    aput v6, v4, v5

    .line 1576
    :cond_29
    const/high16 v5, 0x10000

    and-int/2addr v5, v2

    if-eqz v5, :cond_37

    .line 1578
    shl-int/lit8 v5, v3, 0x1

    add-int/lit8 v5, v5, 0x1

    aget v6, v4, v5

    or-int/2addr v6, v1

    aput v6, v4, v5

    .line 1580
    :cond_37
    shl-int/lit8 v1, v1, 0x2

    .line 1581
    ushr-int/lit8 v2, v2, 0x1

    .line 1570
    add-int/lit8 v0, v0, 0x1

    goto :goto_1a

    .line 1566
    :cond_3e
    add-int/lit8 v0, v3, -0x1

    move v3, v0

    goto :goto_12

    .line 1584
    :cond_42
    const/4 v0, 0x0

    iput-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    .line 1585
    iput-object v4, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    .line 1586
    array-length v0, v4

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    .line 1587
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    shl-int/lit8 v0, v0, 0x1

    add-int/lit8 v0, v0, -0x1

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    goto :goto_6
.end method

.method public squareThisPreCalc()V
    .registers 8

    .prologue
    const/high16 v6, -0x1000000

    .line 1597
    invoke-virtual {p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->isZero()Z

    move-result v0

    if-eqz v0, :cond_9

    .line 1628
    :goto_8
    return-void

    .line 1601
    :cond_9
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    array-length v0, v0

    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    shl-int/lit8 v1, v1, 0x1

    if-lt v0, v1, :cond_6b

    .line 1603
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v0, v0, -0x1

    :goto_16
    if-ltz v0, :cond_5c

    .line 1605
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    shl-int/lit8 v2, v0, 0x1

    add-int/lit8 v2, v2, 0x1

    sget-object v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->squaringTable:[S

    iget-object v4, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v4, v4, v0

    ushr-int/lit8 v4, v4, 0x10

    and-int/lit16 v4, v4, 0xff

    aget-short v3, v3, v4

    sget-object v4, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->squaringTable:[S

    iget-object v5, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v5, v5, v0

    and-int/2addr v5, v6

    ushr-int/lit8 v5, v5, 0x18

    aget-short v4, v4, v5

    shl-int/lit8 v4, v4, 0x10

    or-int/2addr v3, v4

    aput v3, v1, v2

    .line 1607
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    shl-int/lit8 v2, v0, 0x1

    sget-object v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->squaringTable:[S

    iget-object v4, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v4, v4, v0

    and-int/lit16 v4, v4, 0xff

    aget-short v3, v3, v4

    sget-object v4, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->squaringTable:[S

    iget-object v5, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v5, v5, v0

    ushr-int/lit8 v5, v5, 0x8

    and-int/lit16 v5, v5, 0xff

    aget-short v4, v4, v5

    shl-int/lit8 v4, v4, 0x10

    or-int/2addr v3, v4

    aput v3, v1, v2

    .line 1603
    add-int/lit8 v0, v0, -0x1

    goto :goto_16

    .line 1610
    :cond_5c
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    shl-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    .line 1611
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    shl-int/lit8 v0, v0, 0x1

    add-int/lit8 v0, v0, -0x1

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    goto :goto_8

    .line 1615
    :cond_6b
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    shl-int/lit8 v0, v0, 0x1

    new-array v1, v0, [I

    .line 1616
    const/4 v0, 0x0

    :goto_72
    iget v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    if-ge v0, v2, :cond_b6

    .line 1618
    shl-int/lit8 v2, v0, 0x1

    sget-object v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->squaringTable:[S

    iget-object v4, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v4, v4, v0

    and-int/lit16 v4, v4, 0xff

    aget-short v3, v3, v4

    sget-object v4, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->squaringTable:[S

    iget-object v5, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v5, v5, v0

    ushr-int/lit8 v5, v5, 0x8

    and-int/lit16 v5, v5, 0xff

    aget-short v4, v4, v5

    shl-int/lit8 v4, v4, 0x10

    or-int/2addr v3, v4

    aput v3, v1, v2

    .line 1620
    shl-int/lit8 v2, v0, 0x1

    add-int/lit8 v2, v2, 0x1

    sget-object v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->squaringTable:[S

    iget-object v4, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v4, v4, v0

    ushr-int/lit8 v4, v4, 0x10

    and-int/lit16 v4, v4, 0xff

    aget-short v3, v3, v4

    sget-object v4, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->squaringTable:[S

    iget-object v5, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v5, v5, v0

    and-int/2addr v5, v6

    ushr-int/lit8 v5, v5, 0x18

    aget-short v4, v4, v5

    shl-int/lit8 v4, v4, 0x10

    or-int/2addr v3, v4

    aput v3, v1, v2

    .line 1616
    add-int/lit8 v0, v0, 0x1

    goto :goto_72

    .line 1623
    :cond_b6
    const/4 v0, 0x0

    iput-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    .line 1624
    iput-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    .line 1625
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    shl-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    .line 1626
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    shl-int/lit8 v0, v0, 0x1

    add-int/lit8 v0, v0, -0x1

    iput v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    goto/16 :goto_8
.end method

.method public subtract(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;
    .registers 3

    .prologue
    .line 668
    invoke-virtual {p0, p1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->xor(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    move-result-object v0

    return-object v0
.end method

.method public subtractFromThis(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V
    .registers 3

    .prologue
    .line 654
    iget v0, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    invoke-virtual {p0, v0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->expandN(I)V

    .line 655
    invoke-virtual {p0, p1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->xorThisBy(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 656
    return-void
.end method

.method public testBit(I)Z
    .registers 6

    .prologue
    const/4 v0, 0x0

    .line 1805
    if-gez p1, :cond_9

    .line 1807
    new-instance v0, Ljava/lang/RuntimeException;

    invoke-direct {v0}, Ljava/lang/RuntimeException;-><init>()V

    throw v0

    .line 1809
    :cond_9
    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    add-int/lit8 v1, v1, -0x1

    if-le p1, v1, :cond_10

    .line 1813
    :cond_f
    :goto_f
    return v0

    :cond_10
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    ushr-int/lit8 v2, p1, 0x5

    aget v1, v1, v2

    sget-object v2, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->bitMask:[I

    and-int/lit8 v3, p1, 0x1f

    aget v2, v2, v3

    and-int/2addr v1, v2

    if-eqz v1, :cond_f

    const/4 v0, 0x1

    goto :goto_f
.end method

.method public toByteArray()[B
    .registers 9

    .prologue
    const/4 v0, 0x0

    .line 422
    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    add-int/lit8 v1, v1, -0x1

    shr-int/lit8 v1, v1, 0x3

    add-int/lit8 v2, v1, 0x1

    .line 423
    and-int/lit8 v3, v2, 0x3

    .line 425
    new-array v4, v2, [B

    move v1, v0

    .line 427
    :goto_e
    shr-int/lit8 v5, v2, 0x2

    if-ge v1, v5, :cond_42

    .line 429
    shl-int/lit8 v5, v1, 0x2

    sub-int v5, v2, v5

    add-int/lit8 v5, v5, -0x1

    .line 430
    iget-object v6, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v6, v6, v1

    int-to-byte v6, v6

    aput-byte v6, v4, v5

    .line 431
    add-int/lit8 v6, v5, -0x1

    iget-object v7, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v7, v7, v1

    ushr-int/lit8 v7, v7, 0x8

    int-to-byte v7, v7

    aput-byte v7, v4, v6

    .line 432
    add-int/lit8 v6, v5, -0x2

    iget-object v7, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v7, v7, v1

    ushr-int/lit8 v7, v7, 0x10

    int-to-byte v7, v7

    aput-byte v7, v4, v6

    .line 433
    add-int/lit8 v5, v5, -0x3

    iget-object v6, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v6, v6, v1

    shr-int/lit8 v6, v6, 0x18

    aput-byte v6, v4, v5

    .line 427
    add-int/lit8 v1, v1, 0x1

    goto :goto_e

    .line 435
    :cond_42
    :goto_42
    if-ge v0, v3, :cond_5e

    .line 437
    sub-int v1, v3, v0

    add-int/lit8 v1, v1, -0x1

    shl-int/lit8 v1, v1, 0x3

    .line 438
    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget v5, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v5, v5, -0x1

    aget v2, v2, v5

    const/16 v5, 0xff

    shl-int/2addr v5, v1

    and-int/2addr v2, v5

    ushr-int v1, v2, v1

    int-to-byte v1, v1

    aput-byte v1, v4, v0

    .line 435
    add-int/lit8 v0, v0, 0x1

    goto :goto_42

    .line 440
    :cond_5e
    return-object v4
.end method

.method public toFlexiBigInt()Ljava/math/BigInteger;
    .registers 4

    .prologue
    const/4 v2, 0x0

    .line 451
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    if-eqz v0, :cond_b

    invoke-virtual {p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->isZero()Z

    move-result v0

    if-eqz v0, :cond_13

    .line 453
    :cond_b
    new-instance v0, Ljava/math/BigInteger;

    new-array v1, v2, [B

    invoke-direct {v0, v2, v1}, Ljava/math/BigInteger;-><init>(I[B)V

    .line 455
    :goto_12
    return-object v0

    :cond_13
    new-instance v0, Ljava/math/BigInteger;

    const/4 v1, 0x1

    invoke-virtual {p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->toByteArray()[B

    move-result-object v2

    invoke-direct {v0, v1, v2}, Ljava/math/BigInteger;-><init>(I[B)V

    goto :goto_12
.end method

.method public toIntegerArray()[I
    .registers 5

    .prologue
    const/4 v3, 0x0

    .line 359
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    new-array v0, v0, [I

    .line 360
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    iget v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    invoke-static {v1, v3, v0, v3, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 361
    return-object v0
.end method

.method public toString(I)Ljava/lang/String;
    .registers 7

    .prologue
    const/16 v4, 0x10

    .line 373
    new-array v2, v4, [C

    fill-array-data v2, :array_250

    .line 375
    new-array v3, v4, [Ljava/lang/String;

    const/4 v0, 0x0

    const-string v1, "0000"

    aput-object v1, v3, v0

    const/4 v0, 0x1

    const-string v1, "0001"

    aput-object v1, v3, v0

    const/4 v0, 0x2

    const-string v1, "0010"

    aput-object v1, v3, v0

    const/4 v0, 0x3

    const-string v1, "0011"

    aput-object v1, v3, v0

    const/4 v0, 0x4

    const-string v1, "0100"

    aput-object v1, v3, v0

    const/4 v0, 0x5

    const-string v1, "0101"

    aput-object v1, v3, v0

    const/4 v0, 0x6

    const-string v1, "0110"

    aput-object v1, v3, v0

    const/4 v0, 0x7

    const-string v1, "0111"

    aput-object v1, v3, v0

    const/16 v0, 0x8

    const-string v1, "1000"

    aput-object v1, v3, v0

    const/16 v0, 0x9

    const-string v1, "1001"

    aput-object v1, v3, v0

    const/16 v0, 0xa

    const-string v1, "1010"

    aput-object v1, v3, v0

    const/16 v0, 0xb

    const-string v1, "1011"

    aput-object v1, v3, v0

    const/16 v0, 0xc

    const-string v1, "1100"

    aput-object v1, v3, v0

    const/16 v0, 0xd

    const-string v1, "1101"

    aput-object v1, v3, v0

    const/16 v0, 0xe

    const-string v1, "1110"

    aput-object v1, v3, v0

    const/16 v0, 0xf

    const-string v1, "1111"

    aput-object v1, v3, v0

    .line 380
    new-instance v0, Ljava/lang/String;

    invoke-direct {v0}, Ljava/lang/String;-><init>()V

    .line 381
    if-ne p1, v4, :cond_15b

    .line 383
    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v1, v1, -0x1

    :goto_6c
    if-ltz v1, :cond_24e

    .line 385
    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v3, v3, v1

    ushr-int/lit8 v3, v3, 0x1c

    and-int/lit8 v3, v3, 0xf

    aget-char v3, v2, v3

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    .line 386
    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v3, v3, v1

    ushr-int/lit8 v3, v3, 0x18

    and-int/lit8 v3, v3, 0xf

    aget-char v3, v2, v3

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    .line 387
    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v3, v3, v1

    ushr-int/lit8 v3, v3, 0x14

    and-int/lit8 v3, v3, 0xf

    aget-char v3, v2, v3

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    .line 388
    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v3, v3, v1

    ushr-int/lit8 v3, v3, 0x10

    and-int/lit8 v3, v3, 0xf

    aget-char v3, v2, v3

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    .line 389
    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v3, v3, v1

    ushr-int/lit8 v3, v3, 0xc

    and-int/lit8 v3, v3, 0xf

    aget-char v3, v2, v3

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    .line 390
    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v3, v3, v1

    ushr-int/lit8 v3, v3, 0x8

    and-int/lit8 v3, v3, 0xf

    aget-char v3, v2, v3

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    .line 391
    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v3, v3, v1

    ushr-int/lit8 v3, v3, 0x4

    and-int/lit8 v3, v3, 0xf

    aget-char v3, v2, v3

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    .line 392
    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v3, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v3, v3, v1

    and-int/lit8 v3, v3, 0xf

    aget-char v3, v2, v3

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    .line 393
    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v3, " "

    invoke-virtual {v0, v3}, 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 383
    add-int/lit8 v1, v1, -0x1

    goto/16 :goto_6c

    .line 398
    :cond_15b
    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    add-int/lit8 v1, v1, -0x1

    :goto_15f
    if-ltz v1, :cond_24e

    .line 400
    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v2, v2, v1

    ushr-int/lit8 v2, v2, 0x1c

    and-int/lit8 v2, v2, 0xf

    aget-object v2, v3, v2

    invoke-virtual {v0, v2}, 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 401
    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v2, v2, v1

    ushr-int/lit8 v2, v2, 0x18

    and-int/lit8 v2, v2, 0xf

    aget-object v2, v3, v2

    invoke-virtual {v0, v2}, 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 402
    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v2, v2, v1

    ushr-int/lit8 v2, v2, 0x14

    and-int/lit8 v2, v2, 0xf

    aget-object v2, v3, v2

    invoke-virtual {v0, v2}, 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 403
    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v2, v2, v1

    ushr-int/lit8 v2, v2, 0x10

    and-int/lit8 v2, v2, 0xf

    aget-object v2, v3, v2

    invoke-virtual {v0, v2}, 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 404
    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v2, v2, v1

    ushr-int/lit8 v2, v2, 0xc

    and-int/lit8 v2, v2, 0xf

    aget-object v2, v3, v2

    invoke-virtual {v0, v2}, 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 405
    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v2, v2, v1

    ushr-int/lit8 v2, v2, 0x8

    and-int/lit8 v2, v2, 0xf

    aget-object v2, v3, v2

    invoke-virtual {v0, v2}, 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 406
    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v2, v2, v1

    ushr-int/lit8 v2, v2, 0x4

    and-int/lit8 v2, v2, 0xf

    aget-object v2, v3, v2

    invoke-virtual {v0, v2}, 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 407
    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v2, v2, v1

    and-int/lit8 v2, v2, 0xf

    aget-object v2, v3, v2

    invoke-virtual {v0, v2}, 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 408
    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v2, " "

    invoke-virtual {v0, v2}, 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 398
    add-int/lit8 v1, v1, -0x1

    goto/16 :goto_15f

    .line 411
    :cond_24e
    return-object v0

    .line 373
    nop

    :array_250
    .array-data 2
        0x30s
        0x31s
        0x32s
        0x33s
        0x34s
        0x35s
        0x36s
        0x37s
        0x38s
        0x39s
        0x61s
        0x62s
        0x63s
        0x64s
        0x65s
        0x66s
    .end array-data
.end method

.method public vectorMult(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)Z
    .registers 7

    .prologue
    const/4 v0, 0x0

    .line 1641
    .line 1642
    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    iget v2, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    if-eq v1, v2, :cond_d

    .line 1644
    new-instance v0, Ljava/lang/RuntimeException;

    invoke-direct {v0}, Ljava/lang/RuntimeException;-><init>()V

    throw v0

    :cond_d
    move v1, v0

    .line 1646
    :goto_e
    iget v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    if-ge v1, v2, :cond_3e

    .line 1648
    iget-object v2, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v2, v2, v1

    iget-object v3, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v3, v3, v1

    and-int/2addr v2, v3

    .line 1649
    sget-object v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->parity:[Z

    and-int/lit16 v4, v2, 0xff

    aget-boolean v3, v3, v4

    xor-int/2addr v0, v3

    .line 1650
    sget-object v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->parity:[Z

    ushr-int/lit8 v4, v2, 0x8

    and-int/lit16 v4, v4, 0xff

    aget-boolean v3, v3, v4

    xor-int/2addr v0, v3

    .line 1651
    sget-object v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->parity:[Z

    ushr-int/lit8 v4, v2, 0x10

    and-int/lit16 v4, v4, 0xff

    aget-boolean v3, v3, v4

    xor-int/2addr v0, v3

    .line 1652
    sget-object v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->parity:[Z

    ushr-int/lit8 v2, v2, 0x18

    aget-boolean v2, v3, v2

    xor-int/2addr v0, v2

    .line 1646
    add-int/lit8 v1, v1, 0x1

    goto :goto_e

    .line 1654
    :cond_3e
    return v0
.end method

.method public xor(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;
    .registers 8

    .prologue
    const/4 v1, 0x0

    .line 1668
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    iget v2, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    invoke-static {v0, v2}, Ljava/lang/Math;->min(II)I

    move-result v2

    .line 1669
    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    iget v3, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    if-lt v0, v3, :cond_24

    .line 1671
    new-instance v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    invoke-direct {v0, p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 1672
    :goto_14
    if-ge v1, v2, :cond_39

    .line 1674
    iget-object v3, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v4, v3, v1

    iget-object v5, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v5, v5, v1

    xor-int/2addr v4, v5

    aput v4, v3, v1

    .line 1672
    add-int/lit8 v1, v1, 0x1

    goto :goto_14

    .line 1679
    :cond_24
    new-instance v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;

    invoke-direct {v0, p1}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;-><init>(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V

    .line 1680
    :goto_29
    if-ge v1, v2, :cond_39

    .line 1682
    iget-object v3, v0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v4, v3, v1

    iget-object v5, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v5, v5, v1

    xor-int/2addr v4, v5

    aput v4, v3, v1

    .line 1680
    add-int/lit8 v1, v1, 0x1

    goto :goto_29

    .line 1687
    :cond_39
    invoke-direct {v0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->zeroUnusedBits()V

    .line 1688
    return-object v0
.end method

.method public xorBit(I)V
    .registers 7

    .prologue
    .line 1789
    if-ltz p1, :cond_8

    iget v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->len:I

    add-int/lit8 v0, v0, -0x1

    if-le p1, v0, :cond_e

    .line 1791
    :cond_8
    new-instance v0, Ljava/lang/RuntimeException;

    invoke-direct {v0}, Ljava/lang/RuntimeException;-><init>()V

    throw v0

    .line 1793
    :cond_e
    iget-object v0, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    ushr-int/lit8 v1, p1, 0x5

    aget v2, v0, v1

    sget-object v3, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->bitMask:[I

    and-int/lit8 v4, p1, 0x1f

    aget v3, v3, v4

    xor-int/2addr v2, v3

    aput v2, v0, v1

    .line 1794
    return-void
.end method

.method public xorThisBy(Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;)V
    .registers 6

    .prologue
    .line 1701
    const/4 v0, 0x0

    :goto_1
    iget v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    iget v2, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->blocks:I

    invoke-static {v1, v2}, Ljava/lang/Math;->min(II)I

    move-result v1

    if-ge v0, v1, :cond_19

    .line 1703
    iget-object v1, p0, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v2, v1, v0

    iget-object v3, p1, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->value:[I

    aget v3, v3, v0

    xor-int/2addr v2, v3

    aput v2, v1, v0

    .line 1701
    add-int/lit8 v0, v0, 0x1

    goto :goto_1

    .line 1707
    :cond_19
    invoke-direct {p0}, Lorg/spongycastle/pqc/math/linearalgebra/GF2Polynomial;->zeroUnusedBits()V

    .line 1708
    return-void
.end method