Base64$Encoder.smali
.class Lcom/alivc/rtc/device/utils/Base64$Encoder;
.super Lcom/alivc/rtc/device/utils/Base64$Coder;
.source "Base64.java"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/alivc/rtc/device/utils/Base64;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x8
name = "Encoder"
.end annotation
# static fields
.field static final synthetic $assertionsDisabled:Z = false
.field private static final ENCODE:[B
.field private static final ENCODE_WEBSAFE:[B
.field public static final LINE_GROUPS:I = 0x13
# instance fields
.field private final alphabet:[B
.field private count:I
.field public final do_cr:Z
.field public final do_newline:Z
.field public final do_padding:Z
.field private final tail:[B
.field tailLen:I
# direct methods
.method static constructor <clinit>()V
.registers 2
.line 92
const-class v0, Lcom/alivc/rtc/device/utils/Base64;
.line 94
const/16 v0, 0x40
new-array v1, v0, [B
fill-array-data v1, :array_14
sput-object v1, Lcom/alivc/rtc/device/utils/Base64$Encoder;->ENCODE:[B
.line 95
new-array v0, v0, [B
fill-array-data v0, :array_38
sput-object v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->ENCODE_WEBSAFE:[B
return-void
nop
:array_14
.array-data 1
0x41t
0x42t
0x43t
0x44t
0x45t
0x46t
0x47t
0x48t
0x49t
0x4at
0x4bt
0x4ct
0x4dt
0x4et
0x4ft
0x50t
0x51t
0x52t
0x53t
0x54t
0x55t
0x56t
0x57t
0x58t
0x59t
0x5at
0x61t
0x62t
0x63t
0x64t
0x65t
0x66t
0x67t
0x68t
0x69t
0x6at
0x6bt
0x6ct
0x6dt
0x6et
0x6ft
0x70t
0x71t
0x72t
0x73t
0x74t
0x75t
0x76t
0x77t
0x78t
0x79t
0x7at
0x30t
0x31t
0x32t
0x33t
0x34t
0x35t
0x36t
0x37t
0x38t
0x39t
0x2bt
0x2ft
.end array-data
:array_38
.array-data 1
0x41t
0x42t
0x43t
0x44t
0x45t
0x46t
0x47t
0x48t
0x49t
0x4at
0x4bt
0x4ct
0x4dt
0x4et
0x4ft
0x50t
0x51t
0x52t
0x53t
0x54t
0x55t
0x56t
0x57t
0x58t
0x59t
0x5at
0x61t
0x62t
0x63t
0x64t
0x65t
0x66t
0x67t
0x68t
0x69t
0x6at
0x6bt
0x6ct
0x6dt
0x6et
0x6ft
0x70t
0x71t
0x72t
0x73t
0x74t
0x75t
0x76t
0x77t
0x78t
0x79t
0x7at
0x30t
0x31t
0x32t
0x33t
0x34t
0x35t
0x36t
0x37t
0x38t
0x39t
0x2dt
0x5ft
.end array-data
.end method
.method public constructor <init>(I[B)V
.registers 6
.param p1, "flags" # I
.param p2, "output" # [B
.line 104
invoke-direct {p0}, Lcom/alivc/rtc/device/utils/Base64$Coder;-><init>()V
.line 105
iput-object p2, p0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->output:[B
.line 106
and-int/lit8 v0, p1, 0x1
const/4 v1, 0x0
const/4 v2, 0x1
if-nez v0, :cond_d
const/4 v0, 0x1
goto :goto_e
:cond_d
const/4 v0, 0x0
:goto_e
iput-boolean v0, p0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->do_padding:Z
.line 107
and-int/lit8 v0, p1, 0x2
if-nez v0, :cond_16
const/4 v0, 0x1
goto :goto_17
:cond_16
const/4 v0, 0x0
:goto_17
iput-boolean v0, p0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->do_newline:Z
.line 108
and-int/lit8 v0, p1, 0x4
if-eqz v0, :cond_1e
goto :goto_1f
:cond_1e
const/4 v2, 0x0
:goto_1f
iput-boolean v2, p0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->do_cr:Z
.line 109
and-int/lit8 v0, p1, 0x8
if-nez v0, :cond_28
sget-object v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->ENCODE:[B
goto :goto_2a
:cond_28
sget-object v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->ENCODE_WEBSAFE:[B
:goto_2a
iput-object v0, p0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->alphabet:[B
.line 110
const/4 v0, 0x2
new-array v0, v0, [B
iput-object v0, p0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tail:[B
.line 111
iput v1, p0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tailLen:I
.line 112
iget-boolean v0, p0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->do_newline:Z
if-eqz v0, :cond_3a
const/16 v0, 0x13
goto :goto_3b
:cond_3a
const/4 v0, -0x1
:goto_3b
iput v0, p0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->count:I
.line 113
return-void
.end method
# virtual methods
.method public maxOutputSize(I)I
.registers 3
.param p1, "len" # I
.line 116
mul-int/lit8 v0, p1, 0x8
div-int/lit8 v0, v0, 0x5
add-int/lit8 v0, v0, 0xa
return v0
.end method
.method public process([BIIZ)Z
.registers 23
.param p1, "input" # [B
.param p2, "offset" # I
.param p3, "len" # I
.param p4, "finish" # Z
.line 120
move-object/from16 v0, p0
iget-object v1, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->alphabet:[B
.line 121
.local v1, "alphabet":[B
iget-object v2, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->output:[B
.line 122
.local v2, "output":[B
const/4 v3, 0x0
.line 123
.local v3, "op":I
iget v4, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->count:I
.line 124
.local v4, "count":I
move/from16 v5, p2
.line 125
.local v5, "p":I
add-int v6, p3, p2
.line 126
.end local p3 # "len":I
.local v6, "len":I
const/4 v7, -0x1
.line 128
.local v7, "v":I
iget v8, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tailLen:I
const/4 v9, 0x0
const/4 v10, 0x2
const/4 v11, 0x1
if-eq v8, v11, :cond_36
if-eq v8, v10, :cond_18
.line 131
goto :goto_56
.line 141
:cond_18
add-int/lit8 v8, p2, 0x1
if-gt v8, v6, :cond_56
.line 142
iget-object v8, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tail:[B
aget-byte v12, v8, v9
and-int/lit16 v12, v12, 0xff
shl-int/lit8 v12, v12, 0x10
aget-byte v8, v8, v11
and-int/lit16 v8, v8, 0xff
shl-int/lit8 v8, v8, 0x8
or-int/2addr v8, v12
.line 143
.local v8, "var10000":I
add-int/lit8 v5, p2, 0x1
.line 144
aget-byte v12, p1, p2
and-int/lit16 v12, v12, 0xff
or-int v7, v8, v12
.line 145
iput v9, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tailLen:I
goto :goto_56
.line 133
.end local v8 # "var10000":I
:cond_36
add-int/lit8 v8, p2, 0x2
if-gt v8, v6, :cond_56
.line 134
iget-object v8, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tail:[B
aget-byte v8, v8, v9
and-int/lit16 v8, v8, 0xff
shl-int/lit8 v8, v8, 0x10
.line 135
.restart local v8 # "var10000":I
add-int/lit8 v5, p2, 0x1
.line 136
aget-byte v12, p1, p2
and-int/lit16 v12, v12, 0xff
shl-int/lit8 v12, v12, 0x8
or-int/2addr v12, v8
add-int/lit8 v13, v5, 0x1
.end local v5 # "p":I
.local v13, "p":I
aget-byte v5, p1, v5
and-int/lit16 v5, v5, 0xff
or-int v7, v12, v5
.line 137
iput v9, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tailLen:I
move v5, v13
.line 149
.end local v8 # "var10000":I
.end local v13 # "p":I
.restart local v5 # "p":I
:cond_56
:goto_56
const/4 v8, -0x1
const/16 v9, 0xd
const/16 v12, 0xa
if-eq v7, v8, :cond_97
.line 150
add-int/lit8 v8, v3, 0x1
.end local v3 # "op":I
.local v8, "op":I
shr-int/lit8 v13, v7, 0x12
and-int/lit8 v13, v13, 0x3f
aget-byte v13, v1, v13
aput-byte v13, v2, v3
.line 151
add-int/lit8 v3, v8, 0x1
.end local v8 # "op":I
.restart local v3 # "op":I
shr-int/lit8 v13, v7, 0xc
and-int/lit8 v13, v13, 0x3f
aget-byte v13, v1, v13
aput-byte v13, v2, v8
.line 152
add-int/lit8 v8, v3, 0x1
.end local v3 # "op":I
.restart local v8 # "op":I
shr-int/lit8 v13, v7, 0x6
and-int/lit8 v13, v13, 0x3f
aget-byte v13, v1, v13
aput-byte v13, v2, v3
.line 153
add-int/lit8 v3, v8, 0x1
.end local v8 # "op":I
.restart local v3 # "op":I
and-int/lit8 v13, v7, 0x3f
aget-byte v13, v1, v13
aput-byte v13, v2, v8
.line 154
add-int/lit8 v4, v4, -0x1
.line 155
if-nez v4, :cond_97
.line 156
iget-boolean v8, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->do_cr:Z
if-eqz v8, :cond_90
.line 157
add-int/lit8 v8, v3, 0x1
.end local v3 # "op":I
.restart local v8 # "op":I
aput-byte v9, v2, v3
move v3, v8
.line 160
.end local v8 # "op":I
.restart local v3 # "op":I
:cond_90
add-int/lit8 v8, v3, 0x1
.end local v3 # "op":I
.restart local v8 # "op":I
aput-byte v12, v2, v3
.line 161
const/16 v4, 0x13
move v3, v8
.line 165
.end local v8 # "op":I
.restart local v3 # "op":I
:cond_97
:goto_97
add-int/lit8 v8, v5, 0x3
if-gt v8, v6, :cond_ef
.line 166
aget-byte v8, p1, v5
and-int/lit16 v8, v8, 0xff
shl-int/lit8 v8, v8, 0x10
add-int/lit8 v13, v5, 0x1
aget-byte v13, p1, v13
and-int/lit16 v13, v13, 0xff
shl-int/lit8 v13, v13, 0x8
or-int/2addr v8, v13
add-int/lit8 v13, v5, 0x2
aget-byte v13, p1, v13
and-int/lit16 v13, v13, 0xff
or-int v7, v8, v13
.line 167
shr-int/lit8 v8, v7, 0x12
and-int/lit8 v8, v8, 0x3f
aget-byte v8, v1, v8
aput-byte v8, v2, v3
.line 168
add-int/lit8 v8, v3, 0x1
shr-int/lit8 v13, v7, 0xc
and-int/lit8 v13, v13, 0x3f
aget-byte v13, v1, v13
aput-byte v13, v2, v8
.line 169
add-int/lit8 v8, v3, 0x2
shr-int/lit8 v13, v7, 0x6
and-int/lit8 v13, v13, 0x3f
aget-byte v13, v1, v13
aput-byte v13, v2, v8
.line 170
add-int/lit8 v8, v3, 0x3
and-int/lit8 v13, v7, 0x3f
aget-byte v13, v1, v13
aput-byte v13, v2, v8
.line 171
add-int/lit8 v5, v5, 0x3
.line 172
add-int/lit8 v3, v3, 0x4
.line 173
add-int/lit8 v4, v4, -0x1
.line 174
if-nez v4, :cond_97
.line 175
iget-boolean v8, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->do_cr:Z
if-eqz v8, :cond_e7
.line 176
add-int/lit8 v8, v3, 0x1
.end local v3 # "op":I
.restart local v8 # "op":I
aput-byte v9, v2, v3
move v3, v8
.line 179
.end local v8 # "op":I
.restart local v3 # "op":I
:cond_e7
add-int/lit8 v8, v3, 0x1
.end local v3 # "op":I
.restart local v8 # "op":I
aput-byte v12, v2, v3
.line 180
const/16 v4, 0x13
move v3, v8
goto :goto_97
.line 184
.end local v8 # "op":I
.restart local v3 # "op":I
:cond_ef
if-eqz p4, :cond_1d9
.line 186
iget v8, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tailLen:I
sub-int v13, v5, v8
add-int/lit8 v14, v6, -0x1
const/16 v15, 0x3d
if-ne v13, v14, :cond_14a
.line 187
const/4 v10, 0x0
.line 188
.local v10, "t":I
if-lez v8, :cond_106
iget-object v8, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tail:[B
add-int/lit8 v13, v10, 0x1
.end local v10 # "t":I
.local v13, "t":I
aget-byte v8, v8, v10
move v10, v13
goto :goto_10f
.end local v13 # "t":I
.restart local v10 # "t":I
:cond_106
add-int/lit8 v8, v5, 0x1
.end local v5 # "p":I
.local v8, "p":I
aget-byte v5, p1, v5
move/from16 v17, v8
move v8, v5
move/from16 v5, v17
.end local v8 # "p":I
.restart local v5 # "p":I
:goto_10f
and-int/lit16 v8, v8, 0xff
shl-int/lit8 v7, v8, 0x4
.line 189
iget v8, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tailLen:I
sub-int/2addr v8, v10
iput v8, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tailLen:I
.line 190
add-int/lit8 v8, v3, 0x1
.end local v3 # "op":I
.local v8, "op":I
shr-int/lit8 v13, v7, 0x6
and-int/lit8 v13, v13, 0x3f
aget-byte v13, v1, v13
aput-byte v13, v2, v3
.line 191
add-int/lit8 v3, v8, 0x1
.end local v8 # "op":I
.restart local v3 # "op":I
and-int/lit8 v13, v7, 0x3f
aget-byte v13, v1, v13
aput-byte v13, v2, v8
.line 192
iget-boolean v8, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->do_padding:Z
if-eqz v8, :cond_136
.line 193
add-int/lit8 v8, v3, 0x1
.end local v3 # "op":I
.restart local v8 # "op":I
aput-byte v15, v2, v3
.line 194
add-int/lit8 v3, v8, 0x1
.end local v8 # "op":I
.restart local v3 # "op":I
aput-byte v15, v2, v8
.line 197
:cond_136
iget-boolean v8, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->do_newline:Z
if-eqz v8, :cond_1d7
.line 198
iget-boolean v8, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->do_cr:Z
if-eqz v8, :cond_143
.line 199
add-int/lit8 v8, v3, 0x1
.end local v3 # "op":I
.restart local v8 # "op":I
aput-byte v9, v2, v3
move v3, v8
.line 202
.end local v8 # "op":I
.restart local v3 # "op":I
:cond_143
add-int/lit8 v8, v3, 0x1
.end local v3 # "op":I
.restart local v8 # "op":I
aput-byte v12, v2, v3
move v3, v8
goto/16 :goto_1d7
.line 204
.end local v8 # "op":I
.end local v10 # "t":I
.restart local v3 # "op":I
:cond_14a
sub-int v13, v5, v8
add-int/lit8 v14, v6, -0x2
if-ne v13, v14, :cond_1bf
.line 205
const/4 v13, 0x0
.line 206
.restart local v13 # "t":I
if-le v8, v11, :cond_15b
iget-object v8, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tail:[B
add-int/lit8 v14, v13, 0x1
.end local v13 # "t":I
.local v14, "t":I
aget-byte v8, v8, v13
move v13, v14
goto :goto_164
.end local v14 # "t":I
.restart local v13 # "t":I
:cond_15b
add-int/lit8 v8, v5, 0x1
.end local v5 # "p":I
.local v8, "p":I
aget-byte v5, p1, v5
move/from16 v17, v8
move v8, v5
move/from16 v5, v17
.end local v8 # "p":I
.restart local v5 # "p":I
:goto_164
and-int/lit16 v8, v8, 0xff
shl-int/2addr v8, v12
iget v14, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tailLen:I
if-lez v14, :cond_172
iget-object v14, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tail:[B
add-int/lit8 v16, v13, 0x1
.end local v13 # "t":I
.local v16, "t":I
aget-byte v13, v14, v13
goto :goto_17a
.end local v16 # "t":I
.restart local v13 # "t":I
:cond_172
add-int/lit8 v14, v5, 0x1
.end local v5 # "p":I
.local v14, "p":I
aget-byte v5, p1, v5
move/from16 v16, v13
move v13, v5
move v5, v14
.end local v13 # "t":I
.end local v14 # "p":I
.restart local v5 # "p":I
.restart local v16 # "t":I
:goto_17a
and-int/lit16 v13, v13, 0xff
shl-int/lit8 v10, v13, 0x2
or-int v7, v8, v10
.line 207
iget v8, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tailLen:I
sub-int v8, v8, v16
iput v8, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tailLen:I
.line 208
add-int/lit8 v8, v3, 0x1
.end local v3 # "op":I
.local v8, "op":I
shr-int/lit8 v10, v7, 0xc
and-int/lit8 v10, v10, 0x3f
aget-byte v10, v1, v10
aput-byte v10, v2, v3
.line 209
add-int/lit8 v3, v8, 0x1
.end local v8 # "op":I
.restart local v3 # "op":I
shr-int/lit8 v10, v7, 0x6
and-int/lit8 v10, v10, 0x3f
aget-byte v10, v1, v10
aput-byte v10, v2, v8
.line 210
add-int/lit8 v8, v3, 0x1
.end local v3 # "op":I
.restart local v8 # "op":I
and-int/lit8 v10, v7, 0x3f
aget-byte v10, v1, v10
aput-byte v10, v2, v3
.line 211
iget-boolean v3, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->do_padding:Z
if-eqz v3, :cond_1ab
.line 212
add-int/lit8 v3, v8, 0x1
.end local v8 # "op":I
.restart local v3 # "op":I
aput-byte v15, v2, v8
move v8, v3
.line 215
.end local v3 # "op":I
.restart local v8 # "op":I
:cond_1ab
iget-boolean v3, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->do_newline:Z
if-eqz v3, :cond_1bd
.line 216
iget-boolean v3, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->do_cr:Z
if-eqz v3, :cond_1b8
.line 217
add-int/lit8 v3, v8, 0x1
.end local v8 # "op":I
.restart local v3 # "op":I
aput-byte v9, v2, v8
move v8, v3
.line 220
.end local v3 # "op":I
.restart local v8 # "op":I
:cond_1b8
add-int/lit8 v3, v8, 0x1
.end local v8 # "op":I
.restart local v3 # "op":I
aput-byte v12, v2, v8
goto :goto_1d7
.line 215
.end local v3 # "op":I
.restart local v8 # "op":I
:cond_1bd
move v3, v8
goto :goto_1d7
.line 222
.end local v8 # "op":I
.end local v16 # "t":I
.restart local v3 # "op":I
:cond_1bf
iget-boolean v8, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->do_newline:Z
if-eqz v8, :cond_1d7
if-lez v3, :cond_1d7
const/16 v8, 0x13
if-eq v4, v8, :cond_1d7
.line 223
iget-boolean v8, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->do_cr:Z
if-eqz v8, :cond_1d2
.line 224
add-int/lit8 v8, v3, 0x1
.end local v3 # "op":I
.restart local v8 # "op":I
aput-byte v9, v2, v3
move v3, v8
.line 227
.end local v8 # "op":I
.restart local v3 # "op":I
:cond_1d2
add-int/lit8 v8, v3, 0x1
.end local v3 # "op":I
.restart local v8 # "op":I
aput-byte v12, v2, v3
move v3, v8
.line 230
.end local v8 # "op":I
.restart local v3 # "op":I
:cond_1d7
:goto_1d7
nop
.line 232
goto :goto_204
.line 233
:cond_1d9
add-int/lit8 v8, v6, -0x1
if-ne v5, v8, :cond_1ea
.line 234
iget-object v8, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tail:[B
iget v9, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tailLen:I
add-int/lit8 v10, v9, 0x1
iput v10, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tailLen:I
aget-byte v10, p1, v5
aput-byte v10, v8, v9
goto :goto_204
.line 235
:cond_1ea
add-int/lit8 v8, v6, -0x2
if-ne v5, v8, :cond_204
.line 236
iget-object v8, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tail:[B
iget v9, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tailLen:I
add-int/lit8 v10, v9, 0x1
iput v10, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tailLen:I
aget-byte v12, p1, v5
aput-byte v12, v8, v9
.line 237
add-int/lit8 v9, v10, 0x1
iput v9, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->tailLen:I
add-int/lit8 v9, v5, 0x1
aget-byte v9, p1, v9
aput-byte v9, v8, v10
.line 240
:cond_204
:goto_204
iput v3, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->op:I
.line 241
iput v4, v0, Lcom/alivc/rtc/device/utils/Base64$Encoder;->count:I
.line 242
return v11
.end method