SecT571Field.smali

.class public Lorg/spongycastle/math/ec/custom/sec/SecT571Field;
.super Ljava/lang/Object;
.source "SecT571Field.java"


# static fields
.field private static final M59:J = 0x7ffffffffffffffL

.field private static final RM:J = -0x1084210842108422L

.field private static final ROOT_Z:[J


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

    .prologue
    .line 15
    const/16 v0, 0x9

    new-array v0, v0, [J

    fill-array-data v0, :array_a

    sput-object v0, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->ROOT_Z:[J

    return-void

    :array_a
    .array-data 8
        0x2be1195f08cafb99L    # 2.5016400602366306E-97
        -0x6a0f73507b9a83ddL    # -5.27848393260514E-203
        -0x3507b9a83dcd41efL    # -1.4531635499737842E53
        0x657c232be1195f08L    # 7.297283174828906E180
        -0x7b9a83dcf73507cL
        0x7c232be1195f08caL    # 9.34156735235881E289
        -0x41ee6a0f73507b9bL    # -1.02362256409199E-9
        0x5f08caf84657c232L    # 6.340366030377565E149
        0x784657c232be119L
    .end array-data
.end method

.method public constructor <init>()V
    .registers 1

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

    return-void
.end method

.method private static add([JI[JI[JI)V
    .registers 12

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

    :goto_1
    const/16 v1, 0x9

    if-ge v0, v1, :cond_15

    .line 30
    add-int v1, p5, v0

    add-int v2, p1, v0

    aget-wide v2, p0, v2

    add-int v4, p3, v0

    aget-wide v4, p2, v4

    xor-long/2addr v2, v4

    aput-wide v2, p4, v1

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

    goto :goto_1

    .line 32
    :cond_15
    return-void
.end method

.method public static add([J[J[J)V
    .registers 9

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

    :goto_1
    const/16 v1, 0x9

    if-ge v0, v1, :cond_f

    .line 22
    aget-wide v2, p0, v0

    aget-wide v4, p1, v0

    xor-long/2addr v2, v4

    aput-wide v2, p2, v0

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

    goto :goto_1

    .line 24
    :cond_f
    return-void
.end method

.method private static addBothTo([JI[JI[JI)V
    .registers 14

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

    :goto_1
    const/16 v1, 0x9

    if-ge v0, v1, :cond_18

    .line 38
    add-int v1, p5, v0

    aget-wide v2, p4, v1

    add-int v4, p1, v0

    aget-wide v4, p0, v4

    add-int v6, p3, v0

    aget-wide v6, p2, v6

    xor-long/2addr v4, v6

    xor-long/2addr v2, v4

    aput-wide v2, p4, v1

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

    goto :goto_1

    .line 40
    :cond_18
    return-void
.end method

.method public static addExt([J[J[J)V
    .registers 9

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

    :goto_1
    const/16 v1, 0x12

    if-ge v0, v1, :cond_f

    .line 46
    aget-wide v2, p0, v0

    aget-wide v4, p1, v0

    xor-long/2addr v2, v4

    aput-wide v2, p2, v0

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

    goto :goto_1

    .line 48
    :cond_f
    return-void
.end method

.method public static addOne([J[J)V
    .registers 7

    .prologue
    const/4 v4, 0x0

    .line 52
    aget-wide v0, p0, v4

    const-wide/16 v2, 0x1

    xor-long/2addr v0, v2

    aput-wide v0, p1, v4

    .line 53
    const/4 v0, 0x1

    :goto_9
    const/16 v1, 0x9

    if-ge v0, v1, :cond_14

    .line 55
    aget-wide v2, p0, v0

    aput-wide v2, p1, v0

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

    goto :goto_9

    .line 57
    :cond_14
    return-void
.end method

.method public static fromBigInteger(Ljava/math/BigInteger;)[J
    .registers 3

    .prologue
    .line 61
    invoke-static {p0}, Lorg/spongycastle/math/raw/Nat576;->fromBigInteger64(Ljava/math/BigInteger;)[J

    move-result-object v0

    .line 62
    const/4 v1, 0x0

    invoke-static {v0, v1}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->reduce5([JI)V

    .line 63
    return-object v0
.end method

.method protected static implMultiply([J[J[J)V
    .registers 17

    .prologue
    .line 232
    const/16 v0, 0x90

    new-array v2, v0, [J

    .line 233
    const/4 v0, 0x0

    const/16 v1, 0x9

    const/16 v3, 0x9

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

    .line 235
    const/4 v7, 0x0

    .line 236
    const/4 v0, 0x7

    move v8, v0

    :goto_f
    if-lez v8, :cond_2e

    .line 238
    add-int/lit8 v7, v7, 0x12

    .line 239
    const/16 v1, 0x9

    ushr-int/lit8 v3, v7, 0x1

    const-wide/16 v4, 0x0

    move-object v6, v2

    invoke-static/range {v1 .. v7}, Lorg/spongycastle/math/raw/Nat;->shiftUpBit64(I[JIJ[JI)J

    .line 240
    invoke-static {v2, v7}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->reduce5([JI)V

    .line 241
    const/16 v1, 0x9

    add-int/lit8 v5, v7, 0x9

    move-object v0, v2

    move v3, v7

    move-object v4, v2

    invoke-static/range {v0 .. v5}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->add([JI[JI[JI)V

    .line 236
    add-int/lit8 v0, v8, -0x1

    move v8, v0

    goto :goto_f

    .line 247
    :cond_2e
    const/16 v0, 0x90

    new-array v7, v0, [J

    .line 248
    const/16 v1, 0x90

    const/4 v3, 0x0

    const/4 v4, 0x4

    const-wide/16 v5, 0x0

    const/4 v8, 0x0

    invoke-static/range {v1 .. v8}, Lorg/spongycastle/math/raw/Nat;->shiftUpBits64(I[JIIJ[JI)J

    .line 256
    const/16 v0, 0x38

    move v1, v0

    :goto_3f
    if-ltz v1, :cond_6f

    .line 258
    const/4 v0, 0x1

    :goto_42
    const/16 v3, 0x9

    if-ge v0, v3, :cond_5f

    .line 260
    aget-wide v4, p0, v0

    ushr-long/2addr v4, v1

    long-to-int v3, v4

    .line 261
    and-int/lit8 v4, v3, 0xf

    .line 262
    ushr-int/lit8 v3, v3, 0x4

    and-int/lit8 v3, v3, 0xf

    .line 263
    mul-int/lit8 v6, v4, 0x9

    mul-int/lit8 v8, v3, 0x9

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

    move-object v5, v2

    move-object/from16 v9, p2

    invoke-static/range {v5 .. v10}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->addBothTo([JI[JI[JI)V

    .line 258
    add-int/lit8 v0, v0, 0x2

    goto :goto_42

    .line 265
    :cond_5f
    const/16 v8, 0x10

    const/4 v10, 0x0

    const/16 v11, 0x8

    const-wide/16 v12, 0x0

    move-object/from16 v9, p2

    invoke-static/range {v8 .. v13}, Lorg/spongycastle/math/raw/Nat;->shiftUpBits64(I[JIIJ)J

    .line 256
    add-int/lit8 v0, v1, -0x8

    move v1, v0

    goto :goto_3f

    .line 268
    :cond_6f
    const/16 v0, 0x38

    :goto_71
    if-ltz v0, :cond_a0

    .line 270
    const/4 v10, 0x0

    :goto_74
    const/16 v1, 0x9

    if-ge v10, v1, :cond_8f

    .line 272
    aget-wide v4, p0, v10

    ushr-long/2addr v4, v0

    long-to-int v1, v4

    .line 273
    and-int/lit8 v3, v1, 0xf

    .line 274
    ushr-int/lit8 v1, v1, 0x4

    and-int/lit8 v1, v1, 0xf

    .line 275
    mul-int/lit8 v6, v3, 0x9

    mul-int/lit8 v8, v1, 0x9

    move-object v5, v2

    move-object/from16 v9, p2

    invoke-static/range {v5 .. v10}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->addBothTo([JI[JI[JI)V

    .line 270
    add-int/lit8 v10, v10, 0x2

    goto :goto_74

    .line 277
    :cond_8f
    if-lez v0, :cond_9d

    .line 279
    const/16 v8, 0x12

    const/4 v10, 0x0

    const/16 v11, 0x8

    const-wide/16 v12, 0x0

    move-object/from16 v9, p2

    invoke-static/range {v8 .. v13}, Lorg/spongycastle/math/raw/Nat;->shiftUpBits64(I[JIIJ)J

    .line 268
    :cond_9d
    add-int/lit8 v0, v0, -0x8

    goto :goto_71

    .line 282
    :cond_a0
    return-void
.end method

.method protected static implMulwAcc([JJ[JI)V
    .registers 20

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

    new-array v8, v0, [J

    .line 288
    const/4 v0, 0x1

    aput-wide p1, v8, v0

    .line 289
    const/4 v0, 0x2

    :goto_8
    const/16 v1, 0x20

    if-ge v0, v1, :cond_1f

    .line 291
    ushr-int/lit8 v1, v0, 0x1

    aget-wide v2, v8, v1

    const/4 v1, 0x1

    shl-long/2addr v2, v1

    aput-wide v2, v8, v0

    .line 292
    add-int/lit8 v1, v0, 0x1

    aget-wide v2, v8, v0

    xor-long v2, v2, p1

    aput-wide v2, v8, v1

    .line 289
    add-int/lit8 v0, v0, 0x2

    goto :goto_8

    .line 295
    :cond_1f
    const-wide/16 v2, 0x0

    .line 296
    const/4 v0, 0x0

    move v1, v0

    :goto_23
    const/16 v0, 0x9

    if-ge v1, v0, :cond_65

    .line 298
    aget-wide v6, p0, v1

    .line 300
    long-to-int v0, v6

    .line 302
    and-int/lit8 v0, v0, 0x1f

    aget-wide v4, v8, v0

    xor-long/2addr v4, v2

    .line 304
    const-wide/16 v2, 0x0

    .line 305
    const/16 v0, 0x3c

    .line 308
    :cond_33
    ushr-long v10, v6, v0

    long-to-int v9, v10

    .line 309
    and-int/lit8 v9, v9, 0x1f

    aget-wide v10, v8, v9

    .line 310
    shl-long v12, v10, v0

    xor-long/2addr v4, v12

    .line 311
    neg-int v9, v0

    ushr-long/2addr v10, v9

    xor-long/2addr v2, v10

    .line 313
    add-int/lit8 v0, v0, -0x5

    if-gtz v0, :cond_33

    .line 315
    const/4 v0, 0x0

    :goto_45
    const/4 v9, 0x4

    if-ge v0, v9, :cond_5a

    .line 317
    const-wide v10, -0x1084210842108422L    # -1.0564009196602605E229

    and-long/2addr v6, v10

    const/4 v9, 0x1

    ushr-long/2addr v6, v9

    .line 318
    shl-long v10, p1, v0

    const/16 v9, 0x3f

    shr-long/2addr v10, v9

    and-long/2addr v10, v6

    xor-long/2addr v2, v10

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

    goto :goto_45

    .line 321
    :cond_5a
    add-int v0, p4, v1

    aget-wide v6, p3, v0

    xor-long/2addr v4, v6

    aput-wide v4, p3, v0

    .line 296
    add-int/lit8 v0, v1, 0x1

    move v1, v0

    goto :goto_23

    .line 325
    :cond_65
    add-int/lit8 v0, p4, 0x9

    aget-wide v4, p3, v0

    xor-long/2addr v2, v4

    aput-wide v2, p3, v0

    .line 326
    return-void
.end method

.method protected static implSquare([J[J)V
    .registers 6

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

    :goto_1
    const/16 v1, 0x9

    if-ge v0, v1, :cond_f

    .line 332
    aget-wide v2, p0, v0

    shl-int/lit8 v1, v0, 0x1

    invoke-static {v2, v3, p1, v1}, Lorg/spongycastle/math/raw/Interleave;->expand64To128(J[JI)V

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

    goto :goto_1

    .line 334
    :cond_f
    return-void
.end method

.method public static invert([J[J)V
    .registers 10

    .prologue
    const/16 v7, 0xb4

    const/16 v6, 0x3c

    const/16 v5, 0x1e

    const/4 v4, 0x5

    .line 68
    invoke-static {p0}, Lorg/spongycastle/math/raw/Nat576;->isZero64([J)Z

    move-result v0

    if-eqz v0, :cond_13

    .line 70
    new-instance v0, Ljava/lang/IllegalStateException;

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

    throw v0

    .line 75
    :cond_13
    invoke-static {}, Lorg/spongycastle/math/raw/Nat576;->create64()[J

    move-result-object v0

    .line 76
    invoke-static {}, Lorg/spongycastle/math/raw/Nat576;->create64()[J

    move-result-object v1

    .line 77
    invoke-static {}, Lorg/spongycastle/math/raw/Nat576;->create64()[J

    move-result-object v2

    .line 79
    invoke-static {p0, v2}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->square([J[J)V

    .line 82
    invoke-static {v2, v0}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->square([J[J)V

    .line 83
    invoke-static {v0, v1}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->square([J[J)V

    .line 84
    invoke-static {v0, v1, v0}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->multiply([J[J[J)V

    .line 85
    const/4 v3, 0x2

    invoke-static {v0, v3, v1}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->squareN([JI[J)V

    .line 86
    invoke-static {v0, v1, v0}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->multiply([J[J[J)V

    .line 87
    invoke-static {v0, v2, v0}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->multiply([J[J[J)V

    .line 90
    invoke-static {v0, v4, v1}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->squareN([JI[J)V

    .line 91
    invoke-static {v0, v1, v0}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->multiply([J[J[J)V

    .line 92
    invoke-static {v1, v4, v1}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->squareN([JI[J)V

    .line 93
    invoke-static {v0, v1, v0}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->multiply([J[J[J)V

    .line 96
    const/16 v3, 0xf

    invoke-static {v0, v3, v1}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->squareN([JI[J)V

    .line 97
    invoke-static {v0, v1, v2}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->multiply([J[J[J)V

    .line 100
    invoke-static {v2, v5, v0}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->squareN([JI[J)V

    .line 101
    invoke-static {v0, v5, v1}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->squareN([JI[J)V

    .line 102
    invoke-static {v0, v1, v0}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->multiply([J[J[J)V

    .line 105
    invoke-static {v0, v6, v1}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->squareN([JI[J)V

    .line 106
    invoke-static {v0, v1, v0}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->multiply([J[J[J)V

    .line 107
    invoke-static {v1, v6, v1}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->squareN([JI[J)V

    .line 108
    invoke-static {v0, v1, v0}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->multiply([J[J[J)V

    .line 111
    invoke-static {v0, v7, v1}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->squareN([JI[J)V

    .line 112
    invoke-static {v0, v1, v0}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->multiply([J[J[J)V

    .line 113
    invoke-static {v1, v7, v1}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->squareN([JI[J)V

    .line 114
    invoke-static {v0, v1, v0}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->multiply([J[J[J)V

    .line 116
    invoke-static {v0, v2, p1}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->multiply([J[J[J)V

    .line 117
    return-void
.end method

.method public static multiply([J[J[J)V
    .registers 4

    .prologue
    .line 121
    invoke-static {}, Lorg/spongycastle/math/raw/Nat576;->createExt64()[J

    move-result-object v0

    .line 122
    invoke-static {p0, p1, v0}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->implMultiply([J[J[J)V

    .line 123
    invoke-static {v0, p2}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->reduce([J[J)V

    .line 124
    return-void
.end method

.method public static multiplyAddToExt([J[J[J)V
    .registers 4

    .prologue
    .line 128
    invoke-static {}, Lorg/spongycastle/math/raw/Nat576;->createExt64()[J

    move-result-object v0

    .line 129
    invoke-static {p0, p1, v0}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->implMultiply([J[J[J)V

    .line 130
    invoke-static {p2, v0, p2}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->addExt([J[J[J)V

    .line 131
    return-void
.end method

.method public static reduce([J[J)V
    .registers 12

    .prologue
    .line 135
    const/16 v0, 0x9

    aget-wide v0, p0, v0

    .line 136
    const/16 v2, 0x11

    aget-wide v2, p0, v2

    .line 138
    const/16 v4, 0x3b

    ushr-long v4, v2, v4

    xor-long/2addr v0, v4

    const/16 v4, 0x39

    ushr-long v4, v2, v4

    xor-long/2addr v0, v4

    const/16 v4, 0x36

    ushr-long v4, v2, v4

    xor-long/2addr v0, v4

    const/16 v4, 0x31

    ushr-long v4, v2, v4

    xor-long/2addr v4, v0

    .line 139
    const/16 v0, 0x8

    aget-wide v0, p0, v0

    const/4 v6, 0x5

    shl-long v6, v2, v6

    xor-long/2addr v0, v6

    const/4 v6, 0x7

    shl-long v6, v2, v6

    xor-long/2addr v0, v6

    const/16 v6, 0xa

    shl-long v6, v2, v6

    xor-long/2addr v0, v6

    const/16 v6, 0xf

    shl-long/2addr v2, v6

    xor-long/2addr v2, v0

    .line 141
    const/16 v0, 0x10

    :goto_33
    const/16 v1, 0xa

    if-lt v0, v1, :cond_69

    .line 143
    aget-wide v6, p0, v0

    .line 144
    add-int/lit8 v1, v0, -0x8

    const/16 v8, 0x3b

    ushr-long v8, v6, v8

    xor-long/2addr v2, v8

    const/16 v8, 0x39

    ushr-long v8, v6, v8

    xor-long/2addr v2, v8

    const/16 v8, 0x36

    ushr-long v8, v6, v8

    xor-long/2addr v2, v8

    const/16 v8, 0x31

    ushr-long v8, v6, v8

    xor-long/2addr v2, v8

    aput-wide v2, p1, v1

    .line 145
    add-int/lit8 v1, v0, -0x9

    aget-wide v2, p0, v1

    const/4 v1, 0x5

    shl-long v8, v6, v1

    xor-long/2addr v2, v8

    const/4 v1, 0x7

    shl-long v8, v6, v1

    xor-long/2addr v2, v8

    const/16 v1, 0xa

    shl-long v8, v6, v1

    xor-long/2addr v2, v8

    const/16 v1, 0xf

    shl-long/2addr v6, v1

    xor-long/2addr v2, v6

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

    goto :goto_33

    .line 149
    :cond_69
    const/4 v0, 0x1

    const/16 v1, 0x3b

    ushr-long v6, v4, v1

    xor-long/2addr v2, v6

    const/16 v1, 0x39

    ushr-long v6, v4, v1

    xor-long/2addr v2, v6

    const/16 v1, 0x36

    ushr-long v6, v4, v1

    xor-long/2addr v2, v6

    const/16 v1, 0x31

    ushr-long v6, v4, v1

    xor-long/2addr v2, v6

    aput-wide v2, p1, v0

    .line 150
    const/4 v0, 0x0

    aget-wide v0, p0, v0

    const/4 v2, 0x5

    shl-long v2, v4, v2

    xor-long/2addr v0, v2

    const/4 v2, 0x7

    shl-long v2, v4, v2

    xor-long/2addr v0, v2

    const/16 v2, 0xa

    shl-long v2, v4, v2

    xor-long/2addr v0, v2

    const/16 v2, 0xf

    shl-long v2, v4, v2

    xor-long/2addr v0, v2

    .line 152
    const/16 v2, 0x8

    aget-wide v2, p1, v2

    .line 153
    const/16 v4, 0x3b

    ushr-long v4, v2, v4

    .line 154
    const/4 v6, 0x0

    xor-long/2addr v0, v4

    const/4 v7, 0x2

    shl-long v8, v4, v7

    xor-long/2addr v0, v8

    const/4 v7, 0x5

    shl-long v8, v4, v7

    xor-long/2addr v0, v8

    const/16 v7, 0xa

    shl-long/2addr v4, v7

    xor-long/2addr v0, v4

    aput-wide v0, p1, v6

    .line 155
    const/16 v0, 0x8

    const-wide v4, 0x7ffffffffffffffL

    and-long/2addr v2, v4

    aput-wide v2, p1, v0

    .line 156
    return-void
.end method

.method public static reduce5([JI)V
    .registers 12

    .prologue
    .line 160
    add-int/lit8 v0, p1, 0x8

    aget-wide v0, p0, v0

    const/16 v2, 0x3b

    ushr-long v2, v0, v2

    .line 161
    aget-wide v4, p0, p1

    const/4 v6, 0x2

    shl-long v6, v2, v6

    xor-long/2addr v6, v2

    const/4 v8, 0x5

    shl-long v8, v2, v8

    xor-long/2addr v6, v8

    const/16 v8, 0xa

    shl-long/2addr v2, v8

    xor-long/2addr v2, v6

    xor-long/2addr v2, v4

    aput-wide v2, p0, p1

    .line 162
    add-int/lit8 v2, p1, 0x8

    const-wide v4, 0x7ffffffffffffffL

    and-long/2addr v0, v4

    aput-wide v0, p0, v2

    .line 163
    return-void
.end method

.method public static sqrt([J[J)V
    .registers 14

    .prologue
    .line 167
    invoke-static {}, Lorg/spongycastle/math/raw/Nat576;->create64()[J

    move-result-object v2

    invoke-static {}, Lorg/spongycastle/math/raw/Nat576;->create64()[J

    move-result-object v3

    .line 169
    const/4 v1, 0x0

    .line 170
    const/4 v0, 0x0

    :goto_a
    const/4 v4, 0x4

    if-ge v0, v4, :cond_39

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

    aget-wide v6, p0, v1

    invoke-static {v6, v7}, Lorg/spongycastle/math/raw/Interleave;->unshuffle(J)J

    move-result-wide v6

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

    aget-wide v4, p0, v4

    invoke-static {v4, v5}, Lorg/spongycastle/math/raw/Interleave;->unshuffle(J)J

    move-result-wide v4

    .line 174
    const-wide v8, 0xffffffffL

    and-long/2addr v8, v6

    const/16 v10, 0x20

    shl-long v10, v4, v10

    or-long/2addr v8, v10

    aput-wide v8, v2, v0

    .line 175
    const/16 v8, 0x20

    ushr-long/2addr v6, v8

    const-wide v8, -0x100000000L

    and-long/2addr v4, v8

    or-long/2addr v4, v6

    aput-wide v4, v3, v0

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

    goto :goto_a

    .line 178
    :cond_39
    const/16 v0, 0x8

    aget-wide v0, p0, v0

    invoke-static {v0, v1}, Lorg/spongycastle/math/raw/Interleave;->unshuffle(J)J

    move-result-wide v0

    .line 179
    const/4 v4, 0x4

    const-wide v6, 0xffffffffL

    and-long/2addr v6, v0

    aput-wide v6, v2, v4

    .line 180
    const/4 v4, 0x4

    const/16 v5, 0x20

    ushr-long/2addr v0, v5

    aput-wide v0, v3, v4

    .line 183
    sget-object v0, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->ROOT_Z:[J

    invoke-static {v3, v0, p1}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->multiply([J[J[J)V

    .line 184
    invoke-static {p1, v2, p1}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->add([J[J[J)V

    .line 185
    return-void
.end method

.method public static square([J[J)V
    .registers 3

    .prologue
    .line 189
    invoke-static {}, Lorg/spongycastle/math/raw/Nat576;->createExt64()[J

    move-result-object v0

    .line 190
    invoke-static {p0, v0}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->implSquare([J[J)V

    .line 191
    invoke-static {v0, p1}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->reduce([J[J)V

    .line 192
    return-void
.end method

.method public static squareAddToExt([J[J)V
    .registers 3

    .prologue
    .line 196
    invoke-static {}, Lorg/spongycastle/math/raw/Nat576;->createExt64()[J

    move-result-object v0

    .line 197
    invoke-static {p0, v0}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->implSquare([J[J)V

    .line 198
    invoke-static {p1, v0, p1}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->addExt([J[J[J)V

    .line 199
    return-void
.end method

.method public static squareN([JI[J)V
    .registers 4

    .prologue
    .line 205
    invoke-static {}, Lorg/spongycastle/math/raw/Nat576;->createExt64()[J

    move-result-object v0

    .line 206
    invoke-static {p0, v0}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->implSquare([J[J)V

    .line 207
    invoke-static {v0, p2}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->reduce([J[J)V

    .line 209
    :goto_a
    add-int/lit8 p1, p1, -0x1

    if-lez p1, :cond_15

    .line 211
    invoke-static {p2, v0}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->implSquare([J[J)V

    .line 212
    invoke-static {v0, p2}, Lorg/spongycastle/math/ec/custom/sec/SecT571Field;->reduce([J[J)V

    goto :goto_a

    .line 214
    :cond_15
    return-void
.end method

.method public static trace([J)I
    .registers 7

    .prologue
    const/16 v5, 0x8

    .line 219
    const/4 v0, 0x0

    aget-wide v0, p0, v0

    aget-wide v2, p0, v5

    const/16 v4, 0x31

    ushr-long/2addr v2, v4

    xor-long/2addr v0, v2

    aget-wide v2, p0, v5

    const/16 v4, 0x39

    ushr-long/2addr v2, v4

    xor-long/2addr v0, v2

    long-to-int v0, v0

    and-int/lit8 v0, v0, 0x1

    return v0
.end method