Base64$Encoder.smali
.class public Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;
.super Ljava/lang/Object;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/sdk/orion/ui/baselibrary/utils/Base64;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x9
name = "Encoder"
.end annotation
# static fields
.field private static final CRLF:[B
.field private static final MIMELINEMAX:I = 0x4c
.field static final RFC2045:Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;
.field static final RFC4648:Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;
.field static final RFC4648_URLSAFE:Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;
.field private static final TO_BASE64:[C
.field private static final TO_BASE64_URL:[C
# instance fields
.field private final doPadding:Z
.field private final isURL:Z
.field private final linemax:I
.field private final newline:[B
# direct methods
.method static constructor <clinit>()V
.registers 6
const/4 v5, 0x0
const/16 v2, 0x40
const/4 v4, 0x0
const/4 v1, -0x1
const/4 v3, 0x1
new-array v0, v2, [C
fill-array-data v0, :array_36
sput-object v0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->TO_BASE64:[C
new-array v0, v2, [C
fill-array-data v0, :array_7a
sput-object v0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->TO_BASE64_URL:[C
const/4 v0, 0x2
new-array v0, v0, [B
fill-array-data v0, :array_be
sput-object v0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->CRLF:[B
new-instance v0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;
invoke-direct {v0, v4, v5, v1, v3}, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;-><init>(Z[BIZ)V
sput-object v0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->RFC4648:Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;
new-instance v0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;
invoke-direct {v0, v3, v5, v1, v3}, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;-><init>(Z[BIZ)V
sput-object v0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->RFC4648_URLSAFE:Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;
new-instance v0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;
sget-object v1, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->CRLF:[B
const/16 v2, 0x4c
invoke-direct {v0, v4, v1, v2, v3}, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;-><init>(Z[BIZ)V
sput-object v0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->RFC2045:Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;
return-void
:array_36
.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
:array_7a
.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
0x2ds
0x5fs
.end array-data
:array_be
.array-data 1
0xdt
0xat
.end array-data
.end method
.method private constructor <init>(Z[BIZ)V
.registers 5
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
iput-boolean p1, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->isURL:Z
iput-object p2, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->newline:[B
iput p3, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->linemax:I
iput-boolean p4, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->doPadding:Z
return-void
.end method
.method synthetic constructor <init>(Z[BIZLcom/sdk/orion/ui/baselibrary/utils/Base64$1;)V
.registers 6
invoke-direct {p0, p1, p2, p3, p4}, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;-><init>(Z[BIZ)V
return-void
.end method
.method static synthetic access$200()[C
.registers 1
sget-object v0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->TO_BASE64:[C
return-object v0
.end method
.method static synthetic access$300()[C
.registers 1
sget-object v0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->TO_BASE64_URL:[C
return-object v0
.end method
.method private encode0([BII[B)I
.registers 15
iget-boolean v0, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->isURL:Z
if-eqz v0, :cond_72
sget-object v0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->TO_BASE64_URL:[C
:goto_6
sub-int v1, p3, p2
div-int/lit8 v1, v1, 0x3
mul-int/lit8 v1, v1, 0x3
add-int v6, p2, v1
const/4 v2, 0x3
const/4 v3, 0x4
iget v4, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->linemax:I
if-lez v4, :cond_21
iget v4, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->linemax:I
div-int v3, v4, v3
mul-int/2addr v2, v3
if-le v1, v2, :cond_21
iget v1, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->linemax:I
div-int/lit8 v1, v1, 0x4
mul-int/lit8 v1, v1, 0x3
:cond_21
const/4 v2, 0x0
move v5, p2
:goto_23
if-ge v5, v6, :cond_95
add-int v3, v5, v1
invoke-static {v3, v6}, Ljava/lang/Math;->min(II)I
move-result p2
move v3, v2
move v4, v5
:goto_2d
if-ge v4, p2, :cond_75
add-int/lit8 v7, v4, 0x1
aget-byte v4, p1, v4
and-int/lit16 v4, v4, 0xff
shl-int/lit8 v4, v4, 0x10
add-int/lit8 v8, v7, 0x1
aget-byte v7, p1, v7
and-int/lit16 v7, v7, 0xff
shl-int/lit8 v7, v7, 0x8
or-int/2addr v7, v4
add-int/lit8 v4, v8, 0x1
aget-byte v8, p1, v8
and-int/lit16 v8, v8, 0xff
or-int/2addr v7, v8
add-int/lit8 v8, v3, 0x1
ushr-int/lit8 v9, v7, 0x12
and-int/lit8 v9, v9, 0x3f
aget-char v9, v0, v9
int-to-byte v9, v9
aput-byte v9, p4, v3
add-int/lit8 v3, v8, 0x1
ushr-int/lit8 v9, v7, 0xc
and-int/lit8 v9, v9, 0x3f
aget-char v9, v0, v9
int-to-byte v9, v9
aput-byte v9, p4, v8
add-int/lit8 v8, v3, 0x1
ushr-int/lit8 v9, v7, 0x6
and-int/lit8 v9, v9, 0x3f
aget-char v9, v0, v9
int-to-byte v9, v9
aput-byte v9, p4, v3
add-int/lit8 v3, v8, 0x1
and-int/lit8 v7, v7, 0x3f
aget-char v7, v0, v7
int-to-byte v7, v7
aput-byte v7, p4, v8
goto :goto_2d
:cond_72
sget-object v0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->TO_BASE64:[C
goto :goto_6
:cond_75
sub-int v3, p2, v5
div-int/lit8 v3, v3, 0x3
mul-int/lit8 v3, v3, 0x4
add-int/2addr v2, v3
iget v4, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->linemax:I
if-ne v3, v4, :cond_93
if-ge p2, p3, :cond_93
iget-object v5, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->newline:[B
array-length v7, v5
const/4 v3, 0x0
:goto_86
if-ge v3, v7, :cond_93
aget-byte v8, v5, v3
add-int/lit8 v4, v2, 0x1
aput-byte v8, p4, v2
add-int/lit8 v2, v3, 0x1
move v3, v2
move v2, v4
goto :goto_86
:cond_93
move v5, p2
goto :goto_23
:cond_95
if-ge v5, p3, :cond_f0
add-int/lit8 v1, v5, 0x1
aget-byte v3, p1, v5
and-int/lit16 v3, v3, 0xff
add-int/lit8 v4, v2, 0x1
shr-int/lit8 v5, v3, 0x2
aget-char v5, v0, v5
int-to-byte v5, v5
aput-byte v5, p4, v2
if-ne v1, p3, :cond_c4
add-int/lit8 v1, v4, 0x1
shl-int/lit8 v2, v3, 0x4
and-int/lit8 v2, v2, 0x3f
aget-char v0, v0, v2
int-to-byte v0, v0
aput-byte v0, p4, v4
iget-boolean v0, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->doPadding:Z
if-eqz v0, :cond_ee
add-int/lit8 v2, v1, 0x1
const/16 v0, 0x3d
aput-byte v0, p4, v1
add-int/lit8 v0, v2, 0x1
const/16 v1, 0x3d
aput-byte v1, p4, v2
:goto_c3
return v0
:cond_c4
add-int/lit8 v2, v1, 0x1
aget-byte v1, p1, v1
and-int/lit16 v2, v1, 0xff
add-int/lit8 v5, v4, 0x1
shl-int/lit8 v1, v3, 0x4
and-int/lit8 v1, v1, 0x3f
shr-int/lit8 v3, v2, 0x4
or-int/2addr v1, v3
aget-char v1, v0, v1
int-to-byte v1, v1
aput-byte v1, p4, v4
add-int/lit8 v1, v5, 0x1
shl-int/lit8 v2, v2, 0x2
and-int/lit8 v2, v2, 0x3f
aget-char v0, v0, v2
int-to-byte v0, v0
aput-byte v0, p4, v5
iget-boolean v0, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->doPadding:Z
if-eqz v0, :cond_ee
add-int/lit8 v0, v1, 0x1
const/16 v2, 0x3d
aput-byte v2, p4, v1
goto :goto_c3
:cond_ee
move v0, v1
goto :goto_c3
:cond_f0
move v0, v2
goto :goto_c3
.end method
.method private outLength(I)I
.registers 5
iget-boolean v0, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->doPadding:Z
if-eqz v0, :cond_19
add-int/lit8 v0, p1, 0x2
div-int/lit8 v0, v0, 0x3
mul-int/lit8 v0, v0, 0x4
:goto_a
iget v1, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->linemax:I
if-lez v1, :cond_18
add-int/lit8 v1, v0, -0x1
iget v2, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->linemax:I
div-int/2addr v1, v2
iget-object v2, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->newline:[B
array-length v2, v2
mul-int/2addr v1, v2
add-int/2addr v0, v1
:cond_18
return v0
:cond_19
rem-int/lit8 v0, p1, 0x3
div-int/lit8 v1, p1, 0x3
mul-int/lit8 v1, v1, 0x4
if-nez v0, :cond_24
const/4 v0, 0x0
:goto_22
add-int/2addr v0, v1
goto :goto_a
:cond_24
add-int/lit8 v0, v0, 0x1
goto :goto_22
.end method
# virtual methods
.method public encode([B[B)I
.registers 5
array-length v0, p1
invoke-direct {p0, v0}, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->outLength(I)I
move-result v0
array-length v1, p2
if-ge v1, v0, :cond_11
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string/jumbo v1, "Output byte array is too small for encoding all input bytes"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
:cond_11
const/4 v0, 0x0
array-length v1, p1
invoke-direct {p0, p1, v0, v1, p2}, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->encode0([BII[B)I
move-result v0
return v0
.end method
.method public encode(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
.registers 7
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->remaining()I
move-result v0
invoke-direct {p0, v0}, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->outLength(I)I
move-result v0
new-array v1, v0, [B
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->hasArray()Z
move-result v0
if-eqz v0, :cond_3d
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->array()[B
move-result-object v0
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->arrayOffset()I
move-result v2
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->position()I
move-result v3
add-int/2addr v2, v3
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->arrayOffset()I
move-result v3
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->limit()I
move-result v4
add-int/2addr v3, v4
invoke-direct {p0, v0, v2, v3, v1}, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->encode0([BII[B)I
move-result v0
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->limit()I
move-result v2
invoke-virtual {p1, v2}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;
:goto_31
array-length v2, v1
if-eq v0, v2, :cond_4d
invoke-static {v1, v0}, Ljava/util/Arrays;->copyOf([BI)[B
move-result-object v0
:goto_38
invoke-static {v0}, Ljava/nio/ByteBuffer;->wrap([B)Ljava/nio/ByteBuffer;
move-result-object v0
return-object v0
:cond_3d
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->remaining()I
move-result v0
new-array v0, v0, [B
invoke-virtual {p1, v0}, Ljava/nio/ByteBuffer;->get([B)Ljava/nio/ByteBuffer;
const/4 v2, 0x0
array-length v3, v0
invoke-direct {p0, v0, v2, v3, v1}, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->encode0([BII[B)I
move-result v0
goto :goto_31
:cond_4d
move-object v0, v1
goto :goto_38
.end method
.method public encode([B)[B
.registers 5
array-length v0, p1
invoke-direct {p0, v0}, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->outLength(I)I
move-result v0
new-array v0, v0, [B
const/4 v1, 0x0
array-length v2, p1
invoke-direct {p0, p1, v1, v2, v0}, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->encode0([BII[B)I
move-result v1
array-length v2, v0
if-eq v1, v2, :cond_14
invoke-static {v0, v1}, Ljava/util/Arrays;->copyOf([BI)[B
move-result-object v0
:cond_14
return-object v0
.end method
.method public encodeToString([B)Ljava/lang/String;
.registers 6
const/4 v3, 0x0
invoke-virtual {p0, p1}, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->encode([B)[B
move-result-object v0
new-instance v1, Ljava/lang/String;
array-length v2, v0
invoke-direct {v1, v0, v3, v3, v2}, Ljava/lang/String;-><init>([BIII)V
return-object v1
.end method
.method public withoutPadding()Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;
.registers 6
iget-boolean v0, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->doPadding:Z
if-nez v0, :cond_5
:goto_4
return-object p0
:cond_5
new-instance v0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;
iget-boolean v1, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->isURL:Z
iget-object v2, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->newline:[B
iget v3, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->linemax:I
const/4 v4, 0x0
invoke-direct {v0, v1, v2, v3, v4}, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;-><init>(Z[BIZ)V
move-object p0, v0
goto :goto_4
.end method
.method public wrap(Ljava/io/OutputStream;)Ljava/io/OutputStream;
.registers 8
.annotation build Landroid/annotation/TargetApi;
value = 0x13
.end annotation
invoke-static {p1}, Ljava/util/Objects;->requireNonNull(Ljava/lang/Object;)Ljava/lang/Object;
new-instance v0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$EncOutputStream;
iget-boolean v1, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->isURL:Z
if-eqz v1, :cond_16
sget-object v2, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->TO_BASE64_URL:[C
:goto_b
iget-object v3, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->newline:[B
iget v4, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->linemax:I
iget-boolean v5, p0, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->doPadding:Z
move-object v1, p1
invoke-direct/range {v0 .. v5}, Lcom/sdk/orion/ui/baselibrary/utils/Base64$EncOutputStream;-><init>(Ljava/io/OutputStream;[C[BIZ)V
return-object v0
:cond_16
sget-object v2, Lcom/sdk/orion/ui/baselibrary/utils/Base64$Encoder;->TO_BASE64:[C
goto :goto_b
.end method