Base64.smali
.class public Lcom/avast/android/billing/licensesever/parser/Base64;
.super Ljava/lang/Object;
# annotations
.annotation runtime Ljava/lang/Deprecated;
.end annotation
# static fields
.field private static final a:[B
# direct methods
.method static constructor <clinit>()V
.registers 1
const/16 v0, 0x80
new-array v0, v0, [B
fill-array-data v0, :array_a
sput-object v0, Lcom/avast/android/billing/licensesever/parser/Base64;->a:[B
return-void
:array_a
.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
.end method
.method public static a(Ljava/lang/String;)[B
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/avast/android/billing/licensesever/parser/Base64DecoderException;
}
.end annotation
invoke-virtual {p0}, Ljava/lang/String;->getBytes()[B
move-result-object p0
array-length v0, p0
const/4 v1, 0x0
invoke-static {p0, v1, v0}, Lcom/avast/android/billing/licensesever/parser/Base64;->b([BII)[B
move-result-object p0
return-object p0
.end method
.method public static b([BII)[B
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/avast/android/billing/licensesever/parser/Base64DecoderException;
}
.end annotation
sget-object v0, Lcom/avast/android/billing/licensesever/parser/Base64;->a:[B
invoke-static {p0, p1, p2, v0}, Lcom/avast/android/billing/licensesever/parser/Base64;->c([BII[B)[B
move-result-object p0
return-object p0
.end method
.method public static c([BII[B)[B
.registers 20
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/avast/android/billing/licensesever/parser/Base64DecoderException;
}
.end annotation
move/from16 v0, p2
move-object/from16 v1, p3
mul-int/lit8 v2, v0, 0x3
const/4 v3, 0x4
div-int/2addr v2, v3
const/4 v4, 0x2
add-int/2addr v2, v4
new-array v2, v2, [B
new-array v5, v3, [B
const/4 v6, 0x0
const/4 v7, 0x0
const/4 v8, 0x0
const/4 v9, 0x0
:goto_12
const/16 v10, 0x3d
const/4 v11, 0x1
if-ge v7, v0, :cond_b5
add-int v12, v7, p1
aget-byte v13, p0, v12
and-int/lit8 v13, v13, 0x7f
int-to-byte v13, v13
aget-byte v14, v1, v13
const/4 v15, -0x5
if-lt v14, v15, :cond_8f
const/4 v12, -0x1
if-lt v14, v12, :cond_8c
if-ne v13, v10, :cond_7e
sub-int v12, v0, v7
add-int/lit8 v13, v0, -0x1
add-int v13, v13, p1
aget-byte v13, p0, v13
and-int/lit8 v13, v13, 0x7f
int-to-byte v13, v13
if-eqz v8, :cond_67
if-eq v8, v11, :cond_67
const/4 v14, 0x3
if-ne v8, v14, :cond_3c
if-gt v12, v4, :cond_41
:cond_3c
if-ne v8, v3, :cond_58
if-gt v12, v11, :cond_41
goto :goto_58
:cond_41
new-instance v0, Lcom/avast/android/billing/licensesever/parser/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/avast/android/billing/licensesever/parser/Base64DecoderException;-><init>(Ljava/lang/String;)V
throw v0
:cond_58
:goto_58
if-eq v13, v10, :cond_b5
const/16 v3, 0xa
if-ne v13, v3, :cond_5f
goto :goto_b5
:cond_5f
new-instance v0, Lcom/avast/android/billing/licensesever/parser/Base64DecoderException;
const-string v1, "encoded value has invalid trailing byte"
invoke-direct {v0, v1}, Lcom/avast/android/billing/licensesever/parser/Base64DecoderException;-><init>(Ljava/lang/String;)V
throw v0
:cond_67
new-instance v0, Lcom/avast/android/billing/licensesever/parser/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/avast/android/billing/licensesever/parser/Base64DecoderException;-><init>(Ljava/lang/String;)V
throw v0
:cond_7e
add-int/lit8 v10, v8, 0x1
aput-byte v13, v5, v8
if-ne v10, v3, :cond_8b
invoke-static {v5, v6, v2, v9, v1}, Lcom/avast/android/billing/licensesever/parser/Base64;->d([BI[BI[B)I
move-result v8
add-int/2addr v9, v8
const/4 v8, 0x0
goto :goto_8c
:cond_8b
move v8, v10
:cond_8c
:goto_8c
add-int/lit8 v7, v7, 0x1
goto :goto_12
:cond_8f
new-instance v0, Lcom/avast/android/billing/licensesever/parser/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/avast/android/billing/licensesever/parser/Base64DecoderException;-><init>(Ljava/lang/String;)V
throw v0
:cond_b5
:goto_b5
if-eqz v8, :cond_d9
if-eq v8, v11, :cond_c1
aput-byte v10, v5, v8
invoke-static {v5, v6, v2, v9, v1}, Lcom/avast/android/billing/licensesever/parser/Base64;->d([BI[BI[B)I
move-result v0
add-int/2addr v9, v0
goto :goto_d9
:cond_c1
new-instance v1, Lcom/avast/android/billing/licensesever/parser/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/avast/android/billing/licensesever/parser/Base64DecoderException;-><init>(Ljava/lang/String;)V
throw v1
:cond_d9
:goto_d9
new-array v0, v9, [B
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 d([BI[BI[B)I
.registers 11
add-int/lit8 v0, p1, 0x2
aget-byte v1, p0, v0
const/16 v2, 0x3d
const/4 v3, 0x1
if-ne v1, v2, :cond_21
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, v3
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
aput-byte p0, p2, p3
return v3
:cond_21
add-int/lit8 v1, p1, 0x3
aget-byte v4, p0, v1
const/4 v5, 0x2
if-ne v4, v2, :cond_4f
aget-byte v1, p0, p1
aget-byte v1, p4, v1
shl-int/lit8 v1, v1, 0x18
ushr-int/lit8 v1, v1, 0x6
add-int/2addr p1, v3
aget-byte p1, p0, p1
aget-byte p1, p4, p1
shl-int/lit8 p1, p1, 0x18
ushr-int/lit8 p1, p1, 0xc
or-int/2addr p1, v1
aget-byte p0, p0, v0
aget-byte p0, p4, p0
shl-int/lit8 p0, p0, 0x18
ushr-int/lit8 p0, p0, 0x12
or-int/2addr p0, p1
ushr-int/lit8 p1, p0, 0x10
int-to-byte p1, p1
aput-byte p1, p2, p3
add-int/2addr p3, v3
ushr-int/lit8 p0, p0, 0x8
int-to-byte p0, p0
aput-byte p0, p2, p3
return v5
:cond_4f
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, v3
aget-byte p1, p0, p1
aget-byte p1, p4, p1
shl-int/lit8 p1, p1, 0x18
ushr-int/lit8 p1, p1, 0xc
or-int/2addr p1, v2
aget-byte v0, p0, v0
aget-byte v0, p4, v0
shl-int/lit8 v0, v0, 0x18
ushr-int/lit8 v0, v0, 0x12
or-int/2addr p1, v0
aget-byte p0, p0, v1
aget-byte p0, p4, p0
shl-int/lit8 p0, p0, 0x18
ushr-int/lit8 p0, p0, 0x18
or-int/2addr p0, p1
shr-int/lit8 p1, p0, 0x10
int-to-byte p1, p1
aput-byte p1, p2, p3
add-int/lit8 p1, p3, 0x1
shr-int/lit8 p4, p0, 0x8
int-to-byte p4, p4
aput-byte p4, p2, p1
add-int/2addr p3, v5
int-to-byte p0, p0
aput-byte p0, p2, p3
const/4 p0, 0x3
return p0
.end method