Base64.smali

.class public Lcom/cleanmaster/commons/Base64;
.super Ljava/lang/Object;
.source "Base64.java"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lcom/cleanmaster/commons/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_PADDING:I = 0x1

.field public static final NO_WRAP:I = 0x2

.field public static final URL_SAFE:I = 0x8

.field private static base64DecodeChars:[B


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

    .prologue
    .line 762
    const/16 v0, 0x80

    new-array v0, v0, [B

    fill-array-data v0, :array_a

    sput-object v0, Lcom/cleanmaster/commons/Base64;->base64DecodeChars:[B

    return-void

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

    .line 740
    return-void
.end method

.method public static decode(Ljava/lang/String;)[B
    .registers 10

    .prologue
    const/16 v8, 0x3d

    const/4 v7, -0x1

    .line 821
    invoke-virtual {p0}, Ljava/lang/String;->getBytes()[B

    move-result-object v2

    .line 822
    array-length v3, v2

    .line 823
    new-instance v4, Ljava/io/ByteArrayOutputStream;

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

    .line 824
    const/4 v0, 0x0

    .line 826
    :goto_e
    if-ge v0, v3, :cond_1e

    .line 830
    :goto_10
    sget-object v5, Lcom/cleanmaster/commons/Base64;->base64DecodeChars:[B

    add-int/lit8 v1, v0, 0x1

    aget-byte v0, v2, v0

    aget-byte v5, v5, v0

    .line 832
    if-ge v1, v3, :cond_1c

    if-eq v5, v7, :cond_7f

    .line 833
    :cond_1c
    if-ne v5, v7, :cond_24

    .line 872
    :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 839
    :cond_24
    sget-object v6, Lcom/cleanmaster/commons/Base64;->base64DecodeChars:[B

    add-int/lit8 v0, v1, 0x1

    aget-byte v1, v2, v1

    aget-byte v6, v6, v1

    .line 840
    if-ge v0, v3, :cond_30

    if-eq v6, v7, :cond_23

    .line 841
    :cond_30
    if-eq v6, v7, :cond_1e

    .line 844
    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 848
    :goto_3c
    add-int/lit8 v1, v0, 0x1

    aget-byte v0, v2, v0

    .line 849
    if-ne v0, v8, :cond_47

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

    move-result-object v0

    goto :goto_22

    .line 852
    :cond_47
    sget-object v5, Lcom/cleanmaster/commons/Base64;->base64DecodeChars:[B

    aget-byte v5, v5, v0

    .line 853
    if-ge v1, v3, :cond_4f

    if-eq v5, v7, :cond_7d

    .line 854
    :cond_4f
    if-eq v5, v7, :cond_1e

    .line 857
    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 861
    :goto_5d
    add-int/lit8 v0, v1, 0x1

    aget-byte v1, v2, v1

    .line 862
    if-ne v1, v8, :cond_68

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

    move-result-object v0

    goto :goto_22

    .line 865
    :cond_68
    sget-object v6, Lcom/cleanmaster/commons/Base64;->base64DecodeChars:[B

    aget-byte v1, v6, v1

    .line 866
    if-ge v0, v3, :cond_70

    if-eq v1, v7, :cond_7b

    .line 867
    :cond_70
    if-eq v1, v7, :cond_1e

    .line 870
    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