BitSource.smali
.class public final Lcom/google/zxing/common/BitSource;
.super Ljava/lang/Object;
.source "BitSource.java"
# instance fields
.field private bitOffset:I
.field private byteOffset:I
.field private final bytes:[B
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>([B)V
.registers 2
.param p1, "bytes" # [B
.line 38
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 39
iput-object p1, p0, Lcom/google/zxing/common/BitSource;->bytes:[B
.line 40
return-void
.end method
# virtual methods
.method public available()I
.registers 3
.line 108
iget-object v0, p0, Lcom/google/zxing/common/BitSource;->bytes:[B
array-length v0, v0
iget v1, p0, Lcom/google/zxing/common/BitSource;->byteOffset:I
sub-int/2addr v0, v1
mul-int/lit8 v0, v0, 0x8
iget v1, p0, Lcom/google/zxing/common/BitSource;->bitOffset:I
sub-int/2addr v0, v1
return v0
.end method
.method public getBitOffset()I
.registers 2
.line 46
iget v0, p0, Lcom/google/zxing/common/BitSource;->bitOffset:I
return v0
.end method
.method public getByteOffset()I
.registers 2
.line 53
iget v0, p0, Lcom/google/zxing/common/BitSource;->byteOffset:I
return v0
.end method
.method public readBits(I)I
.registers 11
.param p1, "numBits" # I
.line 63
if-lez p1, :cond_69
const/16 v0, 0x20
if-gt p1, v0, :cond_69
invoke-virtual {p0}, Lcom/google/zxing/common/BitSource;->available()I
move-result v0
if-gt p1, v0, :cond_69
.line 67
const/4 v0, 0x0
.line 70
.local v0, "result":I
iget v1, p0, Lcom/google/zxing/common/BitSource;->bitOffset:I
const/16 v2, 0xff
const/16 v3, 0x8
if-lez v1, :cond_3b
.line 71
rsub-int/lit8 v1, v1, 0x8
.line 72
.local v1, "bitsLeft":I
if-ge p1, v1, :cond_1b
move v4, p1
goto :goto_1c
:cond_1b
move v4, v1
.line 73
.local v4, "toRead":I
:goto_1c
sub-int v5, v1, v4
.line 74
.local v5, "bitsToNotRead":I
rsub-int/lit8 v6, v4, 0x8
shr-int v6, v2, v6
shl-int/2addr v6, v5
.line 75
.local v6, "mask":I
iget-object v7, p0, Lcom/google/zxing/common/BitSource;->bytes:[B
iget v8, p0, Lcom/google/zxing/common/BitSource;->byteOffset:I
aget-byte v7, v7, v8
and-int/2addr v7, v6
shr-int v0, v7, v5
.line 76
sub-int/2addr p1, v4
.line 77
iget v7, p0, Lcom/google/zxing/common/BitSource;->bitOffset:I
add-int/2addr v7, v4
iput v7, p0, Lcom/google/zxing/common/BitSource;->bitOffset:I
.line 78
if-ne v7, v3, :cond_3b
.line 79
const/4 v7, 0x0
iput v7, p0, Lcom/google/zxing/common/BitSource;->bitOffset:I
.line 80
add-int/lit8 v8, v8, 0x1
iput v8, p0, Lcom/google/zxing/common/BitSource;->byteOffset:I
.line 85
.end local v1 # "bitsLeft":I
.end local v4 # "toRead":I
.end local v5 # "bitsToNotRead":I
.end local v6 # "mask":I
:cond_3b
if-lez p1, :cond_68
.line 86
:goto_3d
if-lt p1, v3, :cond_51
.line 87
shl-int/lit8 v1, v0, 0x8
iget-object v4, p0, Lcom/google/zxing/common/BitSource;->bytes:[B
iget v5, p0, Lcom/google/zxing/common/BitSource;->byteOffset:I
aget-byte v4, v4, v5
and-int/2addr v4, v2
or-int v0, v1, v4
.line 88
add-int/lit8 v5, v5, 0x1
iput v5, p0, Lcom/google/zxing/common/BitSource;->byteOffset:I
.line 89
add-int/lit8 p1, p1, -0x8
goto :goto_3d
.line 93
:cond_51
if-lez p1, :cond_68
.line 94
sub-int/2addr v3, p1
.line 95
.local v3, "bitsToNotRead":I
shr-int v1, v2, v3
shl-int/2addr v1, v3
.line 96
.local v1, "mask":I
shl-int v2, v0, p1
iget-object v4, p0, Lcom/google/zxing/common/BitSource;->bytes:[B
iget v5, p0, Lcom/google/zxing/common/BitSource;->byteOffset:I
aget-byte v4, v4, v5
and-int/2addr v4, v1
shr-int/2addr v4, v3
or-int v0, v2, v4
.line 97
iget v2, p0, Lcom/google/zxing/common/BitSource;->bitOffset:I
add-int/2addr v2, p1
iput v2, p0, Lcom/google/zxing/common/BitSource;->bitOffset:I
.line 101
.end local v1 # "mask":I
.end local v3 # "bitsToNotRead":I
:cond_68
return v0
.line 64
.end local v0 # "result":I
:cond_69
new-instance v0, Ljava/lang/IllegalArgumentException;
invoke-static {p1}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
goto :goto_74
:goto_73
throw v0
:goto_74
goto :goto_73
.end method