.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 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 TWOSHIFTA:C = '\ufff5' # direct methods .method static constructor ()V .locals 6 const-string v0, "\nABCDEFGHIJKLMNOPQRSTUVWXYZ\ufffa\u001c\u001d\u001e\ufffb \ufffc\"#$%&\'()*+,-./0123456789:\ufff1\ufff2\ufff3\ufff4\ufff8" const-string v1, "`abcdefghijklmnopqrstuvwxyz\ufffa\u001c\u001d\u001e\ufffb{\ufffc}~\u007f;<=>?[\\]^_ ,./:@!|\ufffc\ufff5\ufff6\ufffc\ufff0\ufff2\ufff3\ufff4\ufff7" const-string v2, "\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 v3, "\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 v4, "\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 v5, "\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 1 filled-new-array/range {v0 .. v5}, [Ljava/lang/String; move-result-object v0 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 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 new-instance v3, Ljava/text/DecimalFormat; const-string v4, "000" invoke-direct {v3, v4}, Ljava/text/DecimalFormat;->(Ljava/lang/String;)V .line 9 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 10 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 11 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 12 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 13 new-instance v5, Ljava/lang/StringBuilder; invoke-direct {v5}, Ljava/lang/StringBuilder;->()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; goto :goto_1 .line 14 :cond_4 new-instance v5, Ljava/lang/StringBuilder; invoke-direct {v5}, Ljava/lang/StringBuilder;->()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 15 :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 p0, 0x0 return p0 :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 .line 1 array-length v0, p1 if-eqz v0, :cond_1 const/4 v0, 0x0 const/4 v1, 0x0 .line 2 :goto_0 array-length v2, p1 if-ge v0, v2, :cond_0 .line 3 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 :cond_0 return v1 .line 4 :cond_1 new-instance p0, Ljava/lang/IllegalArgumentException; invoke-direct {p0}, Ljava/lang/IllegalArgumentException;->()V throw p0 .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 const/4 v4, 0x0 const/4 v5, -0x1 const/4 v6, 0x0 :goto_0 add-int v7, p1, p2 const/4 v8, 0x1 if-ge v3, v7, :cond_1 .line 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 3 :pswitch_0 invoke-virtual {v0, v7}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; goto :goto_3 :pswitch_1 add-int/lit8 v3, v3, 0x1 .line 4 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 5 new-instance v9, Ljava/text/DecimalFormat; const-string v10, "000000000" invoke-direct {v9, v10}, Ljava/text/DecimalFormat;->(Ljava/lang/String;)V int-to-long v10, v7 invoke-virtual {v9, v10, v11}, Ljava/text/DecimalFormat;->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_3 :pswitch_2 const/4 v4, 0x1 goto :goto_1 :pswitch_3 const/4 v4, 0x0 :goto_1 :pswitch_4 const/4 v5, -0x1 goto :goto_3 :pswitch_5 const/4 v5, 0x3 goto :goto_2 :pswitch_6 const/4 v5, 0x2 :goto_2 move v6, v4 const/4 v4, 0x0 goto :goto_3 :pswitch_7 const v5, 0xfff0 sub-int v5, v7, v5 move v6, v4 move v4, v5 const/4 v5, 0x1 :goto_3 add-int/lit8 v7, v5, -0x1 if-nez v5, :cond_0 move v4, v6 :cond_0 add-int/2addr v3, v8 move v5, v7 goto :goto_0 .line 6 :cond_1 :goto_4 invoke-virtual {v0}, Ljava/lang/StringBuilder;->length()I move-result p0 if-lez p0, :cond_2 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_2 .line 7 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_4 .line 8 :cond_2 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p0 return-object p0 :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 5 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 v2, v2, v3 new-array v4, v0, [B fill-array-data v4, :array_0 .line 2 invoke-static {p0, v4}, Lcom/google/zxing/maxicode/decoder/DecodedBitStreamParser;->getInt([B[B)I move-result v4 invoke-virtual {v2, v4}, Ljava/lang/String;->charAt(I)C move-result v2 aput-char v2, v1, v3 sget-object v2, Lcom/google/zxing/maxicode/decoder/DecodedBitStreamParser;->SETS:[Ljava/lang/String; aget-object v2, v2, v3 new-array v4, v0, [B fill-array-data v4, :array_1 .line 3 invoke-static {p0, v4}, Lcom/google/zxing/maxicode/decoder/DecodedBitStreamParser;->getInt([B[B)I move-result v4 invoke-virtual {v2, v4}, Ljava/lang/String;->charAt(I)C move-result v2 const/4 v4, 0x1 aput-char v2, v1, v4 sget-object v2, Lcom/google/zxing/maxicode/decoder/DecodedBitStreamParser;->SETS:[Ljava/lang/String; aget-object v2, v2, v3 new-array v4, v0, [B fill-array-data v4, :array_2 .line 4 invoke-static {p0, v4}, Lcom/google/zxing/maxicode/decoder/DecodedBitStreamParser;->getInt([B[B)I move-result v4 invoke-virtual {v2, v4}, Ljava/lang/String;->charAt(I)C move-result v2 const/4 v4, 0x2 aput-char v2, v1, v4 sget-object v2, Lcom/google/zxing/maxicode/decoder/DecodedBitStreamParser;->SETS:[Ljava/lang/String; aget-object v2, v2, v3 new-array v4, v0, [B fill-array-data v4, :array_3 .line 5 invoke-static {p0, v4}, Lcom/google/zxing/maxicode/decoder/DecodedBitStreamParser;->getInt([B[B)I move-result v4 invoke-virtual {v2, v4}, Ljava/lang/String;->charAt(I)C move-result v2 const/4 v4, 0x3 aput-char v2, v1, v4 sget-object v2, Lcom/google/zxing/maxicode/decoder/DecodedBitStreamParser;->SETS:[Ljava/lang/String; aget-object v2, v2, v3 new-array v4, v0, [B fill-array-data v4, :array_4 .line 6 invoke-static {p0, v4}, Lcom/google/zxing/maxicode/decoder/DecodedBitStreamParser;->getInt([B[B)I move-result v4 invoke-virtual {v2, v4}, Ljava/lang/String;->charAt(I)C move-result v2 const/4 v4, 0x4 aput-char v2, v1, v4 sget-object v2, Lcom/google/zxing/maxicode/decoder/DecodedBitStreamParser;->SETS:[Ljava/lang/String; aget-object v2, v2, v3 new-array v0, v0, [B fill-array-data v0, :array_5 .line 7 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 8 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