Base64$EncOutputStream.smali
.class Lcom/sdk/orion/utils/Base64$EncOutputStream;
.super Ljava/io/FilterOutputStream;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/sdk/orion/utils/Base64;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0xa
name = "EncOutputStream"
.end annotation
# instance fields
.field private b0:I
.field private b1:I
.field private b2:I
.field private final base64:[C
.field private closed:Z
.field private final doPadding:Z
.field private leftover:I
.field private final linemax:I
.field private linepos:I
.field private final newline:[B
# direct methods
.method constructor <init>(Ljava/io/OutputStream;[C[BIZ)V
.registers 7
const/4 v0, 0x0
invoke-direct {p0, p1}, Ljava/io/FilterOutputStream;-><init>(Ljava/io/OutputStream;)V
iput v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->leftover:I
iput-boolean v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->closed:Z
iput v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->linepos:I
iput-object p2, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->base64:[C
iput-object p3, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->newline:[B
iput p4, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->linemax:I
iput-boolean p5, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->doPadding:Z
return-void
.end method
.method private checkNewline()V
.registers 3
iget v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->linepos:I
iget v1, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->linemax:I
if-ne v0, v1, :cond_10
iget-object v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->out:Ljava/io/OutputStream;
iget-object v1, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->newline:[B
invoke-virtual {v0, v1}, Ljava/io/OutputStream;->write([B)V
const/4 v0, 0x0
iput v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->linepos:I
:cond_10
return-void
.end method
# virtual methods
.method public close()V
.registers 6
const/4 v1, 0x1
const/16 v4, 0x3d
iget-boolean v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->closed:Z
if-nez v0, :cond_42
iput-boolean v1, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->closed:Z
iget v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->leftover:I
if-ne v0, v1, :cond_43
invoke-direct {p0}, Lcom/sdk/orion/utils/Base64$EncOutputStream;->checkNewline()V
iget-object v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->out:Ljava/io/OutputStream;
iget-object v1, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->base64:[C
iget v2, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->b0:I
shr-int/lit8 v2, v2, 0x2
aget-char v1, v1, v2
invoke-virtual {v0, v1}, Ljava/io/OutputStream;->write(I)V
iget-object v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->out:Ljava/io/OutputStream;
iget-object v1, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->base64:[C
iget v2, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->b0:I
shl-int/lit8 v2, v2, 0x4
and-int/lit8 v2, v2, 0x3f
aget-char v1, v1, v2
invoke-virtual {v0, v1}, Ljava/io/OutputStream;->write(I)V
iget-boolean v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->doPadding:Z
if-eqz v0, :cond_3a
iget-object v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->out:Ljava/io/OutputStream;
invoke-virtual {v0, v4}, Ljava/io/OutputStream;->write(I)V
iget-object v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->out:Ljava/io/OutputStream;
invoke-virtual {v0, v4}, Ljava/io/OutputStream;->write(I)V
:cond_3a
:goto_3a
const/4 v0, 0x0
iput v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->leftover:I
iget-object v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->out:Ljava/io/OutputStream;
invoke-virtual {v0}, Ljava/io/OutputStream;->close()V
:cond_42
return-void
:cond_43
iget v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->leftover:I
const/4 v1, 0x2
if-ne v0, v1, :cond_3a
invoke-direct {p0}, Lcom/sdk/orion/utils/Base64$EncOutputStream;->checkNewline()V
iget-object v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->out:Ljava/io/OutputStream;
iget-object v1, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->base64:[C
iget v2, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->b0:I
shr-int/lit8 v2, v2, 0x2
aget-char v1, v1, v2
invoke-virtual {v0, v1}, Ljava/io/OutputStream;->write(I)V
iget-object v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->out:Ljava/io/OutputStream;
iget-object v1, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->base64:[C
iget v2, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->b0:I
shl-int/lit8 v2, v2, 0x4
and-int/lit8 v2, v2, 0x3f
iget v3, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->b1:I
shr-int/lit8 v3, v3, 0x4
or-int/2addr v2, v3
aget-char v1, v1, v2
invoke-virtual {v0, v1}, Ljava/io/OutputStream;->write(I)V
iget-object v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->out:Ljava/io/OutputStream;
iget-object v1, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->base64:[C
iget v2, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->b1:I
shl-int/lit8 v2, v2, 0x2
and-int/lit8 v2, v2, 0x3f
aget-char v1, v1, v2
invoke-virtual {v0, v1}, Ljava/io/OutputStream;->write(I)V
iget-boolean v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->doPadding:Z
if-eqz v0, :cond_3a
iget-object v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->out:Ljava/io/OutputStream;
invoke-virtual {v0, v4}, Ljava/io/OutputStream;->write(I)V
goto :goto_3a
.end method
.method public write(I)V
.registers 6
const/4 v3, 0x1
const/4 v2, 0x0
new-array v0, v3, [B
int-to-byte v1, p1
aput-byte v1, v0, v2
invoke-virtual {p0, v0, v2, v3}, Lcom/sdk/orion/utils/Base64$EncOutputStream;->write([BII)V
return-void
.end method
.method public write([BII)V
.registers 10
const/4 v5, 0x1
iget-boolean v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->closed:Z
if-eqz v0, :cond_e
new-instance v0, Ljava/io/IOException;
const-string/jumbo v1, "Stream is closed"
invoke-direct {v0, v1}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v0
:cond_e
if-ltz p2, :cond_17
if-ltz p3, :cond_17
add-int v0, p2, p3
array-length v1, p1
if-le v0, v1, :cond_1d
:cond_17
new-instance v0, Ljava/lang/ArrayIndexOutOfBoundsException;
invoke-direct {v0}, Ljava/lang/ArrayIndexOutOfBoundsException;-><init>()V
throw v0
:cond_1d
if-nez p3, :cond_20
:cond_1f
:goto_1f
return-void
:cond_20
iget v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->leftover:I
if-eqz v0, :cond_92
iget v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->leftover:I
if-ne v0, v5, :cond_3c
add-int/lit8 v0, p2, 0x1
aget-byte v1, p1, p2
and-int/lit16 v1, v1, 0xff
iput v1, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->b1:I
add-int/lit8 p3, p3, -0x1
if-nez p3, :cond_3b
iget v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->leftover:I
add-int/lit8 v0, v0, 0x1
iput v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->leftover:I
goto :goto_1f
:cond_3b
move p2, v0
:cond_3c
add-int/lit8 v0, p2, 0x1
aget-byte v1, p1, p2
and-int/lit16 v1, v1, 0xff
iput v1, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->b2:I
add-int/lit8 p3, p3, -0x1
invoke-direct {p0}, Lcom/sdk/orion/utils/Base64$EncOutputStream;->checkNewline()V
iget-object v1, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->out:Ljava/io/OutputStream;
iget-object v2, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->base64:[C
iget v3, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->b0:I
shr-int/lit8 v3, v3, 0x2
aget-char v2, v2, v3
invoke-virtual {v1, v2}, Ljava/io/OutputStream;->write(I)V
iget-object v1, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->out:Ljava/io/OutputStream;
iget-object v2, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->base64:[C
iget v3, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->b0:I
shl-int/lit8 v3, v3, 0x4
and-int/lit8 v3, v3, 0x3f
iget v4, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->b1:I
shr-int/lit8 v4, v4, 0x4
or-int/2addr v3, v4
aget-char v2, v2, v3
invoke-virtual {v1, v2}, Ljava/io/OutputStream;->write(I)V
iget-object v1, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->out:Ljava/io/OutputStream;
iget-object v2, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->base64:[C
iget v3, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->b1:I
shl-int/lit8 v3, v3, 0x2
and-int/lit8 v3, v3, 0x3f
iget v4, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->b2:I
shr-int/lit8 v4, v4, 0x6
or-int/2addr v3, v4
aget-char v2, v2, v3
invoke-virtual {v1, v2}, Ljava/io/OutputStream;->write(I)V
iget-object v1, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->out:Ljava/io/OutputStream;
iget-object v2, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->base64:[C
iget v3, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->b2:I
and-int/lit8 v3, v3, 0x3f
aget-char v2, v2, v3
invoke-virtual {v1, v2}, Ljava/io/OutputStream;->write(I)V
iget v1, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->linepos:I
add-int/lit8 v1, v1, 0x4
iput v1, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->linepos:I
move p2, v0
:cond_92
div-int/lit8 v0, p3, 0x3
mul-int/lit8 v1, v0, 0x3
sub-int v1, p3, v1
iput v1, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->leftover:I
:goto_9a
add-int/lit8 v1, v0, -0x1
if-lez v0, :cond_f3
invoke-direct {p0}, Lcom/sdk/orion/utils/Base64$EncOutputStream;->checkNewline()V
add-int/lit8 v0, p2, 0x1
aget-byte v2, p1, p2
and-int/lit16 v2, v2, 0xff
shl-int/lit8 v2, v2, 0x10
add-int/lit8 v3, v0, 0x1
aget-byte v0, p1, v0
and-int/lit16 v0, v0, 0xff
shl-int/lit8 v0, v0, 0x8
or-int/2addr v0, v2
add-int/lit8 p2, v3, 0x1
aget-byte v2, p1, v3
and-int/lit16 v2, v2, 0xff
or-int/2addr v0, v2
iget-object v2, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->out:Ljava/io/OutputStream;
iget-object v3, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->base64:[C
ushr-int/lit8 v4, v0, 0x12
and-int/lit8 v4, v4, 0x3f
aget-char v3, v3, v4
invoke-virtual {v2, v3}, Ljava/io/OutputStream;->write(I)V
iget-object v2, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->out:Ljava/io/OutputStream;
iget-object v3, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->base64:[C
ushr-int/lit8 v4, v0, 0xc
and-int/lit8 v4, v4, 0x3f
aget-char v3, v3, v4
invoke-virtual {v2, v3}, Ljava/io/OutputStream;->write(I)V
iget-object v2, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->out:Ljava/io/OutputStream;
iget-object v3, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->base64:[C
ushr-int/lit8 v4, v0, 0x6
and-int/lit8 v4, v4, 0x3f
aget-char v3, v3, v4
invoke-virtual {v2, v3}, Ljava/io/OutputStream;->write(I)V
iget-object v2, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->out:Ljava/io/OutputStream;
iget-object v3, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->base64:[C
and-int/lit8 v0, v0, 0x3f
aget-char v0, v3, v0
invoke-virtual {v2, v0}, Ljava/io/OutputStream;->write(I)V
iget v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->linepos:I
add-int/lit8 v0, v0, 0x4
iput v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->linepos:I
move v0, v1
goto :goto_9a
:cond_f3
iget v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->leftover:I
if-ne v0, v5, :cond_ff
aget-byte v0, p1, p2
and-int/lit16 v0, v0, 0xff
iput v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->b0:I
goto/16 :goto_1f
:cond_ff
iget v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->leftover:I
const/4 v1, 0x2
if-ne v0, v1, :cond_1f
add-int/lit8 v0, p2, 0x1
aget-byte v1, p1, p2
and-int/lit16 v1, v1, 0xff
iput v1, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->b0:I
aget-byte v0, p1, v0
and-int/lit16 v0, v0, 0xff
iput v0, p0, Lcom/sdk/orion/utils/Base64$EncOutputStream;->b1:I
goto/16 :goto_1f
.end method