SCrypt.smali
.class public Lcom/lambdaworks/crypto/SCrypt;
.super Ljava/lang/Object;
.source "SCrypt.java"
# static fields
.field private static final Nk:Z
# direct methods
.method static constructor <clinit>()V
.registers 4
.prologue
.line 3022
const-string v0, "com.lambdaworks.jni.loader"
invoke-static {v0}, Ljava/lang/System;->getProperty(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 3024
if-eqz v0, :cond_4f
.line 3025
const-string v1, "sys"
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_1e
new-instance v0, Lcom/lambdaworks/jni/d;
invoke-direct {v0}, Lcom/lambdaworks/jni/d;-><init>()V
.line 28
:goto_15
const-string v1, "scrypt"
invoke-interface {v0, v1}, Lcom/lambdaworks/jni/b;->fR(Ljava/lang/String;)Z
move-result v0
sput-boolean v0, Lcom/lambdaworks/crypto/SCrypt;->Nk:Z
.line 29
return-void
.line 3026
:cond_1e
const-string v1, "nil"
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_2c
new-instance v0, Lcom/lambdaworks/jni/c;
invoke-direct {v0}, Lcom/lambdaworks/jni/c;-><init>()V
goto :goto_15
.line 3027
:cond_2c
const-string v1, "jar"
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_3a
new-instance v0, Lcom/lambdaworks/jni/a;
invoke-direct {v0}, Lcom/lambdaworks/jni/a;-><init>()V
goto :goto_15
.line 3028
:cond_3a
new-instance v1, Ljava/lang/IllegalStateException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "Illegal value for com.lambdaworks.jni.loader: "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v1
.line 3031
:cond_4f
const-string v0, "java.vm.specification.name"
invoke-static {v0}, Ljava/lang/System;->getProperty(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 3032
const-string v1, "Java"
invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_63
new-instance v0, Lcom/lambdaworks/jni/a;
invoke-direct {v0}, Lcom/lambdaworks/jni/a;-><init>()V
goto :goto_15
:cond_63
new-instance v0, Lcom/lambdaworks/jni/d;
invoke-direct {v0}, Lcom/lambdaworks/jni/d;-><init>()V
goto :goto_15
.end method
.method public constructor <init>()V
.registers 1
.prologue
.line 23
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method private static a([BIII[B[B)V
.registers 12
.prologue
const/4 v1, 0x0
.line 109
shl-int/lit8 v2, p2, 0x7
.line 112
shl-int/lit8 v0, p2, 0x7
invoke-static {p0, p1, p5, v1, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
move v0, v1
.line 114
:goto_9
if-ge v0, p3, :cond_19
.line 115
shl-int/lit8 v3, p2, 0x7
mul-int/2addr v3, v0
shl-int/lit8 v4, p2, 0x7
invoke-static {p5, v1, p4, v3, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 116
invoke-static {p5, v2, p2}, Lcom/lambdaworks/crypto/SCrypt;->l([BII)V
.line 114
add-int/lit8 v0, v0, 0x1
goto :goto_9
:cond_19
move v0, v1
.line 119
:goto_1a
if-ge v0, p3, :cond_54
.line 1205
mul-int/lit8 v3, p2, 0x2
add-int/lit8 v3, v3, -0x1
shl-int/lit8 v3, v3, 0x6
add-int/lit8 v3, v3, 0x0
.line 1207
aget-byte v4, p5, v3
and-int/lit16 v4, v4, 0xff
.line 1208
add-int/lit8 v5, v3, 0x1
aget-byte v5, p5, v5
and-int/lit16 v5, v5, 0xff
shl-int/lit8 v5, v5, 0x8
or-int/2addr v4, v5
.line 1209
add-int/lit8 v5, v3, 0x2
aget-byte v5, p5, v5
and-int/lit16 v5, v5, 0xff
shl-int/lit8 v5, v5, 0x10
or-int/2addr v4, v5
.line 1210
add-int/lit8 v3, v3, 0x3
aget-byte v3, p5, v3
and-int/lit16 v3, v3, 0xff
shl-int/lit8 v3, v3, 0x18
or-int/2addr v3, v4
.line 120
add-int/lit8 v4, p3, -0x1
and-int/2addr v3, v4
.line 121
shl-int/lit8 v4, p2, 0x7
mul-int/2addr v3, v4
shl-int/lit8 v4, p2, 0x7
invoke-static {p4, v3, p5, v4}, Lcom/lambdaworks/crypto/SCrypt;->a([BI[BI)V
.line 122
invoke-static {p5, v2, p2}, Lcom/lambdaworks/crypto/SCrypt;->l([BII)V
.line 119
add-int/lit8 v0, v0, 0x1
goto :goto_1a
.line 125
:cond_54
shl-int/lit8 v0, p2, 0x7
invoke-static {p5, v1, p0, p1, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 126
return-void
.end method
.method private static a([BI[BI)V
.registers 7
.prologue
.line 197
const/4 v0, 0x0
:goto_1
if-ge v0, p3, :cond_10
.line 198
aget-byte v1, p2, v0
add-int v2, p1, v0
aget-byte v2, p0, v2
xor-int/2addr v1, v2
int-to-byte v1, v1
aput-byte v1, p2, v0
.line 197
add-int/lit8 v0, v0, 0x1
goto :goto_1
.line 200
:cond_10
return-void
.end method
.method public static a([B[BIIII)[B
.registers 15
.prologue
const v1, 0xffffff
.line 48
sget-boolean v0, Lcom/lambdaworks/crypto/SCrypt;->Nk:Z
if-eqz v0, :cond_c
invoke-static/range {p0 .. p5}, Lcom/lambdaworks/crypto/SCrypt;->scryptN([B[BIIII)[B
move-result-object v0
:goto_b
return-object v0
.line 1081
:cond_c
const/4 v0, 0x2
if-lt p2, v0, :cond_14
add-int/lit8 v0, p2, -0x1
and-int/2addr v0, p2
if-eqz v0, :cond_1c
:cond_14
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "N must be a power of 2 greater than 1"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 1083
:cond_1c
div-int v0, v1, p3
if-le p2, v0, :cond_28
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "Parameter N is too large"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 1084
:cond_28
div-int v0, v1, p4
if-le p3, v0, :cond_34
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "Parameter r is too large"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 1086
:cond_34
const-string v0, "HmacSHA256"
invoke-static {v0}, Ljavax/crypto/Mac;->getInstance(Ljava/lang/String;)Ljavax/crypto/Mac;
move-result-object v8
.line 1087
new-instance v0, Ljavax/crypto/spec/SecretKeySpec;
const-string v1, "HmacSHA256"
invoke-direct {v0, p0, v1}, Ljavax/crypto/spec/SecretKeySpec;-><init>([BLjava/lang/String;)V
invoke-virtual {v8, v0}, Ljavax/crypto/Mac;->init(Ljava/security/Key;)V
.line 1089
new-array v6, p5, [B
.line 1091
shl-int/lit8 v0, p3, 0x7
mul-int/2addr v0, p4
new-array v0, v0, [B
.line 1092
shl-int/lit8 v1, p3, 0x8
new-array v5, v1, [B
.line 1093
shl-int/lit8 v1, p3, 0x7
mul-int/2addr v1, p2
new-array v4, v1, [B
.line 1096
shl-int/lit8 v1, p4, 0x7
mul-int/2addr v1, p3
invoke-static {v8, p1, v0, v1}, Lcom/lambdaworks/crypto/a;->a(Ljavax/crypto/Mac;[B[BI)V
.line 1098
const/4 v1, 0x0
move v7, v1
:goto_5c
if-ge v7, p4, :cond_6a
.line 1099
shl-int/lit8 v1, v7, 0x7
mul-int/2addr v1, p3
move v2, p3
move v3, p2
invoke-static/range {v0 .. v5}, Lcom/lambdaworks/crypto/SCrypt;->a([BIII[B[B)V
.line 1098
add-int/lit8 v1, v7, 0x1
move v7, v1
goto :goto_5c
.line 1102
:cond_6a
invoke-static {v8, v0, v6, p5}, Lcom/lambdaworks/crypto/a;->a(Ljavax/crypto/Mac;[B[BI)V
move-object v0, v6
.line 48
goto :goto_b
.end method
.method private static aF(II)I
.registers 4
.prologue
.line 150
shl-int v0, p0, p1
rsub-int/lit8 v1, p1, 0x20
ushr-int v1, p0, v1
or-int/2addr v0, v1
return v0
.end method
.method private static l([BII)V
.registers 12
.prologue
.line 129
const/16 v0, 0x40
new-array v2, v0, [B
.line 132
mul-int/lit8 v0, p2, 0x2
add-int/lit8 v0, v0, -0x1
shl-int/lit8 v0, v0, 0x6
add-int/lit8 v0, v0, 0x0
const/4 v1, 0x0
const/16 v3, 0x40
invoke-static {p0, v0, v2, v1, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 134
const/4 v0, 0x0
move v1, v0
:goto_14
mul-int/lit8 v0, p2, 0x2
if-ge v1, v0, :cond_347
.line 135
shl-int/lit8 v0, v1, 0x6
const/16 v3, 0x40
invoke-static {p0, v0, v2, v3}, Lcom/lambdaworks/crypto/SCrypt;->a([BI[BI)V
.line 2154
const/16 v0, 0x10
new-array v3, v0, [I
.line 2155
const/16 v0, 0x10
new-array v4, v0, [I
.line 2158
const/4 v0, 0x0
:goto_28
const/16 v5, 0x10
if-ge v0, v5, :cond_64
.line 2159
shl-int/lit8 v5, v0, 0x2
aget-byte v5, v2, v5
and-int/lit16 v5, v5, 0xff
aput v5, v3, v0
.line 2160
aget v5, v3, v0
shl-int/lit8 v6, v0, 0x2
add-int/lit8 v6, v6, 0x1
aget-byte v6, v2, v6
and-int/lit16 v6, v6, 0xff
shl-int/lit8 v6, v6, 0x8
or-int/2addr v5, v6
aput v5, v3, v0
.line 2161
aget v5, v3, v0
shl-int/lit8 v6, v0, 0x2
add-int/lit8 v6, v6, 0x2
aget-byte v6, v2, v6
and-int/lit16 v6, v6, 0xff
shl-int/lit8 v6, v6, 0x10
or-int/2addr v5, v6
aput v5, v3, v0
.line 2162
aget v5, v3, v0
shl-int/lit8 v6, v0, 0x2
add-int/lit8 v6, v6, 0x3
aget-byte v6, v2, v6
and-int/lit16 v6, v6, 0xff
shl-int/lit8 v6, v6, 0x18
or-int/2addr v5, v6
aput v5, v3, v0
.line 2158
add-int/lit8 v0, v0, 0x1
goto :goto_28
.line 2165
:cond_64
const/4 v0, 0x0
const/4 v5, 0x0
const/16 v6, 0x10
invoke-static {v3, v0, v4, v5, v6}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 2167
const/16 v0, 0x8
:goto_6d
if-lez v0, :cond_2fb
.line 2168
const/4 v5, 0x4
aget v6, v4, v5
const/4 v7, 0x0
aget v7, v4, v7
const/16 v8, 0xc
aget v8, v4, v8
add-int/2addr v7, v8
const/4 v8, 0x7
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
const/16 v5, 0x8
aget v6, v4, v5
const/4 v7, 0x4
aget v7, v4, v7
const/4 v8, 0x0
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0x9
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
.line 2169
const/16 v5, 0xc
aget v6, v4, v5
const/16 v7, 0x8
aget v7, v4, v7
const/4 v8, 0x4
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0xd
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
const/4 v5, 0x0
aget v6, v4, v5
const/16 v7, 0xc
aget v7, v4, v7
const/16 v8, 0x8
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0x12
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
.line 2170
const/16 v5, 0x9
aget v6, v4, v5
const/4 v7, 0x5
aget v7, v4, v7
const/4 v8, 0x1
aget v8, v4, v8
add-int/2addr v7, v8
const/4 v8, 0x7
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
const/16 v5, 0xd
aget v6, v4, v5
const/16 v7, 0x9
aget v7, v4, v7
const/4 v8, 0x5
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0x9
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
.line 2171
const/4 v5, 0x1
aget v6, v4, v5
const/16 v7, 0xd
aget v7, v4, v7
const/16 v8, 0x9
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0xd
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
const/4 v5, 0x5
aget v6, v4, v5
const/4 v7, 0x1
aget v7, v4, v7
const/16 v8, 0xd
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0x12
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
.line 2172
const/16 v5, 0xe
aget v6, v4, v5
const/16 v7, 0xa
aget v7, v4, v7
const/4 v8, 0x6
aget v8, v4, v8
add-int/2addr v7, v8
const/4 v8, 0x7
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
const/4 v5, 0x2
aget v6, v4, v5
const/16 v7, 0xe
aget v7, v4, v7
const/16 v8, 0xa
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0x9
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
.line 2173
const/4 v5, 0x6
aget v6, v4, v5
const/4 v7, 0x2
aget v7, v4, v7
const/16 v8, 0xe
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0xd
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
const/16 v5, 0xa
aget v6, v4, v5
const/4 v7, 0x6
aget v7, v4, v7
const/4 v8, 0x2
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0x12
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
.line 2174
const/4 v5, 0x3
aget v6, v4, v5
const/16 v7, 0xf
aget v7, v4, v7
const/16 v8, 0xb
aget v8, v4, v8
add-int/2addr v7, v8
const/4 v8, 0x7
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
const/4 v5, 0x7
aget v6, v4, v5
const/4 v7, 0x3
aget v7, v4, v7
const/16 v8, 0xf
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0x9
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
.line 2175
const/16 v5, 0xb
aget v6, v4, v5
const/4 v7, 0x7
aget v7, v4, v7
const/4 v8, 0x3
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0xd
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
const/16 v5, 0xf
aget v6, v4, v5
const/16 v7, 0xb
aget v7, v4, v7
const/4 v8, 0x7
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0x12
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
.line 2176
const/4 v5, 0x1
aget v6, v4, v5
const/4 v7, 0x0
aget v7, v4, v7
const/4 v8, 0x3
aget v8, v4, v8
add-int/2addr v7, v8
const/4 v8, 0x7
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
const/4 v5, 0x2
aget v6, v4, v5
const/4 v7, 0x1
aget v7, v4, v7
const/4 v8, 0x0
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0x9
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
.line 2177
const/4 v5, 0x3
aget v6, v4, v5
const/4 v7, 0x2
aget v7, v4, v7
const/4 v8, 0x1
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0xd
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
const/4 v5, 0x0
aget v6, v4, v5
const/4 v7, 0x3
aget v7, v4, v7
const/4 v8, 0x2
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0x12
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
.line 2178
const/4 v5, 0x6
aget v6, v4, v5
const/4 v7, 0x5
aget v7, v4, v7
const/4 v8, 0x4
aget v8, v4, v8
add-int/2addr v7, v8
const/4 v8, 0x7
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
const/4 v5, 0x7
aget v6, v4, v5
const/4 v7, 0x6
aget v7, v4, v7
const/4 v8, 0x5
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0x9
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
.line 2179
const/4 v5, 0x4
aget v6, v4, v5
const/4 v7, 0x7
aget v7, v4, v7
const/4 v8, 0x6
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0xd
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
const/4 v5, 0x5
aget v6, v4, v5
const/4 v7, 0x4
aget v7, v4, v7
const/4 v8, 0x7
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0x12
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
.line 2180
const/16 v5, 0xb
aget v6, v4, v5
const/16 v7, 0xa
aget v7, v4, v7
const/16 v8, 0x9
aget v8, v4, v8
add-int/2addr v7, v8
const/4 v8, 0x7
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
const/16 v5, 0x8
aget v6, v4, v5
const/16 v7, 0xb
aget v7, v4, v7
const/16 v8, 0xa
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0x9
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
.line 2181
const/16 v5, 0x9
aget v6, v4, v5
const/16 v7, 0x8
aget v7, v4, v7
const/16 v8, 0xb
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0xd
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
const/16 v5, 0xa
aget v6, v4, v5
const/16 v7, 0x9
aget v7, v4, v7
const/16 v8, 0x8
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0x12
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
.line 2182
const/16 v5, 0xc
aget v6, v4, v5
const/16 v7, 0xf
aget v7, v4, v7
const/16 v8, 0xe
aget v8, v4, v8
add-int/2addr v7, v8
const/4 v8, 0x7
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
const/16 v5, 0xd
aget v6, v4, v5
const/16 v7, 0xc
aget v7, v4, v7
const/16 v8, 0xf
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0x9
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
.line 2183
const/16 v5, 0xe
aget v6, v4, v5
const/16 v7, 0xd
aget v7, v4, v7
const/16 v8, 0xc
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0xd
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
const/16 v5, 0xf
aget v6, v4, v5
const/16 v7, 0xe
aget v7, v4, v7
const/16 v8, 0xd
aget v8, v4, v8
add-int/2addr v7, v8
const/16 v8, 0x12
invoke-static {v7, v8}, Lcom/lambdaworks/crypto/SCrypt;->aF(II)I
move-result v7
xor-int/2addr v6, v7
aput v6, v4, v5
.line 2167
add-int/lit8 v0, v0, -0x2
goto/16 :goto_6d
.line 2186
:cond_2fb
const/4 v0, 0x0
:goto_2fc
const/16 v5, 0x10
if-ge v0, v5, :cond_30a
aget v5, v4, v0
aget v6, v3, v0
add-int/2addr v5, v6
aput v5, v3, v0
add-int/lit8 v0, v0, 0x1
goto :goto_2fc
.line 2188
:cond_30a
const/4 v0, 0x0
:goto_30b
const/16 v4, 0x10
if-ge v0, v4, :cond_339
.line 2189
shl-int/lit8 v4, v0, 0x2
aget v5, v3, v0
int-to-byte v5, v5
aput-byte v5, v2, v4
.line 2190
shl-int/lit8 v4, v0, 0x2
add-int/lit8 v4, v4, 0x1
aget v5, v3, v0
shr-int/lit8 v5, v5, 0x8
int-to-byte v5, v5
aput-byte v5, v2, v4
.line 2191
shl-int/lit8 v4, v0, 0x2
add-int/lit8 v4, v4, 0x2
aget v5, v3, v0
shr-int/lit8 v5, v5, 0x10
int-to-byte v5, v5
aput-byte v5, v2, v4
.line 2192
shl-int/lit8 v4, v0, 0x2
add-int/lit8 v4, v4, 0x3
aget v5, v3, v0
shr-int/lit8 v5, v5, 0x18
aput-byte v5, v2, v4
.line 2188
add-int/lit8 v0, v0, 0x1
goto :goto_30b
.line 137
:cond_339
const/4 v0, 0x0
shl-int/lit8 v3, v1, 0x6
add-int/2addr v3, p1
const/16 v4, 0x40
invoke-static {v2, v0, p0, v3, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 134
add-int/lit8 v0, v1, 0x1
move v1, v0
goto/16 :goto_14
.line 140
:cond_347
const/4 v0, 0x0
:goto_348
if-ge v0, p2, :cond_35b
.line 141
shl-int/lit8 v1, v0, 0x1
shl-int/lit8 v1, v1, 0x6
add-int/2addr v1, p1
shl-int/lit8 v2, v0, 0x6
add-int/lit8 v2, v2, 0x0
const/16 v3, 0x40
invoke-static {p0, v1, p0, v2, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 140
add-int/lit8 v0, v0, 0x1
goto :goto_348
.line 144
:cond_35b
const/4 v0, 0x0
:goto_35c
if-ge v0, p2, :cond_373
.line 145
shl-int/lit8 v1, v0, 0x1
add-int/lit8 v1, v1, 0x1
shl-int/lit8 v1, v1, 0x6
add-int/2addr v1, p1
add-int v2, v0, p2
shl-int/lit8 v2, v2, 0x6
add-int/lit8 v2, v2, 0x0
const/16 v3, 0x40
invoke-static {p0, v1, p0, v2, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 144
add-int/lit8 v0, v0, 0x1
goto :goto_35c
.line 147
:cond_373
return-void
.end method
.method public static native scryptN([B[BIIII)[B
.end method