StringUtils.smali 
.class public final Lcom/dcloud/zxing2/common/StringUtils;
.super Ljava/lang/Object;
# static fields
.field private static final ASSUME_SHIFT_JIS:Z
.field private static final EUC_JP:Ljava/lang/String; = "EUC_JP"
.field public static final GB2312:Ljava/lang/String; = "GB2312"
.field private static final ISO88591:Ljava/lang/String; = "ISO8859_1"
.field private static final PLATFORM_DEFAULT_ENCODING:Ljava/lang/String;
.field public static final SHIFT_JIS:Ljava/lang/String; = "SJIS"
.field public static final UTF8:Ljava/lang/String; = "UTF-8"
# direct methods
.method static constructor <clinit>()V
    .registers 2
    .line 1
    invoke-static {}, Ljava/nio/charset/Charset;->defaultCharset()Ljava/nio/charset/Charset;
    move-result-object v0
    invoke-virtual {v0}, Ljava/nio/charset/Charset;->name()Ljava/lang/String;
    move-result-object v0
    sput-object v0, Lcom/dcloud/zxing2/common/StringUtils;->PLATFORM_DEFAULT_ENCODING:Ljava/lang/String;
    const-string v1, "SJIS"
    .line 8
    invoke-virtual {v1, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
    move-result v1
    if-nez v1, :cond_1d
    const-string v1, "EUC_JP"
    .line 9
    invoke-virtual {v1, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
    move-result v0
    if-eqz v0, :cond_1b
    goto :goto_1d
    :cond_1b
    const/4 v0, 0x0
    goto :goto_1e
    :cond_1d
    :goto_1d
    const/4 v0, 0x1
    :goto_1e
    sput-boolean v0, Lcom/dcloud/zxing2/common/StringUtils;->ASSUME_SHIFT_JIS:Z
    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 public static guessEncoding([BLjava/util/Map;)Ljava/lang/String;
    .registers 21
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "([B",
            "Ljava/util/Map<",
            "Lcom/dcloud/zxing2/DecodeHintType;",
            "*>;)",
            "Ljava/lang/String;"
        }
    .end annotation
    move-object/from16 v0, p0
    move-object/from16 v1, p1
    if-eqz v1, :cond_17
    .line 1
    sget-object v2, Lcom/dcloud/zxing2/DecodeHintType;->CHARACTER_SET:Lcom/dcloud/zxing2/DecodeHintType;
    invoke-interface {v1, v2}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
    move-result v3
    if-eqz v3, :cond_17
    .line 2
    invoke-interface {v1, v2}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
    move-result-object v0
    invoke-virtual {v0}, Ljava/lang/Object;->toString()Ljava/lang/String;
    move-result-object v0
    return-object v0
    :cond_17
    if-eqz v1, :cond_26
    .line 5
    sget-object v2, Lcom/dcloud/zxing2/DecodeHintType;->autoDecodeCharset:Lcom/dcloud/zxing2/DecodeHintType;
    invoke-interface {v1, v2}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
    move-result v1
    if-eqz v1, :cond_26
    .line 6
    invoke-static/range {p0 .. p0}, Lcom/dcloud/zxing2/common/StringUtils;->guessEncodingSmart([B)Ljava/lang/String;
    move-result-object v0
    return-object v0
    .line 11
    :cond_26
    array-length v1, v0
    .line 32
    array-length v2, v0
    const/4 v3, 0x2
    const/4 v4, 0x3
    const/4 v5, 0x1
    const/4 v6, 0x0
    if-le v2, v4, :cond_42
    aget-byte v2, v0, v6
    const/16 v7, -0x11
    if-ne v2, v7, :cond_42
    aget-byte v2, v0, v5
    const/16 v7, -0x45
    if-ne v2, v7, :cond_42
    aget-byte v2, v0, v3
    const/16 v7, -0x41
    if-ne v2, v7, :cond_42
    move v2, v5
    goto :goto_43
    :cond_42
    move v2, v6
    :goto_43
    move v7, v5
    move v8, v7
    move v3, v6
    move v9, v3
    move v10, v9
    move v11, v10
    move v12, v11
    move v13, v12
    move v14, v13
    move v15, v14
    move/from16 v16, v15
    move/from16 v17, v16
    move/from16 v18, v17
    :goto_53
    if-ge v9, v1, :cond_102
    if-nez v5, :cond_5b
    if-nez v7, :cond_5b
    if-eqz v8, :cond_102
    .line 41
    :cond_5b
    aget-byte v4, v0, v9
    and-int/lit16 v4, v4, 0xff
    if-eqz v8, :cond_8e
    and-int/lit16 v0, v4, 0x80
    if-lez v10, :cond_6b
    if-nez v0, :cond_68
    goto :goto_8d
    :cond_68
    add-int/lit8 v10, v10, -0x1
    goto :goto_8e
    :cond_6b
    if-eqz v0, :cond_8e
    and-int/lit8 v0, v4, 0x40
    if-nez v0, :cond_72
    goto :goto_8d
    :cond_72
    add-int/lit8 v10, v10, 0x1
    and-int/lit8 v0, v4, 0x20
    if-nez v0, :cond_7b
    add-int/lit8 v12, v12, 0x1
    goto :goto_8e
    :cond_7b
    add-int/lit8 v10, v10, 0x1
    and-int/lit8 v0, v4, 0x10
    if-nez v0, :cond_84
    add-int/lit8 v13, v13, 0x1
    goto :goto_8e
    :cond_84
    add-int/lit8 v10, v10, 0x1
    and-int/lit8 v0, v4, 0x8
    if-nez v0, :cond_8d
    add-int/lit8 v14, v14, 0x1
    goto :goto_8e
    :cond_8d
    :goto_8d
    const/4 v8, 0x0
    :cond_8e
    :goto_8e
    const/16 v0, 0x7f
    if-eqz v5, :cond_ac
    if-le v4, v0, :cond_9a
    const/16 v0, 0xa0
    if-ge v4, v0, :cond_9a
    const/4 v5, 0x0
    goto :goto_ac
    :cond_9a
    const/16 v0, 0x9f
    if-le v4, v0, :cond_ac
    const/16 v0, 0xc0
    if-lt v4, v0, :cond_aa
    const/16 v0, 0xd7
    if-eq v4, v0, :cond_aa
    const/16 v0, 0xf7
    if-ne v4, v0, :cond_ac
    :cond_aa
    add-int/lit8 v16, v16, 0x1
    :cond_ac
    :goto_ac
    if-eqz v7, :cond_fb
    if-lez v11, :cond_c0
    const/16 v0, 0x40
    if-lt v4, v0, :cond_fa
    const/16 v0, 0x7f
    if-eq v4, v0, :cond_fa
    const/16 v0, 0xfc
    if-le v4, v0, :cond_bd
    goto :goto_fa
    :cond_bd
    add-int/lit8 v11, v11, -0x1
    goto :goto_fb
    :cond_c0
    const/16 v0, 0x80
    if-eq v4, v0, :cond_fa
    const/16 v0, 0xa0
    if-eq v4, v0, :cond_fa
    const/16 v0, 0xef
    if-le v4, v0, :cond_cd
    goto :goto_fa
    :cond_cd
    const/16 v0, 0xa0
    if-le v4, v0, :cond_e2
    const/16 v0, 0xe0
    if-ge v4, v0, :cond_e2
    add-int/lit8 v3, v3, 0x1
    add-int/lit8 v0, v17, 0x1
    if-le v0, v15, :cond_df
    move v15, v0
    move/from16 v17, v15
    goto :goto_f7
    :cond_df
    move/from16 v17, v0
    goto :goto_f7
    :cond_e2
    const/16 v0, 0x7f
    if-le v4, v0, :cond_f5
    add-int/lit8 v11, v11, 0x1
    add-int/lit8 v0, v18, 0x1
    if-le v0, v6, :cond_f2
    move v6, v0
    move/from16 v18, v6
    :goto_ef
    const/16 v17, 0x0
    goto :goto_fb
    :cond_f2
    move/from16 v18, v0
    goto :goto_ef
    :cond_f5
    const/16 v17, 0x0
    :goto_f7
    const/16 v18, 0x0
    goto :goto_fb
    :cond_fa
    :goto_fa
    const/4 v7, 0x0
    :cond_fb
    :goto_fb
    add-int/lit8 v9, v9, 0x1
    move-object/from16 v0, p0
    const/4 v4, 0x3
    goto/16 :goto_53
    :cond_102
    if-eqz v8, :cond_107
    if-lez v10, :cond_107
    const/4 v8, 0x0
    :cond_107
    if-eqz v7, :cond_10c
    if-lez v11, :cond_10c
    const/4 v7, 0x0
    :cond_10c
    const-string v0, "UTF-8"
    if-eqz v8, :cond_117
    if-nez v2, :cond_116
    add-int/2addr v12, v13
    add-int/2addr v12, v14
    if-lez v12, :cond_117
    :cond_116
    return-object v0
    :cond_117
    const-string v2, "SJIS"
    if-eqz v7, :cond_125
    .line 137
    sget-boolean v4, Lcom/dcloud/zxing2/common/StringUtils;->ASSUME_SHIFT_JIS:Z
    if-nez v4, :cond_124
    const/4 v4, 0x3
    if-ge v15, v4, :cond_124
    if-lt v6, v4, :cond_125
    :cond_124
    return-object v2
    :cond_125
    const-string v4, "ISO8859_1"
    if-eqz v5, :cond_137
    if-eqz v7, :cond_137
    const/4 v6, 0x2
    if-ne v15, v6, :cond_130
    if-eq v3, v6, :cond_136
    :cond_130
    mul-int/lit8 v0, v16, 0xa
    if-lt v0, v1, :cond_135
    goto :goto_136
    :cond_135
    move-object v2, v4
    :cond_136
    :goto_136
    return-object v2
    :cond_137
    if-eqz v5, :cond_13a
    return-object v4
    :cond_13a
    if-eqz v7, :cond_13d
    return-object v2
    :cond_13d
    if-eqz v8, :cond_140
    return-object v0
    .line 161
    :cond_140
    sget-object v0, Lcom/dcloud/zxing2/common/StringUtils;->PLATFORM_DEFAULT_ENCODING:Ljava/lang/String;
    return-object v0
.end method
.method public static guessEncodingSmart([B)Ljava/lang/String;
    .registers 2
    .line 1
    new-instance v0, Lorg/mozilla/universalchardet/UniversalDetector;
    invoke-direct {v0}, Lorg/mozilla/universalchardet/UniversalDetector;-><init>()V
    .line 3
    invoke-virtual {v0, p0}, Lorg/mozilla/universalchardet/UniversalDetector;->handleData([B)V
    .line 4
    invoke-virtual {v0}, Lorg/mozilla/universalchardet/UniversalDetector;->dataEnd()V
    .line 5
    invoke-virtual {v0}, Lorg/mozilla/universalchardet/UniversalDetector;->getDetectedCharset()Ljava/lang/String;
    move-result-object p0
    .line 6
    invoke-virtual {v0}, Lorg/mozilla/universalchardet/UniversalDetector;->reset()V
    .line 7
    invoke-static {p0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
    move-result v0
    if-nez v0, :cond_19
    return-object p0
    :cond_19
    const-string p0, "GB2312"
    return-object p0
.end method