Nat192.smali

.class public abstract Lorg/spongycastle/math/raw/Nat192;
.super Ljava/lang/Object;
.source "Nat192.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([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
    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 38
    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 39
    long-to-int v2, v0

    aput v2, p2, v9

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

    .line 41
    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 42
    long-to-int v2, v0

    aput v2, p2, v10

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

    .line 44
    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 45
    long-to-int v2, v0

    aput v2, p2, v11

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

    .line 47
    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 48
    const/4 v2, 0x3

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 50
    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 51
    const/4 v2, 0x4

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 53
    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 54
    const/4 v2, 0x5

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 56
    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 85
    int-to-long v0, p4

    and-long/2addr v0, v6

    .line 86
    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 87
    long-to-int v2, v0

    aput v2, p2, p3

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

    .line 89
    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 90
    add-int/lit8 v2, p3, 0x1

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 92
    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 93
    add-int/lit8 v2, p3, 0x2

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 95
    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 96
    add-int/lit8 v2, p3, 0x3

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 98
    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 99
    add-int/lit8 v2, p3, 0x4

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 101
    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 102
    add-int/lit8 v2, p3, 0x5

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 104
    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 62
    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 63
    long-to-int v2, v0

    aput v2, p1, v9

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

    .line 65
    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 66
    long-to-int v2, v0

    aput v2, p1, v10

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

    .line 68
    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 69
    long-to-int v2, v0

    aput v2, p1, v11

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

    .line 71
    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 72
    const/4 v2, 0x3

    long-to-int v3, v0

    aput v3, p1, v2

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

    .line 74
    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 75
    const/4 v2, 0x4

    long-to-int v3, v0

    aput v3, p1, v2

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

    .line 77
    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 78
    const/4 v2, 0x5

    long-to-int v3, v0

    aput v3, p1, v2

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

    .line 80
    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 110
    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 111
    long-to-int v2, v0

    aput v2, p0, p1

    .line 112
    long-to-int v2, v0

    aput v2, p2, p3

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

    .line 114
    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 115
    add-int/lit8 v2, p1, 0x1

    long-to-int v3, v0

    aput v3, p0, v2

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

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 118
    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 119
    add-int/lit8 v2, p1, 0x2

    long-to-int v3, v0

    aput v3, p0, v2

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

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 122
    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 123
    add-int/lit8 v2, p1, 0x3

    long-to-int v3, v0

    aput v3, p0, v2

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

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 126
    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 127
    add-int/lit8 v2, p1, 0x4

    long-to-int v3, v0

    aput v3, p0, v2

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

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 130
    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 131
    add-int/lit8 v2, p1, 0x5

    long-to-int v3, v0

    aput v3, p0, v2

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

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 134
    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 139
    aget v0, p0, v1

    aput v0, p1, v1

    .line 140
    aget v0, p0, v2

    aput v0, p1, v2

    .line 141
    aget v0, p0, v3

    aput v0, p1, v3

    .line 142
    aget v0, p0, v4

    aput v0, p1, v4

    .line 143
    aget v0, p0, v5

    aput v0, p1, v5

    .line 144
    const/4 v0, 0x5

    const/4 v1, 0x5

    aget v1, p0, v1

    aput v1, p1, v0

    .line 145
    return-void
.end method

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

    .prologue
    const/4 v4, 0x2

    const/4 v3, 0x1

    const/4 v2, 0x0

    .line 149
    aget-wide v0, p0, v2

    aput-wide v0, p1, v2

    .line 150
    aget-wide v0, p0, v3

    aput-wide v0, p1, v3

    .line 151
    aget-wide v0, p0, v4

    aput-wide v0, p1, v4

    .line 152
    return-void
