Base64$Decoder.smali

.class Lcom/cleanmaster/base/util/compress/Base64$Decoder;
.super Lcom/cleanmaster/base/util/compress/Base64$Coder;
.source "Base64.java"


# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Lcom/cleanmaster/base/util/compress/Base64;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x8
    name = "Decoder"
.end annotation


# static fields
.field private static final DECODE:[I

.field private static final DECODE_WEBSAFE:[I

.field private static final EQUALS:I = -0x2

.field private static final SKIP:I = -0x1


# instance fields
.field private final alphabet:[I

.field private state:I

.field private value:I


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

    .prologue
    const/16 v1, 0x100

    .line 189
    new-array v0, v1, [I

    fill-array-data v0, :array_12

    sput-object v0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->DECODE:[I

    .line 205
    new-array v0, v1, [I

    fill-array-data v0, :array_216

    sput-object v0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->DECODE_WEBSAFE:[I

    return-void

    .line 189
    nop

    :array_12
    .array-data 4
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        0x3e
        -0x1
        -0x1
        -0x1
        0x3f
        0x34
        0x35
        0x36
        0x37
        0x38
        0x39
        0x3a
        0x3b
        0x3c
        0x3d
        -0x1
        -0x1
        -0x1
        -0x2
        -0x1
        -0x1
        -0x1
        0x0
        0x1
        0x2
        0x3
        0x4
        0x5
        0x6
        0x7
        0x8
        0x9
        0xa
        0xb
        0xc
        0xd
        0xe
        0xf
        0x10
        0x11
        0x12
        0x13
        0x14
        0x15
        0x16
        0x17
        0x18
        0x19
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        0x1a
        0x1b
        0x1c
        0x1d
        0x1e
        0x1f
        0x20
        0x21
        0x22
        0x23
        0x24
        0x25
        0x26
        0x27
        0x28
        0x29
        0x2a
        0x2b
        0x2c
        0x2d
        0x2e
        0x2f
        0x30
        0x31
        0x32
        0x33
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
    .end array-data

    .line 205
    :array_216
    .array-data 4
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        0x3e
        -0x1
        -0x1
        0x34
        0x35
        0x36
        0x37
        0x38
        0x39
        0x3a
        0x3b
        0x3c
        0x3d
        -0x1
        -0x1
        -0x1
        -0x2
        -0x1
        -0x1
        -0x1
        0x0
        0x1
        0x2
        0x3
        0x4
        0x5
        0x6
        0x7
        0x8
        0x9
        0xa
        0xb
        0xc
        0xd
        0xe
        0xf
        0x10
        0x11
        0x12
        0x13
        0x14
        0x15
        0x16
        0x17
        0x18
        0x19
        -0x1
        -0x1
        -0x1
        -0x1
        0x3f
        -0x1
        0x1a
        0x1b
        0x1c
        0x1d
        0x1e
        0x1f
        0x20
        0x21
        0x22
        0x23
        0x24
        0x25
        0x26
        0x27
        0x28
        0x29
        0x2a
        0x2b
        0x2c
        0x2d
        0x2e
        0x2f
        0x30
        0x31
        0x32
        0x33
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
        -0x1
    .end array-data
.end method

.method public constructor <init>(I[B)V
    .registers 5

    .prologue
    const/4 v1, 0x0

    .line 233
    invoke-direct {p0}, Lcom/cleanmaster/base/util/compress/Base64$Coder;-><init>()V

    .line 234
    iput-object p2, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->output:[B

    .line 236
    and-int/lit8 v0, p1, 0x8

    if-nez v0, :cond_13

    sget-object v0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->DECODE:[I

    :goto_c
    iput-object v0, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->alphabet:[I

    .line 237
    iput v1, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->state:I

    .line 238
    iput v1, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->value:I

    .line 239
    return-void

    .line 236
    :cond_13
    sget-object v0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->DECODE_WEBSAFE:[I

    goto :goto_c
.end method


# virtual methods
.method public maxOutputSize(I)I
    .registers 3

    .prologue
    .line 246
    mul-int/lit8 v0, p1, 0x3

    div-int/lit8 v0, v0, 0x4

    add-int/lit8 v0, v0, 0xa

    return v0
.end method

.method public process([BIIZ)Z
    .registers 15

    .prologue
    .line 256
    iget v0, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->state:I

    const/4 v1, 0x6

    if-ne v0, v1, :cond_7

    .line 257
    const/4 v0, 0x0

    .line 429
    :goto_6
    return v0

    .line 260
    :cond_7
    add-int v4, p3, p2

    .line 267
    iget v3, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->state:I

    .line 268
    iget v1, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->value:I

    .line 269
    const/4 v0, 0x0

    .line 270
    iget-object v5, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->output:[B

    .line 271
    iget-object v6, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->alphabet:[I

    move v2, p2

    .line 273
    :goto_13
    if-ge v2, v4, :cond_133

    .line 288
    if-nez v3, :cond_67

    .line 289
    :goto_17
    add-int/lit8 v7, v2, 0x4

    if-gt v7, v4, :cond_5a

    aget-byte v1, p1, v2

    and-int/lit16 v1, v1, 0xff

    aget v1, v6, v1

    shl-int/lit8 v1, v1, 0x12

    add-int/lit8 v7, v2, 0x1

    aget-byte v7, p1, v7

    and-int/lit16 v7, v7, 0xff

    aget v7, v6, v7

    shl-int/lit8 v7, v7, 0xc

    or-int/2addr v1, v7

    add-int/lit8 v7, v2, 0x2

    aget-byte v7, p1, v7

    and-int/lit16 v7, v7, 0xff

    aget v7, v6, v7

    shl-int/lit8 v7, v7, 0x6

    or-int/2addr v1, v7

    add-int/lit8 v7, v2, 0x3

    aget-byte v7, p1, v7

    and-int/lit16 v7, v7, 0xff

    aget v7, v6, v7

    or-int/2addr v1, v7

    if-ltz v1, :cond_5a

    .line 292
    add-int/lit8 v7, v0, 0x2

    int-to-byte v8, v1

    aput-byte v8, v5, v7

    .line 293
    add-int/lit8 v7, v0, 0x1

    shr-int/lit8 v8, v1, 0x8

    int-to-byte v8, v8

    aput-byte v8, v5, v7

    .line 294
    shr-int/lit8 v7, v1, 0x10

    int-to-byte v7, v7

    aput-byte v7, v5, v0

    .line 295
    add-int/lit8 v0, v0, 0x3

    .line 296
    add-int/lit8 v2, v2, 0x4

    goto :goto_17

    .line 298
    :cond_5a
    if-lt v2, v4, :cond_67

    move v2, v1

    .line 385
    :goto_5d
    if-nez p4, :cond_105

    .line 388
    iput v3, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->state:I

    .line 389
    iput v2, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->value:I

    .line 390
    iput v0, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->op:I

    .line 391
    const/4 v0, 0x1

    goto :goto_6

    .line 307
    :cond_67
    add-int/lit8 p2, v2, 0x1

    aget-byte v2, p1, v2

    and-int/lit16 v2, v2, 0xff

    aget v2, v6, v2

    .line 309
    packed-switch v3, :pswitch_data_136

    :cond_72
    move v2, v3

    :goto_73
    move v3, v2

    move v2, p2

    .line 383
    goto :goto_13

    .line 311
    :pswitch_76
    if-ltz v2, :cond_7e

    .line 313
    add-int/lit8 v1, v3, 0x1

    move v9, v2

    move v2, v1

    move v1, v9

    goto :goto_73

    .line 314
    :cond_7e
    const/4 v7, -0x1

    if-eq v2, v7, :cond_72

    .line 315
    const/4 v0, 0x6

    iput v0, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->state:I

    .line 316
    const/4 v0, 0x0

    goto :goto_6

    .line 321
    :pswitch_86
    if-ltz v2, :cond_8e

    .line 322
    shl-int/lit8 v1, v1, 0x6

    or-int/2addr v1, v2

    .line 323
    add-int/lit8 v2, v3, 0x1

    goto :goto_73

    .line 324
    :cond_8e
    const/4 v7, -0x1

    if-eq v2, v7, :cond_72

    .line 325
    const/4 v0, 0x6

    iput v0, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->state:I

    .line 326
    const/4 v0, 0x0

    goto/16 :goto_6

    .line 331
    :pswitch_97
    if-ltz v2, :cond_9f

    .line 332
    shl-int/lit8 v1, v1, 0x6

    or-int/2addr v1, v2

    .line 333
    add-int/lit8 v2, v3, 0x1

    goto :goto_73

    .line 334
    :cond_9f
    const/4 v7, -0x2

    if-ne v2, v7, :cond_ae

    .line 337
    add-int/lit8 v2, v0, 0x1

    shr-int/lit8 v3, v1, 0x4

    int-to-byte v3, v3

    aput-byte v3, v5, v0

    .line 338
    const/4 v0, 0x4

    move v9, v2

    move v2, v0

    move v0, v9

    goto :goto_73

    .line 339
    :cond_ae
    const/4 v7, -0x1

    if-eq v2, v7, :cond_72

    .line 340
    const/4 v0, 0x6

    iput v0, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->state:I

    .line 341
    const/4 v0, 0x0

    goto/16 :goto_6

    .line 346
    :pswitch_b7
    if-ltz v2, :cond_d1

    .line 348
    shl-int/lit8 v1, v1, 0x6

    or-int/2addr v1, v2

    .line 349
    add-int/lit8 v2, v0, 0x2

    int-to-byte v3, v1

    aput-byte v3, v5, v2

    .line 350
    add-int/lit8 v2, v0, 0x1

    shr-int/lit8 v3, v1, 0x8

    int-to-byte v3, v3

    aput-byte v3, v5, v2

    .line 351
    shr-int/lit8 v2, v1, 0x10

    int-to-byte v2, v2

    aput-byte v2, v5, v0

    .line 352
    add-int/lit8 v0, v0, 0x3

    .line 353
    const/4 v2, 0x0

    goto :goto_73

    .line 354
    :cond_d1
    const/4 v7, -0x2

    if-ne v2, v7, :cond_e4

    .line 357
    add-int/lit8 v2, v0, 0x1

    shr-int/lit8 v3, v1, 0x2

    int-to-byte v3, v3

    aput-byte v3, v5, v2

    .line 358
    shr-int/lit8 v2, v1, 0xa

    int-to-byte v2, v2

    aput-byte v2, v5, v0

    .line 359
    add-int/lit8 v0, v0, 0x2

    .line 360
    const/4 v2, 0x5

    goto :goto_73

    .line 361
    :cond_e4
    const/4 v7, -0x1

    if-eq v2, v7, :cond_72

    .line 362
    const/4 v0, 0x6

    iput v0, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->state:I

    .line 363
    const/4 v0, 0x0

    goto/16 :goto_6

    .line 368
    :pswitch_ed
    const/4 v7, -0x2

    if-ne v2, v7, :cond_f3

    .line 369
    add-int/lit8 v2, v3, 0x1

    goto :goto_73

    .line 370
    :cond_f3
    const/4 v7, -0x1

    if-eq v2, v7, :cond_72

    .line 371
    const/4 v0, 0x6

    iput v0, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->state:I

    .line 372
    const/4 v0, 0x0

    goto/16 :goto_6

    .line 377
    :pswitch_fc
    const/4 v7, -0x1

    if-eq v2, v7, :cond_72

    .line 378
    const/4 v0, 0x6

    iput v0, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->state:I

    .line 379
    const/4 v0, 0x0

    goto/16 :goto_6

    .line 397
    :cond_105
    packed-switch v3, :pswitch_data_146

    .line 427
    :goto_108
    :pswitch_108
    iput v3, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->state:I

    .line 428
    iput v0, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->op:I

    .line 429
    const/4 v0, 0x1

    goto/16 :goto_6

    .line 404
    :pswitch_10f
    const/4 v0, 0x6

    iput v0, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->state:I

    .line 405
    const/4 v0, 0x0

    goto/16 :goto_6

    .line 409
    :pswitch_115
    add-int/lit8 v1, v0, 0x1

    shr-int/lit8 v2, v2, 0x4

    int-to-byte v2, v2

    aput-byte v2, v5, v0

    move v0, v1

    .line 410
    goto :goto_108

    .line 414
    :pswitch_11e
    add-int/lit8 v1, v0, 0x1

    shr-int/lit8 v4, v2, 0xa

    int-to-byte v4, v4

    aput-byte v4, v5, v0

    .line 415
    add-int/lit8 v0, v1, 0x1

    shr-int/lit8 v2, v2, 0x2

    int-to-byte v2, v2

    aput-byte v2, v5, v1

    goto :goto_108

    .line 419
    :pswitch_12d
    const/4 v0, 0x6

    iput v0, p0, Lcom/cleanmaster/base/util/compress/Base64$Decoder;->state:I

    .line 420
    const/4 v0, 0x0

    goto/16 :goto_6

    :cond_133
    move v2, v1

    goto/16 :goto_5d

    .line 309
    :pswitch_data_136
    .packed-switch 0x0
        :pswitch_76
        :pswitch_86
        :pswitch_97
        :pswitch_b7
        :pswitch_ed
        :pswitch_fc
    .end packed-switch

    .line 397
    :pswitch_data_146
    .packed-switch 0x0
        :pswitch_108
        :pswitch_10f
        :pswitch_115
        :pswitch_11e
        :pswitch_12d
    .end packed-switch
.end method