Base64.smali
.class public final Lio/dcloud/common/util/Base64;
.super Ljava/lang/Object;
# static fields
.field private static final BASE64CHARS:[C
.field private static final CRLF:Ljava/lang/String; = "\r\n"
.field private static final PAD:C = '='
# direct methods
.method static constructor <clinit>()V
.registers 1
const/16 v0, 0x40
new-array v0, v0, [C
.line 1
fill-array-data v0, :array_a
sput-object v0, Lio/dcloud/common/util/Base64;->BASE64CHARS:[C
return-void
:array_a
.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
.end method
.method public constructor <init>()V
.registers 1
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static decode2String(Ljava/lang/String;)Ljava/lang/String;
.registers 4
const-string v0, ""
.line 1
invoke-static {p0}, Lio/dcloud/common/util/Base64;->decode2bytes(Ljava/lang/String;)[B
move-result-object p0
.line 3
:try_start_6
new-instance v1, Ljava/lang/String;
const-string v2, "utf-8"
invoke-direct {v1, p0, v2}, Ljava/lang/String;-><init>([BLjava/lang/String;)V
:try_end_d
.catch Ljava/io/UnsupportedEncodingException; {:try_start_6 .. :try_end_d} :catch_18
.catch Ljava/lang/RuntimeException; {:try_start_6 .. :try_end_d} :catch_13
.catchall {:try_start_6 .. :try_end_d} :catchall_e
return-object v1
:catchall_e
move-exception p0
.line 15
invoke-virtual {p0}, Ljava/lang/Throwable;->printStackTrace()V
return-object v0
:catch_13
move-exception p0
.line 16
invoke-virtual {p0}, Ljava/lang/RuntimeException;->printStackTrace()V
return-object v0
:catch_18
move-exception p0
.line 17
invoke-virtual {p0}, Ljava/io/UnsupportedEncodingException;->printStackTrace()V
return-object v0
.end method
.method public static decode2bytes(Ljava/lang/String;)[B
.registers 12
.line 1
new-instance v0, Ljava/io/ByteArrayOutputStream;
invoke-direct {v0}, Ljava/io/ByteArrayOutputStream;-><init>()V
const/4 v1, 0x0
.line 4
:try_start_6
invoke-virtual {p0}, Ljava/lang/String;->getBytes()[B
move-result-object p0
const/4 v2, 0x0
move v3, v2
move v4, v3
move v5, v4
.line 8
:goto_e
array-length v6, p0
if-ge v3, v6, :cond_98
const/4 v6, 0x4
if-ge v4, v6, :cond_77
.line 10
aget-byte v7, p0, v3
invoke-static {v7}, Lio/dcloud/common/util/Base64;->decodeInt(I)I
move-result v7
:try_end_1a
.catch Ljava/lang/Exception; {:try_start_6 .. :try_end_1a} :catch_af
.catchall {:try_start_6 .. :try_end_1a} :catchall_a5
const/4 v8, -0x1
if-ne v7, v8, :cond_1f
goto/16 :goto_94
:cond_1f
const/4 v8, 0x3
const/4 v9, 0x2
const/4 v10, -0x2
if-ne v7, v10, :cond_31
if-eq v4, v9, :cond_31
if-eq v4, v8, :cond_31
.line 53
:try_start_28
invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->close()V
:try_end_2b
.catch Ljava/io/IOException; {:try_start_28 .. :try_end_2b} :catch_2c
goto :goto_30
:catch_2c
move-exception p0
.line 55
invoke-virtual {p0}, Ljava/io/IOException;->printStackTrace()V
:goto_30
return-object v1
:cond_31
if-ne v7, v10, :cond_4b
if-ne v4, v9, :cond_4b
shr-int/lit8 p0, v5, 0x4
.line 56
:try_start_37
invoke-static {p0}, Lio/dcloud/common/util/Base64;->eightbit(I)I
move-result p0
invoke-virtual {v0, p0}, Ljava/io/ByteArrayOutputStream;->write(I)V
.line 57
invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object p0
:try_end_42
.catch Ljava/lang/Exception; {:try_start_37 .. :try_end_42} :catch_af
.catchall {:try_start_37 .. :try_end_42} :catchall_a5
.line 91
:try_start_42
invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->close()V
:try_end_45
.catch Ljava/io/IOException; {:try_start_42 .. :try_end_45} :catch_46
goto :goto_4a
:catch_46
move-exception v0
.line 93
invoke-virtual {v0}, Ljava/io/IOException;->printStackTrace()V
:goto_4a
return-object p0
:cond_4b
if-ne v7, v10, :cond_6e
if-ne v4, v8, :cond_6e
shr-int/lit8 p0, v5, 0xa
.line 94
:try_start_51
invoke-static {p0}, Lio/dcloud/common/util/Base64;->eightbit(I)I
move-result p0
invoke-virtual {v0, p0}, Ljava/io/ByteArrayOutputStream;->write(I)V
shr-int/lit8 p0, v5, 0x2
.line 95
invoke-static {p0}, Lio/dcloud/common/util/Base64;->eightbit(I)I
move-result p0
invoke-virtual {v0, p0}, Ljava/io/ByteArrayOutputStream;->write(I)V
.line 96
invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object p0
:try_end_65
.catch Ljava/lang/Exception; {:try_start_51 .. :try_end_65} :catch_af
.catchall {:try_start_51 .. :try_end_65} :catchall_a5
.line 122
:try_start_65
invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->close()V
:try_end_68
.catch Ljava/io/IOException; {:try_start_65 .. :try_end_68} :catch_69
goto :goto_6d
:catch_69
move-exception v0
.line 124
invoke-virtual {v0}, Ljava/io/IOException;->printStackTrace()V
:goto_6d
return-object p0
:cond_6e
shl-int/lit8 v5, v5, 0x6
.line 125
:try_start_70
invoke-static {v7}, Lio/dcloud/common/util/Base64;->sixbit(I)I
move-result v7
or-int/2addr v5, v7
add-int/lit8 v4, v4, 0x1
:cond_77
if-ne v4, v6, :cond_94
shr-int/lit8 v4, v5, 0x10
.line 133
invoke-static {v4}, Lio/dcloud/common/util/Base64;->eightbit(I)I
move-result v4
invoke-virtual {v0, v4}, Ljava/io/ByteArrayOutputStream;->write(I)V
shr-int/lit8 v4, v5, 0x8
.line 134
invoke-static {v4}, Lio/dcloud/common/util/Base64;->eightbit(I)I
move-result v4
invoke-virtual {v0, v4}, Ljava/io/ByteArrayOutputStream;->write(I)V
.line 135
invoke-static {v5}, Lio/dcloud/common/util/Base64;->eightbit(I)I
move-result v4
invoke-virtual {v0, v4}, Ljava/io/ByteArrayOutputStream;->write(I)V
move v4, v2
move v5, v4
:cond_94
:goto_94
add-int/lit8 v3, v3, 0x1
goto/16 :goto_e
.line 142
:cond_98
invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object p0
:try_end_9c
.catch Ljava/lang/Exception; {:try_start_70 .. :try_end_9c} :catch_af
.catchall {:try_start_70 .. :try_end_9c} :catchall_a5
.line 148
:try_start_9c
invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->close()V
:try_end_9f
.catch Ljava/io/IOException; {:try_start_9c .. :try_end_9f} :catch_a0
goto :goto_a4
:catch_a0
move-exception v0
.line 150
invoke-virtual {v0}, Ljava/io/IOException;->printStackTrace()V
:goto_a4
return-object p0
:catchall_a5
move-exception p0
.line 151
:try_start_a6
invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->close()V
:try_end_a9
.catch Ljava/io/IOException; {:try_start_a6 .. :try_end_a9} :catch_aa
goto :goto_ae
:catch_aa
move-exception v0
.line 153
invoke-virtual {v0}, Ljava/io/IOException;->printStackTrace()V
.line 156
:goto_ae
throw p0
.line 157
:catch_af
:try_start_af
invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->close()V
:try_end_b2
.catch Ljava/io/IOException; {:try_start_af .. :try_end_b2} :catch_b3
goto :goto_b7
:catch_b3
move-exception p0
.line 159
invoke-virtual {p0}, Ljava/io/IOException;->printStackTrace()V
:goto_b7
return-object v1
.end method
.method private static decodeInt(I)I
.registers 3
const/16 v0, 0x41
if-lt p0, v0, :cond_a
const/16 v1, 0x5a
if-gt p0, v1, :cond_a
sub-int/2addr p0, v0
return p0
:cond_a
const/16 v0, 0x61
if-lt p0, v0, :cond_16
const/16 v1, 0x7a
if-gt p0, v1, :cond_16
sub-int/2addr p0, v0
add-int/lit8 p0, p0, 0x1a
return p0
:cond_16
const/16 v0, 0x30
if-lt p0, v0, :cond_22
const/16 v1, 0x39
if-gt p0, v1, :cond_22
sub-int/2addr p0, v0
add-int/lit8 p0, p0, 0x34
return p0
:cond_22
const/16 v0, 0x2b
if-ne p0, v0, :cond_29
const/16 p0, 0x3e
return p0
:cond_29
const/16 v0, 0x2f
if-ne p0, v0, :cond_30
const/16 p0, 0x3f
return p0
:cond_30
const/16 v0, 0x3d
if-ne p0, v0, :cond_36
const/4 p0, -0x2
return p0
:cond_36
const/4 p0, -0x1
return p0
.end method
.method public static decodeString(Ljava/lang/String;ZI)Ljava/lang/String;
.registers 3
.line 1
invoke-static {p0, p1, p2}, Lio/dcloud/f/a;->a(Ljava/lang/String;ZI)Ljava/lang/String;
move-result-object p0
return-object p0
.end method
.method private static eightbit(I)I
.registers 1
and-int/lit16 p0, p0, 0xff
return p0
.end method
.method public static encode(Ljava/lang/String;)Ljava/lang/String;
.registers 2
:try_start_0
const-string v0, "utf-8"
.line 1
invoke-virtual {p0, v0}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B
move-result-object p0
invoke-static {p0}, Lio/dcloud/common/util/Base64;->encode([B)Ljava/lang/String;
move-result-object p0
:try_end_a
.catch Ljava/io/UnsupportedEncodingException; {:try_start_0 .. :try_end_a} :catch_b
return-object p0
:catch_b
const/4 p0, 0x0
return-object p0
.end method
.method public static encode([B)Ljava/lang/String;
.registers 7
.line 2
new-instance v0, Ljava/lang/StringBuffer;
invoke-direct {v0}, Ljava/lang/StringBuffer;-><init>()V
const/4 v1, 0x0
.line 6
:goto_6
array-length v2, p0
if-ge v1, v2, :cond_c8
.line 9
rem-int/lit8 v2, v1, 0x39
if-nez v2, :cond_14
if-eqz v1, :cond_14
const-string v2, "\r\n"
.line 10
invoke-virtual {v0, v2}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
.line 11
:cond_14
array-length v2, p0
add-int/lit8 v3, v1, 0x1
const/16 v4, 0x3d
if-gt v2, v3, :cond_43
.line 12
aget-byte v2, p0, v1
invoke-static {v2}, Lio/dcloud/common/util/Base64;->eightbit(I)I
move-result v2
shl-int/lit8 v2, v2, 0x10
.line 13
sget-object v3, Lio/dcloud/common/util/Base64;->BASE64CHARS:[C
shr-int/lit8 v5, v2, 0x12
invoke-static {v5}, Lio/dcloud/common/util/Base64;->sixbit(I)I
move-result v5
aget-char v5, v3, v5
invoke-virtual {v0, v5}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
shr-int/lit8 v2, v2, 0xc
.line 14
invoke-static {v2}, Lio/dcloud/common/util/Base64;->sixbit(I)I
move-result v2
aget-char v2, v3, v2
invoke-virtual {v0, v2}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
.line 15
invoke-virtual {v0, v4}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
.line 16
invoke-virtual {v0, v4}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
goto/16 :goto_c4
.line 18
:cond_43
array-length v2, p0
add-int/lit8 v5, v1, 0x2
if-gt v2, v5, :cond_80
.line 19
aget-byte v2, p0, v1
invoke-static {v2}, Lio/dcloud/common/util/Base64;->eightbit(I)I
move-result v2
shl-int/lit8 v2, v2, 0x10
aget-byte v3, p0, v3
invoke-static {v3}, Lio/dcloud/common/util/Base64;->eightbit(I)I
move-result v3
shl-int/lit8 v3, v3, 0x8
or-int/2addr v2, v3
.line 20
sget-object v3, Lio/dcloud/common/util/Base64;->BASE64CHARS:[C
shr-int/lit8 v5, v2, 0x12
invoke-static {v5}, Lio/dcloud/common/util/Base64;->sixbit(I)I
move-result v5
aget-char v5, v3, v5
invoke-virtual {v0, v5}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
shr-int/lit8 v5, v2, 0xc
.line 21
invoke-static {v5}, Lio/dcloud/common/util/Base64;->sixbit(I)I
move-result v5
aget-char v5, v3, v5
invoke-virtual {v0, v5}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
shr-int/lit8 v2, v2, 0x6
.line 22
invoke-static {v2}, Lio/dcloud/common/util/Base64;->sixbit(I)I
move-result v2
aget-char v2, v3, v2
invoke-virtual {v0, v2}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
.line 23
invoke-virtual {v0, v4}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
goto :goto_c4
.line 26
:cond_80
aget-byte v2, p0, v1
invoke-static {v2}, Lio/dcloud/common/util/Base64;->eightbit(I)I
move-result v2
shl-int/lit8 v2, v2, 0x10
aget-byte v3, p0, v3
invoke-static {v3}, Lio/dcloud/common/util/Base64;->eightbit(I)I
move-result v3
shl-int/lit8 v3, v3, 0x8
or-int/2addr v2, v3
aget-byte v3, p0, v5
invoke-static {v3}, Lio/dcloud/common/util/Base64;->eightbit(I)I
move-result v3
or-int/2addr v2, v3
.line 27
sget-object v3, Lio/dcloud/common/util/Base64;->BASE64CHARS:[C
shr-int/lit8 v4, v2, 0x12
invoke-static {v4}, Lio/dcloud/common/util/Base64;->sixbit(I)I
move-result v4
aget-char v4, v3, v4
invoke-virtual {v0, v4}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
shr-int/lit8 v4, v2, 0xc
.line 28
invoke-static {v4}, Lio/dcloud/common/util/Base64;->sixbit(I)I
move-result v4
aget-char v4, v3, v4
invoke-virtual {v0, v4}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
shr-int/lit8 v4, v2, 0x6
.line 29
invoke-static {v4}, Lio/dcloud/common/util/Base64;->sixbit(I)I
move-result v4
aget-char v4, v3, v4
invoke-virtual {v0, v4}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
.line 30
invoke-static {v2}, Lio/dcloud/common/util/Base64;->sixbit(I)I
move-result v2
aget-char v2, v3, v2
invoke-virtual {v0, v2}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
:goto_c4
add-int/lit8 v1, v1, 0x3
goto/16 :goto_6
.line 33
:cond_c8
invoke-virtual {v0}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
move-result-object p0
return-object p0
.end method
.method public static encodeString(Ljava/lang/String;ZI)Ljava/lang/String;
.registers 3
.line 1
invoke-static {p0, p1, p2}, Lio/dcloud/f/a;->b(Ljava/lang/String;ZI)Ljava/lang/String;
move-result-object p0
return-object p0
.end method
.method private static sixbit(I)I
.registers 1
and-int/lit8 p0, p0, 0x3f
return p0
.end method