.end method

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

    .prologue
    .line 156
    const/4 v0, 0x6

    new-array v0, v0, [I

    return-object v0
.end method

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

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

    new-array v0, v0, [J

    return-object v0
.end method

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

    .prologue
    .line 166
    const/16 v0, 0xc

    new-array v0, v0, [I

    return-object v0
.end method

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

    .prologue
    .line 171
    const/4 v0, 0x6

    new-array v0, v0, [J

    return-object v0
.end method

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

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

    move-result v6

    .line 177
    if-eqz v6, :cond_a

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

    .line 185
    :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 183
    invoke-static/range {v0 .. v5}, Lorg/spongycastle/math/raw/Nat192;->sub([II[II[II)I

    goto :goto_9
.end method

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

    .prologue
    .line 190
    const/4 v0, 0x5

    :goto_1
    if-ltz v0, :cond_e

    .line 192
    aget v1, p0, v0

    aget v2, p1, v0

    if-eq v1, v2, :cond_b

    .line 194
    const/4 v0, 0x0

    .line 197
    :goto_a
    return v0

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

    goto :goto_1

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

    goto :goto_a
.end method

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

    .prologue
    .line 202
    const/4 v0, 0x2

    :goto_1
    if-ltz v0, :cond_10

    .line 204
    aget-wide v2, p0, v0

    aget-wide v4, p1, v0

    cmp-long v1, v2, v4

    if-eqz v1, :cond_d

    .line 206
    const/4 v0, 0x0

    .line 209
    :goto_c
    return v0

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

    goto :goto_1

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

    goto :goto_c
.end method

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

    .prologue
    .line 214
    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, 0xc0

    if-le v0, v1, :cond_14

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

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

    throw v0

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

    move-result-object v2

    .line 220
    const/4 v0, 0x0

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

    move-result v1

    if-eqz v1, :cond_2f

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

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

    move-result v3

    aput v3, v2, v0

    .line 224
    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 226
    :cond_2f
    return-object v2
.end method

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

    .prologue
    .line 231
    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, 0xc0

    if-le v0, v1, :cond_14

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

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

    throw v0

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

    move-result-object v2

    .line 237
    const/4 v0, 0x0

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

    move-result v1

    if-eqz v1, :cond_2f

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

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

    move-result-wide v4

    aput-wide v4, v2, v0

    .line 241
    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 243
    :cond_2f
    return-object v2
.end method

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

    .prologue
    const/4 v0, 0x0

    .line 248
    if-nez p1, :cond_8

    .line 250
    aget v0, p0, v0

    and-int/lit8 v0, v0, 0x1

    .line 258
    :cond_7
    :goto_7
    return v0

    .line 252
    :cond_8
    shr-int/lit8 v1, p1, 0x5

    .line 253
    if-ltz v1, :cond_7

    const/4 v2, 0x6

    if-ge v1, v2, :cond_7

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

    .line 258
    aget v1, p0, v1

    ushr-int v0, v1, v0

    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 277
    const/4 v1, 0x5

    :goto_4
    if-ltz v1, :cond_13

    .line 279
    add-int v2, p1, v1

    aget v2, p0, v2

    xor-int/2addr v2, v4

    .line 280
    add-int v3, p3, v1

    aget v3, p2, v3

    xor-int/2addr v3, v4

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

    .line 282
    const/4 v0, 0x0

    .line 286
    :cond_13
    return v0

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

    .line 277
    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 263
    const/4 v1, 0x5

    :goto_4
    if-ltz v1, :cond_f

    .line 265
    aget v2, p0, v1

    xor-int/2addr v2, v4

    .line 266
    aget v3, p1, v1

    xor-int/2addr v3, v4

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

    .line 268
    const/4 v0, 0x0

    .line 272
    :cond_f
    return v0

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

    .line 263
    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 291
    aget v2, p0, v0

    if-eq v2, v1, :cond_7

    .line 302
    :cond_6
    :goto_6
    return v0

    :cond_7
    move v2, v1

    .line 295
    :goto_8
    const/4 v3, 0x6

    if-ge v2, v3, :cond_12

    .line 297
    aget v3, p0, v2

    if-nez v3, :cond_6

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

    goto :goto_8

    :cond_12
    move v0, v1

    .line 302
    goto :goto_6
.end method

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

    .prologue
    const/4 v1, 0x1

    const/4 v0, 0x0

    .line 307
    aget-wide v2, p0, v0

    const-wide/16 v4, 0x1

    cmp-long v2, v2, v4

    if-eqz v2, :cond_b

    .line 318
    :cond_a
    :goto_a
    return v0

    :cond_b
    move v2, v1

    .line 311
    :goto_c
    const/4 v3, 0x3

    if-ge v2, v3, :cond_1a

    .line 313
    aget-wide v4, p0, v2

    const-wide/16 v6, 0x0

    cmp-long v3, v4, v6

    if-nez v3, :cond_a

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

    goto :goto_c

    :cond_1a
    move v0, v1

    .line 318
    goto :goto_a
.end method

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

    .prologue
    const/4 v0, 0x0

    .line 323
    move v1, v0

    :goto_2
    const/4 v2, 0x6

    if-ge v1, v2, :cond_d

    .line 325
    aget v2, p0, v1

    if-eqz v2, :cond_a

    .line 330
    :goto_9
    return v0

    .line 323
    :cond_a
    add-int/lit8 v1, v1, 0x1

    goto :goto_2

    .line 330
    :cond_d
    const/4 v0, 0x1

    goto :goto_9
.end method

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

    .prologue
    const/4 v0, 0x0

    .line 335
    move v1, v0

    :goto_2
    const/4 v2, 0x3

    if-ge v1, v2, :cond_11

    .line 337
    aget-wide v2, p0, v1

    const-wide/16 v4, 0x0

    cmp-long v2, v2, v4

    if-eqz v2, :cond_e

    .line 342
    :goto_d
    return v0

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

    goto :goto_2

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

    goto :goto_d
.end method

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

    .prologue
    .line 404
    aget v2, p2, p3

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long/2addr v4, v2

    .line 405
    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 406
    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 407
    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 408
    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 409
    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 412
    aget v2, p0, p1

    int-to-long v2, v2

    const-wide v16, 0xffffffffL

    and-long v2, v2, v16

    .line 413
    const-wide/16 v16, 0x0

    mul-long v18, v2, v4

    add-long v16, v16, v18

    .line 414
    move-wide/from16 v0, v16

    long-to-int v0, v0

    move/from16 v18, v0

    aput v18, p4, p5

    .line 415
    const/16 v18, 0x20

    ushr-long v16, v16, v18

    .line 416
    mul-long v18, v2, v6

    add-long v16, v16, v18

    .line 417
    add-int/lit8 v18, p5, 0x1

    move-wide/from16 v0, v16

    long-to-int v0, v0

    move/from16 v19, v0

    aput v19, p4, v18

    .line 418
    const/16 v18, 0x20

    ushr-long v16, v16, v18

    .line 419
    mul-long v18, v2, v8

    add-long v16, v16, v18

    .line 420
    add-int/lit8 v18, p5, 0x2

    move-wide/from16 v0, v16

    long-to-int v0, v0

    move/from16 v19, v0

    aput v19, p4, v18

    .line 421
    const/16 v18, 0x20

    ushr-long v16, v16, v18

    .line 422
    mul-long v18, v2, v10

    add-long v16, v16, v18

    .line 423
    add-int/lit8 v18, p5, 0x3

    move-wide/from16 v0, v16

    long-to-int v0, v0

    move/from16 v19, v0

    aput v19, p4, v18

    .line 424
    const/16 v18, 0x20

    ushr-long v16, v16, v18

    .line 425
    mul-long v18, v2, v12

    add-long v16, v16, v18

    .line 426
    add-int/lit8 v18, p5, 0x4

    move-wide/from16 v0, v16

    long-to-int v0, v0

    move/from16 v19, v0

    aput v19, p4, v18

    .line 427
    const/16 v18, 0x20

    ushr-long v16, v16, v18

    .line 428
    mul-long/2addr v2, v14

    add-long v2, v2, v16

    .line 429
    add-int/lit8 v16, p5, 0x5

    long-to-int v0, v2

    move/from16 v17, v0

    aput v17, p4, v16

    .line 430
    const/16 v16, 0x20

    ushr-long v2, v2, v16

    .line 431
    add-int/lit8 v16, p5, 0x6

    long-to-int v2, v2

    aput v2, p4, v16

    .line 434
    const/4 v2, 0x1

    :goto_b3
    const/4 v3, 0x6

    if-ge v2, v3, :cond_195

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

    .line 437
    add-int v3, p1, v2

    aget v3, p0, v3

    int-to-long v0, v3

    move-wide/from16 v16, v0

    const-wide v18, 0xffffffffL

    and-long v16, v16, v18

    .line 438
    const-wide/16 v18, 0x0

    mul-long v20, v16, v4

    aget v3, p4, p5

    int-to-long v0, v3

    move-wide/from16 v22, v0

    const-wide v24, 0xffffffffL

    and-long v22, v22, v24

    add-long v20, v20, v22

    add-long v18, v18, v20

    .line 439
    move-wide/from16 v0, v18

    long-to-int v3, v0

    aput v3, p4, p5

    .line 440
    const/16 v3, 0x20

    ushr-long v18, v18, v3

    .line 441
    mul-long v20, v16, v6

    add-int/lit8 v3, p5, 0x1

    aget v3, p4, v3

    int-to-long v0, v3

    move-wide/from16 v22, v0

    const-wide v24, 0xffffffffL

    and-long v22, v22, v24

    add-long v20, v20, v22

    add-long v18, v18, v20

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

    move-wide/from16 v0, v18

    long-to-int v0, v0

    move/from16 v20, v0

    aput v20, p4, v3

    .line 443
    const/16 v3, 0x20

    ushr-long v18, v18, v3

    .line 444
    mul-long v20, v16, v8

    add-int/lit8 v3, p5, 0x2

    aget v3, p4, v3

    int-to-long v0, v3

    move-wide/from16 v22, v0

    const-wide v24, 0xffffffffL

    and-long v22, v22, v24

    add-long v20, v20, v22

    add-long v18, v18, v20

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

    move-wide/from16 v0, v18

    long-to-int v0, v0

    move/from16 v20, v0

    aput v20, p4, v3

    .line 446
    const/16 v3, 0x20

    ushr-long v18, v18, v3

    .line 447
    mul-long v20, v16, v10

    add-int/lit8 v3, p5, 0x3

    aget v3, p4, v3

    int-to-long v0, v3

    move-wide/from16 v22, v0

    const-wide v24, 0xffffffffL

    and-long v22, v22, v24

    add-long v20, v20, v22

    add-long v18, v18, v20

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

    move-wide/from16 v0, v18

    long-to-int v0, v0

    move/from16 v20, v0

    aput v20, p4, v3

    .line 449
    const/16 v3, 0x20

    ushr-long v18, v18, v3

    .line 450
    mul-long v20, v16, v12

    add-int/lit8 v3, p5, 0x4

    aget v3, p4, v3

    int-to-long v0, v3

    move-wide/from16 v22, v0

    const-wide v24, 0xffffffffL

    and-long v22, v22, v24

    add-long v20, v20, v22

    add-long v18, v18, v20

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

    move-wide/from16 v0, v18

    long-to-int v0, v0

    move/from16 v20, v0

    aput v20, p4, v3

    .line 452
    const/16 v3, 0x20

    ushr-long v18, v18, v3

    .line 453
    mul-long v16, v16, v14

    add-int/lit8 v3, p5, 0x5

    aget v3, p4, v3

    int-to-long v0, v3

    move-wide/from16 v20, v0

    const-wide v22, 0xffffffffL

    and-long v20, v20, v22

    add-long v16, v16, v20

    add-long v16, v16, v18

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

    move-wide/from16 v0, v16

    long-to-int v0, v0

    move/from16 v18, v0

    aput v18, p4, v3

    .line 455
    const/16 v3, 0x20

    ushr-long v16, v16, v3

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

    move-wide/from16 v0, v16

    long-to-int v0, v0

    move/from16 v16, v0

    aput v16, p4, v3

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

    goto/16 :goto_b3

    .line 458
    :cond_195
    return-void
.end method

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

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

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long/2addr v4, v2

    .line 348
    const/4 v2, 0x1

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v6, 0xffffffffL

    and-long/2addr v6, v2

    .line 349
    const/4 v2, 0x2

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v8, 0xffffffffL

    and-long/2addr v8, v2

    .line 350
    const/4 v2, 0x3

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v10, 0xffffffffL

    and-long/2addr v10, v2

    .line 351
    const/4 v2, 0x4

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v12, 0xffffffffL

    and-long/2addr v12, v2

    .line 352
    const/4 v2, 0x5

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v14, 0xffffffffL

    and-long/2addr v14, v2

    .line 355
    const/4 v2, 0x0

    aget v2, p0, v2

    int-to-long v2, v2

    const-wide v16, 0xffffffffL

    and-long v2, v2, v16

    .line 356
    const-wide/16 v16, 0x0

    mul-long v18, v2, v4

    add-long v16, v16, v18

    .line 357
    const/16 v18, 0x0

    move-wide/from16 v0, v16

    long-to-int v0, v0

    move/from16 v19, v0

    aput v19, p2, v18

    .line 358
    const/16 v18, 0x20

    ushr-long v16, v16, v18

    .line 359
    mul-long v18, v2, v6

    add-long v16, v16, v18

    .line 360
    const/16 v18, 0x1

    move-wide/from16 v0, v16

    long-to-int v0, v0

    move/from16 v19, v0

    aput v19, p2, v18

    .line 361
    const/16 v18, 0x20

    ushr-long v16, v16, v18

    .line 362
    mul-long v18, v2, v8

    add-long v16, v16, v18

    .line 363
    const/16 v18, 0x2

    move-wide/from16 v0, v16

    long-to-int v0, v0

    move/from16 v19, v0

    aput v19, p2, v18

    .line 364
    const/16 v18, 0x20

    ushr-long v16, v16, v18

    .line 365
    mul-long v18, v2, v10

    add-long v16, v16, v18

    .line 366
    const/16 v18, 0x3

    move-wide/from16 v0, v16

    long-to-int v0, v0

    move/from16 v19, v0

    aput v19, p2, v18

    .line 367
    const/16 v18, 0x20

    ushr-long v16, v16, v18

    .line 368
    mul-long v18, v2, v12

    add-long v16, v16, v18

    .line 369
    const/16 v18, 0x4

    move-wide/from16 v0, v16

    long-to-int v0, v0

    move/from16 v19, v0

    aput v19, p2, v18

    .line 370
    const/16 v18, 0x20

    ushr-long v16, v16, v18

    .line 371
    mul-long/2addr v2, v14

    add-long v2, v2, v16

    .line 372
    const/16 v16, 0x5

    long-to-int v0, v2

    move/from16 v17, v0

    aput v17, p2, v16

    .line 373
    const/16 v16, 0x20

    ushr-long v2, v2, v16

    .line 374
    const/16 v16, 0x6

    long-to-int v2, v2

    aput v2, p2, v16

    .line 377
    const/4 v2, 0x1

    :goto_b2
    const/4 v3, 0x6

    if-ge v2, v3, :cond_190

    .line 379
    aget v3, p0, v2

    int-to-long v0, v3

    move-wide/from16 v16, v0

    const-wide v18, 0xffffffffL

    and-long v16, v16, v18

    .line 380
    const-wide/16 v18, 0x0

    mul-long v20, v16, v4

    aget v3, p2, v2

    int-to-long v0, v3

    move-wide/from16 v22, v0

    const-wide v24, 0xffffffffL

    and-long v22, v22, v24

    add-long v20, v20, v22

    add-long v18, v18, v20

    .line 381
    move-wide/from16 v0, v18

    long-to-int v3, v0

    aput v3, p2, v2

    .line 382
    const/16 v3, 0x20

    ushr-long v18, v18, v3

    .line 383
    mul-long v20, v16, v6

    add-int/lit8 v3, v2, 0x1

    aget v3, p2, v3

    int-to-long v0, v3

    move-wide/from16 v22, v0

    const-wide v24, 0xffffffffL

    and-long v22, v22, v24

    add-long v20, v20, v22

    add-long v18, v18, v20

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

    move-wide/from16 v0, v18

    long-to-int v0, v0

    move/from16 v20, v0

    aput v20, p2, v3

    .line 385
    const/16 v3, 0x20

    ushr-long v18, v18, v3

    .line 386
    mul-long v20, v16, v8

    add-int/lit8 v3, v2, 0x2

    aget v3, p2, v3

    int-to-long v0, v3

    move-wide/from16 v22, v0

    const-wide v24, 0xffffffffL

    and-long v22, v22, v24

    add-long v20, v20, v22

    add-long v18, v18, v20

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

    move-wide/from16 v0, v18

    long-to-int v0, v0

    move/from16 v20, v0

    aput v20, p2, v3

    .line 388
    const/16 v3, 0x20

    ushr-long v18, v18, v3

    .line 389
    mul-long v20, v16, v10

    add-int/lit8 v3, v2, 0x3

    aget v3, p2, v3

    int-to-long v0, v3

    move-wide/from16 v22, v0

    const-wide v24, 0xffffffffL

    and-long v22, v22, v24

    add-long v20, v20, v22

    add-long v18, v18, v20

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

    move-wide/from16 v0, v18

    long-to-int v0, v0

    move/from16 v20, v0

    aput v20, p2, v3

    .line 391
    const/16 v3, 0x20

    ushr-long v18, v18, v3

    .line 392
    mul-long v20, v16, v12

    add-int/lit8 v3, v2, 0x4

    aget v3, p2, v3

    int-to-long v0, v3

    move-wide/from16 v22, v0

    const-wide v24, 0xffffffffL

    and-long v22, v22, v24

    add-long v20, v20, v22

    add-long v18, v18, v20

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

    move-wide/from16 v0, v18

    long-to-int v0, v0

    move/from16 v20, v0

    aput v20, p2, v3

    .line 394
    const/16 v3, 0x20

    ushr-long v18, v18, v3

    .line 395
    mul-long v16, v16, v14

    add-int/lit8 v3, v2, 0x5

    aget v3, p2, v3

    int-to-long v0, v3

    move-wide/from16 v20, v0

    const-wide v22, 0xffffffffL

    and-long v20, v20, v22

    add-long v16, v16, v20

    add-long v16, v16, v18

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

    move-wide/from16 v0, v16

    long-to-int v0, v0

    move/from16 v18, v0

    aput v18, p2, v3

    .line 397
    const/16 v3, 0x20

    ushr-long v16, v16, v3

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

    move-wide/from16 v0, v16

    long-to-int v0, v0

    move/from16 v16, v0

    aput v16, p2, v3

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

    goto/16 :goto_b2

    .line 400
    :cond_190
    return-void
.end method

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

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

    const-wide v2, 0xffffffffL

    and-long/2addr v0, v2

    .line 542
    aget v2, p1, p2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long/2addr v2, v4

    .line 543
    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 544
    long-to-int v6, v4

    aput v6, p5, p6

    .line 545
    const/16 v6, 0x20

    ushr-long/2addr v4, v6

    .line 546
    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 547
    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 548
    add-int/lit8 v4, p6, 0x1

    long-to-int v5, v2

    aput v5, p5, v4

    .line 549
    const/16 v4, 0x20

    ushr-long/2addr v2, v4

    .line 550
    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 551
    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 552
    add-int/lit8 v6, p6, 0x2

    long-to-int v7, v2

    aput v7, p5, v6

    .line 553
    const/16 v6, 0x20

    ushr-long/2addr v2, v6

    .line 554
    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 555
    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 556
    add-int/lit8 v4, p6, 0x3

    long-to-int v5, v2

    aput v5, p5, v4

    .line 557
    const/16 v4, 0x20

    ushr-long/2addr v2, v4

    .line 558
    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 559
    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 560
    add-int/lit8 v6, p6, 0x4

    long-to-int v7, v2

    aput v7, p5, v6

    .line 561
    const/16 v6, 0x20

    ushr-long/2addr v2, v6

    .line 562
    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 563
    mul-long/2addr v0, v6

    add-long/2addr v0, v4

    add-int/lit8 v4, p4, 0x5

    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 564
    add-int/lit8 v2, p6, 0x5

    long-to-int v3, v0

    aput v3, p5, v2

    .line 565
    const/16 v2, 0x20

    ushr-long/2addr v0, v2

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

    .line 567
    return-wide v0
.end method

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

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

    const-wide v4, 0xffffffffL

    and-long/2addr v2, v4

    .line 602
    const-wide v4, 0xffffffffL

    and-long v4, v4, p1

    .line 603
    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 604
    long-to-int v8, v6

    aput v8, p3, p4

    .line 605
    const/16 v8, 0x20

    ushr-long/2addr v6, v8

    .line 606
    const/16 v8, 0x20

    ushr-long v8, p1, v8

    .line 607
    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 608
    add-int/lit8 v4, p4, 0x1

    long-to-int v5, v2

    aput v5, p3, v4

    .line 609
    const/16 v4, 0x20

    ushr-long/2addr v2, v4

    .line 610
    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 611
    add-int/lit8 v4, p4, 0x2

    long-to-int v5, v2

    aput v5, p3, v4

    .line 612
    const/16 v4, 0x20

    ushr-long/2addr v2, v4

    .line 613
    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 614
    add-int/lit8 v4, p4, 0x3

    long-to-int v5, v2

    aput v5, p3, v4

    .line 615
    const/16 v4, 0x20

    ushr-long/2addr v2, v4

    .line 616
    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/4 v2, 0x6

    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 624
    int-to-long v0, p0

    and-long/2addr v0, v6

    int-to-long v2, p1

    and-long/2addr v2, v6

    .line 625
    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 626
    long-to-int v4, v0

    aput v4, p2, p3

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

    .line 628
    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 629
    add-int/lit8 v2, p3, 0x1

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 631
    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 632
    add-int/lit8 v2, p3, 0x2

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 634
    cmp-long v0, v0, v10

    if-nez v0, :cond_39

    const/4 v0, 0x0

    :goto_38
    return v0

    :cond_39
    const/4 v0, 0x6

    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 34

    .prologue
    .line 500
    aget v2, p2, p3

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v6, v2, v4

    .line 501
    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 502
    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 503
    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 504
    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 505
    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 507
    const-wide/16 v2, 0x0

    .line 508
    const/4 v4, 0x0

    :goto_49
    const/4 v5, 0x6

    if-ge v4, v5, :cond_13e

    .line 510
    add-int v5, p1, v4

    aget v5, p0, v5

    int-to-long v0, v5

    move-wide/from16 v18, v0

    const-wide v20, 0xffffffffL

    and-long v18, v18, v20

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

    mul-long v22, v18, v6

    aget v5, p4, p5

    int-to-long v0, v5

    move-wide/from16 v24, v0

    const-wide v26, 0xffffffffL

    and-long v24, v24, v26

    add-long v22, v22, v24

    add-long v20, v20, v22

    .line 512
    move-wide/from16 v0, v20

    long-to-int v5, v0

    aput v5, p4, p5

    .line 513
    const/16 v5, 0x20

    ushr-long v20, v20, v5

    .line 514
    mul-long v22, v18, v8

    add-int/lit8 v5, p5, 0x1

    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 v22, v22, v24

    add-long v20, v20, v22

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

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v22, v0

    aput v22, p4, v5

    .line 516
    const/16 v5, 0x20

    ushr-long v20, v20, v5

    .line 517
    mul-long v22, v18, v10

    add-int/lit8 v5, p5, 0x2

    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 v22, v22, v24

    add-long v20, v20, v22

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

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v22, v0

    aput v22, p4, v5

    .line 519
    const/16 v5, 0x20

    ushr-long v20, v20, v5

    .line 520
    mul-long v22, v18, v12

    add-int/lit8 v5, p5, 0x3

    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 v22, v22, v24

    add-long v20, v20, v22

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

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v22, v0

    aput v22, p4, v5

    .line 522
    const/16 v5, 0x20

    ushr-long v20, v20, v5

    .line 523
    mul-long v22, v18, v14

    add-int/lit8 v5, p5, 0x4

    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 v22, v22, v24

    add-long v20, v20, v22

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

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v22, v0

    aput v22, p4, v5

    .line 525
    const/16 v5, 0x20

    ushr-long v20, v20, v5

    .line 526
    mul-long v18, v18, v16

    add-int/lit8 v5, p5, 0x5

    aget v5, p4, v5

    int-to-long v0, v5

    move-wide/from16 v22, v0

    const-wide v24, 0xffffffffL

    and-long v22, v22, v24

    add-long v18, v18, v22

    add-long v18, v18, v20

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

    move-wide/from16 v0, v18

    long-to-int v0, v0

    move/from16 v20, v0

    aput v20, p4, v5

    .line 528
    const/16 v5, 0x20

    ushr-long v18, v18, v5

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

    aget v5, p4, v5

    int-to-long v0, v5

    move-wide/from16 v20, v0

    const-wide v22, 0xffffffffL

    and-long v20, v20, v22

    add-long v2, v2, v20

    add-long v2, v2, v18

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

    long-to-int v0, v2

    move/from16 v18, v0

    aput v18, p4, v5

    .line 531
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

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

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

    goto/16 :goto_49

    .line 534
    :cond_13e
    long-to-int v2, v2

    return v2
.end method

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

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

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v6, v2, v4

    .line 463
    const/4 v2, 0x1

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v8, v2, v4

    .line 464
    const/4 v2, 0x2

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v10, v2, v4

    .line 465
    const/4 v2, 0x3

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v12, v2, v4

    .line 466
    const/4 v2, 0x4

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v14, v2, v4

    .line 467
    const/4 v2, 0x5

    aget v2, p1, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v16, v2, v4

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

    .line 470
    const/4 v4, 0x0

    :goto_45
    const/4 v5, 0x6

    if-ge v4, v5, :cond_136

    .line 472
    aget v5, p0, v4

    int-to-long v0, v5

    move-wide/from16 v18, v0

    const-wide v20, 0xffffffffL

    and-long v18, v18, v20

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

    mul-long v22, v18, v6

    aget v5, p2, v4

    int-to-long v0, v5

    move-wide/from16 v24, v0

    const-wide v26, 0xffffffffL

    and-long v24, v24, v26

    add-long v22, v22, v24

    add-long v20, v20, v22

    .line 474
    move-wide/from16 v0, v20

    long-to-int v5, v0

    aput v5, p2, v4

    .line 475
    const/16 v5, 0x20

    ushr-long v20, v20, v5

    .line 476
    mul-long v22, v18, v8

    add-int/lit8 v5, v4, 0x1

    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 v22, v22, v24

    add-long v20, v20, v22

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

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v22, v0

    aput v22, p2, v5

    .line 478
    const/16 v5, 0x20

    ushr-long v20, v20, v5

    .line 479
    mul-long v22, v18, v10

    add-int/lit8 v5, v4, 0x2

    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 v22, v22, v24

    add-long v20, v20, v22

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

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v22, v0

    aput v22, p2, v5

    .line 481
    const/16 v5, 0x20

    ushr-long v20, v20, v5

    .line 482
    mul-long v22, v18, v12

    add-int/lit8 v5, v4, 0x3

    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 v22, v22, v24

    add-long v20, v20, v22

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

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v22, v0

    aput v22, p2, v5

    .line 484
    const/16 v5, 0x20

    ushr-long v20, v20, v5

    .line 485
    mul-long v22, v18, v14

    add-int/lit8 v5, v4, 0x4

    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 v22, v22, v24

    add-long v20, v20, v22

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

    move-wide/from16 v0, v20

    long-to-int v0, v0

    move/from16 v22, v0

    aput v22, p2, v5

    .line 487
    const/16 v5, 0x20

    ushr-long v20, v20, v5

    .line 488
    mul-long v18, v18, v16

    add-int/lit8 v5, v4, 0x5

    aget v5, p2, v5

    int-to-long v0, v5

    move-wide/from16 v22, v0

    const-wide v24, 0xffffffffL

    and-long v22, v22, v24

    add-long v18, v18, v22

    add-long v18, v18, v20

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

    move-wide/from16 v0, v18

    long-to-int v0, v0

    move/from16 v20, v0

    aput v20, p2, v5

    .line 490
    const/16 v5, 0x20

    ushr-long v18, v18, v5

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

    aget v5, p2, v5

    int-to-long v0, v5

    move-wide/from16 v20, v0

    const-wide v22, 0xffffffffL

    and-long v20, v20, v22

    add-long v2, v2, v20

    add-long v2, v2, v18

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

    long-to-int v0, v2

    move/from16 v18, v0

    aput v18, p2, v5

    .line 493
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

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

    goto/16 :goto_45

    .line 495
    :cond_136
    long-to-int v2, v2

    return v2
.end method

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

    .prologue
    const-wide v8, 0xffffffffL

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

    int-to-long v2, p0

    and-long v4, v2, v8

    .line 656
    const/4 v2, 0x0

    .line 659
    :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 660
    add-int v3, p3, v2

    long-to-int v6, v0

    aput v6, p2, v3

    .line 661
    const/16 v3, 0x20

    ushr-long/2addr v0, v3

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

    const/4 v3, 0x6

    if-lt v2, v3, :cond_b

    .line 664
    long-to-int v0, v0

    return v0
.end method

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

    .prologue
    const/16 v10, 0x20

    const-wide v8, 0xffffffffL

    .line 574
    int-to-long v0, p0

    and-long/2addr v0, v8

    .line 575
    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 576
    long-to-int v4, v2

    aput v4, p3, p4

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

    .line 578
    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 579
    add-int/lit8 v4, p4, 0x1

    long-to-int v5, v2

    aput v5, p3, v4

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

    .line 581
    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 582
    add-int/lit8 v4, p4, 0x2

    long-to-int v5, v2

    aput v5, p3, v4

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

    .line 584
    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 585
    add-int/lit8 v4, p4, 0x3

    long-to-int v5, v2

    aput v5, p3, v4

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

    .line 587
    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 588
    add-int/lit8 v4, p4, 0x4

    long-to-int v5, v2

    aput v5, p3, v4

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

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

    aget v4, p1, v4

    int-to-long v4, v4

    and-long/2addr v4, v8

    mul-long/2addr v0, v4

    add-int/lit8 v4, p4, 0x5

    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 591
    add-int/lit8 v2, p4, 0x5

    long-to-int v3, v0

    aput v3, p3, v2

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

    .line 593
    long-to-int v0, v0

    return v0
.end method

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

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

    const-wide v2, 0xffffffffL

    and-long/2addr v0, v2

    .line 641
    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 642
    long-to-int v4, v2

    aput v4, p3, p4

    .line 643
    const/16 v4, 0x20

    ushr-long/2addr v2, v4

    .line 644
    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 645
    add-int/lit8 v2, p4, 0x1

    long-to-int v3, v0

    aput v3, p3, v2

    .line 646
    const/16 v2, 0x20

    ushr-long/2addr v0, v2

    .line 647
    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 648
    add-int/lit8 v2, p4, 0x2

    long-to-int v3, v0

    aput v3, p3, v2

    .line 649
    const/16 v2, 0x20

    ushr-long/2addr v0, v2

    .line 650
    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/4 v0, 0x6

    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 34

    .prologue
    .line 785
    aget v2, p0, p1

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v6, v2, v4

    .line 788
    const/4 v4, 0x0

    .line 790
    const/4 v3, 0x5

    const/16 v2, 0xc

    move v5, v4

    .line 793
    :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 794
    mul-long/2addr v8, v8

    .line 795
    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 796
    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 797
    long-to-int v3, v8

    .line 799
    if-gtz v4, :cond_22c

    .line 802
    mul-long v4, v6, v6

    .line 803
    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 804
    long-to-int v8, v4

    aput v8, p2, p3

    .line 805
    const/16 v8, 0x20

    ushr-long/2addr v4, v8

    long-to-int v4, v4

    and-int/lit8 v4, v4, 0x1

    .line 809
    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 810
    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 813
    mul-long v12, v8, v6

    add-long/2addr v2, v12

    .line 814
    long-to-int v5, v2

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

    shl-int/lit8 v13, v5, 0x1

    or-int/2addr v4, v13

    aput v4, p2, v12

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

    .line 817
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

    add-long/2addr v2, v10

    .line 820
    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 821
    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 822
    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 824
    mul-long v16, v10, v6

    add-long v2, v2, v16

    .line 825
    long-to-int v5, v2

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

    shl-int/lit8 v17, v5, 0x1

    or-int v4, v4, v17

    aput v4, p2, v16

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

    .line 828
    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 829
    const/16 v5, 0x20

    ushr-long v12, v2, v5

    add-long/2addr v12, v14

    .line 830
    const-wide v14, 0xffffffffL

    and-long/2addr v2, v14

    .line 833
    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 834
    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 835
    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 837
    mul-long v20, v14, v6

    add-long v2, v2, v20

    .line 838
    long-to-int v5, v2

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

    shl-int/lit8 v21, v5, 0x1

    or-int v4, v4, v21

    aput v4, p2, v20

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

    .line 841
    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 842
    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 843
    const-wide v16, 0xffffffffL

    and-long v2, v2, v16

    .line 844
    const/16 v5, 0x20

    ushr-long v16, v12, v5

    add-long v16, v16, v18

    .line 845
    const-wide v18, 0xffffffffL

    and-long v12, v12, v18

    .line 848
    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 849
    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 850
    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 852
    mul-long v24, v18, v6

    add-long v2, v2, v24

    .line 853
    long-to-int v5, v2

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

    shl-int/lit8 v25, v5, 0x1

    or-int v4, v4, v25

    aput v4, p2, v24

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

    .line 856
    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 857
    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 858
    const-wide v16, 0xffffffffL

    and-long v2, v2, v16

    .line 859
    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 860
    const-wide v20, 0xffffffffL

    and-long v12, v12, v20

    .line 861
    const/16 v5, 0x20

    ushr-long v20, v16, v5

    add-long v20, v20, v22

    .line 862
    const-wide v22, 0xffffffffL

    and-long v16, v16, v22

    .line 865
    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 866
    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 867
    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 869
    mul-long v6, v6, v22

    add-long/2addr v2, v6

    .line 870
    long-to-int v5, v2

    .line 871
    add-int/lit8 v6, p3, 0x5

    shl-int/lit8 v7, v5, 0x1

    or-int/2addr v4, v7

    aput v4, p2, v6

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

    .line 873
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

    mul-long v6, v22, v8

    add-long/2addr v2, v6

    add-long/2addr v2, v12

    .line 874
    const/16 v5, 0x20

    ushr-long v6, v2, v5

    mul-long v8, v22, v10

    add-long/2addr v6, v8

    add-long v6, v6, v16

    .line 875
    const/16 v5, 0x20

    ushr-long v8, v6, v5

    mul-long v10, v22, v14

    add-long/2addr v8, v10

    add-long v8, v8, v20

    .line 876
    const/16 v5, 0x20

    ushr-long v10, v8, v5

    mul-long v12, v22, v18

    add-long/2addr v10, v12

    add-long v10, v10, v24

    .line 877
    const/16 v5, 0x20

    ushr-long v12, v10, v5

    add-long v12, v12, v26

    .line 880
    long-to-int v2, v2

    .line 881
    add-int/lit8 v3, p3, 0x6

    shl-int/lit8 v5, v2, 0x1

    or-int/2addr v4, v5

    aput v4, p2, v3

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

    .line 883
    long-to-int v3, v6

    .line 884
    add-int/lit8 v4, p3, 0x7

    shl-int/lit8 v5, v3, 0x1

    or-int/2addr v2, v5

    aput v2, p2, v4

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

    .line 886
    long-to-int v3, v8

    .line 887
    add-int/lit8 v4, p3, 0x8

    shl-int/lit8 v5, v3, 0x1

    or-int/2addr v2, v5

    aput v2, p2, v4

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

    .line 889
    long-to-int v3, v10

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

    shl-int/lit8 v5, v3, 0x1

    or-int/2addr v2, v5

    aput v2, p2, v4

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

    .line 892
    long-to-int v3, v12

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

    shl-int/lit8 v5, v3, 0x1

    or-int/2addr v2, v5

    aput v2, p2, v4

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

    .line 895
    add-int/lit8 v3, p3, 0xb

    aget v3, p2, v3

    const/16 v4, 0x20

    shr-long v4, v12, v4

    long-to-int v4, v4

    add-int/2addr v3, v4

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

    shl-int/lit8 v3, v3, 0x1

    or-int/2addr v2, v3

    aput v2, p2, v4

    .line 897
    return-void

    :cond_22c
    move v5, v3

    move v3, v4

    goto/16 :goto_f
.end method

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

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

    aget v2, p0, v2

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long v6, v2, v4

    .line 672
    const/4 v4, 0x0

    .line 674
    const/4 v3, 0x5

    const/16 v2, 0xc

    move v5, v4

    .line 677
    :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 678
    mul-long/2addr v8, v8

    .line 679
    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 680
    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 681
    long-to-int v3, v8

    .line 683
    if-gtz v4, :cond_219

    .line 686
    mul-long v4, v6, v6

    .line 687
    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 688
    const/4 v8, 0x0

    long-to-int v9, v4

    aput v9, p1, v8

    .line 689
    const/16 v8, 0x20

    ushr-long/2addr v4, v8

    long-to-int v4, v4

    and-int/lit8 v4, v4, 0x1

    .line 693
    const/4 v5, 0x1

    aget v5, p0, v5

    int-to-long v8, v5

    const-wide v10, 0xffffffffL

    and-long/2addr v8, v10

    .line 694
    const/4 v5, 0x2

    aget v5, p1, v5

    int-to-long v10, v5

    const-wide v12, 0xffffffffL

    and-long/2addr v10, v12

    .line 697
    mul-long v12, v8, v6

    add-long/2addr v2, v12

    .line 698
    long-to-int v5, v2

    .line 699
    const/4 v12, 0x1

    shl-int/lit8 v13, v5, 0x1

    or-int/2addr v4, v13

    aput v4, p1, v12

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

    .line 701
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

    add-long/2addr v2, v10

    .line 704
    const/4 v5, 0x2

    aget v5, p0, v5

    int-to-long v10, v5

    const-wide v12, 0xffffffffL

    and-long/2addr v10, v12

    .line 705
    const/4 v5, 0x3

    aget v5, p1, v5

    int-to-long v12, v5

    const-wide v14, 0xffffffffL

    and-long/2addr v12, v14

    .line 706
    const/4 v5, 0x4

    aget v5, p1, v5

    int-to-long v14, v5

    const-wide v16, 0xffffffffL

    and-long v14, v14, v16

    .line 708
    mul-long v16, v10, v6

    add-long v2, v2, v16

    .line 709
    long-to-int v5, v2

    .line 710
    const/16 v16, 0x2

    shl-int/lit8 v17, v5, 0x1

    or-int v4, v4, v17

    aput v4, p1, v16

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

    .line 712
    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 713
    const/16 v5, 0x20

    ushr-long v12, v2, v5

    add-long/2addr v12, v14

    .line 714
    const-wide v14, 0xffffffffL

    and-long/2addr v2, v14

    .line 717
    const/4 v5, 0x3

    aget v5, p0, v5

    int-to-long v14, v5

    const-wide v16, 0xffffffffL

    and-long v14, v14, v16

    .line 718
    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 719
    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 721
    mul-long v20, v14, v6

    add-long v2, v2, v20

    .line 722
    long-to-int v5, v2

    .line 723
    const/16 v20, 0x3

    shl-int/lit8 v21, v5, 0x1

    or-int v4, v4, v21

    aput v4, p1, v20

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

    .line 725
    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 726
    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 727
    const-wide v16, 0xffffffffL

    and-long v2, v2, v16

    .line 728
    const/16 v5, 0x20

    ushr-long v16, v12, v5

    add-long v16, v16, v18

    .line 729
    const-wide v18, 0xffffffffL

    and-long v12, v12, v18

    .line 732
    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 733
    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 734
    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 736
    mul-long v24, v18, v6

    add-long v2, v2, v24

    .line 737
    long-to-int v5, v2

    .line 738
    const/16 v24, 0x4

    shl-int/lit8 v25, v5, 0x1

    or-int v4, v4, v25

    aput v4, p1, v24

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

    .line 740
    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 741
    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 742
    const-wide v16, 0xffffffffL

    and-long v2, v2, v16

    .line 743
    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 744
    const-wide v20, 0xffffffffL

    and-long v12, v12, v20

    .line 745
    const/16 v5, 0x20

    ushr-long v20, v16, v5

    add-long v20, v20, v22

    .line 746
    const-wide v22, 0xffffffffL

    and-long v16, v16, v22

    .line 749
    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 750
    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 751
    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 753
    mul-long v6, v6, v22

    add-long/2addr v2, v6

    .line 754
    long-to-int v5, v2

    .line 755
    const/4 v6, 0x5

    shl-int/lit8 v7, v5, 0x1

    or-int/2addr v4, v7

    aput v4, p1, v6

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

    .line 757
    const/16 v5, 0x20

    ushr-long/2addr v2, v5

    mul-long v6, v22, v8

    add-long/2addr v2, v6

    add-long/2addr v2, v12

    .line 758
    const/16 v5, 0x20

    ushr-long v6, v2, v5

    mul-long v8, v22, v10

    add-long/2addr v6, v8

    add-long v6, v6, v16

    .line 759
    const/16 v5, 0x20

    ushr-long v8, v6, v5

    mul-long v10, v22, v14

    add-long/2addr v8, v10

    add-long v8, v8, v20

    .line 760
    const/16 v5, 0x20

    ushr-long v10, v8, v5

    mul-long v12, v22, v18

    add-long/2addr v10, v12

    add-long v10, v10, v24

    .line 761
    const/16 v5, 0x20

    ushr-long v12, v10, v5

    add-long v12, v12, v26

    .line 764
    long-to-int v2, v2

    .line 765
    const/4 v3, 0x6

    shl-int/lit8 v5, v2, 0x1

    or-int/2addr v4, v5

    aput v4, p1, v3

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

    .line 767
    long-to-int v3, v6

    .line 768
    const/4 v4, 0x7

    shl-int/lit8 v5, v3, 0x1

    or-int/2addr v2, v5

    aput v2, p1, v4

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

    .line 770
    long-to-int v3, v8

    .line 771
    const/16 v4, 0x8

    shl-int/lit8 v5, v3, 0x1

    or-int/2addr v2, v5

    aput v2, p1, v4

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

    .line 773
    long-to-int v3, v10

    .line 774
    const/16 v4, 0x9

    shl-int/lit8 v5, v3, 0x1

    or-int/2addr v2, v5

    aput v2, p1, v4

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

    .line 776
    long-to-int v3, v12

    .line 777
    const/16 v4, 0xa

    shl-int/lit8 v5, v3, 0x1

    or-int/2addr v2, v5

    aput v2, p1, v4

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

    .line 779
    const/16 v3, 0xb

    aget v3, p1, v3

    const/16 v4, 0x20

    shr-long v4, v12, v4

    long-to-int v4, v4

    add-int/2addr v3, v4

    .line 780
    const/16 v4, 0xb

    shl-int/lit8 v3, v3, 0x1

    or-int/2addr v2, v3

    aput v2, p1, v4

    .line 781
    return-void

    :cond_219
    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 926
    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 927
    long-to-int v2, v0

    aput v2, p4, p5

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

    .line 929
    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 930
    add-int/lit8 v2, p5, 0x1

    long-to-int v3, v0

    aput v3, p4, v2

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

    .line 932
    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 933
    add-int/lit8 v2, p5, 0x2

    long-to-int v3, v0

    aput v3, p4, v2

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

    .line 935
    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 936
    add-int/lit8 v2, p5, 0x3

    long-to-int v3, v0

    aput v3, p4, v2

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

    .line 938
    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 939
    add-int/lit8 v2, p5, 0x4

    long-to-int v3, v0

    aput v3, p4, v2

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

    .line 941
    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 942
    add-int/lit8 v2, p5, 0x5

    long-to-int v3, v0

    aput v3, p4, v2

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

    .line 944
    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 902
    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 903
    long-to-int v2, v0

    aput v2, p2, v9

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

    .line 905
    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 906
    long-to-int v2, v0

    aput v2, p2, v10

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

    .line 908
    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 909
    long-to-int v2, v0

    aput v2, p2, v11

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

    .line 911
    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 912
    const/4 v2, 0x3

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 914
    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 915
    const/4 v2, 0x4

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 917
    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 918
    const/4 v2, 0x5

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 920
    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 950
    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 951
    long-to-int v2, v0

    aput v2, p2, v9

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

    .line 953
    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 954
    long-to-int v2, v0

    aput v2, p2, v10

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

    .line 956
    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 957
    long-to-int v2, v0

    aput v2, p2, v11

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

    .line 959
    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 960
    const/4 v2, 0x3

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 962
    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 963
    const/4 v2, 0x4

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 965
    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 966
    const/4 v2, 0x5

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 968
    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 998
    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 999
    long-to-int v2, v0

    aput v2, p2, p3

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

    .line 1001
    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 1002
    add-int/lit8 v2, p3, 0x1

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 1004
    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 1005
    add-int/lit8 v2, p3, 0x2

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 1007
    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 1008
    add-int/lit8 v2, p3, 0x3

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 1010
    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 1011
    add-int/lit8 v2, p3, 0x4

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 1013
    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 1014
    add-int/lit8 v2, p3, 0x5

    long-to-int v3, v0

    aput v3, p2, v2

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

    .line 1016
    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 974
    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 975
    long-to-int v2, v0

    aput v2, p1, v9

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

    .line 977
    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 978
    long-to-int v2, v0

    aput v2, p1, v10

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

    .line 980
    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 981
    long-to-int v2, v0

    aput v2, p1, v11

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

    .line 983
    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 984
    const/4 v2, 0x3

    long-to-int v3, v0

    aput v3, p1, v2

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

    .line 986
    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 987
    const/4 v2, 0x4

    long-to-int v3, v0

    aput v3, p1, v2

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

    .line 989
    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 990
    const/4 v2, 0x5

    long-to-int v3, v0

    aput v3, p1, v2

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

    .line 992
    long-to-int v0, v0

    return v0
.end method

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

    .prologue
    .line 1021
    const/16 v0, 0x18

    new-array v1, v0, [B

    .line 1022
    const/4 v0, 0x0

    :goto_5
    const/4 v2, 0x6

    if-ge v0, v2, :cond_16

    .line 1024
    aget v2, p0, v0

    .line 1025
    if-eqz v2, :cond_13

    .line 1027
    rsub-int/lit8 v3, v0, 0x5

    shl-int/lit8 v3, v3, 0x2

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

    .line 1022
    :cond_13
    add-int/lit8 v0, v0, 0x1

    goto :goto_5

    .line 1030
    :cond_16
    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 1035
    const/16 v0, 0x18

    new-array v1, v0, [B

    .line 1036
    const/4 v0, 0x0

    :goto_5
    const/4 v2, 0x3

    if-ge v0, v2, :cond_1a

    .line 1038
    aget-wide v2, p0, v0

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

    cmp-long v4, v2, v4

    if-eqz v4, :cond_17

    .line 1041
    rsub-int/lit8 v4, v0, 0x2

    shl-int/lit8 v4, v4, 0x3

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

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

    goto :goto_5

    .line 1044
    :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 1049
    aput v1, p0, v1

    .line 1050
    const/4 v0, 0x1

    aput v1, p0, v0

    .line 1051
    const/4 v0, 0x2

    aput v1, p0, v0

    .line 1052
    const/4 v0, 0x3

    aput v1, p0, v0

    .line 1053
    const/4 v0, 0x4

    aput v1, p0, v0

    .line 1054
    const/4 v0, 0x5

    aput v1, p0, v0

    .line 1055
    return-void
.end method