- Imported from https://github.com/supermegamestre/Project-Real-Resurrection-3 - APKTool decompilation (Smali bytecode) for modding and rebuilding APK - Supports both 32-bit (armeabi-v7a) and 64-bit (arm64-v8a) architectures - Includes full Smali source, resources, and native libraries - Ready to rebuild APK after modifications with apktool b command - Added comprehensive README-apktool.md with modding guide This branch complements the JADX branches: - Use JADX (main/discord-community) to UNDERSTAND code (readable Java) - Use APKTool (this branch) to MODIFY and REBUILD APK (editable Smali) Total: 44,417 files, 538.51 MB Smali source code
1457 lines
24 KiB
Smali
1457 lines
24 KiB
Smali
.class public Lcom/firemonkeys/cloudcellapi/util/Base64;
|
|
.super Ljava/lang/Object;
|
|
.source "SourceFile"
|
|
|
|
|
|
# static fields
|
|
.field static final synthetic $assertionsDisabled:Z = false
|
|
|
|
.field private static final ALPHABET:[B
|
|
|
|
.field private static final DECODABET:[B
|
|
|
|
.field public static final DECODE:Z = false
|
|
|
|
.field public static final ENCODE:Z = true
|
|
|
|
.field private static final EQUALS_SIGN:B = 0x3dt
|
|
|
|
.field private static final EQUALS_SIGN_ENC:B = -0x1t
|
|
|
|
.field private static final NEW_LINE:B = 0xat
|
|
|
|
.field private static final WEBSAFE_ALPHABET:[B
|
|
|
|
.field private static final WEBSAFE_DECODABET:[B
|
|
|
|
.field private static final WHITE_SPACE_ENC:B = -0x5t
|
|
|
|
|
|
# direct methods
|
|
.method static constructor <clinit>()V
|
|
.locals 2
|
|
|
|
const/16 v0, 0x40
|
|
|
|
new-array v1, v0, [B
|
|
|
|
fill-array-data v1, :array_0
|
|
|
|
sput-object v1, Lcom/firemonkeys/cloudcellapi/util/Base64;->ALPHABET:[B
|
|
|
|
new-array v0, v0, [B
|
|
|
|
fill-array-data v0, :array_1
|
|
|
|
sput-object v0, Lcom/firemonkeys/cloudcellapi/util/Base64;->WEBSAFE_ALPHABET:[B
|
|
|
|
const/16 v0, 0x80
|
|
|
|
new-array v1, v0, [B
|
|
|
|
fill-array-data v1, :array_2
|
|
|
|
sput-object v1, Lcom/firemonkeys/cloudcellapi/util/Base64;->DECODABET:[B
|
|
|
|
new-array v0, v0, [B
|
|
|
|
fill-array-data v0, :array_3
|
|
|
|
sput-object v0, Lcom/firemonkeys/cloudcellapi/util/Base64;->WEBSAFE_DECODABET:[B
|
|
|
|
return-void
|
|
|
|
nop
|
|
|
|
:array_0
|
|
.array-data 1
|
|
0x41t
|
|
0x42t
|
|
0x43t
|
|
0x44t
|
|
0x45t
|
|
0x46t
|
|
0x47t
|
|
0x48t
|
|
0x49t
|
|
0x4at
|
|
0x4bt
|
|
0x4ct
|
|
0x4dt
|
|
0x4et
|
|
0x4ft
|
|
0x50t
|
|
0x51t
|
|
0x52t
|
|
0x53t
|
|
0x54t
|
|
0x55t
|
|
0x56t
|
|
0x57t
|
|
0x58t
|
|
0x59t
|
|
0x5at
|
|
0x61t
|
|
0x62t
|
|
0x63t
|
|
0x64t
|
|
0x65t
|
|
0x66t
|
|
0x67t
|
|
0x68t
|
|
0x69t
|
|
0x6at
|
|
0x6bt
|
|
0x6ct
|
|
0x6dt
|
|
0x6et
|
|
0x6ft
|
|
0x70t
|
|
0x71t
|
|
0x72t
|
|
0x73t
|
|
0x74t
|
|
0x75t
|
|
0x76t
|
|
0x77t
|
|
0x78t
|
|
0x79t
|
|
0x7at
|
|
0x30t
|
|
0x31t
|
|
0x32t
|
|
0x33t
|
|
0x34t
|
|
0x35t
|
|
0x36t
|
|
0x37t
|
|
0x38t
|
|
0x39t
|
|
0x2bt
|
|
0x2ft
|
|
.end array-data
|
|
|
|
:array_1
|
|
.array-data 1
|
|
0x41t
|
|
0x42t
|
|
0x43t
|
|
0x44t
|
|
0x45t
|
|
0x46t
|
|
0x47t
|
|
0x48t
|
|
0x49t
|
|
0x4at
|
|
0x4bt
|
|
0x4ct
|
|
0x4dt
|
|
0x4et
|
|
0x4ft
|
|
0x50t
|
|
0x51t
|
|
0x52t
|
|
0x53t
|
|
0x54t
|
|
0x55t
|
|
0x56t
|
|
0x57t
|
|
0x58t
|
|
0x59t
|
|
0x5at
|
|
0x61t
|
|
0x62t
|
|
0x63t
|
|
0x64t
|
|
0x65t
|
|
0x66t
|
|
0x67t
|
|
0x68t
|
|
0x69t
|
|
0x6at
|
|
0x6bt
|
|
0x6ct
|
|
0x6dt
|
|
0x6et
|
|
0x6ft
|
|
0x70t
|
|
0x71t
|
|
0x72t
|
|
0x73t
|
|
0x74t
|
|
0x75t
|
|
0x76t
|
|
0x77t
|
|
0x78t
|
|
0x79t
|
|
0x7at
|
|
0x30t
|
|
0x31t
|
|
0x32t
|
|
0x33t
|
|
0x34t
|
|
0x35t
|
|
0x36t
|
|
0x37t
|
|
0x38t
|
|
0x39t
|
|
0x2dt
|
|
0x5ft
|
|
.end array-data
|
|
|
|
:array_2
|
|
.array-data 1
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x5t
|
|
-0x5t
|
|
-0x9t
|
|
-0x9t
|
|
-0x5t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x5t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
0x3et
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
0x3ft
|
|
0x34t
|
|
0x35t
|
|
0x36t
|
|
0x37t
|
|
0x38t
|
|
0x39t
|
|
0x3at
|
|
0x3bt
|
|
0x3ct
|
|
0x3dt
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x1t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
0x0t
|
|
0x1t
|
|
0x2t
|
|
0x3t
|
|
0x4t
|
|
0x5t
|
|
0x6t
|
|
0x7t
|
|
0x8t
|
|
0x9t
|
|
0xat
|
|
0xbt
|
|
0xct
|
|
0xdt
|
|
0xet
|
|
0xft
|
|
0x10t
|
|
0x11t
|
|
0x12t
|
|
0x13t
|
|
0x14t
|
|
0x15t
|
|
0x16t
|
|
0x17t
|
|
0x18t
|
|
0x19t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
0x1at
|
|
0x1bt
|
|
0x1ct
|
|
0x1dt
|
|
0x1et
|
|
0x1ft
|
|
0x20t
|
|
0x21t
|
|
0x22t
|
|
0x23t
|
|
0x24t
|
|
0x25t
|
|
0x26t
|
|
0x27t
|
|
0x28t
|
|
0x29t
|
|
0x2at
|
|
0x2bt
|
|
0x2ct
|
|
0x2dt
|
|
0x2et
|
|
0x2ft
|
|
0x30t
|
|
0x31t
|
|
0x32t
|
|
0x33t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
.end array-data
|
|
|
|
:array_3
|
|
.array-data 1
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x5t
|
|
-0x5t
|
|
-0x9t
|
|
-0x9t
|
|
-0x5t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x5t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
0x3et
|
|
-0x9t
|
|
-0x9t
|
|
0x34t
|
|
0x35t
|
|
0x36t
|
|
0x37t
|
|
0x38t
|
|
0x39t
|
|
0x3at
|
|
0x3bt
|
|
0x3ct
|
|
0x3dt
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x1t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
0x0t
|
|
0x1t
|
|
0x2t
|
|
0x3t
|
|
0x4t
|
|
0x5t
|
|
0x6t
|
|
0x7t
|
|
0x8t
|
|
0x9t
|
|
0xat
|
|
0xbt
|
|
0xct
|
|
0xdt
|
|
0xet
|
|
0xft
|
|
0x10t
|
|
0x11t
|
|
0x12t
|
|
0x13t
|
|
0x14t
|
|
0x15t
|
|
0x16t
|
|
0x17t
|
|
0x18t
|
|
0x19t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
0x3ft
|
|
-0x9t
|
|
0x1at
|
|
0x1bt
|
|
0x1ct
|
|
0x1dt
|
|
0x1et
|
|
0x1ft
|
|
0x20t
|
|
0x21t
|
|
0x22t
|
|
0x23t
|
|
0x24t
|
|
0x25t
|
|
0x26t
|
|
0x27t
|
|
0x28t
|
|
0x29t
|
|
0x2at
|
|
0x2bt
|
|
0x2ct
|
|
0x2dt
|
|
0x2et
|
|
0x2ft
|
|
0x30t
|
|
0x31t
|
|
0x32t
|
|
0x33t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
-0x9t
|
|
.end array-data
|
|
.end method
|
|
|
|
.method private constructor <init>()V
|
|
.locals 0
|
|
|
|
.line 169
|
|
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method public static decode(Ljava/lang/String;)[B
|
|
.locals 2
|
|
.annotation system Ldalvik/annotation/Throws;
|
|
value = {
|
|
Lcom/firemonkeys/cloudcellapi/util/Base64DecoderException;
|
|
}
|
|
.end annotation
|
|
|
|
.line 419
|
|
invoke-virtual {p0}, Ljava/lang/String;->getBytes()[B
|
|
|
|
move-result-object p0
|
|
|
|
.line 420
|
|
array-length v0, p0
|
|
|
|
const/4 v1, 0x0
|
|
|
|
invoke-static {p0, v1, v0}, Lcom/firemonkeys/cloudcellapi/util/Base64;->decode([BII)[B
|
|
|
|
move-result-object p0
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static decode([B)[B
|
|
.locals 2
|
|
.annotation system Ldalvik/annotation/Throws;
|
|
value = {
|
|
Lcom/firemonkeys/cloudcellapi/util/Base64DecoderException;
|
|
}
|
|
.end annotation
|
|
|
|
.line 445
|
|
array-length v0, p0
|
|
|
|
const/4 v1, 0x0
|
|
|
|
invoke-static {p0, v1, v0}, Lcom/firemonkeys/cloudcellapi/util/Base64;->decode([BII)[B
|
|
|
|
move-result-object p0
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static decode([BII)[B
|
|
.locals 1
|
|
.annotation system Ldalvik/annotation/Throws;
|
|
value = {
|
|
Lcom/firemonkeys/cloudcellapi/util/Base64DecoderException;
|
|
}
|
|
.end annotation
|
|
|
|
sget-object v0, Lcom/firemonkeys/cloudcellapi/util/Base64;->DECODABET:[B
|
|
|
|
.line 474
|
|
invoke-static {p0, p1, p2, v0}, Lcom/firemonkeys/cloudcellapi/util/Base64;->decode([BII[B)[B
|
|
|
|
move-result-object p0
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static decode([BII[B)[B
|
|
.locals 16
|
|
.annotation system Ldalvik/annotation/Throws;
|
|
value = {
|
|
Lcom/firemonkeys/cloudcellapi/util/Base64DecoderException;
|
|
}
|
|
.end annotation
|
|
|
|
move/from16 v0, p2
|
|
|
|
move-object/from16 v1, p3
|
|
|
|
mul-int/lit8 v2, v0, 0x3
|
|
|
|
const/4 v3, 0x4
|
|
|
|
.line 504
|
|
div-int/2addr v2, v3
|
|
|
|
const/4 v4, 0x2
|
|
|
|
add-int/2addr v2, v4
|
|
|
|
.line 505
|
|
new-array v2, v2, [B
|
|
|
|
new-array v5, v3, [B
|
|
|
|
const/4 v6, 0x0
|
|
|
|
move v7, v6
|
|
|
|
move v8, v7
|
|
|
|
move v9, v8
|
|
|
|
:goto_0
|
|
const/16 v10, 0x3d
|
|
|
|
const/4 v11, 0x1
|
|
|
|
if-ge v7, v0, :cond_9
|
|
|
|
add-int v12, v7, p1
|
|
|
|
.line 514
|
|
aget-byte v13, p0, v12
|
|
|
|
and-int/lit8 v13, v13, 0x7f
|
|
|
|
int-to-byte v13, v13
|
|
|
|
.line 515
|
|
aget-byte v14, v1, v13
|
|
|
|
const/4 v15, -0x5
|
|
|
|
if-lt v14, v15, :cond_8
|
|
|
|
const/4 v12, -0x1
|
|
|
|
if-lt v14, v12, :cond_7
|
|
|
|
if-ne v13, v10, :cond_5
|
|
|
|
sub-int v12, v0, v7
|
|
|
|
add-int/lit8 v13, v0, -0x1
|
|
|
|
add-int v13, v13, p1
|
|
|
|
.line 523
|
|
aget-byte v13, p0, v13
|
|
|
|
and-int/lit8 v13, v13, 0x7f
|
|
|
|
int-to-byte v13, v13
|
|
|
|
if-eqz v8, :cond_4
|
|
|
|
if-eq v8, v11, :cond_4
|
|
|
|
const/4 v14, 0x3
|
|
|
|
if-ne v8, v14, :cond_0
|
|
|
|
if-gt v12, v4, :cond_1
|
|
|
|
:cond_0
|
|
if-ne v8, v3, :cond_2
|
|
|
|
if-gt v12, v11, :cond_1
|
|
|
|
goto :goto_1
|
|
|
|
.line 529
|
|
:cond_1
|
|
new-instance v0, Lcom/firemonkeys/cloudcellapi/util/Base64DecoderException;
|
|
|
|
new-instance v1, Ljava/lang/StringBuilder;
|
|
|
|
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
|
|
|
|
const-string v2, "padding byte \'=\' falsely signals end of encoded value at offset "
|
|
|
|
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
|
|
|
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
|
|
|
|
move-result-object v1
|
|
|
|
invoke-direct {v0, v1}, Lcom/firemonkeys/cloudcellapi/util/Base64DecoderException;-><init>(Ljava/lang/String;)V
|
|
|
|
throw v0
|
|
|
|
:cond_2
|
|
:goto_1
|
|
if-eq v13, v10, :cond_9
|
|
|
|
const/16 v3, 0xa
|
|
|
|
if-ne v13, v3, :cond_3
|
|
|
|
goto :goto_3
|
|
|
|
.line 533
|
|
:cond_3
|
|
new-instance v0, Lcom/firemonkeys/cloudcellapi/util/Base64DecoderException;
|
|
|
|
const-string v1, "encoded value has invalid trailing byte"
|
|
|
|
invoke-direct {v0, v1}, Lcom/firemonkeys/cloudcellapi/util/Base64DecoderException;-><init>(Ljava/lang/String;)V
|
|
|
|
throw v0
|
|
|
|
.line 525
|
|
:cond_4
|
|
new-instance v0, Lcom/firemonkeys/cloudcellapi/util/Base64DecoderException;
|
|
|
|
new-instance v1, Ljava/lang/StringBuilder;
|
|
|
|
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
|
|
|
|
const-string v2, "invalid padding byte \'=\' at byte offset "
|
|
|
|
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
|
|
|
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
|
|
|
|
move-result-object v1
|
|
|
|
invoke-direct {v0, v1}, Lcom/firemonkeys/cloudcellapi/util/Base64DecoderException;-><init>(Ljava/lang/String;)V
|
|
|
|
throw v0
|
|
|
|
:cond_5
|
|
add-int/lit8 v10, v8, 0x1
|
|
|
|
.line 539
|
|
aput-byte v13, v5, v8
|
|
|
|
if-ne v10, v3, :cond_6
|
|
|
|
.line 541
|
|
invoke-static {v5, v6, v2, v9, v1}, Lcom/firemonkeys/cloudcellapi/util/Base64;->decode4to3([BI[BI[B)I
|
|
|
|
move-result v8
|
|
|
|
add-int/2addr v9, v8
|
|
|
|
move v8, v6
|
|
|
|
goto :goto_2
|
|
|
|
:cond_6
|
|
move v8, v10
|
|
|
|
:cond_7
|
|
:goto_2
|
|
add-int/lit8 v7, v7, 0x1
|
|
|
|
goto :goto_0
|
|
|
|
.line 546
|
|
:cond_8
|
|
new-instance v0, Lcom/firemonkeys/cloudcellapi/util/Base64DecoderException;
|
|
|
|
new-instance v1, Ljava/lang/StringBuilder;
|
|
|
|
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
|
|
|
|
const-string v2, "Bad Base64 input character at "
|
|
|
|
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
|
|
|
const-string v2, ": "
|
|
|
|
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
aget-byte v2, p0, v12
|
|
|
|
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
|
|
|
const-string v2, "(decimal)"
|
|
|
|
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
|
|
|
|
move-result-object v1
|
|
|
|
invoke-direct {v0, v1}, Lcom/firemonkeys/cloudcellapi/util/Base64DecoderException;-><init>(Ljava/lang/String;)V
|
|
|
|
throw v0
|
|
|
|
:cond_9
|
|
:goto_3
|
|
if-eqz v8, :cond_b
|
|
|
|
if-eq v8, v11, :cond_a
|
|
|
|
.line 562
|
|
aput-byte v10, v5, v8
|
|
|
|
.line 563
|
|
invoke-static {v5, v6, v2, v9, v1}, Lcom/firemonkeys/cloudcellapi/util/Base64;->decode4to3([BI[BI[B)I
|
|
|
|
move-result v0
|
|
|
|
add-int/2addr v9, v0
|
|
|
|
goto :goto_4
|
|
|
|
.line 559
|
|
:cond_a
|
|
new-instance v1, Lcom/firemonkeys/cloudcellapi/util/Base64DecoderException;
|
|
|
|
new-instance v2, Ljava/lang/StringBuilder;
|
|
|
|
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
|
|
|
|
const-string v3, "single trailing character at offset "
|
|
|
|
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
sub-int/2addr v0, v11
|
|
|
|
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
|
|
|
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
|
|
|
|
move-result-object v0
|
|
|
|
invoke-direct {v1, v0}, Lcom/firemonkeys/cloudcellapi/util/Base64DecoderException;-><init>(Ljava/lang/String;)V
|
|
|
|
throw v1
|
|
|
|
.line 566
|
|
:cond_b
|
|
:goto_4
|
|
new-array v0, v9, [B
|
|
|
|
.line 567
|
|
invoke-static {v2, v6, v0, v6, v9}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
|
|
|
|
return-object v0
|
|
.end method
|
|
|
|
.method private static decode4to3([BI[BI[B)I
|
|
.locals 5
|
|
|
|
add-int/lit8 v0, p1, 0x2
|
|
|
|
.line 378
|
|
aget-byte v0, p0, v0
|
|
|
|
const/4 v1, 0x1
|
|
|
|
const/16 v2, 0x3d
|
|
|
|
if-ne v0, v2, :cond_0
|
|
|
|
.line 379
|
|
aget-byte v0, p0, p1
|
|
|
|
aget-byte v0, p4, v0
|
|
|
|
shl-int/lit8 v0, v0, 0x18
|
|
|
|
ushr-int/lit8 v0, v0, 0x6
|
|
|
|
add-int/2addr p1, v1
|
|
|
|
aget-byte p0, p0, p1
|
|
|
|
aget-byte p0, p4, p0
|
|
|
|
shl-int/lit8 p0, p0, 0x18
|
|
|
|
ushr-int/lit8 p0, p0, 0xc
|
|
|
|
or-int/2addr p0, v0
|
|
|
|
ushr-int/lit8 p0, p0, 0x10
|
|
|
|
int-to-byte p0, p0
|
|
|
|
.line 383
|
|
aput-byte p0, p2, p3
|
|
|
|
return v1
|
|
|
|
:cond_0
|
|
add-int/lit8 v3, p1, 0x3
|
|
|
|
.line 385
|
|
aget-byte v3, p0, v3
|
|
|
|
const/4 v4, 0x2
|
|
|
|
if-ne v3, v2, :cond_1
|
|
|
|
.line 387
|
|
aget-byte v2, p0, p1
|
|
|
|
aget-byte v2, p4, v2
|
|
|
|
shl-int/lit8 v2, v2, 0x18
|
|
|
|
ushr-int/lit8 v2, v2, 0x6
|
|
|
|
add-int/2addr p1, v1
|
|
|
|
aget-byte p0, p0, p1
|
|
|
|
aget-byte p0, p4, p0
|
|
|
|
shl-int/lit8 p0, p0, 0x18
|
|
|
|
ushr-int/lit8 p0, p0, 0xc
|
|
|
|
or-int/2addr p0, v2
|
|
|
|
aget-byte p1, p4, v0
|
|
|
|
shl-int/lit8 p1, p1, 0x18
|
|
|
|
ushr-int/lit8 p1, p1, 0x12
|
|
|
|
or-int/2addr p0, p1
|
|
|
|
ushr-int/lit8 p1, p0, 0x10
|
|
|
|
int-to-byte p1, p1
|
|
|
|
.line 392
|
|
aput-byte p1, p2, p3
|
|
|
|
add-int/2addr p3, v1
|
|
|
|
ushr-int/lit8 p0, p0, 0x8
|
|
|
|
int-to-byte p0, p0
|
|
|
|
.line 393
|
|
aput-byte p0, p2, p3
|
|
|
|
return v4
|
|
|
|
.line 397
|
|
:cond_1
|
|
aget-byte v2, p0, p1
|
|
|
|
aget-byte v2, p4, v2
|
|
|
|
shl-int/lit8 v2, v2, 0x18
|
|
|
|
ushr-int/lit8 v2, v2, 0x6
|
|
|
|
add-int/2addr p1, v1
|
|
|
|
aget-byte p0, p0, p1
|
|
|
|
aget-byte p0, p4, p0
|
|
|
|
shl-int/lit8 p0, p0, 0x18
|
|
|
|
ushr-int/lit8 p0, p0, 0xc
|
|
|
|
or-int/2addr p0, v2
|
|
|
|
aget-byte p1, p4, v0
|
|
|
|
shl-int/lit8 p1, p1, 0x18
|
|
|
|
ushr-int/lit8 p1, p1, 0x12
|
|
|
|
or-int/2addr p0, p1
|
|
|
|
aget-byte p1, p4, v3
|
|
|
|
shl-int/lit8 p1, p1, 0x18
|
|
|
|
ushr-int/lit8 p1, p1, 0x18
|
|
|
|
or-int/2addr p0, p1
|
|
|
|
shr-int/lit8 p1, p0, 0x10
|
|
|
|
int-to-byte p1, p1
|
|
|
|
.line 403
|
|
aput-byte p1, p2, p3
|
|
|
|
add-int/lit8 p1, p3, 0x1
|
|
|
|
shr-int/lit8 p4, p0, 0x8
|
|
|
|
int-to-byte p4, p4
|
|
|
|
.line 404
|
|
aput-byte p4, p2, p1
|
|
|
|
add-int/2addr p3, v4
|
|
|
|
int-to-byte p0, p0
|
|
|
|
.line 405
|
|
aput-byte p0, p2, p3
|
|
|
|
const/4 p0, 0x3
|
|
|
|
return p0
|
|
.end method
|
|
|
|
.method public static decodeWebSafe(Ljava/lang/String;)[B
|
|
.locals 2
|
|
.annotation system Ldalvik/annotation/Throws;
|
|
value = {
|
|
Lcom/firemonkeys/cloudcellapi/util/Base64DecoderException;
|
|
}
|
|
.end annotation
|
|
|
|
.line 431
|
|
invoke-virtual {p0}, Ljava/lang/String;->getBytes()[B
|
|
|
|
move-result-object p0
|
|
|
|
.line 432
|
|
array-length v0, p0
|
|
|
|
const/4 v1, 0x0
|
|
|
|
invoke-static {p0, v1, v0}, Lcom/firemonkeys/cloudcellapi/util/Base64;->decodeWebSafe([BII)[B
|
|
|
|
move-result-object p0
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static decodeWebSafe([B)[B
|
|
.locals 2
|
|
.annotation system Ldalvik/annotation/Throws;
|
|
value = {
|
|
Lcom/firemonkeys/cloudcellapi/util/Base64DecoderException;
|
|
}
|
|
.end annotation
|
|
|
|
.line 458
|
|
array-length v0, p0
|
|
|
|
const/4 v1, 0x0
|
|
|
|
invoke-static {p0, v1, v0}, Lcom/firemonkeys/cloudcellapi/util/Base64;->decodeWebSafe([BII)[B
|
|
|
|
move-result-object p0
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static decodeWebSafe([BII)[B
|
|
.locals 1
|
|
.annotation system Ldalvik/annotation/Throws;
|
|
value = {
|
|
Lcom/firemonkeys/cloudcellapi/util/Base64DecoderException;
|
|
}
|
|
.end annotation
|
|
|
|
sget-object v0, Lcom/firemonkeys/cloudcellapi/util/Base64;->WEBSAFE_DECODABET:[B
|
|
|
|
.line 489
|
|
invoke-static {p0, p1, p2, v0}, Lcom/firemonkeys/cloudcellapi/util/Base64;->decode([BII[B)[B
|
|
|
|
move-result-object p0
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static encode([B)Ljava/lang/String;
|
|
.locals 4
|
|
|
|
.line 247
|
|
array-length v0, p0
|
|
|
|
sget-object v1, Lcom/firemonkeys/cloudcellapi/util/Base64;->ALPHABET:[B
|
|
|
|
const/4 v2, 0x1
|
|
|
|
const/4 v3, 0x0
|
|
|
|
invoke-static {p0, v3, v0, v1, v2}, Lcom/firemonkeys/cloudcellapi/util/Base64;->encode([BII[BZ)Ljava/lang/String;
|
|
|
|
move-result-object p0
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static encode([BII[BZ)Ljava/lang/String;
|
|
.locals 1
|
|
|
|
const v0, 0x7fffffff
|
|
|
|
.line 274
|
|
invoke-static {p0, p1, p2, p3, v0}, Lcom/firemonkeys/cloudcellapi/util/Base64;->encode([BII[BI)[B
|
|
|
|
move-result-object p0
|
|
|
|
.line 275
|
|
array-length p1, p0
|
|
|
|
:goto_0
|
|
if-nez p4, :cond_1
|
|
|
|
if-lez p1, :cond_1
|
|
|
|
add-int/lit8 p2, p1, -0x1
|
|
|
|
.line 280
|
|
aget-byte p2, p0, p2
|
|
|
|
const/16 p3, 0x3d
|
|
|
|
if-eq p2, p3, :cond_0
|
|
|
|
goto :goto_1
|
|
|
|
:cond_0
|
|
add-int/lit8 p1, p1, -0x1
|
|
|
|
goto :goto_0
|
|
|
|
.line 286
|
|
:cond_1
|
|
:goto_1
|
|
new-instance p2, Ljava/lang/String;
|
|
|
|
const/4 p3, 0x0
|
|
|
|
invoke-direct {p2, p0, p3, p1}, Ljava/lang/String;-><init>([BII)V
|
|
|
|
return-object p2
|
|
.end method
|
|
|
|
.method public static encode([BII[BI)[B
|
|
.locals 11
|
|
|
|
add-int/lit8 v0, p2, 0x2
|
|
|
|
.line 301
|
|
div-int/lit8 v0, v0, 0x3
|
|
|
|
mul-int/lit8 v0, v0, 0x4
|
|
|
|
.line 303
|
|
div-int v1, v0, p4
|
|
|
|
add-int/2addr v0, v1
|
|
|
|
new-array v0, v0, [B
|
|
|
|
add-int/lit8 v1, p2, -0x2
|
|
|
|
const/4 v2, 0x0
|
|
|
|
move v3, v2
|
|
|
|
move v7, v3
|
|
|
|
move v8, v7
|
|
|
|
:goto_0
|
|
const/16 v9, 0xa
|
|
|
|
if-ge v3, v1, :cond_1
|
|
|
|
add-int v4, v3, p1
|
|
|
|
.line 315
|
|
aget-byte v4, p0, v4
|
|
|
|
shl-int/lit8 v4, v4, 0x18
|
|
|
|
ushr-int/lit8 v4, v4, 0x8
|
|
|
|
add-int/lit8 v5, v3, 0x1
|
|
|
|
add-int/2addr v5, p1
|
|
|
|
aget-byte v5, p0, v5
|
|
|
|
shl-int/lit8 v5, v5, 0x18
|
|
|
|
ushr-int/lit8 v5, v5, 0x10
|
|
|
|
or-int/2addr v4, v5
|
|
|
|
add-int/lit8 v5, v3, 0x2
|
|
|
|
add-int/2addr v5, p1
|
|
|
|
aget-byte v5, p0, v5
|
|
|
|
shl-int/lit8 v5, v5, 0x18
|
|
|
|
ushr-int/lit8 v5, v5, 0x18
|
|
|
|
or-int/2addr v4, v5
|
|
|
|
ushr-int/lit8 v5, v4, 0x12
|
|
|
|
.line 319
|
|
aget-byte v5, p3, v5
|
|
|
|
aput-byte v5, v0, v7
|
|
|
|
add-int/lit8 v5, v7, 0x1
|
|
|
|
ushr-int/lit8 v6, v4, 0xc
|
|
|
|
and-int/lit8 v6, v6, 0x3f
|
|
|
|
.line 320
|
|
aget-byte v6, p3, v6
|
|
|
|
aput-byte v6, v0, v5
|
|
|
|
add-int/lit8 v6, v7, 0x2
|
|
|
|
ushr-int/lit8 v10, v4, 0x6
|
|
|
|
and-int/lit8 v10, v10, 0x3f
|
|
|
|
.line 321
|
|
aget-byte v10, p3, v10
|
|
|
|
aput-byte v10, v0, v6
|
|
|
|
add-int/lit8 v6, v7, 0x3
|
|
|
|
and-int/lit8 v4, v4, 0x3f
|
|
|
|
.line 322
|
|
aget-byte v4, p3, v4
|
|
|
|
aput-byte v4, v0, v6
|
|
|
|
add-int/lit8 v8, v8, 0x4
|
|
|
|
if-ne v8, p4, :cond_0
|
|
|
|
add-int/lit8 v7, v7, 0x4
|
|
|
|
.line 326
|
|
aput-byte v9, v0, v7
|
|
|
|
move v8, v2
|
|
|
|
move v7, v5
|
|
|
|
:cond_0
|
|
add-int/lit8 v3, v3, 0x3
|
|
|
|
add-int/lit8 v7, v7, 0x4
|
|
|
|
goto :goto_0
|
|
|
|
:cond_1
|
|
if-ge v3, p2, :cond_2
|
|
|
|
add-int v2, v3, p1
|
|
|
|
sub-int v3, p2, v3
|
|
|
|
move-object v1, p0
|
|
|
|
move-object v4, v0
|
|
|
|
move v5, v7
|
|
|
|
move-object v6, p3
|
|
|
|
.line 333
|
|
invoke-static/range {v1 .. v6}, Lcom/firemonkeys/cloudcellapi/util/Base64;->encode3to4([BII[BI[B)[B
|
|
|
|
add-int/lit8 v8, v8, 0x4
|
|
|
|
if-ne v8, p4, :cond_2
|
|
|
|
add-int/lit8 v7, v7, 0x4
|
|
|
|
.line 338
|
|
aput-byte v9, v0, v7
|
|
|
|
:cond_2
|
|
return-object v0
|
|
.end method
|
|
|
|
.method private static encode3to4([BII[BI[B)[B
|
|
.locals 4
|
|
|
|
const/4 v0, 0x0
|
|
|
|
if-lez p2, :cond_0
|
|
|
|
.line 210
|
|
aget-byte v1, p0, p1
|
|
|
|
shl-int/lit8 v1, v1, 0x18
|
|
|
|
ushr-int/lit8 v1, v1, 0x8
|
|
|
|
goto :goto_0
|
|
|
|
:cond_0
|
|
move v1, v0
|
|
|
|
:goto_0
|
|
const/4 v2, 0x1
|
|
|
|
if-le p2, v2, :cond_1
|
|
|
|
add-int/lit8 v3, p1, 0x1
|
|
|
|
.line 211
|
|
aget-byte v3, p0, v3
|
|
|
|
shl-int/lit8 v3, v3, 0x18
|
|
|
|
ushr-int/lit8 v3, v3, 0x10
|
|
|
|
goto :goto_1
|
|
|
|
:cond_1
|
|
move v3, v0
|
|
|
|
:goto_1
|
|
or-int/2addr v1, v3
|
|
|
|
const/4 v3, 0x2
|
|
|
|
if-le p2, v3, :cond_2
|
|
|
|
add-int/2addr p1, v3
|
|
|
|
.line 212
|
|
aget-byte p0, p0, p1
|
|
|
|
shl-int/lit8 p0, p0, 0x18
|
|
|
|
ushr-int/lit8 v0, p0, 0x18
|
|
|
|
:cond_2
|
|
or-int p0, v1, v0
|
|
|
|
const/16 p1, 0x3d
|
|
|
|
const/4 v0, 0x3
|
|
|
|
if-eq p2, v2, :cond_5
|
|
|
|
if-eq p2, v3, :cond_4
|
|
|
|
if-eq p2, v0, :cond_3
|
|
|
|
return-object p3
|
|
|
|
:cond_3
|
|
ushr-int/lit8 p1, p0, 0x12
|
|
|
|
.line 216
|
|
aget-byte p1, p5, p1
|
|
|
|
aput-byte p1, p3, p4
|
|
|
|
add-int/lit8 p1, p4, 0x1
|
|
|
|
ushr-int/lit8 p2, p0, 0xc
|
|
|
|
and-int/lit8 p2, p2, 0x3f
|
|
|
|
.line 217
|
|
aget-byte p2, p5, p2
|
|
|
|
aput-byte p2, p3, p1
|
|
|
|
add-int/lit8 p1, p4, 0x2
|
|
|
|
ushr-int/lit8 p2, p0, 0x6
|
|
|
|
and-int/lit8 p2, p2, 0x3f
|
|
|
|
.line 218
|
|
aget-byte p2, p5, p2
|
|
|
|
aput-byte p2, p3, p1
|
|
|
|
add-int/2addr p4, v0
|
|
|
|
and-int/lit8 p0, p0, 0x3f
|
|
|
|
.line 219
|
|
aget-byte p0, p5, p0
|
|
|
|
aput-byte p0, p3, p4
|
|
|
|
return-object p3
|
|
|
|
:cond_4
|
|
ushr-int/lit8 p2, p0, 0x12
|
|
|
|
.line 222
|
|
aget-byte p2, p5, p2
|
|
|
|
aput-byte p2, p3, p4
|
|
|
|
add-int/lit8 p2, p4, 0x1
|
|
|
|
ushr-int/lit8 v1, p0, 0xc
|
|
|
|
and-int/lit8 v1, v1, 0x3f
|
|
|
|
.line 223
|
|
aget-byte v1, p5, v1
|
|
|
|
aput-byte v1, p3, p2
|
|
|
|
add-int/lit8 p2, p4, 0x2
|
|
|
|
ushr-int/lit8 p0, p0, 0x6
|
|
|
|
and-int/lit8 p0, p0, 0x3f
|
|
|
|
.line 224
|
|
aget-byte p0, p5, p0
|
|
|
|
aput-byte p0, p3, p2
|
|
|
|
add-int/2addr p4, v0
|
|
|
|
.line 225
|
|
aput-byte p1, p3, p4
|
|
|
|
return-object p3
|
|
|
|
:cond_5
|
|
ushr-int/lit8 p2, p0, 0x12
|
|
|
|
.line 228
|
|
aget-byte p2, p5, p2
|
|
|
|
aput-byte p2, p3, p4
|
|
|
|
add-int/lit8 p2, p4, 0x1
|
|
|
|
ushr-int/lit8 p0, p0, 0xc
|
|
|
|
and-int/lit8 p0, p0, 0x3f
|
|
|
|
.line 229
|
|
aget-byte p0, p5, p0
|
|
|
|
aput-byte p0, p3, p2
|
|
|
|
add-int/lit8 p0, p4, 0x2
|
|
|
|
.line 230
|
|
aput-byte p1, p3, p0
|
|
|
|
add-int/2addr p4, v0
|
|
|
|
.line 231
|
|
aput-byte p1, p3, p4
|
|
|
|
return-object p3
|
|
.end method
|
|
|
|
.method public static encodeWebSafe([BZ)Ljava/lang/String;
|
|
.locals 3
|
|
|
|
.line 258
|
|
array-length v0, p0
|
|
|
|
sget-object v1, Lcom/firemonkeys/cloudcellapi/util/Base64;->WEBSAFE_ALPHABET:[B
|
|
|
|
const/4 v2, 0x0
|
|
|
|
invoke-static {p0, v2, v0, v1, p1}, Lcom/firemonkeys/cloudcellapi/util/Base64;->encode([BII[BZ)Ljava/lang/String;
|
|
|
|
move-result-object p0
|
|
|
|
return-object p0
|
|
.end method
|