Base64.smali
.class public Lcom/cleanmaster/hpsharelib/base/util/Base64;
.super Ljava/lang/Object;
.source "Base64.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/cleanmaster/hpsharelib/base/util/Base64$Encoder;,
Lcom/cleanmaster/hpsharelib/base/util/Base64$Decoder;,
Lcom/cleanmaster/hpsharelib/base/util/Base64$Coder;
}
.end annotation
# static fields
.field public static final CRLF:I = 0x4
.field public static final DEFAULT:I = 0x0
.field public static final NO_CLOSE:I = 0x10
.field public static final NO_PADDING:I = 0x1
.field public static final NO_WRAP:I = 0x2
.field public static final URL_SAFE:I = 0x8
.field private static base64DecodeChars:[B
.field private static base64EncodeChars:[C
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 732
const/16 v0, 0x40
new-array v0, v0, [C
fill-array-data v0, :array_14
sput-object v0, Lcom/cleanmaster/hpsharelib/base/util/Base64;->base64EncodeChars:[C
.line 750
const/16 v0, 0x80
new-array v0, v0, [B
fill-array-data v0, :array_58
sput-object v0, Lcom/cleanmaster/hpsharelib/base/util/Base64;->base64DecodeChars:[B
return-void
.line 732
nop
:array_14
.array-data 2
0x41s
0x42s
0x43s
0x44s
0x45s
0x46s
0x47s
0x48s
0x49s
0x4as
0x4bs
0x4cs
0x4ds
0x4es
0x4fs
0x50s
0x51s
0x52s
0x53s
0x54s
0x55s
0x56s
0x57s
0x58s
0x59s
0x5as
0x61s
0x62s
0x63s
0x64s
0x65s
0x66s
0x67s
0x68s
0x69s
0x6as
0x6bs
0x6cs
0x6ds
0x6es
0x6fs
0x70s
0x71s
0x72s
0x73s
0x74s
0x75s
0x76s
0x77s
0x78s
0x79s
0x7as
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x2bs
0x2fs
.end array-data
.line 750
:array_58
.array-data 1
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
0x3et
-0x1t
-0x1t
-0x1t
0x3ft
0x34t
0x35t
0x36t
0x37t
0x38t
0x39t
0x3at
0x3bt
0x3ct
0x3dt
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
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
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
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
-0x1t
-0x1t
-0x1t
-0x1t
-0x1t
.end array-data
.end method
.method private constructor <init>()V
.registers 1
.prologue
.line 727
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 728
return-void
.end method
.method public static decode(Ljava/lang/String;)[B
.registers 10
.prologue
const/16 v8, 0x3d
const/4 v7, -0x1
.line 809
invoke-virtual {p0}, Ljava/lang/String;->getBytes()[B
move-result-object v2
.line 810
array-length v3, v2
.line 811
new-instance v4, Ljava/io/ByteArrayOutputStream;
invoke-direct {v4, v3}, Ljava/io/ByteArrayOutputStream;-><init>(I)V
.line 812
const/4 v0, 0x0
.line 814
:goto_e
if-ge v0, v3, :cond_1e
.line 818
:goto_10
sget-object v5, Lcom/cleanmaster/hpsharelib/base/util/Base64;->base64DecodeChars:[B
add-int/lit8 v1, v0, 0x1
aget-byte v0, v2, v0
aget-byte v5, v5, v0
.line 820
if-ge v1, v3, :cond_1c
if-eq v5, v7, :cond_7f
.line 821
:cond_1c
if-ne v5, v7, :cond_24
.line 860
:cond_1e
invoke-virtual {v4}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object v0
:goto_22
return-object v0
:cond_23
move v1, v0
.line 827
:cond_24
sget-object v6, Lcom/cleanmaster/hpsharelib/base/util/Base64;->base64DecodeChars:[B
add-int/lit8 v0, v1, 0x1
aget-byte v1, v2, v1
aget-byte v6, v6, v1
.line 828
if-ge v0, v3, :cond_30
if-eq v6, v7, :cond_23
.line 829
:cond_30
if-eq v6, v7, :cond_1e
.line 832
shl-int/lit8 v1, v5, 0x2
and-int/lit8 v5, v6, 0x30
ushr-int/lit8 v5, v5, 0x4
or-int/2addr v1, v5
invoke-virtual {v4, v1}, Ljava/io/ByteArrayOutputStream;->write(I)V
.line 836
:goto_3c
add-int/lit8 v1, v0, 0x1
aget-byte v0, v2, v0
.line 837
if-ne v0, v8, :cond_47
.line 838
invoke-virtual {v4}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object v0
goto :goto_22
.line 840
:cond_47
sget-object v5, Lcom/cleanmaster/hpsharelib/base/util/Base64;->base64DecodeChars:[B
aget-byte v5, v5, v0
.line 841
if-ge v1, v3, :cond_4f
if-eq v5, v7, :cond_7d
.line 842
:cond_4f
if-eq v5, v7, :cond_1e
.line 845
and-int/lit8 v0, v6, 0xf
shl-int/lit8 v0, v0, 0x4
and-int/lit8 v6, v5, 0x3c
ushr-int/lit8 v6, v6, 0x2
or-int/2addr v0, v6
invoke-virtual {v4, v0}, Ljava/io/ByteArrayOutputStream;->write(I)V
.line 849
:goto_5d
add-int/lit8 v0, v1, 0x1
aget-byte v1, v2, v1
.line 850
if-ne v1, v8, :cond_68
.line 851
invoke-virtual {v4}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object v0
goto :goto_22
.line 853
:cond_68
sget-object v6, Lcom/cleanmaster/hpsharelib/base/util/Base64;->base64DecodeChars:[B
aget-byte v1, v6, v1
.line 854
if-ge v0, v3, :cond_70
if-eq v1, v7, :cond_7b
.line 855
:cond_70
if-eq v1, v7, :cond_1e
.line 858
and-int/lit8 v5, v5, 0x3
shl-int/lit8 v5, v5, 0x6
or-int/2addr v1, v5
invoke-virtual {v4, v1}, Ljava/io/ByteArrayOutputStream;->write(I)V
goto :goto_e
:cond_7b
move v1, v0
goto :goto_5d
:cond_7d
move v0, v1
goto :goto_3c
:cond_7f
move v0, v1
goto :goto_10
.end method
.method public static decode([BI)[B
.registers 4
.prologue
.line 129
const/4 v0, 0x0
array-length v1, p0
invoke-static {p0, v0, v1, p1}, Lcom/cleanmaster/hpsharelib/base/util/Base64;->decode([BIII)[B
move-result-object v0
return-object v0
.end method
.method public static decode([BIII)[B
.registers 8
.prologue
const/4 v3, 0x0
.line 156
new-instance v1, Lcom/cleanmaster/hpsharelib/base/util/Base64$Decoder;
mul-int/lit8 v0, p2, 0x3
div-int/lit8 v0, v0, 0x4
new-array v0, v0, [B
invoke-direct {v1, p3, v0}, Lcom/cleanmaster/hpsharelib/base/util/Base64$Decoder;-><init>(I[B)V
.line 158
const/4 v0, 0x1
invoke-virtual {v1, p0, p1, p2, v0}, Lcom/cleanmaster/hpsharelib/base/util/Base64$Decoder;->process([BIIZ)Z
move-result v0
if-nez v0, :cond_1b
.line 159
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "bad base-64"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 163
:cond_1b
iget v0, v1, Lcom/cleanmaster/hpsharelib/base/util/Base64$Decoder;->op:I
iget-object v2, v1, Lcom/cleanmaster/hpsharelib/base/util/Base64$Decoder;->output:[B
array-length v2, v2
if-ne v0, v2, :cond_25
.line 164
iget-object v0, v1, Lcom/cleanmaster/hpsharelib/base/util/Base64$Decoder;->output:[B
.line 171
:goto_24
return-object v0
.line 169
:cond_25
iget v0, v1, Lcom/cleanmaster/hpsharelib/base/util/Base64$Decoder;->op:I
new-array v0, v0, [B
.line 170
iget-object v2, v1, Lcom/cleanmaster/hpsharelib/base/util/Base64$Decoder;->output:[B
iget v1, v1, Lcom/cleanmaster/hpsharelib/base/util/Base64$Decoder;->op:I
invoke-static {v2, v3, v0, v3, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
goto :goto_24
.end method
.method public static encode([B)Ljava/lang/String;
.registers 9
.prologue
.line 770
array-length v1, p0
.line 771
new-instance v2, Ljava/lang/StringBuffer;
invoke-direct {v2}, Ljava/lang/StringBuffer;-><init>()V
.line 772
const/4 v0, 0x0
.line 775
:goto_7
if-ge v0, v1, :cond_2a
.line 776
add-int/lit8 v3, v0, 0x1
aget-byte v0, p0, v0
and-int/lit16 v4, v0, 0xff
.line 777
if-ne v3, v1, :cond_2f
.line 778
sget-object v0, Lcom/cleanmaster/hpsharelib/base/util/Base64;->base64EncodeChars:[C
ushr-int/lit8 v1, v4, 0x2
aget-char v0, v0, v1
invoke-virtual {v2, v0}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
.line 779
sget-object v0, Lcom/cleanmaster/hpsharelib/base/util/Base64;->base64EncodeChars:[C
and-int/lit8 v1, v4, 0x3
shl-int/lit8 v1, v1, 0x4
aget-char v0, v0, v1
invoke-virtual {v2, v0}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
.line 780
const-string v0, "=="
invoke-virtual {v2, v0}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
.line 802
:cond_2a
:goto_2a
invoke-virtual {v2}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
move-result-object v0
return-object v0
.line 783
:cond_2f
add-int/lit8 v5, v3, 0x1
aget-byte v0, p0, v3
and-int/lit16 v3, v0, 0xff
.line 784
if-ne v5, v1, :cond_61
.line 785
sget-object v0, Lcom/cleanmaster/hpsharelib/base/util/Base64;->base64EncodeChars:[C
ushr-int/lit8 v1, v4, 0x2
aget-char v0, v0, v1
invoke-virtual {v2, v0}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
.line 786
sget-object v0, Lcom/cleanmaster/hpsharelib/base/util/Base64;->base64EncodeChars:[C
and-int/lit8 v1, v4, 0x3
shl-int/lit8 v1, v1, 0x4
and-int/lit16 v4, v3, 0xf0
ushr-int/lit8 v4, v4, 0x4
or-int/2addr v1, v4
aget-char v0, v0, v1
invoke-virtual {v2, v0}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
.line 789
sget-object v0, Lcom/cleanmaster/hpsharelib/base/util/Base64;->base64EncodeChars:[C
and-int/lit8 v1, v3, 0xf
shl-int/lit8 v1, v1, 0x2
aget-char v0, v0, v1
invoke-virtual {v2, v0}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
.line 790
const-string v0, "="
invoke-virtual {v2, v0}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
goto :goto_2a
.line 793
:cond_61
add-int/lit8 v0, v5, 0x1
aget-byte v5, p0, v5
and-int/lit16 v5, v5, 0xff
.line 794
sget-object v6, Lcom/cleanmaster/hpsharelib/base/util/Base64;->base64EncodeChars:[C
ushr-int/lit8 v7, v4, 0x2
aget-char v6, v6, v7
invoke-virtual {v2, v6}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
.line 795
sget-object v6, Lcom/cleanmaster/hpsharelib/base/util/Base64;->base64EncodeChars:[C
and-int/lit8 v4, v4, 0x3
shl-int/lit8 v4, v4, 0x4
and-int/lit16 v7, v3, 0xf0
ushr-int/lit8 v7, v7, 0x4
or-int/2addr v4, v7
aget-char v4, v6, v4
invoke-virtual {v2, v4}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
.line 797
sget-object v4, Lcom/cleanmaster/hpsharelib/base/util/Base64;->base64EncodeChars:[C
and-int/lit8 v3, v3, 0xf
shl-int/lit8 v3, v3, 0x2
and-int/lit16 v6, v5, 0xc0
ushr-int/lit8 v6, v6, 0x6
or-int/2addr v3, v6
aget-char v3, v4, v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
.line 799
sget-object v3, Lcom/cleanmaster/hpsharelib/base/util/Base64;->base64EncodeChars:[C
and-int/lit8 v4, v5, 0x3f
aget-char v3, v3, v4
invoke-virtual {v2, v3}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
goto/16 :goto_7
.end method