DecodedBitStreamParser.smali
.class final Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;
.super Ljava/lang/Object;
# static fields
.field private static final ECI:C = '\ufffa'
.field private static final FS:C = '\u001c'
.field private static final GS:C = '\u001d'
.field private static final LATCHA:C = '\ufff7'
.field private static final LATCHB:C = '\ufff8'
.field private static final LOCK:C = '\ufff9'
.field private static final NINE_DIGITS:Ljava/text/NumberFormat;
.field private static final NS:C = '\ufffb'
.field private static final PAD:C = '\ufffc'
.field private static final RS:C = '\u001e'
.field private static final SETS:[Ljava/lang/String;
.field private static final SHIFTA:C = '\ufff0'
.field private static final SHIFTB:C = '\ufff1'
.field private static final SHIFTC:C = '\ufff2'
.field private static final SHIFTD:C = '\ufff3'
.field private static final SHIFTE:C = '\ufff4'
.field private static final THREESHIFTA:C = '\ufff6'
.field private static final THREE_DIGITS:Ljava/text/NumberFormat;
.field private static final TWOSHIFTA:C = '\ufff5'
# direct methods
.method static constructor <clinit>()V
.registers 8
.line 1
new-instance v0, Ljava/text/DecimalFormat;
const-string v1, "000000000"
invoke-direct {v0, v1}, Ljava/text/DecimalFormat;-><init>(Ljava/lang/String;)V
sput-object v0, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->NINE_DIGITS:Ljava/text/NumberFormat;
.line 2
new-instance v0, Ljava/text/DecimalFormat;
const-string v1, "000"
invoke-direct {v0, v1}, Ljava/text/DecimalFormat;-><init>(Ljava/lang/String;)V
sput-object v0, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->THREE_DIGITS:Ljava/text/NumberFormat;
const-string v2, "\nABCDEFGHIJKLMNOPQRSTUVWXYZ\ufffa\u001c\u001d\u001e\ufffb \ufffc\"#$%&\'()*+,-./0123456789:\ufff1\ufff2\ufff3\ufff4\ufff8"
const-string v3, "`abcdefghijklmnopqrstuvwxyz\ufffa\u001c\u001d\u001e\ufffb{\ufffc}~\u007f;<=>?[\\]^_ ,./:@!|\ufffc\ufff5\ufff6\ufffc\ufff0\ufff2\ufff3\ufff4\ufff7"
const-string/jumbo v4, "\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\ufffa\u001c\u001d\u001e\u00db\u00dc\u00dd\u00de\u00df\u00aa\u00ac\u00b1\u00b2\u00b3\u00b5\u00b9\u00ba\u00bc\u00bd\u00be\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\ufff7 \ufff9\ufff3\ufff4\ufff8"
const-string/jumbo v5, "\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\ufffa\u001c\u001d\u001e\ufffb\u00fb\u00fc\u00fd\u00fe\u00ff\u00a1\u00a8\u00ab\u00af\u00b0\u00b4\u00b7\u00b8\u00bb\u00bf\u008a\u008b\u008c\u008d\u008e\u008f\u0090\u0091\u0092\u0093\u0094\ufff7 \ufff2\ufff9\ufff4\ufff8"
const-string v6, "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\t\n\u000b\u000c\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\ufffa\ufffc\ufffc\u001b\ufffb\u001c\u001d\u001e\u001f\u009f\u00a0\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a9\u00ad\u00ae\u00b6\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e\ufff7 \ufff2\ufff3\ufff9\ufff8"
const-string v7, "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\t\n\u000b\u000c\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&\'()*+,-./0123456789:;<=>?"
.line 4
filled-new-array/range {v2 .. v7}, [Ljava/lang/String;
move-result-object v0
sput-object v0, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->SETS:[Ljava/lang/String;
return-void
.end method
.method private constructor <init>()V
.registers 1
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method static decode([BI)Lcom/dcloud/zxing2/common/DecoderResult;
.registers 9
.line 1
new-instance v0, Ljava/lang/StringBuilder;
const/16 v1, 0x90
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(I)V
const/4 v1, 0x2
if-eq p1, v1, :cond_2c
const/4 v2, 0x3
if-eq p1, v2, :cond_2c
const/4 v1, 0x4
const/4 v2, 0x1
if-eq p1, v1, :cond_21
const/4 v1, 0x5
if-eq p1, v1, :cond_16
goto/16 :goto_b8
:cond_16
const/16 v1, 0x4d
.line 26
invoke-static {p0, v2, v1}, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->getMessage([BII)Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
goto/16 :goto_b8
:cond_21
const/16 v1, 0x5d
.line 27
invoke-static {p0, v2, v1}, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->getMessage([BII)Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
goto/16 :goto_b8
:cond_2c
const/4 v2, 0x0
if-ne p1, v1, :cond_48
.line 28
invoke-static {p0}, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->getPostCode2([B)I
move-result v1
.line 29
new-instance v3, Ljava/text/DecimalFormat;
invoke-static {p0}, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->getPostCode2Length([B)I
move-result v4
const-string v5, "0000000000"
invoke-virtual {v5, v2, v4}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v4
invoke-direct {v3, v4}, Ljava/text/DecimalFormat;-><init>(Ljava/lang/String;)V
int-to-long v4, v1
.line 30
invoke-virtual {v3, v4, v5}, Ljava/text/NumberFormat;->format(J)Ljava/lang/String;
move-result-object v1
goto :goto_4c
.line 32
:cond_48
invoke-static {p0}, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->getPostCode3([B)Ljava/lang/String;
move-result-object v1
.line 34
:goto_4c
sget-object v3, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->THREE_DIGITS:Ljava/text/NumberFormat;
invoke-static {p0}, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->getCountry([B)I
move-result v4
int-to-long v4, v4
invoke-virtual {v3, v4, v5}, Ljava/text/NumberFormat;->format(J)Ljava/lang/String;
move-result-object v4
.line 35
invoke-static {p0}, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->getServiceClass([B)I
move-result v5
int-to-long v5, v5
invoke-virtual {v3, v5, v6}, Ljava/text/NumberFormat;->format(J)Ljava/lang/String;
move-result-object v3
const/16 v5, 0xa
const/16 v6, 0x54
.line 36
invoke-static {p0, v5, v6}, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->getMessage([BII)Ljava/lang/String;
move-result-object v5
invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 37
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v5
const-string v6, "[)>\u001e01\u001d"
invoke-virtual {v5, v6}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v5
const/16 v6, 0x1d
if-eqz v5, :cond_9a
.line 38
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v6}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v6}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v6}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
const/16 v2, 0x9
invoke-virtual {v0, v2, v1}, Ljava/lang/StringBuilder;->insert(ILjava/lang/String;)Ljava/lang/StringBuilder;
goto :goto_b8
.line 40
:cond_9a
new-instance v5, Ljava/lang/StringBuilder;
invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
invoke-virtual {v5, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v2, v1}, Ljava/lang/StringBuilder;->insert(ILjava/lang/String;)Ljava/lang/StringBuilder;
.line 50
:goto_b8
new-instance v1, Lcom/dcloud/zxing2/common/DecoderResult;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {p1}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
move-result-object p1
const/4 v2, 0x0
invoke-direct {v1, p0, v0, v2, p1}, Lcom/dcloud/zxing2/common/DecoderResult;-><init>([BLjava/lang/String;Ljava/util/List;Ljava/lang/String;)V
return-object v1
.end method
.method private static getBit(I[B)I
.registers 3
add-int/lit8 p0, p0, -0x1
.line 1
div-int/lit8 v0, p0, 0x6
aget-byte p1, p1, v0
rem-int/lit8 p0, p0, 0x6
rsub-int/lit8 p0, p0, 0x5
const/4 v0, 0x1
shl-int p0, v0, p0
and-int/2addr p0, p1
if-nez p0, :cond_11
const/4 v0, 0x0
:cond_11
return v0
.end method
.method private static getCountry([B)I
.registers 2
const/16 v0, 0xa
new-array v0, v0, [B
.line 1
fill-array-data v0, :array_c
invoke-static {p0, v0}, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->getInt([B[B)I
move-result p0
return p0
:array_c
.array-data 1
0x35t
0x36t
0x2bt
0x2ct
0x2dt
0x2et
0x2ft
0x30t
0x25t
0x26t
.end array-data
.end method
.method private static getInt([B[B)I
.registers 6
.line 1
array-length v0, p1
if-eqz v0, :cond_18
const/4 v0, 0x0
move v1, v0
.line 5
:goto_5
array-length v2, p1
if-ge v0, v2, :cond_17
.line 6
aget-byte v2, p1, v0
invoke-static {v2, p0}, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->getBit(I[B)I
move-result v2
array-length v3, p1
sub-int/2addr v3, v0
add-int/lit8 v3, v3, -0x1
shl-int/2addr v2, v3
add-int/2addr v1, v2
add-int/lit8 v0, v0, 0x1
goto :goto_5
:cond_17
return v1
.line 7
:cond_18
new-instance p0, Ljava/lang/IllegalArgumentException;
invoke-direct {p0}, Ljava/lang/IllegalArgumentException;-><init>()V
throw p0
.end method
.method private static getMessage([BII)Ljava/lang/String;
.registers 15
.line 1
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const/4 v1, 0x0
const/4 v2, -0x1
move v3, p1
move v4, v1
move v5, v4
move v6, v2
:goto_b
add-int v7, p1, p2
const/4 v8, 0x1
if-ge v3, v7, :cond_63
.line 6
sget-object v7, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->SETS:[Ljava/lang/String;
aget-object v7, v7, v4
aget-byte v9, p0, v3
invoke-virtual {v7, v9}, Ljava/lang/String;->charAt(I)C
move-result v7
packed-switch v7, :pswitch_data_86
.line 43
:pswitch_1d
invoke-virtual {v0, v7}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
goto :goto_5b
:pswitch_21
add-int/lit8 v3, v3, 0x1
.line 44
aget-byte v7, p0, v3
shl-int/lit8 v7, v7, 0x18
add-int/2addr v3, v8
aget-byte v9, p0, v3
shl-int/lit8 v9, v9, 0x12
add-int/2addr v7, v9
add-int/2addr v3, v8
aget-byte v9, p0, v3
shl-int/lit8 v9, v9, 0xc
add-int/2addr v7, v9
add-int/2addr v3, v8
aget-byte v9, p0, v3
shl-int/lit8 v9, v9, 0x6
add-int/2addr v7, v9
add-int/2addr v3, v8
aget-byte v9, p0, v3
add-int/2addr v7, v9
.line 45
sget-object v9, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->NINE_DIGITS:Ljava/text/NumberFormat;
int-to-long v10, v7
invoke-virtual {v9, v10, v11}, Ljava/text/NumberFormat;->format(J)Ljava/lang/String;
move-result-object v7
invoke-virtual {v0, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
goto :goto_5b
:pswitch_48
move v6, v2
move v4, v8
goto :goto_5b
:pswitch_4b
move v4, v1
:pswitch_4c
move v6, v2
goto :goto_5b
:pswitch_4e
const/4 v6, 0x3
goto :goto_51
:pswitch_50
const/4 v6, 0x2
:goto_51
move v5, v4
move v4, v1
goto :goto_5b
:pswitch_54
const v5, 0xfff0
sub-int/2addr v7, v5
move v5, v4
move v4, v7
move v6, v8
:goto_5b
add-int/lit8 v7, v6, -0x1
if-nez v6, :cond_60
move v4, v5
:cond_60
add-int/2addr v3, v8
move v6, v7
goto :goto_b
.line 57
:cond_63
:goto_63
invoke-virtual {v0}, Ljava/lang/StringBuilder;->length()I
move-result p0
if-lez p0, :cond_80
invoke-virtual {v0}, Ljava/lang/StringBuilder;->length()I
move-result p0
sub-int/2addr p0, v8
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->charAt(I)C
move-result p0
const p1, 0xfffc
if-ne p0, p1, :cond_80
.line 58
invoke-virtual {v0}, Ljava/lang/StringBuilder;->length()I
move-result p0
sub-int/2addr p0, v8
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->setLength(I)V
goto :goto_63
.line 60
:cond_80
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
return-object p0
nop
:pswitch_data_86
.packed-switch 0xfff0
:pswitch_54
:pswitch_54
:pswitch_54
:pswitch_54
:pswitch_54
:pswitch_50
:pswitch_4e
:pswitch_4b
:pswitch_48
:pswitch_4c
:pswitch_1d
:pswitch_21
.end packed-switch
.end method
.method private static getPostCode2([B)I
.registers 2
const/16 v0, 0x1e
new-array v0, v0, [B
.line 1
fill-array-data v0, :array_c
invoke-static {p0, v0}, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->getInt([B[B)I
move-result p0
return p0
:array_c
.array-data 1
0x21t
0x22t
0x23t
0x24t
0x19t
0x1at
0x1bt
0x1ct
0x1dt
0x1et
0x13t
0x14t
0x15t
0x16t
0x17t
0x18t
0xdt
0xet
0xft
0x10t
0x11t
0x12t
0x7t
0x8t
0x9t
0xat
0xbt
0xct
0x1t
0x2t
.end array-data
.end method
.method private static getPostCode2Length([B)I
.registers 2
const/4 v0, 0x6
new-array v0, v0, [B
.line 1
fill-array-data v0, :array_c
invoke-static {p0, v0}, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->getInt([B[B)I
move-result p0
return p0
nop
:array_c
.array-data 1
0x27t
0x28t
0x29t
0x2at
0x1ft
0x20t
.end array-data
.end method
.method private static getPostCode3([B)Ljava/lang/String;
.registers 7
const/4 v0, 0x6
new-array v1, v0, [C
.line 1
sget-object v2, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->SETS:[Ljava/lang/String;
const/4 v3, 0x0
aget-object v4, v2, v3
new-array v5, v0, [B
fill-array-data v5, :array_76
.line 3
invoke-static {p0, v5}, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->getInt([B[B)I
move-result v5
invoke-virtual {v4, v5}, Ljava/lang/String;->charAt(I)C
move-result v4
aput-char v4, v1, v3
aget-object v4, v2, v3
new-array v5, v0, [B
fill-array-data v5, :array_7e
.line 4
invoke-static {p0, v5}, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->getInt([B[B)I
move-result v5
invoke-virtual {v4, v5}, Ljava/lang/String;->charAt(I)C
move-result v4
const/4 v5, 0x1
aput-char v4, v1, v5
aget-object v4, v2, v3
new-array v5, v0, [B
fill-array-data v5, :array_86
.line 5
invoke-static {p0, v5}, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->getInt([B[B)I
move-result v5
invoke-virtual {v4, v5}, Ljava/lang/String;->charAt(I)C
move-result v4
const/4 v5, 0x2
aput-char v4, v1, v5
aget-object v4, v2, v3
new-array v5, v0, [B
fill-array-data v5, :array_8e
.line 6
invoke-static {p0, v5}, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->getInt([B[B)I
move-result v5
invoke-virtual {v4, v5}, Ljava/lang/String;->charAt(I)C
move-result v4
const/4 v5, 0x3
aput-char v4, v1, v5
aget-object v4, v2, v3
new-array v5, v0, [B
fill-array-data v5, :array_96
.line 7
invoke-static {p0, v5}, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->getInt([B[B)I
move-result v5
invoke-virtual {v4, v5}, Ljava/lang/String;->charAt(I)C
move-result v4
const/4 v5, 0x4
aput-char v4, v1, v5
aget-object v2, v2, v3
new-array v0, v0, [B
fill-array-data v0, :array_9e
.line 8
invoke-static {p0, v0}, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->getInt([B[B)I
move-result p0
invoke-virtual {v2, p0}, Ljava/lang/String;->charAt(I)C
move-result p0
const/4 v0, 0x5
aput-char p0, v1, v0
.line 9
invoke-static {v1}, Ljava/lang/String;->valueOf([C)Ljava/lang/String;
move-result-object p0
return-object p0
:array_76
.array-data 1
0x27t
0x28t
0x29t
0x2at
0x1ft
0x20t
.end array-data
nop
:array_7e
.array-data 1
0x21t
0x22t
0x23t
0x24t
0x19t
0x1at
.end array-data
nop
:array_86
.array-data 1
0x1bt
0x1ct
0x1dt
0x1et
0x13t
0x14t
.end array-data
nop
:array_8e
.array-data 1
0x15t
0x16t
0x17t
0x18t
0xdt
0xet
.end array-data
nop
:array_96
.array-data 1
0xft
0x10t
0x11t
0x12t
0x7t
0x8t
.end array-data
nop
:array_9e
.array-data 1
0x9t
0xat
0xbt
0xct
0x1t
0x2t
.end array-data
.end method
.method private static getServiceClass([B)I
.registers 2
const/16 v0, 0xa
new-array v0, v0, [B
.line 1
fill-array-data v0, :array_c
invoke-static {p0, v0}, Lcom/dcloud/zxing2/maxicode/decoder/DecodedBitStreamParser;->getInt([B[B)I
move-result p0
return p0
:array_c
.array-data 1
0x37t
0x38t
0x39t
0x3at
0x3bt
0x3ct
0x31t
0x32t
0x33t
0x34t
.end array-data
.end method