Base64.smali

.class public Lcom/iflytek/cloud/msc/util/Base64;
.super Ljava/lang/Object;
.source "SourceFile"


# static fields
.field private static base64DecodeChars:[B

.field private static final base64EncodeChars:[C


# direct methods
.method static constructor <clinit>()V
    .registers 1

    .prologue
    .line 6
    const/16 v0, 0x40

    new-array v0, v0, [C

    fill-array-data v0, :array_14

    sput-object v0, Lcom/iflytek/cloud/msc/util/Base64;->base64EncodeChars:[C

    .line 16
    const/16 v0, 0x80

    new-array v0, v0, [B

    fill-array-data v0, :array_58

    sput-object v0, Lcom/iflytek/cloud/msc/util/Base64;->base64DecodeChars:[B

    return-void

    .line 6
    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 16
    :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 26
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

.method public static decode([B)[B
    .registers 9

    .prologue
    const/16 v7, 0x3d

    const/4 v6, -0x1

    .line 64
    array-length v2, p0

    .line 65
    new-instance v3, Ljava/io/ByteArrayOutputStream;

    invoke-direct {v3, v2}, Ljava/io/ByteArrayOutputStream;-><init>(I)V

    .line 66
    const/4 v0, 0x0

    .line 69
    :goto_a
    if-ge v0, v2, :cond_1a

    .line 73
    :goto_c
    sget-object v4, Lcom/iflytek/cloud/msc/util/Base64;->base64DecodeChars:[B

    add-int/lit8 v1, v0, 0x1

    aget-byte v0, p0, v0

    aget-byte v4, v4, v0

    .line 74
    if-ge v1, v2, :cond_18

    if-eq v4, v6, :cond_7b

    .line 75
    :cond_18
    if-ne v4, v6, :cond_20

    .line 114
    :cond_1a
    invoke-virtual {v3}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B

    move-result-object v0

    :goto_1e
    return-object v0

    :cond_1f
    move v1, v0

    .line 81
    :cond_20
    sget-object v5, Lcom/iflytek/cloud/msc/util/Base64;->base64DecodeChars:[B

    add-int/lit8 v0, v1, 0x1

    aget-byte v1, p0, v1

    aget-byte v5, v5, v1

    .line 82
    if-ge v0, v2, :cond_2c

    if-eq v5, v6, :cond_1f

    .line 83
    :cond_2c
    if-eq v5, v6, :cond_1a

    .line 86
    shl-int/lit8 v1, v4, 0x2

    and-int/lit8 v4, v5, 0x30

    ushr-int/lit8 v4, v4, 0x4

    or-int/2addr v1, v4

    invoke-virtual {v3, v1}, Ljava/io/ByteArrayOutputStream;->write(I)V

    .line 90
    :goto_38
    add-int/lit8 v1, v0, 0x1

    aget-byte v0, p0, v0

    .line 91
    if-ne v0, v7, :cond_43

    .line 92
    invoke-virtual {v3}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B

    move-result-object v0

    goto :goto_1e

    .line 94
    :cond_43
    sget-object v4, Lcom/iflytek/cloud/msc/util/Base64;->base64DecodeChars:[B

    aget-byte v4, v4, v0

    .line 95
    if-ge v1, v2, :cond_4b

    if-eq v4, v6, :cond_79

    .line 96
    :cond_4b
    if-eq v4, v6, :cond_1a

    .line 99
    and-int/lit8 v0, v5, 0xf

    shl-int/lit8 v0, v0, 0x4

    and-int/lit8 v5, v4, 0x3c

    ushr-int/lit8 v5, v5, 0x2

    or-int/2addr v0, v5

    invoke-virtual {v3, v0}, Ljava/io/ByteArrayOutputStream;->write(I)V

    .line 103
    :goto_59
    add-int/lit8 v0, v1, 0x1

    aget-byte v1, p0, v1

    .line 104
    if-ne v1, v7, :cond_64

    .line 105
    invoke-virtual {v3}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B

    move-result-object v0

    goto :goto_1e

    .line 107
    :cond_64
    sget-object v5, Lcom/iflytek/cloud/msc/util/Base64;->base64DecodeChars:[B

    aget-byte v1, v5, v1

    .line 108
    if-ge v0, v2, :cond_6c

    if-eq v1, v6, :cond_77

    .line 109
    :cond_6c
    if-eq v1, v6, :cond_1a

    .line 112
    and-int/lit8 v4, v4, 0x3

    shl-int/lit8 v4, v4, 0x6

    or-int/2addr v1, v4

    invoke-virtual {v3, v1}, Ljava/io/ByteArrayOutputStream;->write(I)V

    goto :goto_a

    :cond_77
    move v1, v0

    goto :goto_59

    :cond_79
    move v0, v1

    goto :goto_38

    :cond_7b
    move v0, v1

    goto :goto_c
.end method

.method public static encode([B)Ljava/lang/String;
    .registers 9

    .prologue
    .line 30
    new-instance v1, Ljava/lang/StringBuffer;

    invoke-direct {v1}, Ljava/lang/StringBuffer;-><init>()V

    .line 31
    array-length v2, p0

    .line 32
    const/4 v0, 0x0

    .line 35
    :goto_7
    if-ge v0, v2, :cond_2a

    .line 36
    add-int/lit8 v3, v0, 0x1

    aget-byte v0, p0, v0

    and-int/lit16 v4, v0, 0xff

    .line 37
    if-ne v3, v2, :cond_2f

    .line 38
    sget-object v0, Lcom/iflytek/cloud/msc/util/Base64;->base64EncodeChars:[C

    ushr-int/lit8 v2, v4, 0x2

    aget-char v0, v0, v2

    invoke-virtual {v1, v0}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;

    .line 39
    sget-object v0, Lcom/iflytek/cloud/msc/util/Base64;->base64EncodeChars:[C

    and-int/lit8 v2, v4, 0x3

    shl-int/lit8 v2, v2, 0x4

    aget-char v0, v0, v2

    invoke-virtual {v1, v0}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;

    .line 40
    const-string v0, "=="

    invoke-virtual {v1, v0}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    .line 60
    :cond_2a
    :goto_2a
    invoke-virtual {v1}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;

    move-result-object v0

    return-object v0

    .line 43
    :cond_2f
    add-int/lit8 v5, v3, 0x1

    aget-byte v0, p0, v3

    and-int/lit16 v3, v0, 0xff

    .line 44
    if-ne v5, v2, :cond_61

    .line 45
    sget-object v0, Lcom/iflytek/cloud/msc/util/Base64;->base64EncodeChars:[C

    ushr-int/lit8 v2, v4, 0x2

    aget-char v0, v0, v2

    invoke-virtual {v1, v0}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;

    .line 46
    sget-object v0, Lcom/iflytek/cloud/msc/util/Base64;->base64EncodeChars:[C

    and-int/lit8 v2, v4, 0x3

    shl-int/lit8 v2, v2, 0x4

    and-int/lit16 v4, v3, 0xf0

    ushr-int/lit8 v4, v4, 0x4

    or-int/2addr v2, v4

    aget-char v0, v0, v2

    invoke-virtual {v1, v0}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;

    .line 48
    sget-object v0, Lcom/iflytek/cloud/msc/util/Base64;->base64EncodeChars:[C

    and-int/lit8 v2, v3, 0xf

    shl-int/lit8 v2, v2, 0x2

    aget-char v0, v0, v2

    invoke-virtual {v1, v0}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;

    .line 49
    const-string v0, "="

    invoke-virtual {v1, v0}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    goto :goto_2a

    .line 52
    :cond_61
    add-int/lit8 v0, v5, 0x1

    aget-byte v5, p0, v5

    and-int/lit16 v5, v5, 0xff

    .line 53
    sget-object v6, Lcom/iflytek/cloud/msc/util/Base64;->base64EncodeChars:[C

    ushr-int/lit8 v7, v4, 0x2

    aget-char v6, v6, v7

    invoke-virtual {v1, v6}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;

    .line 54
    sget-object v6, Lcom/iflytek/cloud/msc/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 {v1, v4}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;

    .line 56
    sget-object v4, Lcom/iflytek/cloud/msc/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 {v1, v3}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;

    .line 58
    sget-object v3, Lcom/iflytek/cloud/msc/util/Base64;->base64EncodeChars:[C

    and-int/lit8 v4, v5, 0x3f

    aget-char v3, v3, v4

    invoke-virtual {v1, v3}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;

    goto/16 :goto_7
.end method