Nat256.smali

.class public abstract Lorg/spongycastle/math/raw/Nat256;
.super Ljava/lang/Object;
.source "Nat256.java"


# static fields
.field private static final M:J = 0xffffffffL


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

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

    return-void
.end method

.method public static add([II[II[II)I
    .registers 15

    .prologue
    const/16 v8, 0x20

    const-wide v6, 0xffffffffL

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

    aget v2, p0, p1

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p2, p3

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 45
    long-to-int v2, v0

    aput v2, p4, p5

    .line 46
    ushr-long/2addr v0, v8

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

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x1

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 48
    add-int/lit8 v2, p5, 0x1

    long-to-int v3, v0

    aput v3, p4, v2

    .line 49
    ushr-long/2addr v0, v8

    .line 50
    add-int/lit8 v2, p1, 0x2

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x2

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 51
    add-int/lit8 v2, p5, 0x2

    long-to-int v3, v0

    aput v3, p4, v2

    .line 52
    ushr-long/2addr v0, v8

    .line 53
    add-int/lit8 v2, p1, 0x3

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x3

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 54
    add-int/lit8 v2, p5, 0x3

    long-to-int v3, v0

    aput v3, p4, v2

    .line 55
    ushr-long/2addr v0, v8

    .line 56
    add-int/lit8 v2, p1, 0x4

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x4

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 57
    add-int/lit8 v2, p5, 0x4

    long-to-int v3, v0

    aput v3, p4, v2

    .line 58
    ushr-long/2addr v0, v8

    .line 59
    add-int/lit8 v2, p1, 0x5

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x5

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 60
    add-int/lit8 v2, p5, 0x5

    long-to-int v3, v0

    aput v3, p4, v2

    .line 61
    ushr-long/2addr v0, v8

    .line 62
    add-int/lit8 v2, p1, 0x6

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x6

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 63
    add-int/lit8 v2, p5, 0x6

    long-to-int v3, v0

    aput v3, p4, v2

    .line 64
    ushr-long/2addr v0, v8

    .line 65
    add-int/lit8 v2, p1, 0x7

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x7

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 66
    add-int/lit8 v2, p5, 0x7

    long-to-int v3, v0

    aput v3, p4, v2

    .line 67
    ushr-long/2addr v0, v8

    .line 68
    long-to-int v0, v0

    return v0
.end method

.method public static add([I[I[I)I
    .registers 15

    .prologue
    const/4 v11, 0x2

    const/4 v10, 0x1

    const/4 v9, 0x0

    const/16 v8, 0x20

    const-wide v6, 0xffffffffL

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

    aget v2, p0, v9

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p1, v9

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 15
    long-to-int v2, v0

    aput v2, p2, v9

    .line 16
    ushr-long/2addr v0, v8

    .line 17
    aget v2, p0, v10

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p1, v10

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 18
    long-to-int v2, v0

    aput v2, p2, v10

    .line 19
    ushr-long/2addr v0, v8

    .line 20
    aget v2, p0, v11

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p1, v11

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 21
    long-to-int v2, v0

    aput v2, p2, v11

    .line 22
    ushr-long/2addr v0, v8

    .line 23
    const/4 v2, 0x3

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x3

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 24
    const/4 v2, 0x3

    long-to-int v3, v0

    aput v3, p2, v2

    .line 25
    ushr-long/2addr v0, v8

    .line 26
    const/4 v2, 0x4

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x4

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 27
    const/4 v2, 0x4

    long-to-int v3, v0

    aput v3, p2, v2

    .line 28
    ushr-long/2addr v0, v8

    .line 29
    const/4 v2, 0x5

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x5

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 30
    const/4 v2, 0x5

    long-to-int v3, v0

    aput v3, p2, v2

    .line 31
    ushr-long/2addr v0, v8

    .line 32
    const/4 v2, 0x6

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x6

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 33
    const/4 v2, 0x6

    long-to-int v3, v0

    aput v3, p2, v2

    .line 34
    ushr-long/2addr v0, v8

    .line 35
    const/4 v2, 0x7

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x7

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 36
    const/4 v2, 0x7

    long-to-int v3, v0

    aput v3, p2, v2

    .line 37
    ushr-long/2addr v0, v8

    .line 38
    long-to-int v0, v0

    return v0
.end method

.method public static addBothTo([II[II[II)I
    .registers 15

    .prologue
    const/16 v8, 0x20

    const-wide v6, 0xffffffffL

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

    aget v2, p0, p1

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p2, p3

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    aget v4, p4, p5

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 105
    long-to-int v2, v0

    aput v2, p4, p5

    .line 106
    ushr-long/2addr v0, v8

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

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x1

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-int/lit8 v4, p5, 0x1

    aget v4, p4, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 108
    add-int/lit8 v2, p5, 0x1

    long-to-int v3, v0

    aput v3, p4, v2

    .line 109
    ushr-long/2addr v0, v8

    .line 110
    add-int/lit8 v2, p1, 0x2

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x2

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-int/lit8 v4, p5, 0x2

    aget v4, p4, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 111
    add-int/lit8 v2, p5, 0x2

    long-to-int v3, v0

    aput v3, p4, v2

    .line 112
    ushr-long/2addr v0, v8

    .line 113
    add-int/lit8 v2, p1, 0x3

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x3

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-int/lit8 v4, p5, 0x3

    aget v4, p4, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 114
    add-int/lit8 v2, p5, 0x3

    long-to-int v3, v0

    aput v3, p4, v2

    .line 115
    ushr-long/2addr v0, v8

    .line 116
    add-int/lit8 v2, p1, 0x4

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x4

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-int/lit8 v4, p5, 0x4

    aget v4, p4, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 117
    add-int/lit8 v2, p5, 0x4

    long-to-int v3, v0

    aput v3, p4, v2

    .line 118
    ushr-long/2addr v0, v8

    .line 119
    add-int/lit8 v2, p1, 0x5

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x5

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-int/lit8 v4, p5, 0x5

    aget v4, p4, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 120
    add-int/lit8 v2, p5, 0x5

    long-to-int v3, v0

    aput v3, p4, v2

    .line 121
    ushr-long/2addr v0, v8

    .line 122
    add-int/lit8 v2, p1, 0x6

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x6

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-int/lit8 v4, p5, 0x6

    aget v4, p4, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 123
    add-int/lit8 v2, p5, 0x6

    long-to-int v3, v0

    aput v3, p4, v2

    .line 124
    ushr-long/2addr v0, v8

    .line 125
    add-int/lit8 v2, p1, 0x7

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x7

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-int/lit8 v4, p5, 0x7

    aget v4, p4, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 126
    add-int/lit8 v2, p5, 0x7

    long-to-int v3, v0

    aput v3, p4, v2

    .line 127
    ushr-long/2addr v0, v8

    .line 128
    long-to-int v0, v0

    return v0
.end method

.method public static addBothTo([I[I[I)I
    .registers 15

    .prologue
    const/4 v11, 0x2

    const/4 v10, 0x1

    const/4 v9, 0x0

    const/16 v8, 0x20

    const-wide v6, 0xffffffffL

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

    aget v2, p0, v9

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p1, v9

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    aget v4, p2, v9

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 75
    long-to-int v2, v0

    aput v2, p2, v9

    .line 76
    ushr-long/2addr v0, v8

    .line 77
    aget v2, p0, v10

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p1, v10

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    aget v4, p2, v10

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 78
    long-to-int v2, v0

    aput v2, p2, v10

    .line 79
    ushr-long/2addr v0, v8

    .line 80
    aget v2, p0, v11

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p1, v11

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    aget v4, p2, v11

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 81
    long-to-int v2, v0

    aput v2, p2, v11

    .line 82
    ushr-long/2addr v0, v8

    .line 83
    const/4 v2, 0x3

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x3

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    const/4 v4, 0x3

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 84
    const/4 v2, 0x3

    long-to-int v3, v0

    aput v3, p2, v2

    .line 85
    ushr-long/2addr v0, v8

    .line 86
    const/4 v2, 0x4

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x4

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    const/4 v4, 0x4

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 87
    const/4 v2, 0x4

    long-to-int v3, v0

    aput v3, p2, v2

    .line 88
    ushr-long/2addr v0, v8

    .line 89
    const/4 v2, 0x5

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x5

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    const/4 v4, 0x5

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 90
    const/4 v2, 0x5

    long-to-int v3, v0

    aput v3, p2, v2

    .line 91
    ushr-long/2addr v0, v8

    .line 92
    const/4 v2, 0x6

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x6

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    const/4 v4, 0x6

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 93
    const/4 v2, 0x6

    long-to-int v3, v0

    aput v3, p2, v2

    .line 94
    ushr-long/2addr v0, v8

    .line 95
    const/4 v2, 0x7

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x7

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    const/4 v4, 0x7

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 96
    const/4 v2, 0x7

    long-to-int v3, v0

    aput v3, p2, v2

    .line 97
    ushr-long/2addr v0, v8

    .line 98
    long-to-int v0, v0

    return v0
.end method

.method public static addTo([II[III)I
    .registers 14

    .prologue
    const/16 v8, 0x20

    const-wide v6, 0xffffffffL

    .line 163
    int-to-long v0, p4

    and-long/2addr v0, v6

    .line 164
    aget v2, p0, p1

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p2, p3

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 165
    long-to-int v2, v0

    aput v2, p2, p3

    .line 166
    ushr-long/2addr v0, v8

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

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x1

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 168
    add-int/lit8 v2, p3, 0x1

    long-to-int v3, v0

    aput v3, p2, v2

    .line 169
    ushr-long/2addr v0, v8

    .line 170
    add-int/lit8 v2, p1, 0x2

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x2

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 171
    add-int/lit8 v2, p3, 0x2

    long-to-int v3, v0

    aput v3, p2, v2

    .line 172
    ushr-long/2addr v0, v8

    .line 173
    add-int/lit8 v2, p1, 0x3

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x3

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 174
    add-int/lit8 v2, p3, 0x3

    long-to-int v3, v0

    aput v3, p2, v2

    .line 175
    ushr-long/2addr v0, v8

    .line 176
    add-int/lit8 v2, p1, 0x4

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x4

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 177
    add-int/lit8 v2, p3, 0x4

    long-to-int v3, v0

    aput v3, p2, v2

    .line 178
    ushr-long/2addr v0, v8

    .line 179
    add-int/lit8 v2, p1, 0x5

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x5

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 180
    add-int/lit8 v2, p3, 0x5

    long-to-int v3, v0

    aput v3, p2, v2

    .line 181
    ushr-long/2addr v0, v8

    .line 182
    add-int/lit8 v2, p1, 0x6

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x6

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 183
    add-int/lit8 v2, p3, 0x6

    long-to-int v3, v0

    aput v3, p2, v2

    .line 184
    ushr-long/2addr v0, v8

    .line 185
    add-int/lit8 v2, p1, 0x7

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x7

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 186
    add-int/lit8 v2, p3, 0x7

    long-to-int v3, v0

    aput v3, p2, v2

    .line 187
    ushr-long/2addr v0, v8

    .line 188
    long-to-int v0, v0

    return v0
.end method

.method public static addTo([I[I)I
    .registers 14

    .prologue
    const/4 v11, 0x2

    const/4 v10, 0x1

    const/4 v9, 0x0

    const/16 v8, 0x20

    const-wide v6, 0xffffffffL

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

    aget v2, p0, v9

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p1, v9

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 135
    long-to-int v2, v0

    aput v2, p1, v9

    .line 136
    ushr-long/2addr v0, v8

    .line 137
    aget v2, p0, v10

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p1, v10

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 138
    long-to-int v2, v0

    aput v2, p1, v10

    .line 139
    ushr-long/2addr v0, v8

    .line 140
    aget v2, p0, v11

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p1, v11

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 141
    long-to-int v2, v0

    aput v2, p1, v11

    .line 142
    ushr-long/2addr v0, v8

    .line 143
    const/4 v2, 0x3

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x3

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 144
    const/4 v2, 0x3

    long-to-int v3, v0

    aput v3, p1, v2

    .line 145
    ushr-long/2addr v0, v8

    .line 146
    const/4 v2, 0x4

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x4

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 147
    const/4 v2, 0x4

    long-to-int v3, v0

    aput v3, p1, v2

    .line 148
    ushr-long/2addr v0, v8

    .line 149
    const/4 v2, 0x5

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x5

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 150
    const/4 v2, 0x5

    long-to-int v3, v0

    aput v3, p1, v2

    .line 151
    ushr-long/2addr v0, v8

    .line 152
    const/4 v2, 0x6

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x6

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 153
    const/4 v2, 0x6

    long-to-int v3, v0

    aput v3, p1, v2

    .line 154
    ushr-long/2addr v0, v8

    .line 155
    const/4 v2, 0x7

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x7

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 156
    const/4 v2, 0x7

    long-to-int v3, v0

    aput v3, p1, v2

    .line 157
    ushr-long/2addr v0, v8

    .line 158
    long-to-int v0, v0

    return v0
.end method

.method public static addToEachOther([II[II)I
    .registers 13

    .prologue
    const/16 v8, 0x20

    const-wide v6, 0xffffffffL

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

    aget v2, p0, p1

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p2, p3

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 195
    long-to-int v2, v0

    aput v2, p0, p1

    .line 196
    long-to-int v2, v0

    aput v2, p2, p3

    .line 197
    ushr-long/2addr v0, v8

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

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x1

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

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

    long-to-int v3, v0

    aput v3, p0, v2

    .line 200
    add-int/lit8 v2, p3, 0x1

    long-to-int v3, v0

    aput v3, p2, v2

    .line 201
    ushr-long/2addr v0, v8

    .line 202
    add-int/lit8 v2, p1, 0x2

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x2

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 203
    add-int/lit8 v2, p1, 0x2

    long-to-int v3, v0

    aput v3, p0, v2

    .line 204
    add-int/lit8 v2, p3, 0x2

    long-to-int v3, v0

    aput v3, p2, v2

    .line 205
    ushr-long/2addr v0, v8

    .line 206
    add-int/lit8 v2, p1, 0x3

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x3

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 207
    add-int/lit8 v2, p1, 0x3

    long-to-int v3, v0

    aput v3, p0, v2

    .line 208
    add-int/lit8 v2, p3, 0x3

    long-to-int v3, v0

    aput v3, p2, v2

    .line 209
    ushr-long/2addr v0, v8

    .line 210
    add-int/lit8 v2, p1, 0x4

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x4

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 211
    add-int/lit8 v2, p1, 0x4

    long-to-int v3, v0

    aput v3, p0, v2

    .line 212
    add-int/lit8 v2, p3, 0x4

    long-to-int v3, v0

    aput v3, p2, v2

    .line 213
    ushr-long/2addr v0, v8

    .line 214
    add-int/lit8 v2, p1, 0x5

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x5

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 215
    add-int/lit8 v2, p1, 0x5

    long-to-int v3, v0

    aput v3, p0, v2

    .line 216
    add-int/lit8 v2, p3, 0x5

    long-to-int v3, v0

    aput v3, p2, v2

    .line 217
    ushr-long/2addr v0, v8

    .line 218
    add-int/lit8 v2, p1, 0x6

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x6

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 219
    add-int/lit8 v2, p1, 0x6

    long-to-int v3, v0

    aput v3, p0, v2

    .line 220
    add-int/lit8 v2, p3, 0x6

    long-to-int v3, v0

    aput v3, p2, v2

    .line 221
    ushr-long/2addr v0, v8

    .line 222
    add-int/lit8 v2, p1, 0x7

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x7

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 223
    add-int/lit8 v2, p1, 0x7

    long-to-int v3, v0

    aput v3, p0, v2

    .line 224
    add-int/lit8 v2, p3, 0x7

    long-to-int v3, v0

    aput v3, p2, v2

    .line 225
    ushr-long/2addr v0, v8

    .line 226
    long-to-int v0, v0

    return v0
.end method

.method public static copy([I[I)V
    .registers 8

    .prologue
    const/4 v5, 0x4

    const/4 v4, 0x3

    const/4 v3, 0x2

    const/4 v2, 0x1

    const/4 v1, 0x0

    .line 231
    aget v0, p0, v1

    aput v0, p1, v1

    .line 232
    aget v0, p0, v2

    aput v0, p1, v2

    .line 233
    aget v0, p0, v3

    aput v0, p1, v3

    .line 234
    aget v0, p0, v4

    aput v0, p1, v4

    .line 235
    aget v0, p0, v5

    aput v0, p1, v5

    .line 236
    const/4 v0, 0x5

    const/4 v1, 0x5

    aget v1, p0, v1

    aput v1, p1, v0

    .line 237
    const/4 v0, 0x6

    const/4 v1, 0x6

    aget v1, p0, v1

    aput v1, p1, v0

    .line 238
    const/4 v0, 0x7

    const/4 v1, 0x7

    aget v1, p0, v1

    aput v1, p1, v0

    .line 239
    return-void
.end method

.method public static copy64([J[J)V
    .registers 8

    .prologue
    const/4 v5, 0x3

    const/4 v4, 0x2

    const/4 v3, 0x1

    const/4 v2, 0x0

    .line 243
    aget-wide v0, p0, v2

    aput-wide v0, p1, v2

    .line 244
    aget-wide v0, p0, v3

    aput-wide v0, p1, v3

    .line 245
    aget-wide v0, p0, v4

    aput-wide v0, p1, v4

    .line 246
    aget-wide v0, p0, v5

    aput-wide v0, p1, v5

    .line 247
    return-void
.end method

.method public static create()[I
    .registers 1

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

    new-array v0, v0, [I

    return-object v0
.end method

.method public static create64()[J
    .registers 1

    .prologue
    .line 256
    const/4 v0, 0x4

    new-array v0, v0, [J

    return-object v0
.end method

.method public static createExt()[I
    .registers 1

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

    new-array v0, v0, [I

    return-object v0
.end method

.method public static createExt64()[J
    .registers 1

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

    new-array v0, v0, [J

    return-object v0
.end method

.method public static diff([II[II[II)Z
    .registers 13

    .prologue
    .line 271
    invoke-static {p0, p1, p2, p3}, Lorg/spongycastle/math/raw/Nat256;->gte([II[II)Z

    move-result v6

    .line 272
    if-eqz v6, :cond_a

    .line 274
    invoke-static/range {p0 .. p5}, Lorg/spongycastle/math/raw/Nat256;->sub([II[II[II)I

    .line 280
    :goto_9
    return v6

    :cond_a
    move-object v0, p2

    move v1, p3

    move-object v2, p0

    move v3, p1

    move-object v4, p4

    move v5, p5

    .line 278
    invoke-static/range {v0 .. v5}, Lorg/spongycastle/math/raw/Nat256;->sub([II[II[II)I

    goto :goto_9
.end method

.method public static eq([I[I)Z
    .registers 5

    .prologue
    .line 285
    const/4 v0, 0x7

    :goto_1
    if-ltz v0, :cond_e

    .line 287
    aget v1, p0, v0

    aget v2, p1, v0

    if-eq v1, v2, :cond_b

    .line 289
    const/4 v0, 0x0

    .line 292
    :goto_a
    return v0

    .line 285
    :cond_b
    add-int/lit8 v0, v0, -0x1

    goto :goto_1

    .line 292
    :cond_e
    const/4 v0, 0x1

    goto :goto_a
.end method

.method public static eq64([J[J)Z
    .registers 8

    .prologue
    .line 297
    const/4 v0, 0x3

    :goto_1
    if-ltz v0, :cond_10

    .line 299
    aget-wide v2, p0, v0

    aget-wide v4, p1, v0

    cmp-long v1, v2, v4

    if-eqz v1, :cond_d

    .line 301
    const/4 v0, 0x0

    .line 304
    :goto_c
    return v0

    .line 297
    :cond_d
    add-int/lit8 v0, v0, -0x1

    goto :goto_1

    .line 304
    :cond_10
    const/4 v0, 0x1

    goto :goto_c
.end method

.method public static fromBigInteger(Ljava/math/BigInteger;)[I
    .registers 5

    .prologue
    .line 309
    invoke-virtual {p0}, Ljava/math/BigInteger;->signum()I

    move-result v0

    if-ltz v0, :cond_e

    invoke-virtual {p0}, Ljava/math/BigInteger;->bitLength()I

    move-result v0

    const/16 v1, 0x100

    if-le v0, v1, :cond_14

    .line 311
    :cond_e
    new-instance v0, Ljava/lang/IllegalArgumentException;

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

    throw v0

    .line 314
    :cond_14
    invoke-static {}, Lorg/spongycastle/math/raw/Nat256;->create()[I

    move-result-object v2

    .line 315
    const/4 v0, 0x0

    .line 316
    :goto_19
    invoke-virtual {p0}, Ljava/math/BigInteger;->signum()I

    move-result v1

    if-eqz v1, :cond_2f

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

    invoke-virtual {p0}, Ljava/math/BigInteger;->intValue()I

    move-result v3

    aput v3, v2, v0

    .line 319
    const/16 v0, 0x20

    invoke-virtual {p0, v0}, Ljava/math/BigInteger;->shiftRight(I)Ljava/math/BigInteger;

    move-result-object p0

    move v0, v1

    goto :goto_19

    .line 321
    :cond_2f
    return-object v2
.end method

.method public static fromBigInteger64(Ljava/math/BigInteger;)[J
    .registers 7

    .prologue
    .line 326
    invoke-virtual {p0}, Ljava/math/BigInteger;->signum()I

    move-result v0

    if-ltz v0, :cond_e

    invoke-virtual {p0}, Ljava/math/BigInteger;->bitLength()I

    move-result v0

    const/16 v1, 0x100

    if-le v0, v1, :cond_14

    .line 328
    :cond_e
    new-instance v0, Ljava/lang/IllegalArgumentException;

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

    throw v0

    .line 331
    :cond_14
    invoke-static {}, Lorg/spongycastle/math/raw/Nat256;->create64()[J

    move-result-object v2

    .line 332
    const/4 v0, 0x0

    .line 333
    :goto_19
    invoke-virtual {p0}, Ljava/math/BigInteger;->signum()I

    move-result v1

    if-eqz v1, :cond_2f

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

    invoke-virtual {p0}, Ljava/math/BigInteger;->longValue()J

    move-result-wide v4

    aput-wide v4, v2, v0

    .line 336
    const/16 v0, 0x40

    invoke-virtual {p0, v0}, Ljava/math/BigInteger;->shiftRight(I)Ljava/math/BigInteger;

    move-result-object p0

    move v0, v1

    goto :goto_19

    .line 338
    :cond_2f
    return-object v2
.end method

.method public static getBit([II)I
    .registers 4

    .prologue
    const/4 v0, 0x0

    .line 343
    if-nez p1, :cond_8

    .line 345
    aget v0, p0, v0

    and-int/lit8 v0, v0, 0x1

    .line 353
    :cond_7
    :goto_7
    return v0

    .line 347
    :cond_8
    and-int/lit16 v1, p1, 0xff

    if-ne v1, p1, :cond_7

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

    .line 352
    and-int/lit8 v1, p1, 0x1f

    .line 353
    aget v0, p0, v0

    ushr-int/2addr v0, v1

    and-int/lit8 v0, v0, 0x1

    goto :goto_7
.end method

.method public static gte([II[II)Z
    .registers 9

    .prologue
    const/4 v0, 0x1

    const/high16 v4, -0x80000000

    .line 372
    const/4 v1, 0x7

    :goto_4
    if-ltz v1, :cond_13

    .line 374
    add-int v2, p1, v1

    aget v2, p0, v2

    xor-int/2addr v2, v4

    .line 375
    add-int v3, p3, v1

    aget v3, p2, v3

    xor-int/2addr v3, v4

    .line 376
    if-ge v2, v3, :cond_14

    .line 377
    const/4 v0, 0x0

    .line 381
    :cond_13
    return v0

    .line 378
    :cond_14
    if-gt v2, v3, :cond_13

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

    goto :goto_4
.end method

.method public static gte([I[I)Z
    .registers 7

    .prologue
    const/4 v0, 0x1

    const/high16 v4, -0x80000000

    .line 358
    const/4 v1, 0x7

    :goto_4
    if-ltz v1, :cond_f

    .line 360
    aget v2, p0, v1

    xor-int/2addr v2, v4

    .line 361
    aget v3, p1, v1

    xor-int/2addr v3, v4

    .line 362
    if-ge v2, v3, :cond_10

    .line 363
    const/4 v0, 0x0

    .line 367
    :cond_f
    return v0

    .line 364
    :cond_10
    if-gt v2, v3, :cond_f

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

    goto :goto_4
.end method

.method public static isOne([I)Z
    .registers 5

    .prologue
    const/4 v1, 0x1

    const/4 v0, 0x0

    .line 386
    aget v2, p0, v0

    if-eq v2, v1, :cond_7

    .line 397
    :cond_6
    :goto_6
    return v0

    :cond_7
    move v2, v1

    .line 390
    :goto_8
    const/16 v3, 0x8

    if-ge v2, v3, :cond_13

    .line 392
    aget v3, p0, v2

    if-nez v3, :cond_6

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

    goto :goto_8

    :cond_13
    move v0, v1

    .line 397
    goto :goto_6
.end method

.method public static isOne64([J)Z
    .registers 9

    .prologue
    const/4 v1, 0x1

    const/4 v0, 0x0

    .line 402
    aget-wide v2, p0, v0

    const-wide/16 v4, 0x1

    cmp-long v2, v2, v4

    if-eqz v2, :cond_b

    .line 413
    :cond_a
    :goto_a
    return v0

    :cond_b
    move v2, v1

    .line 406
    :goto_c
    const/4 v3, 0x4

    if-ge v2, v3, :cond_1a

    .line 408
    aget-wide v4, p0, v2

    const-wide/16 v6, 0x0

    cmp-long v3, v4, v6

    if-nez v3, :cond_a

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

    goto :goto_c

    :cond_1a
    move v0, v1

    .line 413
    goto :goto_a
.end method

.method public static isZero([I)Z
    .registers 4

    .prologue
    const/4 v0, 0x0

    .line 418
    move v1, v0

    :goto_2
    const/16 v2, 0x8

    if-ge v1, v2, :cond_e

    .line 420
    aget v2, p0, v1

    if-eqz v2, :cond_b

    .line 425
    :goto_a
    return v0

    .line 418
    :cond_b
    add-int/lit8 v1, v1, 0x1

    goto :goto_2

    .line 425
    :cond_e
    const/4 v0, 0x1

    goto :goto_a
.end method

.method public static isZero64([J)Z
    .registers 7

    .prologue
    const/4 v0, 0x0

    .line 430
    move v1, v0

    :goto_2
    const/4 v2, 0x4

    if-ge v1, v2, :cond_11

    .line 432
    aget-wide v2, p0, v1

    const-wide/16 v4, 0x0

    cmp-long v2, v2, v4

    if-eqz v2, :cond_e

    .line 437
    :goto_d
    return v0

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

    goto :goto_2

    .line 437
    :cond_11
    const/4 v0, 0x1

    goto :goto_d
.end method

.method public static mul([II[II[II)V
    .registers 36

    .prologue
    .line 513
    aget v2, p2, p3

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long/2addr v4, v2

    .line 514
    add-int/lit8 v2, p3, 0x1

    aget v2, p2, v2

    int-to-long v2, v2

    const-wide v6, 0xffffffffL

    and-long/2addr v6, v2

    .line 515
    add-int/lit8 v2, p3, 0x2

    aget v2, p2, v2

    int-to-long v2, v2

    const-wide v8, 0xffffffffL

    and-long/2addr v8, v2

    .line 516
    add-int/lit8 v2, p3, 0x3

    aget v2, p2, v2

    int-to-long v2, v2

    const-wide v10, 0xffffffffL

    and-long/2addr v10, v2

    .line 517
    add-int/lit8 v2, p3, 0x4

    aget v2, p2, v2

    int-to-long v2, v2

    const-wide v12, 0xffffffffL

    and-long/2addr v12, v2

    .line 518
    add-int/lit8 v2, p3, 0x5

    aget v2, p2, v2

    int-to-long v2, v2

    const-wide v14, 0xffffffffL

    and-long/2addr v14, v2

    .line 519
    add-int/lit8 v2, p3, 0x6

    aget v2, p2, v2

    int-to-long v2, v2

    const-wide v16, 0xffffffffL

    and-long v16, v16, v2

    .line 520
    add-int/lit8 v2, p3, 0x7

    aget v2, p2, v2

    int-to-long v2, v2

    const-wide v18, 0xffffffffL

    and-long v18, v18, v2

    .line 523
    aget v2, p0, p1

    int-to-long v2, v2

    const-wide v20, 0xffffffffL

    and-long v2, v2, v20

    .line 524
    const-wide/16 v20, 0x0

    mul-long v22, v2, v4

    add-long v20, v20, v22

    .line 525
    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v22, v0

    aput v22, p4, p5

    .line 526
    const/16 v22, 0x20

    ushr-long v20, v20, v22

    .line 527
    mul-long v22, v2, v6

    add-long v20, v20, v22

    .line 528
    add-int/lit8 v22, p5, 0x1

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v23, v0

    aput v23, p4, v22

    .line 529
    const/16 v22, 0x20

    ushr-long v20, v20, v22

    .line 530
    mul-long v22, v2, v8

    add-long v20, v20, v22

    .line 531
    add-int/lit8 v22, p5, 0x2

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v23, v0

    aput v23, p4, v22

    .line 532
    const/16 v22, 0x20

    ushr-long v20, v20, v22

    .line 533
    mul-long v22, v2, v10

    add-long v20, v20, v22

    .line 534
    add-int/lit8 v22, p5, 0x3

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v23, v0

    aput v23, p4, v22

    .line 535
    const/16 v22, 0x20

    ushr-long v20, v20, v22

    .line 536
    mul-long v22, v2, v12

    add-long v20, v20, v22

    .line 537
    add-int/lit8 v22, p5, 0x4

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v23, v0

    aput v23, p4, v22

    .line 538
    const/16 v22, 0x20

    ushr-long v20, v20, v22

    .line 539
    mul-long v22, v2, v14

    add-long v20, v20, v22

    .line 540
    add-int/lit8 v22, p5, 0x5

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v23, v0

    aput v23, p4, v22

    .line 541
    const/16 v22, 0x20

    ushr-long v20, v20, v22

    .line 542
    mul-long v22, v2, v16

    add-long v20, v20, v22

    .line 543
    add-int/lit8 v22, p5, 0x6

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v23, v0

    aput v23, p4, v22

    .line 544
    const/16 v22, 0x20

    ushr-long v20, v20, v22

    .line 545
    mul-long v2, v2, v18

    add-long v2, v2, v20

    .line 546
    add-int/lit8 v20, p5, 0x7

    long-to-int v0, v2

    move/from16 v21, v0

    aput v21, p4, v20

    .line 547
    const/16 v20, 0x20

    ushr-long v2, v2, v20

    .line 548
    add-int/lit8 v20, p5, 0x8

    long-to-int v2, v2

    aput v2, p4, v20

    .line 551
    const/4 v2, 0x1

    :goto_ee
    const/16 v3, 0x8

    if-ge v2, v3, :cond_213

    .line 553
    add-int/lit8 p5, p5, 0x1

    .line 554
    add-int v3, p1, v2

    aget v3, p0, v3

    int-to-long v0, v3

    move-wide/from16 v20, v0

    const-wide v22, 0xffffffffL

    and-long v20, v20, v22

    .line 555
    const-wide/16 v22, 0x0

    mul-long v24, v20, v4

    aget v3, p4, p5

    int-to-long v0, v3

    move-wide/from16 v26, v0

    const-wide v28, 0xffffffffL

    and-long v26, v26, v28

    add-long v24, v24, v26

    add-long v22, v22, v24

    .line 556
    move-wide/from16 v0, v22

    long-to-int v3, v0

    aput v3, p4, p5

    .line 557
    const/16 v3, 0x20

    ushr-long v22, v22, v3

    .line 558
    mul-long v24, v20, v6

    add-int/lit8 v3, p5, 0x1

    aget v3, p4, v3

    int-to-long v0, v3

    move-wide/from16 v26, v0

    const-wide v28, 0xffffffffL

    and-long v26, v26, v28

    add-long v24, v24, v26

    add-long v22, v22, v24

    .line 559
    add-int/lit8 v3, p5, 0x1

    move-wide/from16 v0, v22

    long-to-int v0, v0

    move/from16 v24, v0

    aput v24, p4, v3

    .line 560
    const/16 v3, 0x20

    ushr-long v22, v22, v3

    .line 561
    mul-long v24, v20, v8

    add-int/lit8 v3, p5, 0x2

    aget v3, p4, v3

    int-to-long v0, v3

    move-wide/from16 v26, v0

    const-wide v28, 0xffffffffL

    and-long v26, v26, v28

    add-long v24, v24, v26

    add-long v22, v22, v24

    .line 562
    add-int/lit8 v3, p5, 0x2

    move-wide/from16 v0, v22

    long-to-int v0, v0

    move/from16 v24, v0

    aput v24, p4, v3

    .line 563
    const/16 v3, 0x20

    ushr-long v22, v22, v3

    .line 564
    mul-long v24, v20, v10

    add-int/lit8 v3, p5, 0x3

    aget v3, p4, v3

    int-to-long v0, v3

    move-wide/from16 v26, v0

    const-wide v28, 0xffffffffL

    and-long v26, v26, v28

    add-long v24, v24, v26

    add-long v22, v22, v24

    .line 565
    add-int/lit8 v3, p5, 0x3

    move-wide/from16 v0, v22

    long-to-int v0, v0

    move/from16 v24, v0

    aput v24, p4, v3

    .line 566
    const/16 v3, 0x20

    ushr-long v22, v22, v3

    .line 567
    mul-long v24, v20, v12

    add-int/lit8 v3, p5, 0x4

    aget v3, p4, v3

    int-to-long v0, v3

    move-wide/from16 v26, v0

    const-wide v28, 0xffffffffL

    and-long v26, v26, v28

    add-long v24, v24, v26

    add-long v22, v22, v24

    .line 568
    add-int/lit8 v3, p5, 0x4

    move-wide/from16 v0, v22

    long-to-int v0, v0

    move/from16 v24, v0

    aput v24, p4, v3

    .line 569
    const/16 v3, 0x20

    ushr-long v22, v22, v3

    .line 570
    mul-long v24, v20, v14

    add-int/lit8 v3, p5, 0x5

    aget v3, p4, v3

    int-to-long v0, v3

    move-wide/from16 v26, v0

    const-wide v28, 0xffffffffL

    and-long v26, v26, v28

    add-long v24, v24, v26

    add-long v22, v22, v24

    .line 571
    add-int/lit8 v3, p5, 0x5

    move-wide/from16 v0, v22

    long-to-int v0, v0

    move/from16 v24, v0

    aput v24, p4, v3

    .line 572
    const/16 v3, 0x20

    ushr-long v22, v22, v3

    .line 573
    mul-long v24, v20, v16

    add-int/lit8 v3, p5, 0x6

    aget v3, p4, v3

    int-to-long v0, v3

    move-wide/from16 v26, v0

    const-wide v28, 0xffffffffL

    and-long v26, v26, v28

    add-long v24, v24, v26

    add-long v22, v22, v24

    .line 574
    add-int/lit8 v3, p5, 0x6

    move-wide/from16 v0, v22

    long-to-int v0, v0

    move/from16 v24, v0

    aput v24, p4, v3

    .line 575
    const/16 v3, 0x20

    ushr-long v22, v22, v3

    .line 576
    mul-long v20, v20, v18

    add-int/lit8 v3, p5, 0x7

    aget v3, p4, v3

    int-to-long v0, v3

    move-wide/from16 v24, v0

    const-wide v26, 0xffffffffL

    and-long v24, v24, v26

    add-long v20, v20, v24

    add-long v20, v20, v22

    .line 577
    add-int/lit8 v3, p5, 0x7

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v22, v0

    aput v22, p4, v3

    .line 578
    const/16 v3, 0x20

    ushr-long v20, v20, v3

    .line 579
    add-int/lit8 v3, p5, 0x8

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v20, v0

    aput v20, p4, v3

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

    goto/16 :goto_ee

    .line 581
    :cond_213
    return-void
.end method

.method public static mul([I[I[I)V
    .registers 33

    .prologue
    .line 442
    const/4 v2, 0x0

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long/2addr v4, v2

    .line 443
    const/4 v2, 0x1

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v6, 0xffffffffL

    and-long/2addr v6, v2

    .line 444
    const/4 v2, 0x2

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v8, 0xffffffffL

    and-long/2addr v8, v2

    .line 445
    const/4 v2, 0x3

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v10, 0xffffffffL

    and-long/2addr v10, v2

    .line 446
    const/4 v2, 0x4

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v12, 0xffffffffL

    and-long/2addr v12, v2

    .line 447
    const/4 v2, 0x5

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v14, 0xffffffffL

    and-long/2addr v14, v2

    .line 448
    const/4 v2, 0x6

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v16, 0xffffffffL

    and-long v16, v16, v2

    .line 449
    const/4 v2, 0x7

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v18, 0xffffffffL

    and-long v18, v18, v2

    .line 452
    const/4 v2, 0x0

    aget v2, p0, v2

    int-to-long v2, v2

    const-wide v20, 0xffffffffL

    and-long v2, v2, v20

    .line 453
    const-wide/16 v20, 0x0

    mul-long v22, v2, v4

    add-long v20, v20, v22

    .line 454
    const/16 v22, 0x0

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v23, v0

    aput v23, p2, v22

    .line 455
    const/16 v22, 0x20

    ushr-long v20, v20, v22

    .line 456
    mul-long v22, v2, v6

    add-long v20, v20, v22

    .line 457
    const/16 v22, 0x1

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v23, v0

    aput v23, p2, v22

    .line 458
    const/16 v22, 0x20

    ushr-long v20, v20, v22

    .line 459
    mul-long v22, v2, v8

    add-long v20, v20, v22

    .line 460
    const/16 v22, 0x2

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v23, v0

    aput v23, p2, v22

    .line 461
    const/16 v22, 0x20

    ushr-long v20, v20, v22

    .line 462
    mul-long v22, v2, v10

    add-long v20, v20, v22

    .line 463
    const/16 v22, 0x3

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v23, v0

    aput v23, p2, v22

    .line 464
    const/16 v22, 0x20

    ushr-long v20, v20, v22

    .line 465
    mul-long v22, v2, v12

    add-long v20, v20, v22

    .line 466
    const/16 v22, 0x4

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v23, v0

    aput v23, p2, v22

    .line 467
    const/16 v22, 0x20

    ushr-long v20, v20, v22

    .line 468
    mul-long v22, v2, v14

    add-long v20, v20, v22

    .line 469
    const/16 v22, 0x5

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v23, v0

    aput v23, p2, v22

    .line 470
    const/16 v22, 0x20

    ushr-long v20, v20, v22

    .line 471
    mul-long v22, v2, v16

    add-long v20, v20, v22

    .line 472
    const/16 v22, 0x6

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v23, v0

    aput v23, p2, v22

    .line 473
    const/16 v22, 0x20

    ushr-long v20, v20, v22

    .line 474
    mul-long v2, v2, v18

    add-long v2, v2, v20

    .line 475
    const/16 v20, 0x7

    long-to-int v0, v2

    move/from16 v21, v0

    aput v21, p2, v20

    .line 476
    const/16 v20, 0x20

    ushr-long v2, v2, v20

    .line 477
    const/16 v20, 0x8

    long-to-int v2, v2

    aput v2, p2, v20

    .line 480
    const/4 v2, 0x1

    :goto_eb
    const/16 v3, 0x8

    if-ge v2, v3, :cond_20c

    .line 482
    aget v3, p0, v2

    int-to-long v0, v3

    move-wide/from16 v20, v0

    const-wide v22, 0xffffffffL

    and-long v20, v20, v22

    .line 483
    const-wide/16 v22, 0x0

    mul-long v24, v20, v4

    aget v3, p2, v2

    int-to-long v0, v3

    move-wide/from16 v26, v0

    const-wide v28, 0xffffffffL

    and-long v26, v26, v28

    add-long v24, v24, v26

    add-long v22, v22, v24

    .line 484
    move-wide/from16 v0, v22

    long-to-int v3, v0

    aput v3, p2, v2

    .line 485
    const/16 v3, 0x20

    ushr-long v22, v22, v3

    .line 486
    mul-long v24, v20, v6

    add-int/lit8 v3, v2, 0x1

    aget v3, p2, v3

    int-to-long v0, v3

    move-wide/from16 v26, v0

    const-wide v28, 0xffffffffL

    and-long v26, v26, v28

    add-long v24, v24, v26

    add-long v22, v22, v24

    .line 487
    add-int/lit8 v3, v2, 0x1

    move-wide/from16 v0, v22

    long-to-int v0, v0

    move/from16 v24, v0

    aput v24, p2, v3

    .line 488
    const/16 v3, 0x20

    ushr-long v22, v22, v3

    .line 489
    mul-long v24, v20, v8

    add-int/lit8 v3, v2, 0x2

    aget v3, p2, v3

    int-to-long v0, v3

    move-wide/from16 v26, v0

    const-wide v28, 0xffffffffL

    and-long v26, v26, v28

    add-long v24, v24, v26

    add-long v22, v22, v24

    .line 490
    add-int/lit8 v3, v2, 0x2

    move-wide/from16 v0, v22

    long-to-int v0, v0

    move/from16 v24, v0

    aput v24, p2, v3

    .line 491
    const/16 v3, 0x20

    ushr-long v22, v22, v3

    .line 492
    mul-long v24, v20, v10

    add-int/lit8 v3, v2, 0x3

    aget v3, p2, v3

    int-to-long v0, v3

    move-wide/from16 v26, v0

    const-wide v28, 0xffffffffL

    and-long v26, v26, v28

    add-long v24, v24, v26

    add-long v22, v22, v24

    .line 493
    add-int/lit8 v3, v2, 0x3

    move-wide/from16 v0, v22

    long-to-int v0, v0

    move/from16 v24, v0

    aput v24, p2, v3

    .line 494
    const/16 v3, 0x20

    ushr-long v22, v22, v3

    .line 495
    mul-long v24, v20, v12

    add-int/lit8 v3, v2, 0x4

    aget v3, p2, v3

    int-to-long v0, v3

    move-wide/from16 v26, v0

    const-wide v28, 0xffffffffL

    and-long v26, v26, v28

    add-long v24, v24, v26

    add-long v22, v22, v24

    .line 496
    add-int/lit8 v3, v2, 0x4

    move-wide/from16 v0, v22

    long-to-int v0, v0

    move/from16 v24, v0

    aput v24, p2, v3

    .line 497
    const/16 v3, 0x20

    ushr-long v22, v22, v3

    .line 498
    mul-long v24, v20, v14

    add-int/lit8 v3, v2, 0x5

    aget v3, p2, v3

    int-to-long v0, v3

    move-wide/from16 v26, v0

    const-wide v28, 0xffffffffL

    and-long v26, v26, v28

    add-long v24, v24, v26

    add-long v22, v22, v24

    .line 499
    add-int/lit8 v3, v2, 0x5

    move-wide/from16 v0, v22

    long-to-int v0, v0

    move/from16 v24, v0

    aput v24, p2, v3

    .line 500
    const/16 v3, 0x20

    ushr-long v22, v22, v3

    .line 501
    mul-long v24, v20, v16

    add-int/lit8 v3, v2, 0x6

    aget v3, p2, v3

    int-to-long v0, v3

    move-wide/from16 v26, v0

    const-wide v28, 0xffffffffL

    and-long v26, v26, v28

    add-long v24, v24, v26

    add-long v22, v22, v24

    .line 502
    add-int/lit8 v3, v2, 0x6

    move-wide/from16 v0, v22

    long-to-int v0, v0

    move/from16 v24, v0

    aput v24, p2, v3

    .line 503
    const/16 v3, 0x20

    ushr-long v22, v22, v3

    .line 504
    mul-long v20, v20, v18

    add-int/lit8 v3, v2, 0x7

    aget v3, p2, v3

    int-to-long v0, v3

    move-wide/from16 v24, v0

    const-wide v26, 0xffffffffL

    and-long v24, v24, v26

    add-long v20, v20, v24

    add-long v20, v20, v22

    .line 505
    add-int/lit8 v3, v2, 0x7

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v22, v0

    aput v22, p2, v3

    .line 506
    const/16 v3, 0x20

    ushr-long v20, v20, v3

    .line 507
    add-int/lit8 v3, v2, 0x8

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v20, v0

    aput v20, p2, v3

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

    goto/16 :goto_eb

    .line 509
    :cond_20c
    return-void
.end method

.method public static mul33Add(I[II[II[II)J
    .registers 19

    .prologue
    .line 680
    int-to-long v0, p0

    const-wide v2, 0xffffffffL

    and-long/2addr v0, v2

    .line 681
    aget v2, p1, p2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long/2addr v2, v4

    .line 682
    const-wide/16 v4, 0x0

    mul-long v6, v0, v2

    aget v8, p3, p4

    int-to-long v8, v8

    const-wide v10, 0xffffffffL

    and-long/2addr v8, v10

    add-long/2addr v6, v8

    add-long/2addr v4, v6

    .line 683
    long-to-int v6, v4

    aput v6, p5, p6

    .line 684
    const/16 v6, 0x20

    ushr-long/2addr v4, v6

    .line 685
    add-int/lit8 v6, p2, 0x1

    aget v6, p1, v6

    int-to-long v6, v6

    const-wide v8, 0xffffffffL

    and-long/2addr v6, v8

    .line 686
    mul-long v8, v0, v6

    add-long/2addr v2, v8

    add-int/lit8 v8, p4, 0x1

    aget v8, p3, v8

    int-to-long v8, v8

    const-wide v10, 0xffffffffL

    and-long/2addr v8, v10

    add-long/2addr v2, v8

    add-long/2addr v2, v4

    .line 687
    add-int/lit8 v4, p6, 0x1

    long-to-int v5, v2

    aput v5, p5, v4

    .line 688
    const/16 v4, 0x20

    ushr-long/2addr v2, v4

    .line 689
    add-int/lit8 v4, p2, 0x2

    aget v4, p1, v4

    int-to-long v4, v4

    const-wide v8, 0xffffffffL

    and-long/2addr v4, v8

    .line 690
    mul-long v8, v0, v4

    add-long/2addr v6, v8

    add-int/lit8 v8, p4, 0x2

    aget v8, p3, v8

    int-to-long v8, v8

    const-wide v10, 0xffffffffL

    and-long/2addr v8, v10

    add-long/2addr v6, v8

    add-long/2addr v2, v6

    .line 691
    add-int/lit8 v6, p6, 0x2

    long-to-int v7, v2

    aput v7, p5, v6

    .line 692
    const/16 v6, 0x20

    ushr-long/2addr v2, v6

    .line 693
    add-int/lit8 v6, p2, 0x3

    aget v6, p1, v6

    int-to-long v6, v6

    const-wide v8, 0xffffffffL

    and-long/2addr v6, v8

    .line 694
    mul-long v8, v0, v6

    add-long/2addr v4, v8

    add-int/lit8 v8, p4, 0x3

    aget v8, p3, v8

    int-to-long v8, v8

    const-wide v10, 0xffffffffL

    and-long/2addr v8, v10

    add-long/2addr v4, v8

    add-long/2addr v2, v4

    .line 695
    add-int/lit8 v4, p6, 0x3

    long-to-int v5, v2

    aput v5, p5, v4

    .line 696
    const/16 v4, 0x20

    ushr-long/2addr v2, v4

    .line 697
    add-int/lit8 v4, p2, 0x4

    aget v4, p1, v4

    int-to-long v4, v4

    const-wide v8, 0xffffffffL

    and-long/2addr v4, v8

    .line 698
    mul-long v8, v0, v4

    add-long/2addr v6, v8

    add-int/lit8 v8, p4, 0x4

    aget v8, p3, v8

    int-to-long v8, v8

    const-wide v10, 0xffffffffL

    and-long/2addr v8, v10

    add-long/2addr v6, v8

    add-long/2addr v2, v6

    .line 699
    add-int/lit8 v6, p6, 0x4

    long-to-int v7, v2

    aput v7, p5, v6

    .line 700
    const/16 v6, 0x20

    ushr-long/2addr v2, v6

    .line 701
    add-int/lit8 v6, p2, 0x5

    aget v6, p1, v6

    int-to-long v6, v6

    const-wide v8, 0xffffffffL

    and-long/2addr v6, v8

    .line 702
    mul-long v8, v0, v6

    add-long/2addr v4, v8

    add-int/lit8 v8, p4, 0x5

    aget v8, p3, v8

    int-to-long v8, v8

    const-wide v10, 0xffffffffL

    and-long/2addr v8, v10

    add-long/2addr v4, v8

    add-long/2addr v2, v4

    .line 703
    add-int/lit8 v4, p6, 0x5

    long-to-int v5, v2

    aput v5, p5, v4

    .line 704
    const/16 v4, 0x20

    ushr-long/2addr v2, v4

    .line 705
    add-int/lit8 v4, p2, 0x6

    aget v4, p1, v4

    int-to-long v4, v4

    const-wide v8, 0xffffffffL

    and-long/2addr v4, v8

    .line 706
    mul-long v8, v0, v4

    add-long/2addr v6, v8

    add-int/lit8 v8, p4, 0x6

    aget v8, p3, v8

    int-to-long v8, v8

    const-wide v10, 0xffffffffL

    and-long/2addr v8, v10

    add-long/2addr v6, v8

    add-long/2addr v2, v6

    .line 707
    add-int/lit8 v6, p6, 0x6

    long-to-int v7, v2

    aput v7, p5, v6

    .line 708
    const/16 v6, 0x20

    ushr-long/2addr v2, v6

    .line 709
    add-int/lit8 v6, p2, 0x7

    aget v6, p1, v6

    int-to-long v6, v6

    const-wide v8, 0xffffffffL

    and-long/2addr v6, v8

    .line 710
    mul-long/2addr v0, v6

    add-long/2addr v0, v4

    add-int/lit8 v4, p4, 0x7

    aget v4, p3, v4

    int-to-long v4, v4

    const-wide v8, 0xffffffffL

    and-long/2addr v4, v8

    add-long/2addr v0, v4

    add-long/2addr v0, v2

    .line 711
    add-int/lit8 v2, p6, 0x7

    long-to-int v3, v0

    aput v3, p5, v2

    .line 712
    const/16 v2, 0x20

    ushr-long/2addr v0, v2

    .line 713
    add-long/2addr v0, v6

    .line 714
    return-wide v0
.end method

.method public static mul33DWordAdd(IJ[II)I
    .registers 20

    .prologue
    .line 812
    int-to-long v2, p0

    const-wide v4, 0xffffffffL

    and-long/2addr v2, v4

    .line 813
    const-wide v4, 0xffffffffL

    and-long v4, v4, p1

    .line 814
    const-wide/16 v6, 0x0

    mul-long v8, v2, v4

    aget v10, p3, p4

    int-to-long v10, v10

    const-wide v12, 0xffffffffL

    and-long/2addr v10, v12

    add-long/2addr v8, v10

    add-long/2addr v6, v8

    .line 815
    long-to-int v8, v6

    aput v8, p3, p4

    .line 816
    const/16 v8, 0x20

    ushr-long/2addr v6, v8

    .line 817
    const/16 v8, 0x20

    ushr-long v8, p1, v8

    .line 818
    mul-long/2addr v2, v8

    add-long/2addr v2, v4

    add-int/lit8 v4, p4, 0x1

    aget v4, p3, v4

    int-to-long v4, v4

    const-wide v10, 0xffffffffL

    and-long/2addr v4, v10

    add-long/2addr v2, v4

    add-long/2addr v2, v6

    .line 819
    add-int/lit8 v4, p4, 0x1

    long-to-int v5, v2

    aput v5, p3, v4

    .line 820
    const/16 v4, 0x20

    ushr-long/2addr v2, v4

    .line 821
    add-int/lit8 v4, p4, 0x2

    aget v4, p3, v4

    int-to-long v4, v4

    const-wide v6, 0xffffffffL

    and-long/2addr v4, v6

    add-long/2addr v4, v8

    add-long/2addr v2, v4

    .line 822
    add-int/lit8 v4, p4, 0x2

    long-to-int v5, v2

    aput v5, p3, v4

    .line 823
    const/16 v4, 0x20

    ushr-long/2addr v2, v4

    .line 824
    add-int/lit8 v4, p4, 0x3

    aget v4, p3, v4

    int-to-long v4, v4

    const-wide v6, 0xffffffffL

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    .line 825
    add-int/lit8 v4, p4, 0x3

    long-to-int v5, v2

    aput v5, p3, v4

    .line 826
    const/16 v4, 0x20

    ushr-long/2addr v2, v4

    .line 827
    const-wide/16 v4, 0x0

    cmp-long v2, v2, v4

    if-nez v2, :cond_6f

    const/4 v2, 0x0

    :goto_6e
    return v2

    :cond_6f
    const/16 v2, 0x8

    const/4 v3, 0x4

    move-object/from16 v0, p3

    move/from16 v1, p4

    invoke-static {v2, v0, v1, v3}, Lorg/spongycastle/math/raw/Nat;->incAt(I[III)I

    move-result v2

    goto :goto_6e
.end method

.method public static mul33WordAdd(II[II)I
    .registers 16

    .prologue
    const-wide/16 v10, 0x0

    const/16 v8, 0x20

    const-wide v6, 0xffffffffL

    .line 835
    int-to-long v0, p0

    and-long/2addr v0, v6

    int-to-long v2, p1

    and-long/2addr v2, v6

    .line 836
    mul-long/2addr v0, v2

    aget v4, p2, p3

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v0, v4

    add-long/2addr v0, v10

    .line 837
    long-to-int v4, v0

    aput v4, p2, p3

    .line 838
    ushr-long/2addr v0, v8

    .line 839
    add-int/lit8 v4, p3, 0x1

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 840
    add-int/lit8 v2, p3, 0x1

    long-to-int v3, v0

    aput v3, p2, v2

    .line 841
    ushr-long/2addr v0, v8

    .line 842
    add-int/lit8 v2, p3, 0x2

    aget v2, p2, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-long/2addr v0, v2

    .line 843
    add-int/lit8 v2, p3, 0x2

    long-to-int v3, v0

    aput v3, p2, v2

    .line 844
    ushr-long/2addr v0, v8

    .line 845
    cmp-long v0, v0, v10

    if-nez v0, :cond_39

    const/4 v0, 0x0

    :goto_38
    return v0

    :cond_39
    const/16 v0, 0x8

    const/4 v1, 0x3

    invoke-static {v0, p2, p3, v1}, Lorg/spongycastle/math/raw/Nat;->incAt(I[III)I

    move-result v0

    goto :goto_38
.end method

.method public static mulAddTo([II[II[II)I
    .registers 38

    .prologue
    .line 631
    aget v2, p2, p3

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v6, v2, v4

    .line 632
    add-int/lit8 v2, p3, 0x1

    aget v2, p2, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v8, v2, v4

    .line 633
    add-int/lit8 v2, p3, 0x2

    aget v2, p2, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v10, v2, v4

    .line 634
    add-int/lit8 v2, p3, 0x3

    aget v2, p2, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v12, v2, v4

    .line 635
    add-int/lit8 v2, p3, 0x4

    aget v2, p2, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v14, v2, v4

    .line 636
    add-int/lit8 v2, p3, 0x5

    aget v2, p2, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v16, v2, v4

    .line 637
    add-int/lit8 v2, p3, 0x6

    aget v2, p2, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v18, v2, v4

    .line 638
    add-int/lit8 v2, p3, 0x7

    aget v2, p2, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v20, v2, v4

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

    .line 641
    const/4 v4, 0x0

    :goto_61
    const/16 v5, 0x8

    if-ge v4, v5, :cond_199

    .line 643
    add-int v5, p1, v4

    aget v5, p0, v5

    int-to-long v0, v5

    move-wide/from16 v22, v0

    const-wide v24, 0xffffffffL

    and-long v22, v22, v24

    .line 644
    const-wide/16 v24, 0x0

    mul-long v26, v22, v6

    aget v5, p4, p5

    int-to-long v0, v5

    move-wide/from16 v28, v0

    const-wide v30, 0xffffffffL

    and-long v28, v28, v30

    add-long v26, v26, v28

    add-long v24, v24, v26

    .line 645
    move-wide/from16 v0, v24

    long-to-int v5, v0

    aput v5, p4, p5

    .line 646
    const/16 v5, 0x20

    ushr-long v24, v24, v5

    .line 647
    mul-long v26, v22, v8

    add-int/lit8 v5, p5, 0x1

    aget v5, p4, v5

    int-to-long v0, v5

    move-wide/from16 v28, v0

    const-wide v30, 0xffffffffL

    and-long v28, v28, v30

    add-long v26, v26, v28

    add-long v24, v24, v26

    .line 648
    add-int/lit8 v5, p5, 0x1

    move-wide/from16 v0, v24

    long-to-int v0, v0

    move/from16 v26, v0

    aput v26, p4, v5

    .line 649
    const/16 v5, 0x20

    ushr-long v24, v24, v5

    .line 650
    mul-long v26, v22, v10

    add-int/lit8 v5, p5, 0x2

    aget v5, p4, v5

    int-to-long v0, v5

    move-wide/from16 v28, v0

    const-wide v30, 0xffffffffL

    and-long v28, v28, v30

    add-long v26, v26, v28

    add-long v24, v24, v26

    .line 651
    add-int/lit8 v5, p5, 0x2

    move-wide/from16 v0, v24

    long-to-int v0, v0

    move/from16 v26, v0

    aput v26, p4, v5

    .line 652
    const/16 v5, 0x20

    ushr-long v24, v24, v5

    .line 653
    mul-long v26, v22, v12

    add-int/lit8 v5, p5, 0x3

    aget v5, p4, v5

    int-to-long v0, v5

    move-wide/from16 v28, v0

    const-wide v30, 0xffffffffL

    and-long v28, v28, v30

    add-long v26, v26, v28

    add-long v24, v24, v26

    .line 654
    add-int/lit8 v5, p5, 0x3

    move-wide/from16 v0, v24

    long-to-int v0, v0

    move/from16 v26, v0

    aput v26, p4, v5

    .line 655
    const/16 v5, 0x20

    ushr-long v24, v24, v5

    .line 656
    mul-long v26, v22, v14

    add-int/lit8 v5, p5, 0x4

    aget v5, p4, v5

    int-to-long v0, v5

    move-wide/from16 v28, v0

    const-wide v30, 0xffffffffL

    and-long v28, v28, v30

    add-long v26, v26, v28

    add-long v24, v24, v26

    .line 657
    add-int/lit8 v5, p5, 0x4

    move-wide/from16 v0, v24

    long-to-int v0, v0

    move/from16 v26, v0

    aput v26, p4, v5

    .line 658
    const/16 v5, 0x20

    ushr-long v24, v24, v5

    .line 659
    mul-long v26, v22, v16

    add-int/lit8 v5, p5, 0x5

    aget v5, p4, v5

    int-to-long v0, v5

    move-wide/from16 v28, v0

    const-wide v30, 0xffffffffL

    and-long v28, v28, v30

    add-long v26, v26, v28

    add-long v24, v24, v26

    .line 660
    add-int/lit8 v5, p5, 0x5

    move-wide/from16 v0, v24

    long-to-int v0, v0

    move/from16 v26, v0

    aput v26, p4, v5

    .line 661
    const/16 v5, 0x20

    ushr-long v24, v24, v5

    .line 662
    mul-long v26, v22, v18

    add-int/lit8 v5, p5, 0x6

    aget v5, p4, v5

    int-to-long v0, v5

    move-wide/from16 v28, v0

    const-wide v30, 0xffffffffL

    and-long v28, v28, v30

    add-long v26, v26, v28

    add-long v24, v24, v26

    .line 663
    add-int/lit8 v5, p5, 0x6

    move-wide/from16 v0, v24

    long-to-int v0, v0

    move/from16 v26, v0

    aput v26, p4, v5

    .line 664
    const/16 v5, 0x20

    ushr-long v24, v24, v5

    .line 665
    mul-long v22, v22, v20

    add-int/lit8 v5, p5, 0x7

    aget v5, p4, v5

    int-to-long v0, v5

    move-wide/from16 v26, v0

    const-wide v28, 0xffffffffL

    and-long v26, v26, v28

    add-long v22, v22, v26

    add-long v22, v22, v24

    .line 666
    add-int/lit8 v5, p5, 0x7

    move-wide/from16 v0, v22

    long-to-int v0, v0

    move/from16 v24, v0

    aput v24, p4, v5

    .line 667
    const/16 v5, 0x20

    ushr-long v22, v22, v5

    .line 668
    add-int/lit8 v5, p5, 0x8

    aget v5, p4, v5

    int-to-long v0, v5

    move-wide/from16 v24, v0

    const-wide v26, 0xffffffffL

    and-long v24, v24, v26

    add-long v2, v2, v24

    add-long v2, v2, v22

    .line 669
    add-int/lit8 v5, p5, 0x8

    long-to-int v0, v2

    move/from16 v22, v0

    aput v22, p4, v5

    .line 670
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

    .line 671
    add-int/lit8 p5, p5, 0x1

    .line 641
    add-int/lit8 v4, v4, 0x1

    goto/16 :goto_61

    .line 673
    :cond_199
    long-to-int v2, v2

    return v2
.end method

.method public static mulAddTo([I[I[I)I
    .registers 35

    .prologue
    .line 585
    const/4 v2, 0x0

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v6, v2, v4

    .line 586
    const/4 v2, 0x1

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v8, v2, v4

    .line 587
    const/4 v2, 0x2

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v10, v2, v4

    .line 588
    const/4 v2, 0x3

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v12, v2, v4

    .line 589
    const/4 v2, 0x4

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v14, v2, v4

    .line 590
    const/4 v2, 0x5

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v16, v2, v4

    .line 591
    const/4 v2, 0x6

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v18, v2, v4

    .line 592
    const/4 v2, 0x7

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v20, v2, v4

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

    .line 595
    const/4 v4, 0x0

    :goto_5b
    const/16 v5, 0x8

    if-ge v4, v5, :cond_18f

    .line 597
    aget v5, p0, v4

    int-to-long v0, v5

    move-wide/from16 v22, v0

    const-wide v24, 0xffffffffL

    and-long v22, v22, v24

    .line 598
    const-wide/16 v24, 0x0

    mul-long v26, v22, v6

    aget v5, p2, v4

    int-to-long v0, v5

    move-wide/from16 v28, v0

    const-wide v30, 0xffffffffL

    and-long v28, v28, v30

    add-long v26, v26, v28

    add-long v24, v24, v26

    .line 599
    move-wide/from16 v0, v24

    long-to-int v5, v0

    aput v5, p2, v4

    .line 600
    const/16 v5, 0x20

    ushr-long v24, v24, v5

    .line 601
    mul-long v26, v22, v8

    add-int/lit8 v5, v4, 0x1

    aget v5, p2, v5

    int-to-long v0, v5

    move-wide/from16 v28, v0

    const-wide v30, 0xffffffffL

    and-long v28, v28, v30

    add-long v26, v26, v28

    add-long v24, v24, v26

    .line 602
    add-int/lit8 v5, v4, 0x1

    move-wide/from16 v0, v24

    long-to-int v0, v0

    move/from16 v26, v0

    aput v26, p2, v5

    .line 603
    const/16 v5, 0x20

    ushr-long v24, v24, v5

    .line 604
    mul-long v26, v22, v10

    add-int/lit8 v5, v4, 0x2

    aget v5, p2, v5

    int-to-long v0, v5

    move-wide/from16 v28, v0

    const-wide v30, 0xffffffffL

    and-long v28, v28, v30

    add-long v26, v26, v28

    add-long v24, v24, v26

    .line 605
    add-int/lit8 v5, v4, 0x2

    move-wide/from16 v0, v24

    long-to-int v0, v0

    move/from16 v26, v0

    aput v26, p2, v5

    .line 606
    const/16 v5, 0x20

    ushr-long v24, v24, v5

    .line 607
    mul-long v26, v22, v12

    add-int/lit8 v5, v4, 0x3

    aget v5, p2, v5

    int-to-long v0, v5

    move-wide/from16 v28, v0

    const-wide v30, 0xffffffffL

    and-long v28, v28, v30

    add-long v26, v26, v28

    add-long v24, v24, v26

    .line 608
    add-int/lit8 v5, v4, 0x3

    move-wide/from16 v0, v24

    long-to-int v0, v0

    move/from16 v26, v0

    aput v26, p2, v5

    .line 609
    const/16 v5, 0x20

    ushr-long v24, v24, v5

    .line 610
    mul-long v26, v22, v14

    add-int/lit8 v5, v4, 0x4

    aget v5, p2, v5

    int-to-long v0, v5

    move-wide/from16 v28, v0

    const-wide v30, 0xffffffffL

    and-long v28, v28, v30

    add-long v26, v26, v28

    add-long v24, v24, v26

    .line 611
    add-int/lit8 v5, v4, 0x4

    move-wide/from16 v0, v24

    long-to-int v0, v0

    move/from16 v26, v0

    aput v26, p2, v5

    .line 612
    const/16 v5, 0x20

    ushr-long v24, v24, v5

    .line 613
    mul-long v26, v22, v16

    add-int/lit8 v5, v4, 0x5

    aget v5, p2, v5

    int-to-long v0, v5

    move-wide/from16 v28, v0

    const-wide v30, 0xffffffffL

    and-long v28, v28, v30

    add-long v26, v26, v28

    add-long v24, v24, v26

    .line 614
    add-int/lit8 v5, v4, 0x5

    move-wide/from16 v0, v24

    long-to-int v0, v0

    move/from16 v26, v0

    aput v26, p2, v5

    .line 615
    const/16 v5, 0x20

    ushr-long v24, v24, v5

    .line 616
    mul-long v26, v22, v18

    add-int/lit8 v5, v4, 0x6

    aget v5, p2, v5

    int-to-long v0, v5

    move-wide/from16 v28, v0

    const-wide v30, 0xffffffffL

    and-long v28, v28, v30

    add-long v26, v26, v28

    add-long v24, v24, v26

    .line 617
    add-int/lit8 v5, v4, 0x6

    move-wide/from16 v0, v24

    long-to-int v0, v0

    move/from16 v26, v0

    aput v26, p2, v5

    .line 618
    const/16 v5, 0x20

    ushr-long v24, v24, v5

    .line 619
    mul-long v22, v22, v20

    add-int/lit8 v5, v4, 0x7

    aget v5, p2, v5

    int-to-long v0, v5

    move-wide/from16 v26, v0

    const-wide v28, 0xffffffffL

    and-long v26, v26, v28

    add-long v22, v22, v26

    add-long v22, v22, v24

    .line 620
    add-int/lit8 v5, v4, 0x7

    move-wide/from16 v0, v22

    long-to-int v0, v0

    move/from16 v24, v0

    aput v24, p2, v5

    .line 621
    const/16 v5, 0x20

    ushr-long v22, v22, v5

    .line 622
    add-int/lit8 v5, v4, 0x8

    aget v5, p2, v5

    int-to-long v0, v5

    move-wide/from16 v24, v0

    const-wide v26, 0xffffffffL

    and-long v24, v24, v26

    add-long v2, v2, v24

    add-long v2, v2, v22

    .line 623
    add-int/lit8 v5, v4, 0x8

    long-to-int v0, v2

    move/from16 v22, v0

    aput v22, p2, v5

    .line 624
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

    .line 595
    add-int/lit8 v4, v4, 0x1

    goto/16 :goto_5b

    .line 626
    :cond_18f
    long-to-int v2, v2

    return v2
.end method

.method public static mulByWord(I[I)I
    .registers 14

    .prologue
    const/4 v11, 0x2

    const/4 v10, 0x1

    const/4 v9, 0x0

    const/16 v8, 0x20

    const-wide v6, 0xffffffffL

    .line 719
    int-to-long v0, p0

    and-long/2addr v0, v6

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

    aget v4, p1, v9

    int-to-long v4, v4

    and-long/2addr v4, v6

    mul-long/2addr v4, v0

    add-long/2addr v2, v4

    .line 721
    long-to-int v4, v2

    aput v4, p1, v9

    .line 722
    ushr-long/2addr v2, v8

    .line 723
    aget v4, p1, v10

    int-to-long v4, v4

    and-long/2addr v4, v6

    mul-long/2addr v4, v0

    add-long/2addr v2, v4

    .line 724
    long-to-int v4, v2

    aput v4, p1, v10

    .line 725
    ushr-long/2addr v2, v8

    .line 726
    aget v4, p1, v11

    int-to-long v4, v4

    and-long/2addr v4, v6

    mul-long/2addr v4, v0

    add-long/2addr v2, v4

    .line 727
    long-to-int v4, v2

    aput v4, p1, v11

    .line 728
    ushr-long/2addr v2, v8

    .line 729
    const/4 v4, 0x3

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    mul-long/2addr v4, v0

    add-long/2addr v2, v4

    .line 730
    const/4 v4, 0x3

    long-to-int v5, v2

    aput v5, p1, v4

    .line 731
    ushr-long/2addr v2, v8

    .line 732
    const/4 v4, 0x4

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    mul-long/2addr v4, v0

    add-long/2addr v2, v4

    .line 733
    const/4 v4, 0x4

    long-to-int v5, v2

    aput v5, p1, v4

    .line 734
    ushr-long/2addr v2, v8

    .line 735
    const/4 v4, 0x5

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    mul-long/2addr v4, v0

    add-long/2addr v2, v4

    .line 736
    const/4 v4, 0x5

    long-to-int v5, v2

    aput v5, p1, v4

    .line 737
    ushr-long/2addr v2, v8

    .line 738
    const/4 v4, 0x6

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    mul-long/2addr v4, v0

    add-long/2addr v2, v4

    .line 739
    const/4 v4, 0x6

    long-to-int v5, v2

    aput v5, p1, v4

    .line 740
    ushr-long/2addr v2, v8

    .line 741
    const/4 v4, 0x7

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    mul-long/2addr v0, v4

    add-long/2addr v0, v2

    .line 742
    const/4 v2, 0x7

    long-to-int v3, v0

    aput v3, p1, v2

    .line 743
    ushr-long/2addr v0, v8

    .line 744
    long-to-int v0, v0

    return v0
.end method

.method public static mulByWordAddTo(I[I[I)I
    .registers 13

    .prologue
    .line 749
    int-to-long v0, p0

    const-wide v2, 0xffffffffL

    and-long/2addr v0, v2

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

    const/4 v4, 0x0

    aget v4, p2, v4

    int-to-long v4, v4

    const-wide v6, 0xffffffffL

    and-long/2addr v4, v6

    mul-long/2addr v4, v0

    const/4 v6, 0x0

    aget v6, p1, v6

    int-to-long v6, v6

    const-wide v8, 0xffffffffL

    and-long/2addr v6, v8

    add-long/2addr v4, v6

    add-long/2addr v2, v4

    .line 751
    const/4 v4, 0x0

    long-to-int v5, v2

    aput v5, p2, v4

    .line 752
    const/16 v4, 0x20

    ushr-long/2addr v2, v4

    .line 753
    const/4 v4, 0x1

    aget v4, p2, v4

    int-to-long v4, v4

    const-wide v6, 0xffffffffL

    and-long/2addr v4, v6

    mul-long/2addr v4, v0

    const/4 v6, 0x1

    aget v6, p1, v6

    int-to-long v6, v6

    const-wide v8, 0xffffffffL

    and-long/2addr v6, v8

    add-long/2addr v4, v6

    add-long/2addr v2, v4

    .line 754
    const/4 v4, 0x1

    long-to-int v5, v2

    aput v5, p2, v4

    .line 755
    const/16 v4, 0x20

    ushr-long/2addr v2, v4

    .line 756
    const/4 v4, 0x2

    aget v4, p2, v4

    int-to-long v4, v4

    const-wide v6, 0xffffffffL

    and-long/2addr v4, v6

    mul-long/2addr v4, v0

    const/4 v6, 0x2

    aget v6, p1, v6

    int-to-long v6, v6

    const-wide v8, 0xffffffffL

    and-long/2addr v6, v8

    add-long/2addr v4, v6

    add-long/2addr v2, v4

    .line 757
    const/4 v4, 0x2

    long-to-int v5, v2

    aput v5, p2, v4

    .line 758
    const/16 v4, 0x20

    ushr-long/2addr v2, v4

    .line 759
    const/4 v4, 0x3

    aget v4, p2, v4

    int-to-long v4, v4

    const-wide v6, 0xffffffffL

    and-long/2addr v4, v6

    mul-long/2addr v4, v0

    const/4 v6, 0x3

    aget v6, p1, v6

    int-to-long v6, v6

    const-wide v8, 0xffffffffL

    and-long/2addr v6, v8

    add-long/2addr v4, v6

    add-long/2addr v2, v4

    .line 760
    const/4 v4, 0x3

    long-to-int v5, v2

    aput v5, p2, v4

    .line 761
    const/16 v4, 0x20

    ushr-long/2addr v2, v4

    .line 762
    const/4 v4, 0x4

    aget v4, p2, v4

    int-to-long v4, v4

    const-wide v6, 0xffffffffL

    and-long/2addr v4, v6

    mul-long/2addr v4, v0

    const/4 v6, 0x4

    aget v6, p1, v6

    int-to-long v6, v6

    const-wide v8, 0xffffffffL

    and-long/2addr v6, v8

    add-long/2addr v4, v6

    add-long/2addr v2, v4

    .line 763
    const/4 v4, 0x4

    long-to-int v5, v2

    aput v5, p2, v4

    .line 764
    const/16 v4, 0x20

    ushr-long/2addr v2, v4

    .line 765
    const/4 v4, 0x5

    aget v4, p2, v4

    int-to-long v4, v4

    const-wide v6, 0xffffffffL

    and-long/2addr v4, v6

    mul-long/2addr v4, v0

    const/4 v6, 0x5

    aget v6, p1, v6

    int-to-long v6, v6

    const-wide v8, 0xffffffffL

    and-long/2addr v6, v8

    add-long/2addr v4, v6

    add-long/2addr v2, v4

    .line 766
    const/4 v4, 0x5

    long-to-int v5, v2

    aput v5, p2, v4

    .line 767
    const/16 v4, 0x20

    ushr-long/2addr v2, v4

    .line 768
    const/4 v4, 0x6

    aget v4, p2, v4

    int-to-long v4, v4

    const-wide v6, 0xffffffffL

    and-long/2addr v4, v6

    mul-long/2addr v4, v0

    const/4 v6, 0x6

    aget v6, p1, v6

    int-to-long v6, v6

    const-wide v8, 0xffffffffL

    and-long/2addr v6, v8

    add-long/2addr v4, v6

    add-long/2addr v2, v4

    .line 769
    const/4 v4, 0x6

    long-to-int v5, v2

    aput v5, p2, v4

    .line 770
    const/16 v4, 0x20

    ushr-long/2addr v2, v4

    .line 771
    const/4 v4, 0x7

    aget v4, p2, v4

    int-to-long v4, v4

    const-wide v6, 0xffffffffL

    and-long/2addr v4, v6

    mul-long/2addr v0, v4

    const/4 v4, 0x7

    aget v4, p1, v4

    int-to-long v4, v4

    const-wide v6, 0xffffffffL

    and-long/2addr v4, v6

    add-long/2addr v0, v4

    add-long/2addr v0, v2

    .line 772
    const/4 v2, 0x7

    long-to-int v3, v0

    aput v3, p2, v2

    .line 773
    const/16 v2, 0x20

    ushr-long/2addr v0, v2

    .line 774
    long-to-int v0, v0

    return v0
.end method

.method public static mulWord(I[I[II)I
    .registers 14

    .prologue
    const-wide v8, 0xffffffffL

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

    int-to-long v2, p0

    and-long v4, v2, v8

    .line 867
    const/4 v2, 0x0

    .line 870
    :cond_b
    aget v3, p1, v2

    int-to-long v6, v3

    and-long/2addr v6, v8

    mul-long/2addr v6, v4

    add-long/2addr v0, v6

    .line 871
    add-int v3, p3, v2

    long-to-int v6, v0

    aput v6, p2, v3

    .line 872
    const/16 v3, 0x20

    ushr-long/2addr v0, v3

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

    const/16 v3, 0x8

    if-lt v2, v3, :cond_b

    .line 875
    long-to-int v0, v0

    return v0
.end method

.method public static mulWordAddTo(I[II[II)I
    .registers 16

    .prologue
    const/16 v10, 0x20

    const-wide v8, 0xffffffffL

    .line 779
    int-to-long v0, p0

    and-long/2addr v0, v8

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

    aget v4, p1, p2

    int-to-long v4, v4

    and-long/2addr v4, v8

    mul-long/2addr v4, v0

    aget v6, p3, p4

    int-to-long v6, v6

    and-long/2addr v6, v8

    add-long/2addr v4, v6

    add-long/2addr v2, v4

    .line 781
    long-to-int v4, v2

    aput v4, p3, p4

    .line 782
    ushr-long/2addr v2, v10

    .line 783
    add-int/lit8 v4, p2, 0x1

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v8

    mul-long/2addr v4, v0

    add-int/lit8 v6, p4, 0x1

    aget v6, p3, v6

    int-to-long v6, v6

    and-long/2addr v6, v8

    add-long/2addr v4, v6

    add-long/2addr v2, v4

    .line 784
    add-int/lit8 v4, p4, 0x1

    long-to-int v5, v2

    aput v5, p3, v4

    .line 785
    ushr-long/2addr v2, v10

    .line 786
    add-int/lit8 v4, p2, 0x2

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v8

    mul-long/2addr v4, v0

    add-int/lit8 v6, p4, 0x2

    aget v6, p3, v6

    int-to-long v6, v6

    and-long/2addr v6, v8

    add-long/2addr v4, v6

    add-long/2addr v2, v4

    .line 787
    add-int/lit8 v4, p4, 0x2

    long-to-int v5, v2

    aput v5, p3, v4

    .line 788
    ushr-long/2addr v2, v10

    .line 789
    add-int/lit8 v4, p2, 0x3

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v8

    mul-long/2addr v4, v0

    add-int/lit8 v6, p4, 0x3

    aget v6, p3, v6

    int-to-long v6, v6

    and-long/2addr v6, v8

    add-long/2addr v4, v6

    add-long/2addr v2, v4

    .line 790
    add-int/lit8 v4, p4, 0x3

    long-to-int v5, v2

    aput v5, p3, v4

    .line 791
    ushr-long/2addr v2, v10

    .line 792
    add-int/lit8 v4, p2, 0x4

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v8

    mul-long/2addr v4, v0

    add-int/lit8 v6, p4, 0x4

    aget v6, p3, v6

    int-to-long v6, v6

    and-long/2addr v6, v8

    add-long/2addr v4, v6

    add-long/2addr v2, v4

    .line 793
    add-int/lit8 v4, p4, 0x4

    long-to-int v5, v2

    aput v5, p3, v4

    .line 794
    ushr-long/2addr v2, v10

    .line 795
    add-int/lit8 v4, p2, 0x5

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v8

    mul-long/2addr v4, v0

    add-int/lit8 v6, p4, 0x5

    aget v6, p3, v6

    int-to-long v6, v6

    and-long/2addr v6, v8

    add-long/2addr v4, v6

    add-long/2addr v2, v4

    .line 796
    add-int/lit8 v4, p4, 0x5

    long-to-int v5, v2

    aput v5, p3, v4

    .line 797
    ushr-long/2addr v2, v10

    .line 798
    add-int/lit8 v4, p2, 0x6

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v8

    mul-long/2addr v4, v0

    add-int/lit8 v6, p4, 0x6

    aget v6, p3, v6

    int-to-long v6, v6

    and-long/2addr v6, v8

    add-long/2addr v4, v6

    add-long/2addr v2, v4

    .line 799
    add-int/lit8 v4, p4, 0x6

    long-to-int v5, v2

    aput v5, p3, v4

    .line 800
    ushr-long/2addr v2, v10

    .line 801
    add-int/lit8 v4, p2, 0x7

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v8

    mul-long/2addr v0, v4

    add-int/lit8 v4, p4, 0x7

    aget v4, p3, v4

    int-to-long v4, v4

    and-long/2addr v4, v8

    add-long/2addr v0, v4

    add-long/2addr v0, v2

    .line 802
    add-int/lit8 v2, p4, 0x7

    long-to-int v3, v0

    aput v3, p3, v2

    .line 803
    ushr-long/2addr v0, v10

    .line 804
    long-to-int v0, v0

    return v0
.end method

.method public static mulWordDwordAdd(IJ[II)I
    .registers 16

    .prologue
    .line 851
    int-to-long v0, p0

    const-wide v2, 0xffffffffL

    and-long/2addr v0, v2

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

    const-wide v4, 0xffffffffL

    and-long/2addr v4, p1

    mul-long/2addr v4, v0

    aget v6, p3, p4

    int-to-long v6, v6

    const-wide v8, 0xffffffffL

    and-long/2addr v6, v8

    add-long/2addr v4, v6

    add-long/2addr v2, v4

    .line 853
    long-to-int v4, v2

    aput v4, p3, p4

    .line 854
    const/16 v4, 0x20

    ushr-long/2addr v2, v4

    .line 855
    const/16 v4, 0x20

    ushr-long v4, p1, v4

    mul-long/2addr v0, v4

    add-int/lit8 v4, p4, 0x1

    aget v4, p3, v4

    int-to-long v4, v4

    const-wide v6, 0xffffffffL

    and-long/2addr v4, v6

    add-long/2addr v0, v4

    add-long/2addr v0, v2

    .line 856
    add-int/lit8 v2, p4, 0x1

    long-to-int v3, v0

    aput v3, p3, v2

    .line 857
    const/16 v2, 0x20

    ushr-long/2addr v0, v2

    .line 858
    add-int/lit8 v2, p4, 0x2

    aget v2, p3, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 859
    add-int/lit8 v2, p4, 0x2

    long-to-int v3, v0

    aput v3, p3, v2

    .line 860
    const/16 v2, 0x20

    ushr-long/2addr v0, v2

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

    cmp-long v0, v0, v2

    if-nez v0, :cond_57

    const/4 v0, 0x0

    :goto_56
    return v0

    :cond_57
    const/16 v0, 0x8

    const/4 v1, 0x3

    invoke-static {v0, p3, p4, v1}, Lorg/spongycastle/math/raw/Nat;->incAt(I[III)I

    move-result v0

    goto :goto_56
.end method

.method public static square([II[II)V
    .registers 42

    .prologue
    .line 1044
    aget v2, p0, p1

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v6, v2, v4

    .line 1047
    const/4 v4, 0x0

    .line 1049
    const/4 v3, 0x7

    const/16 v2, 0x10

    move v5, v4

    .line 1052
    :goto_f
    add-int/lit8 v4, v3, -0x1

    add-int v3, v3, p1

    aget v3, p0, v3

    int-to-long v8, v3

    const-wide v10, 0xffffffffL

    and-long/2addr v8, v10

    .line 1053
    mul-long/2addr v8, v8

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

    add-int v3, p3, v2

    shl-int/lit8 v5, v5, 0x1f

    const/16 v10, 0x21

    ushr-long v10, v8, v10

    long-to-int v10, v10

    or-int/2addr v5, v10

    aput v5, p2, v3

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

    add-int v3, p3, v2

    const/4 v5, 0x1

    ushr-long v10, v8, v5

    long-to-int v5, v10

    aput v5, p2, v3

    .line 1056
    long-to-int v3, v8

    .line 1058
    if-gtz v4, :cond_368

    .line 1061
    mul-long v4, v6, v6

    .line 1062
    shl-int/lit8 v2, v3, 0x1f

    int-to-long v2, v2

    const-wide v8, 0xffffffffL

    and-long/2addr v2, v8

    const/16 v8, 0x21

    ushr-long v8, v4, v8

    or-long/2addr v2, v8

    .line 1063
    long-to-int v8, v4

    aput v8, p2, p3

    .line 1064
    const/16 v8, 0x20

    ushr-long/2addr v4, v8

    long-to-int v4, v4

    and-int/lit8 v4, v4, 0x1

    .line 1068
    add-int/lit8 v5, p1, 0x1

    aget v5, p0, v5

    int-to-long v8, v5

    const-wide v10, 0xffffffffL

    and-long/2addr v8, v10

    .line 1069
    add-int/lit8 v5, p3, 0x2

    aget v5, p2, v5

    int-to-long v10, v5

    const-wide v12, 0xffffffffL

    and-long/2addr v10, v12

    .line 1072
    mul-long v12, v8, v6

    add-long/2addr v2, v12

    .line 1073
    long-to-int v5, v2

    .line 1074
    add-int/lit8 v12, p3, 0x1

    shl-int/lit8 v13, v5, 0x1

    or-int/2addr v4, v13

    aput v4, p2, v12

    .line 1075
    ushr-int/lit8 v4, v5, 0x1f

    .line 1076
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

    add-long/2addr v2, v10

    .line 1079
    add-int/lit8 v5, p1, 0x2

    aget v5, p0, v5

    int-to-long v10, v5

    const-wide v12, 0xffffffffL

    and-long/2addr v10, v12

    .line 1080
    add-int/lit8 v5, p3, 0x3

    aget v5, p2, v5

    int-to-long v12, v5

    const-wide v14, 0xffffffffL

    and-long/2addr v12, v14

    .line 1081
    add-int/lit8 v5, p3, 0x4

    aget v5, p2, v5

    int-to-long v14, v5

    const-wide v16, 0xffffffffL

    and-long v14, v14, v16

    .line 1083
    mul-long v16, v10, v6

    add-long v2, v2, v16

    .line 1084
    long-to-int v5, v2

    .line 1085
    add-int/lit8 v16, p3, 0x2

    shl-int/lit8 v17, v5, 0x1

    or-int v4, v4, v17

    aput v4, p2, v16

    .line 1086
    ushr-int/lit8 v4, v5, 0x1f

    .line 1087
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

    mul-long v16, v10, v8

    add-long v2, v2, v16

    add-long/2addr v2, v12

    .line 1088
    const/16 v5, 0x20

    ushr-long v12, v2, v5

    add-long/2addr v12, v14

    .line 1089
    const-wide v14, 0xffffffffL

    and-long/2addr v2, v14

    .line 1092
    add-int/lit8 v5, p1, 0x3

    aget v5, p0, v5

    int-to-long v14, v5

    const-wide v16, 0xffffffffL

    and-long v14, v14, v16

    .line 1093
    add-int/lit8 v5, p3, 0x5

    aget v5, p2, v5

    int-to-long v0, v5

    move-wide/from16 v16, v0

    const-wide v18, 0xffffffffL

    and-long v16, v16, v18

    .line 1094
    add-int/lit8 v5, p3, 0x6

    aget v5, p2, v5

    int-to-long v0, v5

    move-wide/from16 v18, v0

    const-wide v20, 0xffffffffL

    and-long v18, v18, v20

    .line 1096
    mul-long v20, v14, v6

    add-long v2, v2, v20

    .line 1097
    long-to-int v5, v2

    .line 1098
    add-int/lit8 v20, p3, 0x3

    shl-int/lit8 v21, v5, 0x1

    or-int v4, v4, v21

    aput v4, p2, v20

    .line 1099
    ushr-int/lit8 v4, v5, 0x1f

    .line 1100
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

    mul-long v20, v14, v8

    add-long v2, v2, v20

    add-long/2addr v2, v12

    .line 1101
    const/16 v5, 0x20

    ushr-long v12, v2, v5

    mul-long v20, v14, v10

    add-long v12, v12, v20

    add-long v12, v12, v16

    .line 1102
    const-wide v16, 0xffffffffL

    and-long v2, v2, v16

    .line 1103
    const/16 v5, 0x20

    ushr-long v16, v12, v5

    add-long v16, v16, v18

    .line 1104
    const-wide v18, 0xffffffffL

    and-long v12, v12, v18

    .line 1107
    add-int/lit8 v5, p1, 0x4

    aget v5, p0, v5

    int-to-long v0, v5

    move-wide/from16 v18, v0

    const-wide v20, 0xffffffffL

    and-long v18, v18, v20

    .line 1108
    add-int/lit8 v5, p3, 0x7

    aget v5, p2, v5

    int-to-long v0, v5

    move-wide/from16 v20, v0

    const-wide v22, 0xffffffffL

    and-long v20, v20, v22

    .line 1109
    add-int/lit8 v5, p3, 0x8

    aget v5, p2, v5

    int-to-long v0, v5

    move-wide/from16 v22, v0

    const-wide v24, 0xffffffffL

    and-long v22, v22, v24

    .line 1111
    mul-long v24, v18, v6

    add-long v2, v2, v24

    .line 1112
    long-to-int v5, v2

    .line 1113
    add-int/lit8 v24, p3, 0x4

    shl-int/lit8 v25, v5, 0x1

    or-int v4, v4, v25

    aput v4, p2, v24

    .line 1114
    ushr-int/lit8 v4, v5, 0x1f

    .line 1115
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

    mul-long v24, v18, v8

    add-long v2, v2, v24

    add-long/2addr v2, v12

    .line 1116
    const/16 v5, 0x20

    ushr-long v12, v2, v5

    mul-long v24, v18, v10

    add-long v12, v12, v24

    add-long v12, v12, v16

    .line 1117
    const-wide v16, 0xffffffffL

    and-long v2, v2, v16

    .line 1118
    const/16 v5, 0x20

    ushr-long v16, v12, v5

    mul-long v24, v18, v14

    add-long v16, v16, v24

    add-long v16, v16, v20

    .line 1119
    const-wide v20, 0xffffffffL

    and-long v12, v12, v20

    .line 1120
    const/16 v5, 0x20

    ushr-long v20, v16, v5

    add-long v20, v20, v22

    .line 1121
    const-wide v22, 0xffffffffL

    and-long v16, v16, v22

    .line 1124
    add-int/lit8 v5, p1, 0x5

    aget v5, p0, v5

    int-to-long v0, v5

    move-wide/from16 v22, v0

    const-wide v24, 0xffffffffL

    and-long v22, v22, v24

    .line 1125
    add-int/lit8 v5, p3, 0x9

    aget v5, p2, v5

    int-to-long v0, v5

    move-wide/from16 v24, v0

    const-wide v26, 0xffffffffL

    and-long v24, v24, v26

    .line 1126
    add-int/lit8 v5, p3, 0xa

    aget v5, p2, v5

    int-to-long v0, v5

    move-wide/from16 v26, v0

    const-wide v28, 0xffffffffL

    and-long v26, v26, v28

    .line 1128
    mul-long v28, v22, v6

    add-long v2, v2, v28

    .line 1129
    long-to-int v5, v2

    .line 1130
    add-int/lit8 v28, p3, 0x5

    shl-int/lit8 v29, v5, 0x1

    or-int v4, v4, v29

    aput v4, p2, v28

    .line 1131
    ushr-int/lit8 v4, v5, 0x1f

    .line 1132
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

    mul-long v28, v22, v8

    add-long v2, v2, v28

    add-long/2addr v2, v12

    .line 1133
    const/16 v5, 0x20

    ushr-long v12, v2, v5

    mul-long v28, v22, v10

    add-long v12, v12, v28

    add-long v12, v12, v16

    .line 1134
    const-wide v16, 0xffffffffL

    and-long v2, v2, v16

    .line 1135
    const/16 v5, 0x20

    ushr-long v16, v12, v5

    mul-long v28, v22, v14

    add-long v16, v16, v28

    add-long v16, v16, v20

    .line 1136
    const-wide v20, 0xffffffffL

    and-long v12, v12, v20

    .line 1137
    const/16 v5, 0x20

    ushr-long v20, v16, v5

    mul-long v28, v22, v18

    add-long v20, v20, v28

    add-long v20, v20, v24

    .line 1138
    const-wide v24, 0xffffffffL

    and-long v16, v16, v24

    .line 1139
    const/16 v5, 0x20

    ushr-long v24, v20, v5

    add-long v24, v24, v26

    .line 1140
    const-wide v26, 0xffffffffL

    and-long v20, v20, v26

    .line 1143
    add-int/lit8 v5, p1, 0x6

    aget v5, p0, v5

    int-to-long v0, v5

    move-wide/from16 v26, v0

    const-wide v28, 0xffffffffL

    and-long v26, v26, v28

    .line 1144
    add-int/lit8 v5, p3, 0xb

    aget v5, p2, v5

    int-to-long v0, v5

    move-wide/from16 v28, v0

    const-wide v30, 0xffffffffL

    and-long v28, v28, v30

    .line 1145
    add-int/lit8 v5, p3, 0xc

    aget v5, p2, v5

    int-to-long v0, v5

    move-wide/from16 v30, v0

    const-wide v32, 0xffffffffL

    and-long v30, v30, v32

    .line 1147
    mul-long v32, v26, v6

    add-long v2, v2, v32

    .line 1148
    long-to-int v5, v2

    .line 1149
    add-int/lit8 v32, p3, 0x6

    shl-int/lit8 v33, v5, 0x1

    or-int v4, v4, v33

    aput v4, p2, v32

    .line 1150
    ushr-int/lit8 v4, v5, 0x1f

    .line 1151
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

    mul-long v32, v26, v8

    add-long v2, v2, v32

    add-long/2addr v2, v12

    .line 1152
    const/16 v5, 0x20

    ushr-long v12, v2, v5

    mul-long v32, v26, v10

    add-long v12, v12, v32

    add-long v12, v12, v16

    .line 1153
    const-wide v16, 0xffffffffL

    and-long v2, v2, v16

    .line 1154
    const/16 v5, 0x20

    ushr-long v16, v12, v5

    mul-long v32, v26, v14

    add-long v16, v16, v32

    add-long v16, v16, v20

    .line 1155
    const-wide v20, 0xffffffffL

    and-long v12, v12, v20

    .line 1156
    const/16 v5, 0x20

    ushr-long v20, v16, v5

    mul-long v32, v26, v18

    add-long v20, v20, v32

    add-long v20, v20, v24

    .line 1157
    const-wide v24, 0xffffffffL

    and-long v16, v16, v24

    .line 1158
    const/16 v5, 0x20

    ushr-long v24, v20, v5

    mul-long v32, v26, v22

    add-long v24, v24, v32

    add-long v24, v24, v28

    .line 1159
    const-wide v28, 0xffffffffL

    and-long v20, v20, v28

    .line 1160
    const/16 v5, 0x20

    ushr-long v28, v24, v5

    add-long v28, v28, v30

    .line 1161
    const-wide v30, 0xffffffffL

    and-long v24, v24, v30

    .line 1164
    add-int/lit8 v5, p1, 0x7

    aget v5, p0, v5

    int-to-long v0, v5

    move-wide/from16 v30, v0

    const-wide v32, 0xffffffffL

    and-long v30, v30, v32

    .line 1165
    add-int/lit8 v5, p3, 0xd

    aget v5, p2, v5

    int-to-long v0, v5

    move-wide/from16 v32, v0

    const-wide v34, 0xffffffffL

    and-long v32, v32, v34

    .line 1166
    add-int/lit8 v5, p3, 0xe

    aget v5, p2, v5

    int-to-long v0, v5

    move-wide/from16 v34, v0

    const-wide v36, 0xffffffffL

    and-long v34, v34, v36

    .line 1168
    mul-long v6, v6, v30

    add-long/2addr v2, v6

    .line 1169
    long-to-int v5, v2

    .line 1170
    add-int/lit8 v6, p3, 0x7

    shl-int/lit8 v7, v5, 0x1

    or-int/2addr v4, v7

    aput v4, p2, v6

    .line 1171
    ushr-int/lit8 v4, v5, 0x1f

    .line 1172
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

    mul-long v6, v30, v8

    add-long/2addr v2, v6

    add-long/2addr v2, v12

    .line 1173
    const/16 v5, 0x20

    ushr-long v6, v2, v5

    mul-long v8, v30, v10

    add-long/2addr v6, v8

    add-long v6, v6, v16

    .line 1174
    const/16 v5, 0x20

    ushr-long v8, v6, v5

    mul-long v10, v30, v14

    add-long/2addr v8, v10

    add-long v8, v8, v20

    .line 1175
    const/16 v5, 0x20

    ushr-long v10, v8, v5

    mul-long v12, v30, v18

    add-long/2addr v10, v12

    add-long v10, v10, v24

    .line 1176
    const/16 v5, 0x20

    ushr-long v12, v10, v5

    mul-long v14, v30, v22

    add-long/2addr v12, v14

    add-long v12, v12, v28

    .line 1177
    const/16 v5, 0x20

    ushr-long v14, v12, v5

    mul-long v16, v30, v26

    add-long v14, v14, v16

    add-long v14, v14, v32

    .line 1178
    const/16 v5, 0x20

    ushr-long v16, v14, v5

    add-long v16, v16, v34

    .line 1181
    long-to-int v2, v2

    .line 1182
    add-int/lit8 v3, p3, 0x8

    shl-int/lit8 v5, v2, 0x1

    or-int/2addr v4, v5

    aput v4, p2, v3

    .line 1183
    ushr-int/lit8 v2, v2, 0x1f

    .line 1184
    long-to-int v3, v6

    .line 1185
    add-int/lit8 v4, p3, 0x9

    shl-int/lit8 v5, v3, 0x1

    or-int/2addr v2, v5

    aput v2, p2, v4

    .line 1186
    ushr-int/lit8 v2, v3, 0x1f

    .line 1187
    long-to-int v3, v8

    .line 1188
    add-int/lit8 v4, p3, 0xa

    shl-int/lit8 v5, v3, 0x1

    or-int/2addr v2, v5

    aput v2, p2, v4

    .line 1189
    ushr-int/lit8 v2, v3, 0x1f

    .line 1190
    long-to-int v3, v10

    .line 1191
    add-int/lit8 v4, p3, 0xb

    shl-int/lit8 v5, v3, 0x1

    or-int/2addr v2, v5

    aput v2, p2, v4

    .line 1192
    ushr-int/lit8 v2, v3, 0x1f

    .line 1193
    long-to-int v3, v12

    .line 1194
    add-int/lit8 v4, p3, 0xc

    shl-int/lit8 v5, v3, 0x1

    or-int/2addr v2, v5

    aput v2, p2, v4

    .line 1195
    ushr-int/lit8 v2, v3, 0x1f

    .line 1196
    long-to-int v3, v14

    .line 1197
    add-int/lit8 v4, p3, 0xd

    shl-int/lit8 v5, v3, 0x1

    or-int/2addr v2, v5

    aput v2, p2, v4

    .line 1198
    ushr-int/lit8 v2, v3, 0x1f

    .line 1199
    move-wide/from16 v0, v16

    long-to-int v3, v0

    .line 1200
    add-int/lit8 v4, p3, 0xe

    shl-int/lit8 v5, v3, 0x1

    or-int/2addr v2, v5

    aput v2, p2, v4

    .line 1201
    ushr-int/lit8 v2, v3, 0x1f

    .line 1202
    add-int/lit8 v3, p3, 0xf

    aget v3, p2, v3

    const/16 v4, 0x20

    shr-long v4, v16, v4

    long-to-int v4, v4

    add-int/2addr v3, v4

    .line 1203
    add-int/lit8 v4, p3, 0xf

    shl-int/lit8 v3, v3, 0x1

    or-int/2addr v2, v3

    aput v2, p2, v4

    .line 1204
    return-void

    :cond_368
    move v5, v3

    move v3, v4

    goto/16 :goto_f
.end method

.method public static square([I[I)V
    .registers 40

    .prologue
    .line 880
    const/4 v2, 0x0

    aget v2, p0, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v6, v2, v4

    .line 883
    const/4 v4, 0x0

    .line 885
    const/4 v3, 0x7

    const/16 v2, 0x10

    move v5, v4

    .line 888
    :goto_10
    add-int/lit8 v4, v3, -0x1

    aget v3, p0, v3

    int-to-long v8, v3

    const-wide v10, 0xffffffffL

    and-long/2addr v8, v10

    .line 889
    mul-long/2addr v8, v8

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

    shl-int/lit8 v3, v5, 0x1f

    const/16 v5, 0x21

    ushr-long v10, v8, v5

    long-to-int v5, v10

    or-int/2addr v3, v5

    aput v3, p1, v2

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

    const/4 v3, 0x1

    ushr-long v10, v8, v3

    long-to-int v3, v10

    aput v3, p1, v2

    .line 892
    long-to-int v3, v8

    .line 894
    if-gtz v4, :cond_355

    .line 897
    mul-long v4, v6, v6

    .line 898
    shl-int/lit8 v2, v3, 0x1f

    int-to-long v2, v2

    const-wide v8, 0xffffffffL

    and-long/2addr v2, v8

    const/16 v8, 0x21

    ushr-long v8, v4, v8

    or-long/2addr v2, v8

    .line 899
    const/4 v8, 0x0

    long-to-int v9, v4

    aput v9, p1, v8

    .line 900
    const/16 v8, 0x20

    ushr-long/2addr v4, v8

    long-to-int v4, v4

    and-int/lit8 v4, v4, 0x1

    .line 904
    const/4 v5, 0x1

    aget v5, p0, v5

    int-to-long v8, v5

    const-wide v10, 0xffffffffL

    and-long/2addr v8, v10

    .line 905
    const/4 v5, 0x2

    aget v5, p1, v5

    int-to-long v10, v5

    const-wide v12, 0xffffffffL

    and-long/2addr v10, v12

    .line 908
    mul-long v12, v8, v6

    add-long/2addr v2, v12

    .line 909
    long-to-int v5, v2

    .line 910
    const/4 v12, 0x1

    shl-int/lit8 v13, v5, 0x1

    or-int/2addr v4, v13

    aput v4, p1, v12

    .line 911
    ushr-int/lit8 v4, v5, 0x1f

    .line 912
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

    add-long/2addr v2, v10

    .line 915
    const/4 v5, 0x2

    aget v5, p0, v5

    int-to-long v10, v5

    const-wide v12, 0xffffffffL

    and-long/2addr v10, v12

    .line 916
    const/4 v5, 0x3

    aget v5, p1, v5

    int-to-long v12, v5

    const-wide v14, 0xffffffffL

    and-long/2addr v12, v14

    .line 917
    const/4 v5, 0x4

    aget v5, p1, v5

    int-to-long v14, v5

    const-wide v16, 0xffffffffL

    and-long v14, v14, v16

    .line 919
    mul-long v16, v10, v6

    add-long v2, v2, v16

    .line 920
    long-to-int v5, v2

    .line 921
    const/16 v16, 0x2

    shl-int/lit8 v17, v5, 0x1

    or-int v4, v4, v17

    aput v4, p1, v16

    .line 922
    ushr-int/lit8 v4, v5, 0x1f

    .line 923
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

    mul-long v16, v10, v8

    add-long v2, v2, v16

    add-long/2addr v2, v12

    .line 924
    const/16 v5, 0x20

    ushr-long v12, v2, v5

    add-long/2addr v12, v14

    .line 925
    const-wide v14, 0xffffffffL

    and-long/2addr v2, v14

    .line 928
    const/4 v5, 0x3

    aget v5, p0, v5

    int-to-long v14, v5

    const-wide v16, 0xffffffffL

    and-long v14, v14, v16

    .line 929
    const/4 v5, 0x5

    aget v5, p1, v5

    int-to-long v0, v5

    move-wide/from16 v16, v0

    const-wide v18, 0xffffffffL

    and-long v16, v16, v18

    .line 930
    const/4 v5, 0x6

    aget v5, p1, v5

    int-to-long v0, v5

    move-wide/from16 v18, v0

    const-wide v20, 0xffffffffL

    and-long v18, v18, v20

    .line 932
    mul-long v20, v14, v6

    add-long v2, v2, v20

    .line 933
    long-to-int v5, v2

    .line 934
    const/16 v20, 0x3

    shl-int/lit8 v21, v5, 0x1

    or-int v4, v4, v21

    aput v4, p1, v20

    .line 935
    ushr-int/lit8 v4, v5, 0x1f

    .line 936
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

    mul-long v20, v14, v8

    add-long v2, v2, v20

    add-long/2addr v2, v12

    .line 937
    const/16 v5, 0x20

    ushr-long v12, v2, v5

    mul-long v20, v14, v10

    add-long v12, v12, v20

    add-long v12, v12, v16

    .line 938
    const-wide v16, 0xffffffffL

    and-long v2, v2, v16

    .line 939
    const/16 v5, 0x20

    ushr-long v16, v12, v5

    add-long v16, v16, v18

    .line 940
    const-wide v18, 0xffffffffL

    and-long v12, v12, v18

    .line 943
    const/4 v5, 0x4

    aget v5, p0, v5

    int-to-long v0, v5

    move-wide/from16 v18, v0

    const-wide v20, 0xffffffffL

    and-long v18, v18, v20

    .line 944
    const/4 v5, 0x7

    aget v5, p1, v5

    int-to-long v0, v5

    move-wide/from16 v20, v0

    const-wide v22, 0xffffffffL

    and-long v20, v20, v22

    .line 945
    const/16 v5, 0x8

    aget v5, p1, v5

    int-to-long v0, v5

    move-wide/from16 v22, v0

    const-wide v24, 0xffffffffL

    and-long v22, v22, v24

    .line 947
    mul-long v24, v18, v6

    add-long v2, v2, v24

    .line 948
    long-to-int v5, v2

    .line 949
    const/16 v24, 0x4

    shl-int/lit8 v25, v5, 0x1

    or-int v4, v4, v25

    aput v4, p1, v24

    .line 950
    ushr-int/lit8 v4, v5, 0x1f

    .line 951
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

    mul-long v24, v18, v8

    add-long v2, v2, v24

    add-long/2addr v2, v12

    .line 952
    const/16 v5, 0x20

    ushr-long v12, v2, v5

    mul-long v24, v18, v10

    add-long v12, v12, v24

    add-long v12, v12, v16

    .line 953
    const-wide v16, 0xffffffffL

    and-long v2, v2, v16

    .line 954
    const/16 v5, 0x20

    ushr-long v16, v12, v5

    mul-long v24, v18, v14

    add-long v16, v16, v24

    add-long v16, v16, v20

    .line 955
    const-wide v20, 0xffffffffL

    and-long v12, v12, v20

    .line 956
    const/16 v5, 0x20

    ushr-long v20, v16, v5

    add-long v20, v20, v22

    .line 957
    const-wide v22, 0xffffffffL

    and-long v16, v16, v22

    .line 960
    const/4 v5, 0x5

    aget v5, p0, v5

    int-to-long v0, v5

    move-wide/from16 v22, v0

    const-wide v24, 0xffffffffL

    and-long v22, v22, v24

    .line 961
    const/16 v5, 0x9

    aget v5, p1, v5

    int-to-long v0, v5

    move-wide/from16 v24, v0

    const-wide v26, 0xffffffffL

    and-long v24, v24, v26

    .line 962
    const/16 v5, 0xa

    aget v5, p1, v5

    int-to-long v0, v5

    move-wide/from16 v26, v0

    const-wide v28, 0xffffffffL

    and-long v26, v26, v28

    .line 964
    mul-long v28, v22, v6

    add-long v2, v2, v28

    .line 965
    long-to-int v5, v2

    .line 966
    const/16 v28, 0x5

    shl-int/lit8 v29, v5, 0x1

    or-int v4, v4, v29

    aput v4, p1, v28

    .line 967
    ushr-int/lit8 v4, v5, 0x1f

    .line 968
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

    mul-long v28, v22, v8

    add-long v2, v2, v28

    add-long/2addr v2, v12

    .line 969
    const/16 v5, 0x20

    ushr-long v12, v2, v5

    mul-long v28, v22, v10

    add-long v12, v12, v28

    add-long v12, v12, v16

    .line 970
    const-wide v16, 0xffffffffL

    and-long v2, v2, v16

    .line 971
    const/16 v5, 0x20

    ushr-long v16, v12, v5

    mul-long v28, v22, v14

    add-long v16, v16, v28

    add-long v16, v16, v20

    .line 972
    const-wide v20, 0xffffffffL

    and-long v12, v12, v20

    .line 973
    const/16 v5, 0x20

    ushr-long v20, v16, v5

    mul-long v28, v22, v18

    add-long v20, v20, v28

    add-long v20, v20, v24

    .line 974
    const-wide v24, 0xffffffffL

    and-long v16, v16, v24

    .line 975
    const/16 v5, 0x20

    ushr-long v24, v20, v5

    add-long v24, v24, v26

    .line 976
    const-wide v26, 0xffffffffL

    and-long v20, v20, v26

    .line 979
    const/4 v5, 0x6

    aget v5, p0, v5

    int-to-long v0, v5

    move-wide/from16 v26, v0

    const-wide v28, 0xffffffffL

    and-long v26, v26, v28

    .line 980
    const/16 v5, 0xb

    aget v5, p1, v5

    int-to-long v0, v5

    move-wide/from16 v28, v0

    const-wide v30, 0xffffffffL

    and-long v28, v28, v30

    .line 981
    const/16 v5, 0xc

    aget v5, p1, v5

    int-to-long v0, v5

    move-wide/from16 v30, v0

    const-wide v32, 0xffffffffL

    and-long v30, v30, v32

    .line 983
    mul-long v32, v26, v6

    add-long v2, v2, v32

    .line 984
    long-to-int v5, v2

    .line 985
    const/16 v32, 0x6

    shl-int/lit8 v33, v5, 0x1

    or-int v4, v4, v33

    aput v4, p1, v32

    .line 986
    ushr-int/lit8 v4, v5, 0x1f

    .line 987
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

    mul-long v32, v26, v8

    add-long v2, v2, v32

    add-long/2addr v2, v12

    .line 988
    const/16 v5, 0x20

    ushr-long v12, v2, v5

    mul-long v32, v26, v10

    add-long v12, v12, v32

    add-long v12, v12, v16

    .line 989
    const-wide v16, 0xffffffffL

    and-long v2, v2, v16

    .line 990
    const/16 v5, 0x20

    ushr-long v16, v12, v5

    mul-long v32, v26, v14

    add-long v16, v16, v32

    add-long v16, v16, v20

    .line 991
    const-wide v20, 0xffffffffL

    and-long v12, v12, v20

    .line 992
    const/16 v5, 0x20

    ushr-long v20, v16, v5

    mul-long v32, v26, v18

    add-long v20, v20, v32

    add-long v20, v20, v24

    .line 993
    const-wide v24, 0xffffffffL

    and-long v16, v16, v24

    .line 994
    const/16 v5, 0x20

    ushr-long v24, v20, v5

    mul-long v32, v26, v22

    add-long v24, v24, v32

    add-long v24, v24, v28

    .line 995
    const-wide v28, 0xffffffffL

    and-long v20, v20, v28

    .line 996
    const/16 v5, 0x20

    ushr-long v28, v24, v5

    add-long v28, v28, v30

    .line 997
    const-wide v30, 0xffffffffL

    and-long v24, v24, v30

    .line 1000
    const/4 v5, 0x7

    aget v5, p0, v5

    int-to-long v0, v5

    move-wide/from16 v30, v0

    const-wide v32, 0xffffffffL

    and-long v30, v30, v32

    .line 1001
    const/16 v5, 0xd

    aget v5, p1, v5

    int-to-long v0, v5

    move-wide/from16 v32, v0

    const-wide v34, 0xffffffffL

    and-long v32, v32, v34

    .line 1002
    const/16 v5, 0xe

    aget v5, p1, v5

    int-to-long v0, v5

    move-wide/from16 v34, v0

    const-wide v36, 0xffffffffL

    and-long v34, v34, v36

    .line 1004
    mul-long v6, v6, v30

    add-long/2addr v2, v6

    .line 1005
    long-to-int v5, v2

    .line 1006
    const/4 v6, 0x7

    shl-int/lit8 v7, v5, 0x1

    or-int/2addr v4, v7

    aput v4, p1, v6

    .line 1007
    ushr-int/lit8 v4, v5, 0x1f

    .line 1008
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

    mul-long v6, v30, v8

    add-long/2addr v2, v6

    add-long/2addr v2, v12

    .line 1009
    const/16 v5, 0x20

    ushr-long v6, v2, v5

    mul-long v8, v30, v10

    add-long/2addr v6, v8

    add-long v6, v6, v16

    .line 1010
    const/16 v5, 0x20

    ushr-long v8, v6, v5

    mul-long v10, v30, v14

    add-long/2addr v8, v10

    add-long v8, v8, v20

    .line 1011
    const/16 v5, 0x20

    ushr-long v10, v8, v5

    mul-long v12, v30, v18

    add-long/2addr v10, v12

    add-long v10, v10, v24

    .line 1012
    const/16 v5, 0x20

    ushr-long v12, v10, v5

    mul-long v14, v30, v22

    add-long/2addr v12, v14

    add-long v12, v12, v28

    .line 1013
    const/16 v5, 0x20

    ushr-long v14, v12, v5

    mul-long v16, v30, v26

    add-long v14, v14, v16

    add-long v14, v14, v32

    .line 1014
    const/16 v5, 0x20

    ushr-long v16, v14, v5

    add-long v16, v16, v34

    .line 1017
    long-to-int v2, v2

    .line 1018
    const/16 v3, 0x8

    shl-int/lit8 v5, v2, 0x1

    or-int/2addr v4, v5

    aput v4, p1, v3

    .line 1019
    ushr-int/lit8 v2, v2, 0x1f

    .line 1020
    long-to-int v3, v6

    .line 1021
    const/16 v4, 0x9

    shl-int/lit8 v5, v3, 0x1

    or-int/2addr v2, v5

    aput v2, p1, v4

    .line 1022
    ushr-int/lit8 v2, v3, 0x1f

    .line 1023
    long-to-int v3, v8

    .line 1024
    const/16 v4, 0xa

    shl-int/lit8 v5, v3, 0x1

    or-int/2addr v2, v5

    aput v2, p1, v4

    .line 1025
    ushr-int/lit8 v2, v3, 0x1f

    .line 1026
    long-to-int v3, v10

    .line 1027
    const/16 v4, 0xb

    shl-int/lit8 v5, v3, 0x1

    or-int/2addr v2, v5

    aput v2, p1, v4

    .line 1028
    ushr-int/lit8 v2, v3, 0x1f

    .line 1029
    long-to-int v3, v12

    .line 1030
    const/16 v4, 0xc

    shl-int/lit8 v5, v3, 0x1

    or-int/2addr v2, v5

    aput v2, p1, v4

    .line 1031
    ushr-int/lit8 v2, v3, 0x1f

    .line 1032
    long-to-int v3, v14

    .line 1033
    const/16 v4, 0xd

    shl-int/lit8 v5, v3, 0x1

    or-int/2addr v2, v5

    aput v2, p1, v4

    .line 1034
    ushr-int/lit8 v2, v3, 0x1f

    .line 1035
    move-wide/from16 v0, v16

    long-to-int v3, v0

    .line 1036
    const/16 v4, 0xe

    shl-int/lit8 v5, v3, 0x1

    or-int/2addr v2, v5

    aput v2, p1, v4

    .line 1037
    ushr-int/lit8 v2, v3, 0x1f

    .line 1038
    const/16 v3, 0xf

    aget v3, p1, v3

    const/16 v4, 0x20

    shr-long v4, v16, v4

    long-to-int v4, v4

    add-int/2addr v3, v4

    .line 1039
    const/16 v4, 0xf

    shl-int/lit8 v3, v3, 0x1

    or-int/2addr v2, v3

    aput v2, p1, v4

    .line 1040
    return-void

    :cond_355
    move v5, v3

    move v3, v4

    goto/16 :goto_10
.end method

.method public static sub([II[II[II)I
    .registers 15

    .prologue
    const/16 v8, 0x20

    const-wide v6, 0xffffffffL

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

    aget v2, p0, p1

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p2, p3

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1240
    long-to-int v2, v0

    aput v2, p4, p5

    .line 1241
    shr-long/2addr v0, v8

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

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x1

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1243
    add-int/lit8 v2, p5, 0x1

    long-to-int v3, v0

    aput v3, p4, v2

    .line 1244
    shr-long/2addr v0, v8

    .line 1245
    add-int/lit8 v2, p1, 0x2

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x2

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1246
    add-int/lit8 v2, p5, 0x2

    long-to-int v3, v0

    aput v3, p4, v2

    .line 1247
    shr-long/2addr v0, v8

    .line 1248
    add-int/lit8 v2, p1, 0x3

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x3

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1249
    add-int/lit8 v2, p5, 0x3

    long-to-int v3, v0

    aput v3, p4, v2

    .line 1250
    shr-long/2addr v0, v8

    .line 1251
    add-int/lit8 v2, p1, 0x4

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x4

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1252
    add-int/lit8 v2, p5, 0x4

    long-to-int v3, v0

    aput v3, p4, v2

    .line 1253
    shr-long/2addr v0, v8

    .line 1254
    add-int/lit8 v2, p1, 0x5

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x5

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1255
    add-int/lit8 v2, p5, 0x5

    long-to-int v3, v0

    aput v3, p4, v2

    .line 1256
    shr-long/2addr v0, v8

    .line 1257
    add-int/lit8 v2, p1, 0x6

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x6

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1258
    add-int/lit8 v2, p5, 0x6

    long-to-int v3, v0

    aput v3, p4, v2

    .line 1259
    shr-long/2addr v0, v8

    .line 1260
    add-int/lit8 v2, p1, 0x7

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p3, 0x7

    aget v4, p2, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1261
    add-int/lit8 v2, p5, 0x7

    long-to-int v3, v0

    aput v3, p4, v2

    .line 1262
    shr-long/2addr v0, v8

    .line 1263
    long-to-int v0, v0

    return v0
.end method

.method public static sub([I[I[I)I
    .registers 15

    .prologue
    const/4 v11, 0x2

    const/4 v10, 0x1

    const/4 v9, 0x0

    const/16 v8, 0x20

    const-wide v6, 0xffffffffL

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

    aget v2, p0, v9

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p1, v9

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1210
    long-to-int v2, v0

    aput v2, p2, v9

    .line 1211
    shr-long/2addr v0, v8

    .line 1212
    aget v2, p0, v10

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p1, v10

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1213
    long-to-int v2, v0

    aput v2, p2, v10

    .line 1214
    shr-long/2addr v0, v8

    .line 1215
    aget v2, p0, v11

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p1, v11

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1216
    long-to-int v2, v0

    aput v2, p2, v11

    .line 1217
    shr-long/2addr v0, v8

    .line 1218
    const/4 v2, 0x3

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x3

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1219
    const/4 v2, 0x3

    long-to-int v3, v0

    aput v3, p2, v2

    .line 1220
    shr-long/2addr v0, v8

    .line 1221
    const/4 v2, 0x4

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x4

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1222
    const/4 v2, 0x4

    long-to-int v3, v0

    aput v3, p2, v2

    .line 1223
    shr-long/2addr v0, v8

    .line 1224
    const/4 v2, 0x5

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x5

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1225
    const/4 v2, 0x5

    long-to-int v3, v0

    aput v3, p2, v2

    .line 1226
    shr-long/2addr v0, v8

    .line 1227
    const/4 v2, 0x6

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x6

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1228
    const/4 v2, 0x6

    long-to-int v3, v0

    aput v3, p2, v2

    .line 1229
    shr-long/2addr v0, v8

    .line 1230
    const/4 v2, 0x7

    aget v2, p0, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x7

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1231
    const/4 v2, 0x7

    long-to-int v3, v0

    aput v3, p2, v2

    .line 1232
    shr-long/2addr v0, v8

    .line 1233
    long-to-int v0, v0

    return v0
.end method

.method public static subBothFrom([I[I[I)I
    .registers 15

    .prologue
    const/4 v11, 0x2

    const/4 v10, 0x1

    const/4 v9, 0x0

    const/16 v8, 0x20

    const-wide v6, 0xffffffffL

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

    aget v2, p2, v9

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p0, v9

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    aget v4, p1, v9

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1270
    long-to-int v2, v0

    aput v2, p2, v9

    .line 1271
    shr-long/2addr v0, v8

    .line 1272
    aget v2, p2, v10

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p0, v10

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    aget v4, p1, v10

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1273
    long-to-int v2, v0

    aput v2, p2, v10

    .line 1274
    shr-long/2addr v0, v8

    .line 1275
    aget v2, p2, v11

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p0, v11

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    aget v4, p1, v11

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1276
    long-to-int v2, v0

    aput v2, p2, v11

    .line 1277
    shr-long/2addr v0, v8

    .line 1278
    const/4 v2, 0x3

    aget v2, p2, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x3

    aget v4, p0, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    const/4 v4, 0x3

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1279
    const/4 v2, 0x3

    long-to-int v3, v0

    aput v3, p2, v2

    .line 1280
    shr-long/2addr v0, v8

    .line 1281
    const/4 v2, 0x4

    aget v2, p2, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x4

    aget v4, p0, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    const/4 v4, 0x4

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1282
    const/4 v2, 0x4

    long-to-int v3, v0

    aput v3, p2, v2

    .line 1283
    shr-long/2addr v0, v8

    .line 1284
    const/4 v2, 0x5

    aget v2, p2, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x5

    aget v4, p0, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    const/4 v4, 0x5

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1285
    const/4 v2, 0x5

    long-to-int v3, v0

    aput v3, p2, v2

    .line 1286
    shr-long/2addr v0, v8

    .line 1287
    const/4 v2, 0x6

    aget v2, p2, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x6

    aget v4, p0, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    const/4 v4, 0x6

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1288
    const/4 v2, 0x6

    long-to-int v3, v0

    aput v3, p2, v2

    .line 1289
    shr-long/2addr v0, v8

    .line 1290
    const/4 v2, 0x7

    aget v2, p2, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x7

    aget v4, p0, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    const/4 v4, 0x7

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1291
    const/4 v2, 0x7

    long-to-int v3, v0

    aput v3, p2, v2

    .line 1292
    shr-long/2addr v0, v8

    .line 1293
    long-to-int v0, v0

    return v0
.end method

.method public static subFrom([II[II)I
    .registers 13

    .prologue
    const/16 v8, 0x20

    const-wide v6, 0xffffffffL

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

    aget v2, p2, p3

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p0, p1

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1330
    long-to-int v2, v0

    aput v2, p2, p3

    .line 1331
    shr-long/2addr v0, v8

    .line 1332
    add-int/lit8 v2, p3, 0x1

    aget v2, p2, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p1, 0x1

    aget v4, p0, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1333
    add-int/lit8 v2, p3, 0x1

    long-to-int v3, v0

    aput v3, p2, v2

    .line 1334
    shr-long/2addr v0, v8

    .line 1335
    add-int/lit8 v2, p3, 0x2

    aget v2, p2, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p1, 0x2

    aget v4, p0, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1336
    add-int/lit8 v2, p3, 0x2

    long-to-int v3, v0

    aput v3, p2, v2

    .line 1337
    shr-long/2addr v0, v8

    .line 1338
    add-int/lit8 v2, p3, 0x3

    aget v2, p2, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p1, 0x3

    aget v4, p0, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1339
    add-int/lit8 v2, p3, 0x3

    long-to-int v3, v0

    aput v3, p2, v2

    .line 1340
    shr-long/2addr v0, v8

    .line 1341
    add-int/lit8 v2, p3, 0x4

    aget v2, p2, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p1, 0x4

    aget v4, p0, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1342
    add-int/lit8 v2, p3, 0x4

    long-to-int v3, v0

    aput v3, p2, v2

    .line 1343
    shr-long/2addr v0, v8

    .line 1344
    add-int/lit8 v2, p3, 0x5

    aget v2, p2, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p1, 0x5

    aget v4, p0, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1345
    add-int/lit8 v2, p3, 0x5

    long-to-int v3, v0

    aput v3, p2, v2

    .line 1346
    shr-long/2addr v0, v8

    .line 1347
    add-int/lit8 v2, p3, 0x6

    aget v2, p2, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p1, 0x6

    aget v4, p0, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1348
    add-int/lit8 v2, p3, 0x6

    long-to-int v3, v0

    aput v3, p2, v2

    .line 1349
    shr-long/2addr v0, v8

    .line 1350
    add-int/lit8 v2, p3, 0x7

    aget v2, p2, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    add-int/lit8 v4, p1, 0x7

    aget v4, p0, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1351
    add-int/lit8 v2, p3, 0x7

    long-to-int v3, v0

    aput v3, p2, v2

    .line 1352
    shr-long/2addr v0, v8

    .line 1353
    long-to-int v0, v0

    return v0
.end method

.method public static subFrom([I[I)I
    .registers 14

    .prologue
    const/4 v11, 0x2

    const/4 v10, 0x1

    const/4 v9, 0x0

    const/16 v8, 0x20

    const-wide v6, 0xffffffffL

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

    aget v2, p1, v9

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p0, v9

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1300
    long-to-int v2, v0

    aput v2, p1, v9

    .line 1301
    shr-long/2addr v0, v8

    .line 1302
    aget v2, p1, v10

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p0, v10

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1303
    long-to-int v2, v0

    aput v2, p1, v10

    .line 1304
    shr-long/2addr v0, v8

    .line 1305
    aget v2, p1, v11

    int-to-long v2, v2

    and-long/2addr v2, v6

    aget v4, p0, v11

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1306
    long-to-int v2, v0

    aput v2, p1, v11

    .line 1307
    shr-long/2addr v0, v8

    .line 1308
    const/4 v2, 0x3

    aget v2, p1, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x3

    aget v4, p0, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1309
    const/4 v2, 0x3

    long-to-int v3, v0

    aput v3, p1, v2

    .line 1310
    shr-long/2addr v0, v8

    .line 1311
    const/4 v2, 0x4

    aget v2, p1, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x4

    aget v4, p0, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1312
    const/4 v2, 0x4

    long-to-int v3, v0

    aput v3, p1, v2

    .line 1313
    shr-long/2addr v0, v8

    .line 1314
    const/4 v2, 0x5

    aget v2, p1, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x5

    aget v4, p0, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1315
    const/4 v2, 0x5

    long-to-int v3, v0

    aput v3, p1, v2

    .line 1316
    shr-long/2addr v0, v8

    .line 1317
    const/4 v2, 0x6

    aget v2, p1, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x6

    aget v4, p0, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1318
    const/4 v2, 0x6

    long-to-int v3, v0

    aput v3, p1, v2

    .line 1319
    shr-long/2addr v0, v8

    .line 1320
    const/4 v2, 0x7

    aget v2, p1, v2

    int-to-long v2, v2

    and-long/2addr v2, v6

    const/4 v4, 0x7

    aget v4, p0, v4

    int-to-long v4, v4

    and-long/2addr v4, v6

    sub-long/2addr v2, v4

    add-long/2addr v0, v2

    .line 1321
    const/4 v2, 0x7

    long-to-int v3, v0

    aput v3, p1, v2

    .line 1322
    shr-long/2addr v0, v8

    .line 1323
    long-to-int v0, v0

    return v0
.end method

.method public static toBigInteger([I)Ljava/math/BigInteger;
    .registers 5

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

    new-array v1, v0, [B

    .line 1359
    const/4 v0, 0x0

    :goto_5
    const/16 v2, 0x8

    if-ge v0, v2, :cond_17

    .line 1361
    aget v2, p0, v0

    .line 1362
    if-eqz v2, :cond_14

    .line 1364
    rsub-int/lit8 v3, v0, 0x7

    shl-int/lit8 v3, v3, 0x2

    invoke-static {v2, v1, v3}, Lorg/spongycastle/util/Pack;->intToBigEndian(I[BI)V

    .line 1359
    :cond_14
    add-int/lit8 v0, v0, 0x1

    goto :goto_5

    .line 1367
    :cond_17
    new-instance v0, Ljava/math/BigInteger;

    const/4 v2, 0x1

    invoke-direct {v0, v2, v1}, Ljava/math/BigInteger;-><init>(I[B)V

    return-object v0
.end method

.method public static toBigInteger64([J)Ljava/math/BigInteger;
    .registers 7

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

    new-array v1, v0, [B

    .line 1373
    const/4 v0, 0x0

    :goto_5
    const/4 v2, 0x4

    if-ge v0, v2, :cond_1a

    .line 1375
    aget-wide v2, p0, v0

    .line 1376
    const-wide/16 v4, 0x0

    cmp-long v4, v2, v4

    if-eqz v4, :cond_17

    .line 1378
    rsub-int/lit8 v4, v0, 0x3

    shl-int/lit8 v4, v4, 0x3

    invoke-static {v2, v3, v1, v4}, Lorg/spongycastle/util/Pack;->longToBigEndian(J[BI)V

    .line 1373
    :cond_17
    add-int/lit8 v0, v0, 0x1

    goto :goto_5

    .line 1381
    :cond_1a
    new-instance v0, Ljava/math/BigInteger;

    const/4 v2, 0x1

    invoke-direct {v0, v2, v1}, Ljava/math/BigInteger;-><init>(I[B)V

    return-object v0
.end method

.method public static zero([I)V
    .registers 3

    .prologue
    const/4 v1, 0x0

    .line 1386
    aput v1, p0, v1

    .line 1387
    const/4 v0, 0x1

    aput v1, p0, v0

    .line 1388
    const/4 v0, 0x2

    aput v1, p0, v0

    .line 1389
    const/4 v0, 0x3

    aput v1, p0, v0

    .line 1390
    const/4 v0, 0x4

    aput v1, p0, v0

    .line 1391
    const/4 v0, 0x5

    aput v1, p0, v0

    .line 1392
    const/4 v0, 0x6

    aput v1, p0, v0

    .line 1393
    const/4 v0, 0x7

    aput v1, p0, v0

    .line 1394
    return-void
.end method