tmap/smali_classes3/com/google/zxing/maxicode/decoder/DecodedBitStreamParser.smali
2022-06-10 21:38:30 +09:00

942 lines
19 KiB
Smali

.class final Lcom/google/zxing/maxicode/decoder/DecodedBitStreamParser;
.super Ljava/lang/Object;
.source "DecodedBitStreamParser.java"
# 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 public static constructor <clinit>()V
.locals 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/google/zxing/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/google/zxing/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 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 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 3
filled-new-array/range {v2 .. v7}, [Ljava/lang/String;
move-result-object v0
.line 4
sput-object v0, Lcom/google/zxing/maxicode/decoder/DecodedBitStreamParser;->SETS:[Ljava/lang/String;
return-void
.end method
.method private constructor <init>()V
.locals 0
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static decode([BI)Lcom/google/zxing/common/DecoderResult;
.locals 7
.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_2
const/4 v2, 0x3
if-eq p1, v2, :cond_2
const/4 v1, 0x4
const/4 v2, 0x1
if-eq p1, v1, :cond_1
const/4 v1, 0x5
if-eq p1, v1, :cond_0
goto/16 :goto_1
:cond_0
const/16 v1, 0x4d
.line 2
invoke-static {p0, v2, v1}, Lcom/google/zxing/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_1
:cond_1
const/16 v1, 0x5d
.line 3
invoke-static {p0, v2, v1}, Lcom/google/zxing/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_1
:cond_2
const/4 v2, 0x0
if-ne p1, v1, :cond_3
.line 4
invoke-static {p0}, Lcom/google/zxing/maxicode/decoder/DecodedBitStreamParser;->getPostCode2([B)I
move-result v1
.line 5
new-instance v3, Ljava/text/DecimalFormat;
invoke-static {p0}, Lcom/google/zxing/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 6
invoke-virtual {v3, v4, v5}, Ljava/text/NumberFormat;->format(J)Ljava/lang/String;
move-result-object v1
goto :goto_0
.line 7
:cond_3
invoke-static {p0}, Lcom/google/zxing/maxicode/decoder/DecodedBitStreamParser;->getPostCode3([B)Ljava/lang/String;
move-result-object v1
.line 8
:goto_0
sget-object v3, Lcom/google/zxing/maxicode/decoder/DecodedBitStreamParser;->THREE_DIGITS:Ljava/text/NumberFormat;
invoke-static {p0}, Lcom/google/zxing/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 9
invoke-static {p0}, Lcom/google/zxing/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 10
invoke-static {p0, v5, v6}, Lcom/google/zxing/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 11
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_4
const/16 v2, 0x9
.line 12
new-instance v5, Ljava/lang/StringBuilder;
invoke-static {v1}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v1
invoke-direct {v5, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
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;
goto :goto_1
.line 13
:cond_4
new-instance v5, Ljava/lang/StringBuilder;
invoke-static {v1}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v1
invoke-direct {v5, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
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 14
:goto_1
new-instance v1, Lcom/google/zxing/common/DecoderResult;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const/4 v2, 0x0
invoke-static {p1}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
move-result-object p1
invoke-direct {v1, p0, v0, v2, p1}, Lcom/google/zxing/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
.locals 1
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_0
const/4 v0, 0x0
:cond_0
return v0
.end method
.method private static getCountry([B)I
.locals 1
const/16 v0, 0xa
new-array v0, v0, [B
.line 1
fill-array-data v0, :array_0
invoke-static {p0, v0}, Lcom/google/zxing/maxicode/decoder/DecodedBitStreamParser;->getInt([B[B)I
move-result p0
return p0
:array_0
.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
.locals 4
const/4 v0, 0x0
move v1, v0
.line 1
:goto_0
array-length v2, p1
if-lt v0, v2, :cond_0
return v1
.line 2
:cond_0
aget-byte v2, p1, v0
invoke-static {v2, p0}, Lcom/google/zxing/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_0
.end method
.method private static getMessage([BII)Ljava/lang/String;
.locals 12
.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 v6, v4
move v5, v2
:goto_0
add-int v7, p1, p2
const/4 v8, 0x1
if-lt v3, v7, :cond_2
.line 2
:goto_1
invoke-virtual {v0}, Ljava/lang/StringBuilder;->length()I
move-result p0
if-lez p0, :cond_1
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-eq p0, p1, :cond_0
goto :goto_2
.line 3
:cond_0
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_1
.line 4
:cond_1
:goto_2
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
return-object p0
.line 5
:cond_2
sget-object v7, Lcom/google/zxing/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_0
.line 6
:pswitch_0
invoke-virtual {v0, v7}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
goto :goto_4
:pswitch_1
add-int/lit8 v3, v3, 0x1
.line 7
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 8
sget-object v9, Lcom/google/zxing/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_4
:pswitch_2
move v5, v2
move v4, v8
goto :goto_4
:pswitch_3
move v4, v1
:pswitch_4
move v5, v2
goto :goto_4
:pswitch_5
const/4 v5, 0x3
goto :goto_3
:pswitch_6
const/4 v5, 0x2
:goto_3
move v6, v4
move v4, v1
goto :goto_4
:pswitch_7
const v5, 0xfff0
sub-int/2addr v7, v5
move v6, v4
move v4, v7
move v5, v8
:goto_4
add-int/lit8 v7, v5, -0x1
if-nez v5, :cond_3
move v4, v6
:cond_3
add-int/2addr v3, v8
move v5, v7
goto :goto_0
:pswitch_data_0
.packed-switch 0xfff0
:pswitch_7
:pswitch_7
:pswitch_7
:pswitch_7
:pswitch_7
:pswitch_6
:pswitch_5
:pswitch_3
:pswitch_2
:pswitch_4
:pswitch_0
:pswitch_1
.end packed-switch
.end method
.method private static getPostCode2([B)I
.locals 1
const/16 v0, 0x1e
new-array v0, v0, [B
.line 1
fill-array-data v0, :array_0
invoke-static {p0, v0}, Lcom/google/zxing/maxicode/decoder/DecodedBitStreamParser;->getInt([B[B)I
move-result p0
return p0
:array_0
.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
.locals 1
const/4 v0, 0x6
new-array v0, v0, [B
.line 1
fill-array-data v0, :array_0
invoke-static {p0, v0}, Lcom/google/zxing/maxicode/decoder/DecodedBitStreamParser;->getInt([B[B)I
move-result p0
return p0
nop
:array_0
.array-data 1
0x27t
0x28t
0x29t
0x2at
0x1ft
0x20t
.end array-data
.end method
.method private static getPostCode3([B)Ljava/lang/String;
.locals 6
const/4 v0, 0x6
new-array v1, v0, [C
.line 1
sget-object v2, Lcom/google/zxing/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_0
invoke-static {p0, v5}, Lcom/google/zxing/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
.line 2
aget-object v4, v2, v3
new-array v5, v0, [B
fill-array-data v5, :array_1
invoke-static {p0, v5}, Lcom/google/zxing/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
.line 3
aget-object v4, v2, v3
new-array v5, v0, [B
fill-array-data v5, :array_2
invoke-static {p0, v5}, Lcom/google/zxing/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
.line 4
aget-object v4, v2, v3
new-array v5, v0, [B
fill-array-data v5, :array_3
invoke-static {p0, v5}, Lcom/google/zxing/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
.line 5
aget-object v4, v2, v3
new-array v5, v0, [B
fill-array-data v5, :array_4
invoke-static {p0, v5}, Lcom/google/zxing/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
.line 6
aget-object v2, v2, v3
new-array v0, v0, [B
fill-array-data v0, :array_5
invoke-static {p0, v0}, Lcom/google/zxing/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 7
invoke-static {v1}, Ljava/lang/String;->valueOf([C)Ljava/lang/String;
move-result-object p0
return-object p0
:array_0
.array-data 1
0x27t
0x28t
0x29t
0x2at
0x1ft
0x20t
.end array-data
nop
:array_1
.array-data 1
0x21t
0x22t
0x23t
0x24t
0x19t
0x1at
.end array-data
nop
:array_2
.array-data 1
0x1bt
0x1ct
0x1dt
0x1et
0x13t
0x14t
.end array-data
nop
:array_3
.array-data 1
0x15t
0x16t
0x17t
0x18t
0xdt
0xet
.end array-data
nop
:array_4
.array-data 1
0xft
0x10t
0x11t
0x12t
0x7t
0x8t
.end array-data
nop
:array_5
.array-data 1
0x9t
0xat
0xbt
0xct
0x1t
0x2t
.end array-data
.end method
.method private static getServiceClass([B)I
.locals 1
const/16 v0, 0xa
new-array v0, v0, [B
.line 1
fill-array-data v0, :array_0
invoke-static {p0, v0}, Lcom/google/zxing/maxicode/decoder/DecodedBitStreamParser;->getInt([B[B)I
move-result p0
return p0
:array_0
.array-data 1
0x37t
0x38t
0x39t
0x3at
0x3bt
0x3ct
0x31t
0x32t
0x33t
0x34t
.end array-data
.end method