Code93Reader.smali 
.class public final Lcom/dcloud/zxing2/oned/Code93Reader;
.super Lcom/dcloud/zxing2/oned/OneDReader;
# static fields
.field private static final ALPHABET:[C
.field static final ALPHABET_STRING:Ljava/lang/String; = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%abcd*"
.field private static final ASTERISK_ENCODING:I
.field static final CHARACTER_ENCODINGS:[I
# instance fields
.field private final counters:[I
.field private final decodeRowResult:Ljava/lang/StringBuilder;
# direct methods
.method static constructor <clinit>()V
    .registers 2
    const-string v0, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%abcd*"
    .line 1
    invoke-virtual {v0}, Ljava/lang/String;->toCharArray()[C
    move-result-object v0
    sput-object v0, Lcom/dcloud/zxing2/oned/Code93Reader;->ALPHABET:[C
    const/16 v0, 0x30
    new-array v0, v0, [I
    .line 7
    fill-array-data v0, :array_18
    sput-object v0, Lcom/dcloud/zxing2/oned/Code93Reader;->CHARACTER_ENCODINGS:[I
    const/16 v1, 0x2f
    .line 15
    aget v0, v0, v1
    sput v0, Lcom/dcloud/zxing2/oned/Code93Reader;->ASTERISK_ENCODING:I
    return-void
    :array_18
    .array-data 4
        0x114
        0x148
        0x144
        0x142
        0x128
        0x124
        0x122
        0x150
        0x112
        0x10a
        0x1a8
        0x1a4
        0x1a2
        0x194
        0x192
        0x18a
        0x168
        0x164
        0x162
        0x134
        0x11a
        0x158
        0x14c
        0x146
        0x12c
        0x116
        0x1b4
        0x1b2
        0x1ac
        0x1a6
        0x196
        0x19a
        0x16c
        0x166
        0x136
        0x13a
        0x12e
        0x1d4
        0x1d2
        0x1ca
        0x16e
        0x176
        0x1ae
        0x126
        0x1da
        0x1d6
        0x132
        0x15e
    .end array-data
.end method
.method public constructor <init>()V
    .registers 3
    .line 1
    invoke-direct {p0}, Lcom/dcloud/zxing2/oned/OneDReader;-><init>()V
    .line 2
    new-instance v0, Ljava/lang/StringBuilder;
    const/16 v1, 0x14
    invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(I)V
    iput-object v0, p0, Lcom/dcloud/zxing2/oned/Code93Reader;->decodeRowResult:Ljava/lang/StringBuilder;
    const/4 v0, 0x6
    new-array v0, v0, [I
    .line 3
    iput-object v0, p0, Lcom/dcloud/zxing2/oned/Code93Reader;->counters:[I
    return-void
.end method
.method private static checkChecksums(Ljava/lang/CharSequence;)V
    .registers 4
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/dcloud/zxing2/ChecksumException;
        }
    .end annotation
    .line 1
    invoke-interface {p0}, Ljava/lang/CharSequence;->length()I
    move-result v0
    add-int/lit8 v1, v0, -0x2
    const/16 v2, 0x14
    .line 2
    invoke-static {p0, v1, v2}, Lcom/dcloud/zxing2/oned/Code93Reader;->checkOneChecksum(Ljava/lang/CharSequence;II)V
    add-int/lit8 v0, v0, -0x1
    const/16 v1, 0xf
    .line 3
    invoke-static {p0, v0, v1}, Lcom/dcloud/zxing2/oned/Code93Reader;->checkOneChecksum(Ljava/lang/CharSequence;II)V
    return-void
.end method
.method private static checkOneChecksum(Ljava/lang/CharSequence;II)V
    .registers 9
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/dcloud/zxing2/ChecksumException;
        }
    .end annotation
    add-int/lit8 v0, p1, -0x1
    const/4 v1, 0x1
    const/4 v2, 0x0
    move v3, v1
    :goto_5
    if-ltz v0, :cond_1a
    .line 1
    invoke-interface {p0, v0}, Ljava/lang/CharSequence;->charAt(I)C
    move-result v4
    const-string v5, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%abcd*"
    invoke-virtual {v5, v4}, Ljava/lang/String;->indexOf(I)I
    move-result v4
    mul-int/2addr v4, v3
    add-int/2addr v2, v4
    add-int/2addr v3, v1
    if-le v3, p2, :cond_17
    move v3, v1
    :cond_17
    add-int/lit8 v0, v0, -0x1
    goto :goto_5
    .line 6
    :cond_1a
    invoke-interface {p0, p1}, Ljava/lang/CharSequence;->charAt(I)C
    move-result p0
    sget-object p1, Lcom/dcloud/zxing2/oned/Code93Reader;->ALPHABET:[C
    rem-int/lit8 v2, v2, 0x2f
    aget-char p1, p1, v2
    if-ne p0, p1, :cond_27
    return-void
    .line 7
    :cond_27
    invoke-static {}, Lcom/dcloud/zxing2/ChecksumException;->getChecksumInstance()Lcom/dcloud/zxing2/ChecksumException;
    move-result-object p0
    throw p0
.end method
.method private static decodeExtended(Ljava/lang/CharSequence;)Ljava/lang/String;
    .registers 10
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/dcloud/zxing2/FormatException;
        }
    .end annotation
    .line 1
    invoke-interface {p0}, Ljava/lang/CharSequence;->length()I
    move-result v0
    .line 2
    new-instance v1, Ljava/lang/StringBuilder;
    invoke-direct {v1, v0}, Ljava/lang/StringBuilder;-><init>(I)V
    const/4 v2, 0x0
    move v3, v2
    :goto_b
    if-ge v3, v0, :cond_9f
    .line 4
    invoke-interface {p0, v3}, Ljava/lang/CharSequence;->charAt(I)C
    move-result v4
    const/16 v5, 0x61
    if-lt v4, v5, :cond_98
    const/16 v5, 0x64
    if-gt v4, v5, :cond_98
    add-int/lit8 v5, v0, -0x1
    if-ge v3, v5, :cond_93
    add-int/lit8 v3, v3, 0x1
    .line 9
    invoke-interface {p0, v3}, Ljava/lang/CharSequence;->charAt(I)C
    move-result v5
    const/16 v6, 0x4f
    const/16 v7, 0x5a
    const/16 v8, 0x41
    packed-switch v4, :pswitch_data_a4
    move v4, v2
    goto/16 :goto_8f
    :pswitch_2f
    if-lt v5, v8, :cond_36
    if-gt v5, v7, :cond_36
    add-int/lit8 v5, v5, 0x20
    goto :goto_88
    .line 17
    :cond_36
    invoke-static {}, Lcom/dcloud/zxing2/FormatException;->getFormatInstance()Lcom/dcloud/zxing2/FormatException;
    move-result-object p0
    throw p0
    :pswitch_3b
    if-lt v5, v8, :cond_42
    if-gt v5, v6, :cond_42
    add-int/lit8 v5, v5, -0x20
    goto :goto_88
    :cond_42
    if-ne v5, v7, :cond_47
    const/16 v4, 0x3a
    goto :goto_8f
    .line 55
    :cond_47
    invoke-static {}, Lcom/dcloud/zxing2/FormatException;->getFormatInstance()Lcom/dcloud/zxing2/FormatException;
    move-result-object p0
    throw p0
    :pswitch_4c
    if-lt v5, v8, :cond_55
    const/16 v4, 0x45
    if-gt v5, v4, :cond_55
    add-int/lit8 v5, v5, -0x26
    goto :goto_88
    :cond_55
    const/16 v4, 0x46
    if-lt v5, v4, :cond_60
    const/16 v4, 0x4a
    if-gt v5, v4, :cond_60
    add-int/lit8 v5, v5, -0xb
    goto :goto_88
    :cond_60
    const/16 v4, 0x4b
    if-lt v5, v4, :cond_69
    if-gt v5, v6, :cond_69
    add-int/lit8 v5, v5, 0x10
    goto :goto_88
    :cond_69
    const/16 v4, 0x50
    if-lt v5, v4, :cond_74
    const/16 v4, 0x53
    if-gt v5, v4, :cond_74
    add-int/lit8 v5, v5, 0x2b
    goto :goto_88
    :cond_74
    const/16 v4, 0x54
    if-lt v5, v4, :cond_7d
    if-gt v5, v7, :cond_7d
    const/16 v4, 0x7f
    goto :goto_8f
    .line 56
    :cond_7d
    invoke-static {}, Lcom/dcloud/zxing2/FormatException;->getFormatInstance()Lcom/dcloud/zxing2/FormatException;
    move-result-object p0
    throw p0
    :pswitch_82
    if-lt v5, v8, :cond_8a
    if-gt v5, v7, :cond_8a
    add-int/lit8 v5, v5, -0x40
    :goto_88
    int-to-char v4, v5
    goto :goto_8f
    .line 57
    :cond_8a
    invoke-static {}, Lcom/dcloud/zxing2/FormatException;->getFormatInstance()Lcom/dcloud/zxing2/FormatException;
    move-result-object p0
    throw p0
    .line 91
    :goto_8f
    invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
    goto :goto_9b
    .line 92
    :cond_93
    invoke-static {}, Lcom/dcloud/zxing2/FormatException;->getFormatInstance()Lcom/dcloud/zxing2/FormatException;
    move-result-object p0
    throw p0
    .line 148
    :cond_98
    invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
    :goto_9b
    add-int/lit8 v3, v3, 0x1
    goto/16 :goto_b
    .line 151
    :cond_9f
    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object p0
    return-object p0
    :pswitch_data_a4
    .packed-switch 0x61
        :pswitch_82
        :pswitch_4c
        :pswitch_3b
        :pswitch_2f
    .end packed-switch
.end method
.method private findAsteriskPattern(Lcom/dcloud/zxing2/common/BitArray;)[I
    .registers 15
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/dcloud/zxing2/NotFoundException;
        }
    .end annotation
    .line 1
    invoke-virtual {p1}, Lcom/dcloud/zxing2/common/BitArray;->getSize()I
    move-result v0
    const/4 v1, 0x0
    .line 2
    invoke-virtual {p1, v1}, Lcom/dcloud/zxing2/common/BitArray;->getNextSet(I)I
    move-result v2
    .line 4
    iget-object v3, p0, Lcom/dcloud/zxing2/oned/Code93Reader;->counters:[I
    invoke-static {v3, v1}, Ljava/util/Arrays;->fill([II)V
    .line 5
    iget-object v3, p0, Lcom/dcloud/zxing2/oned/Code93Reader;->counters:[I
    .line 8
    array-length v4, v3
    move v6, v1
    move v7, v6
    move v5, v2
    :goto_14
    if-ge v2, v0, :cond_53
    .line 12
    invoke-virtual {p1, v2}, Lcom/dcloud/zxing2/common/BitArray;->get(I)Z
    move-result v8
    xor-int/2addr v8, v6
    const/4 v9, 0x1
    if-eqz v8, :cond_24
    .line 13
    aget v8, v3, v7
    add-int/2addr v8, v9
    aput v8, v3, v7
    goto :goto_50
    :cond_24
    add-int/lit8 v8, v4, -0x1
    if-ne v7, v8, :cond_4a
    .line 16
    invoke-static {v3}, Lcom/dcloud/zxing2/oned/Code93Reader;->toPattern([I)I
    move-result v10
    sget v11, Lcom/dcloud/zxing2/oned/Code93Reader;->ASTERISK_ENCODING:I
    const/4 v12, 0x2
    if-ne v10, v11, :cond_38
    new-array p1, v12, [I
    aput v5, p1, v1
    aput v2, p1, v9
    return-object p1
    .line 19
    :cond_38
    aget v10, v3, v1
    aget v11, v3, v9
    add-int/2addr v10, v11
    add-int/2addr v5, v10
    add-int/lit8 v10, v4, -0x2
    .line 20
    invoke-static {v3, v12, v3, v1, v10}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
    .line 21
    aput v1, v3, v10
    .line 22
    aput v1, v3, v8
    add-int/lit8 v7, v7, -0x1
    goto :goto_4c
    :cond_4a
    add-int/lit8 v7, v7, 0x1
    .line 27
    :goto_4c
    aput v9, v3, v7
    xor-int/lit8 v6, v6, 0x1
    :goto_50
    add-int/lit8 v2, v2, 0x1
    goto :goto_14
    .line 31
    :cond_53
    invoke-static {}, Lcom/dcloud/zxing2/NotFoundException;->getNotFoundInstance()Lcom/dcloud/zxing2/NotFoundException;
    move-result-object p1
    throw p1
.end method
.method private static patternToChar(I)C
    .registers 4
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/dcloud/zxing2/NotFoundException;
        }
    .end annotation
    const/4 v0, 0x0
    .line 1
    :goto_1
    sget-object v1, Lcom/dcloud/zxing2/oned/Code93Reader;->CHARACTER_ENCODINGS:[I
    array-length v2, v1
    if-ge v0, v2, :cond_12
    .line 2
    aget v1, v1, v0
    if-ne v1, p0, :cond_f
    .line 3
    sget-object p0, Lcom/dcloud/zxing2/oned/Code93Reader;->ALPHABET:[C
    aget-char p0, p0, v0
    return p0
    :cond_f
    add-int/lit8 v0, v0, 0x1
    goto :goto_1
    .line 6
    :cond_12
    invoke-static {}, Lcom/dcloud/zxing2/NotFoundException;->getNotFoundInstance()Lcom/dcloud/zxing2/NotFoundException;
    move-result-object p0
    throw p0
.end method
.method private static toPattern([I)I
    .registers 9
    .line 1
    array-length v0, p0
    .line 3
    array-length v1, p0
    const/4 v2, 0x0
    move v3, v2
    move v4, v3
    :goto_5
    if-ge v3, v1, :cond_d
    aget v5, p0, v3
    add-int/2addr v4, v5
    add-int/lit8 v3, v3, 0x1
    goto :goto_5
    :cond_d
    move v1, v2
    move v3, v1
    :goto_f
    if-ge v1, v0, :cond_37
    .line 8
    aget v5, p0, v1
    int-to-float v5, v5
    const/high16 v6, 0x41100000    # 9.0f
    mul-float/2addr v5, v6
    int-to-float v6, v4
    div-float/2addr v5, v6
    invoke-static {v5}, Ljava/lang/Math;->round(F)I
    move-result v5
    const/4 v6, 0x1
    if-lt v5, v6, :cond_35
    const/4 v7, 0x4
    if-le v5, v7, :cond_24
    goto :goto_35
    :cond_24
    and-int/lit8 v7, v1, 0x1
    if-nez v7, :cond_31
    move v7, v2
    :goto_29
    if-ge v7, v5, :cond_32
    shl-int/lit8 v3, v3, 0x1
    or-int/2addr v3, v6
    add-int/lit8 v7, v7, 0x1
    goto :goto_29
    :cond_31
    shl-int/2addr v3, v5
    :cond_32
    add-int/lit8 v1, v1, 0x1
    goto :goto_f
    :cond_35
    :goto_35
    const/4 p0, -0x1
    return p0
    :cond_37
    return v3
.end method
# virtual methods
.method public decodeRow(ILcom/dcloud/zxing2/common/BitArray;Ljava/util/Map;)Lcom/dcloud/zxing2/Result;
    .registers 15
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(I",
            "Lcom/dcloud/zxing2/common/BitArray;",
            "Ljava/util/Map<",
            "Lcom/dcloud/zxing2/DecodeHintType;",
            "*>;)",
            "Lcom/dcloud/zxing2/Result;"
        }
    .end annotation
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/dcloud/zxing2/NotFoundException;,
            Lcom/dcloud/zxing2/ChecksumException;,
            Lcom/dcloud/zxing2/FormatException;
        }
    .end annotation
    .line 1
    invoke-direct {p0, p2}, Lcom/dcloud/zxing2/oned/Code93Reader;->findAsteriskPattern(Lcom/dcloud/zxing2/common/BitArray;)[I
    move-result-object p3
    const/4 v0, 0x1
    .line 3
    aget v1, p3, v0
    invoke-virtual {p2, v1}, Lcom/dcloud/zxing2/common/BitArray;->getNextSet(I)I
    move-result v1
    .line 4
    invoke-virtual {p2}, Lcom/dcloud/zxing2/common/BitArray;->getSize()I
    move-result v2
    .line 6
    iget-object v3, p0, Lcom/dcloud/zxing2/oned/Code93Reader;->counters:[I
    const/4 v4, 0x0
    .line 7
    invoke-static {v3, v4}, Ljava/util/Arrays;->fill([II)V
    .line 8
    iget-object v5, p0, Lcom/dcloud/zxing2/oned/Code93Reader;->decodeRowResult:Ljava/lang/StringBuilder;
    .line 9
    invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->setLength(I)V
    .line 14
    :goto_1a
    invoke-static {p2, v1, v3}, Lcom/dcloud/zxing2/oned/OneDReader;->recordPattern(Lcom/dcloud/zxing2/common/BitArray;I[I)V
    .line 15
    invoke-static {v3}, Lcom/dcloud/zxing2/oned/Code93Reader;->toPattern([I)I
    move-result v6
    if-ltz v6, :cond_a2
    .line 19
    invoke-static {v6}, Lcom/dcloud/zxing2/oned/Code93Reader;->patternToChar(I)C
    move-result v6
    .line 20
    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
    .line 22
    array-length v7, v3
    move v9, v1
    move v8, v4
    :goto_2d
    if-ge v8, v7, :cond_35
    aget v10, v3, v8
    add-int/2addr v9, v10
    add-int/lit8 v8, v8, 0x1
    goto :goto_2d
    .line 26
    :cond_35
    invoke-virtual {p2, v9}, Lcom/dcloud/zxing2/common/BitArray;->getNextSet(I)I
    move-result v7
    const/16 v8, 0x2a
    if-ne v6, v8, :cond_9f
    .line 28
    invoke-virtual {v5}, Ljava/lang/StringBuilder;->length()I
    move-result v6
    sub-int/2addr v6, v0
    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->deleteCharAt(I)Ljava/lang/StringBuilder;
    .line 31
    array-length v6, v3
    move v8, v4
    move v9, v8
    :goto_48
    if-ge v8, v6, :cond_50
    aget v10, v3, v8
    add-int/2addr v9, v10
    add-int/lit8 v8, v8, 0x1
    goto :goto_48
    :cond_50
    if-eq v7, v2, :cond_9a
    .line 36
    invoke-virtual {p2, v7}, Lcom/dcloud/zxing2/common/BitArray;->get(I)Z
    move-result p2
    if-eqz p2, :cond_9a
    .line 40
    invoke-virtual {v5}, Ljava/lang/StringBuilder;->length()I
    move-result p2
    const/4 v2, 0x2
    if-lt p2, v2, :cond_95
    .line 45
    invoke-static {v5}, Lcom/dcloud/zxing2/oned/Code93Reader;->checkChecksums(Ljava/lang/CharSequence;)V
    .line 47
    invoke-virtual {v5}, Ljava/lang/StringBuilder;->length()I
    move-result p2
    sub-int/2addr p2, v2
    invoke-virtual {v5, p2}, Ljava/lang/StringBuilder;->setLength(I)V
    .line 49
    invoke-static {v5}, Lcom/dcloud/zxing2/oned/Code93Reader;->decodeExtended(Ljava/lang/CharSequence;)Ljava/lang/String;
    move-result-object p2
    .line 51
    aget v3, p3, v0
    aget p3, p3, v4
    add-int/2addr v3, p3
    int-to-float p3, v3
    const/high16 v3, 0x40000000    # 2.0f
    div-float/2addr p3, v3
    int-to-float v1, v1
    int-to-float v5, v9
    div-float/2addr v5, v3
    add-float/2addr v1, v5
    .line 53
    new-instance v3, Lcom/dcloud/zxing2/Result;
    new-array v2, v2, [Lcom/dcloud/zxing2/ResultPoint;
    new-instance v5, Lcom/dcloud/zxing2/ResultPoint;
    int-to-float p1, p1
    invoke-direct {v5, p3, p1}, Lcom/dcloud/zxing2/ResultPoint;-><init>(FF)V
    aput-object v5, v2, v4
    new-instance p3, Lcom/dcloud/zxing2/ResultPoint;
    invoke-direct {p3, v1, p1}, Lcom/dcloud/zxing2/ResultPoint;-><init>(FF)V
    aput-object p3, v2, v0
    sget-object p1, Lcom/dcloud/zxing2/BarcodeFormat;->CODE_93:Lcom/dcloud/zxing2/BarcodeFormat;
    const/4 p3, 0x0
    invoke-direct {v3, p2, p3, v2, p1}, Lcom/dcloud/zxing2/Result;-><init>(Ljava/lang/String;[B[Lcom/dcloud/zxing2/ResultPoint;Lcom/dcloud/zxing2/BarcodeFormat;)V
    return-object v3
    .line 54
    :cond_95
    invoke-static {}, Lcom/dcloud/zxing2/NotFoundException;->getNotFoundInstance()Lcom/dcloud/zxing2/NotFoundException;
    move-result-object p1
    throw p1
    .line 55
    :cond_9a
    invoke-static {}, Lcom/dcloud/zxing2/NotFoundException;->getNotFoundInstance()Lcom/dcloud/zxing2/NotFoundException;
    move-result-object p1
    throw p1
    :cond_9f
    move v1, v7
    goto/16 :goto_1a
    .line 56
    :cond_a2
    invoke-static {}, Lcom/dcloud/zxing2/NotFoundException;->getNotFoundInstance()Lcom/dcloud/zxing2/NotFoundException;
    move-result-object p1
    throw p1
.end method