RSS14Reader.smali

.class public final Lcom/google/zxing/oned/rss/RSS14Reader;
.super Lcom/google/zxing/oned/rss/AbstractRSSReader;
.source "RSS14Reader.java"


# static fields
.field private static final FINDER_PATTERNS:[[I

.field private static final INSIDE_GSUM:[I

.field private static final INSIDE_ODD_TOTAL_SUBSET:[I

.field private static final INSIDE_ODD_WIDEST:[I

.field private static final OUTSIDE_EVEN_TOTAL_SUBSET:[I

.field private static final OUTSIDE_GSUM:[I

.field private static final OUTSIDE_ODD_WIDEST:[I


# instance fields
.field private final possibleLeftPairs:Ljava/util/List;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/List<",
            "Lcom/google/zxing/oned/rss/Pair;",
            ">;"
        }
    .end annotation
.end field

.field private final possibleRightPairs:Ljava/util/List;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/List<",
            "Lcom/google/zxing/oned/rss/Pair;",
            ">;"
        }
    .end annotation
.end field


# direct methods
.method static constructor <clinit>()V
    .registers 5

    .line 38
    const/4 v0, 0x5

    new-array v1, v0, [I

    fill-array-data v1, :array_7a

    sput-object v1, Lcom/google/zxing/oned/rss/RSS14Reader;->OUTSIDE_EVEN_TOTAL_SUBSET:[I

    .line 39
    const/4 v1, 0x4

    new-array v2, v1, [I

    fill-array-data v2, :array_88

    sput-object v2, Lcom/google/zxing/oned/rss/RSS14Reader;->INSIDE_ODD_TOTAL_SUBSET:[I

    .line 40
    new-array v2, v0, [I

    fill-array-data v2, :array_94

    sput-object v2, Lcom/google/zxing/oned/rss/RSS14Reader;->OUTSIDE_GSUM:[I

    .line 41
    new-array v2, v1, [I

    fill-array-data v2, :array_a2

    sput-object v2, Lcom/google/zxing/oned/rss/RSS14Reader;->INSIDE_GSUM:[I

    .line 42
    new-array v2, v0, [I

    fill-array-data v2, :array_ae

    sput-object v2, Lcom/google/zxing/oned/rss/RSS14Reader;->OUTSIDE_ODD_WIDEST:[I

    .line 43
    new-array v2, v1, [I

    fill-array-data v2, :array_bc

    sput-object v2, Lcom/google/zxing/oned/rss/RSS14Reader;->INSIDE_ODD_WIDEST:[I

    .line 45
    const/16 v2, 0x9

    new-array v2, v2, [[I

    new-array v3, v1, [I

    fill-array-data v3, :array_c8

    const/4 v4, 0x0

    aput-object v3, v2, v4

    new-array v3, v1, [I

    fill-array-data v3, :array_d4

    const/4 v4, 0x1

    aput-object v3, v2, v4

    new-array v3, v1, [I

    fill-array-data v3, :array_e0

    const/4 v4, 0x2

    aput-object v3, v2, v4

    new-array v3, v1, [I

    fill-array-data v3, :array_ec

    const/4 v4, 0x3

    aput-object v3, v2, v4

    new-array v3, v1, [I

    fill-array-data v3, :array_f8

    aput-object v3, v2, v1

    new-array v3, v1, [I

    fill-array-data v3, :array_104

    aput-object v3, v2, v0

    new-array v0, v1, [I

    fill-array-data v0, :array_110

    const/4 v3, 0x6

    aput-object v0, v2, v3

    new-array v0, v1, [I

    fill-array-data v0, :array_11c

    const/4 v3, 0x7

    aput-object v0, v2, v3

    new-array v0, v1, [I

    fill-array-data v0, :array_128

    const/16 v1, 0x8

    aput-object v0, v2, v1

    sput-object v2, Lcom/google/zxing/oned/rss/RSS14Reader;->FINDER_PATTERNS:[[I

    return-void

    :array_7a
    .array-data 4
        0x1
        0xa
        0x22
        0x46
        0x7e
    .end array-data

    :array_88
    .array-data 4
        0x4
        0x14
        0x30
        0x51
    .end array-data

    :array_94
    .array-data 4
        0x0
        0xa1
        0x3c1
        0x7df
        0xa9b
    .end array-data

    :array_a2
    .array-data 4
        0x0
        0x150
        0x40c
        0x5ec
    .end array-data

    :array_ae
    .array-data 4
        0x8
        0x6
        0x4
        0x3
        0x1
    .end array-data

    :array_bc
    .array-data 4
        0x2
        0x4
        0x6
        0x8
    .end array-data

    :array_c8
    .array-data 4
        0x3
        0x8
        0x2
        0x1
    .end array-data

    :array_d4
    .array-data 4
        0x3
        0x5
        0x5
        0x1
    .end array-data

    :array_e0
    .array-data 4
        0x3
        0x3
        0x7
        0x1
    .end array-data

    :array_ec
    .array-data 4
        0x3
        0x1
        0x9
        0x1
    .end array-data

    :array_f8
    .array-data 4
        0x2
        0x7
        0x4
        0x1
    .end array-data

    :array_104
    .array-data 4
        0x2
        0x5
        0x6
        0x1
    .end array-data

    :array_110
    .array-data 4
        0x2
        0x3
        0x8
        0x1
    .end array-data

    :array_11c
    .array-data 4
        0x1
        0x5
        0x7
        0x1
    .end array-data

    :array_128
    .array-data 4
        0x1
        0x3
        0x9
        0x1
    .end array-data
.end method

.method public constructor <init>()V
    .registers 2

    .line 60
    invoke-direct {p0}, Lcom/google/zxing/oned/rss/AbstractRSSReader;-><init>()V

    .line 61
    new-instance v0, Ljava/util/ArrayList;

    invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V

    iput-object v0, p0, Lcom/google/zxing/oned/rss/RSS14Reader;->possibleLeftPairs:Ljava/util/List;

    .line 62
    new-instance v0, Ljava/util/ArrayList;

    invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V

    iput-object v0, p0, Lcom/google/zxing/oned/rss/RSS14Reader;->possibleRightPairs:Ljava/util/List;

    .line 63
    return-void
.end method

.method private static addOrTally(Ljava/util/Collection;Lcom/google/zxing/oned/rss/Pair;)V
    .registers 7
    .param p1, "pair"    # Lcom/google/zxing/oned/rss/Pair;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/Collection<",
            "Lcom/google/zxing/oned/rss/Pair;",
            ">;",
            "Lcom/google/zxing/oned/rss/Pair;",
            ")V"
        }
    .end annotation

    .line 88
    .local p0, "possiblePairs":Ljava/util/Collection;, "Ljava/util/Collection<Lcom/google/zxing/oned/rss/Pair;>;"
    if-nez p1, :cond_3

    .line 89
    return-void

    .line 91
    :cond_3
    const/4 v0, 0x0

    .line 92
    .local v0, "found":Z
    invoke-interface {p0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;

    move-result-object v1

    const/4 v2, 0x0

    :goto_9
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v3

    if-eqz v3, :cond_26

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Lcom/google/zxing/oned/rss/Pair;

    .line 93
    .local v2, "other":Lcom/google/zxing/oned/rss/Pair;
    move-object v2, v3

    invoke-virtual {v3}, Lcom/google/zxing/oned/rss/Pair;->getValue()I

    move-result v3

    invoke-virtual {p1}, Lcom/google/zxing/oned/rss/Pair;->getValue()I

    move-result v4

    if-ne v3, v4, :cond_25

    .line 94
    invoke-virtual {v2}, Lcom/google/zxing/oned/rss/Pair;->incrementCount()V

    .line 95
    const/4 v0, 0x1

    .line 96
    goto :goto_26

    .line 98
    .end local v2    # "other":Lcom/google/zxing/oned/rss/Pair;
    :cond_25
    goto :goto_9

    .line 99
    :cond_26
    :goto_26
    if-nez v0, :cond_2b

    .line 100
    invoke-interface {p0, p1}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z

    .line 102
    :cond_2b
    return-void
.end method

.method private adjustOddEvenCounts(ZI)V
    .registers 14
    .param p1, "outsideChar"    # Z
    .param p2, "numModules"    # I
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/google/zxing/NotFoundException;
        }
    .end annotation

    .line 353
    invoke-virtual {p0}, Lcom/google/zxing/oned/rss/RSS14Reader;->getOddCounts()[I

    move-result-object v0

    invoke-static {v0}, Lcom/google/zxing/common/detector/MathUtils;->sum([I)I

    move-result v0

    .line 354
    .local v0, "oddSum":I
    invoke-virtual {p0}, Lcom/google/zxing/oned/rss/RSS14Reader;->getEvenCounts()[I

    move-result-object v1

    invoke-static {v1}, Lcom/google/zxing/common/detector/MathUtils;->sum([I)I

    move-result v1

    .line 356
    .local v1, "evenSum":I
    const/4 v2, 0x0

    .line 357
    .local v2, "incrementOdd":Z
    const/4 v3, 0x0

    .line 358
    .local v3, "decrementOdd":Z
    const/4 v4, 0x0

    .line 359
    .local v4, "incrementEven":Z
    const/4 v5, 0x0

    .line 361
    .local v5, "decrementEven":Z
    const/4 v6, 0x4

    if-eqz p1, :cond_28

    .line 362
    const/16 v7, 0xc

    if-le v0, v7, :cond_1d

    .line 363
    const/4 v3, 0x1

    goto :goto_20

    .line 364
    :cond_1d
    if-ge v0, v6, :cond_20

    .line 365
    const/4 v2, 0x1

    .line 367
    :cond_20
    :goto_20
    if-le v1, v7, :cond_24

    .line 368
    const/4 v5, 0x1

    goto :goto_3b

    .line 369
    :cond_24
    if-ge v1, v6, :cond_3b

    .line 370
    const/4 v4, 0x1

    goto :goto_3b

    .line 373
    :cond_28
    const/16 v7, 0xb

    if-le v0, v7, :cond_2e

    .line 374
    const/4 v3, 0x1

    goto :goto_32

    .line 375
    :cond_2e
    const/4 v7, 0x5

    if-ge v0, v7, :cond_32

    .line 376
    const/4 v2, 0x1

    .line 378
    :cond_32
    :goto_32
    const/16 v7, 0xa

    if-le v1, v7, :cond_38

    .line 379
    const/4 v5, 0x1

    goto :goto_3b

    .line 380
    :cond_38
    if-ge v1, v6, :cond_3b

    .line 381
    const/4 v4, 0x1

    .line 385
    :cond_3b
    :goto_3b
    add-int v6, v0, v1

    sub-int/2addr v6, p2

    .line 386
    .local v6, "mismatch":I
    and-int/lit8 v7, v0, 0x1

    const/4 v8, 0x0

    const/4 v9, 0x1

    if-ne v7, p1, :cond_46

    const/4 v7, 0x1

    goto :goto_47

    :cond_46
    const/4 v7, 0x0

    .line 387
    .local v7, "oddParityBad":Z
    :goto_47
    and-int/lit8 v10, v1, 0x1

    if-ne v10, v9, :cond_4c

    const/4 v8, 0x1

    .line 400
    .local v8, "evenParityBad":Z
    :cond_4c
    if-ne v6, v9, :cond_62

    .line 401
    if-eqz v7, :cond_59

    .line 402
    if-nez v8, :cond_54

    .line 405
    const/4 v3, 0x1

    goto :goto_8e

    .line 403
    :cond_54
    invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;

    move-result-object v9

    throw v9

    .line 407
    :cond_59
    if-eqz v8, :cond_5d

    .line 410
    const/4 v5, 0x1

    goto :goto_8e

    .line 408
    :cond_5d
    invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;

    move-result-object v9

    throw v9

    .line 412
    :cond_62
    const/4 v9, -0x1

    if-ne v6, v9, :cond_79

    .line 413
    if-eqz v7, :cond_70

    .line 414
    if-nez v8, :cond_6b

    .line 417
    const/4 v2, 0x1

    goto :goto_8e

    .line 415
    :cond_6b
    invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;

    move-result-object v9

    throw v9

    .line 419
    :cond_70
    if-eqz v8, :cond_74

    .line 422
    const/4 v4, 0x1

    goto :goto_8e

    .line 420
    :cond_74
    invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;

    move-result-object v9

    throw v9

    .line 424
    :cond_79
    if-nez v6, :cond_d8

    .line 425
    if-eqz v7, :cond_8c

    .line 426
    if-eqz v8, :cond_87

    .line 430
    if-ge v0, v1, :cond_84

    .line 431
    const/4 v2, 0x1

    .line 432
    const/4 v5, 0x1

    goto :goto_8e

    .line 434
    :cond_84
    const/4 v3, 0x1

    .line 435
    const/4 v4, 0x1

    goto :goto_8e

    .line 427
    :cond_87
    invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;

    move-result-object v9

    throw v9

    .line 438
    :cond_8c
    if-nez v8, :cond_d3

    .line 447
    :goto_8e
    if-eqz v2, :cond_a3

    .line 448
    if-nez v3, :cond_9e

    .line 451
    invoke-virtual {p0}, Lcom/google/zxing/oned/rss/RSS14Reader;->getOddCounts()[I

    move-result-object v9

    invoke-virtual {p0}, Lcom/google/zxing/oned/rss/RSS14Reader;->getOddRoundingErrors()[F

    move-result-object v10

    invoke-static {v9, v10}, Lcom/google/zxing/oned/rss/RSS14Reader;->increment([I[F)V

    goto :goto_a3

    .line 449
    :cond_9e
    invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;

    move-result-object v9

    throw v9

    .line 453
    :cond_a3
    :goto_a3
    if-eqz v3, :cond_b0

    .line 454
    invoke-virtual {p0}, Lcom/google/zxing/oned/rss/RSS14Reader;->getOddCounts()[I

    move-result-object v9

    invoke-virtual {p0}, Lcom/google/zxing/oned/rss/RSS14Reader;->getOddRoundingErrors()[F

    move-result-object v10

    invoke-static {v9, v10}, Lcom/google/zxing/oned/rss/RSS14Reader;->decrement([I[F)V

    .line 456
    :cond_b0
    if-eqz v4, :cond_c5

    .line 457
    if-nez v5, :cond_c0

    .line 460
    invoke-virtual {p0}, Lcom/google/zxing/oned/rss/RSS14Reader;->getEvenCounts()[I

    move-result-object v9

    invoke-virtual {p0}, Lcom/google/zxing/oned/rss/RSS14Reader;->getOddRoundingErrors()[F

    move-result-object v10

    invoke-static {v9, v10}, Lcom/google/zxing/oned/rss/RSS14Reader;->increment([I[F)V

    goto :goto_c5

    .line 458
    :cond_c0
    invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;

    move-result-object v9

    throw v9

    .line 462
    :cond_c5
    :goto_c5
    if-eqz v5, :cond_d2

    .line 463
    invoke-virtual {p0}, Lcom/google/zxing/oned/rss/RSS14Reader;->getEvenCounts()[I

    move-result-object v9

    invoke-virtual {p0}, Lcom/google/zxing/oned/rss/RSS14Reader;->getEvenRoundingErrors()[F

    move-result-object v10

    invoke-static {v9, v10}, Lcom/google/zxing/oned/rss/RSS14Reader;->decrement([I[F)V

    .line 466
    :cond_d2
    return-void

    .line 439
    :cond_d3
    invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;

    move-result-object v9

    throw v9

    .line 444
    :cond_d8
    invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;

    move-result-object v9

    throw v9
.end method

.method private static checkChecksum(Lcom/google/zxing/oned/rss/Pair;Lcom/google/zxing/oned/rss/Pair;)Z
    .registers 7
    .param p0, "leftPair"    # Lcom/google/zxing/oned/rss/Pair;
    .param p1, "rightPair"    # Lcom/google/zxing/oned/rss/Pair;

    .line 146
    invoke-virtual {p0}, Lcom/google/zxing/oned/rss/Pair;->getChecksumPortion()I

    move-result v0

    invoke-virtual {p1}, Lcom/google/zxing/oned/rss/Pair;->getChecksumPortion()I

    move-result v1

    mul-int/lit8 v1, v1, 0x10

    add-int/2addr v0, v1

    rem-int/lit8 v0, v0, 0x4f

    .line 147
    .local v0, "checkValue":I
    nop

    .line 148
    invoke-virtual {p0}, Lcom/google/zxing/oned/rss/Pair;->getFinderPattern()Lcom/google/zxing/oned/rss/FinderPattern;

    move-result-object v1

    invoke-virtual {v1}, Lcom/google/zxing/oned/rss/FinderPattern;->getValue()I

    move-result v1

    mul-int/lit8 v1, v1, 0x9

    invoke-virtual {p1}, Lcom/google/zxing/oned/rss/Pair;->getFinderPattern()Lcom/google/zxing/oned/rss/FinderPattern;

    move-result-object v2

    invoke-virtual {v2}, Lcom/google/zxing/oned/rss/FinderPattern;->getValue()I

    move-result v2

    add-int/2addr v1, v2

    const/4 v2, 0x0

    move v3, v2

    .line 149
    .local v3, "targetCheckValue":I
    move v3, v1

    const/16 v4, 0x48

    if-le v1, v4, :cond_2a

    .line 150
    add-int/lit8 v3, v3, -0x1

    .line 152
    :cond_2a
    const/16 v1, 0x8

    if-le v3, v1, :cond_30

    .line 153
    add-int/lit8 v3, v3, -0x1

    .line 155
    :cond_30
    if-ne v0, v3, :cond_34

    const/4 v1, 0x1

    return v1

    :cond_34
    return v2
.end method

.method private static constructResult(Lcom/google/zxing/oned/rss/Pair;Lcom/google/zxing/oned/rss/Pair;)Lcom/google/zxing/Result;
    .registers 14
    .param p0, "leftPair"    # Lcom/google/zxing/oned/rss/Pair;
    .param p1, "rightPair"    # Lcom/google/zxing/oned/rss/Pair;

    .line 111
    invoke-virtual {p0}, Lcom/google/zxing/oned/rss/Pair;->getValue()I

    move-result v0

    int-to-long v0, v0

    const-wide/32 v2, 0x453af5

    mul-long v0, v0, v2

    invoke-virtual {p1}, Lcom/google/zxing/oned/rss/Pair;->getValue()I

    move-result v2

    int-to-long v2, v2

    add-long/2addr v0, v2

    .line 112
    invoke-static {v0, v1}, Ljava/lang/String;->valueOf(J)Ljava/lang/String;

    move-result-object v0

    .line 114
    .local v0, "text":Ljava/lang/String;
    new-instance v1, Ljava/lang/StringBuilder;

    const/16 v2, 0xe

    invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(I)V

    .line 115
    .local v1, "buffer":Ljava/lang/StringBuilder;
    invoke-virtual {v0}, Ljava/lang/String;->length()I

    move-result v2

    const/16 v3, 0xd

    rsub-int/lit8 v2, v2, 0xd

    .local v2, "i":I
    :goto_23
    const/16 v4, 0x30

    if-lez v2, :cond_2d

    .line 116
    invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;

    .line 115
    add-int/lit8 v2, v2, -0x1

    goto :goto_23

    .line 118
    .end local v2    # "i":I
    :cond_2d
    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 120
    const/4 v2, 0x0

    .line 121
    .local v2, "checkDigit":I
    const/4 v5, 0x0

    .local v5, "i":I
    :goto_32
    if-ge v5, v3, :cond_45

    .line 122
    invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->charAt(I)C

    move-result v6

    sub-int/2addr v6, v4

    .line 123
    .local v6, "digit":I
    and-int/lit8 v7, v5, 0x1

    if-nez v7, :cond_40

    mul-int/lit8 v7, v6, 0x3

    goto :goto_41

    :cond_40
    move v7, v6

    :goto_41
    add-int/2addr v2, v7

    .line 121
    .end local v6    # "digit":I
    add-int/lit8 v5, v5, 0x1

    goto :goto_32

    .line 125
    .end local v5    # "i":I
    :cond_45
    rem-int/lit8 v3, v2, 0xa

    const/16 v4, 0xa

    rsub-int/lit8 v3, v3, 0xa

    .line 126
    move v2, v3

    if-ne v3, v4, :cond_4f

    .line 127
    const/4 v2, 0x0

    .line 129
    :cond_4f
    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    .line 131
    invoke-virtual {p0}, Lcom/google/zxing/oned/rss/Pair;->getFinderPattern()Lcom/google/zxing/oned/rss/FinderPattern;

    move-result-object v3

    invoke-virtual {v3}, Lcom/google/zxing/oned/rss/FinderPattern;->getResultPoints()[Lcom/google/zxing/ResultPoint;

    move-result-object v3

    .line 132
    .local v3, "leftPoints":[Lcom/google/zxing/ResultPoint;
    invoke-virtual {p1}, Lcom/google/zxing/oned/rss/Pair;->getFinderPattern()Lcom/google/zxing/oned/rss/FinderPattern;

    move-result-object v4

    invoke-virtual {v4}, Lcom/google/zxing/oned/rss/FinderPattern;->getResultPoints()[Lcom/google/zxing/ResultPoint;

    move-result-object v4

    .line 133
    .local v4, "rightPoints":[Lcom/google/zxing/ResultPoint;
    new-instance v5, Lcom/google/zxing/Result;

    .line 134
    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v6

    const/4 v7, 0x0

    const/4 v8, 0x4

    new-array v8, v8, [Lcom/google/zxing/ResultPoint;

    const/4 v9, 0x0

    aget-object v10, v3, v9

    aput-object v10, v8, v9

    const/4 v10, 0x1

    aget-object v11, v3, v10

    aput-object v11, v8, v10

    const/4 v11, 0x2

    aget-object v9, v4, v9

    aput-object v9, v8, v11

    aget-object v9, v4, v10

    const/4 v10, 0x3

    aput-object v9, v8, v10

    sget-object v9, Lcom/google/zxing/BarcodeFormat;->RSS_14:Lcom/google/zxing/BarcodeFormat;

    invoke-direct {v5, v6, v7, v8, v9}, Lcom/google/zxing/Result;-><init>(Ljava/lang/String;[B[Lcom/google/zxing/ResultPoint;Lcom/google/zxing/BarcodeFormat;)V

    .line 133
    return-object v5
.end method

.method private decodeDataCharacter(Lcom/google/zxing/common/BitArray;Lcom/google/zxing/oned/rss/FinderPattern;Z)Lcom/google/zxing/oned/rss/DataCharacter;
    .registers 27
    .param p1, "row"    # Lcom/google/zxing/common/BitArray;
    .param p2, "pattern"    # Lcom/google/zxing/oned/rss/FinderPattern;
    .param p3, "outsideChar"    # Z
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/google/zxing/NotFoundException;
        }
    .end annotation

    .line 188
    move-object/from16 v0, p1

    move/from16 v1, p3

    invoke-virtual/range {p0 .. p0}, Lcom/google/zxing/oned/rss/RSS14Reader;->getDataCharacterCounters()[I

    move-result-object v2

    .line 189
    .local v2, "counters":[I
    const/4 v3, 0x0

    .local v3, "x":I
    :goto_9
    array-length v4, v2

    const/4 v5, 0x0

    if-ge v3, v4, :cond_12

    .line 190
    aput v5, v2, v3

    .line 189
    add-int/lit8 v3, v3, 0x1

    goto :goto_9

    .line 193
    .end local v3    # "x":I
    :cond_12
    const/4 v3, 0x1

    if-eqz v1, :cond_1f

    .line 194
    invoke-virtual/range {p2 .. p2}, Lcom/google/zxing/oned/rss/FinderPattern;->getStartEnd()[I

    move-result-object v4

    aget v4, v4, v5

    invoke-static {v0, v4, v2}, Lcom/google/zxing/oned/rss/RSS14Reader;->recordPatternInReverse(Lcom/google/zxing/common/BitArray;I[I)V

    goto :goto_3b

    .line 196
    :cond_1f
    invoke-virtual/range {p2 .. p2}, Lcom/google/zxing/oned/rss/FinderPattern;->getStartEnd()[I

    move-result-object v4

    aget v4, v4, v3

    add-int/2addr v4, v3

    invoke-static {v0, v4, v2}, Lcom/google/zxing/oned/rss/RSS14Reader;->recordPattern(Lcom/google/zxing/common/BitArray;I[I)V

    .line 198
    const/4 v4, 0x0

    .local v4, "i":I
    array-length v6, v2

    sub-int/2addr v6, v3

    .local v6, "j":I
    :goto_2c
    if-ge v4, v6, :cond_3b

    .line 199
    aget v7, v2, v4

    .line 200
    .local v7, "temp":I
    aget v8, v2, v6

    aput v8, v2, v4

    .line 201
    aput v7, v2, v6

    .line 198
    .end local v7    # "temp":I
    add-int/lit8 v4, v4, 0x1

    add-int/lit8 v6, v6, -0x1

    goto :goto_2c

    .line 205
    .end local v4    # "i":I
    .end local v6    # "j":I
    :cond_3b
    :goto_3b
    if-eqz v1, :cond_40

    const/16 v4, 0x10

    goto :goto_42

    :cond_40
    const/16 v4, 0xf

    .line 206
    .local v4, "numModules":I
    :goto_42
    invoke-static {v2}, Lcom/google/zxing/common/detector/MathUtils;->sum([I)I

    move-result v6

    int-to-float v6, v6

    int-to-float v7, v4

    div-float/2addr v6, v7

    .line 208
    .local v6, "elementWidth":F
    invoke-virtual/range {p0 .. p0}, Lcom/google/zxing/oned/rss/RSS14Reader;->getOddCounts()[I

    move-result-object v7

    .line 209
    .local v7, "oddCounts":[I
    invoke-virtual/range {p0 .. p0}, Lcom/google/zxing/oned/rss/RSS14Reader;->getEvenCounts()[I

    move-result-object v8

    .line 210
    .local v8, "evenCounts":[I
    invoke-virtual/range {p0 .. p0}, Lcom/google/zxing/oned/rss/RSS14Reader;->getOddRoundingErrors()[F

    move-result-object v9

    .line 211
    .local v9, "oddRoundingErrors":[F
    invoke-virtual/range {p0 .. p0}, Lcom/google/zxing/oned/rss/RSS14Reader;->getEvenRoundingErrors()[F

    move-result-object v10

    .line 213
    .local v10, "evenRoundingErrors":[F
    const/4 v11, 0x0

    .local v11, "i":I
    const/4 v12, 0x0

    const/4 v13, 0x0

    :goto_5c
    array-length v14, v2

    if-ge v11, v14, :cond_8b

    .line 214
    aget v14, v2, v11

    int-to-float v14, v14

    div-float/2addr v14, v6

    .line 215
    .local v12, "value":F
    move v12, v14

    const/high16 v15, 0x3f000000    # 0.5f

    add-float/2addr v14, v15

    float-to-int v14, v14

    .line 216
    .local v13, "count":I
    move v13, v14

    if-gtz v14, :cond_6d

    .line 217
    const/4 v13, 0x1

    goto :goto_73

    .line 218
    :cond_6d
    const/16 v14, 0x8

    if-le v13, v14, :cond_73

    .line 219
    const/16 v13, 0x8

    .line 221
    :cond_73
    :goto_73
    div-int/lit8 v14, v11, 0x2

    .line 222
    .local v14, "offset":I
    and-int/lit8 v15, v11, 0x1

    if-nez v15, :cond_81

    .line 223
    aput v13, v7, v14

    .line 224
    int-to-float v15, v13

    sub-float v15, v12, v15

    aput v15, v9, v14

    goto :goto_88

    .line 226
    :cond_81
    aput v13, v8, v14

    .line 227
    int-to-float v15, v13

    sub-float v15, v12, v15

    aput v15, v10, v14

    .line 213
    .end local v12    # "value":F
    .end local v13    # "count":I
    .end local v14    # "offset":I
    :goto_88
    add-int/lit8 v11, v11, 0x1

    goto :goto_5c

    .line 231
    .end local v11    # "i":I
    :cond_8b
    move-object/from16 v11, p0

    invoke-direct {v11, v1, v4}, Lcom/google/zxing/oned/rss/RSS14Reader;->adjustOddEvenCounts(ZI)V

    .line 233
    const/4 v12, 0x0

    .line 234
    .local v12, "oddSum":I
    const/4 v13, 0x0

    .line 235
    .local v13, "oddChecksumPortion":I
    array-length v14, v7

    sub-int/2addr v14, v3

    .local v14, "i":I
    :goto_94
    if-ltz v14, :cond_a2

    .line 236
    mul-int/lit8 v15, v13, 0x9

    .line 237
    aget v16, v7, v14

    add-int v13, v15, v16

    .line 238
    aget v15, v7, v14

    add-int/2addr v12, v15

    .line 235
    add-int/lit8 v14, v14, -0x1

    goto :goto_94

    .line 240
    .end local v14    # "i":I
    :cond_a2
    const/4 v14, 0x0

    .line 241
    .local v14, "evenChecksumPortion":I
    const/4 v15, 0x0

    .line 242
    .local v15, "evenSum":I
    array-length v5, v8

    sub-int/2addr v5, v3

    .local v5, "i":I
    :goto_a6
    if-ltz v5, :cond_b5

    .line 243
    mul-int/lit8 v17, v14, 0x9

    .line 244
    aget v18, v8, v5

    add-int v14, v17, v18

    .line 245
    aget v17, v8, v5

    add-int v15, v15, v17

    .line 242
    add-int/lit8 v5, v5, -0x1

    goto :goto_a6

    .line 247
    .end local v5    # "i":I
    :cond_b5
    mul-int/lit8 v5, v14, 0x3

    add-int/2addr v5, v13

    .line 249
    .local v5, "checksumPortion":I
    if-eqz v1, :cond_fd

    .line 250
    and-int/lit8 v18, v12, 0x1

    if-nez v18, :cond_f6

    const/16 v3, 0xc

    if-gt v12, v3, :cond_f6

    const/4 v3, 0x4

    if-lt v12, v3, :cond_f6

    .line 253
    const/16 v3, 0xc

    sub-int/2addr v3, v12

    div-int/lit8 v3, v3, 0x2

    .line 254
    .local v3, "group":I
    sget-object v18, Lcom/google/zxing/oned/rss/RSS14Reader;->OUTSIDE_ODD_WIDEST:[I

    aget v0, v18, v3

    .line 255
    .local v0, "oddWidest":I
    rsub-int/lit8 v1, v0, 0x9

    .line 256
    .local v1, "evenWidest":I
    move-object/from16 v19, v2

    const/4 v2, 0x0

    .end local v2    # "counters":[I
    .local v19, "counters":[I
    invoke-static {v7, v0, v2}, Lcom/google/zxing/oned/rss/RSSUtils;->getRSSvalue([IIZ)I

    move-result v2

    .line 257
    .local v2, "vOdd":I
    move/from16 v16, v0

    const/4 v0, 0x1

    .end local v0    # "oddWidest":I
    .local v16, "oddWidest":I
    invoke-static {v8, v1, v0}, Lcom/google/zxing/oned/rss/RSSUtils;->getRSSvalue([IIZ)I

    move-result v0

    .line 258
    .local v0, "vEven":I
    sget-object v17, Lcom/google/zxing/oned/rss/RSS14Reader;->OUTSIDE_EVEN_TOTAL_SUBSET:[I

    aget v17, v17, v3

    .line 259
    .local v17, "tEven":I
    sget-object v18, Lcom/google/zxing/oned/rss/RSS14Reader;->OUTSIDE_GSUM:[I

    aget v18, v18, v3

    .line 260
    .local v18, "gSum":I
    move/from16 v20, v1

    .end local v1    # "evenWidest":I
    .local v20, "evenWidest":I
    new-instance v1, Lcom/google/zxing/oned/rss/DataCharacter;

    mul-int v21, v2, v17

    add-int v21, v21, v0

    move/from16 v22, v0

    .end local v0    # "vEven":I
    .local v22, "vEven":I
    add-int v0, v21, v18

    invoke-direct {v1, v0, v5}, Lcom/google/zxing/oned/rss/DataCharacter;-><init>(II)V

    return-object v1

    .line 250
    .end local v3    # "group":I
    .end local v16    # "oddWidest":I
    .end local v17    # "tEven":I
    .end local v18    # "gSum":I
    .end local v19    # "counters":[I
    .end local v20    # "evenWidest":I
    .end local v22    # "vEven":I
    .local v2, "counters":[I
    :cond_f6
    move-object/from16 v19, v2

    .line 251
    .end local v2    # "counters":[I
    .restart local v19    # "counters":[I
    invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;

    move-result-object v0

    throw v0

    .line 262
    .end local v19    # "counters":[I
    .restart local v2    # "counters":[I
    :cond_fd
    move-object/from16 v19, v2

    .end local v2    # "counters":[I
    .restart local v19    # "counters":[I
    and-int/lit8 v0, v15, 0x1

    if-nez v0, :cond_137

    const/16 v0, 0xa

    if-gt v15, v0, :cond_137

    const/4 v1, 0x4

    if-lt v15, v1, :cond_137

    .line 265
    sub-int/2addr v0, v15

    div-int/lit8 v0, v0, 0x2

    .line 266
    .local v0, "group":I
    sget-object v1, Lcom/google/zxing/oned/rss/RSS14Reader;->INSIDE_ODD_WIDEST:[I

    aget v1, v1, v0

    .line 267
    .local v1, "oddWidest":I
    rsub-int/lit8 v2, v1, 0x9

    .line 268
    .local v2, "evenWidest":I
    const/4 v3, 0x1

    invoke-static {v7, v1, v3}, Lcom/google/zxing/oned/rss/RSSUtils;->getRSSvalue([IIZ)I

    move-result v3

    .line 269
    .local v3, "vOdd":I
    move/from16 v17, v1

    const/4 v1, 0x0

    .end local v1    # "oddWidest":I
    .local v17, "oddWidest":I
    invoke-static {v8, v2, v1}, Lcom/google/zxing/oned/rss/RSSUtils;->getRSSvalue([IIZ)I

    move-result v1

    .line 270
    .local v1, "vEven":I
    sget-object v16, Lcom/google/zxing/oned/rss/RSS14Reader;->INSIDE_ODD_TOTAL_SUBSET:[I

    aget v16, v16, v0

    .line 271
    .local v16, "tOdd":I
    sget-object v18, Lcom/google/zxing/oned/rss/RSS14Reader;->INSIDE_GSUM:[I

    aget v18, v18, v0

    .line 272
    .restart local v18    # "gSum":I
    move/from16 v20, v0

    .end local v0    # "group":I
    .local v20, "group":I
    new-instance v0, Lcom/google/zxing/oned/rss/DataCharacter;

    mul-int v21, v1, v16

    add-int v21, v21, v3

    move/from16 v22, v1

    .end local v1    # "vEven":I
    .restart local v22    # "vEven":I
    add-int v1, v21, v18

    invoke-direct {v0, v1, v5}, Lcom/google/zxing/oned/rss/DataCharacter;-><init>(II)V

    return-object v0

    .line 263
    .end local v2    # "evenWidest":I
    .end local v3    # "vOdd":I
    .end local v16    # "tOdd":I
    .end local v17    # "oddWidest":I
    .end local v18    # "gSum":I
    .end local v20    # "group":I
    .end local v22    # "vEven":I
    :cond_137
    invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;

    move-result-object v0

    goto :goto_13d

    :goto_13c
    throw v0

    :goto_13d
    goto :goto_13c
.end method

.method private decodePair(Lcom/google/zxing/common/BitArray;ZILjava/util/Map;)Lcom/google/zxing/oned/rss/Pair;
    .registers 15
    .param p1, "row"    # Lcom/google/zxing/common/BitArray;
    .param p2, "right"    # Z
    .param p3, "rowNumber"    # I
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lcom/google/zxing/common/BitArray;",
            "ZI",
            "Ljava/util/Map<",
            "Lcom/google/zxing/DecodeHintType;",
            "*>;)",
            "Lcom/google/zxing/oned/rss/Pair;"
        }
    .end annotation

    .line 160
    .local p4, "hints":Ljava/util/Map;, "Ljava/util/Map<Lcom/google/zxing/DecodeHintType;*>;"
    const/4 v0, 0x0

    :try_start_1
    invoke-direct {p0, p1, p2}, Lcom/google/zxing/oned/rss/RSS14Reader;->findFinderPattern(Lcom/google/zxing/common/BitArray;Z)[I

    move-result-object v1
    :try_end_5
    .catch Lcom/google/zxing/NotFoundException; {:try_start_1 .. :try_end_5} :catch_5d

    .line 161
    .local v1, "startEnd":[I
    :try_start_5
    invoke-direct {p0, p1, p3, p2, v1}, Lcom/google/zxing/oned/rss/RSS14Reader;->parseFoundFinderPattern(Lcom/google/zxing/common/BitArray;IZ[I)Lcom/google/zxing/oned/rss/FinderPattern;

    move-result-object v2

    .line 163
    .local v2, "pattern":Lcom/google/zxing/oned/rss/FinderPattern;
    if-nez p4, :cond_d

    move-object v3, v0

    goto :goto_15

    :cond_d
    sget-object v3, Lcom/google/zxing/DecodeHintType;->NEED_RESULT_POINT_CALLBACK:Lcom/google/zxing/DecodeHintType;

    .line 164
    invoke-interface {p4, v3}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Lcom/google/zxing/ResultPointCallback;

    :goto_15
    move-object v4, v0

    .line 166
    .local v4, "resultPointCallback":Lcom/google/zxing/ResultPointCallback;
    move-object v4, v3

    const/4 v5, 0x0

    const/4 v6, 0x1

    if-eqz v3, :cond_37

    .line 167
    aget v3, v1, v5

    aget v7, v1, v6

    add-int/2addr v3, v7

    int-to-float v3, v3

    const/high16 v7, 0x40000000    # 2.0f

    div-float/2addr v3, v7

    .line 168
    .local v3, "center":F
    if-eqz p2, :cond_2e

    .line 170
    invoke-virtual {p1}, Lcom/google/zxing/common/BitArray;->getSize()I

    move-result v7

    sub-int/2addr v7, v6

    int-to-float v7, v7

    sub-float v3, v7, v3

    .line 172
    .end local v1    # "startEnd":[I
    :cond_2e
    new-instance v7, Lcom/google/zxing/ResultPoint;

    int-to-float v8, p3

    invoke-direct {v7, v3, v8}, Lcom/google/zxing/ResultPoint;-><init>(FF)V

    invoke-interface {v4, v7}, Lcom/google/zxing/ResultPointCallback;->foundPossibleResultPoint(Lcom/google/zxing/ResultPoint;)V

    .line 175
    .end local v3    # "center":F
    :cond_37
    invoke-direct {p0, p1, v2, v6}, Lcom/google/zxing/oned/rss/RSS14Reader;->decodeDataCharacter(Lcom/google/zxing/common/BitArray;Lcom/google/zxing/oned/rss/FinderPattern;Z)Lcom/google/zxing/oned/rss/DataCharacter;

    move-result-object v3

    .line 176
    .local v3, "outside":Lcom/google/zxing/oned/rss/DataCharacter;
    invoke-direct {p0, p1, v2, v5}, Lcom/google/zxing/oned/rss/RSS14Reader;->decodeDataCharacter(Lcom/google/zxing/common/BitArray;Lcom/google/zxing/oned/rss/FinderPattern;Z)Lcom/google/zxing/oned/rss/DataCharacter;

    move-result-object v5

    .line 177
    .local v5, "inside":Lcom/google/zxing/oned/rss/DataCharacter;
    new-instance v6, Lcom/google/zxing/oned/rss/Pair;

    invoke-virtual {v3}, Lcom/google/zxing/oned/rss/DataCharacter;->getValue()I

    move-result v7

    mul-int/lit16 v7, v7, 0x63d

    invoke-virtual {v5}, Lcom/google/zxing/oned/rss/DataCharacter;->getValue()I

    move-result v8

    add-int/2addr v7, v8

    .line 178
    invoke-virtual {v3}, Lcom/google/zxing/oned/rss/DataCharacter;->getChecksumPortion()I

    move-result v8

    invoke-virtual {v5}, Lcom/google/zxing/oned/rss/DataCharacter;->getChecksumPortion()I

    move-result v9

    mul-int/lit8 v9, v9, 0x4

    add-int/2addr v8, v9

    invoke-direct {v6, v7, v8, v2}, Lcom/google/zxing/oned/rss/Pair;-><init>(IILcom/google/zxing/oned/rss/FinderPattern;)V
    :try_end_5a
    .catch Lcom/google/zxing/NotFoundException; {:try_start_5 .. :try_end_5a} :catch_5b

    .line 177
    return-object v6

    .line 180
    .end local v2    # "pattern":Lcom/google/zxing/oned/rss/FinderPattern;
    .end local v3    # "outside":Lcom/google/zxing/oned/rss/DataCharacter;
    .end local v4    # "resultPointCallback":Lcom/google/zxing/ResultPointCallback;
    .end local v5    # "inside":Lcom/google/zxing/oned/rss/DataCharacter;
    :catch_5b
    move-exception v2

    goto :goto_5f

    :catch_5d
    move-exception v1

    move-object v1, v0

    .line 181
    .local v1, "ignored":Lcom/google/zxing/NotFoundException;
    :goto_5f
    return-object v0
.end method

.method private findFinderPattern(Lcom/google/zxing/common/BitArray;Z)[I
    .registers 16
    .param p1, "row"    # Lcom/google/zxing/common/BitArray;
    .param p2, "rightFinderPattern"    # Z
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/google/zxing/NotFoundException;
        }
    .end annotation

    .line 280
    invoke-virtual {p0}, Lcom/google/zxing/oned/rss/RSS14Reader;->getDecodeFinderCounters()[I

    move-result-object v0

    const/4 v1, 0x0

    .line 281
    .local v1, "counters":[I
    move-object v1, v0

    const/4 v2, 0x0

    aput v2, v0, v2

    .line 282
    const/4 v0, 0x1

    aput v2, v1, v0

    .line 283
    const/4 v3, 0x2

    aput v2, v1, v3

    .line 284
    const/4 v4, 0x3

    aput v2, v1, v4

    .line 286
    invoke-virtual {p1}, Lcom/google/zxing/common/BitArray;->getSize()I

    move-result v5

    .line 287
    .local v5, "width":I
    const/4 v6, 0x0

    .line 288
    .local v6, "isWhite":Z
    const/4 v7, 0x0

    .line 289
    .local v7, "rowOffset":I
    :goto_18
    if-ge v7, v5, :cond_25

    .line 290
    invoke-virtual {p1, v7}, Lcom/google/zxing/common/BitArray;->get(I)Z

    move-result v8

    xor-int/2addr v8, v0

    move v6, v8

    .line 291
    if-eq p2, v6, :cond_25

    .line 295
    add-int/lit8 v7, v7, 0x1

    goto :goto_18

    .line 298
    :cond_25
    const/4 v8, 0x0

    .line 299
    .local v8, "counterPosition":I
    move v9, v7

    .line 300
    .local v9, "patternStart":I
    move v10, v7

    .local v10, "x":I
    :goto_28
    if-ge v10, v5, :cond_67

    .line 301
    invoke-virtual {p1, v10}, Lcom/google/zxing/common/BitArray;->get(I)Z

    move-result v11

    if-eq v11, v6, :cond_36

    .line 302
    aget v11, v1, v8

    add-int/2addr v11, v0

    aput v11, v1, v8

    goto :goto_64

    .line 304
    :cond_36
    if-ne v8, v4, :cond_5a

    .line 305
    invoke-static {v1}, Lcom/google/zxing/oned/rss/RSS14Reader;->isFinderPattern([I)Z

    move-result v11

    if-eqz v11, :cond_45

    .line 306
    new-array v3, v3, [I

    aput v9, v3, v2

    aput v10, v3, v0

    return-object v3

    .line 308
    :cond_45
    aget v11, v1, v2

    aget v12, v1, v0

    add-int/2addr v11, v12

    add-int/2addr v9, v11

    .line 309
    aget v11, v1, v3

    aput v11, v1, v2

    .line 310
    aget v11, v1, v4

    aput v11, v1, v0

    .line 311
    aput v2, v1, v3

    .line 312
    aput v2, v1, v4

    .line 313
    add-int/lit8 v8, v8, -0x1

    goto :goto_5c

    .line 315
    :cond_5a
    add-int/lit8 v8, v8, 0x1

    .line 317
    :goto_5c
    aput v0, v1, v8

    .line 318
    if-nez v6, :cond_62

    const/4 v11, 0x1

    goto :goto_63

    :cond_62
    const/4 v11, 0x0

    :goto_63
    move v6, v11

    .line 300
    :goto_64
    add-int/lit8 v10, v10, 0x1

    goto :goto_28

    .line 321
    .end local v10    # "x":I
    :cond_67
    invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;

    move-result-object v0

    goto :goto_6d

    :goto_6c
    throw v0

    :goto_6d
    goto :goto_6c
.end method

.method private parseFoundFinderPattern(Lcom/google/zxing/common/BitArray;IZ[I)Lcom/google/zxing/oned/rss/FinderPattern;
    .registers 22
    .param p1, "row"    # Lcom/google/zxing/common/BitArray;
    .param p2, "rowNumber"    # I
    .param p3, "right"    # Z
    .param p4, "startEnd"    # [I
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/google/zxing/NotFoundException;
        }
    .end annotation

    .line 328
    move-object/from16 v0, p1

    const/4 v1, 0x0

    aget v2, p4, v1

    invoke-virtual {v0, v2}, Lcom/google/zxing/common/BitArray;->get(I)Z

    move-result v2

    .line 329
    .local v2, "firstIsBlack":Z
    aget v3, p4, v1

    const/4 v4, 0x1

    sub-int/2addr v3, v4

    .line 331
    .local v3, "firstElementStart":I
    :goto_d
    if-ltz v3, :cond_18

    invoke-virtual {v0, v3}, Lcom/google/zxing/common/BitArray;->get(I)Z

    move-result v5

    if-eq v2, v5, :cond_18

    .line 332
    add-int/lit8 v3, v3, -0x1

    goto :goto_d

    .line 334
    :cond_18
    add-int/2addr v3, v4

    .line 335
    aget v5, p4, v1

    sub-int/2addr v5, v3

    .line 337
    .local v5, "firstCounter":I
    invoke-virtual/range {p0 .. p0}, Lcom/google/zxing/oned/rss/RSS14Reader;->getDecodeFinderCounters()[I

    move-result-object v6

    const/4 v7, 0x0

    .line 338
    .local v7, "counters":[I
    move-object v7, v6

    array-length v8, v7

    sub-int/2addr v8, v4

    invoke-static {v6, v1, v7, v4, v8}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 339
    aput v5, v7, v1

    .line 340
    sget-object v6, Lcom/google/zxing/oned/rss/RSS14Reader;->FINDER_PATTERNS:[[I

    invoke-static {v7, v6}, Lcom/google/zxing/oned/rss/RSS14Reader;->parseFinderValue([I[[I)I

    move-result v6

    .line 341
    .local v6, "value":I
    move v8, v3

    .line 342
    .local v8, "start":I
    aget v9, p4, v4

    .line 343
    .local v9, "end":I
    if-eqz p3, :cond_45

    .line 345
    invoke-virtual/range {p1 .. p1}, Lcom/google/zxing/common/BitArray;->getSize()I

    move-result v10

    sub-int/2addr v10, v4

    sub-int v8, v10, v8

    .line 346
    invoke-virtual/range {p1 .. p1}, Lcom/google/zxing/common/BitArray;->getSize()I

    move-result v10

    sub-int/2addr v10, v4

    sub-int v9, v10, v9

    move v14, v8

    move v15, v9

    goto :goto_47

    .line 343
    :cond_45
    move v14, v8

    move v15, v9

    .line 348
    .end local v8    # "start":I
    .end local v9    # "end":I
    .local v14, "start":I
    .local v15, "end":I
    :goto_47
    new-instance v16, Lcom/google/zxing/oned/rss/FinderPattern;

    const/4 v8, 0x2

    new-array v10, v8, [I

    aput v3, v10, v1

    aget v1, p4, v4

    aput v1, v10, v4

    move-object/from16 v8, v16

    move v9, v6

    move v11, v14

    move v12, v15

    move/from16 v13, p2

    invoke-direct/range {v8 .. v13}, Lcom/google/zxing/oned/rss/FinderPattern;-><init>(I[IIII)V

    return-object v16
.end method


# virtual methods
.method public decodeRow(ILcom/google/zxing/common/BitArray;Ljava/util/Map;)Lcom/google/zxing/Result;
    .registers 12
    .param p1, "rowNumber"    # I
    .param p2, "row"    # Lcom/google/zxing/common/BitArray;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(I",
            "Lcom/google/zxing/common/BitArray;",
            "Ljava/util/Map<",
            "Lcom/google/zxing/DecodeHintType;",
            "*>;)",
            "Lcom/google/zxing/Result;"
        }
    .end annotation

    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/google/zxing/NotFoundException;
        }
    .end annotation

    .line 69
    .local p3, "hints":Ljava/util/Map;, "Ljava/util/Map<Lcom/google/zxing/DecodeHintType;*>;"
    const/4 v0, 0x0

    invoke-direct {p0, p2, v0, p1, p3}, Lcom/google/zxing/oned/rss/RSS14Reader;->decodePair(Lcom/google/zxing/common/BitArray;ZILjava/util/Map;)Lcom/google/zxing/oned/rss/Pair;

    move-result-object v0

    .line 70
    .local v0, "leftPair":Lcom/google/zxing/oned/rss/Pair;
    iget-object v1, p0, Lcom/google/zxing/oned/rss/RSS14Reader;->possibleLeftPairs:Ljava/util/List;

    invoke-static {v1, v0}, Lcom/google/zxing/oned/rss/RSS14Reader;->addOrTally(Ljava/util/Collection;Lcom/google/zxing/oned/rss/Pair;)V

    .line 71
    invoke-virtual {p2}, Lcom/google/zxing/common/BitArray;->reverse()V

    .line 72
    const/4 v1, 0x1

    invoke-direct {p0, p2, v1, p1, p3}, Lcom/google/zxing/oned/rss/RSS14Reader;->decodePair(Lcom/google/zxing/common/BitArray;ZILjava/util/Map;)Lcom/google/zxing/oned/rss/Pair;

    move-result-object v2

    .line 73
    .local v2, "rightPair":Lcom/google/zxing/oned/rss/Pair;
    iget-object v3, p0, Lcom/google/zxing/oned/rss/RSS14Reader;->possibleRightPairs:Ljava/util/List;

    invoke-static {v3, v2}, Lcom/google/zxing/oned/rss/RSS14Reader;->addOrTally(Ljava/util/Collection;Lcom/google/zxing/oned/rss/Pair;)V

    .line 74
    invoke-virtual {p2}, Lcom/google/zxing/common/BitArray;->reverse()V

    .line 75
    iget-object v3, p0, Lcom/google/zxing/oned/rss/RSS14Reader;->possibleLeftPairs:Ljava/util/List;

    invoke-interface {v3}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v3

    const/4 v4, 0x0

    move-object v5, v4

    :goto_22
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v6

    if-eqz v6, :cond_5b

    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v6

    check-cast v6, Lcom/google/zxing/oned/rss/Pair;

    .line 76
    .local v4, "left":Lcom/google/zxing/oned/rss/Pair;
    move-object v4, v6

    invoke-virtual {v6}, Lcom/google/zxing/oned/rss/Pair;->getCount()I

    move-result v6

    if-le v6, v1, :cond_5a

    .line 77
    iget-object v6, p0, Lcom/google/zxing/oned/rss/RSS14Reader;->possibleRightPairs:Ljava/util/List;

    invoke-interface {v6}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v6

    :goto_3b
    invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z

    move-result v7

    if-eqz v7, :cond_5a

    invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v7

    check-cast v7, Lcom/google/zxing/oned/rss/Pair;

    .line 78
    .local v5, "right":Lcom/google/zxing/oned/rss/Pair;
    move-object v5, v7

    invoke-virtual {v7}, Lcom/google/zxing/oned/rss/Pair;->getCount()I

    move-result v7

    if-le v7, v1, :cond_59

    invoke-static {v4, v5}, Lcom/google/zxing/oned/rss/RSS14Reader;->checkChecksum(Lcom/google/zxing/oned/rss/Pair;Lcom/google/zxing/oned/rss/Pair;)Z

    move-result v7

    if-eqz v7, :cond_59

    .line 79
    invoke-static {v4, v5}, Lcom/google/zxing/oned/rss/RSS14Reader;->constructResult(Lcom/google/zxing/oned/rss/Pair;Lcom/google/zxing/oned/rss/Pair;)Lcom/google/zxing/Result;

    move-result-object v1

    return-object v1

    .line 81
    .end local v5    # "right":Lcom/google/zxing/oned/rss/Pair;
    :cond_59
    goto :goto_3b

    .line 83
    .end local v4    # "left":Lcom/google/zxing/oned/rss/Pair;
    :cond_5a
    goto :goto_22

    .line 84
    :cond_5b
    invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;

    move-result-object v1

    goto :goto_61

    :goto_60
    throw v1

    :goto_61
    goto :goto_60
.end method

.method public reset()V
    .registers 2

    .line 106
    iget-object v0, p0, Lcom/google/zxing/oned/rss/RSS14Reader;->possibleLeftPairs:Ljava/util/List;

    invoke-interface {v0}, Ljava/util/List;->clear()V

    .line 107
    iget-object v0, p0, Lcom/google/zxing/oned/rss/RSS14Reader;->possibleRightPairs:Ljava/util/List;

    invoke-interface {v0}, Ljava/util/List;->clear()V

    .line 108
    return-void
.end method