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