.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 ()V .locals 8 .line 1 new-instance v0, Ljava/text/DecimalFormat; const-string v1, "000000000" invoke-direct {v0, v1}, Ljava/text/DecimalFormat;->(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;->(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 ()V .locals 0 .line 1 invoke-direct {p0}, Ljava/lang/Object;->()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;->(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;->(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;->(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;->(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;->([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;->()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