g.smali

.class public final Lcom/subgraph/orchid/crypto/g;
.super Ljava/lang/Object;
.source "Curve25519.java"


# static fields
.field private static bFQ:[B

.field private static bFR:[I


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

    .prologue
    const/16 v1, 0x20

    .line 38
    new-array v0, v1, [B

    fill-array-data v0, :array_12

    sput-object v0, Lcom/subgraph/orchid/crypto/g;->bFQ:[B

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

    fill-array-data v0, :array_26

    sput-object v0, Lcom/subgraph/orchid/crypto/g;->bFR:[I

    return-void

    .line 38
    nop

    :array_12
    .array-data 1
        0x9t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
        0x0t
    .end array-data

    .line 39
    :array_26
    .array-data 4
        0x13
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x0
        0x80
    .end array-data
.end method

.method public static a([B[B[B)I
    .registers 39

    .prologue
    .line 445
    const/16 v5, 0x60

    new-array v0, v5, [I

    move-object/from16 v22, v0

    .line 446
    const/16 v5, 0x20

    new-array v0, v5, [B

    move-object/from16 v25, v0

    .line 448
    const/4 v5, 0x0

    :goto_d
    const/16 v6, 0x20

    if-ge v5, v6, :cond_18

    .line 449
    aget-byte v6, p1, v5

    aput-byte v6, v25, v5

    .line 448
    add-int/lit8 v5, v5, 0x1

    goto :goto_d

    .line 451
    :cond_18
    const/4 v5, 0x0

    aget-byte v6, v25, v5

    and-int/lit16 v6, v6, 0xf8

    int-to-byte v6, v6

    aput-byte v6, v25, v5

    .line 452
    const/16 v5, 0x1f

    aget-byte v6, v25, v5

    and-int/lit8 v6, v6, 0x7f

    int-to-byte v6, v6

    aput-byte v6, v25, v5

    .line 453
    const/16 v5, 0x1f

    aget-byte v6, v25, v5

    or-int/lit8 v6, v6, 0x40

    int-to-byte v6, v6

    aput-byte v6, v25, v5

    .line 455
    const/4 v5, 0x0

    :goto_33
    const/16 v6, 0x20

    if-ge v5, v6, :cond_40

    .line 456
    aget-byte v6, p2, v5

    and-int/lit16 v6, v6, 0xff

    aput v6, v22, v5

    .line 455
    add-int/lit8 v5, v5, 0x1

    goto :goto_33

    .line 1209
    :cond_40
    const/16 v5, 0x40

    new-array v0, v5, [I

    move-object/from16 v26, v0

    .line 1210
    const/16 v5, 0x40

    new-array v0, v5, [I

    move-object/from16 v27, v0

    .line 1211
    const/16 v5, 0x40

    new-array v0, v5, [I

    move-object/from16 v28, v0

    .line 1212
    const/16 v5, 0x40

    new-array v0, v5, [I

    move-object/from16 v29, v0

    .line 1213
    const/16 v5, 0x40

    new-array v0, v5, [I

    move-object/from16 v30, v0

    .line 1214
    const/16 v5, 0x40

    new-array v0, v5, [I

    move-object/from16 v31, v0

    .line 1215
    const/16 v5, 0x40

    new-array v9, v5, [I

    .line 1216
    const/16 v5, 0x40

    new-array v7, v5, [I

    .line 1217
    const/16 v5, 0x40

    new-array v12, v5, [I

    .line 1218
    const/16 v5, 0x40

    new-array v5, v5, [I

    .line 1219
    const/16 v6, 0x40

    new-array v0, v6, [I

    move-object/from16 v32, v0

    .line 1220
    const/16 v6, 0x20

    new-array v0, v6, [I

    move-object/from16 v20, v0

    .line 1221
    const/16 v6, 0x20

    new-array v0, v6, [I

    move-object/from16 v33, v0

    .line 1222
    const/16 v6, 0x20

    new-array v0, v6, [I

    move-object/from16 v34, v0

    .line 1223
    const/16 v6, 0x20

    new-array v0, v6, [I

    move-object/from16 v17, v0

    .line 1225
    const/4 v6, 0x0

    :goto_93
    const/16 v8, 0x20

    if-ge v6, v8, :cond_9e

    .line 1226
    aget v8, v22, v6

    aput v8, v26, v6

    .line 1225
    add-int/lit8 v6, v6, 0x1

    goto :goto_93

    .line 1228
    :cond_9e
    const/16 v6, 0x20

    const/4 v8, 0x1

    aput v8, v26, v6

    .line 1230
    const/16 v6, 0x21

    :goto_a5
    const/16 v8, 0x40

    if-ge v6, v8, :cond_af

    .line 1231
    const/4 v8, 0x0

    aput v8, v26, v6

    .line 1230
    add-int/lit8 v6, v6, 0x1

    goto :goto_a5

    .line 1233
    :cond_af
    const/4 v6, 0x0

    const/4 v8, 0x1

    aput v8, v27, v6

    .line 1235
    const/4 v6, 0x1

    :goto_b4
    const/16 v8, 0x40

    if-ge v6, v8, :cond_be

    .line 1236
    const/4 v8, 0x0

    aput v8, v27, v6

    .line 1235
    add-int/lit8 v6, v6, 0x1

    goto :goto_b4

    .line 1243
    :cond_be
    const/16 v6, 0xfe

    move/from16 v24, v6

    :goto_c2
    if-ltz v24, :cond_1be

    .line 1245
    div-int/lit8 v6, v24, 0x8

    aget-byte v6, v25, v6

    and-int/lit16 v6, v6, 0xff

    and-int/lit8 v8, v24, 0x7

    ushr-int/2addr v6, v8

    .line 1246
    and-int/lit8 v35, v6, 0x1

    .line 1247
    move-object/from16 v0, v28

    move-object/from16 v1, v29

    move-object/from16 v2, v27

    move-object/from16 v3, v26

    move/from16 v4, v35

    invoke-static {v0, v1, v2, v3, v4}, Lcom/subgraph/orchid/crypto/g;->a([I[I[I[II)V

    .line 1248
    const/16 v6, 0x20

    move-object/from16 v0, v28

    move-object/from16 v1, v28

    invoke-static {v9, v0, v1, v6}, Lcom/subgraph/orchid/crypto/g;->a([I[I[II)V

    .line 1249
    const/16 v6, 0x20

    move-object/from16 v0, v28

    move-object/from16 v1, v28

    invoke-static {v9, v6, v0, v1}, Lcom/subgraph/orchid/crypto/g;->a([II[I[I)V

    .line 1250
    const/16 v6, 0x20

    move-object/from16 v0, v29

    move-object/from16 v1, v29

    invoke-static {v7, v0, v1, v6}, Lcom/subgraph/orchid/crypto/g;->a([I[I[II)V

    .line 1251
    const/16 v6, 0x20

    move-object/from16 v0, v29

    move-object/from16 v1, v29

    invoke-static {v7, v6, v0, v1}, Lcom/subgraph/orchid/crypto/g;->a([II[I[I)V

    .line 1252
    const/4 v6, 0x0

    const/4 v8, 0x0

    invoke-static {v12, v6, v9, v8}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 1253
    const/16 v6, 0x20

    const/16 v8, 0x20

    invoke-static {v12, v6, v9, v8}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 1254
    const/4 v6, 0x0

    const/4 v8, 0x0

    const/16 v10, 0x20

    invoke-static/range {v5 .. v10}, Lcom/subgraph/orchid/crypto/g;->a([II[II[II)V

    .line 1255
    const/16 v6, 0x20

    const/16 v8, 0x20

    const/4 v10, 0x0

    invoke-static/range {v5 .. v10}, Lcom/subgraph/orchid/crypto/g;->a([II[II[II)V

    .line 1256
    const/16 v6, 0x20

    move-object/from16 v0, v32

    invoke-static {v0, v5, v5, v6}, Lcom/subgraph/orchid/crypto/g;->a([I[I[II)V

    .line 1257
    const/16 v6, 0x20

    move-object/from16 v0, v32

    invoke-static {v0, v6, v5, v5}, Lcom/subgraph/orchid/crypto/g;->a([II[I[I)V

    .line 1258
    const/4 v6, 0x0

    const/16 v8, 0x20

    move-object/from16 v0, v20

    move-object/from16 v1, v32

    invoke-static {v0, v6, v1, v8}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 1259
    const/4 v6, 0x0

    move-object/from16 v0, v33

    invoke-static {v0, v6, v12, v12}, Lcom/subgraph/orchid/crypto/g;->a([II[I[I)V

    .line 2143
    const/4 v6, 0x0

    .line 2145
    const/4 v8, 0x0

    :goto_13b
    const/16 v10, 0x1f

    if-ge v8, v10, :cond_14f

    .line 2147
    const v10, 0x1db41

    aget v11, v33, v8

    mul-int/2addr v10, v11

    add-int/2addr v6, v10

    .line 2148
    and-int/lit16 v10, v6, 0xff

    aput v10, v34, v8

    .line 2149
    ushr-int/lit8 v6, v6, 0x8

    .line 2145
    add-int/lit8 v8, v8, 0x1

    goto :goto_13b

    .line 2152
    :cond_14f
    const v8, 0x1db41

    const/16 v10, 0x1f

    aget v10, v33, v10

    mul-int/2addr v8, v10

    add-int/2addr v6, v8

    .line 2153
    const/16 v8, 0x1f

    and-int/lit8 v10, v6, 0x7f

    aput v10, v34, v8

    .line 2154
    ushr-int/lit8 v6, v6, 0x7

    mul-int/lit8 v6, v6, 0x13

    .line 2156
    const/4 v8, 0x0

    :goto_163
    const/16 v10, 0x1f

    if-ge v8, v10, :cond_173

    .line 2158
    aget v10, v34, v8

    add-int/2addr v6, v10

    .line 2159
    and-int/lit16 v10, v6, 0xff

    aput v10, v34, v8

    .line 2160
    ushr-int/lit8 v6, v6, 0x8

    .line 2156
    add-int/lit8 v8, v8, 0x1

    goto :goto_163

    .line 2163
    :cond_173
    aget v10, v34, v8

    add-int/2addr v6, v10

    .line 2164
    aput v6, v34, v8

    .line 1261
    const/4 v6, 0x0

    move-object/from16 v0, v17

    move-object/from16 v1, v34

    invoke-static {v0, v1, v12, v6}, Lcom/subgraph/orchid/crypto/g;->a([I[I[II)V

    .line 1262
    const/4 v11, 0x0

    const/4 v13, 0x0

    const/16 v15, 0x20

    move-object/from16 v10, v30

    move-object v14, v12

    invoke-static/range {v10 .. v15}, Lcom/subgraph/orchid/crypto/g;->a([II[II[II)V

    .line 1263
    const/16 v14, 0x20

    const/16 v16, 0x0

    const/16 v18, 0x0

    move-object/from16 v13, v30

    move-object/from16 v15, v33

    invoke-static/range {v13 .. v18}, Lcom/subgraph/orchid/crypto/g;->a([II[II[II)V

    .line 1264
    const/4 v6, 0x0

    const/4 v8, 0x0

    move-object/from16 v0, v31

    move-object/from16 v1, v32

    invoke-static {v0, v6, v1, v8}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 1265
    const/16 v19, 0x20

    const/16 v21, 0x0

    const/16 v23, 0x0

    move-object/from16 v18, v31

    invoke-static/range {v18 .. v23}, Lcom/subgraph/orchid/crypto/g;->a([II[II[II)V

    .line 1266
    move-object/from16 v0, v27

    move-object/from16 v1, v26

    move-object/from16 v2, v30

    move-object/from16 v3, v31

    move/from16 v4, v35

    invoke-static {v0, v1, v2, v3, v4}, Lcom/subgraph/orchid/crypto/g;->a([I[I[I[II)V

    .line 1243
    add-int/lit8 v6, v24, -0x1

    move/from16 v24, v6

    goto/16 :goto_c2

    .line 1269
    :cond_1be
    const/4 v5, 0x0

    :goto_1bf
    const/16 v6, 0x40

    if-ge v5, v6, :cond_1ca

    .line 1270
    aget v6, v27, v5

    aput v6, v22, v5

    .line 1269
    add-int/lit8 v5, v5, 0x1

    goto :goto_1bf

    .line 2275
    :cond_1ca
    const/16 v5, 0x20

    new-array v9, v5, [I

    .line 2276
    const/16 v5, 0x20

    new-array v0, v5, [I

    move-object/from16 v18, v0

    .line 2277
    const/16 v5, 0x20

    new-array v5, v5, [I

    .line 2278
    const/16 v6, 0x20

    new-array v14, v6, [I

    .line 2279
    const/16 v6, 0x20

    new-array v0, v6, [I

    move-object/from16 v25, v0

    .line 2280
    const/16 v6, 0x20

    new-array v0, v6, [I

    move-object/from16 v26, v0

    .line 2281
    const/16 v6, 0x20

    new-array v0, v6, [I

    move-object/from16 v27, v0

    .line 2282
    const/16 v6, 0x20

    new-array v0, v6, [I

    move-object/from16 v28, v0

    .line 2283
    const/16 v6, 0x20

    new-array v0, v6, [I

    move-object/from16 v20, v0

    .line 2284
    const/16 v6, 0x20

    new-array v0, v6, [I

    move-object/from16 v24, v0

    .line 2288
    const/4 v6, 0x0

    const/16 v7, 0x20

    move-object/from16 v0, v22

    invoke-static {v9, v6, v0, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2291
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v24

    invoke-static {v0, v6, v9, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2294
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v20

    move-object/from16 v1, v24

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2298
    const/16 v19, 0x0

    const/16 v21, 0x0

    const/16 v23, 0x20

    invoke-static/range {v18 .. v23}, Lcom/subgraph/orchid/crypto/g;->a([II[II[II)V

    .line 2301
    const/4 v6, 0x0

    const/4 v8, 0x0

    const/4 v10, 0x0

    move-object/from16 v7, v18

    invoke-static/range {v5 .. v10}, Lcom/subgraph/orchid/crypto/g;->a([II[II[II)V

    .line 2304
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v20

    invoke-static {v0, v6, v5, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2307
    const/4 v15, 0x0

    const/16 v17, 0x0

    const/16 v19, 0x0

    move-object/from16 v16, v20

    invoke-static/range {v14 .. v19}, Lcom/subgraph/orchid/crypto/g;->a([II[II[II)V

    .line 2310
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v20

    invoke-static {v0, v6, v14, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2313
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v24

    move-object/from16 v1, v20

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2316
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v20

    move-object/from16 v1, v24

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2319
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v24

    move-object/from16 v1, v20

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2322
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v20

    move-object/from16 v1, v24

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2325
    const/4 v11, 0x0

    const/4 v13, 0x0

    const/4 v15, 0x0

    move-object/from16 v10, v25

    move-object/from16 v12, v20

    invoke-static/range {v10 .. v15}, Lcom/subgraph/orchid/crypto/g;->a([II[II[II)V

    .line 2328
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v20

    move-object/from16 v1, v25

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2331
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v24

    move-object/from16 v1, v20

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2334
    const/4 v6, 0x2

    :goto_282
    const/16 v7, 0xa

    if-ge v6, v7, :cond_29b

    .line 2336
    const/4 v7, 0x0

    const/4 v8, 0x0

    move-object/from16 v0, v20

    move-object/from16 v1, v24

    invoke-static {v0, v7, v1, v8}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2337
    const/4 v7, 0x0

    const/4 v8, 0x0

    move-object/from16 v0, v24

    move-object/from16 v1, v20

    invoke-static {v0, v7, v1, v8}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2334
    add-int/lit8 v6, v6, 0x2

    goto :goto_282

    .line 2341
    :cond_29b
    const/4 v7, 0x0

    const/4 v9, 0x0

    const/4 v11, 0x0

    move-object/from16 v6, v26

    move-object/from16 v8, v24

    move-object/from16 v10, v25

    invoke-static/range {v6 .. v11}, Lcom/subgraph/orchid/crypto/g;->a([II[II[II)V

    .line 2344
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v20

    move-object/from16 v1, v26

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2347
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v24

    move-object/from16 v1, v20

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2350
    const/4 v6, 0x2

    :goto_2ba
    const/16 v7, 0x14

    if-ge v6, v7, :cond_2d3

    .line 2352
    const/4 v7, 0x0

    const/4 v8, 0x0

    move-object/from16 v0, v20

    move-object/from16 v1, v24

    invoke-static {v0, v7, v1, v8}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2353
    const/4 v7, 0x0

    const/4 v8, 0x0

    move-object/from16 v0, v24

    move-object/from16 v1, v20

    invoke-static {v0, v7, v1, v8}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2350
    add-int/lit8 v6, v6, 0x2

    goto :goto_2ba

    .line 2357
    :cond_2d3
    const/4 v7, 0x0

    const/4 v9, 0x0

    const/4 v11, 0x0

    move-object/from16 v6, v20

    move-object/from16 v8, v24

    move-object/from16 v10, v26

    invoke-static/range {v6 .. v11}, Lcom/subgraph/orchid/crypto/g;->a([II[II[II)V

    .line 2360
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v24

    move-object/from16 v1, v20

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2363
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v20

    move-object/from16 v1, v24

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2366
    const/4 v6, 0x2

    :goto_2f2
    const/16 v7, 0xa

    if-ge v6, v7, :cond_30b

    .line 2368
    const/4 v7, 0x0

    const/4 v8, 0x0

    move-object/from16 v0, v24

    move-object/from16 v1, v20

    invoke-static {v0, v7, v1, v8}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2369
    const/4 v7, 0x0

    const/4 v8, 0x0

    move-object/from16 v0, v20

    move-object/from16 v1, v24

    invoke-static {v0, v7, v1, v8}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2366
    add-int/lit8 v6, v6, 0x2

    goto :goto_2f2

    .line 2373
    :cond_30b
    const/4 v7, 0x0

    const/4 v9, 0x0

    const/4 v11, 0x0

    move-object/from16 v6, v27

    move-object/from16 v8, v20

    move-object/from16 v10, v25

    invoke-static/range {v6 .. v11}, Lcom/subgraph/orchid/crypto/g;->a([II[II[II)V

    .line 2376
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v20

    move-object/from16 v1, v27

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2379
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v24

    move-object/from16 v1, v20

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2382
    const/4 v6, 0x2

    :goto_32a
    const/16 v7, 0x32

    if-ge v6, v7, :cond_343

    .line 2384
    const/4 v7, 0x0

    const/4 v8, 0x0

    move-object/from16 v0, v20

    move-object/from16 v1, v24

    invoke-static {v0, v7, v1, v8}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2385
    const/4 v7, 0x0

    const/4 v8, 0x0

    move-object/from16 v0, v24

    move-object/from16 v1, v20

    invoke-static {v0, v7, v1, v8}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2382
    add-int/lit8 v6, v6, 0x2

    goto :goto_32a

    .line 2389
    :cond_343
    const/4 v7, 0x0

    const/4 v9, 0x0

    const/4 v11, 0x0

    move-object/from16 v6, v28

    move-object/from16 v8, v24

    move-object/from16 v10, v27

    invoke-static/range {v6 .. v11}, Lcom/subgraph/orchid/crypto/g;->a([II[II[II)V

    .line 2392
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v24

    move-object/from16 v1, v28

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2395
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v20

    move-object/from16 v1, v24

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2398
    const/4 v6, 0x2

    :goto_362
    const/16 v7, 0x64

    if-ge v6, v7, :cond_37b

    .line 2400
    const/4 v7, 0x0

    const/4 v8, 0x0

    move-object/from16 v0, v24

    move-object/from16 v1, v20

    invoke-static {v0, v7, v1, v8}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2401
    const/4 v7, 0x0

    const/4 v8, 0x0

    move-object/from16 v0, v20

    move-object/from16 v1, v24

    invoke-static {v0, v7, v1, v8}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2398
    add-int/lit8 v6, v6, 0x2

    goto :goto_362

    .line 2405
    :cond_37b
    const/4 v7, 0x0

    const/4 v9, 0x0

    const/4 v11, 0x0

    move-object/from16 v6, v24

    move-object/from16 v8, v20

    move-object/from16 v10, v28

    invoke-static/range {v6 .. v11}, Lcom/subgraph/orchid/crypto/g;->a([II[II[II)V

    .line 2408
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v20

    move-object/from16 v1, v24

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2411
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v24

    move-object/from16 v1, v20

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2414
    const/4 v6, 0x2

    :goto_39a
    const/16 v7, 0x32

    if-ge v6, v7, :cond_3b3

    .line 2416
    const/4 v7, 0x0

    const/4 v8, 0x0

    move-object/from16 v0, v20

    move-object/from16 v1, v24

    invoke-static {v0, v7, v1, v8}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2417
    const/4 v7, 0x0

    const/4 v8, 0x0

    move-object/from16 v0, v24

    move-object/from16 v1, v20

    invoke-static {v0, v7, v1, v8}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2414
    add-int/lit8 v6, v6, 0x2

    goto :goto_39a

    .line 2421
    :cond_3b3
    const/4 v7, 0x0

    const/4 v9, 0x0

    const/4 v11, 0x0

    move-object/from16 v6, v20

    move-object/from16 v8, v24

    move-object/from16 v10, v27

    invoke-static/range {v6 .. v11}, Lcom/subgraph/orchid/crypto/g;->a([II[II[II)V

    .line 2424
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v24

    move-object/from16 v1, v20

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2427
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v20

    move-object/from16 v1, v24

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2430
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v24

    move-object/from16 v1, v20

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2433
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v20

    move-object/from16 v1, v24

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2436
    const/4 v6, 0x0

    const/4 v7, 0x0

    move-object/from16 v0, v24

    move-object/from16 v1, v20

    invoke-static {v0, v6, v1, v7}, Lcom/subgraph/orchid/crypto/g;->square([II[II)V

    .line 2440
    const/16 v23, 0x20

    const/16 v25, 0x0

    const/16 v27, 0x0

    move-object/from16 v26, v5

    invoke-static/range {v22 .. v27}, Lcom/subgraph/orchid/crypto/g;->a([II[II[II)V

    .line 461
    const/16 v23, 0x40

    const/16 v25, 0x0

    const/16 v27, 0x20

    move-object/from16 v24, v22

    move-object/from16 v26, v22

    invoke-static/range {v22 .. v27}, Lcom/subgraph/orchid/crypto/g;->a([II[II[II)V

    .line 3105
    const/16 v5, 0x20

    new-array v6, v5, [I

    .line 3107
    const/4 v5, 0x0

    :goto_409
    const/16 v7, 0x20

    if-ge v5, v7, :cond_416

    .line 3108
    add-int/lit8 v7, v5, 0x40

    aget v7, v22, v7

    aput v7, v6, v5

    .line 3107
    add-int/lit8 v5, v5, 0x1

    goto :goto_409

    .line 3110
    :cond_416
    sget-object v5, Lcom/subgraph/orchid/crypto/g;->bFR:[I

    .line 3112
    const/4 v7, 0x0

    move-object/from16 v0, v22

    move-object/from16 v1, v22

    invoke-static {v0, v1, v5, v7}, Lcom/subgraph/orchid/crypto/g;->a([I[I[II)V

    .line 3114
    const/16 v5, 0x5f

    aget v5, v22, v5

    ushr-int/lit8 v5, v5, 0x7

    and-int/lit8 v5, v5, 0x1

    neg-int v7, v5

    .line 3116
    const/4 v5, 0x0

    :goto_42a
    const/16 v8, 0x20

    if-ge v5, v8, :cond_440

    .line 3117
    add-int/lit8 v8, v5, 0x40

    aget v9, v22, v8

    aget v10, v6, v5

    add-int/lit8 v11, v5, 0x40

    aget v11, v22, v11

    xor-int/2addr v10, v11

    and-int/2addr v10, v7

    xor-int/2addr v9, v10

    aput v9, v22, v8

    .line 3116
    add-int/lit8 v5, v5, 0x1

    goto :goto_42a

    .line 464
    :cond_440
    const/4 v5, 0x0

    :goto_441
    const/16 v6, 0x20

    if-ge v5, v6, :cond_44f

    .line 465
    add-int/lit8 v6, v5, 0x40

    aget v6, v22, v6

    int-to-byte v6, v6

    aput-byte v6, p0, v5

    .line 464
    add-int/lit8 v5, v5, 0x1

    goto :goto_441

    .line 467
    :cond_44f
    const/4 v5, 0x0

    return v5
.end method

.method private static a([II[II[II)V
    .registers 13

    .prologue
    const/16 v6, 0x20

    const/4 v2, 0x0

    .line 124
    move v3, v2

    :goto_4
    if-ge v3, v6, :cond_36

    move v0, v2

    move v1, v2

    .line 128
    :goto_8
    if-gt v1, v3, :cond_18

    .line 129
    add-int v4, p3, v1

    aget v4, p2, v4

    add-int v5, p5, v3

    sub-int/2addr v5, v1

    aget v5, p4, v5

    mul-int/2addr v4, v5

    add-int/2addr v0, v4

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

    goto :goto_8

    .line 131
    :cond_18
    add-int/lit8 v1, v3, 0x1

    :goto_1a
    if-ge v1, v6, :cond_2e

    .line 132
    add-int v4, p3, v1

    aget v4, p2, v4

    mul-int/lit8 v4, v4, 0x26

    add-int v5, p5, v3

    add-int/lit8 v5, v5, 0x20

    sub-int/2addr v5, v1

    aget v5, p4, v5

    mul-int/2addr v4, v5

    add-int/2addr v0, v4

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

    goto :goto_1a

    .line 134
    :cond_2e
    add-int v1, p1, v3

    aput v0, p0, v1

    .line 124
    add-int/lit8 v0, v3, 0x1

    move v3, v0

    goto :goto_4

    .line 137
    :cond_36
    invoke-static {p0, p1}, Lcom/subgraph/orchid/crypto/g;->b([II)V

    .line 138
    return-void
.end method

.method private static a([II[I[I)V
    .registers 9

    .prologue
    const/16 v4, 0x1f

    .line 64
    const/16 v1, 0xda

    .line 66
    const/4 v0, 0x0

    :goto_5
    if-ge v0, v4, :cond_1e

    .line 68
    aget v2, p2, v0

    const v3, 0xff00

    add-int/2addr v2, v3

    add-int/lit8 v3, v0, 0x20

    aget v3, p3, v3

    sub-int/2addr v2, v3

    add-int/2addr v1, v2

    .line 69
    add-int v2, p1, v0

    and-int/lit16 v3, v1, 0xff

    aput v3, p0, v2

    .line 70
    ushr-int/lit8 v1, v1, 0x8

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

    goto :goto_5

    .line 73
    :cond_1e
    aget v0, p2, v4

    const/16 v2, 0x3f

    aget v2, p3, v2

    sub-int/2addr v0, v2

    add-int/2addr v0, v1

    .line 74
    add-int/lit8 v1, p1, 0x1f

    aput v0, p0, v1

    .line 75
    return-void
.end method

.method private static a([I[I[II)V
    .registers 9

    .prologue
    const/4 v0, 0x0

    const/16 v4, 0x1f

    .line 49
    move v1, v0

    .line 51
    :goto_4
    if-ge v0, v4, :cond_17

    .line 53
    aget v2, p1, v0

    add-int v3, p3, v0

    aget v3, p2, v3

    add-int/2addr v2, v3

    add-int/2addr v1, v2

    .line 54
    and-int/lit16 v2, v1, 0xff

    aput v2, p0, v0

    .line 55
    ushr-int/lit8 v1, v1, 0x8

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

    goto :goto_4

    .line 58
    :cond_17
    aget v0, p1, v4

    add-int/lit8 v2, p3, 0x1f

    aget v2, p2, v2

    add-int/2addr v0, v2

    add-int/2addr v0, v1

    .line 59
    aput v0, p0, v4

    .line 60
    return-void
.end method

.method private static a([I[I[I[II)V
    .registers 9

    .prologue
    .line 197
    add-int/lit8 v1, p4, -0x1

    .line 199
    const/4 v0, 0x0

    :goto_3
    const/16 v2, 0x40

    if-ge v0, v2, :cond_1a

    .line 201
    aget v2, p2, v0

    aget v3, p3, v0

    xor-int/2addr v2, v3

    and-int/2addr v2, v1

    .line 202
    aget v3, p3, v0

    xor-int/2addr v3, v2

    aput v3, p0, v0

    .line 203
    aget v3, p2, v0

    xor-int/2addr v2, v3

    aput v2, p1, v0

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

    goto :goto_3

    .line 205
    :cond_1a
    return-void
.end method

.method private static b([II)V
    .registers 8

    .prologue
    const/16 v5, 0x1f

    const/4 v0, 0x0

    .line 79
    move v1, v0

    move v2, v0

    .line 81
    :goto_5
    if-ge v1, v5, :cond_17

    .line 83
    add-int v3, p1, v1

    aget v3, p0, v3

    add-int/2addr v2, v3

    .line 84
    add-int v3, p1, v1

    and-int/lit16 v4, v2, 0xff

    aput v4, p0, v3

    .line 85
    ushr-int/lit8 v2, v2, 0x8

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

    goto :goto_5

    .line 88
    :cond_17
    add-int/lit8 v1, p1, 0x1f

    aget v1, p0, v1

    add-int/2addr v1, v2

    .line 89
    add-int/lit8 v2, p1, 0x1f

    and-int/lit8 v3, v1, 0x7f

    aput v3, p0, v2

    .line 90
    ushr-int/lit8 v1, v1, 0x7

    mul-int/lit8 v1, v1, 0x13

    .line 92
    :goto_26
    if-ge v0, v5, :cond_38

    .line 94
    add-int v2, p1, v0

    aget v2, p0, v2

    add-int/2addr v1, v2

    .line 95
    add-int v2, p1, v0

    and-int/lit16 v3, v1, 0xff

    aput v3, p0, v2

    .line 96
    ushr-int/lit8 v1, v1, 0x8

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

    goto :goto_26

    .line 99
    :cond_38
    add-int/lit8 v0, p1, 0x1f

    aget v0, p0, v0

    add-int/2addr v0, v1

    .line 100
    add-int/lit8 v1, p1, 0x1f

    aput v0, p0, v1

    .line 101
    return-void
.end method

.method public static f([B[B)I
    .registers 3

    .prologue
    .line 43
    sget-object v0, Lcom/subgraph/orchid/crypto/g;->bFQ:[B

    .line 44
    invoke-static {p0, p1, v0}, Lcom/subgraph/orchid/crypto/g;->a([B[B[B)I

    move-result v0

    return v0
.end method

.method private static square([II[II)V
    .registers 10

    .prologue
    const/4 v2, 0x0

    .line 171
    move v3, v2

    :goto_2
    const/16 v0, 0x20

    if-ge v3, v0, :cond_5f

    move v0, v2

    move v1, v2

    .line 175
    :goto_8
    sub-int v4, v3, v1

    if-ge v1, v4, :cond_1a

    .line 176
    add-int v4, p3, v1

    aget v4, p2, v4

    add-int v5, p3, v3

    sub-int/2addr v5, v1

    aget v5, p2, v5

    mul-int/2addr v4, v5

    add-int/2addr v0, v4

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

    goto :goto_8

    .line 178
    :cond_1a
    add-int/lit8 v1, v3, 0x1

    :goto_1c
    add-int/lit8 v4, v3, 0x20

    sub-int/2addr v4, v1

    if-ge v1, v4, :cond_33

    .line 179
    add-int v4, p3, v1

    aget v4, p2, v4

    mul-int/lit8 v4, v4, 0x26

    add-int v5, p3, v3

    add-int/lit8 v5, v5, 0x20

    sub-int/2addr v5, v1

    aget v5, p2, v5

    mul-int/2addr v4, v5

    add-int/2addr v0, v4

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

    goto :goto_1c

    .line 181
    :cond_33
    shl-int/lit8 v0, v0, 0x1

    .line 183
    and-int/lit8 v1, v3, 0x1

    if-nez v1, :cond_57

    .line 185
    div-int/lit8 v1, v3, 0x2

    add-int/2addr v1, p3

    aget v1, p2, v1

    div-int/lit8 v4, v3, 0x2

    add-int/2addr v4, p3

    aget v4, p2, v4

    mul-int/2addr v1, v4

    add-int/2addr v0, v1

    .line 186
    div-int/lit8 v1, v3, 0x2

    add-int/2addr v1, p3

    add-int/lit8 v1, v1, 0x10

    aget v1, p2, v1

    mul-int/lit8 v1, v1, 0x26

    div-int/lit8 v4, v3, 0x2

    add-int/2addr v4, p3

    add-int/lit8 v4, v4, 0x10

    aget v4, p2, v4

    mul-int/2addr v1, v4

    add-int/2addr v0, v1

    .line 189
    :cond_57
    add-int v1, p1, v3

    aput v0, p0, v1

    .line 171
    add-int/lit8 v0, v3, 0x1

    move v3, v0

    goto :goto_2

    .line 192
    :cond_5f
    invoke-static {p0, p1}, Lcom/subgraph/orchid/crypto/g;->b([II)V

    .line 193
    return-void
.end method