IndefiniteLengthInputStream.smali
.class Lorg/spongycastle/asn1/IndefiniteLengthInputStream;
.super Lorg/spongycastle/asn1/LimitedInputStream;
.source "IndefiniteLengthInputStream.java"
# instance fields
.field private _b1:I
.field private _b2:I
.field private _eofOn00:Z
.field private _eofReached:Z
# direct methods
.method constructor <init>(Ljava/io/InputStream;I)V
.registers 4
.prologue
.line 20
invoke-direct {p0, p1, p2}, Lorg/spongycastle/asn1/LimitedInputStream;-><init>(Ljava/io/InputStream;I)V
.line 12
const/4 v0, 0x0
iput-boolean v0, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_eofReached:Z
.line 13
const/4 v0, 0x1
iput-boolean v0, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_eofOn00:Z
.line 22
invoke-virtual {p1}, Ljava/io/InputStream;->read()I
move-result v0
iput v0, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_b1:I
.line 23
invoke-virtual {p1}, Ljava/io/InputStream;->read()I
move-result v0
iput v0, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_b2:I
.line 25
iget v0, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_b2:I
if-gez v0, :cond_1f
.line 28
new-instance v0, Ljava/io/EOFException;
invoke-direct {v0}, Ljava/io/EOFException;-><init>()V
throw v0
.line 31
:cond_1f
invoke-direct {p0}, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->checkForEof()Z
.line 32
return-void
.end method
.method private checkForEof()Z
.registers 3
.prologue
const/4 v1, 0x1
.line 43
iget-boolean v0, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_eofReached:Z
if-nez v0, :cond_16
iget-boolean v0, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_eofOn00:Z
if-eqz v0, :cond_16
iget v0, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_b1:I
if-nez v0, :cond_16
iget v0, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_b2:I
if-nez v0, :cond_16
.line 45
iput-boolean v1, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_eofReached:Z
.line 46
invoke-virtual {p0, v1}, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->setParentEofDetect(Z)V
.line 48
:cond_16
iget-boolean v0, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_eofReached:Z
return v0
.end method
# virtual methods
.method public read()I
.registers 4
.prologue
.line 91
invoke-direct {p0}, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->checkForEof()Z
move-result v0
if-eqz v0, :cond_8
.line 93
const/4 v0, -0x1
.line 109
:goto_7
return v0
.line 96
:cond_8
iget-object v0, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_in:Ljava/io/InputStream;
invoke-virtual {v0}, Ljava/io/InputStream;->read()I
move-result v1
.line 98
if-gez v1, :cond_16
.line 101
new-instance v0, Ljava/io/EOFException;
invoke-direct {v0}, Ljava/io/EOFException;-><init>()V
throw v0
.line 104
:cond_16
iget v0, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_b1:I
.line 106
iget v2, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_b2:I
iput v2, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_b1:I
.line 107
iput v1, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_b2:I
goto :goto_7
.end method
.method public read([BII)I
.registers 7
.prologue
.line 55
iget-boolean v0, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_eofOn00:Z
if-nez v0, :cond_7
const/4 v0, 0x3
if-ge p3, v0, :cond_c
.line 57
:cond_7
invoke-super {p0, p1, p2, p3}, Lorg/spongycastle/asn1/LimitedInputStream;->read([BII)I
move-result v0
.line 85
:goto_b
return v0
.line 60
:cond_c
iget-boolean v0, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_eofReached:Z
if-eqz v0, :cond_12
.line 62
const/4 v0, -0x1
goto :goto_b
.line 65
:cond_12
iget-object v0, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_in:Ljava/io/InputStream;
add-int/lit8 v1, p2, 0x2
add-int/lit8 v2, p3, -0x2
invoke-virtual {v0, p1, v1, v2}, Ljava/io/InputStream;->read([BII)I
move-result v0
.line 67
if-gez v0, :cond_24
.line 70
new-instance v0, Ljava/io/EOFException;
invoke-direct {v0}, Ljava/io/EOFException;-><init>()V
throw v0
.line 73
:cond_24
iget v1, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_b1:I
int-to-byte v1, v1
aput-byte v1, p1, p2
.line 74
add-int/lit8 v1, p2, 0x1
iget v2, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_b2:I
int-to-byte v2, v2
aput-byte v2, p1, v1
.line 76
iget-object v1, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_in:Ljava/io/InputStream;
invoke-virtual {v1}, Ljava/io/InputStream;->read()I
move-result v1
iput v1, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_b1:I
.line 77
iget-object v1, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_in:Ljava/io/InputStream;
invoke-virtual {v1}, Ljava/io/InputStream;->read()I
move-result v1
iput v1, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_b2:I
.line 79
iget v1, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_b2:I
if-gez v1, :cond_4a
.line 82
new-instance v0, Ljava/io/EOFException;
invoke-direct {v0}, Ljava/io/EOFException;-><init>()V
throw v0
.line 85
:cond_4a
add-int/lit8 v0, v0, 0x2
goto :goto_b
.end method
.method setEofOn00(Z)V
.registers 2
.prologue
.line 37
iput-boolean p1, p0, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->_eofOn00:Z
.line 38
invoke-direct {p0}, Lorg/spongycastle/asn1/IndefiniteLengthInputStream;->checkForEof()Z
.line 39
return-void
.end method