DataBlock.smali
.class final Lcom/google/zxing/qrcode/decoder/DataBlock;
.super Ljava/lang/Object;
.source "DataBlock.java"
# instance fields
.field private final codewords:[B
.field private final numDataCodewords:I
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method private constructor <init>(I[B)V
.registers 3
.param p1, "numDataCodewords" # I
.param p2, "codewords" # [B
.line 31
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 32
iput p1, p0, Lcom/google/zxing/qrcode/decoder/DataBlock;->numDataCodewords:I
.line 33
iput-object p2, p0, Lcom/google/zxing/qrcode/decoder/DataBlock;->codewords:[B
.line 34
return-void
.end method
.method static getDataBlocks([BLcom/google/zxing/qrcode/decoder/Version;Lcom/google/zxing/qrcode/decoder/ErrorCorrectionLevel;)[Lcom/google/zxing/qrcode/decoder/DataBlock;
.registers 19
.param p0, "rawCodewords" # [B
.param p1, "version" # Lcom/google/zxing/qrcode/decoder/Version;
.param p2, "ecLevel" # Lcom/google/zxing/qrcode/decoder/ErrorCorrectionLevel;
.line 51
move-object/from16 v0, p0
array-length v1, v0
invoke-virtual/range {p1 .. p1}, Lcom/google/zxing/qrcode/decoder/Version;->getTotalCodewords()I
move-result v2
if-ne v1, v2, :cond_b7
.line 57
invoke-virtual/range {p1 .. p2}, Lcom/google/zxing/qrcode/decoder/Version;->getECBlocksForLevel(Lcom/google/zxing/qrcode/decoder/ErrorCorrectionLevel;)Lcom/google/zxing/qrcode/decoder/Version$ECBlocks;
move-result-object v1
.line 60
.local v1, "ecBlocks":Lcom/google/zxing/qrcode/decoder/Version$ECBlocks;
const/4 v2, 0x0
.line 61
.local v2, "totalBlocks":I
invoke-virtual {v1}, Lcom/google/zxing/qrcode/decoder/Version$ECBlocks;->getECBlocks()[Lcom/google/zxing/qrcode/decoder/Version$ECB;
move-result-object v3
const/4 v4, 0x0
.line 62
.local v4, "ecBlockArray":[Lcom/google/zxing/qrcode/decoder/Version$ECB;
move-object v4, v3
array-length v5, v3
const/4 v6, 0x0
const/4 v7, 0x0
:goto_17
if-ge v7, v5, :cond_23
aget-object v8, v3, v7
.line 63
.local v8, "ecBlock":Lcom/google/zxing/qrcode/decoder/Version$ECB;
invoke-virtual {v8}, Lcom/google/zxing/qrcode/decoder/Version$ECB;->getCount()I
move-result v9
add-int/2addr v2, v9
.line 62
.end local v8 # "ecBlock":Lcom/google/zxing/qrcode/decoder/Version$ECB;
add-int/lit8 v7, v7, 0x1
goto :goto_17
.line 67
:cond_23
new-array v3, v2, [Lcom/google/zxing/qrcode/decoder/DataBlock;
.line 68
.local v3, "result":[Lcom/google/zxing/qrcode/decoder/DataBlock;
const/4 v5, 0x0
.line 69
.local v5, "numResultBlocks":I
array-length v7, v4
const/4 v8, 0x0
:goto_28
if-ge v8, v7, :cond_4e
aget-object v9, v4, v8
.line 70
.local v9, "ecBlock":Lcom/google/zxing/qrcode/decoder/Version$ECB;
const/4 v10, 0x0
.local v10, "i":I
:goto_2d
invoke-virtual {v9}, Lcom/google/zxing/qrcode/decoder/Version$ECB;->getCount()I
move-result v11
if-ge v10, v11, :cond_4b
.line 71
invoke-virtual {v9}, Lcom/google/zxing/qrcode/decoder/Version$ECB;->getDataCodewords()I
move-result v11
.line 72
.local v11, "numDataCodewords":I
invoke-virtual {v1}, Lcom/google/zxing/qrcode/decoder/Version$ECBlocks;->getECCodewordsPerBlock()I
move-result v12
add-int/2addr v12, v11
.line 73
.local v12, "numBlockCodewords":I
add-int/lit8 v13, v5, 0x1
.end local v5 # "numResultBlocks":I
.local v13, "numResultBlocks":I
new-instance v14, Lcom/google/zxing/qrcode/decoder/DataBlock;
new-array v15, v12, [B
invoke-direct {v14, v11, v15}, Lcom/google/zxing/qrcode/decoder/DataBlock;-><init>(I[B)V
aput-object v14, v3, v5
.line 70
.end local v11 # "numDataCodewords":I
.end local v12 # "numBlockCodewords":I
add-int/lit8 v10, v10, 0x1
move v5, v13
goto :goto_2d
.line 69
.end local v9 # "ecBlock":Lcom/google/zxing/qrcode/decoder/Version$ECB;
.end local v10 # "i":I
.end local v13 # "numResultBlocks":I
.restart local v5 # "numResultBlocks":I
:cond_4b
add-int/lit8 v8, v8, 0x1
goto :goto_28
.line 79
:cond_4e
aget-object v7, v3, v6
iget-object v7, v7, Lcom/google/zxing/qrcode/decoder/DataBlock;->codewords:[B
array-length v7, v7
.line 80
.local v7, "shorterBlocksTotalCodewords":I
array-length v9, v3
add-int/lit8 v9, v9, -0x1
.line 81
.local v9, "longerBlocksStartAt":I
:goto_56
if-ltz v9, :cond_63
.line 82
aget-object v10, v3, v9
iget-object v10, v10, Lcom/google/zxing/qrcode/decoder/DataBlock;->codewords:[B
array-length v10, v10
.line 83
.local v8, "numCodewords":I
if-eq v10, v7, :cond_63
.line 86
nop
.end local v8 # "numCodewords":I
add-int/lit8 v9, v9, -0x1
.line 87
goto :goto_56
.line 88
:cond_63
add-int/lit8 v9, v9, 0x1
.line 90
invoke-virtual {v1}, Lcom/google/zxing/qrcode/decoder/Version$ECBlocks;->getECCodewordsPerBlock()I
move-result v8
sub-int v8, v7, v8
.line 93
.local v8, "shorterBlocksNumDataCodewords":I
const/4 v10, 0x0
.line 94
.local v10, "rawCodewordsOffset":I
const/4 v11, 0x0
.local v11, "i":I
:goto_6d
if-ge v11, v8, :cond_83
.line 95
const/4 v12, 0x0
.local v12, "j":I
:goto_70
if-ge v12, v5, :cond_80
.line 96
aget-object v13, v3, v12
iget-object v13, v13, Lcom/google/zxing/qrcode/decoder/DataBlock;->codewords:[B
add-int/lit8 v14, v10, 0x1
.end local v10 # "rawCodewordsOffset":I
.local v14, "rawCodewordsOffset":I
aget-byte v10, v0, v10
aput-byte v10, v13, v11
.line 95
add-int/lit8 v12, v12, 0x1
move v10, v14
goto :goto_70
.line 94
.end local v12 # "j":I
.end local v14 # "rawCodewordsOffset":I
.restart local v10 # "rawCodewordsOffset":I
:cond_80
add-int/lit8 v11, v11, 0x1
goto :goto_6d
.line 100
.end local v11 # "i":I
:cond_83
move v11, v9
.local v11, "j":I
:goto_84
if-ge v11, v5, :cond_94
.line 101
aget-object v12, v3, v11
iget-object v12, v12, Lcom/google/zxing/qrcode/decoder/DataBlock;->codewords:[B
add-int/lit8 v13, v10, 0x1
.end local v10 # "rawCodewordsOffset":I
.local v13, "rawCodewordsOffset":I
aget-byte v10, v0, v10
aput-byte v10, v12, v8
.line 100
add-int/lit8 v11, v11, 0x1
move v10, v13
goto :goto_84
.line 104
.end local v11 # "j":I
.end local v13 # "rawCodewordsOffset":I
.restart local v10 # "rawCodewordsOffset":I
:cond_94
aget-object v6, v3, v6
iget-object v6, v6, Lcom/google/zxing/qrcode/decoder/DataBlock;->codewords:[B
array-length v6, v6
.line 105
.local v6, "max":I
move v11, v8
.local v11, "i":I
:goto_9a
if-ge v11, v6, :cond_b6
.line 106
const/4 v12, 0x0
.restart local v12 # "j":I
:goto_9d
if-ge v12, v5, :cond_b3
.line 107
if-ge v12, v9, :cond_a3
move v13, v11
goto :goto_a5
:cond_a3
add-int/lit8 v13, v11, 0x1
.line 108
.local v13, "iOffset":I
:goto_a5
aget-object v14, v3, v12
iget-object v14, v14, Lcom/google/zxing/qrcode/decoder/DataBlock;->codewords:[B
add-int/lit8 v15, v10, 0x1
.end local v10 # "rawCodewordsOffset":I
.local v15, "rawCodewordsOffset":I
aget-byte v10, v0, v10
aput-byte v10, v14, v13
.line 106
.end local v13 # "iOffset":I
add-int/lit8 v12, v12, 0x1
move v10, v15
goto :goto_9d
.line 105
.end local v12 # "j":I
.end local v15 # "rawCodewordsOffset":I
.restart local v10 # "rawCodewordsOffset":I
:cond_b3
add-int/lit8 v11, v11, 0x1
goto :goto_9a
.line 111
.end local v11 # "i":I
:cond_b6
return-object v3
.line 52
.end local v1 # "ecBlocks":Lcom/google/zxing/qrcode/decoder/Version$ECBlocks;
.end local v2 # "totalBlocks":I
.end local v3 # "result":[Lcom/google/zxing/qrcode/decoder/DataBlock;
.end local v4 # "ecBlockArray":[Lcom/google/zxing/qrcode/decoder/Version$ECB;
.end local v5 # "numResultBlocks":I
.end local v6 # "max":I
.end local v7 # "shorterBlocksTotalCodewords":I
.end local v8 # "shorterBlocksNumDataCodewords":I
.end local v9 # "longerBlocksStartAt":I
.end local v10 # "rawCodewordsOffset":I
:cond_b7
new-instance v1, Ljava/lang/IllegalArgumentException;
invoke-direct {v1}, Ljava/lang/IllegalArgumentException;-><init>()V
goto :goto_be
:goto_bd
throw v1
:goto_be
goto :goto_bd
.end method
# virtual methods
.method getCodewords()[B
.registers 2
.line 119
iget-object v0, p0, Lcom/google/zxing/qrcode/decoder/DataBlock;->codewords:[B
return-object v0
.end method
.method getNumDataCodewords()I
.registers 2
.line 115
iget v0, p0, Lcom/google/zxing/qrcode/decoder/DataBlock;->numDataCodewords:I
return v0
.end method